/*-- Javascript functions --*/

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
fillout = false;  
fldmodified = false;
g_last_value = "";

function f_modified()
{
	fldmodified = true;
}

function $(f)
{
  return document.getElementById(f);
}

function loadPage(p)
{
  fillout = true;
  document.location.href=p;
}

function formatCurrency(num,ndec) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
  num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
  cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
  num = num.substring(0,num.length-(4*i+3))+','+
  num.substring(num.length-(4*i+3));
  if (ndec == 2)
  {
    cents = '.' + cents;
  }
  else
  {
    cents = '';
  }
  return (((sign)?'':'-') + '$' + num);
}

function isReq(fld)
{
  var d = $(fld);
  if (d && d.parentNode)
  {
    var td = d.parentNode;
    if (td && td.parentNode)
    {
      var tr = td.parentNode;
      for (var i = 0; i < tr.childNodes.length; i++)
      {
        if (tr.childNodes[i].tagName 
          && tr.childNodes[i].tagName.toLowerCase() == "td"
          && tr.childNodes[i].className.indexOf("fldlabel") > -1)
        {
          tr.childNodes[i].innerHTML += "<span class='req'>*</span>";
        }
      }
    }
  }
}

function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( (child = child.parentNode) == parent ) {
				return true;
			}
		}
	}
	return false;
}
/* onMouseOut="fixOnMouseOut(this,event,id) */
function fixOnMouseOut(element, event) {
	var current_mouse_target = null;
	if( event.toElement ) {				
		current_mouse_target 			 = event.toElement;
	} else if( event.relatedTarget ) {				
		current_mouse_target 			 = event.relatedTarget;
	}
	if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
		showHilight(element)
	}
}

function setFlagCounts(f,m)
{

  var v_fld = $(m);
  if (v_fld)
  {
    v_cnt = v_fld.innerHTML;
    if (f.options)
    {
      if (f.options[f.selectedIndex].value != "")
      {
        v_cnt++;
      }
      else
      {
        v_cnt--;
      }
    }
    else
    {
      if (f.checked)
      {
        v_cnt++;
      }
      else
      {
        v_cnt--;
      }
    }
    v_fld.innerHTML = v_cnt;
  }  
}

function setMessage(f,m)
{

  if (typeof(g_totcnt) == "undefined")
  {
    g_totcnt = 0;
    var fc = $("inner_cnt");
    if (fc)
    {
      g_totcnt = fc.innerHTML - 0;
    }
  }
  
  if (m != "")
  {
    if (f.value.length == 0)
    {
  		if (f.className.indexOf("new_entry") == -1)
  		{
  			f.className += (f.className != "" ? " " : "") + "new_entry";
  			g_totcnt = g_totcnt - 1;
  		}
  		f.value = m;
    }
  }
  else
  if (m == "")
  {
		if (f.className.indexOf("new_entry") > -1)
		{
			f.className = f.className.replace("new_entry","");
  		f.value = "";
  		g_totcnt = g_totcnt + 1;
		}
  }

  var fc = $("inner_cnt");
  if (fc)
  {
    fc.innerHTML = g_totcnt;
  }
  fc = $("inner_cnt_fld");
  if (fc)
  {
    fc.value = g_totcnt;
  }
  
}
function jumpTo(id)
{
  var d = $(id);
  if (d)
  {
    d.focus();
  }
}

function showHilight(r)
{
  var i = r.innerHTML;
  var c = r.firstChild;
  /* td */
  while (c)
  {
    if (c.tagName && c.tagName.toUpperCase() == "TD")
    {
      if (c.style.backgroundImage != "")
      {
        var b = c.style.backgroundImage;
        var img;
        if (b.indexOf("limid.gif") > -1)
        {
          img = "url(images/limidhov.gif)";
        }
        else
        if (b.indexOf("limidoff.gif") > -1)
        {
          img = "url(images/limidoffhov.gif)";
        }
        else
        if (b.indexOf("limidhov.gif") > -1)
        {
          img = "url(images/limid.gif)";
        }
        else
        if (b.indexOf("limidoffhov.gif") > -1)
        {
          img = "url(images/limidoff.gif)";
        }
  
  
        if (b.indexOf("licirc.gif") > -1)
        {
          img = "url(images/licirchov.gif)";
        }
        else
        if (b.indexOf("licircy.gif") > -1)
        {
          img = "url(images/licircyhov.gif)";
        }
        else
        if (b.indexOf("licircoff.gif") > -1)
        {
          img = "url(images/licircoffhov.gif)";
        }
        else
        if (b.indexOf("licircoffy.gif") > -1)
        {
          img = "url(images/licircoffyhov.gif)";
        }
        else
        if (b.indexOf("licirchov.gif") > -1)
        {
          img = "url(images/licirc.gif)";
        }
        else
        if (b.indexOf("licircyhov.gif") > -1)
        {
          img = "url(images/licircy.gif)";
        }
        else
        if (b.indexOf("licircoffhov.gif") > -1)
        {
          img = "url(images/licircoff.gif)";
        }
        else
        if (b.indexOf("licircoffyhov.gif") > -1)
        {
          img = "url(images/licircoffy.gif)";
        }
        if (img != "")
        {
          c.style.backgroundImage = img;
        }
      }    
      var i = c.firstChild;
      while (i)
      {
        if (i.tagName && i.tagName.toUpperCase() == "IMG")
        {
          if (i.src.indexOf("liright.gif") > -1)
          {
            i.src = "images/lirighthov.gif";
          }
          else
          if (i.src.indexOf("lirightoff.gif") > -1)
          {
            i.src = "images/lirightoffhov.gif";
          }
          else
          if (i.src.indexOf("lirighthov.gif") > -1)
          {
            i.src = "images/liright.gif";
          }
          else
          if (i.src.indexOf("lirightoffhov.gif") > -1)
          {
            i.src = "images/lirightoff.gif";
          }
  
        }
        i = i.nextSibling;
      }
    }
    c = c.nextSibling;
  }
}

