var requiredFields = [];
var dateFormat = "M/d/yyyy";
var max_hhmembers = 10;

//household
requiredFields['fm-address'] = 'Household: Street Address';
requiredFields['fm-city'] = 'Household: City';
requiredFields['fm-state'] = 'Household: State';
requiredFields['fm-zipcode'] = 'Household: Zip Code';
requiredFields['fm-hhphone'] = 'Household: Phone Number';
requiredFields['fm-landline'] = 'Household: Landline answer';
requiredFields['fm-contact'] = 'Household: Best Time to Contact you answer';
requiredFields['fm-reference'] = 'Household: Hear About YFU answer';

// parent #1
requiredFields['fm-firstnamep1'] = 'Parent #1: First Name';
requiredFields['fm-middlenamep1'] = 'Parent #1: Middle';
requiredFields['fm-lastnamep1'] = 'Parent #1: Last Name';
requiredFields['fm-family'] = 'Parent #1: Family Name';
requiredFields['fm-mstatus'] = 'Parent #1: Martial Status';
requiredFields['fm-oneparenthh'] = 'Parent #1: Single Parent Household answer';
requiredFields['fm-genderp1'] = 'Parent #1: Gender';
requiredFields['fm-birthdatep1'] = 'Parent #1: Birth Date';
requiredFields['fm-occupationp1'] = 'Parent #1: Occupation';

// parent #2
requiredFields['fm-firstnamep2'] = 'Parent #2: First Name';
requiredFields['fm-middlenamep2'] = 'Parent #2: Middle';
requiredFields['fm-lastnamep2'] = 'Parent #2: Last Name';
requiredFields['fm-genderp2'] = 'Parent #2: Gender';
requiredFields['fm-birthdatep2'] = 'Parent #2: Birth Date';
requiredFields['fm-occupationp2'] = 'Parent #2: Occupation';

// household member #1
requiredFields['fm-firstnameohm1'] = 'Household Member #1: First Name';
requiredFields['fm-middlenameohm1'] = 'Household Member #1: Middle Name';
requiredFields['fm-lastnameohm1'] = 'Household Member #1: Last Name';
requiredFields['fm-relationohm1'] = 'Household Member #1: Relationship answer';
requiredFields['fm-birthdateohm1'] = 'Household Member #1: Birth Date';
requiredFields['fm-genderohm1'] = 'Household Member #1: Gender';
requiredFields['fm-gradeohm1'] = 'Household Member #1: Grade in School';
requiredFields['fm-livesathomeohm1'] = 'Household Member #1: At Home answer';

// household member #2
requiredFields['fm-firstnameohm2'] = 'Household Member #2: First Name';
requiredFields['fm-middlenameohm2'] = 'Household Member #2: Middle Name';
requiredFields['fm-lastnameohm2'] = 'Household Member #2: Last Name';
requiredFields['fm-relationohm2'] = 'Household Member #2: Relationship answer';
requiredFields['fm-birthdateohm2'] = 'Household Member #2: Birth Date';
requiredFields['fm-genderohm2'] = 'Household Member #2: Gender';
requiredFields['fm-gradeohm2'] = 'Household Member #2: Grade in School';
requiredFields['fm-livesathomeohm2'] = 'Household Member #2: At Home answer';

// household member #3
requiredFields['fm-firstnameohm3'] = 'Household Member #3: First Name';
requiredFields['fm-middlenameohm3'] = 'Household Member #3: Middle Name';
requiredFields['fm-lastnameohm3'] = 'Household Member #3: Last Name';
requiredFields['fm-relationohm3'] = 'Household Member #3: Relationship answer';
requiredFields['fm-birthdateohm3'] = 'Household Member #3: Birth Date';
requiredFields['fm-genderohm3'] = 'Household Member #3: Gender';
requiredFields['fm-gradeohm3'] = 'Household Member #3: Grade in School';
requiredFields['fm-livesathomeohm3'] = 'Household Member #3: At Home answer';

