//<script Language="javascript">
//*********************************************
// java.js - generic functions for Chesapeake Data Systems Sites
//*********************************************
//===================================================================================================
var vButton = "Check";  // Set by each button to "Check" or ""; if "Check", need to validate required fields at end"
var errmsg = "";
var sep = "";
var CurrentPage = 0;
// For tabbed forms, CurrentPage is set to the current tab number (0, 1,2, ..)
// Can't set focus if not on the current page
//If first field is required, a value must be entered before the "cancel" button will work
//   because "on-blur" fires first
  var sep = "";
    function displayDivWithImages(DivID)
    {
      // alert(DivID);
        var divstyle = new String();
        divstyle = document.getElementById(DivID +'Desc').style.display;
        if(divstyle.toLowerCase()=="block" || divstyle == "")
        {
            //document.getElementById(DivID).style.display = "none";
            document.getElementById(DivID + 'Asc').style.display = "block";
            document.getElementById(DivID + 'Desc').style.display = "none";
        }
        else
        {
            //document.getElementById(DivID).style.display = "block";
            document.getElementById(DivID + 'Asc').style.display = "none";
            document.getElementById(DivID + 'Desc').style.display = "block";
       }
    }
    function displayDiv(DivID,displayMode)
    {
       document.getElementById(DivID).style.display = displayMode;
    }
 function win_close() {
  
  window.open('','_self','');
  window.close();

 //   window.opener = top;
 //   window.close();
}
//---------------------------------------------------------------
function noenterkey() {
  return !(window.event && window.event.keyCode == 13); }
function NoEnterKey() {
  return !(window.event && window.event.keyCode == 13); }