function chkURL(fld) {
  var v = new RegExp();
  v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
  if (!v.test(fld.value)) {
    alert("Please supply a valid URL starting with http:// or https://.");
    return false;
  }
}

function setCarteOn(n)
{
  var q = $("qty_" + n);
  var c = $("cartepkg" + n);
  var minq = $("min_" + n);
  if (g_last_value != q.value)
  {
    if (q.value > 0)
    {
      c.checked = true;
    }
    else
    {
      c.checked = false;
      q.value = minq.value;
    }
  }
}

function setPmtMsg(c)
{
  var f = $("inner_cnt");  
  var f2 = $("inner_cnt_cost");  
  var f3 = $("inner_cnt_fld");  
  var v_amt = 0;
  
  if (c)
  {
    if (c.checked)
    {
      v_amt = 1;
    }
    else
    {
      v_amt = -1;
    }
  }

  if (f)
  {    
    var v_cnt = f.innerHTML - 0 + v_amt - 0;
    f.innerHTML = v_cnt;
    if (f3)
    {
      f3.value = v_cnt;
    }
  
    if (f && f2)
    {
      var f3 = $(f2.value);
      if (f3)
      {
        var f4 = $("listpmtmsg");
        if (f4)
        {
          if (f3.value.length != 0 || v_cnt <= 1)
          {
            f4.className = "noshow";
          }
          else
          {
            f4.className = "";
          }
        }
      }
    }  
  }
}

function initVal(fld)
{
  g_last_value = fld.value;
}

function intOnly(fld)
{
  if (fld.value.search(/[^0-9]/g, '') == 1)
  {
    fld.value=fld.value.replace(/[^0-9]/g, '');
  }
}

function calcPrice()
{
  var t = 0;
  var i;
  var frm = document.forms[1].elements;
  if (!frm)
  {
    return;
  }
  var cnt1 = frm.length;
  if (!cnt1)
  {
    return;
  }
  var cnt2 = 0;
  var v_moreinfo = $("listpkg_-1");
  var v_moreinfo2 = $("listpkg_-2");
  var v_moreinfo3 = $("listpkg_-3");
  if (v_moreinfo)
  {
    v_moreinfo = v_moreinfo.checked;
  }
  if (v_moreinfo2)
  {
    v_moreinfo2 = v_moreinfo2.checked;
  }
  if (v_moreinfo3)
  {
    v_moreinfo3 = v_moreinfo3.checked;
  }
  for (cnt2 = 0; cnt2 < cnt1; cnt2++)
  {
    i = frm[cnt2];
    if (i.id)
    {
      if (i.id.indexOf("cartepkg") > -1)
      {
        var n = i.id.substr(8);
        var lt = $("linetot_" + n);
        var tr = $("tr_" + n);
        var minq = $("min_" + n);
        var maxq = $("max_" + n);
        var q = $("qty_" + n);
        var p = $("cp_" + n);
        if (q && maxq && q.value - 0 > maxq.value - 0)
        {
          q.value = maxq.value;
          q.focus();
          alert("Maximum quantity allowed is " + maxq.value);
        }
        if (q && minq && q.value - 0 < minq.value - 0)
        {
          q.value = minq.value;
          q.focus();
          alert("Minimum quantity allowed is " + minq.value);
        }
        if (i.checked && q && p)
        {
          t = t + q.value * p.value - 0;
        }
        var lt = $("linetot_" + n);
        if (lt)
        {
          lt.innerHTML = formatCurrency(q.value * p.value - 0,0);
        }
        if (i.checked && !v_moreinfo && !v_moreinfo2 && !v_moreinfo3)
        {
          addFade(tr);
        }
        else
        {
          delClass(tr,new RegExp("hilight.*","gi"));
        }
      }
      if (i.id.indexOf("listpkg_") > -1)
      {
        var n = i.id.substr(8);
        var tr = $("tr_" + n);
        if (i.checked)
        {
          var p = $("p_" + n);
          if (p)
          {
            t = t + p.value - 0;
          }
          addFade(tr);
        }
        else
        {
          delClass(tr,new RegExp("hilight.*","gi"));
        }
      }
    }
  }
  var d = $("totalprice");
  if (d)
  {
    d.innerHTML = formatCurrency(t,0);
  }
  return true;
}

