var fields = new Array();

/*class AjaxLib*/
function AjaxLib() {
	this.init();
}

AjaxLib.prototype.constructor = AjaxLib;

AjaxLib.prototype.init = function () {
	this.fields = new Array();	
	this.zXml = {
		useActiveX: (typeof ActiveXObject != "undefined"),
		useDom: document.implementation && document.implementation.createDocument,
		useXmlHttp: (typeof XMLHttpRequest != "undefined")
	};

	this.zXml.ARR_XMLHTTP_VERS = ["MSXML2.XmlHttp.5.0", "MSXML2.XmlHttp.4.0", 
		"MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp",
		"Microsoft.XmlHttp"];

	this.zXml.ARR_DOM_VERS = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0", 
		"MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument",
		"Microsoft.XmlDom"];

}

/**
 * Creates an XMLHttp object.
 * @static
 * @scope public
 * @return An XMLHttp object.
 */
AjaxLib.prototype.createRequest = function ()/*:XMLHttp*/ {
if (this.zXml.useXmlHttp) {
	return new XMLHttpRequest();
}else if (this.zXml.useActiveX) {
	if (!this.zXml.XMLHTTP_VER) {
		for (var i=0; i < this.zXml.ARR_XMLHTTP_VERS.length; i++) {
			try {
					new ActiveXObject(this.zXml.ARR_XMLHTTP_VERS[i]);
					this.zXml.XMLHTTP_VER = this.zXml.ARR_XMLHTTP_VERS[i];
					break;
				}catch (oError) {
					
			}
            }
        }
        
        if (this.zXml.XMLHTTP_VER) {
            return new ActiveXObject(this.zXml.XMLHTTP_VER);
        } else {
            throw new Error("Could not create XML HTTP Request.");
        }
    } else {
        throw new Error("Your browser doesn't support an XML HTTP Request.");
    }

};


AjaxLib.prototype.getrequestbody = function (oform){	
	
	var aparams = new Array();
	for(var i=0; i < oform.elements.length; i++ ){
		var sparam;
		if(oform.elements[i].type ==  "checkbox"  &&  oform.elements[i].checked ){
				sparam = encodeURIComponent(oform.elements[i].name);
				sparam += "=";
				sparam += encodeURIComponent(oform.elements[i].value);
				aparams.push(sparam);
		}else if(oform.elements[i].type ==  "radio" && oform.elements[i].checked){
				
				sparam = encodeURIComponent(oform.elements[i].name);
				sparam += "=";
				sparam += encodeURIComponent(oform.elements[i].value);
				aparams.push(sparam);
		}else if(oform.elements[i].type ==  "select-multiple"){
					
		    for (j=0;j<oform.elements[i].length;j++){
				
				sparam = encodeURIComponent(oform.elements[i].name);
				sparam += "=";
				sparam += encodeURIComponent(oform.elements[i].options[j].value);
				aparams.push(sparam);
		    }
		}else if(oform.elements[i].type == "hidden"){
				sparam = encodeURIComponent(oform.elements[i].name);
				sparam += "=";
				sparam += encodeURIComponent(oform.elements[i].value);
				aparams.push(sparam);

		}
	
	}
	
	return aparams.join("&");
}

AjaxLib.prototype.ajaxCallPost = function (action,div_name,form_obj,concat,message,run_func){	
		
		var oform = form_obj;	
		
		var sbody = this.getrequestbody(oform);
		
		if ( typeof(run_func) == "undefined" ){
			run_func = '' ;
		}

		obj = document.getElementById(div_name);
		var oxmlhttp = this.createRequest();
		sbody = sbody +  "&ms=" +new Date().getTime();
		
		if(typeof(obj) == "object" ){
			
			obj.innerHTML = "<div ><img src='/images/loading.gif' hspace='10' />Loading... </div>";
		}
		else{
			//alert("Not an object.");
		}	
		oxmlhttp.open("post",action,true);
		oxmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		oxmlhttp.setRequestHeader("Content-length", sbody.length);
		oxmlhttp.setRequestHeader("Connection", "close");
		
		oxmlhttp.onreadystatechange = function() {
			if( oxmlhttp.readyState == 4 ){
				if( oxmlhttp.status == 200 ){
							//alert(oxmlhttp.getResponseHeader("Content-Type"));
							if(oxmlhttp.getResponseHeader("Content-Type") == "text/xml" || oxmlhttp.getResponseHeader("Content-Type") == "text/xml; charset=ISO-8859-1"){
								response = oxmlhttp.responseXML;
								//alert(response.xml);
								method = response.getElementsByTagName('method')[0].firstChild.nodeValue;
								result = response.getElementsByTagName('result')[0].childNodes;
								for (var i=0; i<result.length; i++) {
									if (result[i].nodeType == 1) {
										fields[result[i].tagName] = result[i].firstChild.nodeValue;
									}
								}
								eval(method + '()');
								
							}
							else{	
								
								if(!concat){
									if(message){
										alert(message);
                                        
									}else {
                                        
										obj.innerHTML = oxmlhttp.responseText;
										if (run_func != ''){ // specially for AS
											eval(run_func);
											
										}
									}
								}
								else{
									
									obj.innerHTML += oxmlhttp.responseText;
                                    
								}
								
								//alert(oxmlhttp.responseText);
								
							}
							
							
				}else{
							obj.innerHTML = oxmlhttp.statusText;
							
				}
			}
		};
		
		oxmlhttp.send(sbody);
		
}


/* create a ajax call*/
AjaxLib.prototype.ajaxCallGet = function (action,div_name,concat,run_func){

	
	action = action +  "&ms=" +new Date().getTime();
	if ( typeof(run_func) == "undefined" ){
			run_func = '' ;
	}
	
	var obj = document.getElementById(div_name);
	var oxmlhttp = this.createRequest();
	
	if(typeof(obj) == "object" ){
		obj.innerHTML = "<div ><img src='/images/loading.gif' hspace='10' />Loading... </div>";
	
	}
	else{
		//alert("Not an object.");
	}	
	
	var objajax = this;
	oxmlhttp.open("get",action,true);
	oxmlhttp.onreadystatechange = function() {
		if(oxmlhttp.readyState == 4 ){
			if( oxmlhttp.status == 200 ){
				if(oxmlhttp.getResponseHeader("Content-Type") == "text/xml" || oxmlhttp.getResponseHeader("Content-Type") == "text/xml; charset=ISO-8859-1"){
					
					var response = oxmlhttp.responseXML;
					var method = response.getElementsByTagName('method')[0].firstChild.nodeValue;
					
					
					var result = response.getElementsByTagName('result')[0].childNodes;
					for (var i=0; i<result.length; i++) {
						if (result[i].nodeType == 1) {
							fields[result[i].tagName] = result[i].firstChild.nodeValue;
						}
					}
					
					objajax.setData();
					eval(method + '()');
					
				}
				else{
						if( typeof(concat) == "undefined" || concat == ''){
							
							obj.innerHTML = oxmlhttp.responseText;
							
							if(typeof(run_func) == 'function'){
								run_func();
							}
							else if (run_func != ''){ 
 							  eval(run_func);
				
							}
						}
						else{
							obj.innerHTML += oxmlhttp.responseText;
						}
					
						
				}	
			}else{
				alert("An error occurred: " + oxmlhttp.statusText );
				obj.innerHTML = '';
			}
		}else{
			
		}
	}
	oxmlhttp.send(null);
	
}



AjaxLib.prototype.setData = function () {
	this.fields = fields;
	

};

AjaxLib.prototype.getData = function () {
	
	return this.fields['data'];	

};