// household member #4
requiredFields['fm-firstnameohm4'] = 'Household Member #4: First Name';
requiredFields['fm-middlenameohm4'] = 'Household Member #4: Middle Name';
requiredFields['fm-lastnameohm4'] = 'Household Member #4: Last Name';
requiredFields['fm-relationohm4'] = 'Household Member #4: Relationship answer';
requiredFields['fm-birthdateohm4'] = 'Household Member #4: Birth Date';
requiredFields['fm-genderohm4'] = 'Household Member #4: Gender';
requiredFields['fm-gradeohm4'] = 'Household Member #4: Grade in School';
requiredFields['fm-livesathomeohm4'] = 'Household Member #4: At Home answer';

// household member #5
requiredFields['fm-firstnameohm5'] = 'Household Member #5: First Name';
requiredFields['fm-middlenameohm5'] = 'Household Member #5: Middle Name';
requiredFields['fm-lastnameohm5'] = 'Household Member #5: Last Name';
requiredFields['fm-relationohm5'] = 'Household Member #5: Relationship answer';
requiredFields['fm-birthdateohm5'] = 'Household Member #5: Birth Date';
requiredFields['fm-genderohm5'] = 'Household Member #5: Gender';
requiredFields['fm-gradeohm5'] = 'Household Member #5: Grade in School';
requiredFields['fm-livesathomeohm5'] = 'Household Member #5: At Home answer';

// local HS
requiredFields['fm-namehs'] = 'Local High School: School Name';

// Family Interests
requiredFields['fm-numdogsfi'] = 'Family Interests: Number of Dogs';
requiredFields['fm-numcatsfi'] = 'Family Interests: Number of Cats';
requiredFields['fm-numothpetsfi'] = 'Family Interests: Number of Other Pets';
requiredFields['fm-numothpetstypefi'] = 'Family Interests: Types of Other Pets';
requiredFields['fm-yousmokefi'] = 'Family Interests: Smoking answer';
requiredFields['fm-hostedfi'] = 'Family Interests: Hosted Before answer';
requiredFields['fm-priorhostfi'] = 'Family Interests: Host Organization';
requiredFields['fm-religionfi'] = 'Family Interests: Religous Affiliation';
requiredFields['fm-religionnumfi'] = 'Family Interests: Religous Service Attendance';

// Emergency Contact #1
requiredFields['fm-relationshipec1'] = 'Emergency Contact #1: Relationship to Family';
requiredFields['fm-nameec1'] = 'Emergency Contact #1: Name';
requiredFields['fm-priphoneec1'] = 'Emergency Contact #1: Primary Phone';

// Emergency Contact #2
requiredFields['fm-relationshipec2'] = 'Emergency Contact #2: Relationship to Family';
requiredFields['fm-nameec2'] = 'Emergency Contact #2: Name';
requiredFields['fm-priphoneec2'] = 'Emergency Contact #2: Primary Phone';

// Reference #1
requiredFields['fm-forref1'] = 'Reference #1: Relationship to Family';
requiredFields['fm-nameref1'] = 'Reference #1: Name';
requiredFields['fm-priphoneref1'] = 'Reference #1: Primary Phone';

// Reference #2
requiredFields['fm-forref2'] = 'Reference #2: Relationship to Family';
requiredFields['fm-nameref2'] = 'Reference #2: Name';
requiredFields['fm-priphoneref2'] = 'Reference #2: Primary Phone';

// Family Reference
requiredFields['fm-forref3'] = 'Family Reference: Relationship to Family';
requiredFields['fm-nameref3'] = 'Family Reference: Name';
requiredFields['fm-priphoneref3'] = 'Family Reference: Primary Phone';

// Disclosures
requiredFields['fm-arrestdisc'] = 'Disclosures: Arrest/Conviction answer';
requiredFields['fm-complaintdisc'] = 'Disclosures: Neglect/Abuse answer';
requiredFields['fm-illegaldisc'] = 'Disclosures: Illegal Substances answer';
requiredFields['fm-divorcedisc'] = 'Disclosures: Divorce/Re-Marraige answer';
requiredFields['fm-deathdisc'] = 'Disclosures: Death of Spouse/Child answer';
requiredFields['fm-illdisc'] = 'Disclosures: Serious Illness answer';

