
  var elapsedTime = 0;
  var maxTime = 20*60;        // TEMPS ABANS DEL MISSATGE FINAL, EN SEGONS
  var oneSecond;
  var timeToRefresh=59*1000;  // TEMPS ABANS DE AUTOREFRESCAR, EN MILISEGONS
  var timerWorking=0;         // FLAG DE AUTOREFRESC, 0->DESACTIVAT; 1->ACTIVAT
  var progressBarId='idProgressBar';   // ID DEL OBJECTE EMPRAT COM A BARRA DE PROGRÉS
  var enablePB=0;
  var sRetrieveURL='http://ripollet.cat/aspnet/PTSA/refreshsession.cs.aspx';
  var sGoToURLWhenTimeOut='http://ripollet.cat/aspnet/PTSA/logout.cs.aspx?Reason=TIMEOUT';
  
  // COMENCA L'EXECUCIO DEL TIMER
  
  function doSetAndStartTimer(newMaxTime, newRetrieveURL, newProgressBarId, newGoToURLWhenTimeOut, enableAutoRefresh){
	sRetrieveURL=newRetrieveURL;
	maxTime=newMaxTime*60;                 // newMaxTime EN MINUTS -> SEGONS
	timeToRefresh=(newMaxTime-1)*60*1000   // -> MILISEGONS, RESTO 1 MINUT PER AUTOREFRESCAR ABANS DE TIMEOUT
	progressBarId=newProgressBarId;
	if (progressBarId.length>0) enablePB=1;
	if (newGoToURLWhenTimeOut.length>0) sGoToURLWhenTimeOut=newGoToURLWhenTimeOut;
	
	doStartTimer();
	if (enableAutoRefresh) doStartAutoRefresh();
  }
  
  
  function doStartTimer() {
    oneSecond = window.setTimeout("timeoutCheck();", 1000)
  }
  
  
  function timeoutCheck() {
    elapsedTime += 1;
    
    if (elapsedTime > maxTime) {
	  if (sGoToURLWhenTimeOut.length>0) {self.location=sGoToURLWhenTimeOut;}
	  else {alert('S\'ha acabat el temps de sessió.\nEl servidor web està purgant la seva connexió!!');}
    } else {
      oneSecond = window.setTimeout("timeoutCheck();",1000);
      //document.getElementById('divTimeOut').innerHTML="Resten "+ (maxTime-elapsedTime) +" segons.";
      if (enablePB) document.getElementById(progressBarId).style.width=((maxTime-elapsedTime)*100/maxTime)+"%";
    }
  }

    
  function doStartAutoRefresh() {
    timerWorking=1;
    window.setTimeout("timeoutCheck2();",timeToRefresh);
  }
  
  
  function doStopAutoRefresh() {
    timerWorking=0;
  }
  
  
  function timeoutCheck2() {
    if (!timerWorking) return false;
    doRefreshSession();
  }
  
  
  function doRefreshSession() {
    retrieveURL(sRetrieveURL);
  }
    
  
  var req;
  function retrieveURL(url) { 
	  document.body.style.cursor='wait';
    if (window.XMLHttpRequest) { // No IE
      req = new XMLHttpRequest(); 
      req.onreadystatechange = processStateChange; 
      try { 
        req.open("GET", url, true);
        req.overrideMimeType('text/html; charset=ISO-8859-1'); 
      } catch (e) { 
        alert(e); 
      } 
      req.send(null); 
    } else if (window.ActiveXObject) { // IE 
      req = new ActiveXObject("Microsoft.XMLHTTP"); 
      if (req) { 
        req.onreadystatechange = processStateChange; 
        req.open("GET", url, true);
        //req.setRequestHeader("Accept-Language","sp");
        //req.setRequestHeader("Pragma","no-cache");
        req.setRequestHeader("Content-Type","text/html; charset=iso-8859-1");
        req.setRequestHeader("encoding", "ISO-8859-1");
        req.send(); 
      } 
    } 
  }
  
  
  function processStateChange() {
    document.body.style.cursor='auto';
    if (req.readyState == 4) { // Completat 
      if (req.status == 200) { // OK response
        elapsedTime=0;
     window.setTimeout("timeoutCheck2();",timeToRefresh);
      } else { 
        alert("Problem: " + req.statusText); 
      } 
    } 
  }
