function toInt(sParam)
{
  var sReturn = '';
  var sVal = Trim(String(sParam));
  var ch = '';
  for(var i = 0; i < sVal.length; i++)
  {
    ch = sVal.substring(i, i + 1);
    if(ch >= '0' && ch <= '9')
      sReturn += ch;
    else
      break;
  }
  return sReturn;
}

function toDbl(sParam, nDec)
{
  var sReturn = '';
  var havedec = false;
  var sVal = Trim(sParam);
  var deccount = nDec;
  var i = 0;
  if(sVal.substring(0, 1) == '-')
  {
    i++;
    sReturn = '-';
  }
  for (; i < sVal.length; i++)
  {
    var ch = sVal.substring(i, i + 1);
    if(ch < '0' || ch > '9')
    {
      if(ch == '.')
      {
        if(havedec)
        {
          return sReturn;
        }
        else
        {
          if(sReturn == '' || sReturn == '-')
          {
            sReturn += '0';
          }
          havedec = true;
          sReturn += ch;
        }
      }
    }
    else
    {
      if(havedec)
      {
        if(deccount < 1)
          return sReturn;
        deccount--;
      }
      sReturn += ch;
    }
  }
  return sReturn;
}

function valEmail(oField)
{
  if(! validateEmail(oField.value))
  {
    alert('Invalid Email address.');
    oField.focus();
    return false;
  }
  return true;
}

function validateEmail(sVal)
{
  var nPos = 0;
  var nPos2 = 0;
  var sAddr = Trim(sVal);
  if(sAddr.length > 0)
  {
    if(sAddr.length < 7)
      return false;
    nPos = sAddr.indexOf(' ');
    if(nPos > 0)
      return false;
    nPos = sAddr.indexOf('@');
    if(nPos > 0)
    {
      nPos2 = sAddr.indexOf('.', nPos);
      if(nPos2 > nPos)
        return true;
      else
        return false;
    }
    else
    {
      return false;
    }
  }
  return true;
}

function validateDate(sVal)
{
  if (Trim(sVal).length == 0)
    return true;
  if(ConvDate(sVal).length == 0)
    return false;
  else
    return true;
}

function validateYear(aYear)
{
  
  var nYear = toInt(aYear);
  if(nYear == '')
    return(aYear);
  nYear -= 0; 
  if(nYear < 100)
  {
    var dToday = new Date();
    var nCurrentYear = dToday.getFullYear() % 100;
    var nCent = Math.floor(dToday.getFullYear() / 100);
    if (nCurrentYear <= 50)
    {
      if(nYear >= (nCurrentYear + 50)) nCent--;
    } 
    else if (nCurrentYear > 50) 
    {
      if(nYear <= (nCurrentYear - 50)) nCent++;
    }
    nYear += nCent * 100;
  }
  if(nYear < 1753)
    nYear = 1753;
  if(nYear > 9999)
    nYear = new Date().getFullYear();
  return nYear;
}

function valDate(oField)
{
  var sDate = Trim(oField.value);
  if(sDate == '')
    return true;
  sDate = ConvDate(sDate);
  if(sDate == '')
  {
    alert('Invalid Date');
    oField.focus();
    return false;
  }
  oField.value = sDate;
  return true;
}

function ConvDate(theDate)
{
  var iPos = 0;
  var dToday = new Date();
  var nCent, nYear, nMonth, nDay;
  var dResult;
  var sSep = '';

  if ((iPos = theDate.indexOf('-')) >= 0)
  {
    sSep = '-';
  }
  else
  {
    if ((iPos = theDate.indexOf('/')) >= 0) 
      sSep = '/';
  }

  if (sSep == '') 
  {
    switch (theDate.length) 
    {
    case 1:
      return '';
    case 2:
      nMonth = theDate.substring(0, 1) - 0;
      nDay = theDate.substring(1, 2) - 0;
      nYear = dToday.getFullYear();
      break;
    case 3:
      nMonth = theDate.substring(0, 2) - 0;
      if(nMonth > 12)
      {
        nMonth = theDate.substring(0, 1) - 0;
        nDay = theDate.substring(1, 3) - 0;
      }
      else
      {
        nDay = theDate.substring(2, 4) - 0;
        if(nDay > 31)
        {
          nMonth = theDate.substring(0, 1) - 0;
          nDay = theDate.substring(1, 3) - 0;
        }
      }
      nYear = dToday.getFullYear();
      break;
    case 4:
      nMonth = theDate.substring(0, 2) - 0;
      nDay = theDate.substring(2, 4) - 0;
      nYear = dToday.getFullYear();
      break;
    case 5:
      nMonth = theDate.substring(0, 1) - 0;
      nDay = theDate.substring(1, 3) - 0;
      nYear = theDate.substring(3) - 0;
      nYear = validateYear(nYear);
      break;
    case 6:
      nMonth = theDate.substring(0, 2) - 0;
      nDay = theDate.substring(2, 4) - 0;
      nYear = theDate.substring(4) - 0;
      nYear = validateYear(nYear);
      break;
    case 7:
      nMonth = theDate.substring(0, 2) - 0;
      if(nMonth > 12)
      {
        nMonth = theDate.substring(0, 1) - 0;
        nDay = theDate.substring(1, 3) - 0;
      }
      else
      {
        nDay = theDate.substring(2, 3) - 0;
      }
      nYear = theDate.substring(3) - 0;
      nYear = validateYear(nYear);
      break;
    case 8:
      nMonth = theDate.substring(0, 2) - 0;
      nDay = theDate.substring(2, 4) - 0;
      nYear = theDate.substring(4) - 0;
      nYear = validateYear(nYear);
      break;
    }
  } 
  else // sSep <> ''
  {
    nMonth = theDate.substring(0, iPos) - 0;
    theDate = theDate.substring(iPos + 1);
    iPos = theDate.indexOf(sSep);
    if (iPos == -1) 
    {
      nDay = theDate - 0;
      nYear = dToday.getFullYear();
    }
    else
    {
      nDay = theDate.substring(0, iPos) - 0;
      if (iPos == (theDate.length - 1)) 
      {
        nYear = dToday.getFullYear();
      } 
      else
      {
        nYear = theDate.substring(iPos + 1) - 0;
        nYear = validateYear(nYear);
      }
    }
  }
  dResult = new Date(nYear, nMonth - 1, nDay);
  if (isNaN(dResult)) return '';
  if (nYear == dResult.getFullYear() && nMonth == (dResult.getMonth() + 1) && nDay == dResult.getDate()) 
    return nMonth + '/' + nDay + '/' + nYear;
  return '';
}