function AdjustValue(pField,pvalue,pPrefix)
{
  var LenPrefix = pPrefix.length;
  var chkValue = "";
  var tmp = "";
  for (var i=0; i < document.forms[0].elements.length-1; i++)
  {
    if (document.forms[0].elements[i].name.substr(0,LenPrefix) == pPrefix)
    {
       if (pField.checked)
       {
         chkValue = pvalue; //FormatCurrency(pvalue,"0,");
       }
       else
       {
         chkValue = 0;//FormatCurrency(0,"0,");
       }
       document.forms[0].elements[i].value =  chkValue;
       i = 1000;
    }
  }

}
function checkitems(p_value,pPrefix)
{  
  var LenPrefix = pPrefix.length;
  var chkValue = "";
  var tmp = "";
  for (var i=0; i < document.forms[0].elements.length-1; i++)
  {
    if (document.forms[0].elements[i].name.substr(0,3) == "chk")
    {
      document.forms[0].elements[i].checked = p_value;
      chkValue =document.forms[0].elements[i].name + "    ";
      chkValue =chkValue.substr(3,5);
    }
    if (pPrefix != "" && document.forms[0].elements[i].name.substr(0,LenPrefix) == pPrefix)
    {
      if (p_value ) 
      {
        chkValue = FormatCurrency(chkValue,"0,");
        document.forms[0].elements[i].value =  chkValue;
      }
      else
      {
         document.forms[0].elements[i].value = 0;
      }
    }
  }
}
function firstFocus()
{
// Set focus to first data entry field
// Do not set focus to a button if that's all there on the form
// If you want to do so, add the code   (TForm.elements[i].type.toString().charAt(0)=="s")
   if (document.forms.length > 0)
   {
      var TForm = document.forms[0];
      for (i=0;i<TForm.length;i++)
      {
        if (((TForm.elements[i].type=="text")||
            (TForm.elements[i].type=="password")||
            (TForm.elements[i].type=="textarea")||
            (TForm.elements[i].type=="radio")||
            (TForm.elements[i].type=="select-one" 
               && document.forms[0].elements[i].name.substring(0,3) != "Web")||
            (TForm.elements[i].type=="checkbox"))
             && TForm.elements[i].disabled == false
             && TForm.elements[i].style.visibility != "hidden"
             && TForm.elements[i].type != "hidden"
             && TForm.elements[i].name !="ctl00$txtRegions"
            )
         {
      //alert(TForm.elements[i].type);
      //alert(TForm.elements[i].name);
           document.forms[0].elements[i].focus();
           break;
         }
      }
   }
//alert("Done - firstFocus");
}
function submitFormConfirm()
{
  if (requiredok() == false) return false;
  if (confirm("Are you ready to submit your response?") == true)
  {
     return true;
  } 
  else
  {
   return false;
  }
}
function requiredmissing(p_quest)
{
  alert("Please enter a value for Question " + p_quest + ".");
}
function SubmitForm(pSubmit)  {
//alert(pSubmit);
//alert(vButton);
if (pSubmit==2)
{
    fixhtml(); 
  document.forms[0].submit();
  return true;
}  

if (pSubmit==3)
{
    if (vButton=="Check")
    {
    if (requiredok() == false)
    {
      field_with_error = "";
      return false;
    }
    }
    fixhtml(); 
    document.forms[0].submit();
    return true;
}
  if (pSubmit==0)  // Regular submit from entry/edit - vbutton=check for submit; otherwise from left column
  {
  //alert(vButton);
    if (vButton == "Submitting") return false;  // prevents another button from functioning
    if (vButton == "")
    {
        document.forms[0].submit();
        return true;  // Not checking buttons -  Print
    }
    if (vButton == "Redirect")
    {
        document.forms[0].submit();
        return true;  // Not Redirect 
    }
    if (vButton == "Reset")
    {
      if (confirm("Click 'OK' to reset the form\n\nClick 'Cancel' to modify the data") == true)
      {
         fixhtml(); 
          document.forms[0].submit();
          return true;
      }  
      else
      {
         return false;
      }  
    }
    if (vButton == "Save")
    {
      if (confirm("Click 'OK' to save the data and return to this page\n\nClick 'Cancel' to modify the data") == true)
      {
         fixhtml(); 
      document.forms[0].submit();
       return true;
      }  
      else
      {
         return false;
      }  
    }
    if (vButton == "Cancel")
    {
      if (confirm("Click 'OK' to cancel the changes and return to the previous Web page\n\nClick 'Cancel' to return to the data entry/edit form to modify the data") == true)
      {
        fixhtml(); 
        document.forms[0].SaveAction.value="CallingProgram";
     document.forms[0].submit();
        return true;
      }  
      else
      {
         return false;
      }  
    }
  } //Endif submit==0
 if (vButton == "Submit")
  {
    fixhtml(); 
    document.forms[0].SaveAction.value="CallingProgram";
    document.forms[0].submit();
    return true;
  }  
  field_with_error = "XXX"; // Fake error so events for required fields won't generate error message
  if (vButton != "SaveAndNew" && vButton != "SaveAndDone")
  {
    if (confirm("Click 'OK' to submit the form\n\nClick 'Cancel' to modify the data") == false)
    {
      ShowPage(CurrentPage,1);
      return false;
    } 
  }
  if (vButton == "SaveAndNew")
  {
    if (confirm("Click 'OK' to save this record and return to this page enter data for a new record\n\nClick 'Cancel' to modify the data") == false)
    {
     ShowPage(CurrentPage,1);
     return false;
    }  
  }
  if (vButton == "SaveAndDone")
  {
    if (confirm("Click 'OK' to save this record data and return to the previous Web page\n\nClick 'Cancel' to modify the data") == false)
    {
     ShowPage(CurrentPage,1);
     return false;
    }  
  }
  if (requiredok() == false) {
    field_with_error = "";
    return false;
  }
  ShowPage(CurrentPage,1);
  fixhtml(); 
  if (pSubmit==1)
  {
     document.forms[0].submit();
  }  
  field_with_error = "";
  vButton = "Submitting";  // Indicates submit button clicked
    document.forms[0].submit();
  return true;
}
//-----------------------------------------------------------------------------
// Disable a button when it is clicked
//        btnXXX.Attributes.Add("onClick", "disableButton(this);")
//-----------------------------------------------------------------------------
 function disableButton(pField)
 {
 pField.value="Sending - please wait...";
 pField.disabled = true;
 document.forms[0].submit();
 }
