//temp validator
var tempValidators=new Array();
var tempMax;
/* cross browser */
var isIE = (window.ActiveXObject);

if (! isIE) {
   alert("This site works best with Internet Explorer \n Please open this site with IE version 6 or above");

  //Event.prototype.__defineGetter__("srcElement", function () { return(this.target); });
  Event.prototype.__defineGetter__("srcElement", function () {
    var node = this.target;
    while (node.nodeType != 1) node = node.parentNode;
    // test this:
    if (node != this.target) alert("Unexpected event.target!") // it still happens sometime, why ?
    return node;
  });
  
  Event.prototype.__defineSetter__("returnValue", function (b) {
    if (!b) this.preventDefault();
    this._returnValue = b;
    return(b);
  });
  
  Event.prototype.__defineGetter__("returnValue", function () {
    return (this._returnValue);
  });
  
  Event.prototype.__defineSetter__("cancelBubble", function (b) {
    if (b) this.stopPropagation();
    this._cancelBubble = b;
    return(b);
  });
  
  Event.prototype.__defineGetter__("cancelBubble", function () {
    return (this._cancelBubble);
  });
  
  Window.prototype.attachEvent = function(eventName, fHandler) {
	fHandler._wrapHandler = function (e) {
       window.event = e;
       fHandler();
       return (e.returnValue);
      };
    window.addEventListener(eventName.substr(2), fHandler._wrapHandler, false);
  };
  
  Window.prototype.detachEvent = function (eventName, fHandler) {
    if (fHandler._wrapHandler != null)
      this.removeEventListener(eventName.substr(2), fHandler._wrapHandler, false);
  };
  
  HTMLElement.prototype.attachEvent = function (eventName, fHandler) {
    fHandler._wrapHandler = function (e) {
       window.event = e;
       fHandler();
       return (e.returnValue);
      };
    this.addEventListener(eventName.substr(2), fHandler._wrapHandler, false);
  };
  
  HTMLElement.prototype.__defineGetter__("innerText", function() {
	return this.innerHTML.replace(/\&amp;gt;/g,"&gt;").replace(/\&amp;lt;/g,"&lt;").replace(/\&amp;amp;/g,"&amp;");
	});
	
  HTMLElement.prototype.__defineSetter__("innerText", function(s) {
	this.innerHTML = s;
	});
  
  HTMLElement.prototype.detachEvent = function (eventName, fHandler) {
    if (fHandler._wrapHandler != null)
      this.removeEventListener(eventName.substr(2), fHandler._wrapHandler, false);
  };	
  
  XMLDocument.prototype.selectSingleNode = function(xPath) {
    var doc = this;
    if (doc.nodeType != 9)
      doc = doc.ownerDocument;
    if (doc.nsResolver == null) doc.nsResolver = function(prefix) { return(null); };
    var node = doc.evaluate(xPath, this, doc.nsResolver, XPathResult.ANY_UNORDERED_NODE_TYPE, null);
    if (node != null) node = node.singleNodeValue;
    return(node);
  }; // selectSingleNode

  XMLDocument.prototype.selectNodes = function(xPath) {
    var doc = this;
    if (doc.nodeType != 9)
      doc = doc.ownerDocument;
    if (doc.nsResolver == null) doc.nsResolver = function(prefix) { return(null); };
    var nodes = doc.evaluate(xPath, this, doc.nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    return(nodes);
  }; // selectNodes

  Node.prototype.selectSingleNode = function(xPath) {
    var doc = this.ownerDocument;
    if (doc.nodeType != 9)
      doc = doc.ownerDocument;
    if (doc.nsResolver == null) doc.nsResolver = function(prefix) { return(null); };
    var node = doc.evaluate(xPath, this, doc.nsResolver, XPathResult.ANY_UNORDERED_NODE_TYPE, null);
    if (node != null) node = node.singleNodeValue;
    return(node);
  }; // selectSingleNode

  Node.prototype.selectNodes = function(xPath) {
	var xpe = new XPathEvaluator();
	var nsResolver = xpe.createNSResolver(this.ownerDocument == null ? this.documentElement : this.ownerDocument.documentElement);
	var result = xpe.evaluate(xPath, this, nsResolver, 0, null);
	var found = [];
	var res;
	while (res = result.iterateNext())
		found.push(res);
	return found;
  }; // selectNodes
  
  XPathResult.prototype.__defineGetter__("length", function () { return(this.snapshotLength); });

  Node.prototype.__defineGetter__("text", function () {
    return(this.textContent);
  }); // text

  Node.prototype.__defineSetter__("text", function (s) {
    this.textContent = s;
  }); // text
  
  Node.prototype.__defineGetter__("xml", function () {
    var objXMLSerializer = new XMLSerializer;
    var strXML = objXMLSerializer.serializeToString(this);
    return strXML;
  }); // xml
}
/* cross browser */

function setBeacon(image, timeout)
{
	window.setInterval(fireBeacon, timeout);
}

function fireBeacon()
{
	try
	{
	    var img = document.getElementById("beaconImage");
	    if (img != null)
	    {
	        var d = new Date();
		    img.src = "beaconImage.aspx?ms=" + d.getMilliseconds();
		}
	}
	catch (e) {}
}

function composeMail(toAddress, subject)
{
    var url = "owa/owalogon.aspx?mailto=" + toAddress;
    var width = 700;
	var height = 400;
	var left = (screen.width / 2) - (width / 2);
	var top = (screen.height / 2) - (height / 2);
	window.open(url, '_blank', 'directories=no,location=no,menubar=no,status=yes,toolbar=no,left=' + left + ',top=' + top + ',height=' + height + ',width=' + width);
}

function getIFrame(id, top, left, width, height, zIndex, visibility, display)
{
  var is_opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
  if (is_opera)
    return;
  
  var frameObject = document.getElementById(id);
  try {
    if (!frameObject) {
      frameObject = document.createElement("iFrame");
      frameObject.setAttribute("id", id);
      frameObject.setAttribute("name", id);
      frameObject.setAttribute("src", "javascript:false;");
      frameObject.setAttribute("scrolling", "no");
      frameObject.setAttribute ("frameborder", "0");
      document.body.appendChild(frameObject);
    }
    
    try {
      frameObject.style.position = "absolute";
      frameObject.style.width = width;
      frameObject.style.height = height;
      frameObject.style.top = top;
      frameObject.style.left = left;
      frameObject.style.zIndex = zIndex;
      frameObject.style.visibility = visibility;
      frameObject.style.display = display;
    } catch(e) {
    }
 
  } catch (ee) {
  }
  
  return frameObject;
}

// custom scripts for formview inputs.
// events are set up in the formview editor

function makeLoginAndEmail(fnameID, lnameID, loginID, emailID)
{
	var fname = document.getElementById(fnameID);
	var lname = document.getElementById(lnameID);
	var login = document.getElementById(loginID);
	var email = document.getElementById(emailID);
	
	if (fname.value == '') return;
	//var alias = fname.value.substr(0, 1).toLowerCase() + lname.value.toLowerCase();
	var alias = GetXml("webuser.aspx?f=" + fname.value + "&l=" + lname.value, true, null);
	
	if (login.value == '')
		login.value = alias;

	if (email.value == '')
		email.value = alias + '@bayada.com';
}

function RequiredAutoCompleteValidatorEvaluateIsValid(val) {
    var control = document.getElementById(val.controltovalidate);
    return (control.value.length > 0 && control.value != "0" && control.value != "undefined");
}

function RequiredInOutListValidatorEvaluateIsValid(val) {
    var control = document.getElementById(val.controltovalidate);
    return (control.options.length > 0);
}

function RequiredLocationSelectorValidatorEvaluateIsValid(val) {
    var control = document.getElementById(val.controltovalidate);
    return (control.selectedIndex > 0);
}

function RequiredCategoryTopicListValidatorEvaluateIsValid(val) {
    var control = document.getElementById(val.controltovalidate);
    return (control.options.length > 0);
}

function RequiredFileInputValidatorEvaluateIsValid(val) {
    var control = document.getElementById(val.controltovalidate);
    var content = document.getElementById(val.controltovalidate.replace("FileUpload", "Content"));
    var url = document.getElementById(val.controltovalidate.replace("FileUpload", "Url"));
    var hasContent = false;
    if (content.tagName == "A")
		hasContent = (content.innerText.length > 0);
	else if (content.tagName == "IMG")
		hasContent = (content.src.length > 0);	
	if (url != null && hasContent == false)
		hasContent = (url.value.length > 0);
    return (control.value.length > 0 || hasContent);
}

function disableControls(idArray, disable)
{
	for (i = 0; i < idArray.length; i++)
	{
		try
		{
			document.getElementById(idArray[i]).disabled = disable;
		}
		catch (e)
		{
			alert(e);
		}
	}
}

function BeforePaste(evt)
{
	stopEvent(evt);
}

function Paste(evt)
{
	stopEvent(evt);
	alert('quit it!');
}

function ChangeMask(propName, index, idPrefix)
{
	//try
	//{
		eval(idPrefix + propName + 'mask = ' + propName + 'mask' + index);
		var spans = document.getElementsByTagName('SPAN');
		var span = null;
		var att = null;
		for (i = 0; i < spans.length; i++)
		{
			span = spans[i];
			if (span.id.indexOf(idPrefix) < 0)
				continue;
			att = span.attributes.getNamedItem('name');
			if (att != null && att.value == 'rev' + propName)
				break;						
		}

		if (span != null)
		{
			att = span.attributes.getNamedItem('validationexpression');
			if (att != null)
				att.value = eval(propName + 'valid' + index);
			att = span.attributes.getNamedItem('errormessage');
			if (att != null)
				att.value = eval(propName + 'message' + index);
			span.innerText = eval(propName + 'message' + index);
		}
	//}
	//catch (e) {}
}

function showDiv(oDiv)
{
	if (oDiv.style.display == 'none')
	{
		oDiv.style.left = window.event.clientX;
		oDiv.style.top = window.event.clientY;
		oDiv.style.display = 'block';
	}
	else
	{
		oDiv.style.display = 'none';
	}
}

function UniqueIsPrimary(checkbox)
{
	var z = checkbox.id.indexOf("_input_IsPrimary");
	if (z > 0)
	{
		var prefix = checkbox.id.substring(0, checkbox.id.lastIndexOf("_", z - 1));
		if (checkbox.checked)
		{
			var checkboxes = document.getElementsByTagName("INPUT");
			if (checkboxes != null && checkboxes.length > 0)
			{
				for (i = 0; i < checkboxes.length; i++)
				{
					if (checkboxes[i].id.indexOf(prefix) == 0 && checkboxes[i].id != checkbox.id && checkboxes[i].id.indexOf("input_IsPrimary") > 0)
					{
						checkboxes[i].checked = false;
					}
				}
			}
		}
	}
}
function ChangeSeparationReason(list, swBID, swID,hfID)
{
   //debugger;
	//if (list.selectedIndex == 1)
		//return;
		
	var option = list.options[list.selectedIndex];
	var voluntary = option.attributes.getNamedItem("voluntary").value;
	var severanceWeeks=document.getElementById(swID)
	var seperationSeverance=option.attributes.getNamedItem("severance").value;
	var compensationTypeSeverance=document.getElementById(hfID).value;
	var rangeVal = document.getElementById(swBID + '_RangeValidator')
	var min=rangeVal.attributes.getNamedItem('minimumvalue').value
	var max=rangeVal.attributes.getNamedItem('maximumvalue').value
	 severanceWeeks.disabled=true;
	 rangeVal.attributes.getNamedItem('minimumvalue').value = 0; 
     rangeVal.attributes.getNamedItem('errorMessage').value=  "";
     rangeVal.innerText=""
	 if(compensationTypeSeverance=="TRUE")
	 {
	if (rangeVal != null)
	{ 
		if (seperationSeverance == "Required")
		{
		    severanceWeeks.disabled=false;
			rangeVal.innerText = "Severance Weeks must be greater than 0 ";
			rangeVal.attributes.getNamedItem('errorMessage').value = "Severance Weeks must be greater than 0 ";
			rangeVal.attributes.getNamedItem('minimumvalue').value = 1;
			min=1;
		}
		else if(seperationSeverance=="Allowed")
		{
		   rangeVal.attributes.getNamedItem('minimumvalue').value = 0;
		   min=0;
		   severanceWeeks.disabled=false;
		   if((severanceWeeks.value< min)||(severanceWeeks.value > max))
		   {
		  
			rangeVal.innerText = "Severance Weeks must be between "+ rangeVal.attributes.getNamedItem('minimumvalue').value +" and "+ max;
			rangeVal.attributes.getNamedItem('errorMessage').value = rangeVal.innerText
			}
			else
			{
			rangeVal.innerText="";
			rangeVal.attributes.getNamedItem('errorMessage').value="";
			}
			  
		}
		else
		{
		   severanceWeeks.innerText=0; 
		}
	}
		
	}
	else
		{
		   //rangeVal.attributes.getNamedItem('minimumvalue').value = 0;  
		  severanceWeeks.innerText=0;
		  //severanceWeeks.disabled=true;
		
		}
}

function DisableValidatorForLeagalNames(lID,lBID,fID,fBID,chk)
{ 
    var isChecked=document.getElementById(chk).checked;
    var freqVal=document.getElementById(fBID+'_RequiredFieldValidator')
    var lreqVal=document.getElementById(lBID+'_RequiredFieldValidator')
    var fname=document.getElementById(fID).value
    var lname=document.getElementById(lID).value

    if(fname!="")
    {
        freqVal.innerText="";
        freqVal.attributes.getNamedItem('errormessage').value ="";
    }
    else
    {
        freqVal.innerText="Legal First Name is required";
        freqVal.attributes.getNamedItem('errormessage').value ="Legal First Name is required"
    }
    if(lname!="")
    {
        lreqVal.innerText="";
        lreqVal.attributes.getNamedItem('errormessage').value ="";
    }
    else
    {
        lreqVal.innerText="Legal Last Name is required";
        lreqVal.attributes.getNamedItem('errormessage').value ="Legal Last Name is required"
    }  
}
function DisableValidatorOnStartup(lID,lBID,fID,fBID,chk)
{
   DisableValidatorForLeagalNames(lID,lBID,fID,fBID,chk)
   if(document.getElementById(chk).checked==true)
   {
     if (Page_ClientValidate(null))
       {
         Page_ValidationSummaries[0].headertext = "";
       }
    }
}
function indexInArray(theArray,theValue)
{
        for(var i=0;i<theArray.length-1;i++)
            {
              if(Page_Validators[i].id==theValue)
              return i;
              
            }
            return -1;
}

function ChangeRetroactivePayAmount(rID,rBID,eID)
{
    //debugger;
    var rAmount = document.getElementById(rID).value;
    var effectiveDate =getFieldDate(document.getElementById(eID)) ;
   
    var today = new Date();
    var rangeVal = document.getElementById(rBID + '_RangeValidator');
    var min = rangeVal.attributes.getNamedItem('minimumvalue').value;
    var max = rangeVal.attributes.getNamedItem('maximumvalue').value;
    var msg = "";
    var timeSpan = effectiveDate - today.setHours(0,0,0);
    timeSpan = Math.round(timeSpan / (1000 * 60 * 60 * 24));
 
    if((parseFloat(rAmount) < parseFloat(min))||(parseFloat(rAmount) > parseFloat(5000)))
    {
        msg = "Retroactive Amount must be between " + min + " and " + max;
        rangeVal.attributes.getNamedItem('errorMessage').value = msg;
        rangeVal.innerText = msg;
    }
    else
    {
        if(timeSpan >=0)
        {
            tempMax = max;
            rangeVal.attributes.getNamedItem('minimumvalue').value = 0;
            rangeVal.attributes.getNamedItem('maximumvalue').value = 0;
            msg = "You may only enter retroactive pay if the Effective Date is prior to today.";
            rangeVal.attributes.getNamedItem('errorMessage').value = msg;
            rangeVal.innerText = msg;
        }
        else
        {
            rangeVal.attributes.getNamedItem('minimumvalue').value = 0;
            rangeVal.attributes.getNamedItem('maximumvalue').value = 5000;           
            rangeVal.attributes.getNamedItem('errorMessage').value = "";
            rangeVal.innerText = "";
        }
    }
}

function ChangeCompensationType(list, swBID, swID, calcID)
{
	if (list.selectedIndex == -1)
		return;
	
	var option = list.options[list.selectedIndex];
	
	var lText = option.attributes.getNamedItem("ratetext").value;
	var min = option.attributes.getNamedItem("minrate").value;
	var max = option.attributes.getNamedItem("maxrate").value;
	
	var msg = "  " + lText + " must be between " + min + " and " + max;
	
	var swLabel = document.getElementById(swBID + 'lbl');
	if (swLabel != null)
	{
		swLabel.innerText = lText + ":";
		
	}
	
	
	var rangeVal = document.getElementById(swBID + '_RangeValidator')
	if (rangeVal != null)
	{
	   
		rangeVal.attributes.getNamedItem('errorMessage').value = msg;
		rangeVal.innerText = msg;
		rangeVal.attributes.getNamedItem('minimumvalue').value = min;
		rangeVal.attributes.getNamedItem('maximumvalue').value = max;
		rangeVal.style.visibility = 'hidden';
	}
	var salaryOrWage=document.getElementById(swID).value;
	if(salaryOrWage > 0)
	    Page_ClientValidate(null);
	
	CalcCompensation(list, swID, calcID);
}

function CalcCompensation(list, swID, calcID)
{
    
	var option = list.options[list.selectedIndex];
	
	var swText = document.getElementById(swID);
	var calcLabel = document.getElementById(calcID);
	
	var formula = option.attributes.getNamedItem("annualcalc").value;
	formula = formula.replace("{0}", swText.value);
	
	if (formula.indexOf("*") < 0)
	{
		calcLabel.innerText = parseFloat("0.00").toFixed(2);
		calcLabel.disabled=true;
	}
		
	else
	{	
	    calcLabel.disabled=false;	
		calcLabel.innerText = addSeparatorsNF(eval(formula), '.', '.', ',');
		
	}
}

function CalcWeeklyCompensation(swID,calcID)
{
    //debugger
   var swLabel = document.getElementById(swID);
	var calcLabel = document.getElementById(calcID);
    var formula=calcLabel.value.replace(/,/g,'');
	var weeklyWage=parseFloat(formula)/52;
	if(isNaN(weeklyWage))
	swLabel.innerText=parseFloat("0.00").toFixed(2);
	else
	swLabel.innerText=weeklyWage.toFixed(2);
	
	//calcLabel.innerText = addSeparatorsNF(eval(formula),'.','.',',');

}

function addSeparatorsNF(nStr, inD, outD, sep)
{
	nStr += '';
	var dpos = nStr.indexOf(inD);
	var nStrEnd = '';
	if (dpos != -1) {
	    nStrEnd=nStr.substring(dpos + 1, nStr.length)
		nStrEnd = outD +nStrEnd.substring(0,2) ;
		nStr = nStr.substring(0, dpos);
	}
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(nStr)) {
		nStr = nStr.replace(rgx, '$1' + sep + '$2');
	}
	return nStr + nStrEnd;
}

