var preloadedImages = null;
var httpRequestHandler = null;
var xmlPageDefs = null;
var xmlDefNameArray = new Array();
var xmlDefArray = new Array();

var dbBoolean = new Array();
dbBoolean[true] = "Y";
dbBoolean[false] = "N";

var rootPage = null;

var DEFAULT_LINER ="TOTE";
var DEFAULT_VAL_MSG = "*";
// ---
// Array support for the push method in IE 5
Array.prototype.push = ArrayPush;
function ArrayPush(value){
	this[this.length] = value;
}
// ---
function trim (s)
{   while (s.substring(0,1) == ' '){
        s = s.substring(1,s.length);
    }
    while (s.substring(s.length-1,s.length) == ' '){
        s = s.substring(0,s.length-1);
    }
    return(s);
}

function debugMsg(pFunctionName, pMessage) {
	if ( (typeof(debug) != "undefined") && (debug) ) {
		alert("PageCode: " + pageCode + "\nFunction: " + pFunctionName + "\n\n" +	pMessage);
	}
}

function resizeToTargetResolution() {
	if ( (typeof(targetResolution) != "undefined") && (targetResolution) ) {
		window.resizeTo(1024, 768);
	}	
}

function getDefinitionNode(pNodeName, pIndex) {
	var definitionNode = null; 
	if (typeof(pIndex) != 'undefined') {
		definitionNode = xmlDefArray[pIndex].selectSingleNode(xmlDefNameArray[pIndex] + "/" + pNodeName);
	}
	else
  	definitionNode = xmlPageDefs.selectSingleNode(pageCode + "/" + pNodeName);
		
  if (definitionNode  == null) 
		alert("getDefinitionNode: Definition Node <" + pNodeName + "> could not be found.")
	else
		debugMsg("getDefinitionNode", "DefNodeName: " + pNodeName + "\nDefNodeXML:\n\n" + definitionNode.xml);
	
	return definitionNode;
}

function preloadImages() {
	var imagesNode = getDefinitionNode("preloadedImages/IMAGES");
	
	preloadedImages = new Array();
	for (i = 0; i < imagesNode.childNodes.length; i++) {
		img = imagesNode.childNodes.item(i);
		preloadedImages[i] = new Image();
		preloadedImages[i].src = img.getAttribute("url");
	}
}

function initializePage(){
	resizeToTargetResolution();
	httpRequestHandler = new XMLHttpRequestHandler();

	var xmlFilesPath = "/XML/";
	if (typeof(rootURL) != 'undefined') 
		xmlFilesPath = rootURL + xmlFilesPath
	else
		xmlFilesPath = ".." + xmlFilesPath;

	if ((typeof(pageCode) != 'undefined') && (pageCode != "")) {
		if (httpRequestHandler.submit(xmlFilesPath + pageCode + ".xml"))  
		  xmlPageDefs = httpRequestHandler.xmlResult;

		debugMsg("initializePage", "Page Defs XML:\n\n" + xmlPageDefs.xml);
		if (xmlPageDefs == null) {
			alert("initializePage: Page Definitions could not be loaded.");
			return;
		}
		
	}
	
	for (var i = 0; i < xmlDefNameArray.length; i++ ) {
		if (httpRequestHandler.submit(xmlFilesPath + xmlDefNameArray[i] + ".xml")) 
		  xmlDefArray[i] = httpRequestHandler.xmlResult;
	}
	
	//preloadImages();
}

function CheckRequiredFields(idList,checkEmpty){
	var strRes=Array();
	for (var i=0;i<idList.length;i++){
		var elem = document.getElementById(idList[i]);
		if (checkEmpty){
			if (trim(elem.value)=="" )
			  strRes.push(elem);			  
		}else{
			if (trim(elem.value)!="" )
			  strRes.push(elem);			  			
		}
	}	
	if ((strRes.length>0)&&(checkEmpty)){
  	  if (CheckRequiredFields.arguments.length==2) //solo muestra la alerta si estan los 2 argumentos 
	  alert("You must fill all the required fields");
	  try{strRes[0].focus();}catch (e){};
    }
	return strRes;
}

