/*
 * Financial Health Checker
 */
var currentDiv=0;
var firstScreen = 0;
var lastScreen = 5;
var errorArray = []; 
var parentDiv;
var errorClass = "error";
var noErrorClass = "FORM_element_wrapper";
var currentHeader = "current_steps";
var Header2 = "header2";
var currentHeader2 = "current2";
var divStr = "div_";

/**
 * function called when page loads
 */
function init(){
	hide("next");
	hide("previous");
	hide("printtop");
	hide("printbottom");	
	hide("start");
	hide("results");
	hide("screen1");
	hide("div_spouseEmployed");
	hide("div_spouseRetire");
	hide("errorText");
	hide("screen2");
	hide("screen3");
	hide("screen4");
	hide("screen5");	
	hide("d2d_results");
	hide("borrow_results");
	hide("future_results");
	hide("div_coping2");
	hide("plan_one");
	hide("plan_two");
	hide("plan_three");

	

}

/**
 * function to hide an element based on id
 */
function hide(id){
	var elmnt = document.getElementById(id);
	if(elmnt){
		elmnt.style.display='none';
	}
}

/**
 * function to show an element based on id
 */
function show(id){
	var elmnt = document.getElementById(id);
	if(elmnt){
		elmnt.style.display='';
	}
}

/**
 * function to display the next screen
 */
function reload(){
	window.location.reload( true );

}

function displayNext(){
	
	errorArray = [];	
	var currentPage = "screen" + currentDiv;
	var proceed = validate(currentDiv);
	if (proceed) {
		updateHeader(currentDiv, currentDiv+1 );
		if(currentDiv == firstScreen){
			show("next");
		} else if(currentDiv == 1){
			show("previous");
		}
		currentDiv=currentDiv + 1;
		var nextPage  = "screen" + currentDiv;
		hide(currentPage);
		show(nextPage);

		if (nextPage == "screen4") {
			show("results");
			hide("next");
		}
		
		if(nextPage == "screen5") {
			show("printtop");
			show("printbottom");
			show("start");
			hide("next");
			hide("results");
			displayResults();
		}
	} else {
		displayErrors();		
	}
}

/**
 * function to display the previous screen
 */
function displayPrevious(){
	var currentPage = "screen" + currentDiv;
	if(currentDiv ==2){
		hide("previous");	
	} else if(currentDiv == lastScreen){
		hide("printbottom");
		hide("start");
		show("results");
	} else if(currentDiv == lastScreen-1){
		hide("results");
		show("next");
	}
	updateHeader(currentDiv, currentDiv-1 );
	currentDiv=currentDiv - 1;
	var nextPage  = "screen" + currentDiv;
	hide(currentPage);
	show(nextPage);	
}

/**
 * function containing logic of app form
 */
function updateDivs(div){
	getParentNode(div);
	var d = parentDiv.id;
	if(d == "div_q_married") {
		if(div.value == "no"){
			hide("div_spouseEmployed");
			hide("div_spouseRetire");
			hide("div_partner");
		} else { // must be yes
			show("div_spouseEmployed");
			show("div_partner");
			
		}
	}else if(d == "div_spouseEmployed"){
		if(div.value == "spouse_employed" || div.value == "spouse_currently_other"){
			show("div_spouseRetire");
		} else {
			hide("div_spouseRetire");
		}
	} else if(d == "div_mortgage"){
		if(div.value == "yes_mortgage"){
			show("div_coping");
			hide("div_coping2");
		} else {
			hide("div_coping");
			show("div_coping2");			
		}
	} else if(d == "div_financialSupportRely") {
		if(div.value == "no_financial_support"){
			hide("div_dependents");
		} else {
			show("div_dependents");
		}
	}
	
}

function validate(page){
	if (page == 1) {
		validatePage1();
	} else if (page == 2){
		validatePage2();
	} else if (page == 3){
		validatePage3();
	} else if (page == 4){
		validatePage4();
	}
	
	if(errorArray.length > 0){
		return false;
	}
	return true;
}

function validatePage1(){
	checkRadio("age");
	checkRadio("jobstatus");
	checkRadio("married");
	if(document.getElementById("married").checked){
		checkRadio("spouse_job_status");
	}
	if(document.getElementById("spouse_employed").checked || document.getElementById("spouse_job_other").checked) {
		checkRadio("spouse_retire");
	}
	checkRadio("financial_support_you_rely");
	checkRadio("financial_support_others_rely");
	checkRadio("mortgage");
}

function validatePage2(){
	checkRadio("money");
	checkRadio("get_money");
}

function validatePage3(){
	
	if(document.getElementById("no_mortgage").checked){
		checkRadio("loans_debts2");
	} else {
		checkRadio("loans_debts");
	}
	
}

