var iCommitmentGroupID = 0;
var iCustomizationTypeID = 3;
var sDivisionCode = "";
var sDivisionName = "";
var iCallTypeID = 0;
var sCallTypeCode = "";
var sApplicationSection = "";
var sProtocolID = "";
var iProtocolID = 0;

var sRunFunction = "";
function getRunFunction()
{
	var sReturn = sRunFunction;
	sRunFunction = "";

	return sReturn;
}

function preventCharacters(allowPeriod)
{
    var Key = window.event.keyCode;

	if (allowPeriod != null)
		if (allowPeriod && Key == 46)
			return true;

    if (Key < 48 || Key > 57)
	{
		event.returnValue = false;
		event.cancelBubble = true;
		return false;
	}
	
	return true;
}

function limitLength(iLength)
{
	var sValue = event.srcElement.value;
	if (sValue.length >= iLength)
	{
		event.returnValue = false;
		event.cancelBubble = true;
	}
}

function limitValue(iMaxValue)
{
	var sValue = event.srcElement.value + '' + (event.keyCode - 48);
	if (sValue > iMaxValue)
	{
		event.srcElement.value = iMaxValue;
		event.returnValue = false;
		event.cancelBubble = true;
	}
}

function ltrim(str) {
	if (str.length == 0) return str;

	for (var i=0; str.charAt(i)<=" "; i++);
	return str.substring(i,str.length);
}

function rtrim(str) {
	if (str.length == 0) return str;

	for (var i=str.length-1; str.charAt(i)<=" "; i--)
		if (i < 0)
			break;
	
	return str.substring(0,i+1);
}

function trim(str) {
	return ltrim(rtrim(str));
}    

function checkMsxml()
{
	var e;
	
	try
	{
		var xmlObject = new ActiveXObject("Msxml2.DOMDocument.3.0");
		xmlObject.appendChild(xmlTest.documentElement);
	}
	catch(e)
	{
		if (e.number == -2146827859)
		{
			alert("You must follow the setup instructions before using this application.");
			location.href = "/ESM/SetupInstructions";
			return false;
		}
	}
	
	return true;
}

function checkSetup()
{
	var sCookie = document.cookie;
	var iIndex = sCookie.indexOf("esm_setup=");
	
	if (iIndex == -1)
	{
		location.href = "/ESM/SetupInstructions";
		return false;
	}
	
	return true;
}

function Send_Click(evt,ButtonToClick) 
{
		var keyCode = evt ? (evt.which ? evt.which : evt.keyCode) : event.keyCode;
		if (keyCode == 13) 
		{
			if (ButtonToClick == 'next')
			{
			validateStep();
			}
			else
			{
			ButtonToClick.click();
			return false;
			}
		}
		else 
		{
			return true;
		}
}

function capitalize(s)
{
	var temp = s.toLowerCase().split(/\s/);
	
	for(var i = 0; i < temp.length; i++)
		temp[i] = temp[i].charAt(0).toUpperCase() + temp[i].substring(1);
	
	return temp.join(" ");
}

function forceInteger(fld)
{
	iTemp = parseInt(fld.value);

	if (isNaN(iTemp))
		fld.value = 0;
	else
		fld.value = iTemp;
}

function getCookieVal(offset)
{
   var endstr = document.cookie.indexOf (";", offset);
   if (endstr == -1) endstr = document.cookie.length;
   return unescape (document.cookie.substring(offset, endstr));
}

function getCookie(name)
{
   var arg = name+"=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while (i < clen) {
      var j = i + alen;
      if (document.cookie.substring(i, j) == arg) return getCookieVal(j);
      i = document.cookie.indexOf(" ", i) + 1;
      if (i == 0) break;
   } return null;
}

function throwError(oParseError)
{
	if (oParseError.errorCode != 0)
		throw(new Error(oParseError.errorCode, oParseError.reason));
}

function killSession()
{
	var e;

	try
	{
		var xmlKillSession = new ActiveXObject("MSXML2.DOMDocument");
		xmlKillSession.async = false;
		xmlKillSession.resolveExternals = false;
		xmlKillSession.load("../killsession.asp");
		var nReturnValue = xmlKillSession.selectSingleNode("/Response/ReturnValue");
		if (nReturnValue != null)
			alert("Your session has been killed!");
		else
			alert("Unable to kill your session; it may have already been killed or it expired on its own.");
	}
	catch (e)
	{
		alert("Unable to kill your session; it have already been killed or it expired on its own.");
	}
}

function testSession(sFunction)
{
	var e;
	var xml = new ActiveXObject("MSXML2.DOMDocument")
	xml.async = false;
	xml.resolveExternals = false;
	try
	{
		xml.load("../xml/Test.xml");
	
	}
	catch(e) {}	
	if (xml.documentElement == null)
	{
		alert("Your session expired and you were logged out.  Please log in via the following popup window.");
		sRunFunction = sFunction;
		logonESM();
		return false;
	}
	
	return true;
}

function logonESM()
{
	window.open(sEcoNetServer + "/ESMAssets/ESM/redirect_logon.asp").focus();
}

function subtractNodes(el1, el2, elName, elField)
{
	nl1 = el1.selectNodes(elName);
	nl2 = el2.selectNodes(elName);

	var i = 0;
	var n2 = null;
	for (;;)
	{
		n2 = nl2.nextNode()
		if (n2 == null) break;
		
		for (i = 0; i < nl1.length; i++)
		{
			if (nl1[i].selectSingleNode(elField).text == n2.selectSingleNode(elField).text && nl1[i].selectSingleNode(elField).text != -1)
			{
				el1.removeChild(nl1[i]);
				break;
			}
		}
	}
}

function GetRow(oElem)
{
	while (oElem)
	{
		if (oElem.tagName.toLowerCase() == "tr"
		    && oElem.parentElement.tagName.toLowerCase() == "tbody") 
		    return oElem;
		if (oElem.tagName.toLowerCase() == "table") return false;
		oElem = oElem.parentElement;
	}
}

function TextAreaLength(el,maxLength){
   if(el.value.length > maxLength){
    var cutLength = el.value;
    cutLength = cutLength.substring(0, (maxLength));
    el.value = cutLength;
   }
}


var MINUTE = 60 * 1000;
var HOUR = 60 * MINUTE;
var DAY = 24 * HOUR;
var WEEK = 7 * DAY;

function calendarSelected(cal, date){
  cal.sel.value = date;
}

function calendarCloseHandler(cal){
  cal.hide();
}
function showCalendar(el, format, disabledHandler){
	if (calendar != null)		calendar.hide();
	else	{
		var cal = new Calendar(false, null, calendarSelected, calendarCloseHandler);
		calendar = cal;		cal.setRange(1900, 2070);
		cal.create();
	}	calendar.setDisabledHandler(disabledHandler);
	calendar.setDateFormat(format);	if (el.value != "")
		calendar.parseDate(el.value);
	else
		calendar.setDate(new Date());	calendar.sel = el;
	calendar.showAtElement(el);

	return false;
}