/*

credit-repair.js

Author: Barbara Verburg

Description: Functions used by credit-repair.php. Validates form fields, notifies 
user of errors or missing content, returns true or false.

Functions: 
validate_form(form)
validate_required(field)
validate_email(field)
validCells(row, form_item)
invalidCells(row, form_item)

Copyright 2005. Please do not use without permission. This took me a long time to figure out.

*/

// This function is to show red error statement under each invalid cell.
// The field values must be replaced for the error statement to appear.
function invalidCells(row, form_item) {
	var x=document.getElementById(row).cells
	var a=x[0];
	var b=x[1];
	var c=x[2];
	if ((row == 'name') && (form_item == 'first_name')) {
		a.innerHTML="<font color='red'>*</font> First Name<br><input name='first_name' title='name' type='text' maxlength='20' size='20' tabindex='1' onChange='validate_form(form_1)' /><br><font color='red'>First Name is required.</font>";
	}
	if ((row == 'name') && (form_item == 'last_name')) {
		c.innerHTML="<font color='red'>*</font> Last Name<br><input name='last_name' title='name' type='text' maxlength='20' size='20' tabindex='2' onChange='validate_form(form_1)' /><br><font color='red'>Last Name is required.</font>";
	}
	if ((row == 'state_zip') && (form_item == 'state')) {
		a.innerHTML="<font color='red'>*</font> State<br><select name='state' id='State' tabindex='3' title='state_zip' onChange='validate_form(form_1)'><option selected='selected' value='0'>- Select One -</option> \
			<option value='AL'>ALABAMA</option><option value='AK'>ALASKA</option><option value='AZ'>ARIZONA</option><option value='AR'>ARKANSAS</option><option value='CA'>CALIFORNIA</option> \
			<option value='CO'>COLORADO</option><option value='CT'>CONNECTICUT</option><option value='DE'>DELAWARE</option><option value='DC'>DISTRICT OF COLUMBIA</option><option value='FL'>FLORIDA</option> \
			<option value='GA'>GEORGIA</option><option value='HI'>HAWAII</option><option value='ID'>IDAHO</option><option value='IL'>ILLINOIS</option><option value='IN'>INDIANA</option> \
			<option value='IA'>IOWA</option><option value='KS'>KANSAS</option><option value='KY'>KENTUCKY</option><option value='LA'>LOUISIANA</option><option value='ME'>MAINE</option> \
			<option value='MD'>MARYLAND</option><option value='MA'>MASSACHUSETTS</option><option value='MI'>MICHIGAN</option><option value='MN'>MINNESOTA</option><option value='MS'>MISSISSIPPI</option> \
			<option value='MO'>MISSOURI</option><option value='MT'>MONTANA</option><option value='NE'>NEBRASKA</option><option value='NV'>NEVADA</option><option value='NH'>NEW HAMPSHIRE</option> \
			<option value='NJ'>NEW JERSEY</option><option value='NM'>NEW MEXICO</option><option value='NY'>NEW YORK</option><option value='NC'>NORTH CAROLINA</option><option value='ND'>NORTH DAKOTA</option> \
			<option value='OH'>OHIO</option><option value='OK'>OKLAHOMA</option><option value='OR'>OREGON</option><option value='PA'>PENNSYLVANIA</option><option value='RI'>RHODE ISLAND</option> \
			<option value='SC'>SOUTH CAROLINA</option><option value='SD'>SOUTH DAKOTA</option><option value='TN'>TENNESSEE</option><option value='TX'>TEXAS</option><option value='UT'>UTAH</option> \
			<option value='VT'>VERMONT</option><option value='VA'>VIRGINIA</option><option value='WA'>WASHINGTON</option><option value='WV'>WEST VIRGINIA</option><option value='WI'>WISCONSIN</option> \
			<option value='WY'>WYOMING</option></select><br><font color='red'>State is required.</font>";
	}
	if ((row == 'state_zip') && (form_item == 'zip')) {
		c.innerHTML="<font color='red'>*</font> Zip<br><input name='zip' type='text' maxlength='5' size='5' id='zip' tabindex='4' title='state_zip' onChange='validate_form(form_1)' /><br><font color='red'>Zip is required.</font>";
	}
	if ((row == 'prob_email') && (form_item == 'credit_problem')) {
		a.innerHTML="<font color='red'>*</font> Type of Problem<br><select name='credit_problem' id='credit_problem' title='prob_email' tabindex='5' onChange='validate_form(form_1)'> \
					<option value='0'>- Select One -</option> \
					<option value='51'>Errors on Report</option> \
					<option value='52'>Credit Score</option> \
					<option value='53'>ID Theft Victim</option> \
					<option value='54'>Inquiries</option> \
					<option value='55'>Collections</option> \
					<option value='79'>Harassment by Collector</option> \
					<option value='80'>Charge Offs</option> \
					<option value='81'>Late Payments</option> \
					<option value='82'>Judgements</option> \
					<option value='83'>Tax Liens</option> \
					<option value='84'>Repossessions</option> \
					<option value='85'>Foreclosure</option> \
					<option value='86'>Bankruptcy</option> \
					<option value='87'>Other Issues</option> \
					</select><br><font color='red'>Problem Type is required.</font>";
	}
	if ((row == 'prob_email') && (form_item == 'email')) {
		c.innerHTML = "<font color='red'>*</font> Email<br><input name='email' type='text' maxlength='100' size='20' id='email' title='prob_email' tabindex='6' onChange='validate_form(form_1)' /><br><font color='red'>Valid Email is required.</font>";
	}
	if ((row == 'phone') && (form_item == 'phone1')) {
		a.innerHTML="<font color='red'>*</font> Home Phone<br><input name='phone1' type='text' maxlength='3' size='3' title='phone' tabindex='7' />&nbsp;-&nbsp;<input name='phone2' type='text' maxlength='3' size='3' title='phone' tabindex='8' />&nbsp;-&nbsp;<input name='phone3' type='text' maxlength='4' size='4' title='phone' tabindex='9' /><br><font color='red'>Home Phone is required.</font>";
	}
	if ((row == 'phone_contact') && (form_item == 'best_contact')) {
		c.innerHTML="<font color='red'>*</font> Best Way to Contact<br> \
							<select name='best_contact' id='best_contact' title='phone_contact' tabindex='17' onChange='validate_form(form_1)'> \
								<option value='0'>- Select One -</option> \
								<option value='11'>Email</option> \
								<option value='12'>Home Phone</option> \
								<option value='14'>Work Phone</option> \
								<option value='13'>Cell Phone</option> \
							</select><br><font color='red'>Contact Method is required.</font>";
	}
	if ((row == 'best_time') && (form_item == 'call_time')) {
		a.innerHTML="<font color='red'>*</font> Best Time to Contact<br> \
							<select name='call_time' id='call_time' title='best_time' tabindex='18' onChange='validate_form(form_1)'> \
								<option value='0'>- Select One -</option> \
								<option value='31'>Morning</option> \
								<option value='32'>Afternoon</option> \
								<option value='33'>Evening</option> \
							</select><br><font color='red'>Contact Time is required.</font>";
	}
}

