var __callbackList = new Array();	//	Holds the asynchronous callback handler

//	Add the Callback Handler to array list
function addToCallbackList(cb) {
	__callbackList[__callbackList.length] = cb;
}

//	Is Microsoft Browser?
var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1);
var pageUrl = "";			//	Post Back URL
var __theFormPostData = "";	//	Form Data
function WebForm_InitClientCallback(cbUrl) {
	//alert(cbUrl);
	pageUrl = cbUrl;
	
}


//	Callback asynchronously
function WebForm_DoAsyncCallback(eventTarget, eventArgument, eventCallback, context, errorCallback)
 {
	//alert(eventArgument);   
   //if(confirm('are you sure to reserve this time slot?'))
   //{
    re = new RegExp("\\x2B", "g");
    if (__nonMSDOMBrowser) {
        var xmlRequest = new XMLHttpRequest();
        postData = "__SCRIPTCALLBACKID=" + eventTarget +
                   "&__SCRIPTCALLBACKPARAM=" +eventArgument;
        if (pageUrl.indexOf("?") != -1) {
            xmlRequest.open("GET", pageUrl + "&" + postData, false);
        }
        else {
            xmlRequest.open("GET", pageUrl + "?" + postData, false);
        }
         
        xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlRequest.send(null);
        try
        {
			response = xmlRequest.responseText;
			var status   = xmlRequest.getResponseHeader("__SCRIPTCALLBACKSTATUS");
			//-22-jan-07
			status=	checkForIE7(status);
			//---------
			if (status == "200") 
			{			
				if (eventCallback != null)
					{
					eventCallback(response, context);
					}
			}
			else
			{
				if (errorCallback != null)
					errorCallback(response, context);
				else
				{
					//	For Testing Purposes
					//alert(response);
				}
			}
        }
        catch(e)
        {
            if (errorCallback != null)
                errorCallback(e.message, context);
			else
			{
				//	For Testing Purposes
				//alert(e.message);
			}
        }
    }
    else { 
        var xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
        xmlRequest.onreadystatechange = WebForm_OnClientCallbackComplete;
        var __callbackObject = new Object();
        __callbackObject.xmlRequest = xmlRequest;
		__callbackObject.eventTarget = eventTarget;
		__callbackObject.eventArgument = eventArgument;
        __callbackObject.eventCallback = eventCallback;
        __callbackObject.context = context;
        __callbackObject.errorCallback = errorCallback;
        addToCallbackList(__callbackObject);
//alert(eventCallback);        
        postData = "__SCRIPTCALLBACKID=" + eventTarget +
                   "&__SCRIPTCALLBACKPARAM=" + escape(eventArgument).replace(re, "%2B");
        usePost = false;
        if (pageUrl.length + postData.length + 1 > 2067) {
            usePost = true;
        }
        if (usePost) {
            xmlRequest.open("POST", pageUrl, true);
            xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlRequest.send(postData);
        }
        else {            
            if (pageUrl.indexOf("?") != -1) {
                xmlRequest.open("GET", pageUrl + "&" + postData, true);
            }
            else {
                xmlRequest.open("GET", pageUrl + "?" + postData, true);
            }
            xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlRequest.send();
        }
    }
    //}
}


//	Callback Synchronously
function WebForm_DoSyncCallback(eventTarget, eventArgument, eventCallback, context, errorCallback) {
    if (__nonMSDOMBrowser) 
    {
		re = new RegExp("\\x2B", "g");
		var xmlRequest = new XMLHttpRequest();
		postData = __theFormPostData +
					"__SCRIPTCALLBACKID=" + eventTarget +
					"&__SCRIPTCALLBACKPARAM=" + escape(eventArgument).replace(re, "%2B");
		if (pageUrl.indexOf("?") != -1) {
			xmlRequest.open("GET", pageUrl + "&" + postData, false);
		}
		else {
			xmlRequest.open("GET", pageUrl + "?" + postData, false);
		}    
		xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlRequest.send(null);
		try
		{
			response = xmlRequest.responseText;
			var status   = xmlRequest.getResponseHeader("__SCRIPTCALLBACKSTATUS");
			//-22-jan-07
			status=	checkForIE7(status);
			//---------
			
			if (status == "200") 
			{			
				if (eventCallback != null)
					eventCallback(response, context);
			}
			else
			{
				if (errorCallback != null)
				{
					errorCallback(response, context);
				}
				else
				{
					//	For Testing Purposes
					//alert(response);
				}
			}
		}
		catch(e)
		{
			if (errorCallback != null)
				errorCallback(e.message, context);
			else
			{
				//	For Testing Purposes
				//alert(e.message);
			}
		}
	}
	else
	{
        var xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
        postData = __theFormPostData +
                   "__SCRIPTCALLBACKID=" + eventTarget +
                   "&__SCRIPTCALLBACKPARAM=" + escape(eventArgument).replace(re, "%2B");
        usePost = false;
        if (pageUrl.length + postData.length + 1 > 2067) {
            usePost = true;
        }
        if (usePost) {
            xmlRequest.open("POST", pageUrl, false);
            xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlRequest.send(postData);
        }
        else 
        {            
            if (pageUrl.indexOf("?") != -1) {
                xmlRequest.open("GET", pageUrl + "&" + postData, false);
            }
            else {
                xmlRequest.open("GET", pageUrl + "?" + postData, false);
            }
            xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlRequest.send();
        }
        
        try
        {
			response = xmlRequest.responseText;
			var status   = xmlRequest.getResponseHeader("__SCRIPTCALLBACKSTATUS");
			//-22-jan-07
			status=	checkForIE7(status);
			//---------
			if (status == "200") 
			{			
				if (eventCallback != null)
				{ //alert(response);
				  //eventCallback(response, '');
				  switch(eventCallback)
				  {
				    case 'getCitiesNewServices':
						getCitiesNewServices(response,'');
						break;
					default:
						eventCallback(response, context);
						break;
				  }
				}
			}
			else
			{
				if (errorCallback != null)
				{
					errorCallback(response, context);
				}
				else
				{
				 	//	For Testing Purposes
					//alert(response);
				}
			}
        }
        catch(e)
        {
            if (errorCallback != null)
            {
                errorCallback(e.message, context);
            }
			else
			{
				//	For Testing Purposes
				//alert(e.message);
			}
        }        
	}
}