//-----------------------------------------------------------------------------
function AddErrorFocus(p_field, p_message,pPageNumber)
{
      if (errmsg == "") {
         if (pPageNumber>0) {
           ShowPage(pPageNumber,1);
        }
        if (pPageNumber == CurrentPage)
        {
        document.forms[0].elements[p_field].focus();
        }
      }
      errmsg = errmsg + sep + "  " + p_message + ".";
      sep = "\n";
}
//-----------------------------------------------------------------------------
function AddErrorFocusSelect(p_field, p_message,pPageNumber)
{
      if (errmsg == "") {
         if (pPageNumber>0) {
           ShowPage(pPageNumber,1);
        }
        if (pPageNumber == CurrentPage || pPageNumber == -1)
        {
        document.forms[0].elements[p_field].focus();
        document.forms[0].elements[p_field].select();
        }
      }
      errmsg = errmsg + sep + "  " + p_message + ".";
      sep = "\n";
}
//-----------------------------------------------------------------------------
function AddErrorFocusRadio(p_field, p_message,pPageNumber)
{
      if (errmsg == "") {
         if (pPageNumber>0) {
           ShowPage(pPageNumber,1);
        }
        if (pPageNumber == CurrentPage)
        {
        document.forms[0].elements[p_field][0].focus();
        document.forms[0].elements[p_field][0].select();
        }
      }
      errmsg = errmsg + sep + "  " + p_message + ".";
      sep = "\n";
}
//-----------------------------------------------------------------------------
function AddCheckboxError(p_field, p_message,pPageNumber)
{
     AddErrorFocus(p_field, p_message,pPageNumber)
}
//-----------------------------------------------------------------------------
function AddTextError(p_field, p_message,pPageNumber) 
{
     AddErrorFocusSelect(p_field, p_message,pPageNumber)
}
//-----------------------------------------------------------------------------
//THe field is in a grid or grid entry/edit form.
//  Get the "prefix" to the field - like ctl00$ContentPlaceHolder$RdGrid$ctl00$ctl02$ctl04$
function check_required_fieldGrid(p_field, p_message,pPageNumber)
{
  if (GridPrefix=="")
  {
      var TForm = document.forms[0];
      for (i=0;i<TForm.length;i++)
      {
         var pos = TForm.elements[i].name.indexOf(p_field,0);
         if (pos > 0)
         {
            GridPrefix = TForm.elements[i].name.substr(0,pos);
            break;
         }
      }
   }
   return check_required_field(GridPrefix + p_field, p_message,pPageNumber)
}
//-----------------------------------------------------------------------------
function check_required_field(p_field, p_message,pPageNumber)
{
  if (document.forms[0].elements[p_field].type=="select-one") {
    if (document.forms[0].elements[p_field].selectedIndex ==0) {
       AddErrorFocus(p_field, p_message,pPageNumber)
       return false;
    }
    return true;
  }
  if (document.forms[0].elements[p_field].type=="checkbox") {
    if (document.forms[0].elements[p_field].checked ==false) {
       AddErrorFocus(p_field, p_message,pPageNumber)
       return false;
    }
    return true;
  }
  if (document.forms[0].elements[p_field].type=="text") {
    if (document.forms[0].elements[p_field].value =="") {
      AddErrorFocusSelect(p_field, p_message,pPageNumber)
      return false;
    }
    return true;
  }
  if (document.forms[0].elements[p_field].type=="textarea") {
    if (document.forms[0].elements[p_field].value =="") {
      AddErrorFocusSelect(p_field, p_message,pPageNumber)
      return false;
    }
    return true;
  }
  // Radio - have to call in a separate function because can't reference length here
 //alert(p_field);
 var checked = check_required_field_radio(p_field, document.forms[0].elements[p_field], p_message, pPageNumber);
 //alert(p_field);

 return checked;
}
function check_required_field_radio(p_field, rad, p_message, pPageNumber)
{
var radlen = rad.length;
if (radlen ==undefined) return(true); // Assume single radio button and checked
  for (var i=0;i < rad.length;i++)
  {
    if (rad[i].checked == true) return true;
  }
  AddErrorFocusRadio(p_field, p_message,pPageNumber)
  return false;
}
function fixhtml()
{
   if (document.forms.length > 0)
   {
      var TForm = document.forms[0];
      for (i=0;i<TForm.length;i++)
      {
         if (TForm.elements[i].type=="textarea" || TForm.elements[i].type=="hidden")
         {
          //alert(TForm.elements[i].name);
           if (TForm.elements[i].name.substr(0,2) != "__" && (TForm.elements[i].name.substr(0,2) != "ct" || TForm.elements[i].name.indexOf("$txt") > 0) )
          document.forms[0].elements[i].value = document.forms[0].elements[i].value.chrtran("<","QLTQ");
         }
      }
   }

}
function ShowPage(CurrentPage,InitialPage)
{
 // Needed when multip-page entry-edit form and field with error not on the visible page
 // Add code when re-determine how it needs to work
 // NOt sure InitialPage is meaningful -should always be 0???
  return true;
}
function SubmitFormOld()  {
//  alert("SubmitForm" + vButton);
  if (vButton == "") return true;  // Not checking buttons - Delete or Cancel or Refresh
  field_with_error = "XXX"; // Fake error so events for required fields won't generate error message
  if (requiredok() == false) {
    field_with_error = "";
    return false;
  }
 field_with_error = "";
  return true;
}
function alertmessage(p_field, p_message)
// Message for radio buttons - to be displayed when a raio button is checked
{
  if (p_field.checked == true)
  {
    if (p_message != "") { alert(p_message);}
    return true;
  }
  return false;
}

