/* "AJAX Request Handler"
/
/  by Aliser Haidari
/  2009-03-17
*/                              

var sendMethodDef = "GET";                                // default send method
var isObCreated = false;                                  // is XML object created
var xmlHttpOb = null;                                     // XML HTTP object
var callerElem = null;                                    // element - caller
var loadingImg = ajax_getLoadingImg("img/loading.gif");   // get 'loading' image
//var timerId = null;                                     // taimerio ID

//--- Get element object ---
function ajax_getElemOb(id){	
	return  document.getElementById(id); // be patikrinimo
	//timerId = setTimeout ( "ajax_getPhonesCompList()", 10);
}
//--- Preload "loading" Img 4 background --- 
function ajax_getLoadingImg(url){
	var img = new Image(); 
	img.src = url;
	return img;
}
//--- Send AJAX Request ---
function ajax_request(elem, url, sendMethod) {
  if(elem && url && elem != "" && url != ""){ 
     xmlHttpOb = ajax_getObject();                              // XML HTTP object
	 if(!callerElem)
	    callerElem = ajax_getElemOb(elem);   
	 // if
	 // jei abu objektus pavyko sukurti
	 if(xmlHttpOb && callerElem){
		xmlHttpOb.onreadystatechange = ajax_stateChanged;       // event - on state change  
		if(!sendMethod || sendMethod == sendMethodDef){         // GET request
		   xmlHttpOb.open(sendMethodDef, url ,true);
           xmlHttpOb.send(null);	
	    }
	    else { // POST request
		   xmlHttpOb.open(sendMethod, url ,true);
           xmlHttpOb.send(new Array()); // items 2 send array...
	    } // if
	 }
  } // if
}
//--- Creates new XML ob. ---
function ajax_getObject() {
	var xmlHttp = null;
	try {
		// Mozilla, Firefox, Opera, Safari, Chrome, Maxthon, Avant, IE7+
  		xmlHttp = new XMLHttpRequest(); 
  	}
	catch (e){
  		try {
			// <=IE6
    		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
    	}
  		catch (e){
    		try {
      			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      		}
    		catch (e) { }
    	}
    }
	return xmlHttp;
}
//--- Object State Changed ---
function ajax_stateChanged() {
	switch(xmlHttpOb.readyState){
		case 1 : { // request has been set up
			break;	
		}
		case 2: { // request has been sent
			break;
		}
		case 3: { // request is in process
			 if(loadingImg && callerElem)  // not workin'
			    //callerElem.style.backgroundImage = loadingImg;	
			 // if
			break;
		}
		case 4: { // request is complete
		    if(callerElem)
			   callerElem.innerHTML = xmlHttpOb.responseText;
			break;
		}
	} // switch
}
//--- ---