function disableControl(pControl) {//ST24993/20070522/20070621/20070625
	function changeControlStyle(pControl, pStyleTo){
		pControl.readOnly = true;
		if ( (pControl.className.indexOf("textDisabled") > -1 ) || (pControl.className.indexOf("noTextDisabled") > -1 ) ) {
			pControl.lastDisabled = true;	
		}		
		if (pControl.className.indexOf("textEnabled") > -1 ) {
			pControl.lastDisabled = false;
			pControl.className = pControl.className.replace(/\btextEnabled\b/,pStyleTo);
		}else {			
			if (pControl.className.indexOf(pStyleTo) < 0) {			
				if (pControl.className != "" ) {						
					pControl.lastDisabled = false;
					pControl.className += " " + pStyleTo;
				}else {
					pControl.lastDisabled = false;
					pControl.className += pStyleTo;
				}									
			}
		}			
	}

	if (typeof(pControl.disabled) != "undefined")	{
		if	(	( ( pControl.tagName.toUpperCase() == "INPUT" ) && ( pControl.type.toUpperCase() == "TEXT" ) ) ||
					( ( pControl.tagName.toUpperCase() == "INPUT" ) && ( pControl.type.toUpperCase() == "PASSWORD" ) ) ||	
				  	( pControl.tagName.toUpperCase() == "TEXTAREA" ) ) {
			changeControlStyle(pControl, "textDisabled");
		} else {
			if	(	(pControl.tagName.toUpperCase() == "OPTION") || (pControl.tagName.toUpperCase() == "SELECT")	) {
				changeControlStyle(pControl, "noTextDisabled");	
				pControl.disabled = true;					
			} else {//20070703
				if (	(	( pControl.tagName.toUpperCase() == "INPUT" ) && ( pControl.type.toUpperCase() == "CHECKBOX" ) ) ||
							( pControl.tagName.toUpperCase() == "LABEL" ) ) {
					pControl.lastDisabled	= pControl.disabled;
					pControl.disabled = true;
				} else if (	(pControl.tagName.toUpperCase() == "INPUT") && (pControl.type.toUpperCase() == "BUTTON") && (pControl.setDisabled) ) {
					pControl.lastDisabled	= pControl.disabled;
					pControl.setDisabled(true);
				} else {
					pControl.disabled = true;
				}
			}
		}
	}
}

function enableControl(pControl, pCheckLastDisabled) {//ST24993/20070522/20070621/20070625
	function changeControlStyle(pControl, pStyleTo){
		pControl.readOnly = false;			
		if (pControl.className.indexOf("textDisabled") > -1 ) {
			pControl.lastDisabled = true;				
			pControl.className = pControl.className.replace(/\btextDisabled\b/,pStyleTo);
		}else {	
			if (pControl.className.indexOf("noTextDisabled") > -1 ) {				
				pControl.lastDisabled = true;							
				pControl.className = pControl.className.replace(/\bnoTextDisabled\b/,pStyleTo);
			}else {		
				if (pControl.className.indexOf(pStyleTo) < 0) {			
					pControl.lastDisabled = true;							
					if (pControl.className != "" ) {
						pControl.className += " " + pStyleTo;
					}else {							
						pControl.className += pStyleTo;
					}									
				}
			}			
		}
	}
	function changeControlStyleCLD(pControl, pStyleTo){
		if (pControl.lastDisabled == false) {
			pControl.readOnly = false;			
			if (pControl.className.indexOf("textDisabled") > -1 ) {
				pControl.lastDisabled = true;				
				pControl.className = pControl.className.replace(/\btextDisabled\b/,pStyleTo);
			}else {	
				if (pControl.className.indexOf("noTextDisabled") > -1 ) {				
					pControl.lastDisabled = true;							
					pControl.className = pControl.className.replace(/\bnoTextDisabled\b/,pStyleTo);
				}else {		
					if (pControl.className.indexOf(pStyleTo) < 0) {			
						pControl.lastDisabled = true;							
						if (pControl.className != "" ) {
							pControl.className += " " + pStyleTo;
						}else {							
							pControl.className += pStyleTo;
						}									
					}
				}			
			}
		}			
	}


	var lastDisabled = false;
	var funcToUse = null;
	if ( pCheckLastDisabled ) {
		funcToUse = changeControlStyleCLD;
	}else {
		funcToUse = changeControlStyle;			
	}
	
	if (typeof(pControl.disabled) != "undefined")	{
		if	(	( ( pControl.tagName.toUpperCase() == "INPUT" ) && ( pControl.type.toUpperCase() == "TEXT" ) ) ||
					( ( pControl.tagName.toUpperCase() == "INPUT" ) && ( pControl.type.toUpperCase() == "PASSWORD" ) ) ||	
				  	( pControl.tagName.toUpperCase() == "TEXTAREA" ) ) {
			funcToUse(pControl, "textEnabled");
		} else {
			if	(	( pControl.tagName.toUpperCase() == "OPTION") ||
						( pControl.tagName.toUpperCase() == "SELECT")	) {
				lastDisabled = pControl.lastDisabled;
				funcToUse(pControl, "textEnabled");
				if ( pCheckLastDisabled == true ){
					if (lastDisabled == false) {
						pControl.disabled = false;		
					}
				} else {
					pControl.disabled = false;	
				}
			} else {
				if (	(	( pControl.tagName.toUpperCase() == "INPUT" ) && ( pControl.type.toUpperCase() == "CHECKBOX" ) )||
							( pControl.tagName.toUpperCase() == "LABEL" ) ) {

					if ( pCheckLastDisabled == true ){//revisando el lastDisabled
						pControl.disabled = pControl.lastDisabled;						
					} else {
						pControl.disabled = false;	
					}								
				} else if (	(pControl.tagName.toUpperCase() == "INPUT") && (pControl.type.toUpperCase() == "BUTTON") && (pControl.setDisabled) ) {
					if ( pCheckLastDisabled == true ) { //revisando el lastDisabled
						pControl.setDisabled(pControl.lastDisabled);
					} else {
						pControl.setDisabled(false);	
					}
				} else {														
					pControl.disabled = false;
				}
			}
		}
	}

}