function SetButtonValue(pButtonValue) {
// Needed so system knows which button was pressed so know if need to check for required fields
// .name can be a value, blank (set to "X") or "this"
  vButton = pButtonValue.name;
  return true;
}
function PostBack(pType,pPostbackValue)
{
  var form = document.forms[0];
  if (pPostbackValue == "") {
    form.PostBackVaue.value = "X"; // Force non-blank so data will be saved
  }
  else {
    form.PostBackValue.value = pPostbackValue;
  }
  form.PostBack.value = pType;
  if (confirm("Are you sure you want to delete this record?")==true) {
     form.submit();
  }
}
function Number_Match(p_val1, p_val2, p_msg)
{
   if (p_val1 != p_val2)
   {
      alert(p_msg + ": " + p_val2);
      return(0);
   }
   return(-1);
}
//******************
// Browser functions
//******************
//===================================================================================================
function BrowserShowHide(form,p_field,p_showhide)
//===================================================================================================
{
     if (form.Browser.value=="NS")
     {
        document.getElementById(p_field).style.visibility=p_showhide;
     }
     else
     {
        document.all[p_field].style.visibility = p_showhide;
     }
}
//===================================================================================================
function Browser_ShowHide(form,p_field,p_showhide)
//===================================================================================================
{
  var showhide="";
  if (p_showhide)
  {  
    showhide="visible";
  }
  else
  {
    showhide="hidden";
  }
     if (form.Browser.value=="NS")
     {
        document.getElementById(p_field).style.visibility=showhide;
     }
     else
     {
        document.all[p_field].style.visibility = showhide;
     }

}
//===================================================================================================
function SetValue(p_field,p_value) {
//===================================================================================================
var ix = formfieldindex("", p_field);
if (ix < 0 ) {
  alert ("Field not on the form: " + p_field);
  return 0;
}
  if (document.forms[0].elements[ix].type=="text" || document.forms[0].elements[ix].type=="textarea") {
    document.forms[0].elements[ix].value = p_value; 
  }
  if (document.forms[0].elements[ix].type=="radio") {
       document.forms[0].elements[ix][p_value].checked=true; 
  }
  if (document.forms[0].elements[ix].type=="select-one") {
    var i = 0;
    for (i=0;i<document.forms[0].elements[ix].length;i++) {
      if (document.forms[0].elements[ix].options[i].value == p_value) {
       document.forms[0].elements[ix].selectedIndex= i; 
       i=999;
      }
    }
  }
  if (document.forms[0].elements[ix].type=="checkbox") {
    if (p_value==0) {
       document.forms[0].elements[ix].checked=false; 
    }
    else {
       document.forms[0].elements[ix].checked=true; 
    }
  }
}
//===================================================================================================
function formfieldindex(p_prefix, p_fieldname)
//===================================================================================================
{
var TForm = document.forms[0];
var prefixlen = p_prefix.length;
var nme

if (p_prefix=="") {
// No prefix - look for entire name
  for (i=0;i<TForm.length;i++)
  {
     if (TForm.elements[i].name==p_fieldname)
     {
       return i;
     }
  }
  return -1;
}
else {
  for (i=0;i<TForm.length;i++)
  {
     nme =TForm.elements[i].name;
     // Skip hidden fields - name specified by "H.." in the name
     if (nme.substring(0,prefixlen)==p_prefix && nme.indexOf(p_fieldname)> 0 && nme.indexOf("H..")< 0 )
     {
       return i;
     }
  }
  return -1;
}
}
//===================================================================================================
function nz(pField)
//===================================================================================================
{
  if (pField == "") return(0);
  pField = pField.chrtran(",","");
  pField = pField.chrtran("$","");
  return parseFloat(pField);
}
function textCounter(field, countfield, maxlimit) 
{
  if (field.value.length > maxlimit) // if too long...trim it!
  {
  field.value = field.value.substring(0, maxlimit);
  // otherwise, update 'characters left' counter
  }
  else
  {
    countfield.value = maxlimit - field.value.length;
  }
}
function formfieldindex(p_prefix, p_fieldname)
//===================================================================================================
{
var TForm = document.forms[0];
var prefixlen = p_prefix.length;
var nme

if (p_prefix=="") {
// No prefix - look for entire name
  for (i=0;i<TForm.length;i++)
  {
     if (TForm.elements[i].name==p_fieldname)
     {
       return i;
     }
  }
  return -1;
}
else {
  for (i=0;i<TForm.length;i++)
  {
     nme =TForm.elements[i].name;
     // Skip hidden fields - name specified by "H.." in the name
     if (nme.substring(0,prefixlen)==p_prefix && nme.indexOf(p_fieldname)> 0 && nme.indexOf("H..")< 0 )
     {
       return i;
     }
  }
  return -1;
}
}
function FormFieldVal(pField)
{
// ng alert(document.forms[0].elements.count);
// ngalert(document.forms[0].count);
  for (var i=0; i < 100; i++)
  {
//  alert (document.forms[0].elements[i].name);
  
    if (document.forms[0].elements[i].name == pField) return document.forms[0].elements[i].value
  }
  return "Unk";
}