var g_PopUpQS = null;

function OpenPopUp(w, h, page, type, idControlID, valControlID, txtControlID, postBack, scroll, qs)
{
	// package client controls to pass to dialog
	var args = new Object();
	args.document = document;
	args.id = (idControlID == '' ? null : document.forms[0].elements[idControlID]);
	args.val = (valControlID == '' ? null : document.forms[0].elements[valControlID]);
	args.txt = (txtControlID == '' ? null : document.forms[0].elements[txtControlID]);
	
	var ret = RunModalPopUp(w, h, page, type, args, scroll, qs);

	if (postBack)
	{
		cleanForm();
		
		if (idControlID != null && idControlID.length > 0)
			__doPostBack(idControlID, '');
		else if (valControlID != null && valControlID.length > 0)
			__doPostBack(valControlID, '');
		else if (txtControlID != null && txtControlID.length > 0)
		{
			document.forms[0].elements[txtControlID].value = qs;
			__doPostBack(txtControlID, '');
		}
	}

	window.event.returnValue = false;
}

function RunModalPopUp(w, h, page, type, args, scroll, qs)
{
	var sSeed = '';
	if (args != null)
	{
		try
		{
			sSeed = (args.txt ? '&seed=' + args.txt.value : '');
		}
		catch (e) {}
	}
	if (g_PopUpQS != null && g_PopUpQS.length > 0)
		qs += g_PopUpQS;
	var sUrl = page + '?popup=' + type + sSeed + qs;
	var sFeatures = 'dialogWidth:' + w + 'px; dialogHeight:' + h + 'px; status:no; help:no; scroll:' + scroll + ';';

	// crashes IE after the following sequence only when smartNav is on:
	// popup, postback, popup
	document.body.style.filter = 'Alpha(Opacity=45, Style=0)';
	
	var ret = window.showModalDialog(sUrl, args, sFeatures);

	document.body.style.filter = '';
	
	return ret;
}