function validatePhone(sNumber)
{
  if(Trim(sNumber).length == 0)
    return true;
  if(FormatPhone(sNumber).length == 0)
    return false;
  return true;
}

function FormatPhone(sNumber)
{
  var sVal = ExtractNumeric(sNumber, false, false);
  var nPos = 0;
  var nLen = sVal.length;
  var sReturn = '';
  if (nLen < 7)
  {
    return sReturn;
  }
  if (nLen < 8 )
  {
    sReturn = sVal.substring(0, 3) + '-' + sVal.substring(3, 7);
    return sReturn;
  }
  if (nLen < 9)
  {
    sReturn = sVal.substring(0, 1) + '-' + sVal.substring(1, 4) + '-' + sVal.substring(4, 8);
    return sReturn;
  }
  if (nLen < 10)
  {
    sReturn = sVal.substring(0, 2) + '-' + sVal.substring(2, 5) + '-' + sVal.substring(5, 9);
    return sReturn;
  }
  if (nLen < 11)
  {
    sReturn = '(' + sVal.substring(0, 3) + ') ' + sVal.substring(3, 6) + '-' + sVal.substring(6, 10);
    return sReturn;
  }
  else
  {
    sReturn = sNumber;
  }
  return sReturn;
}

function Trim(vVal)
{
  var sVal = vVal + '';
  var m,n;
  for (n = 0; n < sVal.length && sVal.charAt(n) == ' '; n++);
  for (m = sVal.length - 1; m > n && sVal.charAt(m) == ' '; m--);
  return sVal.substring(n, m + 1);
}

function ExtractAlpha(sVal)
{
  var n = 0;
  var sRes = '';
  var sChar = '';
  for (n = 0; n < sVal.length; n++)
  {
    sChar = sVal.charAt(n);
    if ((sChar >= 'A' && sChar <= 'Z') || (sChar >= 'a' && sChar <= 'z') || sChar == ' ')
      sRes += sChar;
  }
  return sRes;
}

function ExtractNumeric(sVal, nDec, bNeg)
{
  var n = 0, sRes = '', sChar;
  if (bNeg)
  {
    sChar = sVal.substring(0, 1);
    if (sChar == '-')
    {
      sRes = '-';
      n = 1;
    }
    else if (sChar == '+')
    {
      n = 1;
    }
  }
  if (nDec > 0)
  {
    var bDec = true;
    for (; n < sVal.length; n++)
    {
      sChar = sVal.charAt(n);
      if (sChar >= '0' && sChar <= '9')
      {
        sRes += sChar;
      }
      else if (sChar == '.' && bDec)
      {
        sRes += '.';
        bDec = false;
      }
    }
  }
  else
  {
    for (; n < sVal.length; n++)
    {
      sChar = sVal.charAt(n);
      if (sChar >= '0' && sChar <= '9')
      {
        sRes += sChar;
      }
    }
  }
  return sRes;
}

function setIndex(oSelect, sValue, bText)
{
  for(var i = 0; i < oSelect.length; i++)
  {
    if(bText)
    {
      if(oSelect.options[i].text == sValue)
			{
			  oSelect.selectedIndex = i;
			  return;
			}
    }
    else
    {
			if(oSelect.options[i].value == sValue)
			{
			  oSelect.selectedIndex = i;
			  return;
			}
	  }
  }
  oSelect.selectedIndex = 0;
  return;
}
