/**********************************************************************
 * Javascript Ajax Klasse/Objekt
 **********************************************************************
 * Forfatter: Magnus Brandt-Møller
 * Dato: 12/07/09 22:31
 * Formål: Gøre det let for mig selv og andre at bruge ajax
 **********************************************************************/
function Ajax()
{
	this.Timer;
	this.Svar = function()
				{
					var Tekst = "...";
					var ParatStatus = 0;
					var Xml;
					var Status = 0;
					var StatusTekst = "...";
					
				};
				
	this.Headere = "...";
	
	this.Start = function StartAjax(url,metode,async,loop,parametre,interval,CB)
				 {
			
					 var selv = this;
					 var xhr = false; 
	 
					 if (window.XMLHttpRequest)
					 {
						xhr = new XMLHttpRequest();
					 } 
					 else if (window.ActiveXObject)
					 {
						 try
						 {
							xhr = new ActiveXObject("Msxml2.XMLHTTP");
						 } 
						 catch(e)
						 {
							 try
							 {
								xhr = new ActiveXObject("Microsoft.XMLHTTP");
							 }
							 catch(e)
							 {
								xhr = false;
							 }
						 }
					 }

					 

					 if(url != "" && metode != "" && interval != "")
					 {
	 
						 if(url != "")
						 {
							url = url;
						 }
						 else 
						 {
							url = "index.php";
						 }


						 if(metode == "GET" || metode == "POST")
						 {
							metode = metode;
						 }
						 else 
						 {
							metode = "GET";
						 }
						 
						 if(interval >= 1000)
						 {
							interval = parseInt(interval);
						 }
						 else 
						 {
							interval = 1000;
						 }

						 selv.Senderen(url,metode,async,loop,parametre,interval,CB,xhr);
					 }
					 else 
					 { 
						alert('Tjek parametrene der er blevet givet til denne funktion');
					 }
				 }; 
				 

	this.Senderen = function (url,metode,async,loop,parametre,interval,cb,xhrobj)
					{
			
						var selv = this;
						
						if(metode == "GET")
						{

							if(async == "true")
							{
								async == true;
							}

							xhrobj.open(metode,url+"?"+parametre+"&uid="+Math.round(Math.random()*10000)+"&sid="+Math.round(Math.random()*10000),async);
							xhrobj.onreadystatechange = function(){selv.DataModtaget(xhrobj,cb);};
							xhrobj.setRequestHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
							xhrobj.setRequestHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT");
							xhrobj.setRequestHeader("Pragma", "no-cache");
							xhrobj.setRequestHeader("Connection", "keep-alive");
							xhrobj.setRequestHeader("Cookie", document.cookie);
							xhrobj.send(null);
						}
						else if(metode == "POST")
						{

							if(async == "true")
							{
								async == true;
							}

							xhrobj.open(metode,url+"?uid="+Math.round(Math.random()*10000)+"&sid="+Math.round(Math.random()*10000),async);
							xhrobj.onreadystatechange = function(){selv.DataModtaget(xhrobj,cb);};
							xhrobj.setRequestHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
							xhrobj.setRequestHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT");
							xhrobj.setRequestHeader("Pragma", "no-cache");
							xhrobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
							xhrobj.setRequestHeader("Content-length", parametre.length);
							xhrobj.setRequestHeader("Connection", "keep-alive");
							xhrobj.send(parametre);
						
						}
						else 
						{
							alert('Ikke gyldig metode.\n\nMetoden skal enten være GET eller POST, og med post skal du huske parametren "paramatre" i Start() funktionen.');
						}
						
						if(loop == "true" || loop == true)
						{
							selv.Timer = setTimeout(function(){selv.Senderen(url,metode,async,loop,parametre,interval,cb,xhrobj);}, interval); 
						}
					};
	
					
	this.DataModtaget = function Modtaget(obj,cb)
						{
					
							if(obj.readyState == 4)
							{
								this.Svar.Tekst = obj.responseText;
								this.Svar.Xml = obj.responseXML;
								
								try
								{this.Svar.Status = obj.status;}catch(e){}
								
								try
								{this.Svar.StatusTekst = obj.statusText;}catch(e){}
								
								try
								{this.Svar.ParatStatus = obj.readyState;}catch(e){}
								
								try
								{this.Headere = obj.getAllResponseHeaders();}catch(e){}
							}
							else
							{
								try
								{this.Svar.Status = obj.status;}catch(e){}
								
								try
								{this.Svar.StatusTekst = obj.statusText;}catch(e){}
								
								try
								{this.Svar.ParatStatus = obj.readyState;}catch(e){}
								
								try
								{this.Headere = obj.getAllResponseHeaders();}catch(e){}
							}

							cb(obj);
						}

	this.Stop = function StopAjax()
				{
			
					clearTimeout(this.Timer);
				}; 
}