function chkEmail(frm,fld,doforce)
{
  if (doforce == "undefined")
  {
    doforce = "";
  }
  if (frm[fld])
  {
    if (frm[fld].value.length > 0 || doforce)
    {
      if (!isValidEmail(frm[fld]))
      {
        return false;
      }
    }
  }
  return true;
}

function isValidEmail(fld)
{
  if (fld.value.indexOf(",") == -1 
    && fld.value.indexOf(";") == -1 
    && fld.value.indexOf(" ") == -1)
  {
    return isValidEmail2(fld.value,fld);
  }
  else
  {
    var emaila = new Array();
    var tsplit = ",";
    if (fld.value.indexOf(",") > -1)
    {
      tsplit = ",";
    }
    else
    if (fld.value.indexOf(";") > -1)
    {
      tsplit = ";";
    }
    else
    {
      tsplit = " ";
    }
    emaila = fld.value.split(tsplit);
    for (var i = 0; i < emaila.length; i++)
    {
      var r = isValidEmail2(emaila[i],fld);
      if (!r)
      {
        return false;
      }      
    }
    return true;
  }
}

function isValidEmail2(fld,frmfld)
{
  if (window.RegExp)
  {
    var validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
    var strEmail = fld;
  
    // search email text for regular exp matches
    if (strEmail.search(validRegExp) == -1) 
    {
      frmfld.focus();
      if (fld.length > 0)
      {
        alert('Email address "' + fld + '" is not valid - please re-enter.');
      }
      else
      {
        alert('Email address is required.');
      }
      return false;
    } 
    return true; 
  }
  else
  {
    if (fld.indexOf("@") < 0)
    {
      frmfld.focus();
      if (fld.length > 0)
      {
        alert('Email address "' + fld + '" is not valid - please re-enter.');
      }
      else
      {
        alert('Email address is required.');
      }
      return false;
    } 
    return true; 
  }
}

function chkNull(fld,msg)
{
	var v_err = false;
	if (!fld)
	{
	  return true;
	}	
	if (fld.options)
	{
		if (fld.selectedIndex == 0)
		{
			v_err = true;
		}
	}
  else
	if (fld.length)
	{
	  var chk = false;
	  for (var i = 0; i < fld.length; i++)
	  {
	    if (fld[i].checked)
	    {
	      chk = true;
	    }
	  }
	  if (!chk)
	  {
	    v_err = true;
	  }
	}  
  else
	if (fld.value.length == 0)
	{
		v_err = true;
	}
	if (v_err)
	{
	  if (fld.focus)
	  {
		  fld.focus();
		}
		alert(msg);
		return false;
	}
	return true;
}

function checkAlphanum(v) 
{
  return (!/\W/.test(v.value));
}

function phoneFormat(s)
{
  var f = s.id.substr(4);
  var s1 = $(f + "_div1");
  var s2 = $(f + "_div2");
  if (s1 && s2)
  {
    if (s1.style.display == "")
    {
      s1.style.display = "none";
      s2.style.display = "";
    }
    else
    {
      s2.style.display = "none";
      s1.style.display = "";
    }
  }
}

function chkNum(fld,type) 
{
  var fldValue = fld.value;
  if (type == 'N')
    var valid = '0123456789';
  if (type == '$')
    var valid = '0123456789.';
  if (type == 'S')
    var valid = '-0123456789.';
  if (type == 'N,')
    var valid = '0123456789,';
  if (type == '$,')
    var valid = '0123456789.,';
  if (type == 'S,')
    var valid = '-0123456789.,';
  if (fldValue.substr(0,1) == "(" && fldValue.substr(fldValue.length - 1,1) == ")")
  {
    fldValue = "-" + fldValue.substr(1,fldValue.length - 2);
  }
  var len = fldValue.length;
  for (var j=0; j<len; j++)
  {
    if (valid.indexOf(fldValue.charAt(j)) == -1)
    {
      alert('Field must be numeric.  Please Re-enter');
      fld.focus();
      fld.select();
      return false;
    }
  }
  // Make sure only one decimal point is entered for $ type fields
  if ("$S".indexOf(type) != -1 && fldValue.indexOf(".") != fldValue.lastIndexOf("."))
  {
    alert('Field must be numeric.  Please Re-enter');
    fld.focus();
    fld.select();
    return false;
  }
  if (fldValue.indexOf("-") != -1)
  {
    // Make sure sign is entered at beginning for S type fields
    if (type == 'S' && (fldValue.indexOf("-") != fldValue.lastIndexOf("-") || fldValue.substr(0,1) != "-"))
    {
      alert('Field must be numeric.  Please Re-enter');
      fld.focus();
      fld.select();
      return false;
    }
  }
  return true;
}

function resetSect()
{
  var f = document.forms[1];
  if (f)
  {
    f.reset();
  }
	unModify();
}

function unModify()
{
	fldmodified = false;
}

function editRec(id,fid)
{
	fill_sect("listing_sections_req.cfm","listingsingle",id,"",fid);
	var d = $(fid);
	if (d)
	{
	  d.focus();
	}
}

