// Copyright DOVICO Software (C)2008
var XMLTAG_ESAERROR = "EXECUTESERVERACTIONERROR";
var gbSessionExpired = false;  


function GetBrowserName()
{
	return CMGetCookie("DOVSessionCookie", "Browser");
}


function GetBrowserVersion()
{
	return CMGetCookie("DOVSessionCookie", "BrowserVersion");
}


function IsBrowserIE()
{
	return GetBrowserName() == "MSIE";
}


function IsBrowserNotIE()
{
	return GetBrowserName() != "MSIE";
}


function IsBrowserFirefox()
{
	return GetBrowserName() == "Firefox";
}


function IsBrowserNetscape()
{
	return GetBrowserName() == "Netscape";
}


function GetOsName()
{
	return CMGetCookie("DOVSessionCookie", "OperatingSystem");
}


function IsOsWindows()
{
	return GetOsName() == "Windows";
}



function CMGetCookie(sCookieManagerName, sFieldName)
{	
	var sCookie = GetCookie(sCookieManagerName);
	if (sCookie == null) {return null;}
	
	var sReturn = null;
	var iStart = sCookie.indexOf(BuildFieldName(sFieldName));
	if (iStart != -1)
	{
		iStart = iStart + sFieldName.length + 3;
		
		var iEnd = sCookie.indexOf("~~", iStart);
		if (iEnd == -1) {iEnd = sCookie.length;}
		sReturn = unescape(sCookie.substring(iStart, iEnd));
	}
	
	return sReturn;
}


function CMSetCookie(sCookieManagerName, sFieldName, sFieldValue)
{	
	var sCookieManager = GetCookie(sCookieManagerName);
	if (sCookieManager == null) 
	{
		sCookieManager = CreateCookie( sCookieManagerName );
	}
	
	var sExpires = CMGetCookie(sCookieManagerName, "Expires");

	
	var iStart = sCookieManager.indexOf(BuildFieldName(sFieldName));
	if (iStart != -1)
	{
		
		var iEnd = sCookieManager.indexOf("~~", iStart + 1);
		if (iEnd == -1)	{iEnd = sCookieManager.length;}
			
		var sReplace = sCookieManager.substring(iStart, iEnd);
		sCookieManager = sCookieManager.replace(sReplace, BuildFieldName(sFieldName) + escape(sFieldValue));
	}
	
	else
	{
		sCookieManager += BuildFieldName(sFieldName) + escape(sFieldValue);
	}
	
	var sFullCookie = sCookieManagerName + "=" + sCookieManager + ";path=/;";
	
	if (sExpires != "Session") {sFullCookie += "expires=" + sExpires + ";";}
	
	document.cookie = sFullCookie;
}


function SetSessionCookie(sField, sValue)
{
	CMSetCookie("DOVSessionCookie", sField, sValue);
}


function GetSessionCookie(sField)
{
	return CMGetCookie("DOVSessionCookie", sField);
}


function SetUserPrefsCookie(sField, sValue)
{
	CMSetCookie("DOVUserPrefs", sField, sValue);
}


function GetUserPrefsCookie(sField)
{
	return CMGetCookie("DOVUserPrefs", sField);
}

function BuildFieldName(sFieldName)
{
	return "~~" + sFieldName + "~";
}

function GetCookie(sCookieName)
{
		var value = null;
		var allCookies = document.cookie;
		var pos = allCookies.indexOf(sCookieName+"=");
		if (pos == -1) {pos = allCookies.indexOf(sCookieName);}
		
		if(pos != -1)
		{
			var start = pos+(sCookieName.length)+1;
			var end = allCookies.indexOf(";", start);
			
			if(end == -1) 
				end = allCookies.length;
				
			value = allCookies.substring(start, end);
			value = unescape(value);
		}
		
		return value;
}
function CreateCookie( sCookieName )
{
	
	if( GetCookie( sCookieName) != null )
	{
		return;
	}	
	
	var dtExpires = new Date();
	AddDaysToDate( dtExpires, 100);
	var sCookieDate = dtExpires.toUTCString();
	
	
	var sCookie = sCookieName + "=";
	sCookie += "~~Expires~" + sCookieDate;
	sCookie += "; expires=" + sCookieDate;
	sCookie += "; path=/";
	
	document.cookie = sCookie;	
	
	
	return GetCookie( sCookieName );
}