// Additional Information
requiredFields['fm-addinfo'] = 'Additional Info: Comments';

// disable parent #2 if single
function setParent2Status() {
	var oneparent = document.getElementById('fm-oneparenthh').value;
	var setstate = false;

	if ( oneparent == 'yes' )
		setstate = true;
		
	document.getElementById('fm-firstnamep2').disabled = setstate;
	document.getElementById('fm-middlenamep2').disabled = setstate;
	document.getElementById('fm-lastnamep2').disabled = setstate;
	document.getElementById('fm-genderp2').disabled = setstate;
	document.getElementById('fm-birthdatep2').disabled = setstate;
	document.getElementById('fm-cellphonep2').disabled = setstate;
	document.getElementById('fm-ethnicityp2').disabled = setstate;
	document.getElementById('fm-priemailp2').disabled = setstate;
	document.getElementById('fm-secemailp2').disabled = setstate;
	document.getElementById('fm-seccanusep2').disabled = setstate;
	document.getElementById('fm-occupationp2').disabled = setstate;
	document.getElementById('fm-empnamep2').disabled = setstate;
	document.getElementById('fm-empcityp2').disabled = setstate;
	document.getElementById('fm-empstp2').disabled = setstate;
	document.getElementById('fm-wrknump2').disabled = setstate;

	document.getElementById('fm-educationp2oi').disabled = setstate;
}


function setSingleParent() {
	var oneparentindex = document.getElementById('fm-oneparenthh').selectedIndex;
	var martialstatus = document.getElementById('fm-mstatus').value;

	// set the selector for single hh status based upon martial status
	if ( martialstatus == "married" ) {
		document.getElementById('fm-oneparenthh').selectedIndex = 2;		
		document.getElementById('fm-oneparenthh').disabled = true;
	} else if ( martialstatus == "single" ) {
		document.getElementById('fm-oneparenthh').selectedIndex = 1;		
		document.getElementById('fm-oneparenthh').disabled = true;
	} else 
		document.getElementById('fm-oneparenthh').disabled = false;
	

	// set reference selectors
	var oneparentvalue = document.getElementById('fm-oneparenthh').value;

	if ( oneparentvalue == "no" ) {
		document.getElementById('fm-forref1').disabled = false;
		document.getElementById('fm-forref2').disabled = false;
		document.getElementById('fm-forref3').disabled = false;
		
		document.getElementById('fm-forref1').selectedIndex = 1;
		document.getElementById('fm-forref2').selectedIndex = 2;
	} else {
		document.getElementById('fm-forref1').selectedIndex = 1;		
		document.getElementById('fm-forref1').disabled = true;

		document.getElementById('fm-forref2').selectedIndex = 1;		
		document.getElementById('fm-forref2').disabled = true;

		document.getElementById('fm-forref3').selectedIndex = 1;		
		document.getElementById('fm-forref3').disabled = true;
	}	
}


function copyLastname() {
	var oneparent = document.getElementById('fm-oneparenthh').value;
	var lastnamep1 = document.getElementById('fm-lastnamep1').value;
	var lastnamep2 = document.getElementById('fm-lastnamep2').value;
	var familyname = document.getElementById('fm-family').value;

	if ( lastnamep1.length != 0 && familyname.length == 0 )
		document.getElementById('fm-family').value = lastnamep1;	

	if  ( oneparent == 'no' && lastnamep2.length == 0 )
		document.getElementById('fm-lastnamep2').value = familyname;		
}


