function GetBaseAjaxCommunicator()
{
	var xmlhttp;
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') 
	{
		try 
		{
			xmlhttp = new XMLHttpRequest();
		} 
		catch (e) 
		{
			alert("Your browser is not supporting XMLHTTPRequest");
			xmlhttp = false;
		}
	}
	else
	{
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
  return xmlhttp;
}

function BaseAjaxCommand(_AjaxURL, _AjaxCommand, _AjaxControl)
{
	var _AjaxCOM = GetBaseAjaxCommunicator();		
	_AjaxCOM.open("GET", _AjaxURL); 	
	_AjaxCOM.onreadystatechange = 
	function (){
		if(_AjaxCOM.readyState == 1)	
		{	}
		if(_AjaxCOM.readyState == 4){
			var responseHTML = _AjaxCOM.responseText;																						
			if (responseHTML.indexOf('!|--FAILED--|!') >= 0) {
				alert("Operation Failed:\n-------------------------------------------------\nError occurred while performing the requested operation.");												
			} else if (responseHTML.indexOf('!|--SUCCESS--|!') >= 0) {	}			
			if (_AjaxCommand == 'LOAD_CHILD_DDL')
			{
				var AjaxHTML = responseHTML;
				if (AjaxHTML.indexOf('-->') > 0)
					AjaxHTML = AjaxHTML.substring(AjaxHTML.indexOf('-->') + 5)	
				
				var oChildDDL = _AjaxControl
				var innerDelimiter = String.fromCharCode(2);
				var outerDelimiter = String.fromCharCode(1);	
				AjaxHTML = "0" + innerDelimiter + "" + outerDelimiter + AjaxHTML
				var myString = new String(AjaxHTML)
				var myArr = myString.split(outerDelimiter)
				for (var xx=0; xx< myArr.length; xx++)
				{
					var myInnerArr = myArr[xx].split(innerDelimiter);
					eval("oChildDDL.options.add(new Option('" + myInnerArr[1] + "','" + myInnerArr[0] + "'))");
				}			
			}			
		}	
	}
	_AjaxCOM.send('');
}

function DoAjaxCommand(_CommandName, _AjaxValue, _AjaxControl)
{
	if (_CommandName == "PERSIST_MENU_STATE")
	{
		var _AjaxURL = 'Ajax_Server.asp?Action=' + _CommandName + '&HideMenu=' + _AjaxValue				
		BaseAjaxCommand(_AjaxURL);
	}
	
	if (_CommandName == "LOAD_CHILD_DDL")
	{
		var myArr = _AjaxValue.split(String.fromCharCode(1))		
		var _AjaxURL = 'AJAX_SERVER.ASP?ACTION=[ACTION]&AUTOFORMID=[AUTOFORMID]&PARENTKEY=[PARENTKEY]'		
		_AjaxURL = _AjaxURL.replace('[ACTION]'		,_CommandName)
		_AjaxURL = _AjaxURL.replace('[AUTOFORMID]'	,myArr[0])
		_AjaxURL = _AjaxURL.replace('[PARENTKEY]'	,myArr[1])				
		BaseAjaxCommand(_AjaxURL, _CommandName, _AjaxControl);						
	}
	
}

	function encodeNameAndValue(sName, sValue) 
	{
		var sParam = encodeURIComponent(sName);
		sParam += "=";
		sParam += encodeURIComponent(sValue);
		return sParam;				
	}

	function getRequestBody(oForm) {
		var aParams = new Array();	            
		for (var i=0 ; i < oForm.elements.length; i++) 
		{
			var oField = oForm.elements[i];
			switch (oField.type) {
				case "button":
				case "submit":
				case "reset":
            			break;	                    
				case "radio":
				case "checkbox":
					if (!oField.checked) {
						break;
					} 
				case "text":
				case "hidden":
				case "password":
					//if (oField.name.indexOf('SIM_') == 0 || oField.name.indexOf('hdn') == 0) {
						aParams.push(encodeNameAndValue(oField.name, oField.value));			
					//}
					break;
			    
				default:	                    
					switch(oField.tagName.toLowerCase()) {
						case "select":
							//if (oField.name.indexOf('SIM_') == 0 || oField.name.indexOf('hdn') == 0) {
							if(oField.selectedIndex != -1)
								aParams.push(encodeNameAndValue(oField.name, oField.options[oField.selectedIndex].value));
							//}	
							break;
						default:
							//if (oField.name.indexOf('SIM_') == 0 || oField.name.indexOf('hdn') == 0) {
								aParams.push(encodeNameAndValue(oField.name, oField.value));
							//}	
					}
				}
		}
		return aParams.join("&");
	}

	function GetAjaxSearchResults(oForm, ContainerId) {		
		var sBody = getRequestBody(oForm);
		var oXHR = GetBaseAjaxCommunicator();
		//alert(oForm.action + '&IsAjax=1&Debug=1')
		oXHR.open("post", oForm.action + '&IsAjax=2', false);
		oXHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
		oXHR.setRequestHeader("Content-length", sBody.length);
		//oXHR.setRequestHeader("Connection", "close");            
		oXHR.onreadystatechange = function () 
		{
			if (oXHR.readyState == 1)
			{
				//ShowControl('blkWait');
			}
			if (oXHR.readyState == 4) {
				if (oXHR.status == 200) {					
					document.getElementById(ContainerId).innerHTML = oXHR.responseText
					//alert(oXHR.responseText.length);
					if (document.getElementById("hdnAction").value == "ACTION_SEARCH") 
					{
					 if (document.getElementById("btnCollapseTop")!= null)
					 {
					document.getElementById("btnCollapseTop").click();
					}
					}
					window.status = 'Processing Completed..' + oXHR.responseText.length + '.......DONE!';							
				} else {
					alert("An error occurred: " + oXHR.statusText);
					
				}
			}            
		};
		oXHR.send(sBody);        
	}

function LoadChildDDL(ParentDDL)
{ 
	try	{
		var oDDL = ParentDDL	
		var oChildDDL = document.all(document.getElementById("HDN_CHILDID_" + ParentDDL.name).value)
		var AutoformID = document.getElementById("HDN_AUTOFORMID_" + oChildDDL.name).value
		var ParentKey = oDDL.options[oDDL.selectedIndex].value	
		oChildDDL.options.innerHTML = '';		
		var innerDelimiter = String.fromCharCode(2);
		var outerDelimiter = String.fromCharCode(1);
		_AjaxValue = AutoformID + outerDelimiter + ParentKey	
		if (ParentKey != 0) DoAjaxCommand('LOAD_CHILD_DDL', _AjaxValue, oChildDDL)	
	} catch (ex) {}
}

function ToggleVerticalMenu(Menu,LeftBar,RightBar)
{
	try
	{
		if (IsBaseVisible(Menu))
		{
			HideBaseControl(LeftBar);
			HideBaseControl(Menu);
			ShowBaseControl(RightBar);	
			DoAjaxCommand("PERSIST_MENU_STATE",1)
		}else
		{
			HideBaseControl(LeftBar);
			ShowBaseControl(Menu);
			ShowBaseControl(RightBar);	
			DoAjaxCommand("PERSIST_MENU_STATE",0)
		}
	}
	catch (ex) {}		
}

function CollapseVerticalMenu(Menu,LeftBar,RightBar)
{
	try
	{
		HideBaseControl(LeftBar);
		HideBaseControl(Menu);
		ShowBaseControl(RightBar);	
		DoAjaxCommand("PERSIST_MENU_STATE",1)
		
	}
	catch (ex) {}		
}

function ExpandVerticalMenu(Menu,LeftBar,RightBar)
{
	try
	{
		HideBaseControl(LeftBar);
		ShowBaseControl(Menu);
		ShowBaseControl(RightBar);	
		DoAjaxCommand("PERSIST_MENU_STATE",0)		
	}
	catch (ex) {}		
}


function FillChildComboList(ParentCombo, ChildCombo, ParentKeyIndex, ChildDataSource, ChildDefaultText){
		ChildDataSource = unescape(ChildDataSource);
		parentCombo = document.getElementById(ParentCombo).object;		
		childCombo = document.getElementById(ChildCombo).object;	
		//if (IsChildEditable == null) IsChildEditable = true;
		//childCombo.GetTextBox().SetEditable(IsChildEditable)
		var ParentKeyID = (parentCombo.GetSelectedRowValues())[ParentKeyIndex];//parentCombo.GetFieldFromActiveRow(ParentKey);
		childCombo.GetList().Clear();
		ChildDataSource = ChildDataSource.replace('[PARENT_KEY]', ParentKeyID) 
		childCombo.GetList().SetDatasourceUrl(ChildDataSource);
		childCombo.GetList().GetPage(0,0,"");
		childCombo.SetTextValue(ChildDefaultText);	
		childCombo.GetList().Show();
		
}

function ShowCoolTip(Skin, ID, Title, Msg)
{
	//if (Skin == null) 
	Skin = "clean";
	nitobi.callout.destroyLast();
	var myCallout = new nitobi.callout.Callout(Skin);
	myCallout.attachToElement(ID);
	myCallout.setTitle(Title);
	myCallout.setBody(Msg);
	myCallout.show();
}

function HideBaseControl(szDivID) // 1 visible, 0 hidden
{
	var iState = 0
	var obj = document.layers ? document.layers[szDivID] : document.getElementById ? document.getElementById(szDivID).style : document.all[szDivID].style;
	obj.display = "none"
}

function ShowBaseControl(szDivID) // 1 visible, 0 hidden
{
	var iState = 1
	var obj = document.layers ? document.layers[szDivID] : document.getElementById ? document.getElementById(szDivID).style : document.all[szDivID].style;
	obj.display = ""
}

function IsBaseVisible(szDivID)
{
	var obj = document.layers ? document.layers[szDivID] : document.getElementById ? document.getElementById(szDivID).style : document.all[szDivID].style;
	
	if (obj.display == "")
		return true ;
	else
		false;
	
}

function openGuides( aURL, aWinName )
{
   var wOpen;
   var sOptions;

   sOptions = 'status=yes,menubar=yes,scrollbars=yes,resizable=yes,toolbar=yes';
   sOptions = sOptions + ',width=' + (screen.availWidth - 10).toString();
   sOptions = sOptions + ',height=' + (screen.availHeight - 322).toString();
   sOptions = sOptions + ',screenX=0,screenY=0,left=0,top=200';

   wOpen = window.open( '', aWinName, sOptions );
   wOpen.location = aURL;
   wOpen.focus();
   wOpen.moveTo( 0, 0 );
   wOpen.resizeTo( screen.availWidth, screen.availHeight );
   return;
}

function ShowPreloadMsg() 
{
	if (document.getElementById)
	{
		document.getElementById('divMenuWait').style.left = document.body.clientWidth/2-150+document.body.scrollLeft;					
		document.getElementById('divMenuWait').style.top = document.body.clientHeight/2+75+document.body.scrollTop;
		var tipobj=document.all? document.all["divMenuWait"] : document.getElementById? document.getElementById("divMenuWait") : ""
		var IfrRef = document.getElementById('Diviframetooltip');
		tipobj.style.zIndex = 100; 
		tipobj.style.visibility='visible';
		IfrRef.style.width = tipobj.offsetWidth;
		IfrRef.style.height = tipobj.offsetHeight;
		IfrRef.style.top = tipobj.style.top;
		IfrRef.style.left = tipobj.style.left;
		IfrRef.style.zIndex = tipobj.style.zIndex - 1;
		IfrRef.style.display = "block";
	}
}

function CustomValidator(action, element)
{	
	return CustomValidator_BaseASP(action, element)
}

function onLink(action, element)
{
	return onLink_BaseASP(action, element);					
}

function onPassword(action, element)
{	
	return onPassword_BaseASP(action, element);
}

function onButton(action,element)
{
	return onButton_BaseASP(action, element);	            
}

function onTextBox(action, element)
{
	return onTextBox_BaseASP(action, element);		
}
	
function onDropdownlist(action, element)
{
	return onDropdownlist_BaseASP(action, element)			
}
	
function onCheckBox(action, element)
{
	return onCheckBox_BaseASP(action, element)			
}
	
function onCheckBoxList(action, element)
{
	return onCheckBoxList_BaseASP(action, element)	
}
	
function onRadioButtonList(action, element)
{
	return onRadioButtonList_BaseASP(action, element)	
}

function ShowChildTab(ID, GroupIDs) 
{
	
	var arrGroup = GroupIDs.split(","); 
	for (iMainCounx = 0;iMainCounx < arrGroup.length; iMainCounx++) 
	{	
		document.getElementById('CG_' + arrGroup[iMainCounx]).style.display='none';
		var oTab = document.getElementById('Tab_' + arrGroup[iMainCounx]);
		var oTabLink = document.getElementById('Tab' + arrGroup[iMainCounx] + '_Link');
		oTab.className = 'cssEnableTab';
		oTabLink.className = 'cssEnableTabLink';					
	}	
	
	document.getElementById('CG_' + ID).style.display='';
	var oTab1 = document.getElementById('Tab_' + ID);
	var oTabLink1 = document.getElementById('Tab' + ID + '_Link');
	oTab1.className = 'cssActiveTab';
	oTabLink1.className = 'cssActiveTabLink';	
}

function onComboBox(action, element)
{
	return onComboBox_BaseASP(action, element)
}

function CheckAdvancedQueryDelete(ActionType)
{
	if (document.frmAuto["ADV_1_Advanced_#SQ#"].value == 0)
		{
			if (ActionType == 1)
			{
				alert("Please select a query to delete!");
			}
			else
			{
				alert("Please select a query to reset!");
			}
			document.frmAuto["ADV_1_Advanced_#SQ#"].focus();							
			return false;
		} 
	return true;
}