var nextSSNUsed = new Array(false, false, false);

function nextSSNField(fieldNumber) {
    var current = document.getElementById('ssn' + fieldNumber);
    var next = document.getElementById('ssn' + (fieldNumber+1));
    
    if (fieldNumber == 3) {
        if (current.value.length >= 4) {
            nextSSNUsed[fieldNumber-1] = true;
            return void(0);
        }
    }
    
    if (fieldNumber == 1) {
        if (current.value.length >= 3) {
            nextSSNUsed[fieldNumber-1] = true;
            next.focus();
        }
    }
    
    if (fieldNumber == 2) {
        if (current.value.length >= 2) {
            nextSSNUsed[fieldNumber-1] = true;
            next.focus();
        }
    }
}

// returns true if the key pressed was a number, dash, delete, or backspace
function onlyNumbersAndDashes(e)
{
    var keyCode;
    var c;
    
    if (window.event) { // Internet Explorer
        keyCode = e.keyCode;
    }
    else if (e.which) { // Everyone Else
        keyCode = e.which;
    }
    c = String.fromCharCode(keyCode);
    
    if (isNaN(c) && 
        keyCode != 109 && keyCode != 189 && // dash key
        (keyCode < 96 || keyCode > 105) && // number pad
        (keyCode < 37 || keyCode > 40) && // arrow keys
        keyCode != 9 && keyCode != 46 && keyCode != 8) // tab, backspace, delete
    { 
        return false;
    }
    return true;
}

function onlyEdit(e) {
    var keyCode;
    var c;
    
    if (window.event) { // Internet Explorer
        keyCode = e.keyCode;
    }
    else if (e.which) { // Everyone Else
        keyCode = e.which;
    }
    c = String.fromCharCode(keyCode);
    
    if (keyCode != 9 && keyCode != 46 && keyCode != 8 && // tab, backspace, delete
        (keyCode < 37 || keyCode > 40))  // arrow keys
    { 
        return false;
    }
    return true;
}

function ssnRightSize(fieldName, size) {
    var length = document.getElementById(fieldName).value.length;
    if (length < size) {
        return true;
    }
    return false;
}

function checkSSNKeys(e, fieldName)
{
    switch(fieldName)
    {
        case 'ssn1':
            if (onlyNumbersAndDashes(e)) {
                if (ssnRightSize(fieldName, 3)) {
                    setTimeout('nextSSNField(1)', 1);
                    return true;
                } else {
                    return onlyEdit(e);
                }
            }
            break;
        case 'ssn2':
            if (onlyNumbersAndDashes(e)) {
                if (ssnRightSize(fieldName, 2)) {
                    setTimeout('nextSSNField(2)', 1);
                    return true;
                } else {
                    return onlyEdit(e);
                }
            }
            break;
        case 'ssn3':
            if (onlyNumbersAndDashes(e)) {
                if (ssnRightSize(fieldName, 4)) {
                    setTimeout('nextSSNField(3)', 1);
                    return true;
                } else {
                    return onlyEdit(e);
                }
            }
            break;
    }
    return false;
}

function checkMin(minimum, formname, fieldName, fieldDesc) {
    var error = '';
    var current = eval('document.' + formname + '.' + fieldName + '.value');
    if (current != '') {
        if (parseInt(current) < minimum) {
            error += '- ' + fieldDesc + ' must be greater than ' + minimum + '\n';
        }
    }
    return error;
}

function SubmitForm(t,K){
	eval('document.'+t+'.action=quoteURL');
	eval('document.'+t+'.submit()');
}