function setHHMLastname( idtoset ) {
	//alert (idtoset);
	var familyname = document.getElementById('fm-family').value;
	var ohm1lastname = document.getElementById('fm-lastnameohm1').value;

	//if ( idtoset == 'fm-lastnameohm1' && ohm1lastname.length == 0 )
	if ( ohm1lastname.length == 0 )
		document.getElementById(idtoset).value = familyname;
	else
		document.getElementById(idtoset).value = ohm1lastname;
	
}


// order matters here.
function setFormStatus() {
	setSingleParent(); 
	setParent2Status(); 
	copyLastname();
}


// Define any field in requiredFields if it may be called by
// this function (will have to set the field to required too).
// If it is set to required, we can programatically skip that 
// requirement.
function checkForm() {
	document.getElementById('formsubmit').disabled = true;
	
	var oneparent = document.getElementById('fm-oneparenthh').value;
	var martialstatus = document.getElementById('fm-mstatus').value;
	var parent1bday = document.getElementById('fm-birthdatep1').value;
	var parent2bday = document.getElementById('fm-birthdatep2').value;
	var hostedbefore = document.getElementById('fm-hostedfi').value;
	var reference1 = document.getElementById('fm-forref1').value;
	var reference2 = document.getElementById('fm-forref2').value;
	
//	var birthdatehh1 = document.getElementById('fm-birthdateohm1').value;
//	var birthdatehh2 = document.getElementById('fm-birthdateohm2').value;
//	var birthdatehh3 = document.getElementById('fm-birthdateohm3').value;
//	var birthdatehh4 = document.getElementById('fm-birthdateohm4').value;
//	var birthdatehh5 = document.getElementById('fm-birthdateohm5').value;

	// check martial against one-parent entry
	if ( oneparent == "yes" && ( martialstatus == "married" ) ) {
		document.getElementById('formsubmit').disabled = false;
		document.getElementById('fm-mstatus').focus();
		alert( "The martial status conflicts with how the question about Single Parent Household was answered. Please change one or both to reflect the proper martial status/no. of parents combination.");
		return false;
	}
	
	// parent 1 has to have a valid bday
	if ( parent1bday.length == 0 || !isDate(parent1bday,dateFormat) ) {
		document.getElementById('formsubmit').disabled = false;
		document.getElementById('fm-birthdatep1').focus();
		alert( "Birthdate for Parent #1 is either blank or not in the correct format. Press 'ok' and correct this entry.");
		return false;
	}

	// parent 2 has to have a valid bday only if there are 2 parents
	if ( oneparent == "no" && ( parent2bday.length == 0 || !isDate(parent2bday,dateFormat) ) ) {
		document.getElementById('formsubmit').disabled = false;
		document.getElementById('fm-birthdatep2').focus();
		alert( "Birthdate for Parent #2 is either blank or not in the correct format. Press 'ok' and correct this entry.");
		return false;
	}
	
	for (var i = 1; i <= max_hhmembers; i++) {
		var birthdatehh = document.getElementById('fm-birthdateohm' + i);
		
		if (birthdatehh) {
			if ( birthdatehh.value.length > 0 && !isDate(birthdatehh.value,dateFormat) ) {
				document.getElementById('formsubmit').disabled = false;
				document.getElementById('fm-birthdateohm' + i).focus();
				alert( "Birthdate for Household Member #" + i + " is not in the correct format. Press 'ok' and correct this entry.");
				return false;
			}
		}
	}

	// birthdates in household members
//	if ( birthdatehh1.length > 0 && !isDate(birthdatehh1,dateFormat) ) {
//		document.getElementById('fm-birthdateohm1').focus();
//		alert( "Birthdate for Household Member #1 is not in the correct format. Press 'ok' and correct this entry.");
//		return false;
//	}
//	if ( birthdatehh2.length > 0 && !isDate(birthdatehh2,dateFormat) ) {
//		document.getElementById('fm-birthdateohm2').focus();
//		alert( "Birthdate for Household Member #2 is not in the correct format. Press 'ok' and correct this entry.");
//		return false;
//	}
//	if ( birthdatehh3.length > 0 && !isDate(birthdatehh3,dateFormat) ) {
//		document.getElementById('fm-birthdateohm3').focus();
//		alert( "Birthdate for Household Member #3 is not in the correct format. Press 'ok' and correct this entry.");
//		return false;
//	}
//	if ( birthdatehh4.length > 0 && !isDate(birthdatehh4,dateFormat) ) {
//		document.getElementById('fm-birthdateohm4').focus();
//		alert( "Birthdate for Household Member #4 is not in the correct format. Press 'ok' and correct this entry.");
//		return false;
//	}
//	if ( birthdatehh5.length > 0 && !isDate(birthdatehh5,dateFormat) ) {
//		document.getElementById('fm-birthdateohm5').focus();
//		alert( "Birthdate for Household Member #5 is not in the correct format. Press 'ok' and correct this entry.");
//		return false;
//	}
	
	if ( oneparent == "no" && reference1 == reference2 ) {
		document.getElementById('formsubmit').disabled = false;
		document.getElementById('fm-forref1').focus();
		alert( "A reference for Parent #1 and Parent #2 is required. It looks like both references are for just one parent currently. Press 'ok' and correct this entry.");
		return false;
	}


	// household members - check data
	var hh_hasdata = [];
	var hh_age = [];
	var currentTime = new Date().getTime();
	for ( i = 1; i <= max_hhmembers; i++ ) {
		hh_hasdata[i] = false;
		hh_age[i] = false;

//		var hh_firstname = document.getElementById('fm-firstnameohm' + i).value;
//		var hh_lastname = document.getElementById('fm-lastnameohm' + i).value;
//		var hh_relation = document.getElementById('fm-relationohm' + i).value;
//		var hh_birthdate = document.getElementById('fm-birthdateohm' + i).value;
//		var hh_gender = document.getElementById('fm-genderohm' + i).value;
//		var hh_grade = document.getElementById('fm-gradeohm' + i).value;
//		var hh_athome = document.getElementById('fm-livesathomeohm' + i).value;
		
		var hh_firstname = document.getElementById('fm-firstnameohm' + i);
		var hh_lastname = document.getElementById('fm-lastnameohm' + i);
		var hh_relation = document.getElementById('fm-relationohm' + i);
		var hh_birthdate = document.getElementById('fm-birthdateohm' + i);
		var hh_gender = document.getElementById('fm-genderohm' + i);
		var hh_grade = document.getElementById('fm-gradeohm' + i);
		var hh_athome = document.getElementById('fm-livesathomeohm' + i);

		if (hh_firstname) {
			if ( hh_firstname.value.length > 0 || hh_lastname.value.length > 0 ||
			     hh_relation.value.length > 0 || hh_birthdate.value.length > 0 ||
			     hh_gender.value.length > 0 || hh_grade.value.length > 0 || hh_athome.value.length > 0 ) {
				hh_hasdata[i] = true;
	
				var birthTime = getDateFromFormat(hh_birthdate.value,dateFormat);
				var ageInSeconds = ( currentTime - birthTime ) / 1000;
				var ageInWeeks = Math.floor(ageInSeconds/60/60/24/7); 
				
				if ( ageInWeeks >= 18 * 52 ) {
					hh_age[i] = true;
				}
			}
		}
	}

	// disclosures
	var disclosures = false;
	
	if ( document.getElementById('fm-arrestdisc').value == 'yes' ||
		 document.getElementById('fm-complaintdisc').value == 'yes' ||
		 document.getElementById('fm-illegaldisc').value == 'yes' )
		disclosures = true;

	// Other pets
	var otherpets = false;
	var numotherpets = document.getElementById('fm-numothpetsfi').value;
	if ( numotherpets != "" && numotherpets != "0" )
		otherpets = true;

	// check for required fields - this was done quick and dirty	
	var errormsg = "";
	var numerrors = 0;
	var formchecked = true;
	var firsterror = true;
	var fieldtext = '';
	
	var elements = document.getElementsByTagName('div');
	for ( var i = 0; i < elements.length; i++ ) {
		//if ( elements[i].className == 'fm-req' && elements[i].value == "" ) {
		if ( elements[i].className != 'fm-req' )
			continue;
						
		var childelements = elements[i].childNodes.length;
		for ( x = 0; x < childelements; x++ ) {
			childelement = elements[i].childNodes[x];
			// 
			if ( childelement.tagName == 'INPUT' && childelement.type == 'submit' )
				continue;

			if ( childelement.tagName != 'INPUT' && childelement.tagName != 'SELECT' && childelement.tagName != 'TEXTAREA')
				continue;
			
			//alert('id: ' + requiredFields[childelement.id] );
			fieldtext = requiredFields[childelement.id];
			
			// may skip checking parent #2
			if ( oneparent == "yes" && fieldtext.indexOf('Parent #2' ) >= 0 )
				continue;

			// may skip checking household member #1/middle name
			if ( !hh_hasdata[1] && fieldtext.indexOf('Household Member #1' ) >= 0 )
				continue;
			if ( !hh_age[1] && childelement.id == 'fm-middlenameohm1' )
				continue;

			// may skip checking household member #2/middle name
			if ( !hh_hasdata[2] && fieldtext.indexOf('Household Member #2' ) >= 0 )
				continue;
			if ( !hh_age[2] && childelement.id == 'fm-middlenameohm2' )
				continue;

			// may skip checking household member #3/middle name
			if ( !hh_hasdata[3] && fieldtext.indexOf('Household Member #3' ) >= 0 )
				continue;
			if ( !hh_age[3] && childelement.id == 'fm-middlenameohm3' )
				continue;

			// may skip checking household member #4/middle name
			if ( !hh_hasdata[4] && fieldtext.indexOf('Household Member #4' ) >= 0 )
				continue;
			if ( !hh_age[4] && childelement.id == 'fm-middlenameohm4' )
				continue;

			// may skip checking household member #5/middle name
			if ( !hh_hasdata[5] && fieldtext.indexOf('Household Member #5' ) >= 0 )
				continue;
			if ( !hh_age[5] && childelement.id == 'fm-middlenameohm5' )
				continue;
			
			// may skip checking household member #6/middle name
			if ( !hh_hasdata[6] && fieldtext.indexOf('Household Member #6' ) >= 0 )
				continue;
			if ( !hh_age[6] && childelement.id == 'fm-middlenameohm6' )
				continue;
			
			// may skip checking household member #7/middle name
			if ( !hh_hasdata[7] && fieldtext.indexOf('Household Member #7' ) >= 0 )
				continue;
			if ( !hh_age[7] && childelement.id == 'fm-middlenameohm7' )
				continue;
			
			// may skip checking household member #8/middle name
			if ( !hh_hasdata[8] && fieldtext.indexOf('Household Member #8' ) >= 0 )
				continue;
			if ( !hh_age[8] && childelement.id == 'fm-middlenameohm8' )
				continue;
			
			// may skip checking household member #9/middle name
			if ( !hh_hasdata[9] && fieldtext.indexOf('Household Member #9' ) >= 0 )
				continue;
			if ( !hh_age[9] && childelement.id == 'fm-middlenameohm9' )
				continue;
			
			// may skip checking household member #5/middle name
			if ( !hh_hasdata[10] && fieldtext.indexOf('Household Member #10' ) >= 0 )
				continue;
			if ( !hh_age[10] && childelement.id == 'fm-middlenameohm10' )
				continue;
	
			// may skip specifying organization hosted with
			if ( childelement.id == 'fm-priorhostfi' && hostedbefore == 'no' )
				continue;

			// may skip other pets
			if ( childelement.id == 'fm-numothpetstypefi' && !otherpets )
				continue;

			// may skip additional comments
			if ( childelement.id == 'fm-addinfo' && !disclosures )
				continue;

			if ( childelement.value == "" ) {
				errormsg += requiredFields[childelement.id] + " is missing\n";
				if ( firsterror ) {
					firsterror = false;
					document.getElementById(childelement.id).focus();
				}
				numerrors++;
			}
		}
		
		// stop after 5 errors. set flag as to whether form completely checked.
		if ( numerrors >= 5 ) {
			if ( i != ( elements.length - 1 ) )
				formchecked = false;
				
			break;
		}
	}

	// post error message, if required
	if ( errormsg.length != 0 ) {
		document.getElementById('formsubmit').disabled = false;
		
		if ( !formchecked )
			errormsg = "Stopped checking form as 5 errors encountered.\n\n" + errormsg;
			
		alert( errormsg + "\n Please correct the above and press 'Submit' when done" );
		return false;
	} else {
		var answer = confirm( "Thank you for filling in the on-line application. If you are ready to send this information to YFU, please click the 'OK' button and wait until the main page loads, otherwise click the 'Cancel' button to modify the form." );
		if ( !answer ) {
			document.getElementById('formsubmit').disabled = false;
			return false;
		}

		var x = document.getElementById("HFform");
		x.action ="hf_application_save.php";
		//x.submit();
		return true;
	}
}

