/** XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08        **
 ** Code licensed under Creative Commons Attribution-ShareAlike License      **
 ** http://creativecommons.org/licenses/by-sa/2.0/                           **/
 
var isIE = false;
var waitImage = "/ajax/wait.gif";
var errorDefault = "Er is een fout opgetreden. Probeer nogmaals...";
var error404 = "pagina is niet gevonden. Probeer nogmaals...";
var error400 = "pagina is niet gevonden. Probeer nogmaals...";

function setIsIE() {
	try { 
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		isIE = true; 
	}
  	catch (e) { 
		try { 
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
			isIE = true;
		}
		catch (e) {
		}
	}	
}

function XHConn() {
var xmlhttp, bComplete = false;
var hasError = false;

	try { 
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		isIE = true; 
	}
  	catch (e) { 
		try { 
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
			isIE = true;
		}
		catch (e) {
			try { 
				xmlhttp = new XMLHttpRequest(); 
				xmlhttp.overrideMimeType('text/xml');
			}
			catch (e) { 
			xmlhttp = false; 
			}
		}
	}
	
	if (!xmlhttp) return null;
  
	this.connect = function(sURL, sMethod, sVars, fnDone, waiter) {
		
		if (!xmlhttp) return false;
		setClock(true,waiter,false);
    	bComplete = false;
    	sMethod = sMethod.toUpperCase();

    	try {
      		if (sMethod == "GET") {
      			if (sVars != "") {
      				sURL = sURL+"?"+sVars;
      			}
        		xmlhttp.open(sMethod, sURL, true);
        	sVars = "";
      	}
		else {
        	xmlhttp.open(sMethod, sURL, true);
        	xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        	xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		}
		
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4 && !bComplete) {
          	bComplete = true;
				if (xmlhttp.status == 200) {
					fnDone(xmlhttp);
				}
				else {
					switch (xmlhttp.status) {
						case 404: 
						  hasError = "<strong class='ajaxError'>" + error404 + "</strong>";
						  break;
						case 400: 
						  hasError = "<strong class='ajaxError'>" + error400 + "</strong>";
						  break;
						default: 
						  hasError = "<strong class='ajaxError'>" + errorDefault + "</strong>";
						  break;
					}

					//if(xmlhttp.status == 404) hasError = "<strong class='ajaxError'>" + error404 + "</strong>";
					
					setClock(false,waiter,hasError);
				}
          	
			}
			
		};
	xmlhttp.send(sVars);
	}
	
   
    catch(z) { 
		return false; 
	}
    return true;
  };
  return this;
}

function setClock(status,waiter,error) {
	obj = (waiter) ? document.getElementById(waiter) : false;
	total = document.getElementById("totalJobsAmount");
	
	if(status) {
	imgCall = "<img src='" + waitImage + "' alt='Even geduld' title='Even geduld alstublieft...' width='18' height='17' />";
		if(obj) obj.innerHTML = imgCall;
		total.innerHTML = imgCall;
	}
	
	else {
		//alert(total);
		if(obj) {
			if(error) obj.innerHTML = error;
			else obj.innerHTML = "";
		}
		total.innerHTML = "";
	}

}
