//sets session length to 10 mins
if (!sessionlength)
{
	var sessionlength = 10 * 60 * 1000;
}
//checks session every 30s
var sessioncheckinginterval = 1000;
var sessioninterval;
var sessiontimeremaining;

var activitytimeremaining;

var currentusername;

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }

cfg_protocol = window.location.protocol;

function includeLocalJavascript(jsFile)
{
  document.write('<script type="text/javascript" src="' + jsFile + '"></script>'); 
}

function includeSharedJavascript(jsFile)
{
  document.write('<script type="text/javascript" src="' + cfg_protocol + '//' + document.domain + '/siteengine/shared/scripts/javascript/' + jsFile + '"></script>'); 
}

function findObj(theObj, theDoc) {

	var p, i, foundObj;
	
	if(!theDoc) theDoc = document;
	if((p = theObj.indexOf("?")) > 0 && parent.frames.length) {
		theDoc = parent.frames[theObj.substring(p+1)].document;
		theObj = theObj.substring(0,p);
	}
	if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
	for (i=0; !foundObj && i < theDoc.forms.length; i++) 
	foundObj = theDoc.forms[i][theObj];
	for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) 
	foundObj = findObj(theObj,theDoc.layers[i].document);
	if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
	
	return foundObj;

}

function isEmail(str) {
	var ret = true;
	if (str.indexOf("@")<=0) {
		ret = false;
	}
	if (str.lastIndexOf(".")<str.indexOf("@")) {
		ret = false;
	}
	return ret;
}

/**
 * session timer functionality
 */
function startsessiontimer()
{
	if (currentusername != undefined)
	{
		if (currentusername != "") 
		{
			st = findObj("sessiontimer");
			//alert("starting timer");
			//alert(st);
			
			sessiontimeremaining = sessionlength / 2;
			activitytimeremaining = sessionlength / 2;
			
			st = findObj("sessiontimer");
			if (st) 
				st.innerHTML = "";
			
			if (sessioninterval) 
				window.clearInterval(sessioninterval);
			if ((sessionlength - sessioncheckinginterval) < sessioncheckinginterval) 
			{
				sessioninterval = window.setInterval("displaysessiontimer()", 1000);
			}
			else 
			{
				sessioninterval = window.setInterval("updatesessiontimer()", sessioncheckinginterval);
			}
		}
		
		//alert("timer started");
	}
}

function updatesessiontimer()
{
	//alert("updating timer");
	sessiontimeremaining -= sessioncheckinginterval;
	activitytimeremaining -= sessioncheckinginterval;
	
	displaysessiontimer();
    
    if (sessiontimeremaining < (sessioncheckinginterval * 2))
	{
		if (activitytimeremaining > (sessioncheckinginterval * 2))
        {
            renewsession();
        }
        else
        {
            window.clearInterval(sessioninterval);
		    sessioninterval = window.setInterval("displaysessiontimer()", 1000);
        }
	}
}

function displaysessiontimer()
{
	st = findObj("sessiontimer");
	if (st)
	{
		if (sessiontimeremaining>0)
		{
			//st.innerHTML = Math.floor(sessiontimeremaining / 1000) + "s until logout";
			//st.innerHTML += "<br />" + Math.floor(activitytimeremaining / 1000) + "s until inactivity logout";
			sessiontimeremaining -= 1000;
			activitytimeremaining -= 1000;
		}
		else
		{
			//st.innerHTML = "<span style=\"color: #ff0000\">You have been logged out</span>";
			//alert("You have been logged out");
			window.clearInterval(sessioninterval);
            showloggedoutscreen();
		}
	}
}

function resumesession()
{
    lsm = findObj("loggedoutscreen_message");
    
    lsm.innerHTML = "Logging in...";

    pw = findObj("loggedoutscreen_password");
    
    //alert(pw.value);
    
    if (currentusername&&pw.value)
    {
        var createparams = Array();
        var params = Array();
        
        params[0] = currentusername;
        params[1] = pw.value;
        
        call_object_method("cms_users", "login", createparams, params, false, resumesessioncallback);
    }
    
}

function resumesessioncallback()
{
    if (xmlhttp.readyState==4)
    {
        lsm = findObj("loggedoutscreen_message");

        xret = eval(xmlhttp.responseText);
        
        //alert(xret);
        ajax_reset();
        
        if (xret==1)
        {
            //lsm.innerHTML = "Login Successful";
            hideloggedoutscreen();
        }
        else
        {
            lsm.innerHTML = "Login Failed.  Please try again";
        }
        
    }
}

function renewsession()
{
	var createparams = Array();
	var params = Array();
    
	call_object_method("cms_users", "renewsession", createparams, params, false, renewsessioncallback);
}

function renewsessioncallback()
{
	if (xmlhttp.readyState==4)
	{
		ret = eval(xmlhttp.responseText);
		
        ajax_reset();

		if (ret == true)
		{
			//alert ("Session timer reset");
            startsessiontimer();
		}
		else
		{
			showloggedoutscreen();
		}
		

	}
}

function showloggedoutscreen()
{
    //alert("preparing overflow");
    
    los = findObj("loggedoutscreen");
    
    //alert(los);
	//alert(los.style);
	//alert(los.style.display);
	 
    los.className = "visible";
	//los.style.display = "block";

	window.scroll(0, 0);

    if (document.documentElement && document.documentElement.style)
    {
	    document.documentElement.style.overflow = "hidden";
    }
    else if (document.body)
    {
	    document.body.style.overflow = "hidden";
    }
    
    //los.innerHTML = "<p>You have been logged out</p>";

    document.onkeypress = "";
    document.onmousemove = "";
    
    losih = "";
    losih += "<div id=\"loggedoutmessage\">";
    losih += "<h2>You have been logged out</h2>";

    losih += "<p>To log back in and resume your session, please enter your password below</p>";

    losih += "<form onsubmit=\"resumesession();return false;\">";

    losih += "<p id=\"loggedoutscreen_message\"></p>";
    losih += "<p><input type=\"password\" name=\"loggedoutscreen_password\" /></p>";
    losih += "<p><input type=\"submit\" onclick=\"resumesession();\" value=\"Login\" /></p>";

    losih += "</form>";

    losih += "<p>Alternatively click <a href=\"index.php\">here</a> to return to the home page</p>";

    losih += "</div>";
    
    //losih += document.cookie;
    
    los.innerHTML = losih;

}

function hideloggedoutscreen()
{
    los = findObj("loggedoutscreen");
    los.className = "";
	//los.style.display = "none";
    los.innerHTML = "";
    
    document.onkeypress = function()
    {
        activitytimeremaining = sessionlength / 2;
    }

    document.onmousemove = function()
    {
        activitytimeremaining = sessionlength / 2;
    }

	if (document.documentElement && document.documentElement.style)
    {
	    document.documentElement.style.overflow = "auto";
    }
    else if (document.body)
    {
	    document.body.style.overflow = "auto";
    }
}
/**
 * end session timer functionality
 */
 
 includeSharedJavascript("onloadqueue.js");

 