//--------------------------------------------------------------------------------------------------------------
// FILE: imAjax.js
// Author: Ben Siroshton
//--------------------------------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------------------------------
// imAjax
//--------------------------------------------------------------------------------------------------------------
var imAjax = {};
{
		
	imAjax.getNewRequester = function(){
	
		var oHTTPRequester = null;
	
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
		    oHTTPRequester = new XMLHttpRequest();
		    if (oHTTPRequester.overrideMimeType) {
		        oHTTPRequester.overrideMimeType('text/xml');
		    }
		} else if (window.ActiveXObject) { // IE
		    try {
		        oHTTPRequester = new ActiveXObject("Msxml2.XMLHTTP");
		    } catch (e) {
		        try {
		            oHTTPRequester = new ActiveXObject("Microsoft.XMLHTTP");
		        } catch (e) {}
		    }
		}
	
		return oHTTPRequester;
	
	};
	
	imAjax.getRequestSync = function(sURL, method, data){
	
		var oHTTPRequester = imAjax.getNewRequester();
	
		if(oHTTPRequester){
	
		    oHTTPRequester.open(method, sURL, false);
			if( method=="POST" ){
				oHTTPRequester.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				oHTTPRequester.setRequestHeader("Content-length", data.length);
				oHTTPRequester.setRequestHeader("Connection", "close");
			}
		    oHTTPRequester.send(data);
		    return oHTTPRequester.responseText;
		}
	
		return "";
	};
	
}


//--------------------------------------------------------------------------------------------------------------
// imAjaxRequester
//--------------------------------------------------------------------------------------------------------------
/**
* @class
* @constructor
*/
function imAjaxRequester(handler, method, data, target){

	var moHandler = handler;
	var moHTTPRequest = false;
	var me = this;

	this.makeRequest = function(sURL){

	    moHTTPRequest = imAjax.getNewRequester();

	    if (moHTTPRequest==null){
	        //alert('Giving up :( Cannot create an XMLHTTP instance');
	        return false;
	    }

    	moHandler.beforeRequest();

	    moHTTPRequest.onreadystatechange = me.alertContents;
	    moHTTPRequest.open(method, sURL, true);

		if( method=="POST" ){
			moHTTPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			moHTTPRequest.setRequestHeader("Content-length", data.length);
			moHTTPRequest.setRequestHeader("Connection", "close");
		}
	    
	    moHTTPRequest.send(data);

	};

	this.alertContents = function(){
	    if(moHTTPRequest.readyState == 4){
	        if(moHTTPRequest.status == 200) {
		    	moHandler.onSuccess(moHTTPRequest.responseText);
	        }else{
	        	moHandler.onFailure(moHTTPRequest.responseText);
	        }
	    }
	};

}


// Example:
//var handler = new ajaxHandler();
//var o = new ajaxRequester(handler,"GET",null);
//o.makeRequest("respond.html");

//--------------------------------------------------------------------------------------------------------------
// imAjaxHandler
//--------------------------------------------------------------------------------------------------------------
/**
* @class
* @constructor
*/
function imAjaxHandler(){

	this.beforeRequest = function(){
		//alert("beforeRequest()");
	};

	this.onSuccess = function(sData){
		//alert("SUCCESS: "+sData);
	};

	this.onFailure = function(sData){
		//alert("FAILED: "+sData);
	};

}

