

      function AjaxTimeoutTimer(strLength){

        //Set all of the defaults      
        this.loaded = false;
        this.intHeight = 600;
        this.intDivHeight = 150;
        this.objDiv = null;
        this.objIFr = null;
        this.top = 0;
        this.sessionLength = 1000*60*30;
        if(typeof(strLength)!="undefined")this.sessionLength = strLength;
        var timerWarn = window.setTimeout(loadMessage,this.sessionLength);
        this.maxWait = 1000*60*5;
        this.title = "Timeout Notification";
        this.message = "Your current session is about to expire. " + 
                       "In order to remain logged in and avoid loosing " + 
                       "any data you may have entered, please press " + 
                       "the <span style='color:green'>Confirm</span> button " +
                       "to extend your session.";
        this.confirm = "Confirm";
        this.ignore = "Ignore";
        this.extendedMessage = "Your session has most likely been expired. " +
                               "Press the <span style='color:green'>Confirm</span> " +
                               "button to verify this."
        this.serverURL = null;
        var ref = this;
        
        //determine browser height and height of div
        function calcBrowserSize(){
          if(self.innerHeight){
	        ref.intHeight = self.innerHeight;
            ref.intDivHeight = ref.objDiv.scrollHeight;
          }
          else if(document.documentElement && document.documentElement.clientHeight){
	        ref.intHeight = document.documentElement.clientHeight;
            ref.intDivHeight = ref.objDiv.clientHeight;
          }
          else if(document.body){
	        ref.intHeight = document.body.clientHeight;
            ref.intDivHeight = ref.objDiv.clientHeight;
          }
          ref.intHeight = parseInt(ref.intHeight);
          ref.intDivHeight = parseInt(ref.intDivHeight);
        }


        //Start to display message on scroll
        function loadMessage(){
        
          if(ref.loaded == false)ref.loaded = createAjaxConfirm();        
          //set reference
          ref.objDiv = document.getElementById("divAjaxTimer");
          ref.objIFr = document.getElementById("ifAjaxTimer");
          
          //position block off screen and show it
          ref.objDiv.style.top = "-1000px";
          ref.objIFr.style.top = "-1000px";
          ref.objDiv.style.display = "block";
          ref.objIFr.style.display = "block";
          if(navigator.userAgent.toLowerCase().indexOf("opera") != -1)ref.objIFr.style.visibility = "hidden";
          
          //Set all of the elements text
		  document.getElementById("divAjaxBut").style.display = "block";
		  document.getElementById("divAjaxContent").innerHTML = ref.message;
		  document.getElementById("divAjaxTitle").innerHTML = ref.title;
		  document.getElementById("ajaxB1").value = ref.confirm;
		  document.getElementById("ajaxB2").value = ref.ignore;
		  
		  //position block to top edge of screen
          calcBrowserSize();
          ref.objDiv.style.top = -ref.intDivHeight + "px";
          ref.objIFr.style.top = -ref.intDivHeight + "px";
          
          //prepare block to be scrolled in
          ref.top = -ref.intDivHeight;
          timerScroll = window.setInterval(scrollIn,1);
            timerWait = window.setTimeout(extendedWait,ref.maxWait);
        }

        //Determine how much user scrolled page down
        function GetScroll(){    
          var scrollY = document.documentElement.scrollTop;
          if(!scrollY)scrollY = document.body.scrollTop;            
          if(!scrollY)scrollY = window.pageYOffset;               
          if(!scrollY)scrollY = 0;
          return scrollY;
        }
        
        //some local(private) varaibles
        var timerScroll = null;
        var timerReject = null;
        var intStep = 2;
        var intStop = Math.floor(ref.intHeight/5);
    	var timerUpdate = null;
		var intDotCount = 0;
		var timerWait = null;

        //Function moves confirmation window into view
        function scrollIn(){
          if(parseInt(intStep) + parseInt(ref.top) <= parseInt(intStop) ){
            ref.top += intStep;
            var intT = ref.top + GetScroll();;
			ref.objDiv.style.top =  intT + "px";
			ref.objIFr.style.top =  intT + "px";
          }
          else{
             var cancel = window.clearInterval(timerScroll);
             ref.objDiv.style.top = GetScroll() + intStop + "px";
             ref.objIFr.style.top = ref.objDiv.style.top;
          }
        }
        
        //Confirm button pressed, make request, hide buttons, start annimation
		this.confirmTimer = function(){
          timerUpdate = window.setInterval(updateMessage,250);
          document.getElementById("divAjaxBut").style.display = "none";
          makeHttpRequest();
		}

        //Hide information if the ignore button was clicked
		this.ignoreTimer = function(){
          ref.objDiv.style.display = "none";
          ref.objIFr.style.display = "none";
		}

        //Annimate the request waiting time so it looks fancy
		function updateMessage(){
		  var strDotsMessage = "Updating Session.";
		  for(x=0;x<intDotCount;x++)strDotsMessage+=".";
		  document.getElementById("divAjaxContent").innerHTML = strDotsMessage;
		  intDotCount++;
		  if(intDotCount>4)intDotCount = 0;
		}
		
		//change message from normal to extended info
		function extendedWait(){
		  document.getElementById("divAjaxContent").innerHTML = ref.extendedMessage;
		}
	
        //Function Prepares calls xmlHttpRequest
        function makeHttpRequest(){
        
          //Make sure we set the server side page          
          if(ref.serverURL==null){
            alert('Error: Server Side Code was not specified by web master!');
            ref.objDiv.style.display = "none";
            ref.objIfr.style.display = "none";
            return false;
          }
          
          //create reg exp so we do not grabbed cached material
          var regEx = /(\s|:)/gi;
          var strDT = "ts=" + new Date().toString().replace(regEx,"");                              
          
          //Make the request to the server
          var loader1 = new net.ContentLoader(ref.serverURL,finishRequest,null,"POST",strDT); //Make request
        
        }
        
        //Function takes XML document 
        function finishRequest(){
          timerWarn = window.setTimeout(loadMessage,ref.sessionLength);
          var bx = window.clearTimeout(timerUpdate);
          var strDoc = this.req.responseText;  //Grab HTML
          if(strDoc.indexOf("Session Updated - Server Time:") == 0){
            document.getElementById("divAjaxContent").innerHTML = "Your session was updated sucessfully!";
            var timerHide = window.setTimeout(hideDiv,2000);
          }
          else{
            document.getElementById("divAjaxContent").innerHTML = "Warning your session has already timed out!";
            var timerHide = window.setTimeout(hideDiv,3000);
          }
        }
        
        function createAjaxConfirm(){
          var ifr = document.createElement("iframe");
      
          var div1 = document.createElement("div");
          var div2 = document.createElement("div");
          var div3 = document.createElement("div");
          var div4 = document.createElement("div");
      
          var btn1 = document.createElement("input");
          var btn2 = document.createElement("input");
      
          ifr.id = "ifAjaxTimer";
          div1.id = "divAjaxTimer";
          div2.id = "divAjaxTitle";
          div3.id = "divAjaxContent";
          div4.id = "divAjaxBut"; 
      
          btn1.type="button";
          btn2.type="button";
          btn1.id = "ajaxB1";
          btn2.id = "ajaxB2";
          btn1.className = "confirm";
          btn2.className = "ignore";
          btn1.onclick = function(){ajaxTimer.confirmTimer();return false;}
          btn2.onclick = function(){ajaxTimer.ignoreTimer();return false;}
          btn1.value = "text";
          btn2.value = "text";     
     
          div1.appendChild(div2);   
          div1.appendChild(div3);
          div4.appendChild(btn1);
          div4.appendChild(btn2);
          div1.appendChild(div4); 

          document.forms[0].appendChild(ifr);
          document.forms[0].appendChild(div1);
            
          return  true;
        }
        
        //Hide div and iframe
        function hideDiv(){
          ref.objDiv.style.display = "none";
          ref.objIFr.style.display = "none";
        }
     
      }

//=============================================
//Update information here for customization here!
//==============================================

      var ajaxTimer = new AjaxTimeoutTimer();        //default time 20 minutes
      //var ajaxTimer = new AjaxTimeoutTimer(5000);  //Specify a time length
      ajaxTimer.serverURL = "AjaxSessionUpdate.aspx";
      //ajaxTimer.maxWait = 1000 * 60 * 2;           //defualt time 5 minutes
      //ajaxTimer.title = "Timeout Notification";
      //ajaxTimer.message = "Your current session is about to expire.";
      //ajaxTimer.confirm = "Update";
      //ajaxTimer.ignore = "Cancel";
      //ajaxTimer..extendedMessage = "Your session has most likely been expired. "