function submitSect(id,sect)
{
	if (window.chkSubmit && chkSubmit(document.forms[1]))
	{	  
		fill_sect("listing_sections_req.cfm","inner_div" + sect,id,"update");
		fill_sect("listing_sections_req.cfm","listingsingle",0,"");
	}
}

function checkName(n,sect)
{
	fill_sect("ajax_scripts.cfm",sect,n,"isNameAvail","");
}

function checkEmail(n,sect)
{
	fill_sect("ajax_scripts.cfm",sect,n,"isEmailAvail","");
}

function addFade(p,v)
{
  if (typeof(v) == "undefined")
  {
    v = 1;
  }
  var intid = 0;
  
  if (p)
  {
    addClass(p,"hilight1");
  }

  intid = setInterval(addFade2,50);
  
  function addFade2()
  {
    if ((p && p.className.indexOf("hilight") == -1) || v > 5)
    {
      clearInterval(intid);
      return;
    }
    var c = "hilight" + v;  
    addClass(p,c);
    if (v > 1)
    {
      c = "hilight" + (v - 1);
      delClass(p,c);
    }    
    v = v + 1;
    if (v > 5)
    {
      clearInterval(intid);
    }
  }
  
}

function addClass(p,cname)
{
	if (p && p.className.indexOf(cname) == -1)
	{
		p.className += (p.className != "" ? " " : "") + cname;
	}
}

function delClass(p,cname)
{
  if (p)
  {
	  p.className = p.className.replace(cname,"");
  }
}

function delRec(btn,id,sect)
{
	var p = btn.parentNode;
	if (p)
	{
		p = p.parentNode;
		addClass(p,"hilight");
	}
  if (!confirmDel())
  {
    delClass(p,new RegExp("hilight.*","gi"));
  	return;
  }
  delClass(p,new RegExp("hilight.*","gi"));
  /*
  var r = $("row_" + id);
  if (r)
  {
  	var p = r.parentNode;
  	if (p)
  	{
	 		p.deleteRow(r.rowIndex);
  	}
  }
  */
  fill_sect("listing_sections_req.cfm","inner_div" + sect,id,"del");
  fill_sect("listing_sections_req.cfm","listingsingle",0,"");
}

function confirmDel()
{
	return confirm("Are you sure you want to remove this entry?");
}

function prevSection(pg)
{
  if (fldmodified)
  {
    if (!confirm("Go back to previous section and lose any changes made?"))
    {
      return false;
    }
  }
  loadPage(pg);
}

function nextSection(sect)
{
  var d = document.forms[1];
  var a = $("okifblank");
  if ((a && !fldmodified) || chkSubmit(d))
  {
    if (a && !fldmodified)
    {
      var f = $("skip");
      if (f)
      {
        f.value = "1";
      }
    }
	  var s = $("next_sect");
	  if (s)
	  {
	    s.value = sect;
	  }
	  fillout = true;
    d.submit();  
  }
}

function goReview(sect)
{
  var d = document.forms[1];
  var a = $("okifblank");
  if ((a &&!fldmodified) || chkSubmit(d))
  {
    if (a && !fldmodified)
    {
      var f = $("skip");
      if (f)
      {
        f.value = "1";
      }
    }
	  var s = $("next_sect");
	  if (s)
	  {
	    s.value = "_review";
	  }
	  fillout = true;
    d.submit();  
  }
}

function skipSection(pg)
{
  if (fldmodified)
  {
    if (!confirm("Skip to next section and lose any changes made?"))
    {
      return false;
    }
  }
  var s = $("skip");
  if (s)
  {
    s.value = "1";
  }
  if (pg == "_done")
  {
    loadPage("listing_review.cfm");
  }
  else
  {
    loadPage(pg);
  }
}

function editSect(pg)
{
  document.forms[1].action = "listing_q.cfm";
  var s = $("sect");
  s.value = pg;
  s = $("reviewmode");
  if (s)
  {
    s.value = 1;
  }
  fillout = true;
  document.forms[1].submit();
}

/*--This function is used to format the date fields--*/
function f_formatdate(indate) {
	if (indate.length != 0) {
		if (indate.substr(2,1) != '/'){
			indate = '0' + indate.substr(0);
		}
	
		if (indate.substr(5,1) != '/') {
			indate = indate.substr(0,3) + '0' + indate.substr(3);
		}
	}
	return indate;
}

/*---Function to get the current date from Date object---*/
function f_getToday() {
	var today = new Date();
	var v_mon = today.getMonth();
	v_mon++;
	var v_dte = today.getDate();
	var v_yr  = today.getFullYear();
	if (String(v_mon).length != 2) { v_mon = "0"+v_mon }
	if (String(v_dte).length != 2) { v_dte = "0"+v_dte }

	var v_retdate = String(v_yr)+String(v_mon)+String(v_dte);
	return v_retdate;
}