function check(formname) {
  var errors = '';
  errors += checkText(formname, 'fname', 'First name');
  errors += checkText(formname, 'lname', 'Last name');
  errors += checkText(formname, 'address1', 'Address');
  errors += checkText(formname, 'city', 'City');
  errors += checkText(formname, 'state', 'State');
  errors += checkText(formname, 'zip', 'ZIP');
  errors += checkZIP(formname, 'zip', 'ZIP');
  errors += checkText(formname, 'homephone', 'Home phone');
  errors += checkUSPhone(formname, 'homephone', 'Home phone');  
  errors += checkText(formname, 'email', 'E-mail'); 
  errors += checkEmail(formname, 'email', 'E-mail');
  if ((checkNum(formname, 'yearsAtHomeAddress', 'How long at this address?') != '') && (checkNum(formname, 'monthsAtHomeAddress', 'How long at this address?') != ''))
  {
    errors += checkNum(formname, 'yearsAtHomeAddress', 'How long at this address?');
  }
  if ((checkText(formname, 'yearsAtHomeAddress', 'How long at this address?') != '') && (checkText(formname, 'monthsAtHomeAddress', 'How long at this address?') != ''))
  {
    errors += checkText(formname, 'yearsAtHomeAddress', 'How long at this address?');
  }
  errors += checkRadio(formname, 'rent_or_own', 'Rent or own?');
  errors += checkText(formname, 'monthlypayment', 'Monthly payment');
  errors += checkNum(formname, 'monthlypayment', 'Monthly payment');
  errors += checkText(formname, 'bmonth', 'Date of birth - Month'); 
  errors += checkText(formname, 'bday', 'Date of birth - Day');
  errors += checkText(formname, 'byear', 'Date of birth - Year');   
  errors += checkDOB(formname, 'bmonth', 'bday', 'byear', 'Date of birth');
  
  // SSN is in 3 parts. Put the parts together and then submit to the next form.
  var ssn = eval("document.forms['"+formname+"'].elements['ssn1'].value + '-' + document.forms['"+formname+"'].elements['ssn2'].value + '-' + document.forms['"+formname+"'].elements['ssn3'].value");
  eval("document.forms['"+formname+"'].elements['ssn'].value = ssn");
  
  errors += checkText(formname, 'ssn', 'Social Security #');
  errors += checkSSN(formname, 'ssn', 'Social Security #');
  errors += checkText(formname, 'employername', 'Employer name');
  errors += checkText(formname, 'yourjobtitle', 'Your job title');
  errors += checkText(formname, 'yearsWithEmployer', 'How long with this employer');
  errors += checkNum(formname, 'yearsWithEmployer', 'How long with this employer');
  if ((checkNum(formname, 'yearsWithEmployer', 'How long with this employer') != '') && (checkNum(formname, 'monthsWithEmployer', 'How long with this employer') != ''))
  {
    errors += checkNum(formname, 'yearsWithEmployer', 'How long with this employer');
  }
  if ((checkText(formname, 'yearsAtHomeAddress', 'How long with this employer') != '') && (checkText(formname, 'monthsWithEmployer', 'How long with this employer') != ''))
  {
    errors += checkText(formname, 'yearsWithEmployer', 'How long with this employer');
  }
  errors += checkText(formname, 'monthlyincome', 'Monthly income');
  errors += checkNum(formname, 'monthlyincome', 'Monthly income');
  errors += checkMin(minimumGrossMonthly, formname, 'monthlyincome', 'Gross Monthly Income');
  errors += checkText(formname, 'workphone', 'Work phone');
  errors += checkUSPhone(formname, 'workphone', 'Work phone');
  errors += checkRadio(formname, 'bankruptcy', 'Declared bankruptcy?');
  errors += checkRadio(formname, 'cosigner', 'Cosigner available?');
  if (errors == '')
  {
	var now = new Date();
	var ldid = eval('document.'+formname+'.generatorID.value') + '-' + now.getTime();
	//alert('in check() ldid = ' + ldid); // DEBUG
	eval('document.'+formname+'.leadID.value="' + ldid + '"');
	SubmitForm(formname, 'B1');
  }
  else
  {
    alert(errors);
  }
  return false;
}
function checkText(t,L,n){var B='';if(d(eval('document.'+t+'.'+L+'.value'))==''){B='- '+n+' is Required.\n';}return B;};function checkNum(t,L,n){var B='';if(isNaN(eval('document.'+t+'.'+L+'.value'))){B='- '+n+' Should Be A Number With No Spaces.\n';}return B;};function checkSelect(t,I,n){var B='';if(eval('document.'+t+'.'+I+'.selectedIndex')==0){B='- '+n+' is Required.\n';}return B;};function checkRadio(t,H,n){var B='';var G='';for(var i=0;i<eval('document.'+t+'.'+H+'.length');i++){if(eval('document.'+t+'.'+H+'[i].checked')){G+='-';}}if(G==''){B='- '+n+' is Required.\n';}return B;};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;};function checkZIP(t,L,n){var B='';var O=d(eval('document.'+t+'.'+L+'.value'));if(O.search(/\d{5}$|\d{5}-\d{4}$/)==-1)B+='- Invalid '+n+'.\n';return B;};function checkSSN(t,L,n){var B='';var J=d(eval('document.'+t+'.'+L+'.value'));if(J.search(/^\d{3}-\d{2}-\d{4}$/)==-1)B+='- Invalid '+n+'.\n';return B;};function e(c){return(c>='0'&&c<='9');};function checkUSPhone(t,L,n){var B='';var F=d(eval('document.'+t+'.'+L+'.value'));var m='';for(i=0;i<F.length;i++){if(e(F.charAt(i))){m+=F.charAt(i);}}if(m.length!=10){B='- '+n+' 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'))B+='- Invalid area code in '+n+'\n';var w='411.555.611.911';if((w.indexOf(M)!=-1)||(M.charAt(0)=='0')||(M.charAt(0)=='1'))B+='- Invalid exchange in '+n+'\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)B+='- Repeating digits in '+n+' are not allowed.\n';}return B;};function checkEmail(t,L,n){var B='';var r=d(eval('document.'+t+'.'+L+'.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)B+='- Invalid '+n+'.\n';return B;};function checkDOB(t,C,l,N,n){var B='';var o=eval('document.'+t+'.'+C+'.value')+'/'+eval('document.'+t+'.'+l+'.value')+'/'+eval('document.'+t+'.'+N+'.value');if(isNaN(Date.parse(o))){B+='- Invalid '+n+'.\n';}else{var D=new Date();var k=new Date(o);var f=D.getFullYear()-k.getFullYear();if(f<18)B+='- You must be 18 or older - you are only '+f+' according to your '+n+'.\n';}return B;} 