function ClearCopyCookie()
{
	SetSessionCookie("CopyID", "blank");
}


function GetCopyCookie()
{
	return GetSessionCookie("CopyID");
}

function IsCopyCookieEmpty()
{
	var sCopyIDs = GetCopyCookie();
	return sCopyIDs == null || sCopyIDs == "blank";
}

function OpenWindow(sUrl,sName,sTop,sLeft,sHeight,sWidth,sMenuBar,sScrollBar,sStatus,sResizable)
{
	return window.open(sUrl,sName,"top="+sTop +",left="+sLeft+",height="+sHeight+",width="+sWidth+",menubar="+sMenuBar +",resizable="+sResizable+",scrollbars="+sScrollBar+",status="+sStatus);
}


function CServerActionRequestHandle()
{
	this.m_xhrRequest = null;
}











function ExecuteServerAction(sAction, sXml, bAsync, fpAsyncCallback, hXhrRequest, fpErrorFunctionCallback, bUseSession)
{
	
	if (gbSessionExpired) {return;}
	
	
	var sRequestXml = "<SERVERACTION ACTION=\"" + sAction + "\">";
	sRequestXml += sXml;
	sRequestXml += "</SERVERACTION>";
	
	var xhrRequest = null;
	
	
	if (typeof(bUseSession) == "undefined") {bUseSession = true;}
	
	
	
	if (window.XMLHttpRequest) 
	{
		xhrRequest = new XMLHttpRequest();
	} 
	
	else if (window.ActiveXObject) 
	{
		
		xhrRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		return;
	}
	
	
	if (bAsync)
	{
		
		hXhrRequest.m_xhrRequest = xhrRequest;
	
		
		xhrRequest.onreadystatechange = fpAsyncCallback;
	}
	
	
	xhrRequest.open("POST", (bUseSession ? "execute_session_action.aspx" : "execute_action.aspx"), bAsync);
	
	
	xhrRequest.send(sRequestXml);
	
	
	if (bAsync == false)
	{
		ValidateForServerActionError(xhrRequest.responseXML, fpErrorFunctionCallback);
		
		return xhrRequest.responseXML;
	}
	else
	{
		return xhrRequest;
	}
}




function ProcessServerAction(xhrRequest)
{
	
	if (IsServerActionResponseReady(xhrRequest))
	{
		ValidateForServerActionError(xhrRequest.responseXML);
		
		return xhrRequest.responseXML;
	}
	
	return null;
}


function ValidateForServerActionError(xmlResponse, fpErrorFunctionCallback)
{
	
	
	if(xmlResponse == null) {return;}
	
	var nodeErrors = xmlResponse.getElementsByTagName(XMLTAG_ESAERROR);
	if (nodeErrors.length == 0) {return;}
	
	
	var nodeError = nodeErrors[0];
	
	
	
	if (nodeError == null) {return;}
	
	
	
	var iErrorCode = parseInt(nodeError.getAttribute("CODE"));
	var sMessage = nodeError.getAttribute("MESSAGE");
	
	
	if (iErrorCode == 1301)
	{
		alert("Your session has expired (probably due to inactivity within the browser).  Please restart your browser and log back in.");
		gbSessionExpired = true;
		
		window.top.document.location = "logout.aspx";
		
		return;
	}
	
	
	sError = sMessage;
	
	if (fpErrorFunctionCallback != null)
	{	
		fpErrorFunctionCallback(sError);
	}
	else
	{
		alert(sError);
	}
}


function IsServerActionResponseReady(xhrRequest)
{
	return xhrRequest.readyState == 4;
}


var DB_TRUE = "T";
var DB_FALSE = "F";

function BoolToString(bBool)
{
	return (bBool == true ? "T" : "F");
}

function StringToBool(sBoolValue)
{
	return sBoolValue == "T";
}