/*--This function is used to check the month entered and number of days entered in a date field--*/
function f_checkmonthdate(month, days, year) {
	var today = new Date();
	var v_yr  = today.getFullYear();
	var errString  = "";
	var monthArray = new Array(31,31,29,31,30,31,30,31,31,30,31,30,31);
	
	if (year < v_yr - 20 || year > v_yr + 5)
	{
		errString = 'Invalid year in the date field. ';
	}
	
	if ((month < 1) || (month > 12)) {
		errString = 'Invalid month in the date field. ';
	}
	
	if ((days > monthArray[month]) || (days < 1)) {
		errString = 'Invalid day in the date field. ';
	}
	
	if (month == 2 && days == 29) {
		if (year % 4 > 0) { 
			errString = 'Invalid day in the date field, not a leap year. ';
		}
		else if (year % 100 == 0 && year % 400 > 0) {
			errString = 'Invalid day in the date field, not a leap year. ';	
		}
	}
	return errString;
}

/*--This function is to carry out the date validations--*/
function f_checkdate(fromDate, thruDate, firstDate) {
	var fromMonth = 0;
	var fromDay   = 0;
	var fromYear  = 0;
	var throMonth = 0;
	var throDay   = 0;
	var throYear  = 0;
	var errorString   = "";
	var v_allowedDate = "";
	var allowMonth = "";
  var allowYear = "";

	var v_startDate   = "";
	var v_endDate     = "";
	
	if (fromDate != "")
	{
		fromDate  = f_formatdate(fromDate);
		fromMonth = fromDate.substr(0,2);
		fromDay   = fromDate.substr(3,2);
		fromYear  = fromDate.substr(6,4);
		v_startDate = fromYear + fromMonth + fromDay;
		
		fromMonth = fromMonth.substr(0,1) == '0' ? parseInt(fromMonth.substr(1,1)) : parseInt(fromMonth.substr(0,2));
		fromDay   = fromDay.substr(0,1)   == '0' ? parseInt(fromDay.substr(1,1))   : parseInt(fromDay.substr(0,2));
		fromYear  = parseInt(fromYear);
		
		if (fromDate.length != 10)
		{
		   	errorString = "Invalid format.  Enter Dates as 'mm/dd/yyyy'.";
		   	return errorString;
	   }		   	
		
		/*--Check if valid date is entered--*/
		errorString = f_checkmonthdate(fromMonth, fromDay, fromYear);
		if (errorString != '') {
			return errorString;
		}		
	}

	if (thruDate != "")
	{
		thruDate  = f_formatdate(thruDate);
		throMonth = thruDate.substr(0,2);
		throDay   = thruDate.substr(3,2);
		throYear  = thruDate.substr(6,4);
		v_endDate = throYear + throMonth + throDay;
			
		throMonth = throMonth.substr(0,1) == '0' ? parseInt(throMonth.substr(1,1)) : parseInt(throMonth.substr(0,2));
		throDay   = throDay.substr(0,1)   == '0' ? parseInt(throDay.substr(1,1))   : parseInt(throDay.substr(0,2));
		throYear  = parseInt(throYear);

		if (thruDate.length != 10)
		{
		   	errorString = "Invalid format.  Enter Dates as 'mm/dd/yyyy'.";
		   	return errorString;
	   }		   	
	
		errorString = f_checkmonthdate(throMonth, throDay, throYear);
		if (errorString != '') {
			return errorString;
		}
		
		if (fromDate != "")
		{
		   if (v_startDate > v_endDate) {
		   	errorString = "From date cannot be greater than through date.  Enter Dates as 'mm/dd/yyyy'.";
		   	return errorString;
		   }		   

	   }
	  
	  if (firstDate != "")
	  { 
			fromMonth = firstDate.substr(0,2);
			fromDay   = firstDate.substr(3,2);
			fromYear  = firstDate.substr(6,4);
			v_startDate = fromYear + fromMonth + fromDay;
		   if (v_startDate > v_endDate) {
		   	errorString = "Date cannot be prior to " + fromMonth + "/" + fromDay + "/" + fromYear + ".";
		   	return errorString;
		   }		   
		}
	   
	} /* thruDate not null */
	return errorString;
}

