function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"=\""+value+expires+"\"; path=/";
}

function readCookie(name) {
    var cookieValue = null;
    if (document.cookie) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') 
            {
                c = c.substring(1, c.length);
            }
            if (c.indexOf(nameEQ) == 0) 
            {
                cookieValue = c.substring(nameEQ.length + 1, c.length - 1);
            }
        }
    }
	return cookieValue;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function fetchFailed(err) {
    // do nothing
}

function processFlash(result)
{
    if (!document.getElementById) {
        return;
    }

    if (!result) {
        return;
    }

    if (!result.flash) {
        return;
    }

    var flashDiv = document.getElementById("flash");
    
    if (!flashDiv) {
        return;
    }

    flashDiv.innerHTML = result.flash;
    appear("flash");
}

function processSession(result) {
    if (result)
    {
        var id = null, key = null;

        if (result.new_session)
        {
            var value = result.new_session.id + " " + result.new_session.key;
            createCookie("session", value, null);
            id = result.new_session.id;
            key = result.new_session.key;
        }
        else
        {
            var oldCookie = readCookie("session");
            if (!oldCookie)
            {
                return;
            }

            var cookiePieces = oldCookie.split(' ');
            if (cookiePieces.length > 0) {
                id = cookiePieces[0];
                if (cookiePieces.length > 1) {
                    key = cookiePieces[1];
                }
            }
        }

        processFlash(result)
    }
}

function doSession() {
    var cookie = readCookie("session");
    var id = "new", key = "session";
    if (cookie != null)
    {
        var cookiePieces = cookie.split(' ');
        if (cookiePieces.length > 0) {
            id = cookiePieces[0];
            if (cookiePieces.length > 1) {
                key = cookiePieces[1];
            }
        }
    }
    
    // calculate uri text
    var splitURI = document.location.href.split("/");
    var uriText = splitURI[splitURI.length - 2];

    var d = loadJSONDoc("/async/session/process/" + id + "/" + key + "/" + uriText);

    d.addCallbacks(processSession, fetchFailed);
}

