/*******************************************************************************
*
* © 2008 Copyright A-Vision
*
* File description :       HR Package :: AJAX function
* 
* Created by       :       Arnold Velzel
* Created on       :       08/07/2008
*
* Last changed by  :       Arnold Velzel
* Last changed on  :       <LastChanged>
* 
*******************************************************************************/

XMLHTTPSupport = false;
var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")},
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++)
	{
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}

function getServerHtmlData( url, targetObject, furtherAction, errorAction)
{
 var req = createXMLHTTPObject();
 if (!req) return( false);
 XMLHTTPSupport = true;

 req.open("GET",url,true);
//	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
 req.onreadystatechange = function () {

	 if (req.readyState != 4) return;

	 if (req.status != 200 && req.status != 304) {
   if ( req.status == 499) {
    // Customized TEXT error
    alert("ERROR: " + req.responseText);
   }
   else {
    if ( req.status == 498) {
     // Customized JAVASCRIPT error
     eval(req.responseText);
    }
    else {
     if ( req.status == 299) {
      // Customized TEXT message
      alert(req.responseText);
     }
     else {
		   alert('AJAX error : '+req.status+' requesting URL ['+url+']');
     }
    }
   }
		 return;
	 }
  if ( req.responseText.indexOf('498 Custom Javascript') >= 0) {
   eval(req.responseText);
   targetObject = null;
  }
  if ( targetObject) {
   newvalue = req.responseText;
   if ( targetObject.getAttribute("value")) {
    targetObject.setAttribute("oldValue", targetObject.getAttribute("value"));
    targetObject.setAttribute("value", newvalue);
   } else {
    targetObject.setAttribute("oldValue", targetObject.value);
    targetObject.value = newvalue;
   }
  }
  if (furtherAction) {
   furtherAction();
  }
 }
 req.send(null);
}

function getServerHtml( url, targetObject, furtherAction, errorAction)
{
 var req = createXMLHTTPObject();
 if (!req) return( false);
 XMLHTTPSupport = true;

 req.open("GET",url,true);
//	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
 req.onreadystatechange = function () {

	 if (req.readyState != 4) return;

	 if (req.status != 200 && req.status != 304) {
   if ( req.status == 499) {
    // Customized TEXT error
    alert("ERROR: " + req.responseText);
   }
   else {
    if ( req.status == 498) {
     // Customized JAVASCRIPT error
     eval(req.responseText);
    }
    else {
     if ( req.status == 299) {
      // Customized TEXT message
      alert(req.responseText);
     }
     else {
		    alert('AJAX error : '+req.status+' requesting URL ['+url+']');
     }
    }
   }
   if (errorAction) {
    errorAction();
   }
		 return;
	 }
  if ( req.responseText.indexOf('498 Custom Javascript') >= 0) {
   eval(req.responseText);
   targetObject = null;
  }
  if ( targetObject) {
   HTML = req.responseText;
   targetObject.innerHTML = HTML;
  }
  if (furtherAction) {
   furtherAction();
  }
 }
 req.send(null);
}

function postServerHtml( url, data, targetObject, furtherAction, errorAction)
{
 var req = createXMLHTTPObject();
 if (!req) return( false);
 XMLHTTPSupport = true;

 req.open("POST",url,true);
// req.setRequestHeader('User-Agent','XMLHTTP/1.0');
 req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
 req.setRequestHeader("Connection", "close");
 req.onreadystatechange = function () {

	 if (req.readyState != 4) return;

	 if (req.status != 200 && req.status != 304) {
   if ( req.status == 499) {
    // Customized TEXT error
    alert("ERROR: " + req.responseText);
   }
   else {
    if ( req.status == 498) {
     // Customized JAVASCRIPT error
     eval(req.responseText);
    }
    else {
     if ( req.status == 299) {
      // Customized TEXT message
      alert(req.responseText);
     }
     else {
		    alert('AJAX error : '+req.status+' requesting URL ['+url+']');
     }
    }
   }
   if (errorAction) {
    errorAction();
   }
		 return;
	 }
  if ( req.responseText.indexOf('498 Custom Javascript') >= 0) {
//   alert(req.responseText);
   eval(req.responseText);
   targetObject = null;
  }
  if ( targetObject) {
   HTML = req.responseText;
   targetObject.innerHTML = HTML;
  }
  if (furtherAction) {
   furtherAction();
  }
 }
 req.send( data);
}

function formSubmit( frm, targetObject, furtherAction)
{
 if ( frm.nodeName == "FORM") {
  post = "";
  for ( f=0;f<frm.elements.length;f++) {
   elm = frm.elements[f];
   name = elm.name;
   value = elm.value;
   if ( name.trim()!="") {
    if ( post!="") post += "&";
    post += name+"="+encodeURIComponent(value); 
   }
  }
  if ( post != "") {
   post = "random="+Math.random()+"&"+post;
   url = frm.action;
   // postServerHtml( url, data, targetObject, furtherAction, errorAction);
   postServerHtml( url, post, targetObject, furtherAction);
  } else {
   return( false);
  }
 } else {
  return( false);
 }
}

