	
	function AjaxModule(){

		this.makeRequest = fncAjaxModuleMakeRequest;	
		this.Push = fncAjaxModulePush;	
		this.push = this.Push;	
		this.Pull = fncAjaxModulePull;	
		this.pull = this.Pull;	
		this.Evaluate = fncAjaxModuleBooleanCheck;	
		
		this.GetHttpRequest = fncAjaxModuleGetHttpRequest;
		this.getHttpRequest = this.GetHttpRequest;
		
		this.delay = delayFunction;

	}

	//** HELPERS
	//** This function delivers an instance of an HttpRequest object, depending on the present useragent! 
	function fncAjaxModuleGetHttpRequest()
	{
		var httpRequest;

		    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		        httpRequest = new XMLHttpRequest();
		        if (httpRequest.overrideMimeType) {
		            httpRequest.overrideMimeType('text/xml');
		        }
		    } 
		    else if (window.ActiveXObject) { // IE
		        try {
		            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		        } 
		        catch (e) {
		            try {
		                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
		            } 
		            catch (e) {}
		        }
		    }
		    if (!httpRequest) {
				Ajour.Console.write( "Giving up :( Cannot create an XMLHTTP instance" );
				Ajour.Console.write( "Ajour.Ajax error at " + url + ". The output was:");
		    }

		return httpRequest;
		
	}
	//** HELPERS END


	//** EVALUATE START
	//** UNDER CONSTRUCTION **//
	function fncAjaxModuleBooleanCheck( url, refname, alrt )
	{
	
		//Ajour.Console.write( "Ajour.Ajax " + url );
		d = document.createElement("DIV");
		d.innerText = ""; 
		d.style.display = "none";
		d.id = "ajaxtest";
		document.body.insertBefore(d, document.body.firstChild);

		this.Pull( url, 'ajaxtest' );

		window.setTimeout('fncAjaxModuleBooleanEvaluation( document.getElementById(\'ajaxtest\'), document.getElementById(\'' + refname + '\'), \'' + alrt + '\')', 100);
	}

	function fncAjaxModuleBooleanEvaluation()
	{
		var obj1 = arguments[0]; //document.forms[0].fState;
		var obj2 = arguments[1]; //document.forms[0].fScriptName;
		var a
		if ( obj1.innerHTML.toLowerCase() == "false" )
		{
			alert( arguments[2] );
			obj2.select(); 
		}
		document.body.removeChild( document.getElementById('ajaxtest') );

	}
	
/*	function pausecomp(millis) 
	{
		var date = new Date();
		var curDate = null;

		do { curDate = new Date(); } 
		while(curDate-date < millis);
	} 
*/	

	//** EVALUATE END


	//** MAKE REQUEST FUNCTION
	//** denne funktion er en tilpasset version af den der blev anvendt i front-end	på børnebazarens site.
	function fncAjaxModuleMakeRequest( url, type ) {
	    
	    var httpRequest;
	    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
	        httpRequest = new XMLHttpRequest();
	        if (httpRequest.overrideMimeType) {
	            httpRequest.overrideMimeType('text/xml');
	        }
	    } 
	    else if (window.ActiveXObject) { // IE
	        try {
	            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
	        } 
	        catch (e) {
	            try {
	                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	            } 
	            catch (e) {}
	        }
	    }
	    if (!httpRequest) {
	        alert('Giving up :( Cannot create an XMLHTTP instance');
	        return false;
	    }

		if(type!=''){
			httpRequest.onreadystatechange = function() { fncAjaxModuleRenderHtml(httpRequest, type); }
		}
		
	    httpRequest.open('GET', url, true);
	    httpRequest.send('');
	}

	function fncAjaxModuleRenderHtml(httpRequest,id) {
	    if (httpRequest.readyState == 4) {
	        if (httpRequest.status == 200) {
				document.getElementById(id).innerHTML=httpRequest.responseText;
	//        } else {
	//            alert('There was a problem with the request.');
	        }
	    }
	}
	//** MAKE REQUEST FUNCTION END



	//** PUSH FUNCTION
	//** Dette er en integreret version af makeRequest
	function fncAjaxModulePush( url ) {
	    
	    var httpRequest = this.getHttpRequest();

		httpRequest.onreadystatechange = function() { fncAjaxModuleComplete( httpRequest, url ); }
		
		try
		{
			httpRequest.open('GET', url, true);
			httpRequest.send('');
	    }
	    catch( err )
	    {
			Ajour.Console.write( err.description );
			Ajour.Console.write( "Ajour.Ajax exception at " + url + ". The description was: ");
	    }
	}
	
	function fncAjaxModuleComplete( httpRequest, url ) {
	    if (httpRequest.readyState == 4) {
	        if ( httpRequest.status == 200 ) {
				if (httpRequest.responseText.toLowerCase() != "true")
				{
					Ajour.Console.write( httpRequest.responseText );
					Ajour.Console.write( "Ajour.Ajax error at " + url + ". The output was:");
				}
	        } else {
					Ajour.Console.write( httpRequest.responseText );
					Ajour.Console.write( "Ajour.Ajax error at " + url + ". The output was:");
	        }
	    }
	}
	//** PUSH FUNCTION END 



	//** PULL FUNCTION
	//** Dette er en integreret version af makeRequest
	function fncAjaxModulePull() {

	    
	    var url = arguments[0];
	    var elementid = arguments[1];

		//Ajour.Console.write( url );

	    
	    var httpRequest = this.getHttpRequest();
		if ( arguments.length > 2)
	    {
			var s = arguments[2];
			httpRequest.onreadystatechange = function() { fncAjaxModuleCompletePull( httpRequest, url, elementid, s ); }
	    }
		else
		{    
			httpRequest.onreadystatechange = function() { fncAjaxModuleCompletePull( httpRequest, url, elementid ); }
		}
		
		try
		{
			httpRequest.open('GET', url, true);
			httpRequest.send('');
	    }
	    catch( err )
	    {
			Ajour.Console.write( err.description );
			Ajour.Console.write( "Ajour.Ajax exception at " + url + ". The description was: ");
	    }
	    
	}


	function fncAjaxModuleCompletePull( httpRequest, url, elementid ) {
	    if (httpRequest.readyState == 4) {
	        if ( httpRequest.status == 200 ) {
				var elmnt = document.getElementById( elementid );
				//Ajour.Console.write( elmnt.type );
				if( elmnt.type == "text" || elmnt.type == "hidden" )
				{
					elmnt.value = httpRequest.responseText;
				}
				else
				{	
					document.getElementById( elementid ).innerHTML= httpRequest.responseText;
				}
				
				if ( arguments.length > 3)
				{
					eval( arguments[3] );
				}

				
	        } else {
					Ajour.Console.write( httpRequest.responseText );
					Ajour.Console.write( "Ajour.Ajax error at " + url + " for element " + elementid + ". The output was:");
	        }
	    }
	}
	//** PULL FUNCTION END
	
	function fncDelayTimer() {
        var timer;
        return function(fun, time) {
            clearTimeout(timer);
            timer = setTimeout(fun, time);
        };
    }
    var delayFunction = fncDelayTimer();

	