function isValidDate(frm) 
{
	// Checks for the following valid date formats:
	// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
	// Also separates date into month, day, and year variables

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

	// To require a 4 digit year entry, use this line instead:
	// var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	
	dateStr = frm.value;
	
	if (dateStr.length == 0)
	{
	  return true;
	}

  if (dateStr.length > 0 && (dateStr.substr(dateStr.length - 1,1) == "-" || dateStr.substr(dateStr.length - 1,1) == "/"))
  {
  	dateStr = dateStr.substr(0,dateStr.length - 1);
  	frm.value = dateStr;
  }

  if (dateStr.length >= 3 && dateStr.length <= 5 && (dateStr.indexOf("-") > -1 || dateStr.indexOf("/") > -1))
  {
  	sepchar = "";
  	if (dateStr.indexOf("-") == -1)
  	{
  		sepchar = "/";
  	}
  	else
  	{
  		sepchar = "-";
  	}
 		y = new Date();  		
		frm.value = frm.value + sepchar + y.getYear();
  	dateStr = frm.value;
  }

  if (dateStr.indexOf("-") == -1 && dateStr.indexOf("/") == -1 && dateStr.length >= 4)
  {
  	frm.value = dateStr.substr(0,2) + "/" + dateStr.substr(2,2) + "/";
  	if (dateStr.length > 4)
  	{
  		frm.value = frm.value + dateStr.substr(4);
  	}
  	else
  	{
  		y = new Date();  		
  		frm.value = frm.value + y.getYear();
  	}
  	dateStr = frm.value;
  }

	var matchArray = dateStr.match(datePat); // is the format ok?
	
	if (matchArray == null) 
	{
		frm.focus();
		alert("Date is not in a valid format.  Please enter 2 digits for the month and day and all 4 digits for the year.")
		return false;
	}
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4] - 0;
	if (year < 40)
	{
	  year = year + 2000;
	}
	else
	if (year < 100)
	{
	  year = year + 1900;
	}
	if (month < 1 || month > 12) 
	{
		frm.focus();
		alert("Month must be between 1 and 12.");
		return false;
	}
	if (day < 1 || day > 31) 
	{
		frm.focus();
		alert("Day must be between 1 and 31.");
		return false;
	}
	if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) 
	{
		frm.focus();
		alert("31 is not a valid day for this month.");
		return false;
	}
	if (month == 2) 
	{
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day == 29 && !isleap)) 
		{
			frm.focus();
			alert("February " + day + ", " + year + " is not a valid date.");
			return false;
    }
	}
	if (year < 1900 || year > 2100) 
	{
		frm.focus();
		alert("Invalid year.");
		return false;
	}
	frm.value = month + "/" + day + "/" + year;
	return true;  // date is valid
}

function logout()
{
	var d = $("signout");
	if (d)
	{
		d.value = 1;
		fillout = true;
		document.forms[0].action = "index.cfm";
		document.forms[0].submit();
	}
}

g_max_id = new Array();
g_size_tables = new Array();
g_size_tables2 = new Array();
g_size_tables3 = new Array();
g_win_width = 0;
g_win_height = 0;

function scrollHeader(id)
{
	var d = $("outer_div" + id + "_hdr");
	var d2 = $("inner_div" + id);
	if (d && d2)
	{
		d.scrollLeft = d2.scrollLeft;
  }
}

function showMax(id)
{
	var d = $("max_btn" + id);
	if (d)
	{
		d.style.display = "none";
	}
	d = $("min_btn" + id);
	if (d)
	{
		d.style.display = "";
	}
	d = $("inner_div" + id);
	if (d)
	{
		d.className = "inner_div_noscroll";
		sizetable(g_size_tables[g_size_tables2[id]]);
	}
}

function showMin(id)
{
	var d = $("min_btn" + id);
	if (d)
	{
		d.style.display = "none";
	}
	d = $("max_btn" + id);
	if (d)
	{
		d.style.display = "";
	}
	d = $("inner_div" + id);
	if (d)
	{
		d.className = "inner_div";
		sizetable(g_size_tables[g_size_tables2[id]]);
	}
}

function showMaxAll()
{
	for (var i in g_max_id)
	{
		showMax(g_max_id[i]);
	}
}

function showMinAll()
{
	for (var i in g_max_id)
	{
		showMin(g_max_id[i]);
	}
}

function getNumeric(fld)
{
	n = "";
	for (var i = 0; i < fld.value.length; i++)
	{
	  if (fld.value.substr(i,1) >= "0" && fld.value.substr(i,1) <= "9")
	  {
	    n += fld.value.substr(i,1) + "";
	  }
	}
  fld.value = n;  
}