/*
moreForms() adds another houseFrom to the Additioanl household from dynamily.
This method clones from the actual houseFrom, and changes every elements with 
an unique ID or NAME or both by appending the counter to the end of each ID and Name. 
than insert to the actual HTML page.
*/
function moreForms() {
	var counter = parseInt( document.getElementById('hhmembers').value );
	counter++;
	
	if (counter == max_hhmembers) {
		document.getElementById('addForm').disabled = true;
	}
	
	var newFields = document.getElementById('houseForm').cloneNode(true);  //cloning the houseFrom
	newFields.id = ' ';
	var childNodes = newFields.childNodes;
	var fieldsetNode;
	var inputNode;
	
	var fieldsetNodesFound = 0;
	var inputNodesFound = 0;
	
	for (var i=0; i < childNodes.length; i++) {
		if ( childNodes[i].nodeName == 'FIELDSET') {
			childNodes[i].id = childNodes[i].id.replace(/1/, counter);
			fieldsetNode = childNodes[i];
			fieldsetNodesFound++;
		} else if ( childNodes[i].nodeName == 'INPUT') {
			inputNode = childNodes[i];
			inputNode.style.visibility = "visible";
			inputNode.setAttribute('id', 'remove' + counter);  //changing the "remove" button ID
			inputNode.setAttribute('onClick','removeForm(this.parentNode, ' + counter +')');   //changing the attribute of onClick function to make it functional
			inputNodesFound++;
		}	
	}
	
	if ( inputNodesFound != 1 || fieldsetNodesFound != 1 ) {
		alert( 'Form is not formatted correctly, please contact the system administrator.' );
		return;
	}
	
	var fieldsetChilds = fieldsetNode.childNodes;
	
	//loop thought the field set child and put an unique ID on each fields
	for (var n=0; n < fieldsetChilds.length; n++) {
		if (fieldsetChilds[n].nodeName == 'LEGEND') {
			var fid = fieldsetChilds[n].id
			fieldsetChilds[n].id = fid.replace(/1/, counter);
		}
			
		if (fieldsetChilds[n].nodeName == 'DIV' ) {
			var id = fieldsetChilds[n].id;
			var childs = fieldsetChilds[n].childNodes;
			fieldsetChilds[n].id = id.replace(/1/, counter);
				
			for (var m = 0; m < childs.length; m++) {
				var childId = childs[m].id;
				var childName = childs[m].name;
				var childFor = childs[m].htmlFor;
				
				if (childFor) {
					//alert (childFor);
					childs[m].htmlFor = childFor.replace(/1/, counter);
				}
				
				if (childId && childName) {
					//alert (childs[m].onchange);
					var onchnge = childs[m].onchange;
					
					childs[m].id = childId.replace(/1/, counter);
					childs[m].name = childName.replace(/1/, counter);
					childs[m].value = "";
					
					if (onchnge) {
						//alert (childs[m].onchange);
						childs[m].onchange = function onchange(event) {
												setHHMLastname('fm-lastnameohm' + counter); 
										 	 };
						//alert (childs[m].onchange);
					}
				}
			}
		}
	}
	
	var insertHere = document.getElementById('writeForm');
	insertHere.parentNode.insertBefore(newFields, insertHere);

	document.getElementById('hm' + counter).innerHTML = 'Household Member #' + counter;
	document.getElementById('hhmembers').value = counter;
}

