function d(sName)
{
	var ie	= (document.all);
	var ns4	= document.layers ? true : false;
	var dom	= document.getElementById && !document.all ? true : false;

	if(dom)
	{
		return document.getElementById(sName);
	}
	else if(ie)
	{
		return document.all[sName];
	}
	else if(ns4)
	{
		return document.layers[sName];
	}
}

function checkAlphNum(inputField) {
     if (!(/^[a-zA-Z0-9\s'`\-]*$/.test(inputField.value)))
     {
     	return true;
     }
}

function checkAlphNumAndComma(inputField) {
     if (!(/^[a-zA-Z0-9\s'`,\-]*$/.test(inputField.value)))
     {
     	return true;
     }
}

function setGenderBasedOnTitle() {
	if (form1.clde_title.value == "Ms" || form1.clde_title.value == "Mrs" || form1.clde_title.value == "Miss") {
		form1.clde_sex.selectedIndex=2;
	}
	else {
		form1.clde_sex.selectedIndex=1;
	}
}

function checkPostCode (toCheck) {
  var pcexp = new Array ();
  pcexp.push (/^([a-z]{1,2}[0-9]{1,2})(\s*)([0-9]{1}[a-z]{2})$/i);
  pcexp.push (/^([a-z]{1,2}[0-9]{1}[a-z]{1})(\s*)([0-9]{1}[a-z]{2})$/i);
  pcexp.push (/^(GIR)(\s*)(0AA)$/i);
  var postCode = toCheck;
  var valid = false;
  for ( var i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {
      pcexp[i].exec(postCode);
      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
      valid = true;
      break;
    }
  }
  if (valid) {return true;} else return false;
}

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function RoundTo2dp(X) { 
	return Math.round(X*100)/100 
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}

function isFutureDate(strDate1,strDate2) {
	// Parse the string in DD/MM/YYYY format
        re = /(\d{1,2})\/(\d{1,2})\/(\d{4})/
        var arr = re.exec( strDate1 );
        var dt1 = new Date( parseInt(arr[3]), parseInt(arr[2], 10) - 1, parseInt(arr[1], 10) );
        var arr2 = re.exec( strDate2 );
        var dt2 = new Date( parseInt(arr2[3]), parseInt(arr2[2], 10) - 1, parseInt(arr2[1], 10) );

	return dt1 > dt2;
}

function is75orOlder(dayDOB,monthDOB,yearDOB,dayStart,monthStart,yearStart) {
	if(parseInt(yearStart) - parseInt(yearDOB) > 75) {
		//person is over 75, return false
		alert("Annuity applicants must be under 75. Please call for further details.");
		return false;
	}
	if(parseInt(yearStart) - parseInt(yearDOB) == 75) {
		if(parseInt(monthDOB) < parseInt(monthStart)) {
			//person is over 75 by a month
			alert("Annuity applicants must be under 75. Please call for further details.");
			return false;
		}
		else {
			if(parseInt(monthStart) == parseInt(monthDOB) && parseInt(dayDOB) <= parseInt(dayStart)) {	
				//person is over 75 within the month
				alert("Annuity applicants must be under 75. Please call for further details.");
				return false;
			}
		}
	}
	return true;
}

function is50orYounger(dayDOB,monthDOB,yearDOB,dayStart,monthStart,yearStart) {
	if(parseInt(yearStart) - parseInt(yearDOB) < 50) {
		//person is over 75, return false
		alert("Annuity applicants must be over 50. Please call for further details.");
		return false;
	}
	if(parseInt(yearStart) - parseInt(yearDOB) == 50) {
		if(parseInt(monthDOB) > parseInt(monthStart)) {
			//person is under 50 by calendar month, but in their 49/50 year
			alert("Annuity applicants must be over 50. Please call for further details.");
			return false;
		}
		else {
				if(parseInt(monthStart) == parseInt(monthDOB) && parseInt(dayDOB) >= parseInt(dayStart)) {	
				//person is under 50 but within their birth calendar month
				alert("Annuity applicants must be over 50. Please call for further details.");
				return false;
			}
		}
	}
	return true;
}

function internalAutoComplete() {
	if (form1.clde_forename.value == ".") {
		form1.clde_forename.value ='o';
		form1.clde_surname.value ='heath';
		form1.clde_address1.value ='hlambert';
		form1.clde_address2.value ='internal';
		form1.clde_town.value ='test';
		form1.clde_county.value ='data';
		form1.clde_postcode.value ='gu1 1aa';
		form1.clde_telno.value ='01234567890';
		form1.clde_email.value ='test@heathlambert.com';
		//form1.clde_source.selectedIndex = 10;
	}
}

function prnrpCalc() {
    d("pode_fund_pr").value = d("pode_fund_pr").value.replace(",", "");
    d("pode_fund_pr").value = d("pode_fund_pr").value.replace(".", "");
    d("pode_fund_npr").value = d("pode_fund_npr").value.replace(",", "");
    d("pode_fund_npr").value = d("pode_fund_npr").value.replace(".", "");
    var totalFundVal = 0.00;
    if (d("pode_fund_pr").value != "" && !isNaN(d("pode_fund_pr").value)) { totalFundVal = d("pode_fund_pr").value; }
    if (d("pode_fund_npr").value != "" && !isNaN(d("pode_fund_npr").value)) { totalFundVal = parseFloat(totalFundVal) + parseFloat(d("pode_fund_npr").value); }
    d("pode_fund_pre97").value = totalFundVal;
}

function spouseOptions() {
    if (form1.clde_joint_basis.value == "0") {
        document.all.spousename.style.display = 'none';
        document.all.spouseGender.style.display = 'none';
    }
    else {
        document.all.spousename.style.display = 'inline';
        document.all.spouseGender.style.display = 'inline';
    }
}

function smokerOptions() {
    if (form1.clde_smoker.value == "0") {
        document.all.smokerQ.style.display = 'none';
        document.all.smokerQ2.style.display = 'none';
    }
    else {
        document.all.smokerQ.style.display = 'inline';
        document.all.smokerQ2.style.display = 'inline';
    }
}

function smokerOptionsPC(selID, pc) {
    if (d(selID).value == "0") {
        d("clde_smoker_" + pc + "_amount").disabled = true;
        d("clde_smoker_" + pc + "_type").disabled = true;
    }
    else {
        d("clde_smoker_" + pc + "_amount").disabled = false;
        d("clde_smoker_" + pc + "_type").disabled = false;
    }
}

function medqToggle() {
    if (form1.clde_life_impediment.value == "0") {
        document.all.medQFull.style.display = 'none';
        document.all.lifeExpQ.style.display = 'none';
        document.all.lifeExpQSm.style.display = 'none';
    }
    else {
        document.all.lifeExpQ.style.display = 'inline';
        form1.pode_medq_type_detailed.checked = false;
        form1.pode_medq_type_simple.checked = false;
    }
}

function lifeExpOptions() {
    if (form1.clde_life_impediment.value == "1" && form1.pode_medq_type_detailed.checked == true) {
        document.all.medQFull.style.display = 'inline';
        document.all.lifeExpQSm.style.display = 'none';
    }
    else {
        document.all.lifeExpQSm.style.display = 'inline';
        document.all.medQFull.style.display = 'none';
    }
}

function winpop(url,width,height)
{
	window.open(url,'newwindow','height='+height+',width='+width+',left=100,top=100,resizable=no,scrollbars=yes,toolbar=no,status=no');
	//if (window.focus) {newwindow.focus()}
}

function valid_qq() {
	if (form1.clde_joint_basis.value == "") {alert("Please select single or joint life annuity");form1.clde_joint_basis.focus(); return false;}
	if (form1.clde_forename.value == "") {alert("Please fill in your initial");form1.clde_forename.focus(); return false;}
	if (checkAlphNum(form1.clde_forename)) {alert("Please ensure the 'Initial' field is free from non-alphanumeric characters");form1.clde_forename.focus(); return false;}
	if (form1.clde_surname.value == "") {alert("Please fill in your Surname");form1.clde_surname.focus(); return false;}
	if (checkAlphNum(form1.clde_surname)) {alert("Please ensure the 'Surname' field is free from non-alphanumeric characters");form1.clde_surname.focus(); return false;}
	if (form1.clde_sex.value == "") {alert("Please select your gender"); form1.clde_sex.focus(); return false;}
	if (form1.clde_sex.value == "M" && (form1.clde_title.value == "Miss" || form1.clde_title.value == "Mrs" || form1.clde_title.value == "Ms")) { alert("Please revise either your title or gender"); form1.clde_sex.focus(); return false; }
	if (form1.clde_sex.value == "F" && form1.clde_title.value == "Mr") { alert("Please revise either your title or gender"); form1.clde_sex.focus(); return false;}
	if (form1.clde_source.value == "") {alert("Please specify a referring source");form1.clde_source.focus(); return false;}

	
	// isDate requires MM/DD/YYYY - alert message in function
	if (!isDate(form1.age1m.value+"/"+form1.age1d.value+"/"+form1.age1y.value)) {form1.age1d.focus(); return false;}
	//if (!isDate(form1.retiredate_month.value+"/"+form1.retiredate_day.value+"/"+form1.retiredate_year.value)) {form1.retiredate_day.focus(); return false;}
	try {
		if (!isDate(form1.age2m.value+"/"+form1.age2d.value+"/"+form1.age2y.value)) {form1.age2d.focus(); return false;}
	}
	catch (err) {
	}
	// Heath Lambert rule, please ensure age is between 50 and 75 or Alert that they should contact Origen
	// I believe this is covered in the generation of the date range on the site.
	var today = new Date();
	//alert(today.getDate()+"/"+(today.getMonth()+1)+"/"+today.getYear());

	//catch those that are 74, almost 75 
	if (!is75orOlder(form1.age1d.value,form1.age1m.value,form1.age1y.value,today.getDate(),today.getMonth(),today.getYear())) {form1.age1y.focus(); return false;}

	//--causing probs on quickquote as dont bother with retire date fields
	if (!is50orYounger(form1.age1d.value,form1.age1m.value,form1.age1y.value,today.getDate(),today.getMonth(),today.getYear())) {form1.age1y.focus(); return false;}	
	
	var noCommaFundSizeVal = (form1.pode_fund_size.value).replace(",","");
	if (noCommaFundSizeVal == ""||isNaN(noCommaFundSizeVal)) 
		{
			alert("Please enter your fund size");
			form1.pode_fund_size.value=('');
			form1.pode_fund_size.focus(); 
			return false;
		}
		
	if (noCommaFundSizeVal < 1000) 			
		{
			alert("Sorry, funds below £1,000 cannot be used to purchase an annuity on the open market. If however you have other pension funds, which combined together total more than £1,000, the open market option will be available. If you would like further information, please contact us.");
			form1.pode_fund_size.focus(); 
			return false;
		}
	if (noCommaFundSizeVal > 1000000) 			
		{
			alert("For funds above £1 million please call Heath Lambert to discuss your options as most providers will not automatically quote on funds of this size and above.");
			form1.pode_fund_size.focus(); 
			return false;
		}			
	//ensure source box is reenabled (if disabled) just prior to submission
	//form1.clde_source.disabled=false;
}

function valid_1() {
	if (form1.clde_joint_basis.value == "") {alert("Please select single or joint life annuity");form1.clde_joint_basis.focus(); return false;}
	if (form1.clde_joint_basis_status.value == "") {alert("Please select your Marital Status");form1.clde_joint_basis_status.focus(); return false;}
	if (form1.clde_forename.value == "") {alert("Please fill in your initial");form1.clde_forename.focus(); return false;}
	if (checkAlphNum(form1.clde_forename)) {alert("Please ensure the 'Initial' field is free from non-alphanumeric characters");form1.clde_forename.focus(); return false;}
	if (form1.clde_surname.value == "") {alert("Please fill in your Surname");form1.clde_surname.focus(); return false;}
	if (checkAlphNum(form1.clde_surname)) {alert("Please ensure the 'Surname' field is free from non-alphanumeric characters");form1.clde_surname.focus(); return false;}
	if (form1.clde_joint_basis.value == "1" && form1.clde_spouse_forename.value == "") {alert("Please ensure the 'Spouse Firstname' field is entered and free from non-alphanumeric characters");form1.clde_spouse_forename.focus(); return false;}
	if (form1.clde_joint_basis.value == "1" && form1.clde_spouse_surname.value == "") {alert("Please ensure the 'Spouse Surname' field is entered and free from non-alphanumeric characters");form1.clde_spouse_surname.focus(); return false;}
	if (form1.clde_joint_basis.value == "1" && form1.clde_joint_basis_status.value == "") {alert("Please fill in your 'Marital Status'");form1.clde_joint_basis_status.focus(); return false;}
	if (form1.clde_address1.value == "") {alert("Please fill in your address");form1.clde_address1.focus(); return false;}
	if (checkAlphNumAndComma(form1.clde_address1)) {alert("Please ensure the 'Address' field is free from non-alphanumeric characters");form1.clde_address1.focus(); return false;}
	if (checkAlphNumAndComma(form1.clde_address2)) {alert("Please ensure the 'Address 2' field is free from non-alphanumeric characters");form1.clde_address2.focus(); return false;}
	if (form1.clde_town.value == "") {alert("Please fill in your town");form1.clde_town.focus(); return false;}
	if (checkAlphNum(form1.clde_town)) {alert("Please ensure the 'Town' field is free from non-alphanumeric characters");form1.clde_town.focus(); return false;}
	if (checkAlphNum(form1.clde_county)) {alert("Please ensure you exclude non-alphanumeric characters from your County");form1.clde_county.focus(); return false;}
	if (form1.clde_postcode.value == "") {alert("Please fill in your post code");form1.clde_postcode.focus(); return false;}
	if (!checkPostCode (form1.clde_postcode.value)) {alert ("Please ensure the Postcode is in a valid format");form1.clde_postcode.focus(); return false;}

	//if (form1.clde_telno.value == "" || isNaN(form1.clde_telno.value)) {alert("Please fill in your Phone Number, numeric characters only");form1.clde_telno.value="";form1.clde_telno.focus(); return false;}
	if (form1.clde_telno.value == "" || isNaN(form1.clde_telno.value)) {alert("Please fill in your Phone Number, numeric characters only and no space required");form1.clde_telno.focus(); return false;}
	//if (form1.clde_email.value == "" || form1.clde_email.value.indexOf('@', 0) == -1) {alert("Not a valid e-mail address!");form1.clde_email.focus(); return false;}
	//alert((form1.clde_email.value).substring(0,1));
	if ((form1.clde_email.value).substring(0,1) == "@" || ((form1.clde_email.value).indexOf('@') < 0) || (((form1.clde_email.value).charAt((form1.clde_email.value).length-4) != '.') && ((form1.clde_email.value).charAt((form1.clde_email.value).length-3) != '.'))) {alert("Please ensure the 'Email' field is valid");form1.clde_email.focus(); return false;}

	if (form1.clde_sex.value == "") {alert("Please select your gender");form1.clde_sex.focus(); return false;}
	if (form1.clde_sex.value == "M" && (form1.clde_title.value == "Miss" || form1.clde_title.value == "Mrs" || form1.clde_title.value == "Ms")) {alert("Please revise either your title or gender");form1.clde_sex.focus(); return false;}
	if (form1.clde_sex.value == "F" && form1.clde_title.value == "Mr") {alert("Please revise either your title or gender");form1.clde_sex.focus(); return false;}
	
	if (form1.clde_source.value == "") {alert("Please specify a referring source");form1.clde_source.focus(); return false;}

	//new for ensuring person knows they are chosing single
	if (form1.clde_joint_basis.value == "0" ) {
		if (!confirm("You have chosen a single life annuity. This means that on your death (other than the balance of any remaining guarantee period you may have chosen) no further payments will be made to your spouse or dependants if you have them, or estate. Please be aware that once an annuity has been purchased it is not possible to add or remove a spouse's pension.\n\nPress OK to continue, or Cancel to change your selections.")) {
			form1.clde_joint_basis.focus(); 
			return false;
		}
	}

	//ensure source box is reenabled (if disabled) just prior to submission
	form1.clde_source.disabled=false;
}

function valid_2() {

    //make sure one cannot proceed with single life having stated married.
    //using [4] as the 5th radio button of the product group.
    if (form1.h_clde_joint_basis.value == "False" && form1.h_clde_spouse_status.value == "Married" && form1.pode_poty_id[4].checked) {alert("It is not possible to purchase a Protected Rights annuity on a single life basis if you are married at the time of annuity purchase."); return false;}

}

function valid_3() {
    // isDate requires MM/DD/YYYY - alert message in function
    if (!isDate(form1.age1m.value + "/" + form1.age1d.value + "/" + form1.age1y.value)) { form1.age1d.focus(); return false; }
    if (!isDate(form1.retiredate_month.value + "/" + form1.retiredate_day.value + "/" + form1.retiredate_year.value)) { form1.retiredate_day.focus(); return false; }
    try {
        if (!isDate(form1.age2m.value + "/" + form1.age2d.value + "/" + form1.age2y.value)) { form1.age2d.focus(); return false; }
    }
    catch (err) {
    }
    //catch those that are 74, almost 75
    if (!is75orOlder(form1.age1d.value, form1.age1m.value, form1.age1y.value, form1.retiredate_day.value, form1.retiredate_month.value, form1.retiredate_year.value)) { form1.age1y.focus(); return false; }
    // Heath Lambert rule, please ensure age is between 50 and 75 or Alert that they should contact Origen
    // I believe this is covered in the generation of the date range on the site.
    //var today = new Date();
    //alert(today.getDate()+"/"+(today.getMonth()+1)+"/"+today.getYear());
    //if ((today.getYear()-50) < form1.age1y.value) {
    //	alert("this person is less than 50");
    //}
    if (!is50orYounger(form1.age1d.value, form1.age1m.value, form1.age1y.value, form1.retiredate_day.value, form1.retiredate_month.value, form1.retiredate_year.value)) { form1.age1y.focus(); return false; }

    var noCommaFundSizeVal = 0; //var here, set inside conditionals as form field has different name...
    if (form1.pode_poty_id.value == 1 || form1.pode_poty_id.value == 6 || form1.pode_poty_id.value == 7) {
        var noCommaFundSizeValPR = (form1.pode_fund_pr.value).replace(",", "");
        var noCommaFundSizeValNPR = (form1.pode_fund_npr.value).replace(",", "");
        noCommaFundSizeVal = (form1.pode_fund_pre97.value).replace(",", "");
        if ((noCommaFundSizeValPR == "" || isNaN(noCommaFundSizeValPR)) && noCommaFundSizeValNPR == 0) {
            alert("Please enter your Protected Rights fund size.");
            form1.pode_fund_pr.value = ('');
            form1.pode_fund_pr.focus();
            return false;
        }
        if ((noCommaFundSizeValNPR == "" || isNaN(noCommaFundSizeValNPR)) && noCommaFundSizeValPR == 0) {
            alert("Please enter your Non-Protected Rights fund size.");
            form1.pode_fund_npr.value = ('');
            form1.pode_fund_npr.focus();
            return false;
        }
        if (noCommaFundSizeValNPR == 0 && noCommaFundSizeValPR == 0) {
            alert("Please enter your Non-Protected Rights and/or Protected Rights fund size.");
            form1.pode_fund_pr.focus();
            return false;
        }
        if (noCommaFundSizeVal == "" || isNaN(noCommaFundSizeVal)) {
            alert("Please enter your fund size.");
            form1.pode_fund_size.value = ('');
            form1.pode_fund_size.focus();
            return false;
        }

    }
    else //for all other products (eg 5)
    {
        noCommaFundSizeVal = (form1.pode_fund_size.value).replace(",", "");
        if (noCommaFundSizeVal == "" || isNaN(noCommaFundSizeVal)) {
            alert("Please enter your fund size.");
            form1.pode_fund_size.value = ('');
            form1.pode_fund_size.focus();
            return false;
        }
    }

    if (noCommaFundSizeVal < 16500) {
        alert("If you are over age 60 and the aggregate fund value of all your private pension provision is below 1% of the Lifetime Allowance (currently £16,500) it may be possible to take the benefits as a lump sum rather than purchasing an annuity. Please contact your current provider for more information on this option or call the annuity helpline for further assistance.");
        //form1.pode_fund_size.focus(); 
        //return false;
    }
    if (noCommaFundSizeVal > 1000000) {
        alert("For funds above £1 million please call Heath Lambert to discuss your options as most providers will not automatically quote on funds of this size and above.");
        //form1.pode_fund_size.focus(); 
        return false;
    }

    if (form1.pode_fund_source.value == "") { alert("Please detail your current provider."); form1.pode_fund_source.focus(); return false; }
}

function valid_4() {

    /*try {
    if (isNaN(form1.pode_tax_free_cash.value))
    {
    alert("Please enter the amount you would like to take as Tax Free Cash using numeric characters only");
    form1.pode_tax_free_cash.focus();
    return false;
    }
    else
    //if(RoundTo2dp(form1.pode_tax_free_cash.value-Math.floor(form1.pode_tax_free_cash.value)) > form1.pode_tax_free_cash.value-Math.floor(form1.pode_tax_free_cash.value)) {
    //alert("2dp rounded is greater than orig val");
    //	form1.pode_tax_free_cash.value = Math.floor(form1.pode_tax_free_cash.value) + RoundTo2dp(form1.pode_tax_free_cash.value-Math.floor(form1.pode_tax_free_cash.value))-0.01;
    //}
    if ((form1.pode_tax_free_cash.value).toFixed(4) > (form1.pode_tax_free_cash_hidden.value).toFixed(4))
    {
    alert("The amount entered exceeds your submit Tax Free Cash allowance of £"+form1.pode_tax_free_cash_hidden.value);				
    form1.pode_tax_free_cash.focus();
    return false;
    }
    }
    catch (err) {
    }*/
    //disallow PR with  RPI, WP/UL combo

    if (form1.pode_poty_id.value == 9 && form1.pode_rper_id[3].checked) {
        alert("RPI not available with a Protected Rights Annuity");
        return false;
    }
    try {
        if (form1.pode_poty_id.value == 9 && form1.pode_rper_id[5].checked) {
            alert("With Profits not available with a Protected Rights Annuity");
            return false;
        }
        if (form1.pode_poty_id.value == 9 && form1.pode_rper_id[6].checked) {
            alert("Unit Linked not available with a Protected Rights Annuity");
            return false;
        }
    }
    catch (err) {
    }

    //disallow PR with  zero or 1/3 prov
    if (form1.pode_poty_id.value == 9 && !form1.pode_sppr_id[2].checked) {
        alert("1You have indicated that you are married and that you require a Protected Rights annuity. Legislation currently states that only a 50% spouses provision is allowable on Protected Rights.");
        return false;
    }

    //if (form1.pode_rper_id[5].checked || form1.pode_rper_id[6].checked) {
    try {
        if (form1.pode_rper_id[5].checked) {
            if (!confirm("The higher the ABR that you have chosen the greater the risk you are taking with your pension income, which could decrease in future years. However the higher the ABR/AGR chosen the greater your initial pension income will be.\n\nPress OK to continue, or Cancel to change your selections.")) {
                return false;
            }
        }
        if (form1.pode_rper_id[5].checked && form1.pode_rper_id_perc_6.value == "") {
            alert("Please select an Assumed Bonus Rate.")
            return false;
        }
    }
    catch (err) {
    }
    //if (form1.pode_rper_id[6].checked && form1.pode_rper_id_perc_7.value=="") {
    //	alert("Please select an Assumed Growth Rate")
    //	return false;
    //}		
}

function valid_5() {

    if ((form1.pode_poty_id.value == "9") && (form1.pode_gupe_id[2].checked)) {
        alert("Unfortunately, legislation limits the guaranteed period of a Protected Rights annuity to 5 years.\nThe option has been changed to 5 years, you may now proceed.");
        form1.pode_gupe_id[1].checked = true;
        return false;
    }
    /*
    if(form1.clde_smoker.value == 1 && (form1.clde_smoker_cigarettes.value == "" || form1.clde_smoker_cigarettes.value == 0) && (form1.clde_smoker_tobacco.value == "" || form1.clde_smoker_tobacco.value == 0)) {
    alert("As a smoker, please enter a value for cigarettes or tobacco ounces");
    form1.clde_smoker_cigarettes.focus()
    return false;
    }
    else {
    if(form1.clde_smoker_cigarettes.value != "") {
    if(isNaN(form1.clde_smoker_cigarettes.value) || form1.clde_smoker_cigarettes.value < 0 || form1.clde_smoker_cigarettes.value > 120) {
    alert("For cigarettes per day, acceptable values are 1 - 120");
    form1.clde_smoker_cigarettes.value="";
    form1.clde_smoker_cigarettes.focus()
    return false;
    }
    }		
    if(form1.clde_smoker_tobacco.value != "") {
    if(isNaN(form1.clde_smoker_tobacco.value) || form1.clde_smoker_tobacco.value < 0 || form1.clde_smoker_tobacco.value > 20) {
    alert("For tobacco ounces per day, acceptable values are 0.1 - 20");
    form1.clde_smoker_tobacco.value="";
    form1.clde_smoker_tobacco.focus()
    return false;
    }		
    }
    }
    if(form1.clde_life_impediment_diabetes.value == 1 && form1.clde_life_impediment_diabetes_treatment.value == "") {
    alert("As a diabetic, please choose the appropriate treatment");
    form1.clde_life_impediment_diabetes_treatment.focus()
    return false;
    }
    if(form1.clde_life_impediment_diabetes.value == 0 && form1.clde_life_impediment_diabetes_treatment.value != "") {
    alert("Please confirm that you are a diabetic");
    form1.clde_life_impediment_diabetes.focus()
    return false;
    }
		
	if (form1.clde_smoker.value == 1 || form1.clde_life_impediment.value == 1) {
    if (!confirm("The health questions you have answered will determine whether you qualify for a 'Lifestyle' annuity from the product providers available on this site. You may however also be eligible for an enhanced annuity due to medical conditions that may affect your life expectancy, known as an 'Impaired Life' annuity. If you believe that you may qualify for an impaired life annuity, please contact us to complete a more detailed medical questionnaire.\n\nPress OK to continue, or Cancel to change your selections.")) {
    return false;
    }
    }		
    */
    if ((form1.clde_smoker_pc1.value == 1 && form1.clde_smoker_pc1_amount.value == "") || isNaN(form1.clde_smoker_pc1_amount.value)) {
        alert("As a smoker, please enter a numerical value for the selected type.");
        form1.clde_smoker_pc1_amount.focus()
        return false;
    }
    if ((form1.clde_smoker_pc2.value == 1 && form1.clde_smoker_pc2_amount.value == "") || isNaN(form1.clde_smoker_pc2_amount.value)) {
        alert("For your spouse, please enter a numerical value for the selected smoking type.");
        form1.clde_smoker_pc2_amount.focus()
        return false;
    }
    if (form1.clde_life_impediment.value == 1) {
        //if (!confirm("The Medical Questionnaire you have answered will determine whether you qualify for a 'Lifestyle' or 'Impaired Life' annuity from the product providers available on this site. Please confirm you have completed the Medical Questionnaire before proceeding.\n\nPress OK to confirm and continue, or Cancel to further your selections.")) {
        if (!confirm("Completing the medical questionnaire will determine whether you qualify for an 'Enhanced' or 'Impaired' lifetime annuity from the Product Providers available on this site.  Answering the smoker question only may provide 'smoker' rates from certain Providers and will delete any other medical data you may have entered previously in the questionnaire. Please press OK to continue or cancel to complete more information")) {
            return false;
        }
    }
}

//Begin dHTML Toolltip Timer
var tipTimer;
//End dHTML Toolltip Timer

function locateObject(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=locateObject(n,d.layers[i].document); return x;
}


function hideTooltip(object)
{
if (document.all)
{
	locateObject(object).style.visibility="hidden"
	locateObject(object).style.left = 1;
	locateObject(object).style.top = 1;
return false
}
else if (document.layers)
{
	locateObject(object).visibility="hide"
	locateObject(object).left = 1;
	locateObject(object).top = 1;
	return false
}
else
	return true
}

function showTooltip(object,e, tipContent)
{
	var backcolor="#ffffff", bordercolor="#000000", textcolor="#000000", displaytime="100000", direction="up";
	
	window.clearTimeout(tipTimer)

	if (document.all)
		{
			locateObject(object).style.top=document.body.scrollTop+event.clientY+20

			locateObject(object).innerHTML='<table style="font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11px; border: '+bordercolor+'; border-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; background-color: '+backcolor+'" width="10" border="0" cellspacing="1" cellpadding="1"><tr><td nowrap style="padding:4px;"><font style="font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11px; color: '+textcolor+'">'+unescape(tipContent)+'</font></td></tr></table> '

			if ((e.x + locateObject(object).clientWidth) > (document.body.clientWidth + document.body.scrollLeft))
				{
					locateObject(object).style.left = (document.body.clientWidth + document.body.scrollLeft) - locateObject(object).clientWidth-120;
				}
			else
			{
			locateObject(object).style.left=document.body.scrollLeft+event.clientX
			}
		locateObject(object).style.visibility="visible"
		tipTimer=window.setTimeout("hideTooltip('"+object+"')", displaytime);
		return true;
		}
	else if (document.layers)
		{
		locateObject(object).document.write('<table width="10" border="0" cellspacing="1" cellpadding="1"><tr bgcolor="'+bordercolor+'"><td><table width="10" border="0" cellspacing="0" cellpadding="2"><tr bgcolor="'+backcolor+'"><td nowrap><font style="font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11px; color: '+textcolor+'">'+unescape(tipContent)+'</font></td></tr></table></td></tr></table>')
		locateObject(object).document.close()
		locateObject(object).top=e.y+20

		if ((e.x + locateObject(object).clip.width) > (window.pageXOffset + window.innerWidth))
			{
				locateObject(object).left = window.innerWidth - locateObject(object).clip.width-10;
			}
		else
			{
			locateObject(object).left=e.x;
			}
		locateObject(object).visibility="show"
		tipTimer=window.setTimeout("hideTooltip('"+object+"')", displaytime);
		return true;
	}
	else
	{
		return true;
	}
}


function toggleMenu(currMenu)
	{
	if (document.getElementById)
		{
		thisMenu = document.getElementById(currMenu).style
			if (thisMenu.display == "block")
				{thisMenu.display = "none"}
			else
				{thisMenu.display = "block"}
			return false
		}

}

function hideShowHandler(id,hs)
{
    //alert(id + '|' + hs);
    if (hs==0) { //0 for hide, 1 to show...
        document.getElementById(id).style.display = "none";
    } else {
        document.getElementById(id).style.display = "";
    }
}


// Medical Questionnaire JS functionality.............................

function formHandler(mode) {
	var msgStr="", destStr="";
	switch(mode)
	{
			case "res": //restart mode
				msgStr = "This will reset the form, removing all questions answered. Proceed?";
				if(confirm(msgStr)) {
					document.frmMedQr.submit();	
				}
				break;
			
			case "close": //close mode
				msgStr = "This will close the questionnaire and return you to stage 5. Please use the Save button to commit any changes first. You may re-enter the questionnaire to adjust your answers at any time. If you wish to empty all answered questions please use the restart button first. Proceed?";
				if(confirm(msgStr)) {
					document.frmMedQc.submit();
				}
				break;
			
			case "pc1": //toggle to pc1
				if(validateMedForm()) {
					document.frmMedQs.action=document.frmMedQs.action+'&togglePC=1';
					document.frmMedQs.submit();
				}
				break;

			case "pc2": //toggle to pc2
				if(validateMedForm()) {
					document.frmMedQs.action=document.frmMedQs.action+'&togglePC=2';
					document.frmMedQs.submit();
				}
				break;								
	}		
}

function validateMedForm() {
	var errStr="";
	var errCount=0;
	var rtnFocus="";
	//smoker validation
	if(d("qSmoker-yes").checked) {
		if(d("Cigarettes_Per_Day").value!=""){errCount++;}
		if(d("Cigars_Per_Day").value!=""){errCount++;}
		if(d("Tobacco_Per_Day").value!=""){errCount++;}
		if(d("Pipes_smoked_per_day").value!=""){errCount++;}
		if(errCount == 0){errStr+="\n - Please specify a Smoking option value.";rtnFocus="Cigarettes_Per_Day"}
		if(errCount > 1){errStr+="\n - Please only specify one Smoking option value.";}
		errCount=0; //reset
	}
	//diabetic validation, if smoker is passed ok
	if(d("qDiabetic-yes").checked && errStr=="") {
		if(d("Condition_Name_0").value==""){errCount++;}
		if(errCount > 0){errStr+="\n - Please specify a diabetic condition.";}
		errCount=0; //reset
	}	
	//medcond validation, if smoker  & diabetic is passed ok
	if(d("qHealthIssues-yes").checked && errStr=="") {
		if(d("Condition_Name_1").value==""){errCount++;}
		if(errCount > 0){errStr+="\n - Please specify a medical condition.";}
		errCount=0; //reset
	}	

	//medcond validation, if diabetic 0 picked - all answers need answering
	if(d("Condition_Name_0").value!="" && errStr=="") {
		if(d("c0_ans_q1_1").checked==false && d("c0_ans_q1_2").checked==false && d("c0_ans_q1_3").checked==false && d("c0_ans_q1_4").checked==false){errCount++;}
		if(d("c0_ans_q2_5").checked==false && d("c0_ans_q2_6").checked==false && d("c0_ans_q2_7").checked==false && d("c0_ans_q2_8").checked==false){errCount++;}
		if(d("c0_ans_q3_9").checked==false && d("c0_ans_q3_10").checked==false && d("c0_ans_q3_11").checked==false && d("c0_ans_q3_12").checked==false){errCount++;}
		if(d("c0_ans_q4_13").checked==false && d("c0_ans_q4_14").checked==false && d("c0_ans_q4_15").checked==false){errCount++;} //&& d("c0_ans_q4_15").checked==false && d("c0_ans_q4_16").checked==false && d("c0_ans_q4_17").checked==false && d("c0_ans_q4_18").checked==false){errCount++;}
		if(d("c0_ans_q5_20").checked==false && d("c0_ans_q5_21").checked==false && d("c0_ans_q5_22").checked==false && d("c0_ans_q5_23").checked==false && d("c0_ans_q5_24").checked==false){errCount++;}
		if(d("c0_ans_q6_25").checked==false && d("c0_ans_q6_26").checked==false && d("c0_ans_q6_27").checked==false){errCount++;}
		//diabetic Q7 is optional, so taking the following line out of commision to allow the form to be saved without an answer given.
		//if(d("c0_ans_q7_28").checked==false && d("c0_ans_q7_29").checked==false && d("c0_ans_q7_30").checked==false && d("c0_ans_q7_31").checked==false){errCount++;}
		//Q8 dependant on Q6A3 being selected...
		if(d("c0_ans_q6_27").checked && d("c0_ans_q8_32").checked==false && d("c0_ans_q8_33").checked==false && d("c0_ans_q8_34").checked==false && d("c0_ans_q8_34").checked==false && d("c0_ans_q8_35").checked==false){errCount++;}
		if(errCount > 0){errStr+="\n - Ensure that all MANDATORY questions in diabetic section are completed before submitting the form.";}
		errCount=0; //reset		
	}
	
	//medcond validation, for loop, if condition 1/2/3 picked - all answers need answering
	for(var cCount=1;cCount<=3;cCount++) {
		if(d("qHealthIssues-yes").checked && d("trCondition"+cCount).style.display=="") {
			if(d("Condition_Name_"+cCount).value=="" && errStr=="") {
				errStr+="\n - Please specify a choice for Medical Condition "+ cCount +".";
			}
			if(d("Condition_Name_"+cCount).value!="" && errStr=="") {
				if(d("c"+cCount+"_ans_q1_1").checked==false && d("c"+cCount+"_ans_q1_2").checked==false && d("c"+cCount+"_ans_q1_3").checked==false && d("c"+cCount+"_ans_q1_4").checked==false){errCount++;}
				if(d("c"+cCount+"_ans_q2_5").checked==false && d("c"+cCount+"_ans_q2_6").checked==false && d("c"+cCount+"_ans_q2_7").checked==false && d("c"+cCount+"_ans_q2_8").checked==false){errCount++;}
				if(d("c"+cCount+"_ans_q3_9").checked==false && d("c"+cCount+"_ans_q3_10").checked==false && d("c"+cCount+"_ans_q3_11").checked==false && d("c"+cCount+"_ans_q3_12").checked==false){errCount++;}
				if(d("c"+cCount+"_ans_q4_13").checked==false && d("c"+cCount+"_ans_q4_14").checked==false && d("c"+cCount+"_ans_q4_15").checked==false){errCount++;} // && d("c"+cCount+"_ans_q4_15").checked==false && d("c"+cCount+"_ans_q4_16").checked==false && d("c"+cCount+"_ans_q4_17").checked==false && d("c"+cCount+"_ans_q4_18").checked==false){errCount++;}
				if(d("c"+cCount+"_ans_q5_20").checked==false && d("c"+cCount+"_ans_q5_21").checked==false && d("c"+cCount+"_ans_q5_22").checked==false && d("c"+cCount+"_ans_q5_23").checked==false && d("c"+cCount+"_ans_q5_24").checked==false){errCount++;}
				if(d("trCond"+cCount+"_q9").style.display=="") {
					if(d("c"+cCount+"_ans_q9_36").checked==false && d("c"+cCount+"_ans_q9_37").checked==false && d("c"+cCount+"_ans_q9_38").checked==false && d("c"+cCount+"_ans_q9_39").checked==false && d("c"+cCount+"_ans_q9_40").checked==false && d("c"+cCount+"_ans_q9_41").checked==false){errCount++;}	
				}
				if(errCount > 0){errStr+="\n - Ensure that all MANDATORY questions in Medical Condition " + cCount + " are completed before submitting the form.";errCount=0;break;}
				errCount=0; //reset		
			}	
		}
	}
							
	if(errStr!="") {
		errStr="Please adjust the following before continuing:"+errStr;
		alert(errStr);
		if(rtnFocus!=""){d(rtnFocus).focus();}
		return false;
	}
	else {
		//alert("form ok"); //remove for live
		//return false; //remove for live
		document.getElementById("loadSave").style.display="";
		return true;
	}
}

function reloadCheck(URL,label) {
	var msgStr="",destStr="";
	msgStr = "This will change the Questionnaire to focus on the " + label + ". Have you saved?\nClick OK to continue or Cancel." ;
	if(confirm(msgStr)) {
		document.location.href=URL;	
	}
	else {
		return false;
	}
}

function dCondCount(val) {
	document.getElementById("diabeticConditionUsed").value = val;
	if(val==1) { //hide the 3rd health condition if it has been displayed, if diabetic is used
		hideShowHandler('trCondition3',0);
		hideShowHandler('trDelCondition2',1);		
	}
}

function addConditionHandler() {
	var val = parseInt(document.getElementById('conditionCount').value);
	var errCount = 0;
	if(val!=1 && val<3) {hideShowHandler('trDelCondition'+val,0);} //dont try and hide row1 as this cant be deleted...
	val++;
	//alert(val+' | '+document.getElementById("diabeticConditionUsed").value);
	if(val<=3) {
		if(val==3 && document.getElementById("diabeticConditionUsed").value==1) {
			errCount++;
			val--;
			hideShowHandler('trDelCondition'+val,1)
			//alert("a"+val);
		}
		else {
			//alert("b"+val);
			hideShowHandler('trCondition'+val,1);
			document.getElementById("conditionCount").value = parseInt(document.getElementById("conditionCount").value)+1;
		}
	}
	else {
		errCount++;
		//alert("c"+val);
		//hideShowHandler('trDelCondition'+val,1)
	}
	if(errCount>0) {
		alert("A maximum of 3 conditions are currently supported, including a diabetic condition. Please call our helpline for further assistance.");
	}
}

function delConditionHandler() {
	var val = parseInt(document.getElementById('conditionCount').value);
	//alert(val);
	document.getElementById("Condition_Name_"+val).selectedIndex=0;
	hideShowHandler('trCondition'+val,0);
	val--;
	if(val!=1) {hideShowHandler('trDelCondition'+val,1);} //re-show previous rows's del option...
	document.getElementById("conditionCount").value = parseInt(document.getElementById("conditionCount").value)-1;
}

function qHandler(condid,qid,aid) {
	//deal with q4, ans 1-3
	if(qid==4 && (aid >= 13 && aid <= 15)) {
		for(var i = 13; i <=15; i++) {
			if(i!=aid) {
				//alert(i);
				document.getElementById("c"+condid+"_ans_q"+qid+"_"+i).checked=false;
			}
		} 
	}
	//for cond 0 and q 8, show when q6 ans is 3(26)
	if(condid==0 && qid==6) {
		if(aid==27) {
			document.getElementById("trCond0_q8").style.display='';
		}
		else {
			document.getElementById("c0_ans_q8_32").checked=false;
			document.getElementById("c0_ans_q8_33").checked=false;
			document.getElementById("c0_ans_q8_34").checked=false;
			document.getElementById("c0_ans_q8_35").checked=false;
			document.getElementById("trCond0_q8").style.display='none';
		}
	}
}

function cmToInches(val) {
	if(val!="") {document.getElementById("heightInches").innerText = (parseInt(val)*0.393700787).toFixed(2);}
	else {document.getElementById("heightInches").innerText = "?";}
}

function kgToPounds(val) {
	if(val!="") {document.getElementById("weightPounds").innerText = (parseInt(val)*2.20462262).toFixed(2);}
	else {document.getElementById("weightPounds").innerText = "?";}
}

function gToOunces(val) {
	if(val!="") {document.getElementById("tobOunces").innerText = (parseInt(val)*0.0352739619).toFixed(2);}
	else {document.getElementById("tobOunces").innerText = "?";}
}

function checkConditionForCancerFlag(selId,optVal) {
	//alert(selId);
	//alert(optVal);
	if(optVal!="" && optVal!="-1") {
		if(document.getElementById("hidden_Cond_"+optVal+"_cancer").value!="True") {
			hideShowHandler("trCond"+selId.substring(15,16)+"_q9",0);
		}
		else {
			hideShowHandler("trCond"+selId.substring(15,16)+"_q9",1);
		}
	}
	else {
		hideShowHandler("trCond"+selId.substring(15,16)+"_q9",0);
	}
}

function checkCondSearch(selId,optVal) {
	//alert(selId);
	//alert(optVal);
	if(optVal=="-1") { //then we need to spawn the searcher...
		hideShowHandler("trCond"+selId.substring(15,16)+"_q9",0); //hide the cancer question in case condition selected isnt cancer
		document.getElementById(selId).selectedIndex=0;
		window.open('medical_questionnaire_cond_search.asp?conditionID='+selId+'','cswin','height=200,width=540,left=100,top=100,resizable=no,scrollbars=yes,toolbar=no,status=no');
	}
}

function addCondition(condID,condName,openerSelCondId,cancerFlag) {
	//alert(condID);
	//alert(condName);
	//alert(openerSelCondId);
	var condBoxSel = document.getElementById(openerSelCondId);	
	var newOption;
	condBoxSel.options.length = 0; //empty them totally
	newOption = new Option('Please select...', '');
	condBoxSel[condBoxSel.length] = newOption;
	newOption = new Option(condName, condID);
	condBoxSel[condBoxSel.length] = newOption;
	newOption = new Option('>>>Search Condition List...', '-1');
	condBoxSel[condBoxSel.length] = newOption;
	condBoxSel.selectedIndex=1; //set the new item as selected...
	if(cancerFlag!="False") {hideShowHandler("trCond"+openerSelCondId.substring(15,16)+"_q9",1);}
	//window.close(); //not required...
}