function ForEachXmlNode(xmlNode, bPostOrder, fncCallBack, objParam1, objParam2, objParam3, objParam3, objParam4)
{
	if( xmlNode == null )
	{
		return;
	}	

	if( bPostOrder == false )
	{
		MyEval(fncCallBack, xmlNode, arOptionArguments, iFirstOptionalArg);
	}

	
	ForEachXmlNodeWithArguments(xmlNode.firstChild, bPostOrder, bRecurse, fncCallBack, arOptionArguments, iFirstOptionalArg);
	
	if( bPostOrder == true )
	{
		fncCallBack(xmlNode, objParam1, objParam2, objParam3, objParam4)
	}
	
	ForEachXmlNodeWithArguments(xmlNode.nextSibling, bPostOrder, bRecurse, fncCallBack, arOptionArguments, iFirstOptionalArg);
}









function ForEachXmlSiblingNode(xmlNode, fncCallBack, objParam1, objParam2, objParam3, objParam4)
{
	if( xmlNode == null )
	{
		return;
	}	
	var iLen = xmlNode.childNodes.length;
	for( var i=0; i<iLen; i++ )
	{
		fncCallBack(xmlNode.childNodes[i], objParam1, objParam2, objParam3, objParam4);
	}
}
















function AssociateObjectWithEvent(obj, fncMethod, objOptParam1, objOptParam2)
{
	function ourevent(e) 
	{ 
		e = e||window.event; 
		return obj[fncMethod](e, this, objOptParam1, objOptParam2);
	}
	
	return ourevent;
}











function AssociateObject(obj, fncMethod, objOptParam1, objOptParam2, objOptParam3, objOptParam4, objOptParam5, objOptParam6)
{
	function fOurs() 
	{ 
		return obj[fncMethod](objOptParam1, objOptParam2, objOptParam3, objOptParam4, objOptParam5, objOptParam6);
	}
	
	return fOurs;
}


function AssociateObjectParameterPassThrough( obj, fncMethod, objOptParam1, objOptParam2, objOptParam3, objOptParam4, objOptParam5, objOptParam6, objOptParam7, objOptParam8)
{
	function fOurs(param1) 
	{ 
		if( param1 )
		{
			return obj[fncMethod](param1, objOptParam1, objOptParam2, objOptParam3, objOptParam4, objOptParam5, objOptParam6, objOptParam7, objOptParam8);
		}
		return obj[fncMethod](null, objOptParam1, objOptParam2, objOptParam3, objOptParam4, objOptParam5, objOptParam6, objOptParam7, objOptParam8);
	}
	
	return fOurs;
}









function GetCallBackFunction(fncMethod, objOptParam1, objOptParam2)
{
	function fncOur()
	{
		return fncMethod(objOptParam1, objOptParam2);
	}
	return fncOur;
}








function CallAsynchronously( fncFunction, fncBeginUserWait, fncEndUserWait)
{
	window.setTimeout(GetAsynchronousFunction(fncFunction, fncBeginUserWait, fncEndUserWait ), 1);
}







function GetAsynchronousFunction( fncFunction, fncBeginUserWait, fncEndUserWait )
{
	
	if( fncBeginUserWait != null )
	{
		fncBeginUserWait();
	}

	function AsyncFunction()
	{
		fncFunction();
		
		if( fncEndUserWait != null )
		{
			fncEndUserWait();
		}
	}
		
	return AsyncFunction;

}






function XmlStringToXmlDoc(sXML)
{	
	var xmlDoc;
	if(document.implementation && document.implementation.createDocument) 
	{
		
		if(DOMParser)
		{
			var xmlDocParser = new DOMParser();
			xmlDoc = xmlDocParser.parseFromString(sXML,"text/xml"); 
		}
		else
		{
			
			xmlDoc = ExecuteServerAction("XMLHelpersReturnXML", sXML, false, null);
		}	
	}
	else if(window.ActiveXObject) 
	{
		
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.loadXML(sXML);
	}
			
	return xmlDoc;
}



function XmlNodeToXmlString(xmlNode)
{
	if( xmlNode.xml )
	{
		return xmlNode.xml;
	}
	else 
	{
		var xsSerialize = new XMLSerializer();
		var sXml = xsSerialize.serializeToString(xmlNode);
		return sXml;
	}
}






function BuildIDXML(sID)
{
	
	var sbXML = new CStringBuilderXml(false);
    
    
	sbXML.AppendStartTag("ID:IDS xmlns:ID=\"http://www.dovico.com/schemas/id.xsd\"");
	
	sbXML.AppendStartTag ("ID");
	
	sbXML.Append(sID);
	
	sbXML.AppendEndTag("ID");
	sbXML.AppendEndTag("ID:IDS");

	
	return sbXML.GetXml();
}


