function textLimit(field, maxlen) {
if (field.value.length > maxlen)
field.value = field.value.substring(0, maxlen);
}
function expandTable(divId)
{
  if (document.getElementById(divId + '_state').value == 'N') {
	  document.getElementById(divId + "_expand").src = "../images/collapse.gif";
	  document.getElementById(divId).style.display = '';
	  document.getElementById(divId + "_state").value = "Y";
  }
  else {
	  document.getElementById(divId + "_expand").src = "../images/expand.gif";
	  document.getElementById(divId).style.display = 'none';
	  document.getElementById(divId + "_state").value = "N";
  }
}

function expandTable(divId, formName)
{
	if (navigator.appVersion.indexOf("MSIE") != -1) {
		if (document.getElementById(divId + '_state').value == 'N') {
	  		document.getElementById(divId + "_expand").src = "../images/collapse.gif";
			  document.getElementById(divId).style.display = '';
	  		document.getElementById(divId + "_state").value = "Y";
  		}
  		else {
	  		document.getElementById(divId + "_expand").src = "../images/expand.gif";
	  		document.getElementById(divId).style.display = 'none';
	  		document.getElementById(divId + "_state").value = "N";
  		}
	}
	else {
	  var state = eval ('document.' + formName + '.' + divId + '_state');
	  var divImage = eval ('document.' + formName + '.' + divId + '_expand');	
      if (state.value == 'N') {
	    divImage.src = "../images/collapse.gif";
    	  document.getElementById(divId).style.display = '';
	    state.value = "Y";
      }
      else {
	    divImage.src = "../images/expand.gif";
	    document.getElementById(divId).style.display = 'none';
	    state.value = "N";
      }
	}
}


