
// Cookie Support Javascript functions

function extractCookieValue(val) {
	if ((endOfCookie = document.cookie.indexOf(";",val)) ==-1) {
		endOfCookie = document.cookie.length;
	}
	return unescape(document.cookie.substring(val,endOfCookie));
}

function createCookie(name,val) {
	document.cookie=name+"="+val+";";
}
 
function createCookieWithExpiry(name,val,date) {
	document.cookie=name+"="+val+"; expires="+date+";";
}

function createCookieNoExpiry(name,val) {
	var futureDate=new Date();
	futureDate.setUTCFullYear(futureDate.getUTCFullYear()+10);
	document.cookie = name+"="+val+"; expires="+futureDate.toUTCString()+";";
	
}

function deleteCookie(name) {
	var pastDate =new Date();
	pastDate.setUTCFullYear(pastDate.getUTCFullYear()-1);
	document.cookie = name+"='nothing'; expires="+pastDate.toUTCString()+";";
}

function getCookie(cookiename) {
	var numOfCookies = document.cookie.length;
	var nameOfCookie = cookiename+"=";
	var cookielength= nameOfCookie.length;
	var x=0;
	while(x<= numOfCookies) {
		var y=(x+cookielength);
		if (document.cookie.substring(x,y) == nameOfCookie)
			return (extractCookieValue(y));
		x = document.cookie.indexOf(" ",x)+1;
		if (x==0)
			break;
	}
	return null;
}

function cookiesEnabled() {
  var retVal;
  createCookie('testCookie','Y');
  if (getCookie('testCookie') == 'Y') {
  	retVal = true; 
  } else {
    retVal = false;
  }
  deleteCookie('testCookie');
  return retVal;
}

// END OF Cookie Support Javascript functions


function writeString(outputObject,englishString,frenchString) {
  if (getCookie("userLanguage")=="F") {
  	outputObject.write(frenchString);
  } else {
  	outputObject.write(englishString);
  }

}


function getBrowser() {
	return navigator.appName;
}

function getVersion() {
	return navigator.appVersion;
}



function iadf_onSubmit() {
//	if (parent.frames.length == 0) {
//		window.location.href="index.html";
//		return false;
// } else {
		return true;
//	}
}

function iadf_setP1(_value) {
	document.forms[0].p1.value=_value;
}

function iadf_setP2(_value) {
	document.forms[0].p2.value=_value;
}