function BuildIDSXML(sIDs)
{
	
	var sbXML = new CStringBuilderXml(false);
    
    
	sbXML.AppendStartTag("ID:IDS xmlns:ID=\"http://www.dovico.com/schemas/id.xsd\"");
	
	arrIDs = sIDs.split(",");
	for(iCount =0; iCount < arrIDs.length; iCount ++)
	{
		
		sbXML.AppendStartTag ("ID");
	
		
		sbXML.Append(arrIDs[iCount]);
		
		
	
	sbXML.AppendEndTag("ID");
	}
	
	sbXML.AppendEndTag("ID:IDS");

	
	return sbXML.GetXml();
}

function BuildGetInfoXml(sID)
{
	
	var sbXML = new CStringBuilderXml(false);
    
    
	sbXML.AppendStartTag("GetInfo:ID xmlns:GetInfo=\"http://www.dovico.com/schemas/getinfo.xsd\"");
	
	
	sbXML.Append(sID);
	
	sbXML.AppendEndTag("GetInfo:ID");

	
	return sbXML.GetXml();
}

function GetScrollPosY()
{
	
	if( window.pageYOffset != undefined )
	{
		iScreenTop = window.pageYOffset;
	}
	else if( document.body.scrollTop  != undefined)
	{
		iScreenTop = document.body.scrollTop;
	}	
	
	return iScreenTop;
}




function GetScrollPosX(){
	var iScreenLeft=0;
	
	
	if(window.pageXOffset!=undefined){iScreenLeft=window.pageXOffset;}
	else if(document.body.scrollLeft!=undefined){iScreenLeft=document.body.scrollLeft;}	
	
	return iScreenLeft;
}


function ScrollToPos(xPos, yPos)
{
	window.scrollTo(xPos, yPos);
}

var giAdjustX = 1;
var giAdjustY = 2;

function FindParentOffsetTopValue(objStart){
	var iReturnVal=0;
	
	
	var objLoop=objStart;
	while(objLoop!=null){
		iReturnVal+=objLoop.offsetTop; 
		objLoop=objLoop.offsetParent; 
	} 
	
	
	return iReturnVal;
}







function ScrollObjectIntoView(obj, iAdjustCondition){
	var iScrollY=0;
	var iScrollX=0;
	var iScreenLeft=0;
	var iScreenRight=0;
	var iScreenTop=0;
	var iScreenBottom=0;
	var iCtrlHeight=obj.clientHeight;
	var iCtrlWidth=obj.clientWidth;
	var bScrollY=false;
	var bScrollX=false;

	
	if (typeof(iAdjustCondition) == "undefined") {iAdjustCondition = giAdjustX | giAdjustY;}
	
	
	var objLoop=obj;
	while(objLoop!=null){
		iScrollY+=objLoop.offsetTop;
		iScrollX+=objLoop.offsetLeft;
		objLoop=objLoop.offsetParent;
	} 

	
	iScreenTop=GetScrollPosY();
	iScreenLeft=GetScrollPosX();
	
	
	if(window.innerHeight!=undefined){iScreenBottom=(iScreenTop+window.innerHeight);}
	else if(document.body.clientHeight!=undefined){iScreenBottom=(iScreenTop+document.body.clientHeight);}
	
	
	if(window.innerWidth!=undefined){iScreenRight=(iScreenLeft+window.innerWidth);}
	else if(document.body.clientWidth!=undefined){iScreenRight=(iScreenLeft+document.body.clientWidth);}

	
	
	if((iScrollX<iScreenLeft || (iScrollX+iCtrlWidth)>iScreenRight) && iAdjustCondition & giAdjustX){
		
		
		var iScreenWidth=(iScreenRight-iScreenLeft);
		iScrollX=(iScrollX-((iScreenWidth-iCtrlWidth)/2));
		bScrollX=true; 
	} 
	
	
	
	if((iScrollY<iScreenTop || (iScrollY+iCtrlHeight)>iScreenBottom) && iAdjustCondition & giAdjustY){
		
		
		var iScreenHeight=(iScreenBottom-iScreenTop);
		iScrollY=(iScrollY-((iScreenHeight-iCtrlHeight)/2));
		bScrollY=true; 
	} 
	
	
	if((bScrollX==true)||(bScrollY==true)){ScrollToPos(iScrollX,iScrollY);}
}


