var AJAX = {

    // Show Debug on AJAX => (0,1)
    Debug: 0,
	proxylocation:"/proxy.php",
  	request: null,
    request_in_action: null,
    request_timer: 0,
    response: null,
    timeout: 30,
    xmlhttp: null,
    refreshtype: null,
    t:null,
    request_url:null,
    request_quesy:null,
    response_targetElementName:null,
    response_func:null,

    /****************************************
    *                                       *
    *     HTTP Object                       *
    *                                       *
    ****************************************/
    getHTTPObject: function () {

        try
        {
	        AJAX.xmlhttp = new XMLHttpRequest();
        }
        catch (e)
        {
	    	try
	    	{
		    	AJAX.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	    	}
	    	catch(e)
	    	{
		    	try
		    	{
			    	AJAX.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		    	}
		    	catch(e)
		    	{
			    	try
			    	{
				    	AJAX.xmlhttp = window.createRequest();
			    	}
			    	catch(e)
			    	{
				    	return "Could Not Define XMLRequest";
			    	}
		    	}
	    	}
    	}
		return AJAX.xmlhttp;
    },
    autoDetect: function(url)
    {
	   if(url.indexOf(window.location.host)==-1)
	   var folder = document.location.pathname.split("/");
	   folder.pop();
	   folder = folder.join("/");
	   url = window.location.protocol+"//"+window.location.host+AJAX.proxylocation+"?proxy_url="+url;
	   return url;
	},

    /****************************************
    *                                       *
    *     REQUEST DATA                      *
    *                                       *
    ****************************************/
	request_object: function (url,query,targetElementName, func, type)
    {
	   if(!AJAX.request_in_action)
	   {
			if (typeof(type) == "undefined")
	    	{
     			type = 'GET';
       		}
        	AJAX.request = AJAX.getHTTPObject();
        	url = AJAX.autoDetect(url);

			if (AJAX.request)
			{
				AJAX.request_url=url;
				AJAX.request_query=query;
				AJAX.response_targetElementName=targetElementName;
				AJAX.response_func=func;
				AJAX.start_request();
        		AJAX.request.onreadystatechange=AJAX.onStateChange;
      			AJAX.request.open(type,url+"?"+query, true);
      			AJAX.request.send(null);
      		}

       }
       else
       {
	      window.setTimeout("AJAX.request_object('"+url+"','"+query+"','"+targetElementName+"',"+func+")",1000);
       }
	},
	start_request:function()
	{
		AJAX.request_in_action = true;
	},
	status:function()
	{
		if(AJAX.request_in_action) return false;
		else return true;
	},
	requestSuccess: function()
	{
		if (typeof(AJAX.response_func)=="function")
    	{
	    	if(AJAX.response_targetElementName != "") AJAX.response_func(AJAX.request.responseXML,AJAX.response_targetElementName);
       		else AJAX.response_func(AJAX.request.responseXML);
       		AJAX.end_request();
    	}
    	else if (typeof(AJAX.response_func)=="undefinded"||typeof(AJAX.response_func)=="null")
    	{

			var obj = document.getElementById(AJAX.response_targetElementName);
	    	obj.innerHTML = AJAX.request.responseText;
	    	AJAX.end_request();
		}
		else
		{

			AJAX.end_request();
			return AJAX.request.responseXML;
		}
		return false;
	},
	onStateChange: function()
	{

		if(AJAX.request.readyState ==1)AJAX.connected();
		if(AJAX.request.readyState ==2)AJAX.sending();
		if(AJAX.request.readyState ==3)AJAX.completing();

		if (AJAX.request && AJAX.request.readyState == 4)
		{

			if(typeof(AJAX.request.status) == "number")
			{
	    		switch (AJAX.request.status)
	        	{
              		case 200 :
              				AJAX.requestSuccess();
                   		break;
               		case 404 :
               			AJAX.requestFailure();
               		case 0 : break;
            		default : AJAX.response = "There was a problem sourcing the request<br/>The error code returned was : " + AJAX.request.status;
            	}
   	    	}
   		}
	},
	requestFailure:function()
	{
		if (AJAX.response_targetElementName != "")
		{
			var obj = document.getElementById(AJAX.response_targetElementName);
			obj.innerHTML = AJAX.request.responseText+" File not found: "+AJAX.request_url+"?"+AJAX.request_query;
			AJAX.end_request();
		}
    	return false;
	},
	end_request: function()
	{
		AJAX.request_in_action = false;
    	//clearTimeout(AJAX.request_timer);
	},
	connected:function(){},
	sending:function(){},
	completing:function(){}
}



