﻿//Call this function onfocus to clear the format of value in the TextBox
function FormatNumberClear(numberTextBox)
{
   if (numberTextBox.value == "") { return; }
   var unformattedNumber = numberTextBox.value.replace("-", "");
   unformattedNumber = unformattedNumber.replace("$", "");
   unformattedNumber = unformattedNumber.replace(",", "");
   unformattedNumber = unformattedNumber.replace("(", "");
   unformattedNumber = unformattedNumber.replace(")", "");
   numberTextBox.value = unformattedNumber;
   numberTextBox.style.textAlign = "left";
}

//Call this function onblur to set the format of value in the TextBox
function FormatNumber(numberTextBox, decimalPlaces, showCurrency)
{
   var numberString = numberTextBox.value;
   var result = new String();
   var num = parseFloat(numberString);
   if (isNaN(num))
   {
      //This is not a number, clear it out;
      numberTextBox.value = "";
   }
   else
   {
      var wholeNumberPart;
      var decimalPart = "";
      if (decimalPlaces == 0)
      {
         //Round decimal places
         wholeNumberPart = new String("" + Math.round(num));
      }
      else
      {
         //Find Whole Number and Decimal part of String
         var numericParts = numberString.split('.');
         wholeNumberPart = numericParts[0];
         decimalPart = numericParts.length > 1 ? '.' + numericParts[1] : '';
         //Add or Round DecimalPlaces
         if (decimalPart.length > decimalPlaces)
         {
            //Round the decimal value
            decimalPart = new String("." + Math.round(eval(decimalPart) * Math.pow(10, decimalPlaces)));
         }
         else
         {
            if ((decimalPart.length == 0) && (decimalPlaces > 0))
            {
               decimalPart = ".";
            }
         }
         while (decimalPart.length <= decimalPlaces)
         {
            decimalPart = decimalPart + "0";
         }
      }
      var rgx = /(\d+)(\d{3})/;
      //Add Thousands separator
      while (rgx.test(wholeNumberPart))
      {
         wholeNumberPart = wholeNumberPart.replace(rgx, '$1' + ',' + '$2');
      }
      numberTextBox.style.textAlign = "right";
      numberTextBox.value =  "$" + wholeNumberPart + decimalPart;
   }
}


//Call this function onkeypress with the return statement to block a non-conforming key entry.
function BlockNonNumbers(obj, e, allowDecimal, allowNegative, allowOpenPeren, allowClosePeren)
{
   var key;
   var isCtrl = false;
   var keychar;
   var reg;

   if (window.event)
   {
      key = e.keyCode;
      isCtrl = window.event.ctrlKey
   }
   else if (e.which)
   {
      key = e.which;
      isCtrl = e.ctrlKey;
   }

   if (isNaN(key)) return true;

   keychar = String.fromCharCode(key);

   // check for backspace or delete, or if Ctrl was pressed
   if (key == 8 || isCtrl)
   {
      return true;
   }

   //var reg2 = (/^\d+$/);
   reg = /\d/;
   var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
   var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
   var isFirstOP = allowOpenPeren ? keychar == '(' && obj.value.indexOf('(') == -1 : false;
   var isFirstCP = allowClosePeren ? keychar == ')' && obj.value.indexOf(')') == -1 : false;

   return isFirstD || isFirstN|| isFirstOP || isFirstCP || reg.test(keychar);

}

function IsRequired(objID) 
{
    var objValue = document.getElementById(objID);
    if (eval(objValue.value.length) == 0 || objValue.value == -1)
        return false;
    return true;
}

function IsValidZipcode(objID) {

    // USA Regular    -     ^(\d{5}-\d{4}|\d{5}$)
    // Canada Regular -     ^(\D{1}\d{1}\D{1}\s{1}\d{1}\D{1}\d{1}$)

    var objValue = document.getElementById(objID);
    var numWithNoDash = objValue.value.replace(/-/, "");

    if (objValue.value.length < 5 || objValue.value.length > 10) //CANADA
        return false;

    //USA - xxxxx-xxx
    if (objValue.value.length >= 5 && !isNaN(numWithNoDash))
        if (!objValue.value.match(/^(\d{5}-\d{4}|\d{5}$)/i))
        return false;

    //CAN - LNL NLN
    else if (objValue.value.length >= 5 && isNaN(numWithNoDash))
        if (!objValue.value.match(/^(\D{1}\d{1}\D{1}[\s{0}|\-]\d{1}\D{1}\d{1}$)|(\D{1}\d{1}\D{1}\d{1}\D{1}\d{1}$)/i))
        return false;

    return true;
}

function IsValidEmail(objID) 
{
    var regExpMail = "^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$";
    var objValue = document.getElementById(objID);
    if (!objValue.value.match(regExpMail))
        return false;
    else
        return true;
}

function validateComboChange() 
{
    return true;
}

function IsValidNumber(obj)
{
   return /^[-+]?\d+(\.\d+)?$/.test(obj.value);
}

function IsValidDate(obj)
{
    var mo, day, yr;
    var entry = obj.value;
    var reLong = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;
    var reShort = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{2}\b/;
    var valid = (reLong.test(entry)) || (reShort.test(entry));
    if (valid)
    {
       var delimChar = (entry.indexOf("/") != -1) ? "/" : "-";
       var delim1 = entry.indexOf(delimChar);
       var delim2 = entry.lastIndexOf(delimChar);
       mo = parseInt(entry.substring(0, delim1), 10);
       day = parseInt(entry.substring(delim1 + 1, delim2), 10);
       yr = parseInt(entry.substring(delim2 + 1), 10);
       // handle two-digit year
       if (yr < 100)
       {
          var today = new Date();
          // get current century floor (e.g., 2000)
          var currCent = parseInt(today.getFullYear() / 100) * 100;
          // two digits up to this year + 15 expands to current century
          var threshold = (today.getFullYear() + 15) - currCent;
          if (yr > threshold)
          {
             yr += currCent - 100;
          }
          else
          {
             yr += currCent;
          }
       }
       var testDate = new Date(yr, mo - 1, day);
       if (testDate.getDate() == day)
       {
          if (testDate.getMonth() + 1 == mo)
          {
             if (testDate.getFullYear() == yr)
             {
                //This is incompatible with the mask.
                //fill field with database-friendly format
                //obj.value = mo + "/" + day + "/" + yr;
                return true;
             }
          }
       }
    }
    else
    {
       //alert("Incorrect date format. Enter as mm/dd/yyyy.");
       return false;
    }
    return false;
 }

function GetRadioButtonListSelectedValue(rblControl)
{
   var button = null; 
   var selection = -1;

   if (rblControl)
   {
      for (var i = 0; i < rblControl.cells.length; i++)
      {
         button = document.getElementById(rblControl.id + "_" + i);
         if (button && button.checked)
         {
            return button.value;
            break;
         }
      }
   }
}