function GlobalSearch(searchTextBox, searchButtonID)
{
	var btn = document.getElementById(searchButtonID);
	if (btn != null)
	{
		btn.disabled = (searchTextBox.value.length == 0);
		if (!btn.disabled && window.event.keyCode == 13)
		{		
			window.event.cancelBubble = true;
			window.event.returnValue = false;
			btn.click();
		}
	}
}

function moveToBottom(id)
{
	if (isIE)
	{
		var t = document.getElementById(id);
		if (t != null)
		{
			t.style.position = "absolute";
			t.style.left = "0px";
			t.style.bottom = "0px";
		}
	}
}

function GetXml(url, justText, callback)
{
	var xmlHttpRequest = null;
	if (isIE)
	{
		xmlHttpRequest = new ActiveXObject('MSXML2.XMLHTTP');
	}
	else
	{
		xmlHttpRequest = new XMLHttpRequest();
	}
	
	// add random number to avoid caching
	url += '&rnd=' + Math.random();
	
	if (callback == null) // synchronous
	{
		xmlHttpRequest.open('GET', url, false);
		xmlHttpRequest.send(null);
		
		var node = null;
		if (xmlHttpRequest.responseXML.documentElement != null)
			xmlHttpRequest.responseXML.documentElement.selectSingleNode('//exception');
		if (node != null)
		{
			alert(node.text);
		}
		else
		{
			if (justText)
			{
				return xmlHttpRequest.responseText;
			}
			else
			{
				return xmlHttpRequest.responseXML;
			}
		}
		return null;
	}
	else // asynchronous
	{
		xmlHttpRequest.open('GET', url, true);
		xmlHttpRequest.onreadystatechange = function()
		{
			if (xmlHttpRequest.readyState == 4)
			{
				callback(xmlHttpRequest);
			}
		}
		xmlHttpRequest.send(null);
		return xmlHttpRequest;
	}
}

