var nextFieldUsed = new Array(false, false, false);

function nextField(fieldNumber, name, len) {
    var current = document.getElementById(name + fieldNumber);
    var next = document.getElementById(name + (fieldNumber+1));
    
    if (fieldNumber == 3) {
        if (current.value.length >= len) {
            nextFieldUsed[fieldNumber-1] = true;
            return void(0);
        }
    }
    
    if (fieldNumber == 1) {
        if (current.value.length >= len) {
            nextFieldUsed[fieldNumber-1] = true;
            next.focus();
        }
    }
    
    if (fieldNumber == 2) {
        if (current.value.length >= len) {
            nextFieldUsed[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 fieldCheckSize(fieldName, size) {
    var l = document.getElementById(fieldName).value.length;
    if (l < size) {
        return true;
    }
    return false;
}

function checkKeys(e, fieldName, size) {
	// expects the last character in the fieldName to be the number
	// of the group of digits.
	// ex) (248) 555-1212 ->  248=1  555=2  1212=3
	var name = fieldName.substring(0, fieldName.length-1);
	var fieldLen = fieldName.length - 1;
	var fieldNumber = parseInt(fieldName.substring(fieldLen, fieldLen+1));
    switch(fieldNumber)
    {
        case 1:
            if (onlyNumbersAndDashes(e)) {
                if (fieldCheckSize(fieldName, size)) {
                    setTimeout('nextField(1,"'+name+'",'+size+')', 1);
                    return true;
                } else {
                    return onlyEdit(e);
                }
            }
            break;
        case 2:
            if (onlyNumbersAndDashes(e)) {
                if (fieldCheckSize(fieldName, size)) {
                    setTimeout('nextField(2,"'+name+'",'+size+')', 1);
                    return true;
                } else {
                    return onlyEdit(e);
                }
            }
            break;
        case 3:
            if (onlyNumbersAndDashes(e)) {
                if (fieldCheckSize(fieldName, size)) {
                    setTimeout('nextField(3,"'+name+'",'+size+')', 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;
}

var nameValuePairs;
function createNameValuePairs() {
    if (nameValuePairs == null) {
        var loc = decodeURIComponent(window.location);
        loc = loc.replace(/\+/g, ' ');
        if (loc.indexOf('?') > 0) {
            var nameValueStrings = loc.substring(
                    loc.indexOf('?') + 1,
                    loc.length).split('&');
            nameValuePairs = new Array();
            for (var i = 0; i < nameValueStrings.length; i++) {
                var t = nameValueStrings[i].split('=');
                nameValuePairs[t[0]] = t[1];
            }
        }
    }
    return nameValuePairs;
}

function get(varName) {
    createNameValuePairs();
    return (nameValuePairs[varName].toString() == 'undefined' ? '' : nameValuePairs[varName]);
}

// fix browser blanking page when query values are blank
function fillBlankFields(formId) {
	var form = document.getElementById(formId);
	for (var i = 0; i < form.elements.length; i++) {
		if (form.elements[i].type == 'text' &&
			form.elements[i].value == '') {
			form.elements[i].value = ' ';
		}
	}
}

function fillFormFromQuery(formId) {
    var nvPairs = createNameValuePairs();
    var form = document.getElementById(formId);
    for (var i = 0; i < form.elements.length; i++) {
        for (key in nvPairs) {
            if (form.elements[i].name == key) {
                form.elements[i].value = nvPairs[key];
            }
        }
    }
}

function addQueryToForm(formId) {
	var nvPairs = createNameValuePairs();
    var form = document.getElementById(formId);
	for (key in nvPairs) {
		var el = document.createElement('input');
		el.setAttribute('type', 'hidden');
		// remove spaces from fields with just a space in them when assigning
		el.setAttribute('value', (nvPairs[key] == ' ' ? '' : nvPairs[key]));
		el.setAttribute('name', key);
		el.setAttribute('id', key);
		form.appendChild(el);
	}
}

function submitToPage(formId, url) {
	var form = document.getElementById(formId);
	if (checkForm1(formId) == true) {
		fillBlankFields(formId);
		form.action = url;
		form.method = 'get';
		form.submit();
	}
}

function checkForm1(formId) {
	var formname = document.getElementById(formId).name;
	document.getElementById('homephone').value = 
					document.getElementById('homephone1').value +  '-' +
					document.getElementById('homephone2').value +  '-' +
					document.getElementById('homephone3').value;
	document.getElementById('mobilePhone').value = 
					document.getElementById('mobilePhone1').value +  '-' +
					document.getElementById('mobilePhone2').value +  '-' +
					document.getElementById('mobilePhone3').value;
	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 += checkUSPhone(formname,'homephone', 'Home phone');
	errors += checkText(formname, 'email', 'E-mail'); 
	errors += checkEmail(formname, 'email', 'E-mail');
	if (errors == '') {
		return true;
	}
	else {
		alert(errors);
	}
	return false;
}

function checkForm2(formId) {
	var formname = document.getElementById(formId).name;
	document.getElementById('workphone').value = 
					document.getElementById('workphone1').value +  '-' +
					document.getElementById('workphone2').value +  '-' +
					document.getElementById('workphone3').value;
	var errors = '';
	errors += checkUSPhone(formname, 'workphone', 'Work phone');
	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 += 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);
	}
}

function SubmitForm(t,K) {
	eval('document.'+t+'.action=quoteURL');
	eval('document.'+t+'.submit()');
}

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(var 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(var 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;} 