﻿var requestState = new Array();
function AsyncRequest(arg, callback, context, url)
{
    var request = InitRequest();
    SendRequest(request, url + arg, callback, context);
}

function InitRequest()
{
    var request = null;
    try
    {
	    request = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
	    try
	    {
		    request = new ActiveXObject("Microsoft.XMLHTTP");
	    }
	    catch(sc)
	    {
		    request = null;
	    }
    }
    if(!request && typeof XMLHttpRequest!="undefined")
    {
	    request = new XMLHttpRequest()
    }
	return request;
}
    
function SendRequest(asyncRequest, url, callback, context)
{
    if(asyncRequest && asyncRequest.readyState != 0)
    {
	    asyncRequest.abort();
    }
    asyncRequest = InitRequest();
    if(asyncRequest)
    {
	    asyncRequest.open("GET", url, true);
	    asyncRequest.onreadystatechange = function()
	    {      
		    if(asyncRequest.readyState==4 && asyncRequest.responseText)
		    { 
				    callback(asyncRequest.responseText, context, asyncRequest.status);
		    }
	    };
	    asyncRequest.send(null)
    }
}

function GetInitScript(url, func)
{
    var request = InitRequest();
    requestState[url] = request;
    if(request && request.readyState != 0)
    {
	    request.abort();
    }
    request = InitRequest();
    if(request)
    {
	    request.open("GET", url, true);
	    request.onreadystatechange = function()
	    {
	        requestState[url] = null;
		    if(request.readyState==4 && request.responseText)
		        if(request.status == 200)
		        {
		            func(request.responseText);
		        }
		        else
		        {
		            func('var error;');
		        }
	    };
	    request.send(null)
    }
}

function AsyncPost(url, params, func)
{
    var request = InitRequest();
    requestState[url] = request;
    if(request && request.readyState != 0)
    {
	    request.abort();
    }
    request = InitRequest();
    if(request)
    {
	    request.open("POST", url, true);
	    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        request.setRequestHeader("Content-length", params.length);
        request.setRequestHeader("Connection", "close");

	    request.onreadystatechange = function()
	    {
	        requestState[url] = null;
		    if(request.readyState==4)
		    {
		        if(func && typeof(func) == 'function') {
		            func(request.status);
		        }
		    }	          
	    };
	    request.send(params)
    }
}

function AbortInitScript(url)
{
    var request = requestState[url];
    if (request)
    {
        try
        {
            requestState[url].abort();
        }
        catch (ex)
        { //eat the error
        }
    }
}

function evalScript(el) 
{
    var ii;
    var scriptBlocks = el.getElementsByTagName('SCRIPT');
    for(ii=0;ii<scriptBlocks.length;ii++)
    {
        var script = scriptBlocks[ii].innerHTML;
        eval(script);
    }
}