function BrowserBack() 
{
	history.back(1);
}

function BrowserForward() 
{
	history.forward(1);
}

function BrowserStop() 
{
	document.close();
}

function BrowserPrint() 
{
	window.print();
}

function BrowserReload() 
{
	window.location.reload();
}

function BrowserClose() 
{
	window.close();
}

function NewBrowser(lcURL, lcFeatures)
{
	if (NewBrowser.arguments.length < 2) lcFeatures = "";
	window.open(lcURL,"",lcFeatures);
}

function NewBrowserRelative(lcURL, lcFeatures)
{
	if (NewBrowserRelative.arguments.length < 2) lcFeatures = "";
	NewBrowser(FullURL(lcURL));
}

function BrowserGoto(lcURL)
{
	if (parent.frames.length != 1) parent.location = lcURL;
	else window.location = lcURL;
}

function BrowserGotoRelative(lcURL)
{
	BrowserGoto(FullURL(lcURL));
}


// converts a URL expressed as a relative path into a full URL
function FullURL(lcURL)
{
var lcDocBase = document.location.href;
return(lcDocBase.substr(0,lcDocBase.lastIndexOf("/")+1) + lcURL);
}

//****************************************************************
// Return a default value if null
//****************************************************************
// luValue: input value, possibly null
// luDefault: value to return if 'luValue' is null;optional - default = ""
//
function NVL(luValue, luDefault)
{
	if (NVL.arguments.length < 2) luDefault = "";
	return (luValue == null ? luDefault : luValue);
}

//****************************************************************
// Convert Date object to a SQL-like date string (MM/DD/CCYY HH:MM:SS)
//****************************************************************

function toSqlDate(ldDate) 
{
	var lcDay = ldDate.getDate().toString();
	var lcMonth = (ldDate.getMonth()+1).toString();
	var lcYear = ldDate.getFullYear().toString();
	var lcHour = ldDate.getHours().toString();
	var lcMinutes = ldDate.getMinutes().toString();
	var lcSeconds = ldDate.getSeconds().toString();

	return lcMonth.padl(2,"0") + "/" + lcDay.padl(2,"0") + "/" + lcYear + " " + 
			lcHour.padl(2,"0") + ":" + lcMinutes.padl(2,"0") + ":" + lcSeconds.padl(2,"0")
}


//-----------------------------------------------------------------
// YearsDiff - calculate number of years between 'ldDate' and now
//-----------------------------------------------------------------
// lcDate	Date (character - "MM/DD/YY") - typically a birth date
// 
// Returns number of years (whole number). Returns 0 if date is in the future.
//
function YearsDiff(ldDate)
{
	var nowDate = new Date();
	var nowYear = nowDate.getFullYear();
	var nowMonth = nowDate.getMonth();
	var nowDay = nowDate.getDate();

	var oldDate = new Date(ldDate);
	var oldYear = oldDate.getFullYear();
	var oldMonth = oldDate.getMonth();
	var oldDay = oldDate.getDate();

	// If date in the future, return a 0; if in the current year, return 0, since they're less than 1 year old
	
	if (oldYear >= nowYear) return 0;
	
	// Normally, just subtract the years
	
	var yearDiff = nowYear - oldYear;
	
	// If the current month is after the old month, we're OK
	
	if (nowMonth > oldMonth) return yearDiff;
	
	// If the current month is the same as the old month, look at the day 
	// within the month
	
	if (nowMonth == oldMonth) return (nowDay >= oldDay ? yearDiff : yearDiff - 1);
		
	// They haven't yet reached their birthday this year
	
	return (yearDiff - 1);

}


function nz(pField)
{
  if (pField == "") return(0);
  pField = pField.chrtran(",","");
  return parseFloat(pField);
}

//</Script>