function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}
function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}
function deleteCookie(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" + 
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}
function fixDate(date) {
  var base = new Date(0);
  var skew = base.getTime();
  if (skew > 0)
    date.setTime(date.getTime() - skew);
}
var saveListBackgroundColor = null;
function high(obj) {
	saveListBackgroundColor = obj.style.backgroundColor ;	
	if (obj.style != null) {
		obj.style.backgroundColor = 'rgb(220,232,236)';
	}
}
function low(obj) {
	if (obj.style != null) {
		obj.style.backgroundColor = saveListBackgroundColor;
	}
}
if (navigator.appName == "Netscape") {
    var layerRef="document.layers";
    var styleSwitch="";
} else {
    var layerRef="document.all";
    var styleSwitch=".style";
}
var subMenus = new Array();
document.onmousemove = handlerMM;
function handlerMM(e){
    x = (document.layers) ? e.pageX-self.pageXOffset : 0;//e.clientX
    y = (document.layers) ? e.pageY-self.pageYOffset : 0;//e.clientY
}
function showLayer(layerName) {
    eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.visibility="visible"');
}
function hideLayer() {
    for (var i = 0; i <= subMenus.length - 1; i++) {
        if (eval(layerRef+'["'+subMenus[i]+'"]'+styleSwitch+'.visibility="visible"')) {
            eval(layerRef+'["'+subMenus[i]+'"]'+styleSwitch+'.visibility="hidden"');
        }
    }
}
function offSubMenus() {
    for (var i = 0; i <= subMenus.length -1; i++) {
        if (eval(layerRef+ '["'+subMenus[i]+'"]' + '.contains(window.event.toElement)') == false) {
            eval(layerRef+ '["'+subMenus[i]+'"]' +styleSwitch+ '.visibility = "hidden"');
        }
    }
}
function limitlength(formobj, e, size)
{
    returnvalue=true;
    if (!e.which && formobj.value.length>=size) //IE
      returnvalue=false;
    else if (e.which && e.which!=8 && formobj.value.length>=size) //NS4, NS6+ (allow backspace key)
      returnvalue=false;
    return returnvalue;
}
function makeChecked(cBox)
{
  cBox.checked = true;
}
function makeChanged(cBox)
{
  cBox.value = "Y";
}
function validateValue( strValue, strMatchPattern ) {
 var objRegExp = new RegExp( strMatchPattern);
 return objRegExp.test(strValue);
}
function charInString(c,s)
{
	for(i=0;i<s.length;i++){
		if(s.charAt(i)==c)
	    return true;
    }
    return false;
}
function stripInitialWhiteSpace(s)
{		
      if (typeof s != "undefined") {
      
      var i=0;
      var whitespace = " \t\n\r";
      while((i<s.length)&&charInString(s.charAt(i),whitespace))
            i++;
            return s.substring(i,s.length);
	  }
	  else {
		  //alert("hi2");
		  s;	  
	  }
}
function isEmpty(sVal)
{
  if (stripInitialWhiteSpace(v.toString()) == "" )
  {
    return true;
  }
  else
  {
    return false;
  }
}
function isInt(sVal)
{
  var val = parseInt(sVal);
  var newval = "" + val;
  if (newval != sVal)
  {
    return false;
  }
  return true;
}
function isValidDecimals(fieldValue, decallowed) 
{
  if (isNaN(fieldValue) || fieldValue == "") 
  {	  
    return false;
  }
  else 
  {  
    if (fieldValue.indexOf('.') == -1) fieldValue += ".";
    dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length);
    if (dectext.length > decallowed)
    {
	    return false;
    }
    else 
    {
      return true;
    }
   }
}
function isValidDecimals(fieldValue, decallowed, maxAmount) 
{
  if (isNaN(fieldValue) || fieldValue == "") 
  {
    return false;
  } 
  val = new Number(fieldValue);
  max = new Number(maxAmount);
  if (val > max)
  {
    return false;
  }
  else 
  {  
    if (fieldValue.indexOf('.') == -1) fieldValue += ".";
    dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length);
    if (dectext.length > decallowed)
    {
	    return false;
    }
    else 
    {
      return true;
    }
   }
}
function isValidDecimals(fieldValue, decallowed, maxAmount, minAmount) 
{
  if (isNaN(fieldValue) || fieldValue == "") 
  {
    return false;
  } 
  val = new Number(fieldValue);
  max = new Number(maxAmount);
  minV = new Number(minAmount);
  if (val > max || val <= minV)
  {
    return false;
  }
  else 
  {  
    if (fieldValue.indexOf('.') == -1) fieldValue += ".";
    dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length);
    if (dectext.length > decallowed)
    {
	return false;
    }
    else 
    {
      return true;
    }
   }
}
function isNumberLower(lowVal, highVal)
{
  low = new Number(lowVal);
  high = new Number(highVal);
  if (low < high)
  {
    return true;
  }
  return false;
}
function isNumberLowerOrEqual(lowVal, highVal)
{
  low = new Number(lowVal);
  high = new Number(highVal);
  if (low > high)
  {
    return false;
  }
  return true;
}
function checkdate(objName) 
{
  var datefield = objName;
  if (chkdate(objName) == false) 
  {
    return false;
  }
  else 
  {
    return true;
  }
}
function chkdate(objName) 
{
  var strDatestyle = "US"; //United States date style
  //var strDatestyle = "EU";  //European date style
  var strDate;
  var strDateArray;
  var strDay;
  var strMonth;
  var strYear;
  var intday;
  var intMonth;
  var intYear;
  var booFound = false;
  var datefield = objName;
  var strSeparatorArray = new Array("-"," ","/",".");
  var intElementNr;
  var err = 0;
  var strMonthArray = new Array(12);
  strMonthArray[0] = "Jan";
  strMonthArray[1] = "Feb";
  strMonthArray[2] = "Mar";
  strMonthArray[3] = "Apr";
  strMonthArray[4] = "May";
  strMonthArray[5] = "Jun";
  strMonthArray[6] = "Jul";
  strMonthArray[7] = "Aug";
  strMonthArray[8] = "Sep";
  strMonthArray[9] = "Oct";
  strMonthArray[10] = "Nov";
  strMonthArray[11] = "Dec";
  strDate = datefield.value;
  if (strDate.length < 1) 
  {
    return false;
  }
  for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) 
  {
    if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
    {
      strDateArray = strDate.split(strSeparatorArray[intElementNr]);
      if (strDateArray.length != 3) 
      {
        err = 1;
        return false;
      }
      else 
      {
        strDay = strDateArray[0];
        strMonth = strDateArray[1];
        strYear = strDateArray[2];
      }
      booFound = true;
     }
  }
  if (booFound == false) 
  {
    if (strDate.length>5) 
    {
      strDay = strDate.substr(0, 2);
      strMonth = strDate.substr(2, 2);
      strYear = strDate.substr(4);
   }
   else
   {
     return false;
   }
  }
  if (strYear.length == 2) 
  {
    strYear = '20' + strYear;
  }
  if (strDatestyle == "US") 
  {
    strTemp = strDay;
    strDay = strMonth;
    strMonth = strTemp;
  }
  intday = parseInt(strDay, 10);
  if (isNaN(intday)) 
  {
    err = 2;
    return false;
  }
  intMonth = parseInt(strMonth, 10);
  if (isNaN(intMonth)) 
  {
    for (i = 0;i<12;i++) 
    {
      if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) 
      {
        intMonth = i+1;
        strMonth = strMonthArray[i];
        i = 12;
      }
    }
    if (isNaN(intMonth)) 
    {
      err = 3;
      return false;
    }
  }
  intYear = parseInt(strYear, 10);
  if (isNaN(intYear)) 
  {
    err = 4;
    return false;
  }
  if (intMonth>12 || intMonth<1) 
  {
    err = 5;
    return false;
  }
  if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) 
  {
    err = 6;
    return false;
  }
  if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) 
  {
    err = 7;
    return false;
  }
  if (intMonth == 2) 
  {
    if (intday < 1) 
    {
      err = 8;
      return false;
    }
    if (LeapYear(intYear) == true) 
    {
      if (intday > 29) 
      {
        err = 9;
        return false;
      }
    }
    else 
    {
      if (intday > 28) 
      {
        err = 10;
        return false;
      }
    }
  }
  return true;
}
function LeapYear(intYear) 
{
  if (intYear % 100 == 0) 
  {
    if (intYear % 400 == 0) { return true; }
  }
  else 
  {
    if ((intYear % 4) == 0) { return true; }
  }
  return false;
}
function doDateCheck(from, to) 
{
  if (Date.parse(from.value) <= Date.parse(to.value)) 
  {
    return true;
  }
  else 
  {
    if (from.value == "" || to.value == "") 
      return false;
    else 
      return false; //alert("To date must occur after the from date.");
  }
}
  function emailCheck (emailStr) {  
  var checkTLD=1;
  var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
  var emailPat=/^(.+)@(.+)$/;
  var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
  var validChars="\[^\\s" + specialChars + "\]";
  var quotedUser="(\"[^\"]*\")";
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  var atom=validChars + '+';
  var word="(" + atom + "|" + quotedUser + ")";
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  var matchArray=emailStr.match(emailPat);
  
  if (matchArray==null) {
  return false;
  }
  var user=matchArray[1];
  var domain=matchArray[2];
  for (i=0; i<user.length; i++) {
  if (user.charCodeAt(i)>127) {
  return false;
     }
  }
  for (i=0; i<domain.length; i++) {
  if (domain.charCodeAt(i)>127) {
  return false;
     }
  }
  if (user.match(userPat)==null) {
  return false;
  }
  var IPArray=domain.match(ipDomainPat);
  if (IPArray!=null) {
  for (var i=1;i<=4;i++) {
  if (IPArray[i]>255) {
  return false;
     }
  }
  return true;
  }
  var atomPat=new RegExp("^" + atom + "$");
  var domArr=domain.split(".");
  var len=domArr.length;
  for (i=0;i<len;i++) {
  if (domArr[i].search(atomPat)==-1) {
  return false;
     }
  }
  if (checkTLD && domArr[domArr.length-1].length!=2 && 
  domArr[domArr.length-1].search(knownDomsPat)==-1) {
  return false;
  }
  if (len<2) {
  return false;
  }
  return true;
  }