/*

@@OBFUSCATE PREFIX@@

*/


/* Execute AJAX request on URL, 
* Set result text on container inner HTML or use handlerFunction(container, ajaxRequest.responseText)
*/	
function executeAjaxRequest(url, container, handlerFunction)
{
	// ajax request
	var ajaxRequest = false;
	
	// check XMLHttpRequest support 
    if (window.XMLHttpRequest) 
    {	
    	try
    	{
    		// try XMLHttpRequest
    	    ajaxRequest = new XMLHttpRequest();
    	}
        catch(e)
        {
			// not supporting XMLHttpRequest
            ajaxRequest = false;
        }
    } 
    else
    // IE/Windows ActiveX version
    if(window.ActiveXObject) 
    {	
		try
       	{
       		// try Msxml2.XMLHTTP
       	    ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        }
      	catch(e) 
      	{	
      		// not supporting sxml2.XMLHTTP
        	try
        	{
        		// try Microsoft.XMLHTTP
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }
        	catch(e)
        	{
        		// not supporting Microsoft.XMLHTTP
        	    ajaxRequest = false;
        	}
		}
    }
    
    // send request if ajax available
	if (ajaxRequest) 
	{
		// ready-state function
		ajaxRequest.onreadystatechange = function() 
		{ 
			// done and ok
			if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) 
			{
				// check ready-handler function
				if (handlerFunction)
			    {
					// call ready-handler function if available 
			        handlerFunction(container, ajaxRequest.responseText);
			    }
			    else
			    {
					// set element inner HTML
			        container.innerHTML = ajaxRequest.responseText;
			    }
			}
		}
		
		// open request "GET" werb
		ajaxRequest.open("GET", url, true);
		
		// send request
		ajaxRequest.send("");
	}
}

/* Execute AJAX request on URL, 
* Set result text on container inner HTML or use handlerFunction(container, ajaxRequest.responseText)
* Use cahced responses
*/	
function executeAjaxRequestCached(url, container, handlerFunction)
{
	// check and instance caching array
	if (null == window.cachedAjaxResponse)
	{
		window.cachedAjaxResponse = new Array();
	}
	
	// get from cached request - response
	var cachedAjaxResponse = window.cachedAjaxResponse[url];
	if (null != cachedAjaxResponse)
	{
		// check ready-handler function
		if (handlerFunction)
	    {
			// call ready-handler function if available 
	        handlerFunction(container, cachedAjaxResponse);
	    }
	    else
	    {
			// set element inner HTML
	        container.innerHTML = cachedAjaxResponse;
	    }
	}
	
	// ajax request
	var ajaxRequest = false;
	
	// check XMLHttpRequest support 
    if (window.XMLHttpRequest) 
    {	
    	try
    	{
    		// try XMLHttpRequest
    	    ajaxRequest = new XMLHttpRequest();
    	}
        catch(e)
        {
			// not supporting XMLHttpRequest
            ajaxRequest = false;
        }
    } 
    else
    // IE/Windows ActiveX version
    if(window.ActiveXObject) 
    {	
		try
       	{
       		// try Msxml2.XMLHTTP
       	    ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        }
      	catch(e) 
      	{	
      		// not supporting sxml2.XMLHTTP
        	try
        	{
        		// try Microsoft.XMLHTTP
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }
        	catch(e)
        	{
        		// not supporting Microsoft.XMLHTTP
        	    ajaxRequest = false;
        	}
		}
    }
    
    // send request if ajax available
	if (ajaxRequest) 
	{
		// ready-state function
		ajaxRequest.onreadystatechange = function() 
		{ 
			// done and ok
			if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) 
			{
				// check ready-handler function
				if (handlerFunction)
			    {
					// call ready-handler function if available 
			        handlerFunction(container, ajaxRequest.responseText);
			    }
			    else
			    {
					// set element inner HTML
			        container.innerHTML = ajaxRequest.responseText;
			    }
			    
			    // add to cache
			    window.cachedAjaxResponse[url] = ajaxRequest.responseText;
			}
		}
		
		// open request "GET" werb
		ajaxRequest.open("GET", url, true);
		
		// send request
		ajaxRequest.send("");
	}
}