//	Asynchronous Callback Completed
function WebForm_OnClientCallbackComplete() 
{ 
	for(var i = 0; i < __callbackList.length; i++)
	{
		var __cbObject = __callbackList[i];
		
		if (__cbObject != null && __cbObject.xmlRequest.readyState == 4) 
		{
			try
			{ 
				xmlText	 = __cbObject.xmlRequest.responseXML;
				response = __cbObject.xmlRequest.responseText;
				
				var status   = __cbObject.xmlRequest.getResponseHeader("__SCRIPTCALLBACKSTATUS");
				//-22-jan-07
				status=	checkForIE7(status);
				//alert(status);
				//---------
				if (status == "200") 
				{
					if (__cbObject.eventCallback != null)
						__cbObject.eventCallback(response, __cbObject.context);
				}
				else
				{ 
					if (__cbObject.errorCallback != null)
					{
						__cbObject.errorCallback(response, __cbObject.context);
					}
					else
					{ 
						//	for normal popups
						//alert(response);
					}
				}
			}
			catch(e)
			{
				if (__cbObject.errorCallback != null)
					__cbObject.errorCallback(e.message, __cbObject.context);
				else
				{
					//	For Testing Purposes
					//alert(e.message);
				}
			}
			finally
			{
				__cbObject.xmlRequest = null;
				__cbObject = null;
				__callbackList[i] = null;
			}
		}
    }
}


//	Callback asynchronously
function WebForm_DoAsyncCallbackPopUp(url,eventTarget, eventArgument, eventCallback, context, errorCallback)
 {
	//alert(eventArgument);   
   //if(confirm('are you sure to reserve this time slot?'))
   //{
    re = new RegExp("\\x2B", "g");
    if (__nonMSDOMBrowser) {
        var xmlRequest = new XMLHttpRequest();
        postData = "__SCRIPTCALLBACKID=" + eventTarget +
                   "&__SCRIPTCALLBACKPARAM=" +eventArgument;
        if (url.indexOf("?") != -1) {
            xmlRequest.open("GET", url + "&" + postData, false);
        }
        else {
            xmlRequest.open("GET", url + "?" + postData, false);
        }
         
        xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlRequest.send(null);
        try
        {
			response = xmlRequest.responseText;
			var status   = xmlRequest.getResponseHeader("__SCRIPTCALLBACKSTATUS");
			//-22-jan-07
			status=	checkForIE7(status);
			//---------
			if (status == "200") 
			{			
				if (eventCallback != null)
					{
					eventCallback(response, context);
					}
			}
			else
			{
				if (errorCallback != null)
					errorCallback(response, context);
				else
				{
					//	For Testing Purposes
					//alert(response);
				}
			}
        }
        catch(e)
        {
            if (errorCallback != null)
                errorCallback(e.message, context);
			else
			{
				//	For Testing Purposes
				//alert(e.message);
			}
        }
    }
    else { 
        var xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
        xmlRequest.onreadystatechange = WebForm_OnClientCallbackComplete;
        var __callbackObject = new Object();
        __callbackObject.xmlRequest = xmlRequest;
		__callbackObject.eventTarget = eventTarget;
		__callbackObject.eventArgument = eventArgument;
        __callbackObject.eventCallback = eventCallback;
        __callbackObject.context = context;
        __callbackObject.errorCallback = errorCallback;
        addToCallbackList(__callbackObject);
        postData = "__SCRIPTCALLBACKID=" + eventTarget +
                   "&__SCRIPTCALLBACKPARAM=" + escape(eventArgument).replace(re, "%2B");
        usePost = false;
        if (url.length + postData.length + 1 > 2067) {
            usePost = true;
        }
        if (usePost) {
            xmlRequest.open("POST", url, true);
            xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlRequest.send(postData);
        }
        else {            
            if (url.indexOf("?") != -1) {
                xmlRequest.open("GET", url + "&" + postData, true);
            }
            else {
                xmlRequest.open("GET", url + "?" + postData, true);
            }
            xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlRequest.send();
        }
    }
    //}
}

//------Check for ie 7 added for # 2953
function checkForIE7(st)
{
	var statusTmp="";
	var hasStatus=true;  //presume, that status is comming
	if(st==null) hasStatus=false;
	else if(st=="") hasStatus=false;
	
	if(hasStatus==false)
	{
		//var status   = xmlRequest.getResponseHeader("__SCRIPTCALLBACKSTATUS");
		var cookieVal = window.document.cookie;
		//eg. abcdef=dfjlk456;__SCRIPTCALLBACKSTATUS=200;higk=6000"
		if(cookieVal.indexOf("__SCRIPTCALLBACKSTATUS")>-1)
		{
			var arr=cookieVal.split(";");
			for(icnt=0; icnt<arr.length; icnt++)
			{
				if(arr[icnt].indexOf("__SCRIPTCALLBACKSTATUS")>-1)
				{
					var arr2=arr[icnt].split("=");
					if(arr2.length>1)
					{
						statusTmp=arr2[1];
						break;
					}
				}
			}	
		}
	}
	else
	statusTmp=st;
	return statusTmp;
}
