var request;
var _loadedXMLDocumentHashtable = null;
var _loadedXMLDocumentXMLHTTP = null;
var _loadedXMLDocumentCallback = null;
var callBackFunction;
var isAvailReqObj = false;

try
{
	request = new XMLHttpRequest();
}
catch( trymicrosoft )
{
	try
	{
		request = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(othermicrosoft)
	{
		try
		{
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(failed)
		{
			request = false;
		}
	}
}

isAvailReqObj = true;

function initRequest()
{
	if( !request )
		alert("Error initializing XMLHttpRequest!");
}

function callHttpRequest(url)
{
    isAvailReqObj = false;
    
    if (callHttpRequest.caller == null)
    {
        alert("Call HttpRequest Error..");
        return;
    }

    var strFuncName = "_";
    var strFunc = trimS(callHttpRequest.caller.toString());
    strFunc = strFunc.replace(/function/g, "");
    for(var i=0;i<strFunc.length;i++)
    {
        if(strFunc.charAt(i)=="(")
            break;

        strFuncName = strFuncName + strFunc.charAt(i);
    }
    callBackFunction = strFuncName;
    
	request.open("GET", url, true);
	request.onreadystatechange = _callHttpRequest;
	request.send(null);
}

/*
    Callback method about User call
*/
function _callHttpRequest()
{
	if(request.readyState==4)
	{
		if(request.status==200)
		{
		    eval(callBackFunction+"();" );
		}
		else if(request.status==404)
		{
			alert("Request URL does not exist");
		}
		else if(request.status==500)
		{
			alert("Server Error.");
		}
		
		isAvailReqObj = true;
	}
	else
	{
		//alert("Error: status code is " + request.readyState);
	}
}

function trimS( strValue )
{
	var ReturnValue = "";
	strValue = ""+strValue+"";
	if( strValue == "" )
				return "";

	for(var i=0;i<strValue.length;i++)
	{
			if(strValue.charAt(i) != " ")
				  ReturnValue = ReturnValue + strValue.charAt(i);
	}

	return ReturnValue;
}