function FindInArray( arArray, obj )
{
	var iLen = arArray.length;
	for( var i=0; i<iLen; i++ )
	{
		if( arArray[i] == obj )
		{
			return i;
		}
	}
	return -1;
}


function RemoveFromArray( arArray, obj )
{
	var iIndex = FindInArray(arArray, obj);
	
	
	if( iIndex >= 0 )
	{
		arArray.splice(iIndex, 1);	
	}
}

function UpdateCommandButtonOnSelectChanged(sSelectID, sButtonID)
{
	
	var refButton = document.getElementById(sButtonID);
	
	if (AreAllOptionsSelected(sSelectID))
	{
		
		refButton.value = "Unselect All";
	}
	else
	{
		refButton.value = "Select All";
	}	
}


function AreAllOptionsSelected(sSelectID)
{
	
	var refListBox = document.getElementById(sSelectID);
	
	
	if(refListBox.selectedIndex ==-1)
	{
		return false;
	}
	
	
	var iOptionCount = refListBox.length;
	
	
	for(var iOption = 0; iOption < iOptionCount; iOption++)
	{
		
		if(!refListBox.options[iOption].selected)
		{
			return false;
		}	
	}
	
	
	return true;
}


function SelectAllOptions(sSelectID, sCommandButtonID)
{
	var bSelect;
	
	
	if (AreAllOptionsSelected(sSelectID))
	{
		
		bSelect = false;	
	}
	else
	{
		bSelect = true;
	}
	
	
	var refSender = document.getElementById(sCommandButtonID);

	
	var refListBox = document.getElementById(sSelectID);
	
	var iOptionCount = refListBox.length;
	
	
	if(bSelect)
	{
		
		refSender.value = "Unselect All";
		
		
		for(var iOption = 0; iOption < iOptionCount; iOption++)
		{
			
			refListBox.options[iOption].selected = bSelect;							
		}
	}
	else
	{
		
		refSender.value = "Select All";
		
		refListBox.selectedIndex = -1;
	}			
}	


function GetDropdownSelectedValue(ddlDropdown)
{
	if (ddlDropdown.options.length == 0) {return "";}
	
	return ddlDropdown.options[ddlDropdown.selectedIndex].value;
}


function SetDropdownSelectValue(ddlDropdown, sValue)
{
	
	var optOptions = ddlDropdown.options;
	var iIndex, iCount = optOptions.length;
	
	
	for (iIndex=0;iIndex<iCount;iIndex++)
	{
		var optOption = optOptions[iIndex];
		
		if (optOption.value == sValue)
		{
			ddlDropdown.selectedIndex = iIndex;
			return true;
		}
	}
	
	return false;
}


function RemoveOptionsFromSelect(objSelect)
{
	
	var iCount = objSelect.options.length;
	
	
	while (iCount --)
	{
		objSelect.options[0] = null;
	}
}


function RemoveOptionFromSelect(objSelect, iDeleteIndex)
{
	objSelect.options[iDeleteIndex] = null;
}


function AddOptionToSelect(objSelect, iIndex, sValue, sText)
{
	
	objSelect.options[iIndex] = new Option(sText, sValue);
}


function GetSelectionsFromSelect(objSelect)
{
	
	var arrSelected = new Array();
	var iSelected = 0;
	
	
	var arrOptions = objSelect.options;
	
	
	var iIndex, iCount = arrOptions.length;
	for (iIndex=0;iIndex<iCount;iIndex++)
	{
		var optOption = arrOptions[iIndex];
		
		
		if (optOption.selected == true)
		{
			
			arrSelected[iSelected] = optOption.value;
			iSelected ++;
		}
	}
	
	return arrSelected;
}


function ConvertArrayToXMLString(arrValues,sXMLTagName)
{
	var sbXML = new CStringBuilderXml(false);
	
	
	for(iIndex =0; iIndex < arrValues.length; iIndex++)
	{
		sbXML.AppendStartTag(sXMLTagName);
		sbXML.Append(arrValues[iIndex]);
		sbXML.AppendEndTag(sXMLTagName);
	}
	
	
	return sbXML.GetXml();
}




