// JavaScript Document
//Step 1
function ValidatePaydayFormStep1()
{
	var ErrMsg = '';
	ErrMsg += checkDOB();
	ErrMsg += checkEmail('email', 'email address');
	if(ErrMsg != '')
	{
		alert(ErrMsg);
		return false;
	}
}
function getObj(elementID)
  {
	return document.getElementById(elementID);
  }
function checkDOB()
{
	var ErrMsg = '';
	var o=eval('document.getElementById("DOB2").value')+'/'+eval('document.getElementById("DOB1").value')+'/'+eval('document.getElementById("DOB3").value');
	if(isNaN(Date.parse(o)))
	{
		ErrMsg+='Invalid birthday date.\n';
	}
	else
	{
		var D=new Date();
		var k=new Date(o);
		var f=D.getFullYear()-k.getFullYear();
		if(f<18)
		{
			ErrMsg +="You must be 18 or older. You are only "+f+" according to your birthday information.\n"
		}
	}
	return ErrMsg;
} 
function checkEmail(FildID,Name)
{
	var ErrMsg='';
	var r=d(eval('document.getElementById("'+FildID+'").value'));
	if(r.search(/([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/)==-1)
	{
		ErrMsg+='Invalid '+Name+'.\n';
	}
	return ErrMsg;
}
function d(s)
{
	while((s.substring(0,1)==' ')||(s.substring(0,1)=='\n')||(s.substring(0,1)=='\r'))
	{
		s=s.substring(1,s.length);
	}
	while((s.substring(s.length-1,s.length)==' ')||(s.substring(s.length-1,s.length)=='\n')||(s.substring(s.length-1,s.length)=='\r'))
	{
		s=s.substring(0,s.length-1);
	}return s;
}
//Step 2
function ValidatePaydayFormStep2()
{
	var ErrMsg = '';
	ErrMsg += checkText('FName', 'First Name');
  	ErrMsg += checkText('LName', 'Last Name');
  	ErrMsg += checkText('ADDRESS', 'Street Address');
	ErrMsg += checkText('City', 'City');
	ErrMsg += checkText('State', 'State');
	ErrMsg += checkZIP('Zip', 'Zip Code');
  	ErrMsg += checkUSPhone('PRI_PHON1', 'PRI_PHON2', 'PRI_PHON3','Home Phone');
	ErrMsg += checkUSPhone('WORK_PHONE1', 'WORK_PHONE2', 'WORK_PHONE3','Work Phone');
	ErrMsg += checkText('Employer', 'Your Employer Name');
	ErrMsg += checkText('Occupation', 'Occupation');
	ErrMsg += checkText('SupervisorName', 'Supervisor Name');
	ErrMsg += checkUSPhone('SuperPhone1', 'SuperPhone2', 'SuperPhone3', 'Supervisor\'s Phone Number');
	ErrMsg += checkText('SupervisorName', 'Supervisor Name');
	if(ErrMsg != '')
	{
		alert(ErrMsg);
		return false;
	}
}
function checkText(FildID,Name)
{
	var ErrMsg='';
	if(d(eval('document.getElementById("'+FildID+'").value'))=='')
	{
		ErrMsg= Name + ' is Required.\n';
	}
	return ErrMsg;
}
function nextField(fieldlength, current, next) {
    var current = document.getElementById(current);
    var next = document.getElementById(next);
	var mylength = parseInt(fieldlength)
    if (current.value.length >= mylength) {
        next.focus();
    }
}
function checkZIP(FildID,Name)
{
	var ErrMsg='';
	var O=d(eval('document.getElementById("'+FildID+'").value'));
	if(O.search(/\d{5}$|\d{5}-\d{4}$/)==-1)
	{
		ErrMsg+='Invalid '+Name+'.\n';		
	}
	return ErrMsg;
}
function checkUSPhone(FildID1, FildID2, FildID3,Name)
{
	var Msg='';
	var F=d(eval('document.getElementById("'+FildID1+'").value+document.getElementById("'+FildID2+'").value+document.getElementById("'+FildID3+'").value'));
	var m='';
	for(i=0;i<F.length;i++)
	{
		if(e(F.charAt(i)))
		{
			m+=F.charAt(i);
		}
	}
	if(m.length ==0)
	{
		Msg= Name+' is Required\n';
	}
	else if(m.length!=10)
	{
		Msg= Name+' must contain only 10 digits\n';
	}
	else
	{
		var j=m.slice(0,3);
		var M=m.slice(3,6);
		var z=m.slice(6,10);
		var v='900.911.411.456.500.222.333.444.555.666.777.999';
		if((v.indexOf(j)!=-1)||(j.charAt(0)=='0')||(j.charAt(0)=='1'))
		{
			Msg+='Invalid area code in '+Name+'\n';
		}
		var w='411.555.611.911';
		if((w.indexOf(M)!=-1)||(M.charAt(0)=='0')||(M.charAt(0)=='1'))
		{
			Msg+='Invalid exchange in '+Name+'\n';
		}
		var A=M+z;
		var g=true;
		for(i=1;i<A.length;i++)
		{
			if(A.charAt(i)!=A.charAt(0))
			{
				g=false;
				break;
			}
		}
		if(g)
		{
			Msg+='Repeating digits in '+Name+' are not allowed.\n';
		}
	}
	return Msg;
}
function e(c)
{
	return(c>='0'&&c<='9');
}
//Step 3
function ValidatePaydayFormStep3()
{
	var ErrMsg = '';
	ErrMsg += checkText('BANK_NAME', 'Bank Name');
  	ErrMsg += checkText('BANK_ACCOUNT', 'Bank Account Number');
	ErrMsg += checkNum('BANK_ACCOUNT', 'Bank Account Number');
  	ErrMsg += checkText('BANK_ABA', 'Bank Routing Number');
	ErrMsg += checkNum('BANK_ABA', 'Bank Routing Number');
	ErrMsg += checkUSPhone('BankPhone1', 'BankPhone2', 'BankPhone3','Bank Phone Number');
	ErrMsg += checkText('MaidenName', 'Maiden Name');
	ErrMsg += checkText('DRIV_LIC', 'Driver License Number');
	ErrMsg += checkNum('DRIV_LIC', 'Driver License Number');
	ErrMsg += checkText('SSN1', 'First Section of Social Security Number');
	ErrMsg += checkText('SSN2',  'Second Section of Social Security Number');
	ErrMsg += checkText('SSN3',  'Third Section of Social Security Number');
	
	// SSN is in 3 parts. Put the parts together.
  	var ssn = eval("document.getElementById('SSN1').value + '-' + document.getElementById('SSN2').value + '-' + document.getElementById('SSN3').value");
	//Do aditional checkup with ssn
  	
	ErrMsg += checkText('NextPayDay', 'Next Pay Date');
	ErrMsg += checkText('NextPayDay2', 'Next After Next Pay Date');
	ErrMsg += isDate(document.getElementById('NextPayDay').value, 'Next Pay Date');
	ErrMsg += isDate(document.getElementById('NextPayDay2').value, 'Next After Next Pay Date');
	
	ErrMsg += checkText('RefFName1', 'Reference #1 First Name');
	ErrMsg += checkText('RefLName1', 'Reference #1 Last Name');
	ErrMsg += checkUSPhone('RefPhoneName11', 'RefPhoneName12', 'RefPhoneName13', 'Reference #1 Phone');
	ErrMsg += checkText('RefFName2', 'Reference #2 First Name');
	ErrMsg += checkText('RefLName2', 'Reference #2 Last Name');
	ErrMsg += checkUSPhone('RefPhoneName21', 'RefPhoneName22', 'RefPhoneName23', 'Reference #2 Phone');
	ErrMsg += checkABA(document.getElementById('BANK_ABA').value)
	
	if(ErrMsg != '')
	{
		alert(ErrMsg);
		return false;
	}
}
function isDate(dateStr, field) {

    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
    var errmsg = ""
    if (matchArray == null) {
        return "Please a correct date for " + field + " in one of the following formats:\nmm/dd/yy, mm/dd/yyyy, mm-dd-yyyy, or mm-dd-yyyy.\n";
    }

    month = matchArray[1]; // parse date into variables
    day = matchArray[3];
    year = matchArray[4];

    if (month < 1 || month > 12) { // check month range
        return "Month must be between 1 and 12.\n";
    }

    if (day < 1 || day > 31) {
        return "Day must be between 1 and 31.";
    }

    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
        return "Month " + month + " doesn't have 31 days!\n";
    }

    if (month == 2) { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day == 29 && !isleap)) {
            return "February " + year + " doesn't have " + day + " days!\n";
        }
    }
    return ""; // date is valid
}
function checkNum(FildID,Name)
{
	var ErrMsg='';
	if(isNaN(eval('document.getElementById("'+FildID+'").value')))
	{
		ErrMsg= Name + ' Should Be A Number With No Spaces.\n';
	}
	return ErrMsg;
}

function checkABA(s) {
  var i, n, t;
  var ErrMsg='';
  // First, remove any non-numeric characters.
  t = "";
  for (i = 0; i < s.length; i++) {
    c = parseInt(s.charAt(i), 10);
    if (c >= 0 && c <= 9)
      t = t + c;
  }
  // Check the length, it should be nine digits.
  if (t.length != 9)
    ErrMsg='Bank Routing Number Is Not Valid, It Should Be At Least 9 Digits';
	
   return ErrMsg; 
  // Now run through each digit and calculate the total.
  n = 0;
  for (i = 0; i < t.length; i += 3) {
    n += parseInt(t.charAt(i),     10) * 3
      +  parseInt(t.charAt(i + 1), 10) * 7
      +  parseInt(t.charAt(i + 2), 10);
  }
  // If the resulting sum is an even multiple of ten (but not zero),
  // the aba routing number is good.
  if (n != 0 && n % 10 == 0)
    return ErrMsg;
  else
     ErrMsg ='Bank Routing Number Is Not Valid Check Sum Returns Invalid';
	
	return ErrMsg;
}

function validateForm(f) {
  var s = f.elements["aba"].value;
  if (checkABA(s))
    alert("OK");
  else
    alert("INVALID");
  return false;
}