// This function makes the form sticky. Valid fields are replaced with their current input value.
function validCells(row, form_item)
{
	var x=document.getElementById(row).cells
	var a=x[0];
	var b=x[1];
	var c=x[2];
	if ((row == 'name') && (form_item == 'first_name')){
		var z = document.form_1.first_name.value;
		a.innerHTML=""; //clear cell
		a.innerHTML="<font color='red'>*</font> First Name<br><input name='first_name' title='name' type='text' maxlength='20' size='20' tabindex='1' value="+z+" />";
	}
	if ((row == 'name') && (form_item == 'last_name')) {
		var z = document.form_1.last_name.value;
		c.innerHTML=""; //clear cell
		c.innerHTML="<font color='red'>*</font> Last Name<br><input name='last_name' title='name' type='text' maxlength='30' size='20' tabindex='2' value="+z+" />";
	}
	if ((row == 'state_zip') && (form_item == 'state')) {
		var z = document.form_1.state.value;
		a.innerHTML=""; //clear cell
		var state=new Array();
		state['AL'] = "<option value='AL'>ALABAMA</option>";
		state['AK'] = "<option value='AK'>ALASKA</option>";
		state['AZ'] = "<option value='AZ'>ARIZONA</option>";
		state['AR'] = "<option value='AR'>ARKANSAS</option>";
		state['CA'] = "<option value='CA'>CALIFORNIA</option>";
		state['CO'] = "<option value='CO'>COLORADO</option>";
		state['CT'] = "<option value='CT'>CONNECTICUT</option>";
		state['DE'] = "<option value='DE'>DELAWARE</option>";
		state['DC'] = "<option value='DC'>DISTRICT OF COLUMBIA</option>";
		state['FL'] = "<option value='FL'>FLORIDA</option>";
		state['GA'] = "<option value='GA'>GEORGIA</option>";
		state['HI'] = "<option value='HI'>HAWAII</option>";
		state['ID'] = "<option value='ID'>IDAHO</option>";
		state['IL'] = "<option value='IL'>ILLINOIS</option>";
		state['IN'] = "<option value='IN'>INDIANA</option>";
		state['IA'] = "<option value='IA'>IOWA</option>";
		state['KS'] = "<option value='KS'>KANSAS</option>";
		state['KY'] = "<option value='KY'>KENTUCKY</option>";
		state['LA'] = "<option value='LA'>LOUISIANA</option>";
		state['ME'] = "<option value='ME'>MAINE</option>";
		state['MD'] = "<option value='MD'>MARYLAND</option>";
		state['MA'] = "<option value='MA'>MASSACHUSETTS</option>";
		state['MI'] = "<option value='MI'>MICHIGAN</option>";
		state['MN'] = "<option value='MN'>MINNESOTA</option>";
		state['MS'] = "<option value='MS'>MISSISSIPPI</option>";
		state['MO'] = "<option value='MO'>MISSOURI</option>";
		state['MT'] = "<option value='MT'>MONTANA</option>";
		state['NE'] = "<option value='NE'>NEBRASKA</option>";
		state['NV'] = "<option value='NV'>NEVADA</option>";
		state['NH'] = "<option value='NH'>NEW HAMPSHIRE</option>";
		state['NJ'] = "<option value='NJ'>NEW JERSEY</option>";
		state['NM'] = "<option value='NM'>NEW MEXICO</option>";
		state['NY'] = "<option value='NY'>NEW YORK</option>";
		state['NC'] = "<option value='NC'>NORTH CAROLINA</option>";
		state['ND'] = "<option value='ND'>NORTH DAKOTA</option>";
		state['OH'] = "<option value='OH'>OHIO</option>";
		state['OK'] = "<option value='OK'>OKLAHOMA</option>";
		state['OR'] = "<option value='OR'>OREGON</option>";
		state['PA'] = "<option value='PA'>PENNSYLVANIA</option>";
		state['RI'] = "<option value='RI'>RHODE ISLAND</option>";
		state['SC'] = "<option value='SC'>SOUTH CAROLINA</option>";
		state['SD'] = "<option value='SD'>SOUTH DAKOTA</option>";
		state['TN'] = "<option value='TN'>TENNESSEE</option>";
		state['TX'] = "<option value='TX'>TEXAS</option>";
		state['UT'] = "<option value='UT'>UTAH</option>";
		state['VT'] = "<option value='VT'>VERMONT</option>";
		state['VA'] = "<option value='VA'>VIRGINIA</option>";
		state['WA'] = "<option value='WA'>WASHINGTON</option>";
		state['WV'] = "<option value='WV'>WEST VIRGINIA</option>";
		state['WI'] = "<option value='WI'>WISCONSIN</option>";
		state['WY'] = "<option value='WY'>WYOMING</option>";
		state[z] = "<option selected"+state[z].substr(7);

		states = state['AL']+state['AK']+state['AZ']+state['AR']+state['CA']+state['CO']+state['CT']+state['DE']+state['DC']+state['FL']+state['GA']+state['HI']+state['ID'];
		states += state['IL']+state['IN']+state['IA']+state['KS']+state['KY']+state['LA']+state['ME']+state['MD']+state['MA']+state['MI']+state['MN']+state['MS']+state['MO'];
		states += state['MT']+state['NE']+state['NV']+state['NH']+state['NJ']+state['NM']+state['NY']+state['NC']+state['ND']+state['OH']+state['OK']+state['OR']+state['PA'];
		states += state['RI']+state['SC']+state['SD']+state['TN']+state['TX']+state['UT']+state['VT']+state['VA']+state['WA']+state['WV']+state['WI']+state['WY'];
		
		a.innerHTML="<font color='red'>*</font> State<br><select name='state' id='State' tabindex='3' title='state_zip' onChange='validate_form(form_1)'><option value='0'>- Select One -</option>"+states+"</select>";
	}
	if ((row == 'state_zip') && (form_item == 'zip')){
		var z = document.form_1.zip.value;
		c.innerHTML=""; //clear cell
		c.innerHTML="<font color='red'>*</font> Zip<br><input name='zip' type='text' maxlength='5' size='5' id='zip' tabindex='4' title='state_zip' value='"+z+"' />";
	}
	if ((row == 'prob_email') && (form_item == 'email')) {
		var z = document.form_1.email.value;
		c.innerHTML=""; //clear cell
		c.innerHTML = "<font color='red'>*</font> Email<br><input name='email' type='text' maxlength='100' size='20' id='email' title='prob_email' tabindex='6' value='"+z+"' />";
	}
	if ((row == 'phone') && (form_item == 'phone1')) {
		var z1 = document.form_1.phone1.value;
		var z2 = document.form_1.phone1.value;
		var z3 = document.form_1.phone1.value;
		a.innerHTML=""; //clear cell
		//a.innerHTML="<font color='red'>*</font> Home Phone <span style='font-size:10px; font-style:italic'>(numbers only)</span><br><input name='phone' type='text' maxlength='10' size='10' title='phone' tabindex='7' value='"+z+"' />";
		a.innerHTML="<font color='red'>*</font> Home Phone<br><input name='phone1' type='text' maxlength='3' size='3' title='phone' tabindex='7' value='"+z1+"' />&nbsp;-&nbsp;<input name='phone2' type='text' maxlength='3' size='3' title='phone' tabindex='8' value='"+z2+"' />&nbsp;-&nbsp;<input name='phone3' type='text' maxlength='4' size='4' title='phone' tabindex='9' value='"+z3+"' />";
	}
	if ((row == 'phone_contact') && (form_item == 'best_contact')) {
		var z = document.form_1.best_contact.value;
		// make form sticky, show selected option
		var select_option=new Array();
		select_option[11] = "<option value='11'>Email</option>";
		select_option[12] = "<option value='12'>Home Phone</option>";
		select_option[14] = "<option value='14'>Work Phone</option>";
		select_option[13] = "<option value='13'>Cell Phone</option>";
		select_option[z] = "<option selected"+select_option[z].substr(7);
		
		var all_options = select_option.toString();

		c.innerHTML=""; //clear cell
		c.innerHTML="<font color='red'>*</font> Best Way to Contact<br><select name='best_contact' id='best_contact' title='phone_contact' tabindex='17'> \
			<option value='0'>- Select One -</option>"+all_options+"</select>";
	}
	if ((row == 'best_time') && (form_item == 'call_time')) {
		var z = document.form_1.call_time.value;
		// make form sticky, show selected option
		var select_option=new Array();
		select_option[31] = "<option value='31'>Morning</option>";
		select_option[32] = "<option value='32'>Afternoon</option>";
		select_option[33] = "<option value='33'>Evening</option>";
		select_option[z] = "<option selected"+select_option[z].substr(7);
		
		var all_options = select_option.toString();

		a.innerHTML=""; //clear cell
		a.innerHTML="<font color='red'>*</font> Best Time to Contact<br><select name='call_time' id='call_time' title='best_time' tabindex='18'> \
								<option value='0'>- Select One -</option>"+all_options+"</select>";
	}
	if ((row == 'prob_email') && (form_item == 'credit_problem')) {
		var z = document.form_1.credit_problem.value;
		// make form sticky, show selected option
		var select_option=new Array();
		select_option[51] = "<option value='51'>Errors on Report</option>";
		select_option[52] = "<option value='52'>Credit Score</option>";
		select_option[53] = "<option value='53'>ID Theft Victim</option>";
		select_option[54] = "<option value='54'>Inquiries</option>";
		select_option[55] = "<option value='55'>Collections</option>";
		select_option[79] = "<option value='79'>Harassment by Collector</option>";
		select_option[80] = "<option value='80'>Charge Offs</option>";
		select_option[81] = "<option value='81'>Late Payments</option>";
		select_option[82] = "<option value='82'>Judgements</option>";
		select_option[83] = "<option value='83'>Tax Liens</option>";
		select_option[85] = "<option value='85'>Foreclosure</option>";
		select_option[86] = "<option value='86'>Bankruptcy</option>";
		select_option[87] = "<option value='87'>Other Issues</option>";
		select_option[z] = "<option selected"+select_option[z].substr(7);
		
		var all_options = select_option.toString();

		a.innerHTML=""; //clear cell
		a.innerHTML="<font color='red'>*</font> Type of Problem<br><select name='credit_problem' id='credit_problem' title='prob_email' tabindex='5'> \
				<option selected='selected' value='0'>- Select One -</option>"+all_options+"</select>";
	}
}