/* Event Functions */

// Add an event to the obj given
// event_name refers to the event trigger, without the "on", like click or mouseover
// func_name refers to the function callback when event is triggered
function addEvent(obj, event_name, func_name){
	if (obj.attachEvent){
		obj.attachEvent("on"+event_name, func_name);
	}else if(obj.addEventListener){
		obj.addEventListener(event_name,func_name,true);
	}else{
		obj["on"+event_name] = func_name;
	}
}

// Removes an event from the object
function removeEvent(obj,event_name,func_name){
	if (obj.detachEvent){
		obj.detachEvent("on"+event_name,func_name);
	}else if(obj.removeEventListener){
		obj.removeEventListener(event_name,func_name,true);
	}else{
		obj["on"+event_name] = null;
	}
}

// Stop an event from bubbling up the event DOM
function stopEvent(evt){
	evt || window.event;
	if (evt.stopPropagation){
		evt.stopPropagation();
		evt.preventDefault();
	}else if(typeof evt.cancelBubble != "undefined"){
		evt.cancelBubble = true;
		evt.returnValue = false;
	}
	return false;
}

// Get the obj that starts the event
function getElement(evt){
	if (window.event){
		return window.event.srcElement;
	}else{
		return evt.currentTarget;
	}
}
// Get the obj that triggers off the event
function getTargetElement(evt){
	if (window.event){
		return window.event.srcElement;
	}else{
		return evt.target;
	}
}
// For IE only, stops the obj from being selected
function stopSelect(obj){
	if (typeof obj.onselectstart != 'undefined'){
		addEvent(obj,"selectstart",function(){ return false;});
	}
}