function AreNonGroupItemsSelected(lstList){
	var iCountTo=lstList.options.length;
	var bSel=false;
	
	
	for(var iCounter=0;iCounter<iCountTo;iCounter++){
		
		if((lstList.options[iCounter].selected)&&(lstList.options[iCounter].value!="-100")){
			bSel=true;
			break;
		} 
	} 
	
	
	return bSel;
}




function AreAnyCheckBoxesChecked(aCheckBoxIDs){
	var bReturnVal=false;
	var chkCheckBox=null;
	var iCountTo=aCheckBoxIDs.length;

	
	for(var iCounter=0;iCounter<iCountTo;iCounter++){
		
		chkCheckBox=document.getElementById(aCheckBoxIDs[iCounter]);
		if(chkCheckBox && chkCheckBox.checked){
			bReturnVal=true;
			break;
		} 
	} 
	
	
	return bReturnVal;
}




function SelectionChanged(sTargetListID,sSelectAllButtonID){
	
	var refButton=document.getElementById(sSelectAllButtonID);

	
	if(AreAllOptionsSelected(sTargetListID)){refButton.value="Unselect All";}
	else{refButton.value="Select All";} 
}


function GetAppliedStyle( obj, styleProperty )
{
	var styleReturn;
	if( obj.currentStyle )
	{
		styleReturn = obj.currentStyle[styleProperty];
	}
	else
	{
		styleReturn = document.defaultView.getComputedStyle( obj,null).getPropertyValue( styleProperty);
	}
	
	return styleReturn;
}




function IsObjectVisible( objDom )
{
	
	if( GetAppliedStyle(objDom, "display") == "none" )
	{
		return false;
	}
	if( GetAppliedStyle( objDom, "visibility") == "hidden" )
	{
		return false;
	}
		
	
	var objParent = objDom.parentNode;
	
	
	if( objParent == document.body )
	{
		return true;
	}
	
	
	return IsObjectVisible(objParent);
}



function SaveWindowWidth(winFrameset, sSaveID)
{
	var iWidth;
	
	if (winFrameset.innerWidth)
	{
		iWidth = winFrameset.innerWidth;
	}
	else
	{
		iWidth = winFrameset.document.body.clientWidth;
	}
	
	SetUserPrefsCookie(GetWindowSizeKey(sSaveID) + "W", iWidth.toString());
}


function SaveWindowHeight(winWindow, sSaveID)
{
	SaveWindowOrFramesetHeight(winWindow, sSaveID, true);
}


function SaveFramesetHeight(winWindow, sSaveID)
{
	SaveWindowOrFramesetHeight(winWindow, sSaveID, false);
}




function SaveWindowOrFramesetHeight(winWindow, sSaveID, bWindow)
{
	var iHeight;
	
	
	if (winWindow.innerHeight)
	{
		iHeight = winWindow.innerHeight;
	}
	else
	{
		
		iHeight = bWindow ? winWindow.document.body.offsetHeight : winWindow.document.body.clientHeight;
	}
	
	SetUserPrefsCookie(GetWindowSizeKey(sSaveID) + "H", iHeight.toString());
}


function GetWindowSizeKey(sSaveID)
{
	return "LWS" + sSaveID;
}



var g_regWhitespace = /[\s\xA0]+/g;


function TrimString(sString) 
{
	return sString.replace(/^[\s\xA0]+/g, '').replace(/[\s\xA0]+$/g, '');
}
function RemoveAllWhitespace( sString )
{
	return sString.replace(/[\s\xA0]+/g, '');
}



function TrimStringEx(sWorkingString, sTrim)
{
	var rxTrim = new RegExp("[" + sTrim + "]*");
	
	return sWorkingString.replace(rxTrim, "");
}


