/*
+ UPPHOVSRÄTTSLAGEN +++++++++++++++++++++++++++++++++++ Sajtproduktion Mälardalen AB +++++++
+                                                                                          +
+ Denna programkod är skyddad av upphovsrättslagen.                                        +
+ Det betyder att kopiering, ändring och utnyttjande av verket kräver                      +
+ tillstånd från upphovsrättsinnehavaren SAJTPRODUKTION MÄLARDALEN AB.                     +
+ Även sälja eller på annat sprida programkoden är förbjudet utan tillstånd                +
+ från upphovsrättsinnehavaren.                                                            +
+                                                                                          +
+ Läs mer om upphhovsrätt på:                                                              +
+ http://www.regeringen.se/sb/d/1910/a/12248                                               +
+                                                                                          +
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/


var xmlHttp
var responseFunc
var stdResponseElementId
var timerId

/*****************************************************************
Use the right http object
******************************************************************/

function ORG____________GetXmlHttpObject() {
  var objXMLHttp=null
  if (window.XMLHttpRequest) {
    objXMLHttp=new XMLHttpRequest()
  }
  else if (window.ActiveXObject) {
    objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
  return objXMLHttp
}




function GetXmlHttpObject() {  
  var objXMLHttp=null
  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    objXMLHttp = new XMLHttpRequest();
    if (objXMLHttp.overrideMimeType) {
      objXMLHttp.overrideMimeType('text/html');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      objXMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  return objXMLHttp
}





/*****************************************************************
Do HTTP request
******************************************************************/
function startHTTPrequest (pUrl, pResponseFunc, pAsyncSync) {
  xmlHttp=GetXmlHttpObject()
  if (xmlHttp==null) {
    alert ("Browser does not support HTTP Request")
    return
  }
  // Set global variable for function stateChanged
  responseFunc  = pResponseFunc
  /*
  The random value in the call is used to
  prevent the server using a cached file
  */
  xmlHttp.onreadystatechange=stateChanged
  xmlHttp.open("GET",pUrl+"&seq="+Math.random(),pAsyncSync)
  xmlHttp.send(null)
  // Firefox 1.5 doesn't fire statechange for sync requests
  if ( !xmlHttp.async ) {
    stateChanged();
  }    
}

/*****************************************************************
Action when the state is changed
******************************************************************/
function stateChanged() {
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
    eval (responseFunc + " (xmlHttp.responseText)" );
  } else {
    eval (responseFunc + " ('')" );
  }
}


/*****************************************************************
Action when the AJAX call is aborted
******************************************************************/
function abortAJAXCall() {  
  xmlHttp.abort()
  stateChanged();  
}


/*****************************************************************
AJAX call with a timer function which will abort the call after 
a given time
******************************************************************/
function stdTimerAJAXcall(pUrl, pResponseElementId, pTime) {

  /* If URL is missing */
  if (pUrl.length==0) {
    document.getElementById(pResponseElementId).innerHTML=""
    return
  }
  
  /* Set global variable */
  stdResponseElementId = pResponseElementId

  /* Do HTTP request (standard) */
  startHTTPrequest (pUrl, "stdAJAXresponse", true)
  
  timerID  = setTimeout("abortAJAXCall()", pTime);

}



/*****************************************************************
AJAX standard function for call a server component (URL)
******************************************************************/
function stdAJAXcall(pUrl, pResponseElementId) {

  /* If URL is missing */
  if (pUrl.length==0) {
    document.getElementById(pResponseElementId).innerHTML=""
    return
  }
  
  /* Set global variable */
  stdResponseElementId = pResponseElementId

  /* Do HTTP request (standard) */
  startHTTPrequest (pUrl, "stdAJAXresponse", false)
  //startHTTPrequest (pUrl, "stdAJAXresponse", true)

}

/*****************************************************************
AJAX standard function for receiveing the response from a call 
to an server component (URL)
******************************************************************/
function stdAJAXresponse(str) {
  document.getElementById(stdResponseElementId).innerHTML = str
}