function validatePage4(){
	if(document.getElementById("yes_financial_support_others_rely").checked){
		checkRadio("dependants");
	}

	if(document.getElementById("married").checked ) {
		checkRadio("partner_died");
	}
	

	checkRadio("partner_unemployed");
	checkRadio("retire_5years");
	checkRadio("state_pension");
}

/*
 *Check if a radio button is selected
 */
function checkRadio(radioId){
		radio = eval("document.fht." + radioId);
		var radioSelected = false;
		if (radio) {		
			for(j = 0; j < radio.length; j++){
				if(radio[j].checked){
					radioSelected = true;
				}
			}
			if(!radioSelected){
				errorArray[errorArray.length] = radio;
			} else{
				displayNoError(radio);
			}
		}
}

function displayErrors(){
	show("errorText");
	for(i = 0; i < errorArray.length; i++) {
		var e = errorArray[i];
		getParentNode(e[0]);	
		parentDiv.className = errorClass;
	}
}

function displayNoError(noError){
	hide("errorText");
	getParentNode(noError[0]);
	parentDiv.className = noErrorClass;	
}

function getParentNode(obj){
	parentDiv= "";
	var n = obj.parentNode;
	if (startsWithDiv(n.id)){		
		//alert(obj.parentNode.nodeType);	
		parentDiv = n;
		return;
	} else {
		getParentNode(n);
	}
}

function updateHeader(currentPage, nextPage){
	var tab = document.getElementById("li" + currentPage );
	if(tab != null) {
		if(currentPage == 2){

			tab.className = Header2;
		} else {
			tab.className = "";
		}
	}

	var nextTab = document.getElementById("li" + nextPage );
	if(nextTab != null) {
		if(nextPage == 2) {
			nextTab.className = currentHeader2;
		} else {
			nextTab.className = currentHeader;
		}
	}
}

function startsWithDiv(baseStr){
	if(!baseStr.length >4){
		return false;
	}
	var tmp = baseStr.substring(0,4);
	if(tmp == divStr){
		return true;
	}
	return false;
}

function showHideResults(div, arrow){
	if (document.getElementById(div).style.display == ""){
		document.getElementById(arrow).src = "/includes/images/personal/financial_advice/form/arrow.gif";
		hide(div);
	} else {
		document.getElementById(arrow).src = "/includes/images/personal/financial_advice/form/arrow_down.gif";
		show(div);
	}	
}

function showHideFind(div){
	if (document.getElementById(div).style.display == ""){
		hide(div);
	} else {
		show(div);
	}
}



function printDivs(){
	show("d2d_results");
	show("borrow_results");
	show("future_results");
	document.getElementById("arrow1").src = "/includes/images/personal/financial_advice/form/arrow_down.gif";
	document.getElementById("arrow2").src = "/includes/images/personal/financial_advice/form/arrow_down.gif";
	document.getElementById("arrow3").src = "/includes/images/personal/financial_advice/form/arrow_down.gif";
	window.print();
}