/*    Caret Functions     */

// Get the end position of the caret in the object. Note that the obj needs to be in focus first
function getCaretEnd(obj){
	if(typeof obj.selectionEnd != "undefined"){
		return obj.selectionEnd;
	}else if(document.selection&&document.selection.createRange){
		var M=document.selection.createRange();
		try{
			var Lp = M.duplicate();
			Lp.moveToElementText(obj);
		}catch(e){
			var Lp=obj.createTextRange();
		}
		Lp.setEndPoint("EndToEnd",M);
		var rb=Lp.text.length;
		if(rb>obj.value.length){
			return -1;
		}
		return rb;
	}
}
// Get the start position of the caret in the object
function getCaretStart(obj){
	if(typeof obj.selectionStart != "undefined"){
		return obj.selectionStart;
	}else if(document.selection&&document.selection.createRange){
		var M=document.selection.createRange();
		try{
			var Lp = M.duplicate();
			Lp.moveToElementText(obj);
		}catch(e){
			var Lp=obj.createTextRange();
		}
		Lp.setEndPoint("EndToStart",M);
		var rb=Lp.text.length;
		if(rb>obj.value.length){
			return -1;
		}
		return rb;
	}
}
// sets the caret position to l in the object
function setCaret(obj,l){
	obj.focus();
	if (obj.setSelectionRange){
		obj.setSelectionRange(l,l);
	}else if(obj.createTextRange){
		m = obj.createTextRange();		
		m.moveStart('character',l);
		m.collapse();
		m.select();
	}
}
// sets the caret selection from s to e in the object
function setSelection(obj,s,e){
	obj.focus();
	if (obj.setSelectionRange){
		obj.setSelectionRange(s,e);
	}else if(obj.createTextRange){
		m = obj.createTextRange();		
		m.moveStart('character',s);
		m.moveEnd('character',e);
		m.select();
	}
}