function getpagewidth()
{
	if (typeof(window.innerWidth) == 'number') 
	{
    //Non-IE
    g_win_width = window.innerWidth;
    g_win_height = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
  {
    //IE 6+ in 'standards compliant mode'
    g_win_width = document.documentElement.clientWidth;
    g_win_height = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
  {
    //IE 4 compatible
    g_win_width = document.body.clientWidth;
    g_win_height = document.body.clientHeight;
  }
}

function initpage()
{
  if (typeof specinit == "function")
  {
    specinit();
  }
  if (typeof reqinit == "function")
  {
    reqinit();
    reqinit = "undefined";
  }
  getpagewidth();
	for (var i in g_size_tables)
	{
		sizetable(g_size_tables[i],i);
	}
	setFooter();
}

function resizepage(v_keepimg)
{
	getpagewidth();
	for (var i in g_size_tables)
	{
		sizetable(g_size_tables[i],i,v_keepimg);
	}
	setFooter();
}

function setFooter() 
{
	if ($) 
	{
	  var f = $('footer');
	  var f2 = $('filler');
	  if (f)
	  {
			getpagewidth();
			var windowHeight=g_win_height;
			if (windowHeight>0) 
			{
				f.style.position='relative';
				var contentHeight=$('content').offsetHeight;
				var footerHeight=f.offsetHeight - 0 + 3;
				if (windowHeight-(contentHeight+footerHeight)>=0) 
				{
					f.style.position='relative';
					f.style.top=(windowHeight-
					(contentHeight+footerHeight))+'px';
					f2.style.top = contentHeight + "px";
					f2.style.height = (f.offsetTop - contentHeight) + "px";
					f2.style.display = "";
				}
				else 
				{
		      f2.style.display = "none";
					f.style.position='static';
				}
			}
			f.style.visibility = "visible";
		}
	}
}

function findPosition( oElement ) 
{
  if( typeof( oElement.offsetParent ) != 'undefined' ) {
    for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
      posX += oElement.offsetLeft;
      posY += oElement.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ oElement.x, oElement.y ];
  }
}

function sizetable(t,idx,v_keepimg)
{
	var h = $(t + "_hdr");
	var d = $(t);
	var k = 0;
	var w = 0;
	var instr;
	var iw = 0;
	if (h && d
	  && h.rows != "undefined" && d.rows != "undefined"
	  && h.rows.length > 0)
	{
		var p = h.parentNode;

  	instr = $("outer_instr" + p.id.substr(5).replace("_hdr",""));
  	if (instr && instr.offsetHeight)
  	{
  	  iw = instr.offsetHeight;
  	}

		if (p && p.id.substr(0,5) == "outer")
		{		 
		  var p2 = p.parentNode;
		  if (p2)
		  {
		    p2.style.visibility = "hidden";
		    w = g_win_width - 200;
		    if (w < 100)
		    {
		      w = 100;
		    }
			  p.style.width = (w) + "px";
			  p2.style.width = (w) + "px";
			  
    		var p3 = d.parentNode;
        if (p3 && p3.id.substr(0,5) == "inner")
        {
          p3.style.width = (w * 2) + "px";
        }
			  
			}
		}					  
		var hr = h.rows[h.rows.length - 1];
		var dr = d.rows[Math.max(0,d.rows.length - 1)];
		if (!dr)
		{
		  dr = hr;
		}
		var v_minheight = (35 + (15 * h.rows.length - 1) - 0) + "px";
		var rnum = d.rows.length - 2;
		while(dr.style.display == "none" && rnum >= 0)
		{
		  dr = d.rows[rnum--];
		}
		if (dr && hr && hr.cells.length <= dr.cells.length)
		{
		  if (typeof(v_keepimg) == "undefined")
		  {		    
  	  	for (var j = 0; j < hr.cells.length; j++)
  	  	{
  	  		hr.cells[j].style.width = "";
  	  		dr.cells[j].style.width = "";
  
  	  		k = hr.cells[j].innerHTML.toLowerCase().indexOf("<br><img");
  	  		if (k >= 0)
  	  		{
  	  		  hr.cells[j].innerHTML = hr.cells[j].innerHTML.substr(0,k);
  	  		}
  	  		k = dr.cells[j].innerHTML.toLowerCase().indexOf("<br><img");
  	  		if (k >= 0)
  	  		{
  	  		  dr.cells[j].innerHTML = dr.cells[j].innerHTML.substr(0,k);
  	  		}
  	  	}
      }
	  	for (var j = 0; j < hr.cells.length; j++)
	  	{	  	
	  		if (hr.cells[j].clientWidth < dr.cells[j].clientWidth)
	  		{
	  			hr.cells[j].style.width = dr.cells[j].clientWidth + "px";
	  			dr.cells[j].style.width = hr.cells[j].style.width;
    			w = dr.cells[j].clientWidth;
	  		}
	  		else
	  		{
	  			dr.cells[j].style.width = hr.cells[j].clientWidth + "px";
	  			hr.cells[j].style.width = dr.cells[j].style.width;	  			
    			w = hr.cells[j].clientWidth;
	  		}

        if (typeof(v_keepimg) == "undefined")
        {
    			hr.cells[j].innerHTML += "<br><img name='siz' height=1 width=" + w + " src='images/clear.gif'>";
    			dr.cells[j].innerHTML += "<br><img name='siz' height=1 width=" + w + " src='images/clear.gif'>";
    	  }
	  	}
		}
		p = h.parentNode;
		if (p && p.id.substr(0,5) == "outer")
		{		 
		  p.style.height = v_minheight // (h.clientHeight < 35 ? 35 : h.clientHeight) + "px";
		  h.style.height = p.style.height;
		  var p2 = p.parentNode;
		  if (p2)
		  {
		    w = h.clientWidth + 20;
		    if (g_win_width - 240 < w)
		    {
		       w = g_win_width - 240;
		    }
		    if (w < 100)
		    {
		      w = 100;
		    }
			  p.style.width = (w) + "px";
			  p2.style.width = (w) + "px";

    		var p3 = d.parentNode;
        if (p3 && p3.id.substr(0,5) == "inner")
        {
          p3.style.width = (w) + "px";
        }
			}
		}				
	}

	if (h)
	{
		var p = h.parentNode;
		if (p && p.id.substr(0,5) == "outer")
		{		
			var di = $(("inner" + p.id.substr(5)).replace("_hdr",""));
			if (di 
			  && di.className.indexOf("noscroll") == -1
			  && di.style.height != "auto"
			  && g_size_tables.length == 1)
			{
				if (g_win_height > 700 + iw)
				{
					di.style.height = (g_win_height - 500 + iw) + "px";
				}				
				else
				{
					di.style.height = (200 + iw - 0) + "px";
				}
			}
		  var p2 = p.parentNode;
		  if (p2)
		  {
        p2.style.visibility = "visible";
			}
		}
	}
  if (d && h)
  {
		var p = d.parentNode;
		var p2 = h.parentNode;
		if (p && p.tagName && p.tagName.toLowerCase() == "ajax_sect" && p.parentNode)
		{
		  p = p.parentNode;
		}
		if (p2 && p2.tagName && p2.tagName.toLowerCase() == "ajax_sect" && p2.parentNode)
		{
		  p2 = p2.parentNode;
		}
    if (p && p.id.substr(0,5) == "inner")
    {
      var pwid = p.style.width.replace("px","");      
      if (pwid == 0)
      {
        pwid = p.offsetWidth;
      }
      var phit = p.style.height.replace("px","");      
      if (phit == 0)
      {
        phit = p.offsetHeight;
      }
      var b = p.id.replace("inner_div","");
      var b2 = $("min_max_btn" + b);
      if (b2)
      {
        b2.style.visibility = "visible";
      }

      b2 = $("top_link" + b);
      if (b2)
      {
        b2.style.visibility = "visible";
      }
      b2 = $("end_link" + b);
      if (b2)
      {
        b2.style.visibility = "visible";
      }

      if (p.className.indexOf("noscroll") > -1)
      {
      	phit = d.offsetHeight;
      	p.style.height = "";
      }
      else
      {
        if (d.offsetHeight < 168 + iw)
        {
          p.style.height = (d.offsetHeight + 32) + "px";
          phit = d.offsetHeight + 32;
          var b = p.id.replace("inner_div","");
          var b2 = $("min_max_btn" + b);
          if (b2)
          {
            b2.style.visibility = "hidden";
          }
          b2 = $("top_link" + b);
          if (b2)
          {
            b2.style.visibility = "hidden";
          }
          b2 = $("end_link" + b);
          if (b2)
          {
            b2.style.visibility = "hidden";
          }
        }
        else
        {
          p.style.height = (200 + iw - 0) + "px";
          phit = 200 + iw - 0;
        }
      }
      if (d.offsetHeight <= phit && d.offsetWidth + 16 <= pwid)
      {
      	p.className = p.className.replace(" scrollbar_v","");
      	p.className = p.className.replace(" scrollbar_h","");
      	p.className = p.className.replace(" scrollbar_on","");
      	p2.className = p2.className.replace(" outer_div_hdr_on","");
        if (p.className.indexOf("scrollbar_off") == -1)
        {
          p.className += " scrollbar_off";
        }
        if (p2.className.indexOf("outer_div_hdr_off") == -1)
        {
          p2.className += " outer_div_hdr_off";
        }
      }
    	else
      if (d.offsetHeight > phit && d.offsetWidth + 16 <= pwid)
      {
      	p.className = p.className.replace(" scrollbar_off","");
      	p.className = p.className.replace(" scrollbar_h","");
      	p.className = p.className.replace(" scrollbar_on","");
      	p2.className = p2.className.replace(" outer_div_hdr_off","");
        if (p.className.indexOf("scrollbar_v") == -1)
        {
          p.className += " scrollbar_v";
        }
        if (p2.className.indexOf("outer_div_hdr_on") == -1)
        {
          p2.className += " outer_div_hdr_on";
        }
      }
    	else
      if (d.offsetHeight <= phit && d.offsetWidth + 16 > pwid)
      {
      	p.className = p.className.replace(" scrollbar_off","");
      	p.className = p.className.replace(" scrollbar_v","");
      	p.className = p.className.replace(" scrollbar_on","");
      	p2.className = p2.className.replace(" outer_div_hdr_on","");
        if (p.className.indexOf("scrollbar_h") == -1)
        {
          p.className += " scrollbar_h";
        }
        if (p2.className.indexOf("outer_div_hdr_off") == -1)
        {
          p2.className += " outer_div_hdr_off";
        }
      }
    	else
      {
      	p.className = p.className.replace(" scrollbar_h","");
      	p.className = p.className.replace(" scrollbar_v","");
      	p.className = p.className.replace(" scrollbar_off","");
      	p2.className = p2.className.replace(" outer_div_hdr_off","");
        if (p.className.indexOf("scrollbar_on") == -1)
        {
          p.className += " scrollbar_on";          
        }
        if (p2.className.indexOf("outer_div_hdr_on") == -1)
        {
          p2.className += " outer_div_hdr_on";
        }
      }
    }    
  }
  scrollHeader(g_max_id[g_size_tables3[t]]);  	
}

function gotoPage(p)
{
	var d = document.forms[1];
	var d2 = $("nav_page");
	if (d2)
	{
	  d2.value = 1;
	}
	if (p <= 0)
	{
		p = 1;
	}
 	d.curr_page.value = p;
 	fillout = true;
 	d.submit();
}

function radioChk(f)
{
	f.isChecked = f.checked;
}

function radioOff(f)
{
	if (f.checked)
	{
		f.checked = !f.isChecked;
	}
}