function disableChildControls(pContainer) {
	var arrInputs = pContainer.getElementsByTagName("input");
	var arrSelects = pContainer.getElementsByTagName("select");
  var arrTextAreas = pContainer.getElementsByTagName("textarea");
	var arrLabels = pContainer.getElementsByTagName("label");

	for (var i = 0; i < arrInputs.length; i++) {
		disableControl(arrInputs[i]);
	}
	
	for (var i = 0; i < arrSelects.length; i++) {
		disableControl(arrSelects[i]);
	}

	for (var i = 0; i < arrTextAreas.length; i++) {
		disableControl(arrTextAreas[i]);
	}
	
	for (var i = 0; i < arrLabels.length; i++) {
		disableControl(arrLabels[i]);
	}
}

function enableChildControls(pContainer, pCheckLastDisabled) {//ST24993/20070625
	var arrInputs = pContainer.getElementsByTagName("input");
	var arrSelects = pContainer.getElementsByTagName("select");
  var arrTextAreas = pContainer.getElementsByTagName("textarea");
	var arrLabels = pContainer.getElementsByTagName("label");

	for (var i = 0; i < arrInputs.length; i++) {
		enableControl(arrInputs[i], pCheckLastDisabled);
	}
	
	for (var i = 0; i < arrSelects.length; i++) {
		enableControl(arrSelects[i], pCheckLastDisabled);
	}

	for (var i = 0; i < arrTextAreas.length; i++) {
		enableControl(arrTextAreas[i], pCheckLastDisabled);
	}

	for (var i = 0; i < arrLabels.length; i++) {
		enableControl(arrLabels[i], pCheckLastDisabled);
	}	
}

function clearChildControls(pContainer) {
	var arrInputs = pContainer.getElementsByTagName("input");
	var arrSelects = pContainer.getElementsByTagName("select");
  var arrTextAreas = pContainer.getElementsByTagName("textarea");

	for (var i = 0; i < arrInputs.length; i++) {
		arrInputs[i].value = "";
	}
	
	for (var i = 0; i < arrSelects.length; i++) {
		arrSelects[i].value = "";
	}

	for (var i = 0; i < arrTextAreas.length; i++) {
		arrTextAreas[i].value = "";
	}
}

function redirect(pURL) {
	location.href = pURL;
}

/*
	- Written by Jonathan Snook, http://www.snook.ca/jonathan
	- Add-ons by Robert Nyman, http://www.robertnyman.com
	- Revised to support looking for multiple class names,
	  no matter in which order they're applied to the element
*/

function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

/*
	Examples of how to call the function:
	
	To get all a elements in the document with a "info-links" class:
    getElementsByClassName(document, "a", "info-links");
    
	To get all div elements within the element named "container", with a "col" and a "left" class:
    getElementsByClassName(document.getElementById("container"), "div", ["col", "left"]);
*/

function drawCopyright() {
	document.write('<div id="FootBar">Copyright &copy; 2007 Trans-I Technologies Inc. All Rights Reserved.</div>');
}

function drawOnlyHeader(){
	document.write(	'	  <table width="100%" border="0" cellspacing="0" cellpadding="0">\n'+
					'    <tr> \n'+
					'      <td align="left"><IMG src="'+rootPage+'/common/Images/tote_logo.jpg"></td>\n'+
					'      <td align="right"><IMG height=45 src="'+rootPage+'/common/Images/e-servicenter_logo.jpg" width=209></td>\n'+
					'    </tr>\n'+
					'  </table>');
}

function drawHeader(){
	document.write(	'			<table width="100%" border="0" cellspacing="0" cellpadding="0">\n' +
									'			<tr>\n' +
									'				<td rowspan="2"><img src="'+rootPage+'/Common/Images/tote_logo.jpg" /></td>\n' +
									'				<td>&nbsp;</td>\n' +
									'				<td align="right" valign="top"><img src="'+rootPage+'/Common/Images/e-servicenter_logo.jpg" /></td>\n' +
									'			</tr>\n' +
									'			<tr>\n' +
									'				<td colspan="2" valign="bottom">\n' +
									'					<ul class="HeaderLinks">\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Home/Home.dll">Home</a></li>\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Home/Home.dll/News">News</a></li>\n' +									
									'						<li><a class="TitleLink" href="'+rootPage+'/Home/Home.dll/ServicesMap">Services Map</a></li>\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Home/Home.dll/WirelessMenu">Wireless Tracing</a></li>\n' +
									'						<li><a target="_blank" class="TitleLink" href="'+rootPage+'/Home/Home.dll/Help">Help</a></li>\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Home/Home.dll/About">About</a></li>\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Login.dll/Logout">Logout</a></li>\n' +
									'					</ul>\n' +
									'				</td>\n' +
									'			</tr>\n' +
									'		</table>\n' ); 
}