/*    Escape function   */
String.prototype.addslashes = function(){
	return this.replace(/(["\\\.\|\[\]\^\*\+\?\$\(\)])/g, '\\$1');
}
String.prototype.trim = function () {
    return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};
/* --- Escape --- */

/* Offset position from top of the screen */
function curTop(obj){
	toreturn = 0;
	while(obj){
		toreturn += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return toreturn;
}
function curLeft(obj){
	toreturn = 0;
	while(obj){
		toreturn += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return toreturn;
}
/* ------ End of Offset function ------- */

/* Types Function */

// is a given input a number?
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}

/* Object Functions */

function replaceHTML(obj,text){
	while(el = obj.childNodes[0]){
		obj.removeChild(el);
	};
	obj.appendChild(document.createTextNode(text));
}

function CreateXmlDocument(xml)
{
    var doc = null;
	if (isIE)
	{
		doc = new ActiveXObject('MSXML2.DOMDocument.3.0');
		doc.loadXML(xml);
	}
	else
	{
		var parser = new DOMParser();
		doc = parser.parseFromString(xml, 'text/xml');
	}
	return doc;
}

function GetWebServiceResponse(url, xmlns, method, keys, values)
{
	var body = '';
    if (keys != null && values != null && keys.length == values.length)
	{
       if (keys.length > 0)
		    {
			for (i = 0; i < keys.length; i++)
			  {
				body += '<' + keys[i] + '>' + values[i] + '</' + keys[i] + '>';		
			 }
		}
	}
	return CallWebService(url, xmlns, method, body, null);
}

function CallWebService(url, xmlns, method, body, callback)
{	
   
	// Create the SOAP request.
	var request = '<?xml version="1.0" encoding="utf-8"?>';
	request += '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">';
	request += '<soap:Body>';
	request += '<' + method + ' xmlns="'+ xmlns + '">' + body + '</' + method + '>';
	request += '</soap:Body>';
	request += '</soap:Envelope>';
	
	// Send the HTTP POST request.
	
	var xhttp = null;
	if (isIE)
	{
		xhttp = new ActiveXObject('MSXML2.XMLHTTP');
	}
	else
	{
		xhttp = new XMLHttpRequest();
	}
	
	var async = (callback != null);
	
	xhttp.open('POST', url, async);
	xhttp.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
	xhttp.setRequestHeader('Content-Length', request.length);
	xhttp.setRequestHeader('SOAPAction', xmlns + method);
	
	if (async)
	{
		xhttp.onreadystatechange = function()
		{
			if (xhttp.readyState == 4)
			{
				callback(xhttp);
			}
		}
	    xhttp.send(request);
	}
	else
	{ 
	    xhttp.send(request);
	    var doc = CreateXmlDocument(xhttp.responseText);
               
	    if (doc.documentElement != null)
	    {	       
		    //WO 140980 (Sonja V. 02/03/2009): the sizing of the instruction windows were off when a user
		    //went to netscape or firefox. I also noticed that Firefox and netscape would
		    //error out when the web service was called. Although the same error was occuring in 
		    //Internet Explorer, it was not showing the error to users.
		    //Syntax below was returning a null. Changed syntax to the getElementsByTagName.
		    
		    //var node = doc.documentElement.selectSingleNode('//' + method + 'Result');
		    var node = doc.getElementsByTagName(method + 'Result')[0];
		    if (node != null)
		    {
		        return node.text;
		    }
		    else
		    {
		        //node = doc.documentElement.selectSingleNode('//' + method + 'Response');
		        //node = doc.documentElement.childNodes[0].childNodes[0]
		        node=doc.getElementsByTagName(method + 'Response')[0];
		        if (node != null) {
		            return node;
		        } else {
		        
			        //node = doc.documentElement.selectSingleNode('//faultstring');
			        node=doc.getElementsByTagName(method + 'faultstring')[0];
			        
			        if (node != null)
			        {
			           alert('error: ' + node.text);
			        }
			        else
			        {
			            alert('error (doc): ' + doc.documentElement.xml);
			        }
			        alert('url: ' + url);
			        alert('method: ' + method);
			        alert('body: ' + body);
			        return 'wsclient failed';
			    }
		    }
	    }
	    else
	    {
	        return '';
	    }
	}
}
	
	
	function CheckExpiration(sID,eID,eBID)
  {
   //debugger;
   var sDate=new Date(document.getElementById(sID).value);
   var eDate=new Date(document.getElementById(eID).value);
   var oneDay=1000*24*60*60;
   var days=Math.ceil((eDate.getTime()-sDate.getTime())/(oneDay));
   var ExpirationDays=30;
   var compareVal = document.getElementById(eBID + '_CompareValidator')
   compareVal.attributes.getNamedItem('operator').value="GreaterThanEqual";
   


      
      if(eDate < sDate)
      {
        compareVal.attributes.getNamedItem('errorMessage').value="Ad Ends cannot be before Ad Begins";
        compareVal.innerText="Ad Ends cannot be before Ad Begins"; 
        
      }
      else
      {
        ExpirationDays=GetWebServiceResponse("Services\\ConfigurationSettings.asmx","http://bayada.com/","GetSettingKeyValue",new Array("sectionName","key"),new Array("JobBank","ExpirationDays"))
        if(days > ExpirationDays)
         {
           compareVal.attributes.getNamedItem('errorMessage').value="Expiration Date must be <="+ExpirationDays+ " days from start date";
           compareVal.innerText="Expiration Date must be <="+ExpirationDays+ " days from start date";
           compareVal.attributes.getNamedItem('operator').value="LessThan";
         }
         else
         {
           compareVal.attributes.getNamedItem('errorMessage').value="";
           compareVal.innerText="";
         }
      }
      
     
    
  }
  
  function ValidateForOffices(val,args)
  {
    //debugger;
    var offices=new Array();
    var customValidator;
    for(i=0;i<Page_Validators.length;i++)
    {
    if(Page_Validators[i].id.indexOf(val.id) > -1)
    {
    customValidator=Page_Validators[i];
    Page_Validators.splice(i,1);//removing custom validators from the validationgroup list because we have to call Page_ClientValidate to validate remaing validators
    break;
    }
    }
    if(Page_ClientValidate(null)==true)//validate to see other validators are valid if not show the validation messages other wise show the msg box
    {
    offices=val.parentElement.innerText.split("\n");
    if(offices.length >2)
    {
    
    //var i=confirm("Click OK to separate employee from the company,"+"\nClick Cancel to transfer employee to another office");
    var i=callConfirm("Separation", "This employee belongs to more than one office!  Separation will end employment for all offices.  Click OK to separate from the company.  Click Cancel to transfer to another office.","OK","Cancel","Exclamation");
    if(i==1)
    
    {
     args.IsValid=true;
    }
    else
    {
    args.IsValid=false;
    window.detachEvent('onbeforeunload', onLeaveForm); //detach the event no need of showing the alert that changes will be lost
    Page_Validators.unshift(customValidator);     //add validator back to the validation group
    var url=document.URL.replace("TerminateChange","TransferChange");
    window.location=url;
    }
    
    }
    else
    args.IsValid=true;
    }
   
    
  }

  
  function showHide(lnk)
{
  
  var lnkText=document.getElementById(lnk.id).innerText;
  if(lnkText=='Show')
  {
   document.getElementById(lnk.id).innerText="Hide";
   document.getElementById("_ctl2__ctl7_optional").style.display='block';
  }
  else
  {
  document.getElementById(lnk.id).innerText="Show";
   document.getElementById("_ctl2__ctl7_optional").style.display='none';
  }
  return false;
}

function overrideReqField(chk,parent,required)
{
 var chkBox=document.getElementById(chk.id);
 var control=document.getElementById(parent.id);
 var controlLength;
 var tempErrorText;
 var makeFieldRequired;

 if (chkBox.checked)
 {
    // user is overriding
    makeFieldRequired = !required;
 }
 else
 {
    // user is not overriding
    makeFieldRequired = required;
 }

 if(makeFieldRequired)
  {
  // turn on required
   control.className = 'required';
    for(var i=0;i<tempValidators.length;i++)
     {
      if(control.id==tempValidators[i][0].controltovalidate)
       {
         document.getElementById(tempValidators[i][0].id).innerText=tempValidators[i][1];
         Page_Validators.unshift(tempValidators[i][0]);
         tempValidators.splice(i,1);
         break;
       }
     }
    if(control.options!=null)
      {
        controlLength=control.options.length;
        if(control.options[controlLength-1]!=null)
        {
          if(control.options[controlLength-1].innerText=='')
          control.options[controlLength-1]=null;
          //control.options.selectedIndex=0;
        }
      }
  }
 else
   {
   // turn off required
   control.className = '';
    for(var i=0;i<Page_Validators.length;i++)
     {
      if(control.id==Page_Validators[i].controltovalidate)
       {
         tempErrorText=document.getElementById(Page_Validators[i].id).innerText;
         document.getElementById(Page_Validators[i].id).innerText="";
         tempValidators[tempValidators.length]=new Array(2);
         tempValidators[tempValidators.length-1][0]=Page_Validators[i];
         tempValidators[tempValidators.length-1][1]=tempErrorText;
         Page_Validators.splice(i,1);
         break;
       }
     }
     if(control.options!=null)
      {
//        controlLength=control.options.length
//        var option=new Option("",0);
//        control.options[controlLength]=option;
        control.options.selectedIndex=0;
      }
  }
 
}
function validateBirthDate(val,args)
{
 
 var bdate=new Date(val.parentElement.children[0].value);
 var today=new Date();
 var timeSpan = today.setHours(0,0,0)-bdate;
  timeSpan = Math.round(timeSpan / (1000 * 60 * 60 * 24));
  if(timeSpan < 4380)
  {
   val.innerText=' Prosect must be at least 12 years old';
   val.attributes.getNamedItem('errorMessage').value=' Prospect must be at least 12 years old';
   args.IsValid=false;
  }
}
function  TabsValidation(eve,panelCount)
{
  
  for (i=0; i<Page_Validators.length; i++) 
      {
        if (!Page_Validators[i].isvalid)
        {
        var e=Page_Validators[i].parentElement;
        while(e.id.indexOf("_Panel_")==-1)
         {
         e=e.parentElement;
         }
         //ShowHidePanel(null, panelCount,e.id.substring(0,e.id.indexOf("_Panel_")),e.id.substring(e.id.lastIndexOf("_")+1,e.id.length),e.id)
         var panelIndex=e.id.substring(e.id.lastIndexOf("_")+1,e.id.length);
           
		     var oDivs = document.getElementsByTagName('UL');
		     if (oDivs != null && oDivs.length > 0)
		      {
			     for (p = 0; p < oDivs.length; p++)
			      {
				    for(q=0;q<oDivs[p].childNodes.length;q++)
				    {
				      var id=oDivs[p].childNodes[q].childNodes[0].id;
				      if(id.indexOf("_PanelLink_"+panelIndex) > -1)
				      {
				        document.getElementById(id).click();
				        //ShowHidePanel(null, panelCount,e.id.substring(0,e.id.indexOf("_Panel_")),e.id.substring(e.id.lastIndexOf("_")+1,e.id.length),e.id)
				        stopEvent(eve);
				        return false;
				      }
				    }
			       }
		       }
		      
	        
        
        }
        }
        stopEvent(eve); 
        return false;
}