/* Intervall mellan submit i tusendels sekunder sekunder */
var KOLLASUBMITAJAX_INTERVALL=60 * 1000;
  
/*
 * Returns an object used for Ajaxcommunication
 */
function getXmlHttp(msg) {
    var xmlHttp=null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e){
            try {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                // if (msg) alert("Your browser does not support AJAX!");
                return null;
            }
        }
    }
    return xmlHttp;
}
 
/*
 * Lägg till en parameter inför ett post anrop
 */   
function addPostParam(sParams, sParamName, sParamValue) {
	if (sParams.length > 0) {
		sParams += "&";
	}	

    //-------------------------------------------------------------------------------------	
	// Enligt diverse källor ska man använda encodeURIComponent, men det fungerar inte med
	// svenska tecken vilket escape gör, men det är inte riktigt enligt modern standard.
	// Men hellre använda något som fungerar :-)
    //return sParams + encodeURIComponent(sParamName) + "=" +
	//        encodeURIComponent(sParamValue);
	//-------------------------------------------------------------------------------------
	
    return sParams + escape(sParamName) + "=" +
	        escape(sParamValue);
}   
/*
 * Starta Ajaxintervall
 */
function startaAjaxIntervall() {
	// setInterval utför denna funktion hela tiden med detta intervall.
	// Om man använder setTimeout i stället så utförs funktionen en gång ett antal
	// tusendels sekunder i framtiden.
    setInterval(kollaSubmitAjax,KOLLASUBMITAJAX_INTERVALL);
}

/*
 * Kollar om submit behöver göras genom att skicka förfrågan till kollasubmitservlet.
 * Om det behövs så görs submit.
 */
function kollaSubmitAjax() {
	var xmlHttp = getXmlHttp(true);
	
    xmlHttp.onreadystatechange=function() {
        if(xmlHttp.readyState==4) {
            if (xmlHttp.responseText == "1") {
            	document.forms[0].submit();
            }
        }
    }
    
    var sParams = "";
 
    xmlHttp.open("post","kollasubmitservlet",true);
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   
  
    //xmlHttp.send(sParams); - Inga parametrar skickas 
    xmlHttp.send(null); 
}

/*
 * Anropar servlet som loggar varifrån användaren kommer till den aktuella sidan.
 * Anropas i onload på body-tagen. 
 */
function loggaMedAjax() {
	try {
	   // Logga bara om man inte redan befinner sig på denna site. Logging till session-tabellen
	   if (document.referrer.indexOf(location.hostname) == -1) {
          var xmlHttp = getXmlHttp(false);
          // Om browsern inte stödjer AJAX så gör ingenting
	      if (xmlHttp == null) return; 
	
          xmlHttp.onreadystatechange=function() {
             if(xmlHttp.readyState==4) {
        	     //alert("Svar från loggaservlet=" + xmlHttp.responseText );
             }
          }
   	      var params="";
   	      params = addPostParam(params,"url",document.URL);
   	      params = addPostParam(params,"referrer",document.referrer);
   	      params = addPostParam(params,"host",location.host);
   	      params = addPostParam(params,"search",location.search);
    
   	      // Detta är loggning till session-tabellen. Här loggas bara helt nya sessioner.
   	      xmlHttp.open("post","loggaservlet",true);
          xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   
          xmlHttp.send(params);
       }
       
	   // Loggning till accesslog tabellen.
       if (location.hostname == '' || document.referrer.indexOf(location.hostname) == -1) {
	      internLogga('Externt');	   	
	   }
	   else {
	      internLogga('Internt');
	   }
	}
	catch (e) {
	   // Blir det fel så gör ingenting
	}
}

/*
 * Anropar servlet som loggar varifrån användaren kommer till den aktuella sidan.
 */
function internLogga(text) {
	try {
		var xmlHttp = getXmlHttp(false);

        // Om browsern inte stödjer AJAX så gör ingenting
	    if (xmlHttp == null) return; 

        xmlHttp.onreadystatechange=function() {
           if(xmlHttp.readyState==4) {
           	  // Behövs detta ????
           }
        }

   	    var params="";
   	    params = addPostParam(params,"url",document.URL);
   	    params = addPostParam(params,"referrer",document.referrer);
   	    params = addPostParam(params,"text",text);

        if (location.hostname == 'localhost' || location.hostname == '') {
           xmlHttp.open("post","http://localhost:8080/accesslogservlet",true);
        }
        else {
           xmlHttp.open("post","http://www.skickablommor.net/accesslogservlet",true);	
        } 
        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   
        xmlHttp.send(params);
	}
	catch (e) {
	   // Blir det fel så gör ingenting
	}
}
