﻿// commonscript.js File
var sAreaCodes = "|248|250|251|252|253|254|256|260|262|267|269|270|276|281|289|301|302|303|304|305|306|307|308|309|310|312|313|314|315|316|317|318|319|320|321|323|325|330|334|336|337|339|347|351|352|360|361|385|386|401|402|403|404|405|406|407|408|409|410|412|413|414|415|416|585|586|601|602|603|604|605|606|607|608|609|610|612|613|614|615|616|617|618|619|620|623|626|630|631|636|641|646|647|650|651|660|661|662|678|682|701|702|703|704|705|706|707|815|816|817|818|819|822|828|830|831|832|833|843|844|845|847|848|850|855|856|857|858|859|860|862|863|864|865|866|867|870|877|878|888|901|902|903|904|905|906|907|908|909|910|912|913|914|915|916|917|918|919|920|925|928|931|936|937|940|941|947|949|951|952|954|956|970|971|972|973|978|979|980|985|989|201|202|203|204|205|206|207|208|209|210|212|213|214|215|216|217|218|219|224|225|226|228|229|231|234|239|240|417|418|419|423|425|430|432|434|435|438|440|443|450|469|478|479|480|484|501|502|503|504|505|506|507|508|509|510|512|513|514|515|516|517|518|519|520|530|540|541|551|559|561|562|563|567|570|571|573|574|580|708|709|710|712|713|714|715|716|717|718|719|720|724|727|731|732|734|740|754|757|760|763|765|770|772|773|774|775|778|780|781|785|786|800|801|802|803|804|805|806|807|808|810|812|813|814|";

function ValidEmail( email )
{
   if( email == "" )
      return false;
   return ( email.match( /^\w(\.?[-\w])*@\w(\.?[-\w])*\.[a-zA-Z]{2,4}$/i ) ? true : false );
}

function ValidHireDate( month, year )
{
   var todaysdate = new Date();
   var year3monthago = todaysdate.getFullYear();
   var month3ago = todaysdate.getMonth() + 1;
   if( month3ago < 3 )
   {
      year3monthago--;
      month3ago = month3ago + 9;
   }
   else
      month3ago = month3ago - 3;

   var hireDate = new Date( month + '/01/' + year );
   var threemonthago = new Date( month3ago + '/01/' + year3monthago );
   return ( threemonthago >= hireDate );
}

function ValidatePhone( Phone1, Phone2, Phone3 )
{
   // are the phone numbers of the correct length?
   if( Phone1.length != 3 )
      return false;      
   if( Phone2.length != 3 )
      return false;
   if( Phone3.length != 4 )
      return false;

   // common bad phone numbers are eliminated
   if( Phone2 == '555' )
      return false;
   if( Phone2 == Phone3.substr( 0, 3 ) )
      return false;

   // verify that the area code is actually legitimate
   if( sAreaCodes.indexOf( Phone1 ) < 1 )
      return false;

   // verify that the phone number's middle 3 digits are all numbers
   var objRegExp  = /(^\d{3}$)/;
   if( !objRegExp.test( Phone2 ) )
      return false

   // verify that the phone number's last 4 digits are all numbers
   objRegExp  = /(^\d{4}$)/;
   if( !objRegExp.test( Phone3 ) )
      return false  

   return true;
}

function ValidUSZip( zipcode )
{  
   var objRegExp  = /(^\d{5}$)/;
   return objRegExp.test( zipcode );
}

function ValidName( first, last )
{
   if( first == "First" || last == "Last" )
      return false;

   var objRegExp  = /^([-a-zA-Z\.']+)$/;
   return ( objRegExp.test( first ) && objRegExp.test( last ) );
}

function ValidLastName( last )
{
   if( last == "Last" )
      return false;

   var objRegExp  = /^([-a-zA-Z\.']+)$/;
   return ( objRegExp.test( last ) );
}

function ValidateSSN( ssn1, ssn2, ssn3 )
{
   if( ssn1.length != 3 )
      return false;

   if( ssn2.length != 2 )
      return false;

   if( ssn3.length != 4 )
      return false;

   var objRegExp  = /(^\d{3}$)/;
   return objRegExp.test( ssn1 );
}

function ValidateABA( abarouting )
{
   var objRegExp  = /(^\d{9}$)/;
   if( objRegExp.test( abarouting ) == false )
      return false;

   var total = 0;
   for( var i = 0; i < 9; i++ )
   {
      var val = parseInt( abarouting.substring( i, i+1 ) );
      if( i % 3 == 0 ) val = val * 3;
      if( i % 3 == 1 ) val = val * 7;
      total += val;
   }

   return ( total % 10 == 0 );
}

function SetMonth( day, month )
{
   var daysInMonth = new Array( 12 );
   daysInMonth[1] = 31;
   daysInMonth[2] = 28;
   daysInMonth[3] = 31;
   daysInMonth[4] = 30;
   daysInMonth[5] = 31;
   daysInMonth[6] = 30;
   daysInMonth[7] = 31;
   daysInMonth[8] = 31;
   daysInMonth[9] = 30;
   daysInMonth[10] = 31;
   daysInMonth[11] = 30;
   daysInMonth[12] = 31;

   var origDay = day.selectedIndex + 1;
   var monthNum = month.selectedIndex + 1;

   // delete all days past the end of my month (i.e. moving from march to feb removes 29-31)
   for( var i = day.options.length; i >= daysInMonth[ monthNum ]; i-- )
      day.options[ i ] = null;

   // add any days that need to be added (i.e. moving from feb to march adds 29-31)
   for( var i = day.options.length + 1; i <= daysInMonth[ monthNum ]; i++ )
   {
      day.options[ day.options.length ] = 
         new Option( i + "", i + "" );
   }

   if( origDay > day.options.length )
      day.selectedIndex = day.options.length - 1;
}