/*
removeFrom() takes two varibles. The from that needs to delete and the position of the from.
This method deletes the throw away from, and realign the order of the froms, also changing 
the IDs and NAMEs of each from and its elements.
*/
function removeForm (parentNode, tNode) {
	//decreasing the counter when each from is deleted
	var counter = parseInt( document.getElementById('hhmembers').value );
	counter--;
	
	if (counter < max_hhmembers) {
		document.getElementById('addForm').disabled = false;
	}

	//deleting the targeted from
	parentNode.parentNode.removeChild(parentNode);
	
	//loop through list of froms to realign the order and changing the IDs and NAMEs 
	while (counter >= tNode) {	
		var node = document.getElementById('fieldset' + (tNode+1));
		node.id = node.id.replace(tNode+1, tNode);
		var fieldsetChilds = node.childNodes;
		
		for (var i = 0; i < fieldsetChilds.length; i++) {
			var fieldsetChildId = fieldsetChilds[i].id;
			
			if (fieldsetChildId) {
				fieldsetChilds[i].id = fieldsetChildId.replace(tNode+1, tNode);
				var grandChilds = fieldsetChilds[i].childNodes;
				
				for (var n = 0; n < grandChilds.length; n++) {
					var grandChildId = grandChilds[n].id;
					var grandChildName = grandChilds[n].name;
					var grandChildFor = grandChilds[n].htmlFor;
					
					if (grandChildId && grandChildName) {
						var onchnge = grandChilds[n].onchange;
						
						grandChilds[n].id = grandChildId.replace(tNode+1, tNode);
						grandChilds[n].name = grandChildName.replace(tNode+1, tNode);
						//alert(tNode);
						if (onchnge) {
							//alert (grandChilds[n].onchange);
							var node_num = tNode;
							grandChilds[n].onchange = function onchange(event) { 
														setHHMLastname('fm-lastnameohm' + node_num); 
											 	 	  };
							//alert (grandChilds[n].onchange);		 	 	  
						}
					} 
					
					if (grandChildFor) {
						grandChilds[n].htmlFor = grandChildFor.replace(tNode+1, tNode);
					}
				}
			}
		}
		document.getElementById('hm' + tNode).innerHTML = 'Household Member #' + tNode;
		
		var setRemove = document.getElementById('remove' + (tNode+1));
		setRemove.setAttribute('id','remove' + tNode);
		setRemove.setAttribute('onClick','removeForm(this.parentNode, ' + tNode + ')');  //reassign the functinality of the "Remove" button
		
		tNode++;
	}
	
	document.getElementById('hhmembers').value = counter;
}

window.onload = function() {
	if ( document.getElementById ) {
		var linkContainer = document.getElementById('fm-intro');
		//var linebreak = linkContainer.appendChild(document.createElement('br'));

		var toggle = linkContainer.appendChild(document.createElement('a'));
		toggle.href='#';
		toggle.appendChild(document.createTextNode(' Hide optional fields'));
		
		toggle.onclick = function() {
			var linkText=this.firstChild.nodeValue;
			this.firstChild.nodeValue=(linkText==' Hide optional fields')?' Display optional fields':' Hide optional fields';

			var elements=document.getElementsByTagName('div');
			for ( var i=0; i<elements.length; i++ ) {
				if ( elements[i].className == 'fm-opt' ) {
					elements[i].style.display=(elements[i].style.display=='none')?'block':'none';
				}
			}
			return false;
		}
		
		document.getElementById('formsubmit').disabled = false;
	}
}
