// nwsli.js
// The first function, isEmpty, is a general purpose function to see if input
// value has been entered at all
// comment
var tid;
function click() 
{
  if (event.button==2) 
  {
    alert(' sorry the right button has been blocked !');
  }
}
function makeUpper(theField)
{
  theField.value = theField.value.toUpperCase();
}
function isEmpty(inStr) 
{
  if (inStr == null || inStr == "") {
    return true;
  }
  return false;
}
// isNumber function will check to see if the passed string value is a positive 
// or negative number
function isNumber(inVal)
{
  var oneDecimal = false;
  var inStr = inVal.toString();
  for (var i=0; i<inStr.length; i++)
  {
    var oneChar = inStr.charAt(i);
    if (i == 0 && oneChar == '-')
    {
      continue;
    }
    if (oneChar == '.' && !oneDecimal)
    {
      oneDecimal = true;
      continue;
    }
    if (oneChar < "0" || oneChar > "9")
    {
      return false;
    }
  }
  return true;
}
//isCurrency tests a value to see if it is in a currency format ($9999999.99)
function isCurrency(inVal)
{
  var oneDecimal = false;
  var decimal_index = -1;
  var inStr = inVal.toString();
  for (var i=0; i<inStr.length; i++)
  {
    var oneChar = inStr.charAt(i);
    if (i == 0 && oneChar == '$')
    {
      continue;
    }
    if (oneChar == '.' && !oneDecimal)
    {
      oneDecimal = true;
      decimal_index = i;
      continue;
    }
    if (decimal_index > -1 && i > decimal_index+2)
    {
      return false;
    }
    if (oneChar < "0" || oneChar > "9")
    {
      return false;
    }
  }
  return true;
}
// isPosInteger will check if the passed string value contains all digits
function isPosInteger(inVal)
{
  var inStr = inVal.toString();
  var i;
  var oneChar;
  for (i = 0; i < inStr.length; i++)
  {
    oneChar = inStr.charAt(i);
    if (oneChar < "0" || oneChar > "9")
    {
      return false;
    }
  }
  return true;
}
// isAlphaNum will check if the passed string value contains all letters and digits
function isAlphaNum(inVal)
{
  var inStr = inVal.toString();
  var i;
  var oneChar;
  for (i = 0; i < inStr.length; i++)
  {
    oneChar = inStr.charAt(i);
    if ((oneChar < "0" || oneChar > "9") && (oneChar.toUpperCase() < "A" || oneChar.toUpperCase() > "Z"))
      {
        return false;
      }
  }
  return true;
}
// isAlpha will check if the passed string value contains all letters
function isAlpha(inVal)
{
  var inStr = inVal.toString();
  var i;
  var oneChar;
  for (i = 0; i < inStr.length; i++)
  {
    oneChar = inStr.charAt(i);
    if (oneChar.toUpperCase() < "A" || oneChar.toUpperCase() > "Z")
      {
        return false;
      }
  }
  return true;
}
function display(selector)
{
  var selectedText;
  selectedText = selector.options[selector.selectedIndex].text;
  return selectedText;
}
function cancelForm(docnum,modeIn)
{
  var messageStr;
  if (modeIn == "review") {
    messageStr = "Are you sure you want to quit this form?";
  }
  else
  {
    messageStr = "Warning.  Cancelling this form will permanently remove\n" +
              "this transaction from the database.  To exit the form without\n" +
              "deleting the transaction, click the Cancel button and close\n" +
              "the browser window by clicking the \"X\" at the top right corner\n" +
              "of the screen.\n\n" +
              "Are you sure you want to cancel this form?"
  }
  if (confirm(messageStr))
  {
    if (tid)
    {
      clearTimeout(tid);
    }
    window.location.replace("nwsli_main.cancel_form?v_doc_num=" + docnum + "&mode_in=" + modeIn);
  }
}
// String handlers
// extract the front part of string (prior to searchStr)
function getHead(inStr,searchStr)
{
  foundOffset = inStr.indexOf(searchStr);
  if (foundOffset == -1)
  {
    return null;
  }
  return inStr.substring(0,foundOffset);
}
// extract back end of string (after searchStr)
function getTail(inStr,searchStr)
{
  foundOffset = inStr.indexOf(searchStr);
  if (foundOffset == -1)
  {
    return null;
  }
  return inStr.substring(foundOffset+searchStr.length,inStr.length);
}
//insert newString before searchStr
function insertString(inStr,searchStr,newString)
{
  var head = getHead(inStr,searchStr);
  var tail = getTail(inStr,searchStr);
  if (head != null && tail != null)
  {
    return front + newStr + searchStr + tail;
  }
  return  null;
}
//replace searchStr with newString
function replaceString(inStr,searchStr,newString)
{
  var head = getHead(inStr,searchStr);
  var tail = getTail(inStr,searchStr);
  if (head != null && tail != null)
  {
    return head + newString + tail;
  }
  return null;
}
// remove delString
function deleteString(inStr,delString)
{
  return replaceString(inStr,delString,"");
}
//get the current year
function getTheYear()
{
  var thisYear = (new Date()).getYear();
  thisYear = (thisYear < 100)? thisYear+2000:thisYear;
  return thisYear;
}
// check the entered month for too high a value
function checkMonthLength(mm,dd)
{
  var months = new Array("","January","February","March","April","May","June","July","August","September","October","November","December");
  if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30)
  {
    alert (months[mm] + " has only 30 days.")
    return false;
  }
  else if (dd > 31)
  {
    alert (months[mm] + " has only 31 days.");
    return false;
  }
  return true;
}
//check the entered February date for too high a value
function checkLeapMonth(mm,dd,yyyy)
{
  if (yyyy % 4 > 0 && dd > 28)
  {
    alert ("February of " + yyyy + " has only 28 days.");
    return false;
  }
  else if (dd > 29)
  {
    alert ("February of " + yyyy + " has only 29 days.");
    return false;
  }
  return true;
}
//date field validation
function isDate(field)
{
  var gField = eval("document.forms[0]." + field.name);
  var inputStr = gField.value;
  if (inputStr.length == 0)
  {
    return true;
  }
  //convert hyphen delimiters to slashes
  while (inputStr.indexOf("-") != -1)
  {
    inputStr = replaceString(inputStr,"-","/");
  }
  var delim1 = inputStr.indexOf("/");
  var delim2 = inputStr.lastIndexOf("/");
  if (delim1 != -1 && delim1 == delim2)
  {
    //there is only one delimiter in the string
    alert("The date entry is not in an acceptable format.\n\nYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm/dd/yyyy.");
    gField.focus();
    gField.select();
    return false;
  }
  if (delim1 != -1)
  {
    //Both delimiters are present
    var mm = parseInt(inputStr.substring(0,delim1),10);
    var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10);
    var yyyy = parseInt(inputStr.substring(delim2 + 1,inputStr.length),10);
  }
  else
  {
    //There are no delimiters
    var mm = parseInt(inputStr.substring(0,2),10);
    var dd = parseInt(inputStr.substring(2,4),10);
    var yyyy = parseInt(inputStr.substring(4,inputStr.length),10);
  }
  if (isNaN(mm) || isNaN(dd) || isNaN(yyyy))
  {
    //there is a non-numeric value in the date
    alert("The date entry is not in an acceptable format.\n\nYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm/dd/yyyy.");
    gField.focus();
    gField.select();
    return false;
  }
  if (mm<1 || mm>12)
  {
    alert("Invalid month value.  Month must be between 01 (January) and 12 (December)");
    gField.focus();
    gField.select();
    return false;
  }
  if (yyyy<1000)
  {
    alert("Invalid year.  Please enter the year using four(4) digits (e.g. 1845,2000).");
    gField.focus();
    gField.select();
    return false;
  }
  if (mm == 2) 
  {
    if (!checkLeapMonth(mm,dd,yyyy))
    {
      gField.focus();
      gField.select();
      return false;
    }
  }
  else if (!checkMonthLength(mm,dd))
  {
    gField.focus();
    gField.select();
    return false;
  }
  mm = mm<10?"0"+mm:mm;
  dd = dd<10?"0"+dd:dd;
  gField.value = mm + "/" + dd + "/" + yyyy;
  return true;
}
//phone number validation
function isPhoneNumber(field)
{
  var gField = eval("document.forms[0]." + field.name);
  var inputStr = gField.value;
  if (inputStr.substr(0,1) == "(")
  {
    inputStr = replaceString(inputStr,"(","");
  }
  if (inputStr.indexOf(")") != -1)
  {
    inputStr = replaceString(inputStr,")","-");
  }
  var delim1 = inputStr.indexOf("-");
  var delim2 = inputStr.lastIndexOf("-");
  if (delim1 != -1 && delim1 == delim2)
  {
    //there is only one delimiter in the string
    alert("The phone number is not in an acceptable format.\n\nYou can enter phone numbers in the following formats:(999)999-9999 or 999-999-9999.");
    gField.focus();
    gField.select();
    return false;
  }
  if (delim1 != -1)
  {
    //Both delimiters are present
    var ac = parseInt(inputStr.substring(0,delim1),10);
    var exc = parseInt(inputStr.substring(delim1 + 1,delim2),10);
    var num = parseInt(inputStr.substring(delim2 + 1,inputStr.length),10);
  }
  else
  {
    //There are no delimiters
    var ac = parseInt(inputStr.substring(0,3),10);
    var exc = parseInt(inputStr.substring(3,6),10);
    var num = parseInt(inputStr.substring(6,inputStr.length),10);
  }
  if (isNaN(ac) || isNaN(exc) || isNaN(num))
  {
    //there is a non-numeric value in the phone number
    alert("The phone number is not in an acceptable format.\n\nYou can enter phone numbers in the following formats:(999)999-9999 or 999-999-9999.");
    gField.focus();
    gField.select();
    return false;
  }
  if (ac<100 || ac>999)
  {
    alert("Invalid area code.  Area code must be three digits.");
    gField.focus();
    gField.select();
    return false;
  }
  if (exc<100 || exc>999)
  {
    alert("Invalid exchange.  Exchange must be three digits.");
    gField.focus();
    gField.select();
    return false;
  }
  if (num<1000 || num>9999)
  {
    alert("Invalid number.  End of phone number must be four digits.");
    gField.focus();
    gField.select();
    return false;
  }
  gField.value = ac + "-" + exc + "-" + num;
  return true;
}
// textCounter Function counts characters left in a text area
// Original Code: Ronnie T. Moore
// Copied from : The Javascript Source
function textCounter(field,countfield,maxlimit)
{

  if (field.value == "")
  {
    countfield.value = maxlimit;
  }
  else
  {
    if (field.value.length > maxlimit) // if too long...trim it.
    {
      field.value = field.value.substring(0,maxlimit);
    }
    else
    {
      countfield.value = maxlimit - field.value.length;
    }
  }
}
function isSn(inSn) 
{
  var snParse = inSn.split("-");
  var snParts = snParse.length;
  var snDash = inSn.indexOf("-");
  var newSn = inSn;
  var i;
  var msg;
  var snState;
  if (isEmpty(inSn)) 
  {
    alert("Station Number Required to continue.  Please enter a valid Station Number");
    return false;
  } 
  else 
  {
    if (snDash == -1) //no dash in SN
    {
      if (inSn.length == 5) //state code is single digit
      {
        newSn = "0" + inSn.substr(0,1) + "-" + inSn.substr(1,5);
      } 
      else 
      {
        if (inSn.length == 6)
        {
          newSn = inSn.substr(0,2) + "-" + inSn.substr(2,6);
        } 
        else 
        {
          alert("Invalid SN.  Please enter a valid SN in the format 99-9999");
          return false;
        }
      }
    }
    else
    {
      if (snParse.length == 2) 
      {
        if ( !(inSn.length == 6 && snDash == 1) && !(inSn.length == 7 && snDash == 2))
        {
          alert("Invalid SN. Please enter a valid SN in the format 99-9999");
          return false;
        }
      }
      else
      {
        alert("Too many dashes in SN. Please enter a valid SN in the format 99-9999 (one dash only)");
        return false;
      }
    }
  }
  for (i = 0; i < snParse.length; i++)
  {
    if (!isPosInteger(snParse[i]))
    {
      alert("Non-numeric characters detected in SN.  Please re-enter in the format 99-9999");
      return false;
    }
  }
  snState = newSn.substr(0,2);
  if ((snState < 1) || ((snState > 51) && (snState < 66)) || ((snState > 79) && (snState < 91)) || (snState > 94))
  {
    alert("Invalid State Code in Station Number.  Please re-enter");
    return false;
  }
  else
  {
    return true;
  }
}
// document.onmousedown=click
