/**
 * Javascript Ajax class to set ajax requests
 * 
 * „Developed by Tomtaz Scripts & IT-Service“
 * 
 * @namespace        Javascript::Ajax
 * @version          $Id: main.php 87 2010-01-23 09:05:38Z kalle $
 * @author           Tomtaz
 * @LastChangedBy    $LastChangedBy: kalle $    
 * @date             2009-07-20 08:23 +0100
 * @LastChangedDate  $LastChangedDate: 2010-01-23 10:05:38 +0100 (Sa, 23. Jan 2010) $
 * @Revision         $Revision: 87 $
 * @copyright        (c) 2008-2010 by Tippspiel4free.de
 * @license          Copyright and License by Tippspiel4Free.de
 */
function Ajax(settings){var self=this;this.xmlRequest=null;this.timer=null;this.timeout=null;this.options=null;this.HandleBevorSend=false;this.HandleOnLoading=null;this.HandleOnSuccess=false;this.HandleOnError=false;this.__construct=function(settings){if(typeof settings.Method=="undefined"){settings.Method="GET"}if(typeof settings.Url=="undefined"){settings.Method=location.href}if(typeof settings.Params=="undefined"){settings.Params={}}if(typeof settings.Async=="undefined"){settings.Async=true}if(typeof settings.Timeout=="undefined"){settings.Timeout=null}if(typeof settings.ResponseType=="undefined"){settings.ResponseType="json"}if(typeof settings.OnLoading=="undefined"){settings.OnLoading=null}if(typeof settings.OnSuccess=="undefined"){settings.OnSuccess=null}if(typeof settings.OnError=="undefined"){settings.OnError=null}if(typeof settings.OnTimeout=="undefined"){settings.OnTimeout=null}if(typeof settings.AdditionalHeaders=="undefined"){settings.AdditionalHeaders={}}this.HandleOnLoading=null;this.options=settings};this.doRequest=function(){if(this.__CreateRequestObject()){this.xmlRequest.onreadystatechange=this.__HandleResponse;if(this.options.Method=="POST"){var param="";for(var key in this.options.Params){param=param+((param)?"&":"")+key+"="+this.options.Params[key]}this.xmlRequest.open("POST",this.options.Url,this.options.Async);this.xmlRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");for(var key in this.options.AdditionalHeaders){if(key=="X-Request-Type"){continue}this.xmlRequest.setRequestHeader(key,this.options.AdditionalHeaders[key])}this.xmlRequest.setRequestHeader("X-Request-Type","TsAjax");this.xmlRequest.send(param);return true}else{if(this.options.Method=="GET"){var params="";var param="";for(var key in this.options.Params){param=param+((param)?"&":"")+key+"="+this.options.Params[key]}params=(param)?"?"+param:"";this.xmlRequest.open("GET",this.options.Url+params,this.options.Async);for(var key in this.options.AdditionalHeaders){this.xmlRequest.setRequestHeader(key,this.options.AdditionalHeaders[key])}this.xmlRequest.send(null);return true}else{alert("Unsupportet Request Method");return false}}}else{return false}};this.__HandleResponse=function(){switch(self.xmlRequest.readyState){case 1:if(self.HandleOnLoading==null){self.__HandleOnLoading()}if(self.options.Timeout!=null&&self.timer==null){self.timer=window.setTimeout(function(){self.xmlRequest.onreadystatechange=function(){};self.xmlRequest.abort();self.xmlRequest=false;self.__HandleOnTimeout(408,"Reqeuest Timeout")},self.options.Timeout)}break;case 4:if(self.timer!=null){window.clearTimeout(self.timer)}if(self.xmlRequest.status!==200){self.__HandleOnError(self.xmlRequest.status,self.xmlRequest.statusText)}else{response=false;switch(self.options.ResponseType){case"xml":if(self.xmlRequest.responseXML!=null){response=self.xmlRequest.responseXML}else{response=self.xmlRequest.responseText}break;case"json":response=eval("("+self.xmlRequest.responseText+")");break;case"text":default:response=self.xmlRequest.responseText;break}self.__HandleOnSuccess(response,self.xmlRequest.status,self.xmlRequest.statusText)}break}};this.__HandleOnLoading=function(){if(this.HandleOnLoading==null){if(typeof this.options.OnLoading=="function"){this.options.OnLoading()}this.HandleOnLoading=true}};this.__HandleOnTimeout=function(errno,errormsg){if(typeof this.options.OnTimeout=="function"){this.options.OnTimeout(errno,errormsg)}};this.__HandleOnError=function(errno,errormsg){if(typeof this.options.OnError=="function"){this.options.OnError(errno,errormsg)}};this.__HandleOnSuccess=function(response,status,statusText){if(typeof this.options.OnSuccess=="function"){this.options.OnSuccess(response,status,statusText)}};this.__CreateRequestObject=function(){try{this.xmlRequest=new XMLHttpRequest()}catch(e){try{this.xmlRequest=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{this.xmlRequest=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){alert("Your Browser does not support Ajax Requests");return false}}}return true};this.__construct(settings)};

/**
 * End: $Id: main.php 87 2010-01-23 09:05:38Z kalle $
 */
