AjaxHandler = function(displayType) 
{
    this.ContainerElement;
    this.DataSource;
    this.CallBack;
    this.Script;
    this.objCaller;
    this.HasScript=false;
    this.ResultControlId;
    this.CalendarLoadingContainer;
    
    this.Init=_Init;
    this.LoadData = _LoadData;
    this.DisplayData = _DisplayData;
    this.DisplayLoader = _DisplayLoader;
    this.HideLoader = _HideLoader;
    this.loader = "../Images/ajax-loader.gif";
    this.isFromCalendar="0"; 
    
}

function _Init(strContainerElement,strDataSource, callback, loader,isCalendar,CalendarLoadingContainer)
{
   if (strContainerElement !=undefined) this.ContainerElement=strContainerElement;
   if (strDataSource !=undefined) this.DataSource=strDataSource;
   if(callback !=undefined) this.CallBack=callback;
   if(loader!=undefined) this.loader=loader;
   if(isCalendar != undefined) this.isFromCalendar="1"; 
   if(CalendarLoadingContainer != undefined) this.CalendarLoadingContainer = CalendarLoadingContainer; 
   this.DisplayData = _DisplayData;
   this.DisplayCalendarLoader = _DisplayCalendarLoader; 
   this.HideCalendarLoader = _HideCalendarLoader; 
}

function _LoadData()
{
    if(this.isFromCalendar == "0")
    {
        this.DisplayLoader();
    }
    else 
    {
        this.DisplayCalendarLoader();
    }
    if(typeof XMLHttpRequest != "undefined")
	{
		this.objCaller = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		var sVersions = ["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
		for (var i = 0; i< sVersions.length; i++)
		{
			try
			{
				this.objCaller = new ActiveXObject(sVersions[i]); 
			}
			catch(err){}
		}
	}
	else
	{
	    document.getElementById(this.ContainerElement).innerHTML = "XMLHTTP object could not be created.";
	}
	
    if(this.objCaller!=null)
    {
	    try
	    {
	        this.objCaller.onreadystatechange = this.CallBack;
	        this.objCaller.open("GET",this.DataSource, true);
	        this.objCaller.send(null);
	    }
	    catch(e)
	    {
	        document.getElementById(this.ContainerElement).innerHTML=e.message;
	    }
    }
}

function _DisplayData()
{
    try
    {
        if(this.objCaller.readyState == 4)
        {
            if(this.objCaller.status == 200)
            {
                var dsRoot = this.objCaller.responseText;
                var objContainer = document.getElementById(this.ContainerElement);
                var dsHTML = dsRoot.substring(dsRoot.indexOf("<pre>",1)+5,dsRoot.indexOf("</pre>",3))
                this.HideLoader();
                if(objContainer != null && objContainer != "undefined")
                    objContainer.innerHTML=dsHTML;
                    
                if(this.ResultControlId)
                    document.getElementById(this.ResultControlId).value=dsHTML;
                if(dsRoot.indexOf("--script",1)!=-1 && dsRoot.indexOf("script-->",3)!=-1)
                {
                    var strJS = dsRoot.substring(dsRoot.indexOf("--script",1)+8,dsRoot.indexOf("script-->",3));
			        if(strJS!="")
			        {	this.HasScript=true;
			            this.Script=strJS;
			        }	
                }
                if(this.isFromCalendar == "1")
                {
                    this.HideCalendarLoader();
                }
                return true;
            }
            else
            {
                
            }
        }
        return false;
    }
    catch(e)
    {
        alert(e.message)
    }
        
}

function _DisplayLoader()
{
    var objContainerElement = document.getElementById(this.ContainerElement);
    if(objContainerElement != null && objContainerElement != "undefined")
        objContainerElement.innerHTML = "<img alt=\"Loader\" src=\""+ this.loader +"\" alt=\"Loading..\" title=\"Loading..\" />"
}

function _DisplayCalendarLoader()
{
    var objCalendarLoadingContainer = document.getElementById(this.CalendarLoadingContainer);
    if(objCalendarLoadingContainer != null && objCalendarLoadingContainer != "undefined")
    {
        objCalendarLoadingContainer.style.display="";
        objCalendarLoadingContainer.innerHTML = "<font style=\"color:#000000;background-color:#FAD163;font-weight:bold\">Loading...</font>";
    }    
}

function _HideCalendarLoader()
{
    var objCalendarLoadingContainer = document.getElementById(this.CalendarLoadingContainer);
    if(objCalendarLoadingContainer != null && objCalendarLoadingContainer != "undefined")
    {
        objCalendarLoadingContainer.innerHTML = "";
        objCalendarLoadingContainer.style.display="none";
    }    
}


function _HideLoader()
{
    var objContainerElement = document.getElementById(this.ContainerElement);
    if(objContainerElement != null && objContainerElement != "undefined")
        objContainerElement.innerHTML = "";
}