// Validate email address. Got code from http://www.codetoad.com/javascript/is_valid_email.asp 
function validate_email(field) {
	with (field) {
		if ((value.indexOf('@') < 0) || ((value.charAt(value.length-4) != '.') && (value.charAt(value.length-3) != '.'))) {
			invalidCells(field.title, field.name);
			return false;
		}
		else {
			validCells(field.title, field.name);
			return true;
		}
	}
}

// Validate by looking for null, empty or 0 values in fields.
// If field has nothing it is invalid, else it'a valid. Return
// true or false to validate_form()
function validate_required(field) {
	with (field) {
		if (value==null||value==""||value==0) {
			invalidCells(field.title, field.name);
			return false;
		}
		else {
			validCells(field.title, field.name);
			return true;
		}
	}
}

// Validate each form field. The form is valid if none of the field return false
function validate_form(thisform) {
	var is_valid = true;
	with (thisform) {
		if (validate_required(first_name)==false) {
			is_valid = false;
		}
		if (validate_required(last_name)==false) {
			is_valid = false;
		}
		if (validate_required(state)==false) {
			is_valid = false;
		}
		if (validate_required(zip)==false) {
			is_valid = false;
		}
		if (validate_required(phone1)==false) {
			is_valid = false;
		}
		if (validate_required(credit_problem)==false) {
			is_valid = false;
		}
		if (validate_email(email)==false) {
			is_valid = false;
		}
		if (validate_required(best_contact)==false) {
			is_valid = false;
		}
		if (validate_required(call_time)==false) {
			is_valid = false;
		}
	}
	if (is_valid) {
		return true;
	}
	else {
		return false;
	}
}