function iadf_setActionNoPleaseWait(_actionValue) {
	try {
		document.forms[0].currentaction.value=_actionValue;
	} catch (e) { 
		try {
			document.forms[0].curactn.value=_actionValue;
		} catch (e) { 
			document.forms[0].action.value=_actionValue;
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}

var sessiontoexpireat = (new Date()).getTime() + appinactivitytimeout;
var activitycheckinterval = 60000;   // one minute
var warning1givenat = sessiontoexpireat - (60000 * 5);	// 5 minute warning
var warning2givenat = sessiontoexpireat - (60000 * 2);	// 2 minute warning
var expiredate = new Date(sessiontoexpireat);
var expiredhours = expiredate.getHours();


function iadf_setAction(_actionValue) {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value=_actionValue;
	} catch (e) { 
		try {
			document.forms[0].curactn.value=_actionValue;
		} catch (e) { 
			document.forms[0].action.value=_actionValue;
		}
	}
	if (iadf_onSubmit()) {
    		if (_actionValue.indexOf("upload") > -1) {
			  iadf_resetGlobalVars();
		      var d = document.createElement('DIV');
		      d.innerHTML = '<iframe name="dataframe" id="dataframe" src="/iadtmplt/srvmsg/blank.html" style="display:none" ></iframe>';
		      document.body.appendChild(d);
	 	      originalAction = document.forms[0].action;
		      document.forms[0].action = originalAction+"upload";
		      document.forms[0].encoding = "multipart/form-data";
		      document.forms[0].target = "dataframe" ;
		      document.forms[0].submit();
		      document.forms[0].action = originalAction;
		} else if ((_actionValue.indexOf("download") > -1) || (_actionValue.indexOf("runReport"))> -1) {
			  iadf_resetGlobalVars();
		      document.forms[0].target = "_self" ;
		      document.forms[0].submit();
		} else {
		      iadf_ajaxMakeRequest();
	    }
	}
}

function iadf_gotoScreen(_newScreen) {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value='gotoScreen';
		document.forms[0].nextjsp.value=_newScreen;
	} catch (e) { 
		try {
			document.forms[0].curactn.value='gotoScreen';
			document.forms[0].nextjsp.value=_newScreen;
		} catch (e) { 
			document.forms[0].action.value='gotoScreen';
			document.forms[0].gotoScreen.value=_newScreen;
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}

function iadf_gotoScreenAutoSave(_newScreen) {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value='gotoScreenAutoSave';
		document.forms[0].nextjsp.value=_newScreen;
	} catch (e) { 
		try {
			document.forms[0].curactn.value='gotoScreenAutoSave';
			document.forms[0].nextjsp.value=_newScreen;
		} catch (e) { 
			document.forms[0].action.value='gotoScreenAutoSave';
			document.forms[0].gotoScreen.value=_newScreen;
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}

function iadf_gotoScreenAutoSaveKeepSession(_newScreen) {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value='gotoScreenAutoSaveKeepSession';
		document.forms[0].nextjsp.value=_newScreen;
	} catch (e) { 
		try {
			document.forms[0].curactn.value='gotoScreenAutoSaveKeepSession';
			document.forms[0].nextjsp.value=_newScreen;
		} catch (e) { 
			document.forms[0].action.value='gotoScreenAutoSaveKeepSession';
			document.forms[0].gotoScreen.value=_newScreen;
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}

function iadf_abandonChanges() {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value='abandonChanges';
	} catch (e) {
		try {
			document.forms[0].curactn.value='abandonChanges';
		} catch (e) {
			document.forms[0].action.value='abandonChanges';
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}

function iadf_dbUpdate() {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value='dbUpdate';
	} catch (e) {
		try {
			document.forms[0].curactn.value='dbUpdate';
		} catch (e) {
			document.forms[0].action.value='dbUpdate';
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}


function iadf_insertRow(_rowNumber) {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value='insertRow';
		document.forms[0].actionrow.value=_rowNumber;
	} catch (e) {
		try {
			document.forms[0].curactn.value='insertRow';
			document.forms[0].actionrow.value=_rowNumber;
		} catch (e) {
			document.forms[0].action.value='insertRow';
			document.forms[0].actionRowNumber.value=_rowNumber;
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}

function iadf_insertRowSingleRow() {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value='insertRow';
		document.forms[0].actionrow.value=1;
	} catch (e) {
		try {
			document.forms[0].curactn.value='insertRow';
			document.forms[0].actionrow.value=1;
		} catch (e) {
			document.forms[0].action.value='insertRow';
			document.forms[0].actionRowNumber.value=1;
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}

function iadf_deleteRow(_rowNumber) {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value='deleteRow';
		document.forms[0].actionrow.value=_rowNumber;
	} catch (e) {
		try {
			document.forms[0].curactn.value='deleteRow';
			document.forms[0].actionrow.value=_rowNumber;
		} catch (e) {
			document.forms[0].action.value='deleteRow';
			document.forms[0].actionRowNumber.value=_rowNumber;
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}


function iadf_deleteRowWithConfirm(_rowNumber) {
	usermessage = "";
	if (appuserlanguage == "fr") {
		usermessage =  "Voulez-vous vraiment supprimer cet enregistrement?";
	} else {
		usermessage =  "Are you sure you want to delete this row?";
	}
	if (confirm(usermessage)) {
		hideLayer("menu");
		activatePleaseWait();
		try {
			document.forms[0].currentaction.value='deleteRow';
			document.forms[0].actionrow.value=_rowNumber;
		} catch (e) {
			try {
				document.forms[0].curactn.value='deleteRow';
				document.forms[0].actionrow.value=_rowNumber;
			} catch (e) {
				document.forms[0].action.value='deleteRow';
				document.forms[0].actionRowNumber.value=_rowNumber;
			}
		}
		if (iadf_onSubmit()) {
			iadf_ajaxMakeRequest();
		}
	}
}

function iadf_deleteRowSingleRow() {
	hideLayer("menu");
	activatePleaseWait();
	try {
		document.forms[0].currentaction.value='deleteRow';
		document.forms[0].actionrow.value=1;
	} catch (e) {
		try {
			document.forms[0].curactn.value='deleteRow';
			document.forms[0].actionrow.value=1;
		} catch (e) {
			document.forms[0].action.value='deleteRow';
			document.forms[0].actionRowNumber.value=1;
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}

function iadf_removeAttachment() {
	usermessage = "";
	if (appuserlanguage == "fr") {
		usermessage =  "Vous allez supprimer la pièce jointe de ce dossier. Voulez-vous continuer?";
	} else {
		usermessage =  "You are about to remove the attachment from this record.  Continue?";
	}
	
	if (confirm(usermessage)) {
		try {
			document.forms[0].currentaction.value='removeattachment';
		} catch (e) {
			document.forms[0].curactn.value='removeattachment';
		}
		if (iadf_onSubmit()) {
			iadf_ajaxMakeRequest();
		}
	}

}

function iadf_exportToFile() {
	try {
		document.forms[0].currentaction.value='export';
	} catch (e) {
		try {
			document.forms[0].curactn.value='export';
		} catch (e) {
			document.forms[0].action.value='export';
		}
	}
	if (iadf_onSubmit()) {
		iadf_ajaxMakeRequest();
	}
}

function iadf_screenChanged() {
	try {
		document.forms[0].modifiedind.value='1';
	} catch (e) {
		document.forms[0].modifiedInd.value='1';
	}

}


// DIV Routines for Menus
function newPos(e) {
	if (isNS6 || isNS4) {
		mouseX = e.pageX;
		mouseY = e.pageY;
	} else {
		mouseX = event.clientX;
		mouseY = event.clientY;
	}
}

agent = navigator.userAgent.toLowerCase();
major = parseInt(navigator.appVersion);
var isIE5 = ((agent.indexOf("msie") > -1) && (document.compatMode != 'CSS1Compat'));
var isIE6 = ((agent.indexOf("msie") > -1) && (document.compatMode == 'CSS1Compat'));
var isNS4 = ((agent.indexOf('mozilla') > -1) && 
			(agent.indexOf('spoofer') == -1) && 
			(agent.indexOf('compatible') ==  -1) && 
			(major == 4));
var isNS6 = ((agent.indexOf('mozilla') > -1) && 
			(agent.indexOf('spoofer') == -1) && 
			(agent.indexOf('compatible') ==  -1) && 
			(major >= 5));
var activeMenu = 0;
var mouseX = 0;
var mouseY = 0;
if (isNS4) {
	document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove=newPos;


function activateMenu() {
	try {
		if (isNS6) {
			document.getElementById("menu").style.top = mouseY+"px";
		} else if (isNS4) {
			document["menu"].top = mouseY;
		} else if (isIE6) {
			document.all["menu"].style.top = document.documentElement.scrollTop + mouseY;
		} else {
			document.all["menu"].style.top = document.body.scrollTop + mouseY;
		}
		showLayer("menu");
	} catch (e) {
	}
}


function deactivatePopup(menuLayerRef) {
	hideLayer(menuLayerRef);
}

function showLayer(layerID) {
	try {
		if (isNS6) {
		    eval('document.getElementById("'+layerID+'").style.visibility = "visible"');
		} else if (isNS4) {
		    eval('document["'+layerID+'"].visibility = "visible"');
		} else {	
		    eval('document.all["'+layerID+'"].style.visibility = "visible"');
		}
	} catch (e) {
	}
}

function hideLayer(layerID) {
	try {
		if (isNS6) {
		    eval('document.getElementById("'+layerID+'").style.visibility = "hidden"');
		} else if (isNS4) {
		    eval('document["'+layerID+'"].visibility = "hidden"');
		} else {	
		    eval('document.all["'+layerID+'"].style.visibility = "hidden"');
		}
	} catch (e) {
	}	
}

// check if there's a menu active
function turnOff() {
    if (activeMenu) {
		hideLayer(activeMenu);
		activeMenu = 0;
    }
}

// kills menu on clickup
function initLayers() {
	if (isNS4) {
	    document.captureEvents(Event.MOUSEUP);
	}
	document.onmouseup = turnOff;

	//
	// Code to default HTML button "searchButton" to fire when user clicks "Enter"
	//
	try {
		if (document.forms[0].searchButton) {
			if (document.layers){  
				document.captureEvents(Event.KEYDOWN);  
			}  
			document.onkeydown =  function (evt) {  
				var keyCode = evt ? (evt.which ? evt.which : evt.keyCode) : event.keyCode;  
				if (keyCode == 13) {  
					if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {  
						theform = document.form;  
					}  
					else {  
						theform = document.forms["form"];  
					}  
					document.forms[0].searchButton.click();  
					return false;  
				}  
				else  
				{  
					return true;  
				}  
			}
		}
	} catch (e) { }
}

// Work-around Netscape resize bug
if (isNS4) {
    origWidth = innerWidth;
    origHeight = innerHeight;	
}
	
function reDo() {	
    if (innerWidth != origWidth || innerHeight != origHeight) {
	location.reload();
    }
}

if (isNS4) {
    onresize = reDo;
}
//
// END OF LAYERS ROUTINES
//


zz=setTimeout("initLayers()", 500);


function setupMenuClickSpace() {
	try {
		showLayer("tabButtonsSpace");
	} catch (e) {
	}
	try {
		showLayer("tabButtonsSpace2");
	} catch (e) {
	}
	try {
		showLayer("tabButtonsSpace3");
	} catch (e) {
	}
	if (appisprinterfriendlyind == "1") {
		iadf_disableLinks();
	}

}

function activatePleaseWait() {
	try {
		if (isNS6) {
			document.getElementById("pleaseWait").style.top = 125+"px";
		} else if (isNS4) {
			document["pleaseWait"].top = "125";
		} else if (isIE6) {
			document.all["pleaseWait"].style.top = document.documentElement.scrollTop + 75;
		} else {
			document.all["pleaseWait"].style.top = document.body.scrollTop + 75;
		}
		showLayer("pleaseWait");
	} catch (e) {
	}
}

function iadf_openPopup(_windowName) {
  calwin = open(_windowName,"","width=525,height=425,resizable=yes");
}

function matchColumnHeight(){ 
 try {
	leftHeight = document.getElementById("left").offsetHeight;
	centerHeight = document.getElementById("center").offsetHeight;
	maxHeight=Math.max(leftHeight,centerHeight); 
    document.getElementById("left").style.height=(maxHeight) + "px"; 
 } catch (e) {
 }
} 

function clickButton(e, buttonid){ 
	var bt = document.getElementById(buttonid); 
	if (typeof bt == 'object'){ 
		if (navigator.appName.indexOf("Netscape")>(-1)){ 
			if (e.keyCode == 13){ 
				bt.click(); 
				return false; 
			} 
		} 
		if (navigator.appName.indexOf("Microsoft Internet Explorer")>(-1)){ 
			if (event.keyCode == 13){ 
				bt.click(); 
				return false; 
			} 
		} 
	} 
} 

function iadf_reloadAppCache() {
	if (appuserlanguage == "fr") {
		usermessage =  "Sur le point de recharger la mémoire cache. Voulez-vous continuer?";
	} else {
		usermessage =  "About to reload the public site cache.  Continue?";
	}
	if (confirm(usermessage)) { 
		iadf_setAction('reloadAppCache'); 
	}
}

function iadf_showCountry() {
	document.getElementById("addcountryhrefdiv").style.display = "none";
	document.getElementById("addcountrydiv").style.display = "block";
}	

function iadf_showCity() {
	document.getElementById("addcityhrefdiv").style.display = "none";
	document.getElementById("addcitydiv").style.display = "block";
}	


function iadf_showCity1() {
	document.getElementById("addcityhrefdiv1").style.display = "none";
	document.getElementById("addcitydiv1").style.display = "block";
}	

function iadf_showCity2() {
	document.getElementById("addcityhrefdiv2").style.display = "none";
	document.getElementById("addcitydiv2").style.display = "block";
}	



function iadf_disableLinks(){
  allLinks = document.links;
  for(i=0;i < allLinks.length;i++){
    // allLinks[i].disabled = true;
    //link with onclick
    if(allLinks[i].onclick){  
        allLinks[i].onclick = new Function("return false;" + allLinks[i].onclick.toString().getFuncBody());
    }
    //link without onclick
    else {  
      allLinks[i].onclick = function(){return false;};
    }
  }
  allInputs = document.getElementsByTagName("input");
  for(i=0;i < allInputs.length;i++){
	if (allInputs[i].type == 'button') {
		allInputs[i].style.visibility="hidden";
	}
  	allInputs[i].disabled = true;
  }
   
}

String.prototype.getFuncBody = function(){ 
  var str=this.toString(); 
  str=str.replace("/[^{]+{/","");
  str=str.substring(0,str.length-1);   
  str = str.replace("/\n/gi","");
  if(!str.match("/\(.*\)/gi"))str += ")";
  return str; 
} 


function iadf_showDiv(_divId) {
  document.getElementById(_divId).style.display = 'block';
}
function iadf_hideDiv(_divId) {
  document.getElementById(_divId).style.display = 'none';
}



function iadf_ajaxCreateRequestString() {
  var reqStr = "";
  for (i=0; i < document.forms[0].elements.length; i++) {
    isFormObject = false;
//    alert(document.forms[0].elements[i].tagName);
    switch (document.forms[0].elements[i].tagName) {
      case "INPUT":
        switch (document.forms[0].elements[i].type) {
          case "text":
          case "hidden":
          case "password":
          reqStr += document.forms[0].elements[i].name + "=" + encodeURIComponent(document.forms[0].elements[i].value);
          isFormObject = true;
          break;
      case "checkbox":
        if (document.forms[0].elements[i].checked) {
          reqStr += document.forms[0].elements[i].name + "=" + document.forms[0].elements[i].value;
          isFormObject = true;
        } else {
          // reqStr += document.forms[0].elements[i].name + "=";
        }
        break;
      case "radio":
        if (document.forms[0].elements[i].checked) {
          reqStr += document.forms[0].elements[i].name + "=" + document.forms[0].elements[i].value;
          isFormObject = true;
        }
      }
      break;
    case "TEXTAREA":
      reqStr += document.forms[0].elements[i].name + "=" + encodeURIComponent(document.forms[0].elements[i].value);
      isFormObject = true;
      break;
    case "SELECT":
      var sel = document.forms[0].elements[i];
      if (sel.selectedIndex > -1) {
        reqStr += sel.name + "=" + sel.options[sel.selectedIndex].value;
      } else {
        reqStr += sel.name + "=";
      }
      isFormObject = true;
      break;
    }
    if ((isFormObject) && ((i+1)!= document.forms[0].elements.length)) {
      reqStr += "&";
    }
  }
  // alert(reqStr);
  return reqStr;
}     


function iadf_ajaxGetRequestObject() {
  try {
  	if (appajaxenabledind != 'true') {
	    return false;
	  }
  } catch (e) {}
  var httpRequest;
  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
    if (httpRequest.overrideMimeType) {
      // httpRequest.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  return httpRequest;
}

var requestcount = 0;

function iadf_ajaxMakeRequest() {
  iadf_resetGlobalVars();
  requestcount++;
  var httpRequest = iadf_ajaxGetRequestObject();
  if (!httpRequest) {
      // alert('ActiveX is not enabled, so using hidden iframe method');
      var d = document.createElement('DIV');
      d.innerHTML = '<iframe name="dataframe" id="dataframe" src="/iadtmplt/srvmsg/blank.html" style="display:none" ></iframe>';
      document.body.appendChild(d);
      try {
        tinyMCE.triggerSave();
      } catch (e) {} 
	originalmethod = document.forms[0].method;
	originalaction = document.forms[0].action;
	originaltarget = document.forms[0].target;
      document.forms[0].target = "dataframe" ;
      document.forms[0].action = appservletalias ;
      document.forms[0].method = "post" ;
      document.forms[0].submit();
      document.forms[0].target = originaltarget ;
      document.forms[0].action = originalaction ;
      document.forms[0].method = originalmethod ;
    return;
  }
  try {
    tinyMCE.triggerSave();
  } catch (e) {} 
  document.body.style.cursor='wait';
  httpRequest.onreadystatechange = function() { iadf_ajaxAlertContents(httpRequest); };
  httpRequest.open('POST', appservletalias, true);
  httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=utf-8");   
  httpRequest.send(iadf_ajaxCreateRequestString());
}

function iadf_ajaxAlertContents(httpRequest) {
  // alert('Status: '+httpRequest.readyState);
  if (httpRequest.readyState == 4) {
    if (httpRequest.status == 200) {
      // alert(httpRequest.responseText);
      iadf_ajaxSetHtml(httpRequest.responseText); 
      requestcount=0;
    } else {
      if (requestcount <= 4) {
        // alert(requestcount);
        iadf_ajaxMakeRequest();
        return;
      }
      alert('There was a problem with the request: '+httpRequest.status);
      requestcount=0;
    }
  }
}

function iadf_ajaxSetHtml(content) {
  var search = content; 
  var script; 
  while( script = search.match(/(<script[^>]+javascript[^>]+>\s*(<!--)?)/i)) { 
    search = search.substr(search.indexOf(RegExp.$1) + RegExp.$1.length); 
    if (!(endscript = search.match(/((-->)?\s*<\/script>)/))) {
      break;
    } 
    hideLayer("pleaseWait");
    showLayer("menu");
    block = search.substr(0, search.indexOf(RegExp.$1)); 
    search = search.substring(block.length + RegExp.$1.length); 
    var oScript = document.createElement('script'); 
    oScript.text = block; 
    document.getElementsByTagName("head").item(0).appendChild(oScript); 
  } 
  document.getElementById("ajaxdiv").innerHTML=content;
  document.body.style.cursor='auto';
}


selectAsYouTypeKeyPressedTimeout = null;
var keysPressed = "";

function iadf_selectAsYouType(e) {
    clearTimeout(selectAsYouTypeKeyPressedTimeout);
    selectAsYouTypeKeyPressedTimeout = setTimeout("iadf_clearKeysPressed()", 5000);

    var keyChar; var keyNum;
    var comboBox;
    if (window.event) { // IE
    	keyNum = e.keyCode;            
    } else {
      return true; // browser doesn't support DOM, do default processing.
    }
    keyChar = String.fromCharCode(keyNum);
    comboBox = e.srcElement;
    if (!comboBox) {
      return true; // if DOM didn't work, do default processing
    }
    if (keyNum == 27) { // Esc key 
      iadf_clearKeysPressed();
    } else {
      return iadf_selectElement(comboBox, keyChar);
    }
    return true;
} 


function iadf_clearKeysPressed() {
	keysPressed = "";
}

function iadf_selectElement(comboBox, keyChar) {
  keysPressed += keyChar;
  var options = comboBox.options;
  for (var i = 0; i < options.length; ++i) {
    if (options[i].text.toUpperCase().indexOf(keysPressed.toUpperCase(), 0) == 0) {
      comboBox.selectedIndex = i;
      return false; // don't do default processing
    }
  }
  return false;        
}

function iadf_clickButtonOnEnterPressed(buttonObject) {
  try {
  if (event.keyCode == 13) {
    event.cancelBubble = true;
    event.returnValue = false;
    buttonObject.click();
  }
  } catch (e) {}
}

function clickButtonOnEnterPressed(buttonObject) {
	iadf_clickButtonOnEnterPressed(buttonObject);
}


function selectWrapped(selObj) {
  var curSelected = selObj.selectedIndex;
  if (curSelected > 0 && curSelected < selObj.options.length && selObj.options[curSelected].value == selObj.options[curSelected - 1].value) {
    selObj.options[curSelected - 1].selected = true;
  }
}

function iadf_jumpToNextField(_element) {
	var index = -1, i = 0;
  while (i < _element.form.length && index == -1) {
  	if (_element.form[i] == _element) {
    	index = i;
   	} else {
    	i++
    }
  }
  try {
  	if (event.shiftKey) { 
	 		_element.form[(index-1) % _element.form.length].focus();
  	} else {
	 		_element.form[(index+1) % _element.form.length].focus();
	 	}
 	} catch (e) {
 		_element.blur();
 	}
}


function iadf_addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
      x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}
  




// Picklist is assumed that the select list is in sort sequence initially
var singleSelect = true;  // Allows an item to be selected once only
var sortSelect = true;  // Only effective if above flag set to true
var sortPick = true;  // Will order the picklist in sort sequence


// Adds a selected item into the picklist

function iadf_addToPicklist(_picklistFieldName, _pickvaluesFieldName, _selectlistFieldName) {
  var selectList = document.getElementById(_selectlistFieldName);
  var selectIndex = selectList.selectedIndex;
  var selectOptions = selectList.options;
  var pickList = document.getElementById(_picklistFieldName);
  var pickOptions = pickList.options;
  var pickOLength = pickOptions.length;

  // An item must be selected

  if (selectIndex > -1) {
    pickOptions[pickOLength] = new Option(selectList[selectIndex].text);
    pickOptions[pickOLength].value = selectList[selectIndex].value;
    // If single selection, remove the item from the select list
    if (singleSelect) {
      selectOptions[selectIndex] = null;
    }
    if (sortPick) {
      var tempText;
      var tempValue;
      // Sort the pick list
      while (pickOLength > 0 && pickOptions[pickOLength].value < pickOptions[pickOLength-1].value) {
        tempText = pickOptions[pickOLength-1].text;
        tempValue = pickOptions[pickOLength-1].value;
        pickOptions[pickOLength-1].text = pickOptions[pickOLength].text;
        pickOptions[pickOLength-1].value = pickOptions[pickOLength].value;
        pickOptions[pickOLength].text = tempText;
        pickOptions[pickOLength].value = tempValue;
        pickOLength = pickOLength - 1;
      }
    }
  }
  iadf_movePicklistValuesToHiddenField(_picklistFieldName, _pickvaluesFieldName);
  iadf_screenChanged();
}

function iadf_deleteFromPicklist(_picklistFieldName, _pickvaluesFieldName, _selectlistFieldName) {
  var selectList = document.getElementById(_selectlistFieldName);
  var selectOptions = selectList.options;
  var selectOLength = selectOptions.length;
  var pickList = document.getElementById(_picklistFieldName);
  var pickIndex = pickList.selectedIndex;
  var pickOptions = pickList.options;
  if (pickIndex > -1) {
    // If single selection, replace the item in the select list
    if (singleSelect) {
      selectOptions[selectOLength] = new Option(pickList[pickIndex].text);
      selectOptions[selectOLength].value = pickList[pickIndex].value;
    }
    pickOptions[pickIndex] = null;
    if (singleSelect && sortSelect) {
      var tempText;
      var tempValue;
      // Re-sort the select list
      while (selectOLength > 0 && selectOptions[selectOLength].value < selectOptions[selectOLength-1].value) {
        tempText = selectOptions[selectOLength-1].text;
        tempValue = selectOptions[selectOLength-1].value;
        selectOptions[selectOLength-1].text = selectOptions[selectOLength].text;
        selectOptions[selectOLength-1].value = selectOptions[selectOLength].value;
        selectOptions[selectOLength].text = tempText;
        selectOptions[selectOLength].value = tempValue;
        selectOLength = selectOLength - 1;
      }
    }
  }
  iadf_movePicklistValuesToHiddenField(_picklistFieldName, _pickvaluesFieldName);
  iadf_screenChanged();
}

function iadf_movePicklistValuesToHiddenField(_picklistFieldName, _pickvaluesFieldName) {
	// move to hidden field to get saved
  var pickList = document.getElementById(_picklistFieldName);
  var pickOptions = pickList.options;
  var pv = document.getElementById(_pickvaluesFieldName);
  pv.value = '';
  var curpick = 0;
   while (curpick < pickList.length   ) {
    if (curpick>0) {
      pv.value =   pv.value + ',';
    }
    pv.value = pv.value + pickOptions[curpick].value;
    curpick++;
   }
}



function iadf_writeSessionExpiryWarningDiv() {
	document.write('<div class="logoutwarning" id="logoutwarning_1"> ');
	if (appuserlanguage == "fr") {
		document.write('<span class="logoutwarningtitle">Votre session est sur le point d\'expirer</span> ');
	} else {
		document.write('<span class="logoutwarningtitle">Session About to Expire</span> ');
	}
	document.write('<p> ');
	if (appuserlanguage == "fr") {
		document.write('Pour cause d\'inactivité, votre session expirera à '+expiredhours+':'+expiredminutes+'.&nbsp;&nbsp;Si vous ajouté ou modifié des données, veuillez enregistrer vos changements maintenant.');
		document.write('');
	} else {
		document.write('Due to inactivity, your session will expire at '+expiredhours+':'+expiredminutes+'.&nbsp;&nbsp;If you are entering or modifying data, please save it now.');
	}
	document.write('</p> ');
	document.write('<div class="aligncenter"> ');
	if (appuserlanguage == "fr") {
		document.write('<input type="button" onclick="iadf_logoutwarningOff();" value="Cacher ce message"></div>  ');
	} else {
		document.write('<input type="button" onclick="iadf_logoutwarningOff();" value="Hide this Message"></div>  ');
	}
	document.write('</div> ');
	if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {  
		document.write('<iframe class="logoutwarning" src="/iadtmplt/srvmsg/blank.html" id="logoutwarningiframe_1"></iframe>');
	}
}

function iadf_checkInactivityAge() {
	if (appinactivitytimeout != -1) {
		if ((new Date()).getTime() > sessiontoexpireat) {
			iadf_logoutwarningOff();
			if (appuserlanguage == "fr") {
				alert('Votre session a expiré. Vous avez été déconnecté du système.');
			} else {
				alert('Your session has expired.  You have been logged out of the application.');
			}
			window.location.href=appinactivitytimeoutscreen;
			return;
		} else if ((new Date()).getTime() > warning2givenat) {
			iadf_logoutwarningOn(2);
			window.setTimeout('iadf_checkInactivityAge()',activitycheckinterval);
			return;
		} else if ((new Date()).getTime() > warning1givenat) {
			iadf_logoutwarningOn(1);
			window.setTimeout('iadf_checkInactivityAge()',activitycheckinterval);
			return;
		} else {
			window.setTimeout('iadf_checkInactivityAge()',activitycheckinterval);
			return;
		}
	}
}

function iadf_logoutwarningOn(_level) {
  displayedLogoutWarningDiv = document.getElementById("logoutwarning_1");
  displayedLogoutWarningDiv.style.display = "block"; 
  var elementWidth = displayedLogoutWarningDiv.clientWidth;
  var elementHeight = displayedLogoutWarningDiv.clientHeight;
	if (navigator.appName.indexOf("Microsoft") != -1) {
		toppos = document.documentElement.scrollTop+1;
		leftpos = (document.body.clientWidth / 2) - (elementWidth / 2);
	} else {
		toppos = document.documentElement.scrollTop+1;
		leftpos = (window.innerWidth / 2) - (elementWidth / 2);
  }
  displayedLogoutWarningDiv.style.top = toppos+"px";
  displayedLogoutWarningDiv.style.left = leftpos+"px";
  if (_level == 2) {
	displayedLogoutWarningDiv.style.background = "Red";
  } else {
	displayedLogoutWarningDiv.style.background = "Maroon";
  }
  
  if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {  
	// This iframe nonsense it to get around a bug in IE6 that puts dropdowns in front of all divs.  By
	// placing an iframe behind the dive, it effectively hides the dropdown.
	// IE 7+ and Firefox do not have this bug.
	displayedIFrameDiv = document.getElementById("logoutwarningiframe_1");
	displayedIFrameDiv.style.display = "block"; 
	displayedIFrameDiv.style.width = displayedLogoutWarningDiv.clientWidth;
	displayedIFrameDiv.style.height = displayedLogoutWarningDiv.clientHeight;
	displayedIFrameDiv.style.top = displayedLogoutWarningDiv.style.top;
	displayedIFrameDiv.style.left = displayedLogoutWarningDiv.style.left;
  }
}

function iadf_logoutwarningOff() {
      document.getElementById("logoutwarning_1").style.display = "none";
	  if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {  
		document.getElementById("logoutwarningiframe_1").style.display = "none";
	  }
}


if (appisuserloggedonind && appinactivitytimeout != -1) {
	window.setTimeout('iadf_checkInactivityAge()',activitycheckinterval);
}


function iadf_resetGlobalVars() {
	sessiontoexpireat = (new Date()).getTime() + appinactivitytimeout;
	activitycheckinterval = 60000;   // one minute
	warning1givenat = sessiontoexpireat - (60000 * 5);	// 5 minute warning
	warning2givenat = sessiontoexpireat - (60000 * 2);	// 2 minute warning
	expiredate = new Date(sessiontoexpireat);
	expiredhours = expiredate.getHours();
	if (expiredhours < 10) {
		expiredhours = "0"+expiredhours;
	}
	expiredminutes = expiredate.getMinutes();
	if (expiredminutes < 10) {
		expiredminutes = "0"+expiredminutes;
	}
}


iadf_resetGlobalVars();