function ParseXmlDate(sDateString)
{
	
	var arFirstSplit = sDateString.split("-");
	
	
	if( arFirstSplit.length != 3 )
	{
		return null;
	}

	
	var arSecondSplit = arFirstSplit[2].split("T");
	if( arSecondSplit.length != 2 )
	{
		return null;
	}
	
	
	var arThirdSplit = arSecondSplit[1].split(":");
	if( arThirdSplit.length != 3 )
	{
		return null;
	}
	
	
	
	var iYear = parseInt(arFirstSplit[0], 10);
	var iMonth = parseInt(arFirstSplit[1], 10);
	var iDate = parseInt(arSecondSplit[0], 10);
	var iHour = parseInt(arThirdSplit[0], 10);
	var iMinute = parseInt(arThirdSplit[1], 10);
	var iSecond = parseInt(arThirdSplit[2], 10);
	
	
	if( isNaN(iYear))	{ return null;}
	if( isNaN(iMonth))	{ return null;}
	if( isNaN(iDate))	{ return null;}
	if( isNaN(iHour))	{ return null;}
	if( isNaN(iMinute))	{ return null;}
	if( isNaN(iSecond))	{ return null;}
	
	
	var dtReturn = new Date(iYear, iMonth-1, iDate, iHour, iMinute, iSecond);
	
	return dtReturn;
}


function DatesHaveSameDay(dtFirst, dtSecond)
{
	if( dtFirst.getFullYear() == dtSecond.getFullYear() )
	{
		if( dtFirst.getMonth() == dtSecond.getMonth() )
		{
			if( dtFirst.getDate() == dtSecond.getDate() )
			{
				return true;
			}
		}
	}
	return false;
}




function IsValidWindow(winTestWindow)
{
	var bValid = false;
	try
	{
		winTestWindow.document.createElement("P");
		bValid = true;
	}
	catch (err){}
	
	return bValid;
}





function GetFocusManagerFrame(objParent)
{
	
	
	if( objParent.gFocusManager )
	{
		return objParent;
	}
	
	
	var iFrames = objParent.frames.length;
	for( var i=0; i<iFrames; i++ )
	{
		var objNextChild = objParent.frames[i];
		
		
		var objFound = GetFocusManagerFrame(objNextChild);
		if( objFound != null )
		{
			
			return objFound;
		}
	}
}


function GetFocusManager()
{
	
	
	var objFocusWindow = GetFocusManagerFrame(window.top);
	
	return objFocusWindow.gFocusManager;	
}



function GetNofityFocusManagerFnc()
{
	
	
	var objFocusWindow = GetFocusManagerFrame(window.top);
	
	return objFocusWindow.NotifyFocusManager;
}




function RemoveChildNodes(aObject){while(aObject.firstChild!=null){aObject.removeChild(aObject.firstChild);}}



var LIST_NO_SEL=-1;
var LIST_ID_NO_SEL="-1";





function FindListItemIndex(lstSelectCtrl,sID){
	var iIndex=LIST_NO_SEL;
	
	
	var iCountTo=lstSelectCtrl.length;
	for(var iCounter=0;iCounter<iCountTo;iCounter++){
		
		if(lstSelectCtrl.options[iCounter].value==sID){iIndex=iCounter;break;}
	} 
	
	
	return iIndex;
}




function GetSelectedListItemID(lstSelectCtrl){
	
	
	var iSelIndex=lstSelectCtrl.selectedIndex;
	if(iSelIndex!=LIST_NO_SEL){return lstSelectCtrl.options[iSelIndex].value;}else{return LIST_ID_NO_SEL;}
}




function GetSelectedListItemCaption(lstSelectCtrl){return GetListItemCaption(lstSelectCtrl,GetSelectedListItemID(lstSelectCtrl));}




function GetListItemCaption(lstSelectCtrl,sID){
	var sReturnVal="";
	var iIndex=LIST_NO_SEL;

	
	if((sID!="")&&(sID!=LIST_ID_NO_SEL)){
		
		if((iIndex=FindListItemIndex(lstSelectCtrl,sID))!=LIST_NO_SEL){sReturnVal=lstSelectCtrl.options[iIndex].text;}
	} 
	
	
	return sReturnVal;
}

function DefaultTime(sControlName,sTimeSeperator) 
{ 
	var Start = new Date(); 
	var iStartHours = Start.getHours();
	var iStartMinutes = Start.getMinutes(); 
	var s = Start.getMinutes(); 
	
	if(sTimeSeperator == null)
	{
		sTimeSeperator = ":";
	}
	
	var sTime = FormatTime(iStartHours, iStartMinutes,sTimeSeperator); 

	if(document.getElementById(sControlName).value == "")
	{
		document.getElementById(sControlName).value = sTime;
	}

}
		