function displayResults(){
	// mortgage question
	if (document.getElementById("no_mortgage").checked){
		document.getElementById("8a").className = "show";
	} else {
		document.getElementById("8a").className = "hide";
	}
	
	// Day-to-Day finances
	if (document.getElementById("fine").checked){
		document.getElementById("9a").className = "show";
		document.getElementById("9b").className = "hide";
		document.getElementById("9c").className = "hide";
	} else if(document.getElementById("ok").checked){
		document.getElementById("9b").className = "show";
		document.getElementById("9a").className = "hide";
		document.getElementById("9c").className = "hide";
	} else if(document.getElementById("struggle").checked) {
		document.getElementById("9c").className = "show";
		document.getElementById("9a").className = "hide";
		document.getElementById("9b").className = "hide";
	}
	
	if (document.getElementById("easily").checked){
		document.getElementById("10a").className = "show";
		document.getElementById("10b").className = "hide";
		document.getElementById("10c").className = "hide";
	} else if(document.getElementById("not_easily").checked){
		document.getElementById("10b").className = "show";
		document.getElementById("10a").className = "hide";
		document.getElementById("10c").className = "hide";
	} else if(document.getElementById("trouble").checked) {
		document.getElementById("10c").className = "show";
		document.getElementById("10a").className = "hide";
		document.getElementById("10b").className = "hide";
	}
	
	// Borrowing sensibly
	
	if(document.getElementById("yes_mortgage").checked){
		if (document.getElementById("fine_debts").checked){
			document.getElementById("11a").className = "show";
			document.getElementById("11b").className = "hide";
			document.getElementById("11c").className = "hide";
			document.getElementById("11d").className = "hide";
		}	else if(document.getElementById("alright_debts").checked){
			document.getElementById("11a").className = "hide";
			document.getElementById("11b").className = "show";
			document.getElementById("11c").className = "hide";
			document.getElementById("11d").className = "hide";
		}	else if(document.getElementById("badly_debts").checked){
			document.getElementById("11a").className = "hide";
			document.getElementById("11b").className = "hide";
			document.getElementById("11c").className = "show";
			document.getElementById("11d").className = "hide";		
		}	else if(document.getElementById("really_badly_debts").checked){
			document.getElementById("11a").className = "hide";
			document.getElementById("11b").className = "hide";
			document.getElementById("11c").className = "hide";
			document.getElementById("11d").className = "show";
		}
	} else {
		if (document.getElementById("fine_debts2").checked){
			document.getElementById("11a").className = "show";
			document.getElementById("11b").className = "hide";
			document.getElementById("11c").className = "hide";
			document.getElementById("11d").className = "hide";
		}	else if(document.getElementById("alright_debts2").checked){
			document.getElementById("11a").className = "hide";
			document.getElementById("11b").className = "show";
			document.getElementById("11c").className = "hide";
			document.getElementById("11d").className = "hide";
		}	else if(document.getElementById("badly_debts2").checked){
			document.getElementById("11a").className = "hide";
			document.getElementById("11b").className = "hide";
			document.getElementById("11c").className = "show";
			document.getElementById("11d").className = "hide";		
		}	else if(document.getElementById("really_badly_debts2").checked){
			document.getElementById("11a").className = "hide";
			document.getElementById("11b").className = "hide";
			document.getElementById("11c").className = "hide";
			document.getElementById("11d").className = "show";
		}
	}
		
	// Planning Your Future
	if(document.getElementById("yes_financial_support_others_rely").checked) {
		if (document.getElementById("yes_provisions_dependents").checked){
			document.getElementById("12a").className = "show";
			document.getElementById("12b").className = "hide";
			document.getElementById("12c").className = "hide";		
		}	else if(document.getElementById("no_provisions_dependents").checked){
			document.getElementById("12a").className = "hide";
			document.getElementById("12b").className = "show";
			document.getElementById("12c").className = "hide";		
		}	else if(document.getElementById("dont_know_provisions_dependents").checked){
			document.getElementById("12a").className = "hide";
			document.getElementById("12b").className = "hide";
			document.getElementById("12c").className = "show";				
		}
	}	
	
	
	
	if(document.getElementById("married").checked) {	
		if (document.getElementById("yes_partner_died").checked){
			document.getElementById("13a").className = "show";
			document.getElementById("13b").className = "hide";
			document.getElementById("13c").className = "hide";		
		}	else if(document.getElementById("no_partner_died").checked){
			document.getElementById("13a").className = "hide";
			document.getElementById("13b").className = "show";
			document.getElementById("13c").className = "hide";		
		}	else if(document.getElementById("dont_know_partner_died").checked){
			document.getElementById("13a").className = "hide";
			document.getElementById("13b").className = "hide";
			document.getElementById("13c").className = "show";				
		}
	}
	
	
	if (document.getElementById("yes_partner_unemployed").checked){
		document.getElementById("14a").className = "show";
		document.getElementById("14b").className = "hide";
		document.getElementById("14c").className = "hide";
		document.getElementById("14all").className = "show";
	}	else if(document.getElementById("no_partner_unemployed").checked){
		document.getElementById("14a").className = "hide";
		document.getElementById("14b").className = "show";
		document.getElementById("14c").className = "hide";
		document.getElementById("14all").className = "show";		
	}	else if(document.getElementById("dont_know_partner_unemployed").checked){
		document.getElementById("14a").className = "hide";
		document.getElementById("14b").className = "hide";
		document.getElementById("14c").className = "show";
		document.getElementById("14all").className = "show";		
	}

	if (document.getElementById("yes_retire").checked){
		document.getElementById("15a").className = "show";
	} else{
		document.getElementById("15a").className = "hide";
	}
	
	
	if (document.getElementById("yes_state_pension").checked && document.getElementById("yes_retire").checked){
		document.getElementById("16a15A").className = "show";
		document.getElementById("16b15A").className = "hide";
		document.getElementById("16c15A").className = "hide";
		document.getElementById("16a15B").className = "hide";
		document.getElementById("16b15B").className = "hide";
		document.getElementById("16c15B").className = "hide";
		document.getElementById("16a15B1C").className = "hide";
		document.getElementById("16b15B1C").className = "hide";
		document.getElementById("16c15B1C").className = "hide";
	} else if(document.getElementById("no_state_pension").checked && document.getElementById("yes_retire").checked){
		document.getElementById("16a15A").className = "hide";
		document.getElementById("16b15A").className = "show";
		document.getElementById("16c15A").className = "hide";
		document.getElementById("16a15B").className = "hide";
		document.getElementById("16b15B").className = "hide";
		document.getElementById("16c15B").className = "hide";
		document.getElementById("16a15B1C").className = "hide";
		document.getElementById("16b15B1C").className = "hide";
		document.getElementById("16c15B1C").className = "hide";		
	} else if(document.getElementById("dont_know_state_pension").checked && document.getElementById("yes_retire").checked){
		document.getElementById("16a15A").className = "hide";
		document.getElementById("16b15A").className = "hide";
		document.getElementById("16c15A").className = "show";
		document.getElementById("16a15B").className = "hide";
		document.getElementById("16b15B").className = "hide";
		document.getElementById("16c15B").className = "hide";
		document.getElementById("16a15B1C").className = "hide";
		document.getElementById("16b15B1C").className = "hide";
		document.getElementById("16c15B1C").className = "hide";
	} else if( document.getElementById("yes_state_pension").checked && document.getElementById("no_retire").checked && document.getElementById("over55").checked) {
		document.getElementById("16a15A").className = "hide";
		document.getElementById("16b15A").className = "hide";
		document.getElementById("16c15A").className = "hide";
		document.getElementById("16a15B").className = "show";
		document.getElementById("16b15B").className = "hide";
		document.getElementById("16c15B").className = "hide";
		document.getElementById("16a15B1C").className = "hide";
		document.getElementById("16b15B1C").className = "hide";
		document.getElementById("16c15B1C").className = "hide";		
	} else if( document.getElementById("no_state_pension").checked && document.getElementById("no_retire").checked && document.getElementById("over55").checked) {
		document.getElementById("16a15A").className = "hide";
		document.getElementById("16b15A").className = "hide";
		document.getElementById("16c15A").className = "hide";
		document.getElementById("16a15B").className = "hide";
		document.getElementById("16b15B").className = "show";
		document.getElementById("16c15B").className = "hide";
		document.getElementById("16a15B1C").className = "hide";
		document.getElementById("16b15B1C").className = "hide";
		document.getElementById("16c15B1C").className = "hide";		
	} else if( document.getElementById("dont_know_state_pension").checked && document.getElementById("no_retire").checked && document.getElementById("over55").checked) {
		document.getElementById("16a15A").className = "hide";
		document.getElementById("16b15A").className = "hide";
		document.getElementById("16c15A").className = "hide";
		document.getElementById("16a15B").className = "hide";
		document.getElementById("16b15B").className = "hide";
		document.getElementById("16c15B").className = "show";
		document.getElementById("16a15B1C").className = "hide";
		document.getElementById("16b15B1C").className = "hide";
		document.getElementById("16c15B1C").className = "hide";
	} else if( document.getElementById("yes_state_pension").checked && document.getElementById("no_retire").checked && (document.getElementById("under30").checked || document.getElementById("a3055").checked )) {
		document.getElementById("16a15A").className = "hide";
		document.getElementById("16b15A").className = "hide";
		document.getElementById("16c15A").className = "hide";
		document.getElementById("16a15B").className = "hide";
		document.getElementById("16b15B").className = "hide";
		document.getElementById("16c15B").className = "hide";
		document.getElementById("16a15B1C").className = "show";
		document.getElementById("16b15B1C").className = "hide";
		document.getElementById("16c15B1C").className = "hide";	
	} else if( document.getElementById("no_state_pension").checked && document.getElementById("no_retire").checked && (document.getElementById("under30").checked || document.getElementById("a3055").checked )) {
		document.getElementById("16a15A").className = "hide";
		document.getElementById("16b15A").className = "hide";
		document.getElementById("16c15A").className = "hide";
		document.getElementById("16a15B").className = "hide";
		document.getElementById("16b15B").className = "hide";
		document.getElementById("16c15B").className = "hide";
		document.getElementById("16a15B1C").className = "hide";
		document.getElementById("16b15B1C").className = "show";
		document.getElementById("16c15B1C").className = "hide";		
	} else if( document.getElementById("dont_know_state_pension").checked && document.getElementById("no_retire").checked && (document.getElementById("under30").checked || document.getElementById("a3055").checked )) {
		document.getElementById("16a15A").className = "hide";
		document.getElementById("16b15A").className = "hide";
		document.getElementById("16c15A").className = "hide";
		document.getElementById("16a15B").className = "hide";
		document.getElementById("16b15B").className = "hide";
		document.getElementById("16c15B").className = "hide";
		document.getElementById("16a15B1C").className = "hide";
		document.getElementById("16b15B1C").className = "hide";
		document.getElementById("16c15B1C").className = "show";
	}
	
	if(!document.getElementById("retired").checked) {
		document.getElementById("16ALL2B").className = "show";
	} else {
		document.getElementById("16ALL2B").className = "hide";
	}
}
