var normalClass = "normalText"
var configClass = "configText"
var errorClass = "error"
var reqClass = "required"

function ChangeSpecChar(str)
{
	//str = str.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
	str = str.replace(/\#/g,"&#35;"); 
	str = str.replace(/\&(?!\#)/g,"&#38;"); 
	str = str.replace(/\</g,"&lt;"); 
	str = str.replace(/\>/g,"&gt;"); 
	str = str.replace(/\(/g,"&#40;"); 
	str = str.replace(/\)/g,"&#41;"); 
	str = str.replace(/\"/g,"&quot;"); 
	str = str.replace(/\'/g,"&#39;"); 
	str = str.replace(/\$/g,"&#36;"); 
	str = str.replace(/\%/g,"&#37;"); 
	str = str.replace(/\+/g,"&#43;"); 
	str = str.replace(/\-/g,"&#45;"); 
	
	return str;
}

function checkDelete(txt)
{
  var agree = confirm("This " + txt + " will be archived and deleted\n"
              + "within the next 24-48 hours.\n\n"
              + "Are you sure you want to delete this " + txt + "?");
  if (agree)
	  return true ;
  else
	  return false ;
}

function checkEmail(obj, errorID, bFocus)
{//SAME AS 'isValidEmail' except this is for fields NOT REQUIRED
	var regValid = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z]{2,4})$/;
	if (obj.value == '' || regValid.test(obj.value))
	{
		if (errorID && getElement(errorID))
			hidereq(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			displayreq(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function checkKeyDown(evt)
{
	var evt = (evt) ? evt : ((window.event) ? window.event : "")
	if (evt)
	{
		var target
		if (evt.target) //nn6+
		{
			if (evt.target.attributes == null) // [object Text]
				target = evt.target.parentNode
			else
				target = evt.target
		}
		else	//ie
			target = event.srcElement;
			
		if (evt.keyCode==13)
		{
			evt.cancelBubble=true;
			if (evt.stopPropagation) evt.stopPropagation();

			if (target)
			{
				target.form.submitbutton.focus();
				target.form.submitbutton.click();
			}			
			return false;
		}
	}
	
	return true;
}

function checkPassLength(obj, errorID, minLength, bFocus)
{
  if(obj)
  {
    if(obj.value != '' && obj.value.length >= minLength)
	  {
	    if (errorID && getElement(errorID))
		    hide(errorID);
	    return true;
	  }else{
  	  if (errorID && getElement(errorID))
	  	  display(errorID);
		  if (bFocus)
		    obj.focus();
  		return false;
	  }
  }
}

function checkRules(form)
{	
	var bReturn = true;
	for (var ielemnt = form.elements.length-1; ielemnt >= 0; ielemnt--) 
    {
        var sName  = 'form.'+form.elements[ielemnt].name
        var fFunct = form.elements[ielemnt].onchange
        if (fFunct)
        {
            sFunct = fFunct.toString()
            if (sFunct != "" && sFunct.search(/isvalid/i) >=0 )
            { 
                sFunct = sFunct.replace(/^(\s|\S)*(isvalid)/i, "$2")
                sFunct = sFunct.replace(/(\s)*(})$/, "")
                if (sFunct != "")
                {
                    sFunct = sFunct.replace(/this/i, sName)
                    sFunct = sFunct.replace(/\)$/, ", true)")
                    bReturn = (eval(sFunct) && bReturn);
                }
            }
        }
     }
	return bReturn;
}

function checkStateProvince(form, bFocus)
{
	var bReturn = true;
	if(form._country_code.options[form._country_code.options.selectedIndex].value != "")
	{
	  if(form._country_code.options[form._country_code.options.selectedIndex].value == "US")
		{
		  bReturn = (checkStateProvinceSelection(form._state, 'req_state', bFocus) && bReturn);
			hidereq('req_province');
		}else{
			bReturn = (verRequired(form._province, 'req_province', bFocus) && bReturn);
			hidereq('req_state');
		}
	}
	return bReturn;
}

function checkStateProvinceSelection(obj, errorID, bFocus)
{//second and third arguments are optional
  if (obj.options.selectedIndex != 0)
	{
	  if (errorID && getElement(errorID))
			hidereq(errorID);
	  return true;
	}else{
	  if (errorID && getElement(errorID))
		  displayreq(errorID);
	  if (bFocus)
		  obj.focus();
	  return false;
	}
}


function compDates(date1,date2,format)
{// Works using dd, mm, yyyy as FORMAT with "-" or "/" as seperator
	var d, m, y
	format = format.replace(/-/g, "/")
	date1 = date1.toString()
	date1 = date1.replace(/-/g, "/")
	date2 = date2.toString()
	date2 = date2.replace(/-/g, "/")
	var tempDate1 = date1.split("/")
	var tempDate2 = date2.split("/")
	var Format = format.split("/")
	for(var i=0;i<3;i++)
	{
		if(Format[i] == "dd"){
			d = i
		}else if (Format[i] == "mm"){
			m = i
		}else{
			y = i
		}
	}
	var compDate1, compDate2
	var today = new Date()
	compDate1 = new Date(tempDate1[y], parseInt(tempDate1[m] - 1), parseInt(tempDate1[d]))
	compDate2 = new Date(tempDate2[y], parseInt(tempDate2[m] - 1), parseInt(tempDate2[d]))
	return(compDate1 > compDate2)
}

function compPasswords(obj1, obj2, errorID, bFocus)
{//third and fourth arguments are optional
	if (obj1.value == obj2.value)
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
		obj1.value = ""
		obj2.value = ""
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj1.focus()
		return false;
	}
}

function confirmOpenClose(form, text)
{
 var agree = confirm('Manual Controller Override!\nAre you sure you want to ' + text + ' the well?');
 if(agree){
  return true; //disableAllButtons(form, true);  
 }else{
  document.body.style.cursor = "default";
  return false;
 }
}

function convertValues(form)
{	
	for (var ielemnt = form.elements.length-1; ielemnt >= 0; ielemnt--) 
    {
        var sName  = 'form.'+form.elements[ielemnt].name
        var fFunct = form.elements[ielemnt].onchange
        if (fFunct)
        {
            sFunct = fFunct.toString()
            if (sFunct != "" && sFunct.search(/isvalidzip/i) >=0 )
            { 
                form.elements[ielemnt].value = form.elements[ielemnt].value.replace(/(\-)/g,"");
            }
            if (sFunct != "" && sFunct.search(/isvalidphone/i) >=0 )
            { 
                form.elements[ielemnt].value = form.elements[ielemnt].value.replace(/(\-|\(|\))/g,"");
            }
            if (sFunct != "" && sFunct.search(/isvalidamt/i) >=0 )
            { 
                form.elements[ielemnt].value = form.elements[ielemnt].value.replace(/(,)/g,"");
            }
        }
     }
}

function disableAllButtons(form, bool)
{
  document.body.style.cursor = "wait";
  for(var i=0;i<form.elements.length;i++)
  {
    if(form.elements[i].type.toLowerCase()=="submit"){
      form.elements[i].style.cursor = "wait";
      form.elements[i].disabled = bool;
    }
  }
  return true;
}


function display(object) 
{
    if (document.getElementById && document.getElementById(object) != null) 
	{
         node = document.getElementById(object).style.display = 'block';
	}
    else if (document.layers && document.layers[object] != null) 
	{
        document.layers[object].display = 'block';
	}
    else if (document.all) 
	{
        document.all[object].style.display = 'block';
	}
}

function deletePush(txt)
{
	var agree = confirm("This " + txt + " will be archived and deleted\n"
              + "within the next 24-48 hours.\n\n"
              + "Are you sure you want to delete this " + txt + "?");
  if (agree)
	{
		document.forms[0].action.value = "delete";
		document.forms[0].submit();
	}
}

function displayreq(object) 
{
    if (document.getElementById && document.getElementById(object) != null) 
	{
         node = document.getElementById(object).className = errorClass;
	}
    else if (document.layers && document.layers[object] != null) 
	{
        document.layers[object].className = errorClass;
	}
    else if (document.all) 
	{
        document.all[object].className = errorClass
	}
}

function emptyString(val) 
{
	if (val.replace(/\s+/g,"") == "")
		return true
	else
		return false
}

function fillNotes(objID,labelObjID,notesObjID,notesText)
{
  if (document.getElementById && (document.getElementById(objID) != null) && (document.getElementById(labelObjID) != null) && (document.getElementById(notesObjID) != null))
  {
    //First Fill In NOTES FIELD
    var notesObj = document.getElementById(notesObjID);
    notesObj.value = notesText;
    //Now Change Label Color (checked/not checked)
    var checkboxObj = document.getElementById(objID);
    var labelObj = document.getElementById(labelObjID);
    if(checkboxObj.checked)
    {
      labelObj.className = configClass;
    }else{
      labelObj.className = normalClass;
    }
  }
}


function getElement(elID)
{
	var obj;
		
    if (document.getElementById && document.getElementById(elID) != null)
         obj = document.getElementById(elID);
    else if (document.all)
        obj = document.all[elID];
		
	return obj;
}

function hide(object) 
{
    if (document.getElementById && document.getElementById(object) != null) 
	{
         node = document.getElementById(object).style.display = 'none';
	}
    else if (document.layers && document.layers[object] != null) 
	{
        document.layers[object].display = 'none';
	}
    else if (document.all) 
	{
         document.all[object].style.display = 'none';
	}
}

function hideHoverOver(hoID)
{
	hide(hoID);
}

function hidereq(object) 
{
    if (document.getElementById && document.getElementById(object) != null) 
	{
         node = document.getElementById(object).className = reqClass;
	}
    else if (document.layers && document.layers[object] != null) 
	{
        document.layers[object].className = reqClass;
	}
    else if (document.all) 
	{
         document.all[object].className = reqClass;
	}
}

function isEmpty(objID, errorID, bFocus)
{//second and third arguments are optional
	if (document.getElementById && document.getElementById(objID) != null) 
	{
	  var obj = document.getElementById(objID)
	  if (obj.value.replace(/\s+/g,"") != "")
	  {
		  if (errorID && getElement(errorID))
			  hide(errorID);
  		return true;
	  }
	  else
	  {
		  if (errorID && getElement(errorID))
			  display(errorID);
  		if (bFocus)
	  		obj.focus();
		  return false;
  	}
  }
}


function isTotalPercent(errorID, bFocus, total)
{
	nTotal = 0
	for (i=0; i < isTotalPercent.arguments.length-3; i++)
	{
		if (isTotalPercent.arguments[i+3] && getElement(isTotalPercent.arguments[i+3]) && parseInt(getElement(isTotalPercent.arguments[i+3]).value))
					nTotal += parseInt(getElement(isTotalPercent.arguments[i+3]).value);
	}
	
	if (getElement(total))
		getElement(total).value = nTotal;
		
	if (nTotal == 100)
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			getElement(total).focus()
		return false;
	}
}

function isValidCharValue(objID, badChar, errorID, bFocus)
{
  if (objID && badChar && getElement(objID))
  {
    var bReturn = true;
    var obj = getElement(objID)
    for(var i=0;i<obj.value.length;i++)
    {
      if (obj.value.charAt(i) == badChar)
      {
        bReturn = false;
      }
    }
    if(!bReturn)
    {
      if (errorID && getElement(errorID))
			  display(errorID);
		  if (bFocus)
  			obj.focus()
	  	return false;  
    }
    if (errorID && getElement(errorID))
		  hide(errorID);
    return true;
  }
}

function isValidComments(obj, errorID, bFocus)
{//second and third arguments are optional
	var regValid = /^(\S|\s){0,256}$/;
	if (regValid.test(obj.value))
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidDate(obj, errorID, bFocus)
{
	var bResult = true;
	var strValue = obj.value;
	var regValid = /^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/;
	if (regValid.test(strValue))
	{
		var aDate, iMonth, iDay, iYear;
		aDate = strValue.split("/");

		// Check Month range
		if (parseInt(aDate[0],10)  < 1 || parseInt(aDate[0],10)  > 12)
			bResult = false;
		// Check Day Range
		if (parseInt(aDate[1],10)  < 1 || parseInt(aDate[1],10)  > lastDayOfMonth(aDate[0],aDate[2]))
			bResult = false;
		// Check year range
		if (parseInt(aDate[2],10)  < 1900)
			bResult = false;
		if (parseInt(aDate[2],10)  > 2078)
			bResult = false;
	}
	else 
	{
		if (strValue.replace(/\s+/g,"") != "")
			bResult = false;
	}
	
	if (bResult)
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;			
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidDomain(obj, errorID, bFocus)
{
	var regValid = /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,4}$/;
	if (obj.value != '' && regValid.test(obj.value))
	{
		if (errorID && getElement(errorID))
			hidereq(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			displayreq(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidDomainObj(obj)
{
  var regValid = /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,4}$/;
	return regValid.test(obj.value);
}

function isValidEmail(obj, errorID, bFocus)
{
	var regValid = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z]{2,4})$/;
	if (obj.value != '' && regValid.test(obj.value))
	{
		if (errorID && getElement(errorID))
			hidereq(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			displayreq(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidFEIN(obj, errorID, bFocus)
{
	var regValid = /^([0-9]{2}(\-)?[0-9]{7})?$/;
	if (regValid.test(obj.value))
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidInteger(obj, errorID, bFocus)
{//second and third arguments are optional
	var regValid = /^([0-9]*)$/;
	if (regValid.test(obj.value) && (isNaN(parseInt(obj.value)) || parseInt(obj.value)>= -2147483648 && parseInt(obj.value)<= 2147483647))
	{
	  if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
	  if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidIP(obj)
{
  var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
  if (re.test(obj.value)) {
    var parts = obj.value.split(".");
    if (parseInt(parseFloat(parts[0])) == 0) { return false; }
    for (var i=0; i<parts.length; i++) {
      if (parseInt(parseFloat(parts[i])) > 255) { return false; }
    }
    return true;
  } else {
    return false;
  }
}

function isValidIPorDomain(form)
{
  if(form._device_address_type && form._device_ip && form._device_fqdn)
  {
    //ARE WE CHECKING IP OR DOMAIN??
    var IP = false;
    var errorID;
    var showID;
    for(i = 0;i<form._device_address_type.length;i++)
    {
      if(form._device_address_type.options[i].value == "IPAddress" && form._device_address_type.options[i].selected == true)
        IP = true;
    }
  
    if(IP)
    {
      errorID = "req_device_ip"
      showID = "req_device_fqdn"
      form._device_fqdn.value = ""
	    //CHECK IP ADDRESS
	    if(isValidIP(form._device_ip))
      {
        if (errorID && getElement(errorID))
		    	hidereq(errorID);
		    	hidereq(showID);
  		  return true;
	  	}else{
		   if (errorID && getElement(errorID))
			  	displayreq(errorID);
				  hidereq(showID);
  				form._device_ip.focus()
	  		return false;
		  } 
    }else{
      errorID = "req_device_fqdn"
      showID = "req_device_ip"
  	  form._device_ip.value = ""
	    //CHECK DOMAIN NAME
		  if(isValidDomainObj(form._device_fqdn))
  		{
	  	  if (errorID && getElement(errorID))
		  		hidereq(errorID);
			  	hidereq(showID);
  			return true;
	  	}else{
		  	if (errorID && getElement(errorID))
			  	displayreq(errorID);
				  hidereq(showID);
  				form._device_fqdn.focus()
	  		return false;
		  }
    }
  }else{
    return true;
  }
}

function isValidLength(obj, length, errorID, bFocus)
{//3rd and 4th arguments are optional
	if (obj.value.length <= parseInt(length))
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidMonth(obj, errorID, bFocus)
{//second and third arguments are optional
	var regValid = /^([0-9]{0,2})$/;
	if (regValid.test(obj.value) && (isNaN(parseInt(obj.value)) || parseInt(obj.value) <= 12))
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidPercent(obj, errorID, bFocus)
{//second and third arguments are optional
	//var regValid = /^(((\d){0,3})([\.]|[\.]{1}\d{1,2})?)?$/;
	var regValid = /^(\d){0,3}$/;
	if (regValid.test(obj.value))
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidPhone(obj, errorID, bFocus)
{
	var regValid = /^((\()?[0-9]{3}(\)|-)?[0-9]{3}(\-)?[0-9]{4})?$/;
	if (regValid.test(obj.value))
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidPort(obj, errorID, bFocus)
{
  if(obj)
	{
	  if((!isNaN(obj.value)) && ((parseInt(obj.value) > 0) && (parseInt(obj.value) < 65536)))
	  {
		  if (errorID && getElement(errorID))
  			hidereq(errorID);
	  	return true;
	  }
  	else
	  {
		  if (errorID && getElement(errorID))
  			displayreq(errorID);
	  	if (bFocus)
		  	obj.focus()
  		return false;
	  }
	}else{
    return true;
  }
}

function isValidSSN(obj, errorID, bFocus)
{
	var regValid = /^([0-9]{3}(\-)?[0-9]{2}(\-)?[0-9]{4})?$/;
	if (regValid.test(obj.value))
	{
		if (errorID && getElement(errorID))
			hide(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValidZip(obj, errorID, bFocus)
{
	var regValid = /^(([0-9]{5})((\-)?[0-9]{4})?)?$/;
	if (regValid.test(obj.value))
	{
		if (errorID && getElement(errorID))
			hidereq(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			displayreq(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function isValueSelected(obj, errorID, bFocus)
{//second and third arguments are optional
  var isSelected = false;
  for(var i = 0;i<obj.length;i++)
  {
    if(obj.options[i].selected == true && obj.options[i].value != "" && obj.options[i].value != ",")
      isSelected = true;  
  }
	
	if(isSelected)
	{
 	  if (errorID && getElement(errorID))
  		hidereq(errorID);
    return true;
 	}else{
    if (errorID && getElement(errorID))
	    displayreq(errorID);
    if (bFocus)
	    obj.focus();
 	  return false;
  }
}

function lastDayOfMonth(month, year)
{
var eom = new Array(0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if (leapYear(year))
	eom[2] = 29;
return eom[parseInt(month,10)];
}

function leapYear(year)
{
	if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) )
		return true; // is leap year
	return false; // is not leap year
}

function noSpaces(obj, errorID, bFocus)
{//second and third arguments are optional
  if (obj.value.replace(/\s+/g,"") != "")
	{
	  var regValid = /\s/;
	  if(!regValid.test(obj.value))
		{
		  if (errorID && getElement(errorID))
			  hide(errorID);
		  return true;
		}
		else
		{
		  if (errorID && getElement(errorID))
			  display(errorID);
		  if (bFocus)
  			obj.focus()
	  	return false;
		}
	}
	else
	{
		if (errorID && getElement(errorID))
			display(errorID);
		if (bFocus)
			obj.focus()
		return false;
	}
}

function posX(obj)
{// Find object's "left" position
	var currX = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			currX += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		currX += obj.x;
	return currX;
}

function posY(obj)
{// Find object's "top" position
	var currY = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			currY += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		currY += obj.y;
	return currY;
}

function PrintForm(newWin, form, webnotes, time, userid)
{
    newWin.focus();
	var sOutput = "";
	
	var aElements = (document.all) ? document.all : document.getElementsByTagName("*");
	for (var i=0; i < aElements.length; i++)
	{
		if (aElements[i].innerHTML && aElements[i].tagName)
			if ( aElements[i].tagName == 'HTML')
			{
				//alert(aElements[i].tagName)
				//alert(aElements[i].innerHTML)
				sOutput += aElements[i].innerHTML;
				//alert(sOutput);
				break;
			}
	}

	sOutput = sOutput.replace(/transfirst_form.css/gi, "transfirst_form_print.css");
	var reScriptOpen = /<script([^>])*>/i
	var reScriptClosed = /<\/script([^>])*>/i
	var nScriptStarts = 0
	var nScriptEnds = 0
	while (sOutput.match(reScriptOpen))
	{
		nScriptStarts = sOutput.search(reScriptOpen);
		nScriptEnds = sOutput.search(reScriptClosed)+sOutput.match(reScriptClosed)[0].length;
		if (nScriptEnds > 0)
			sOutput = sOutput.substr(0, nScriptStarts) + sOutput.substr(nScriptEnds);
		else
			sOutput = sOutput.substr(0, nScriptStarts);
	}
	
	var sValue = ""

	var reSelectOpen = /<select([^>])*>/i
	var reSelectClosed = /<\/select([^>])*>/i
	var nSelectStarts = 0
	var nSelectEnds = 0
	while (sOutput.match(reSelectOpen))
	{
		aMatch = sOutput.match(reSelectOpen);
		sValue = ""
		if (aMatch)
		{
			nSelectStarts = sOutput.search(reSelectOpen);
			aMatch1 = aMatch[0].match(/id(\s)*=(\s)*(")?(\w)*/i)
			if (aMatch1)
			{
				var sID = aMatch1[0].replace(/id(\s)*=(\s)*(")?/i, "")
				if (sID.substr(0,1) == "_")
				{
					sValue = ChangeSpecChar(getElement(sID)[getElement(sID).selectedIndex].text);
                    if (sValue != "")
			            sValue = '<span class="' + ChangeSpecChar(getElement(sID).className) + '">' + sValue + '</span>';
                   else
			            sValue = '<span class="' + ChangeSpecChar(getElement(sID).className) + '">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>';
				}
			}
			nSelectEnds = sOutput.search(reSelectClosed)+sOutput.match(reSelectClosed)[0].length;
			if (nSelectEnds > 0)
				sOutput = sOutput.substr(0, nSelectStarts) + sValue + sOutput.substr(nSelectEnds);
			else
				sOutput = sOutput.substr(0, nSelectStarts);
		}
	}
	
	var reTextAreaOpen = /<textarea([^>])*>/i
	var reTextAreaClosed = /<\/textarea([^>])*>/i
	var nTextAreaStarts = 0
	var nTextAreaEnds = 0
	while (sOutput.match(reTextAreaOpen))
	{
		sValue = ""
		aMatch = sOutput.match(reTextAreaOpen);
		if (aMatch)
		{
			nTextAreaStarts = sOutput.search(reTextAreaOpen);
			aMatch1 = aMatch[0].match(/id(\s)*=(\s)*(")?(\w)*/i)
			if (aMatch1)
			{
				var sID = aMatch1[0].replace(/id(\s)*=(\s)*(")?/i, "")
				if (sID.substr(0,1) == "_")
				{
					sValue = ChangeSpecChar(getElement(sID).value);
				}
				if (sValue != "")
					sValue = '<span class="' + ChangeSpecChar(getElement(sID).className) + '">' + sValue + '</span>';
				else
					sValue = '<span class="' + ChangeSpecChar(getElement(sID).className) + '">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>';
			}
			nTextAreaEnds = sOutput.search(reTextAreaClosed)+sOutput.match(reTextAreaClosed)[0].length;
			if (nTextAreaEnds > 0)
				sOutput = sOutput.substr(0, nTextAreaStarts) + sValue + sOutput.substr(nTextAreaEnds);
			else
				sOutput = sOutput.substr(0, nTextAreaStarts);
		}
	}

	var reInput = /<input([^>])*>/i
	while (sOutput.match(reInput))
	{
		//alert(sOutput.match(reInput));
		sValue = ""
		aMatch = sOutput.match(reInput);
		if (aMatch)
		{
			aMatch1 = aMatch[0].match(/id(\s)*=(\s)*(")?(\w)*/i)
			if (aMatch1)
			{
				var sID = aMatch1[0].replace(/id(\s)*=(\s)*(")?/i, "")
				if (sID.substr(0,1) == "_" || sID == "total_percent")
				{
					if (getElement(sID).type == 'text')
					{
                		sValue = ChangeSpecChar(getElement(sID).value)
                        if (sValue != "")
						    sValue = '<span class="' + ChangeSpecChar(getElement(sID).className) + '">' + sValue + '</span>';
                        else
        		            sValue = '<span class="' + ChangeSpecChar(getElement(sID).className) + '">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>';
					}
					if (emptyString(sValue))
					{
							sValue = "&nbsp;"
					}
					
					
					if (getElement(sID).type == 'checkbox' || getElement(sID).type == 'radio')
					{
						if (getElement(sID).checked)
							sValue = "&nbsp;&nbsp&nbsp;&nbsp;<img src = 'transfirst_files/checkbox_check.gif'>&nbsp;"
						else
							sValue = "&nbsp;&nbsp&nbsp;&nbsp;<img src = 'transfirst_files/checkbox.gif'>&nbsp;"
					}
					/*
					if (getElement(sID).name == '_legal_name')
						for (var i=0; i < getElement(sID).attributes.length; i++)
						{
							alert(getElement(sID).attributes[i].name)
							alert(getElement(sID).attributes[i].value)
						}
					*/
				}
			}
		}
		
		if (sValue != "")
			sOutput = sOutput.replace(aMatch[0], sValue);
		else
			sOutput = sOutput.replace(aMatch[0], "");
		//alert(sOutput);
	}
	
	//<!--- delete in printed ---><br><br>
    sOutput = sOutput.replace(/<!--- delete in printed ---><br><br>/gi, "");
    sOutput = sOutput.replace(/<button([^>])>/gi, "");
	sOutput = sOutput.replace(/<!([^>])>/gi, "");

	sOutput = sOutput.replace(/nowrap/gi, "");

	sOutput = sOutput.replace(/<span([^>])*error([^>])*>([^<>])*<\/span>/gi, "");
	sOutput = sOutput.replace(/<font([^>])*errorhidden([^>])*>([^<>])*<\/font>/gi, "");
	//sOutput = sOutput.replace(/(&nbsp;)*(\s)*<B>(\s)*\*(\s)*<\/B>/gi, "")
	sOutput = sOutput.replace(/(&nbsp;)*(\s)*<font([^>])*required([^>])*>([^<>])*<B>(\s)*\*(\s)*<\/B>/gi, "");
	
	sOutput = sOutput.replace(/<a([^>])*href([^>])*>/gi, "");
	sOutput = sOutput.replace(/<\/a>/gi, "");
	
	sOutput = sOutput.replace(/<HR style="COLOR: gray" SIZE=3>/gi, "");
	
	sOutput = sOutput.replace(/(\s)*- required fields(\s)*/gi, "");
	sOutput = sOutput.replace(/mm\/dd\/yyyy/gi, "");
	sOutput = sOutput.replace(/\(Maximum([^\)])*\)/gi, "");
	sOutput = sOutput.replace(/\(accepted\)/gi, "");
	sOutput = sOutput.replace(/\(submitted\)/gi, "");
	sOutput = sOutput.replace(/\(returned\)/gi, "");
	
	newWin.document.write(sOutput);
	newWin.document.close();
}

function queryString(key)
{
  var query = new SplitQuery(window.location.search);
  return unescape(query.getValue(key));
}

function RemoveBadChar(form)
{
	for (var ielemnt = 0; ielemnt < form.elements.length; ielemnt++) 
	{
			if (form.elements[ielemnt].type=="text" 
				|| form.elements[ielemnt].type=="textarea")
				{
					strTemp = form.elements[ielemnt].value
				  //strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
					//Modified by Lena 02/04/2004
					//Remove "<" and ">" only
					  strTemp = strTemp.replace(/\<|\>|\||\;|/g,""); 
					form.elements[ielemnt].value = strTemp
				}
	}
}

function RemoveCertainChar(obj)
{
	strTemp = obj.value
  //strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
	strTemp = strTemp.replace(/\#|/g,""); 
	obj.value = strTemp
}

function RemoveGivenChars(obj, chars)
{
  charsTemp = chars
  charsLength = chars.length
  if(charsLength = 1)
  {
    var charsArray = new Array(1)
    charsArray[0] = charsTemp  
  }else if(charsLength > 1){
    var charsArray = new Array(charsLength)
    for(var x=0;x<charsLength;x++)
      charsArray[x] = charsTemp.charAt(x)
  }else{
    return
  }
  
	for(var y=0;y<charsLength;y++)
	{
	  var regEx = new RegExp(charsArray[y])
    var strTemp = obj.value
	  strTemp = strTemp.replace(regEx,"") 
	  obj.value = strTemp
	}
}

function removeSpaces(objID)
{
  var obj = document.getElementById(objID)
  var regEx = new RegExp(/\s+/g)
  var strTemp = obj.value
  strTemp = strTemp.replace(regEx,"")
  obj.value = strTemp
}

function selectDropDownValue(obj, val)
{
  for(var j=0;j<obj.length;j++){
    if (obj[j].value == val){
      obj.selectedIndex = j
    }
  }
}

function setDate(dtDate)
{
	var datepart = "AM"
	var day   = (dtDate.getDate() < 10) ? '0' + dtDate.getDate() : dtDate.getDate();
	var month = (dtDate.getMonth()+1 < 10) ? '0' + (dtDate.getMonth()+1) : (dtDate.getMonth()+1);
 	var year  = dtDate.getFullYear();
	return month + "/" + day + "/" + year
}

function setToday()
{
	var dtToday = new Date()
	return(setDate(dtToday))
}

function ShowNotes(newWin, text)
{
	newWin.focus();
	newWin.document.write(text);
	newWin.document.close();
}

var showTime;
function showHoverOver(rowID, hoID)
{
	var objRow = getElement(rowID);
	var objHo = getElement(hoID)
	var hoLeft = posX(objRow) - 305;
	var hoTop = posY(objRow) + 20;
	
	if (window.innerWidth && !isNaN(window.innerWidth))  //nn
	{
		var winWidth = window.innerWidth;
		if (window.pageXOffset && !isNaN(window.pageXOffset)) 
			winWidth += window.pageXOffset;
	}
	else if (window.document.body.clientWidth && !isNaN(window.document.body.clientWidth)) //ie
	{
		var winWidth = window.document.body.clientWidth;
		if (window.document.body.scrollLeft && !isNaN(window.document.body.scrollLeft))
			winWidth += window.document.body.scrollLeft;
	}

	if (window.innerHeight && !isNaN(window.innerHeight))  //nn
	{
		var winHeight= window.innerHeight;
		if (window.pageYOffset && !isNaN(window.pageYOffset))
			winHeight += window.pageYOffset;
	}
	else if (window.document.body.clientHeight && !isNaN(window.document.body.clientHeight))  //ie
	{
		var winHeight = window.document.body.clientHeight;
		if (window.document.body.scrollTop && !isNaN(window.document.body.scrollTop)) 
			winHeight += window.document.body.scrollTop;
	}
	
	var hoWidth = objHo.clientWidth?objHo.clientWidth:300;
	var hoHeight = objHo.clientHeight?objHo.clientHeight:120;
	if (winWidth)
		hoLeft = Math.max(0,Math.min(hoLeft, winWidth-hoWidth));
	if (winHeight)
		hoTop = Math.max(0,Math.min(hoTop, winHeight-hoHeight));
	
	objHo.style.left = hoLeft + 'px';
	objHo.style.top = hoTop + 'px';
	objHo.border = "1"
	
	display(hoID);
	
	//if(showTime) clearTimeout(showTime);
	//showTime = setTimeout('hideHoverOver("'+hoID+'")',5000);

}

function SplitQuery(q)
{
  if(q.length > 1) this.q = q.substring(1, q.length);
    else this.q = null;
  this.keyValuePairs = new Array();
  if(q){
    for(var i=0; i < this.q.split("&").length; i++)
    {this.keyValuePairs[i] = this.q.split("&")[i];}
  }
  this.getKeyValuePairs = function(){return this.keyValuePairs;}
  this.getValue = function(s)
  {
    for(var j=0; j < this.keyValuePairs.length; j++)
    {
      if(this.keyValuePairs[j].split("=")[0] == s)
        return this.keyValuePairs[j].split("=")[1];
    }
    return '';
  }
  this.getParameters = function() 
  {
    var a = new Array(this.getLength());
    for(var j=0; j < this.keyValuePairs.length; j++)
    {a[j] = this.keyValuePairs[j].split("=")[0];}
    return a;
  }
  this.getLength = function(){return this.keyValuePairs.length;}
}

function verRequired(obj, errorID, bFocus)
{//second and third arguments are optional
	if (obj.value.replace(/\s+/g,"") != "")
	{
		if (errorID && getElement(errorID))
			hidereq(errorID);
		return true;
	}
	else
	{
		if (errorID && getElement(errorID))
			displayreq(errorID);
		if (bFocus)
			obj.focus();
		return false;
	}
}

function zzTestAllObjects(objType)
{
  var message = '';
  if(objType.toLowerCase() == "htmlfor")
  {
    var label, objLabels = document.getElementsByTagName('label');
    message += 'OBJECTS FOR OTHERS:\n====================================================\n'
    for (var j = 0; j < objLabels.length; j++)
    {
      label = document.getElementById(objLabels[j].htmlFor)
      message += '\n'+label.name+': '+label.className
    }
  }else{
    var objs = document.getElementsByTagName(objType);
    message += objType.toUpperCase() + '\n====================================================\n'
    for (var i = 0; i < objs.length; i++)
    {
      message += '\n'+objs[i].name+': '+objs[i].className
    }
  }
  alert(message)
}