function FormatTime(iHours, iMinutes,sTimeSeperator) 
{ 
	var sTime; 
	if (iHours < 10) 
	{
		sTime = "0" + String(iHours);
	} 
	else 
	{
		sTime = String(iHours);
	} 
	
	sTime += sTimeSeperator; 
	
	if (iMinutes < 10) 
	{
		sTime += "0" + String(iMinutes);
	} 
	else 
	{
		sTime += String(iMinutes);
	} 
	return sTime; 
}





function GetParentObject(objChild,sParentName){
	
	var objParent=objChild;
	while((objParent.tagName!=sParentName)&&(objParent.parentNode!=null)){objParent=objParent.parentNode;}
	return objParent; 
}


function AddDaysToDate( dtDate, iDaysToAdd )
{
		var dtDay = dtDate.getDate();
		dtDay = dtDay + iDaysToAdd;
		dtDate.setDate(dtDay);
}
function CopyDate( dtDate )
{
	var dtRet = new Date();
	dtRet.setTime( dtDate.getTime());
	return dtRet;
}
function StripTime( dtDate )
{
	
	dtDate.setHours(0, 0, 0, 0);
}


function CancelEvent( evt )
{
	if (IsBrowserIE())
	{
		evt.cancelBubble = true;
	    evt.returnValue = false;
	}
	else
	{
		if (evt.stopPropagation) {evt.stopPropagation();}

		

	}
}



function HideContextMenuOnMouseDown(evtMouseDown)
{
	
	
	if (evtMouseDown == null)
	{
		evtMouseDown = window.event;
	}
	
	var bRightClick;
	
	
	if (IsBrowserIE())
	{
		bRightClick = evtMouseDown.button == 2;
	}
	
	else
	{
		bRightClick = evtMouseDown.button == 3;
	}
	
	
	if (bRightClick == false)
	{
		HideMenu();
	}
}

function EllipsisString( sString, iMaxLength, sEllipsis )
{
	if( sEllipsis == null )
	{
		sEllipsis = "...";
	}
	
	if( sString.length > iMaxLength )
	{
		return sString.substring( 0, iMaxLength) + sEllipsis;
	}
	
	return sString;
}



function InsertNewElementAt( objParent, sElementTagName, iInsertAt )
{
	var objInsert = 	objParent.ownerDocument.createElement( sElementTagName );
	var iChildren = objParent.childNodes.length;
	
	var iInsertBeforeIndex = iInsertAt +1;
	if( iInsertAt == -1 || iInsertBeforeIndex == iChildren)
	{
		objParent.appendChild( objInsert );	
	}
	else
	{
		var objInsertBefore = objParent.childNodes[iInsertBeforeIndex]
		objParent.insertBefore( objInsert, objInsertBefore);
	}
	return objInsert;
}


function FormatErrorMessage( sErrorMessage, sFieldName )
{
	var re =   /%s/g;
	
	return sErrorMessage.replace(re, sFieldName);
}


function DisableCalculator(sAmountTextBoxID)
{
    var oimgCalculator = document.getElementById("img" + sAmountTextBoxID + "Calculator"); 
    oimgCalculator.onclick = null;
    oimgCalculator.disabled = true;
}



function SetStyleForReadOnlyTextBox(sControlID, bIsReadOnly, iTabIndex)
{
    
    var oControl = document.getElementById(sControlID);
    
    
    oControl.style.backgroundColor = bIsReadOnly ? "#D4CFC9" : "";
    
    
    
    oControl.tabIndex = bIsReadOnly ? -1 : iTabIndex;
}




function DisplayDateFormatError(sFieldName)
{
    alert(FormatCommonErrorMessage(IDS_VALIDATE_DATE, sFieldName));
}

function DisplayTimeFormatError(sFieldName)
{
    alert(FormatCommonErrorMessage(IDS_VALIDATE_TIME, sFieldName));
}

function FormatCommonErrorMessage(sErrorMessage, sFieldName)
{
    return sErrorMessage.replace("{0:G}", "\"" + sFieldName + "\"");
}