function drawAdminHeader(){
	document.write(	'			<table width="100%" border="0" cellspacing="0" cellpadding="0">\n' +
									'			<tr>\n' +
									'				<td rowspan="2"><img src="'+rootPage+'/Common/Images/tote_logo.jpg" /></td>\n' +
									'				<td>&nbsp;</td>\n' +
									'				<td align="right" valign="top"><img src="'+rootPage+'/Common/Images/e-servicenter_logo.jpg" /></td>\n' +
									'			</tr>\n' +
									'			<tr>\n' +
									'				<td colspan="2" valign="bottom">\n' +
									'					<ul class="HeaderLinks">\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Administration/Administration.dll">Home</a></li>\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Home/Home.dll/News">News</a></li>\n' +		
									'						<li><a class="TitleLink" href="'+rootPage+'/Home/Home.dll/ServicesMap">Services Map</a></li>\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Home/Home.dll/WirelessMenu">Wireless Tracing</a></li>\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Home/Home.dll/About">About</a></li>\n' +
									'						<li><a class="TitleLink" href="'+rootPage+'/Login.dll/Logout">Logout</a></li>\n' +
									'					</ul>\n' +
									'				</td>\n' +
									'			</tr>\n' +
									'		</table>\n' ); 
}

function formatAnsiChars(sValue) {
/************************************************
DESCRIPTION: This method formats a string(to ANSI Characters)

PARAMETERS: 
  sValue - source string containing xml data.
  
RETURNS: Formatted source string.
  
USAGE:  formatAnsiChars('C&B')  // returns 'C&#38;B'
*************************************************/
/*
  sValue = sValue.replace(/\&/g,"&#38;");
  sValue = sValue.replace(/\?/g,"&#63;");
  sValue = sValue.replace(/\#/g,"&#35;");
  sValue = sValue.replace(/\$/g,"&#36;");
  sValue = sValue.replace(/\%/g,"&#37;");
*/  
  sValue = sValue.replace(/\'/g,"&#39;&#39;");
  sValue = sValue.replace(/\@/g,"&#64;");
  sValue = sValue.replace(/\~/g,"&#126;");
  sValue = sValue.replace(/\á/g,"&#225;");
  sValue = sValue.replace(/\é/g,"&#233;");
  sValue = sValue.replace(/\í/g,"&#237;");
  sValue = sValue.replace(/\ó/g,"&#243;");
  sValue = sValue.replace(/\ú/g,"&#250;");
  sValue = sValue.replace(/\ñ/g,"&#241;");
  sValue = sValue.replace(/\Ñ/g,"&#209;");
  sValue = sValue.replace(/\Á/g,"&#193;");
  sValue = sValue.replace(/\É/g,"&#201;");
  sValue = sValue.replace(/\Í/g,"&#205;");
  sValue = sValue.replace(/\Ó/g,"&#211;");
  sValue = sValue.replace(/\Ú/g,"&#218;");
  return (sValue)
}

/*-----------------------------------------------------------------------------------------*/
//ST17267/20060811
function initSearchComponents() {
	var inputs = getElementsByClassName(window.document.body,"INPUT","inputSearch");
	for (var i = 0; i < inputs.length; i++) {
		var oInput = inputs[i];
		oInput.attachEvent("onkeyup", input_keydown);
		if (oInput.getAttribute("code") != null) {
			if (oInput.getAttribute("lastSearch") == null) 
				oInput.setAttribute("lastSearch", oInput.getAttribute("code"));			
		} else {
		oInput.setAttribute("code", "");		
	}
		if (oInput.getAttribute("lastSearch") == null)
			oInput.setAttribute("lastSearch", "dummy_string");
	}
}

//ST17267/20060811
function input_keydown(){
	var oEvent = window.event; 
	var oInput = oEvent.srcElement;
	if (oEvent.keyCode > 32 || oEvent.keyCode == 8) {
	if (oInput.lastSearch!=oInput.value.toLocaleUpperCase()) {
			addClassName(oInput, "textchanged", 1);//ST24993/20070704
		oInput.code = "";
	}
	else{
		while (oInput.className.indexOf("textchanged")!=-1)
		  oInput.className = oInput.className.replace(/ textchanged/,"");
	}
	}
/*	if (oEvent.keyCode >40 || oEvent.keyCode == 8) {
		var oInput = oEvent.srcElement;		
		oInput.className = "textchanged";		
	}*/	
}

function getXMLDoc() {
	var xmlDoc
	// code for IE
	if (window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
  }
	// code for Mozilla, etc.
  else if (document.implementation && document.implementation.createDocument) {
		xmlDoc = document.implementation.createDocument("","",null);
  }
	else {
	  alert('Your browser cannot handle this script.');
		xmlDoc = null;
	}
	return xmlDoc;	
}

function getXMLDocArray(rootName, oXML) {
	var xmlArray = new Array();
	var xmlDoc;
  for (var i=0; i < oXML.selectSingleNode(rootName).childNodes.length; i++) {
		xmlArray[i] = getXMLDoc();
		xmlArray[i].loadXML(oXML.selectSingleNode(rootName + "/" + rootName + "_" + i + "/DATAPACKET").xml);
	}
	return xmlArray;
}

function getXMLDataSetArray(xmlArray) {
	var xdsArray = new Array();
  for (var i = 0; i < xmlArray.length; i++) {
		var xds = new TXMLDataSet(xmlArray[i]);
		xds.name = "xdsArray" + i;
		xds.enabledManager();	
		xdsArray[i] = xds;		
	}
	return xdsArray;
}

//IM2464(2007-08-27)
function getXMLDataSetArrayByRange(xmlArray, pMin, pMax) {
	var xdsArray = new Array();
  for (var i = pMin; i <= pMax; i++) {
		var xds = new TXMLDataSet(xmlArray[i]);
		xds.name = "xdsArray" + i;
		xds.enabledManager();	
		xdsArray[i] = xds;		
	}
	return xdsArray;
}

var popUpWin=0;
function popUpWindow(URLStr, left, top, width, height) {
	if (popUpWin) {
		if (!popUpWin.closed) popUpWin.close();
	}
	popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

function waitingPanelStart(pMsg){
	//if (getIEVersion() != 6) { return; } //only for IE6//IM2322
	if (!pMsg) {pMsg = "Loading ...";}
	
	var divWaitingSt = window.document.getElementById("divWaitingPanel");
	if (!divWaitingSt) {
		divWaitingSt = document.createElement("div");
		divWaitingSt.id="divWaitingPanel";
		divWaitingSt.className = "waitingPanelFormat";
		var spWaiting = window.document.createElement("span");
		spWaiting.className = "waitingTextContainer";
		spWaiting.innerText = pMsg;
		divWaitingSt.appendChild(spWaiting);
		var divWrapper = window.document.getElementById("wrapper");	
		divWrapper.appendChild(divWaitingSt);		
	}
	
	divWaitingSt.style.display = "block";
	divWaitingSt.style.Height = "50";	
	divWaitingSt.style.width = "200";	
	var dheight = window.document.body.parentNode.clientHeight;
	var dwidth = window.document.body.parentNode.clientWidth;	
	var divTop = (dheight - parseInt(divWaitingSt.style.Height)) / 2;
	var divLeft = (dwidth - parseInt(divWaitingSt.style.width))  / 2;
	divWaitingSt.style.posTop = divTop;
	divWaitingSt.style.posLeft = divLeft;
	
	if (getIEVersion() == 6) {
		var scrheight = window.screen.Height;
		var scrwidth = window.screen.width;
		scrheight = scrheight + 100;
		scrwidth = scrwidth - (scrwidth + 100);
		var argsVariable = "_";
		var strOpts = "dialogWidth:1px;dialogHeight:1px;dialogTop:"+scrheight+";dialogLeft:"+scrwidth+";edge:sunken;resizable:no;status:no";
		var dummyWin = window.showModalDialog(rootPage + "/Common/HTML/Blank.html",argsVariable,strOpts);
	}
}

function waitingPanelStop(){
	var divWaitingSp = window.document.getElementById("divWaitingPanel");
	if (divWaitingSp) {
		divWaitingSp.style.display = "none";
	}
}

//20060923 --security_options page: update QuickAccess
function popUpWinModal(URLStr, left, top, width, height){
	var argsVariable = "_";
	var strOpts = "dialogWidth:" + width + "px;dialogHeight:" + height+ "px;dialogTop:"+top+";dialogLeft:"+left+";edge:sunken;resizable:no;status:no";
	popUpWin = window.showModalDialog(URLStr, argsVariable, strOpts);
}


function addPostParam(sParams,sParamName,sParamValue){
	if (sParams.length >0){
		sParams += "&";
	}	
	return sParams + encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
}

function addParam(sParams, sParamName, sParamValue){
	if (sParams.length >0){
		sParams += "&";
	}	
	
	sParams += sParamName + "=" + sParamValue;
	return sParams;
}

function parseDateTime(pStr) {
	var arr = pStr.split(' ');
	return convertDateTime(arr[0], arr[1])
}

function parseXMLCDSDateTimeStr(pDateStr, pTimeStr) {
	var day = "00";
	var month = "00";
	var year = "0000";
	var hours = "00";
	var minutes = "00";
	var seconds = "00";
	var miliseconds = "00000";
	
	if ( (pDateStr != "") && (pDateStr != null) ) {
		var arrDate = pDateStr.split('/');
		for (var i = 0; i < arrDate.length; i++) {
			switch(i) {
				case 0: month = arrDate[i] - 1; break;
				case 1: day = arrDate[i]; break;
				case 2: year = arrDate[i]; break;
			}
		}
	}
			
	if ( (pTimeStr != "") && (pTimeStr != null) ) {
		var arrTime = pTimeStr.split(':');
		for (var i = 0; i < arrTime.length; i++) {
			switch(i) {
				case 0: hours = arrTime[i]; break;
				case 1: minutes = arrTime[i]; break;
				case 2: seconds = arrTime[i]; break;
				case 3: miliseconds = arrTime[i]; break;
			}
		}
	}	
	
	return (year + month + day + "T" + hours + ":" + minutes + ":" + seconds + ":" + miliseconds);
}

function parseDateTimeFromXMLCDSDateTimeStr(pDateTimeStr) {
  var dateStr = "";
  var timeStr = "";
	var year, month, day, hours, minutes, days, seconds = 0, miliseconds = 0;

	arr = pDateTimeStr.split('T');
	dateStr = arr[0];
	timeStr = arr[1];
	
	year = parseInt(dateStr.substring(0,4), 10);
	month = parseInt(dateStr.substring(4,6), 10) - 1;
  day = parseInt(dateStr.substring(6,8), 10);

	if (timeStr) {
	var arrTime = timeStr.split(':');
	for (var i = 0; i < arrTime.length; i++) {
		switch(i) {
			case 0: hours = parseInt(arrTime[i], 10); break;
			case 1: minutes = parseInt(arrTime[i], 10); break;
			case 2: seconds = parseInt(arrTime[i], 10); break;
			case 3: miliseconds = parseInt(arrTime[i], 10); break;
		}
	}
	}else {
		hours = 0;
		minutes = 0;
		seconds = 0
		miliseconds = 0;
	}
	
	var ldDateTime = null;
  ldDateTime = new Date();
	ldDateTime.setYear(year);
	ldDateTime.setMonth(month);
	ldDateTime.setDate(day);		
	ldDateTime.setHours(hours);
	ldDateTime.setMinutes(minutes);
	ldDateTime.setSeconds(seconds);
	return ldDateTime;	
}

function parseDateTimeFromXMLCDSToFormattedDateTimeStr(pDateTimeStr) {
	if (pDateTimeStr == "") return pDateTimeStr;
  var dateStr = "";
  var timeStr = "";
	var year, month, day, hours, minutes, days, seconds = "00", miliseconds;

	arr = pDateTimeStr.split('T');
	dateStr = arr[0];
	timeStr = arr[1];
	
	year = dateStr.substring(0,4);
	month = dateStr.substring(4,6);
  day = dateStr.substring(6,8);

	if (timeStr) {
	var arrTime = timeStr.split(':');
	for (var i = 0; i < arrTime.length; i++) {
		switch(i) {
			case 0: hours = arrTime[i]; break;
			case 1: minutes = arrTime[i]; break;
//			case 2: seconds = arrTime[i]; break;
//			case 3: miliseconds = arrTime[i]; break;
		}
	}
	}else {
		hours = "00";
		minutes = "00";
		seconds = "00"
	}
	
//	var ldDateTime = null;
//  ldDateTime = new Date();
//	ldDateTime.setYear(year);
//	ldDateTime.setMonth(month);
//	ldDateTime.setDate(day);		
//	ldDateTime.setHours(hours);
//	ldDateTime.setMinutes(minutes);
//	ldDateTime.setSeconds(seconds);
	return month + "/" + day + "/" + year + " " + hours + ":" + minutes + ":" + seconds;
}

function convertDateTime(pDateStr, pTimeStr) {
  var day = 1;
	var month = 0;
	var year = 1970;
	var hours = 0;
	var minutes = 0;
	var seconds = 0;
  var miliseconds = 0;
	
	if ( (pDateStr != "") && (pDateStr != null) ) {
		var arrDate = pDateStr.split('/');
		for (var i = 0; i < arrDate.length; i++) {
			switch(i) {
				case 0: month = arrDate[i] - 1;
				case 1: day = arrDate[i];
				case 2: year = arrDate[i];
			}
		}
	}
			
	if ( (pTimeStr != "") && (pTimeStr != null) ) {
		var arrTime = pTimeStr.split(':');
		for (var i = 0; i < arrTime.length; i++) {
			switch(i) {
				case 0: hours = arrTime[i];
				case 1: minutes = arrTime[i];
				case 2: seconds = arrTime[i];
				case 3: miliseconds = arrTime[i];
			}
		}
	}
	
	var ldDateTime = new Date();
	ldDateTime.setYear(year);
	ldDateTime.setMonth(month);
	ldDateTime.setDate(day);		
	ldDateTime.setHours(hours);
	ldDateTime.setMinutes(minutes);
	ldDateTime.setSeconds(seconds);
	return ldDateTime;
}

function dateDiff(pDate1, pDate2) {
  diff  = new Date();

  diff.setTime(pDate1.getTime() - pDate2.getTime());
  timediff = diff.getTime();

  days = timediff / (1000 * 60 * 60);

  return days;
}

function compareDate(date1,date2){
  if (date1!= 0)  {
	var result=0;
	var delimChar = "/";
	var delim1 = date1.indexOf(delimChar);
	var delim2 = date1.lastIndexOf(delimChar);
	var delim3 = date2.indexOf(delimChar);
	var delim4 = date2.lastIndexOf(delimChar);
		
		mo1 = parseInt( date1.substring(0, delim1), 10 ) - 1;
	day1 = parseInt(date1.substring(delim1+1, delim2),10);
	yr1 = parseInt(date1.substring(delim2+1),10);	
	
		mo2 = parseInt(date2.substring(0, delim3), 10 ) - 1;
	day2 = parseInt(date2.substring(delim3+1, delim4),10);
	yr2 = parseInt(date2.substring(delim4+1),10);	
	
		var dateFrom = new Date(yr1,mo1,day1,0,0,0);//QATC21277
		var dateTo = new Date(yr2,mo2,day2,23,59,59);//QATC21277
	
		if (dateFrom < dateTo)	 {result=1;}
		if (dateFrom > dateTo)	{result=-1;}
	return result;
}
}


function arrDelete(pArray, pValue) {
	function arrFind(arr, elem){
		var iResult = -1;
		for(var i=0; i < arr.length; i++) {
			if (arr[i] == elem) {
				iResult = i;
				break;
			}
		}
		return iResult;
	}
	//--------------------------------
	var iPos = arrFind(pArray, pValue);
	if (iPos > -1){//IM2253
	var elemDeleted = pArray.splice(iPos,1);
}
}

function splitFloat(pFloatNbr, pIntPart, pDecPart){		
	var strNbr = pFloatNbr.toString();
	var intPart = parseInt(pFloatNbr);
	var strIntPart = intPart.toString(10);
	
	if (strIntPart != strNbr) {
		var intLen = strIntPart.length;	
		var nbrLen = strNbr.length;
		var strDecPart = strNbr.substring(intLen + 1,  nbrLen - 1);
	
		pDecPart = parseInt(strDecPart);
	}else {
		pDecPart = null;
	}
	pIntPart = parseInt(intPart);	
	return;
}

function getIntPartInFloat(pFloatNbr){
	if (pFloatNbr) {
		var intPart = parseInt(Math.abs(pFloatNbr));	
		return intPart.toString();
	}else {
		return null;
	}	
}

function getDecPartInFloat(pFloatNbr){
	pFloatNbr = Math.abs(pFloatNbr);
	var strNbr = pFloatNbr.toString();
	var intPart = parseInt(pFloatNbr);
	var strIntPart = intPart.toString(10);
	
	if (strIntPart != strNbr) {
		var intLen = strIntPart.length;	
		var nbrLen = strNbr.length;
		var strDecPart = strNbr.substring(intLen + 1,  nbrLen);
	
		return strDecPart;
	}else {
		return null;
	}
}

function buildInvalidMessageRange(pIntLen, pDecLen){
	var intMsg = "";
	var decMsg = "";
	for (var i = 0; i < pIntLen; i++) {
		intMsg += "9";
	}
	for (var j = 0; j < pDecLen; j++) {
		decMsg += "9";
	}			
	//Hard code: start
	return intMsg +  "." + decMsg;
	//Hard code: end	
}
function findInArray(pArray, pValue){
	var result = false;
	if (pArray.length > 0) {
		for (var i = 0; i < pArray.length; i++) {
			if (pArray[i] == pValue) {
				result = true;
				break;
			}
		}
	}
	return result;
}
function selectByValue(pSelectName, pValue){//IM2160
	var result = false;
	var selAux = window.document.getElementById(pSelectName);
	var iIndex = 0;
	for (var i = 0; i < selAux.options.length; i++) {
		if (selAux.options[i].value == pValue) {
			iIndex = i
			result = true;
			break;
		}
	}
	selAux.selectedIndex = iIndex;
	return result;
}

function copyArray(pArray){//IM2253+
	var arr = new Array(pArray.length);
	for (var i = 0; i < pArray.length; i++){
		arr[i] = pArray[i];
	}
	return arr;
}
	
function existInArray(pArray, pValue){//IM2253+
	var iResult = false;
	for(var i=0; i < pArray.length; i++) {
		if (pArray[i] == pValue) {
			iResult = true;
			break;
		}
	}
	return iResult;
}
	
function popUpDiv(pDivId, pLeft, pTop, pWidth, pHeight){//IM2308
	var dvPopUp = window.document.getElementById(pDivId);

	dvPopUp.className = "remarksPanelFormat";
	dvPopUp.style.position = "absolute";
	dvPopUp.style.display = "block";
	dvPopUp.style.width = pWidth;
	dvPopUp.style.posTop = pTop;
	dvPopUp.style.posLeft = pLeft;
	if (typeof(pHeight) != 'undefined'){
		dvPopUp.style.height = pHeight;
	}
	
	var arrInputs = window.document.getElementsByTagName("INPUT");						
	disableChildControls(window.document);
	for (var i = 0; i < arrInputs.length; i++){
		if (arrInputs[i].type == "button"){		
			if (arrInputs[i].id == "btnKillPopUpDiv"){
				enableControl(arrInputs[i]);					
			}
		}
	}		
}

function killPopUpDiv(pDivId){//IM2308
	var dvPopUp = window.document.getElementById(pDivId);
	dvPopUp.style.display = "none";
	enableChildControls(window.document);
}


function getIEVersion(){
	var stragent = navigator.userAgent;
	var result = null;
	if (stragent != ""){
		if (navigator.appName.indexOf("Microsoft") == 0){				
			var IEoffset = stragent.indexOf("MSIE");
			result = parseFloat(stragent.substring(IEoffset+5, stragent.indexOf(";", IEoffset)));				
		} else {
			result = -1.0;
		}
	}
	return result;		
}

function goHome() {
	if (rootPage != null)
		window.location.href = rootPage + "/Home/Home.dll"
	else
	  alert("Variable rootPage not declared.");
}

function setRowDataAsNewRows(oxml) {
	rows = oxml.childNodes(0).childNodes(1);
	for (var i = 0; i < rows.childNodes.length; i++) {
		rows.childNodes[i].setAttribute("RowState", "4");
	}
}
function createDataSetFromXML(pXML, pDataSetName) {
	var xdsResult = new TXMLDataSet(pXML);
	xdsResult.name = pDataSetName;
	xdsResult.enabledManager();  
	xdsResult.first();
	return xdsResult;
}

function copyDSRecord(pSourceDS, pDestDS, pFieldsToCopyArr) {
	var arrFieldValues = new Array();
	for (var i = 0; i < pDestDS.fieldsCount; i++) {
		var fieldName = pDestDS.fieldList.Items[i].getAttribute("attrname");
		if (pSourceDS.findField(fieldName) != null)
			if (findInArray(pFieldsToCopyArr, fieldName))
				arrInsert[fieldName] = pSourceDS.fieldByName(fieldName);
	}	
	return arrFieldValues;
}

function copyDataSet(pSourceDS, pDestDS, pFieldsToCopyArr, pDefaultFieldValuesArr) {
	while (!pSourceDS.eof) {
		var arrFieldValues;
		if (pDefaultFieldValuesArr != null) {
			arrFieldValues = pDefaultFieldValuesArr;
		}
		else
			arrFieldValues = new Array();
	  for (var i = 0; i < pDestDS.fieldsCount; i++) {
	    var fieldName = pDestDS.fieldList.Items[i].getAttribute("attrname");
	    if (pSourceDS.findField(fieldName) != null) 
				if (findInArray(pFieldsToCopyArr, fieldName)) 
//				  if (pSourceDS.fieldByName(fieldName) != "")
						arrFieldValues[fieldName] = pSourceDS.fieldByName(fieldName);
		}
		pDestDS.insert(arrFieldValues)
		pSourceDS.next();
	}
}

//ST24993/20070621
function setDisabled(pControl, pValue) {
	if (pValue) {
		disableControl(pControl);	
	}else {
		enableControl(pControl);	
	}	
}

//ST24993/20070621
function isDisabled(pControl) {
	var pValue = false;
	if (pControl.className.indexOf("textDisabled") > -1 ) {
		pValue = true;
	}else {
		if (pControl.className.indexOf("noTextDisabled") > -1 ) {
			pValue = true;
		}else {
			pValue = (pControl.disabled);
		}
	}
	return pValue;
}


//ST24993/20070622
function setDisabledControls(pArrControls, pValue){
	for (var i = 0; i < pArrControls.length ; i++ ) {
		var control = window.document.getElementById(pArrControls[i]);
		setDisabled(control, pValue);
	}		 
}

//ST24993/20070625
function addDisabledStateAttribute(pContainer) {
	var arrInputs = pContainer.getElementsByTagName("input");
	var arrSelects = pContainer.getElementsByTagName("select");
  var arrTextAreas = pContainer.getElementsByTagName("textarea");
	var arrLabels = pContainer.getElementsByTagName("label");

	for (var i = 0; i < arrInputs.length; i++) {
		arrInputs[i].setAttribute("lastDisabled", false);
	}
	
	for (var i = 0; i < arrSelects.length; i++) {
		arrSelects[i].setAttribute("lastDisabled", false);
	}

	for (var i = 0; i < arrTextAreas.length; i++) {		
		arrTextAreas[i].setAttribute("lastDisabled", false);
	}

	for (var i = 0; i < arrLabels.length; i++) {
		arrLabels[i].setAttribute("lastDisabled", false);
	}	
}

//ST24993/20070704
function addClassName(pControl, pNewClassName, pPos){
	if (pControl.className.indexOf(pNewClassName) == -1 ) {
		if (pControl.className != "" ) {
			switch (pPos) {
				case 0:	pControl.className = pNewClassName + " " + pControl.className; break;
				case 1:	pControl.className = pControl.className + " " + pNewClassName; break;
				case 2: pControl.className = pNewClassName; break;
			}
		}else {							
			pControl.className = pNewClassName;
		}		
	}	
}

//IM2464(2007-08-20)
function getCachedTablesArray(pTablesNames) {
	/* pTableNanes is a string of comma separated table names to be retrieved from the cache */
	var url = rootPage + "/CacheManager/CacheManager.dll/GetCachedTables";
	if (httpRequestHandler.submit(url + "?PageCode=" + pageCode + "&TableNames=" + pTablesNames)) {
		return getXMLDocArray(pageCode, httpRequestHandler.xmlResult);
	}
}

//IM2464(2007-08-20)
function setPageHints(pXML) {
	rowData = pXML.selectSingleNode("DATAPACKET/PAGE_ELEMENTS");
  for (var i=0; i < rowData.childNodes.length; i++) {
		var row = rowData.childNodes[i];
		var elem = document.getElementById(row.getAttribute("element_code"));
		if (elem != null) {
			elem.title = row.getAttribute("tooltip_text");
		}
	}	
}

function xGetElementById(pElementId) {
	return window.document.getElementById(pElementId);
}

function xGetElementValueById(pElementId) {
	return window.document.getElementById(pElementId).value;
}