// function to validate user input
function initValidation(){
	var objForm = document.forms["frmCalc"];
	objForm.txtFirstName.required = 1;	objForm.txtFirstName.regexp = /^\w*$/;
	objForm.txtFirstName.err = 'Please enter a valid First Name';
	
	objForm.txtLastName.required = 1;	objForm.txtLastName.regexp = /^\w*$/;
	objForm.txtLastName.err = 'Please enter a valid Last Name';
	
		// opt boxes
	objForm.optSex.required = 1;
	objForm.optSex.err = 'Please choose one';
	
	
	objForm.txtDOB_1.required = 1; objForm.txtDOB_2.required = 1; objForm.txtDOB_3.required = 1;
	objForm.txtDOB_1.regexp = /^\d+$/; objForm.txtDOB_2.regexp = /^\d+$/; objForm.txtDOB_3.regexp = /^\d+$/;
	objForm.txtDOB_1.err = 'Please enter a valid Date';
	objForm.txtDOB_2.err = 'Please enter a valid Date';
	objForm.txtDOB_3.err = 'Please enter a valid Date';
	
	objForm.txtRetirementAge.required = 1; objForm.txtRetirementAge.regexp = /^\d+$/;
	objForm.txtRetirementAge.err = 'Please enter a valid Age';
	
	//currency values
	objForm.txtIncomePerYear.required = 1; objForm.txtIncomePerYear.regexp = 'JSVAL_RX_MONEY';
	objForm.txtIncomePerYear.err = 'Please enter a valid value, e.g. 12500.75';
	
	objForm.txtCompanyPension1.required = 0; objForm.txtCompanyPension1.regexp = 'JSVAL_RX_MONEY';
	objForm.txtCompanyPension1.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtCompanyPension2.required = 0; objForm.txtCompanyPension2.regexp = 'JSVAL_RX_MONEY';
	objForm.txtCompanyPension2.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtCompanyPension3.required = 0; objForm.txtCompanyPension3.regexp = 'JSVAL_RX_MONEY';
	objForm.txtCompanyPension3.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtCompanyPension4.required = 0; objForm.txtCompanyPension4.regexp = 'JSVAL_RX_MONEY';
	objForm.txtCompanyPension4.err = 'Please enter a valid value, e.g. 12500.75';
	//------
	
	objForm.txtPersonalPension1.required = 0; objForm.txtPersonalPension1.regexp = 'JSVAL_RX_MONEY';
	objForm.txtPersonalPension1.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtPersonalPension2.required = 0; objForm.txtPersonalPension2.regexp = 'JSVAL_RX_MONEY';
	objForm.txtPersonalPension2.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtPersonalPension3.required = 0; objForm.txtPersonalPension3.regexp = 'JSVAL_RX_MONEY';
	objForm.txtPersonalPension3.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtPersonalPension4.required = 0; objForm.txtPersonalPension4.regexp = 'JSVAL_RX_MONEY';
	objForm.txtPersonalPension4.err = 'Please enter a valid value, e.g. 12500.75';
	
	
	objForm.txtInvestmentValue1.required = 0; objForm.txtInvestmentValue1.regexp = 'JSVAL_RX_MONEY';
	objForm.txtInvestmentValue1.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtInvestmentValue2.required = 0; objForm.txtInvestmentValue2.regexp = 'JSVAL_RX_MONEY';
	objForm.txtInvestmentValue2.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtInvestmentValue3.required = 0; objForm.txtInvestmentValue3.regexp = 'JSVAL_RX_MONEY';
	objForm.txtInvestmentValue3.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtInvestmentValue4.required = 0; objForm.txtInvestmentValue4.regexp = 'JSVAL_RX_MONEY';
	objForm.txtInvestmentValue4.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtInvestmentValue5.required = 0; objForm.txtInvestmentValue5.regexp = 'JSVAL_RX_MONEY';
	objForm.txtInvestmentValue5.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtInvestmentValue6.required = 0; objForm.txtInvestmentValue6.regexp = 'JSVAL_RX_MONEY';
	objForm.txtInvestmentValue6.err = 'Please enter a valid value, e.g. 12500.75';
	
	objForm.txtSavingValue1.required = 0; objForm.txtSavingValue1.regexp = 'JSVAL_RX_MONEY';
	objForm.txtSavingValue1.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtSavingValue2.required = 0; objForm.txtSavingValue2.regexp = 'JSVAL_RX_MONEY';
	objForm.txtSavingValue2.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtSavingValue3.required = 0; objForm.txtSavingValue3.regexp = 'JSVAL_RX_MONEY';
	objForm.txtSavingValue3.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtSavingValue4.required = 0; objForm.txtSavingValue4.regexp = 'JSVAL_RX_MONEY';
	objForm.txtSavingValue4.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtSavingValue5.required = 0; objForm.txtSavingValue5.regexp = 'JSVAL_RX_MONEY';
	objForm.txtSavingValue5.err = 'Please enter a valid value, e.g. 12500.75';
	objForm.txtSavingValue6.required = 0; objForm.txtSavingValue6.regexp = 'JSVAL_RX_MONEY';
	objForm.txtSavingValue6.err = 'Please enter a valid value, e.g. 12500.75';
	
	objForm.txtWindfallValue.required = 0; objForm.txtWindfallValue.regexp = 'JSVAL_RX_MONEY';
	objForm.txtWindfallValue.err = 'Please enter a valid value, e.g. 12500.75';
	
	objForm.txtDOW_1.required = 0; objForm.txtDOW_2.required = 0; objForm.txtDOW_3.required = 0;
	objForm.txtDOW_1.err = 'Please enter a valid Date';
	objForm.txtDOW_2.err = 'Please enter a valid Date';
	objForm.txtDOW_3.err = 'Please enter a valid Date';
}

function initValidation_SavePageContact(){
	var objForm = document.forms["contact"];
	objForm.Name.required = 1;	objForm.Name.regexp = /^\w*$/;
	objForm.Name.err = 'Please enter a valid Name';
	
	objForm.Email.required = 1; objForm.Email.regexp = 'JSVAL_RX_EMAIL';
	objForm.Email.err = 'Please enter a valid Email';
	
	objForm.PostCode.required = 0;	objForm.PostCode.regexp = /^(GIR|[A-Z]\d[A-Z\d]??|[A-Z]{2}\d[A-Z\d]??)[ ]??(\d[A-Z]{2})$/;
	objForm.PostCode.err = 'Please enter a valid Post Code';
		
	objForm.ContactNumber.required = 0; objForm.ContactNumber.regexp = 'JSVAL_RX_TEL';
	objForm.ContactNumber.err = 'Please enter a valid Contact Number';
}


function roundNumber(rnum, rlength) { // Arguments: number to round, number of decimal places
  var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
  return newnumber; 
}

Date.prototype.getMonthsBetween = function(d) {
        //returns months between dates
        var d1 = this.getFullYear() * 12 + this.getMonth();
        var d2 = d.getFullYear() * 12 + d.getMonth();
        return d2 - d1;
    };

function CurrencyFormatted(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}
// end of function CurrencyFormatted()


function CommaFormatted(amount)
{
	var delimiter = ","; // replace comma if desired
	var a = amount.split('.',2)
	var d = a[1];
	var i = parseInt(a[0]);
	if(isNaN(i)) { return ''; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while(n.length > 3)
	{
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) { a.unshift(n); }
	n = a.join(delimiter);
	if(d.length < 1) { amount = n; }
	else { amount = n + '.' + d; }
	amount = minus + amount;
	return amount;
}
// end of function CommaFormatted()


function monthsBetween(thisDate, thatDate) {
  if (thisDate > thatDate) {
    return monthsBetween(thatDate, thisDate);
  }
 
  var number = 0;
  if (thatDate.getFullYear() > thisDate.getFullYear()) {
    number = number + (thatDate.getFullYear() - thisDate.getFullYear() - 1) * 12;
  } else {
    return thatDate.getMonth() - thisDate.getMonth();
  }
 
  if (thatDate.getMonth() > thisDate.getMonth()) {
    number = number + 12 + thatDate.getMonth() - thisDate.getMonth();
  } else {
    number = number + (12 - thisDate.getMonth()) + thatDate.getMonth();
  }
  return number;
}

function UpdateLumpSumIncome(){
	// get the lumpsum value (only if relevant fields are filled.
	var varIncomePerYear = document.getElementById("txtIncomePerYear").value;
	var varDob = new Date(document.getElementById("txtDOB_3").value,document.getElementById("txtDOB_2").value-1,document.getElementById("txtDOB_1").value);
	var varCurDate = new Date();
	var varDor = new Date( (document.getElementById("txtDOB_3").value*1)+(document.getElementById("txtRetirementAge").value*1),(document.getElementById("txtDOB_2").value*1)-1,document.getElementById("txtDOB_1").value)
	
	//var varMonths = varDob.getMonthsBetween(varDor);
	var diff = varDor-varCurDate;
	var varMonths = (diff / (1000 * 60 * 60 * 24 * 365.25) )*12;
	//var varMonths = varDob.getMonthsBetween(varDor);
	//monthsBetween(varDob,varDor);
	
	var varLumpsumRequired =    (  (varIncomePerYear*1)+((varIncomePerYear*3*varMonths)/100/12) ) *  20 ;
	var result = CurrencyFormatted(varLumpsumRequired);
	result = CommaFormatted(result);
	
	
	document.getElementById("LumpsumSpan").innerHTML = result;
	document.getElementById("LumpsumSpan2").innerHTML = result;
	
	document.getElementById("RetirementAgeSpan").innerHTML = document.getElementById("txtRetirementAge").value + " years of age";
	
	// set htxtMonthsToRetire for use in the summary.
	document.getElementById("htxtMonthsToRetire").value = varMonths;
	
	

}


function popup(url) 
{
 var width  = 450;
 var height = 350;
 var left   = (screen.width  - width)/2;
 var top    = (screen.height - height)/2;
 var params = 'width='+width+', height='+height;
 params += ', top='+top+', left='+left;
 params += ', directories=no';
 params += ', location=no';
 params += ', menubar=no';
 params += ', resizable=no';
 params += ', scrollbars=yes';
 params += ', status=no';
 params += ', toolbar=no';
 newwin=window.open(url,'helpwindow', params);
 if (window.focus) {newwin.focus()}
 return false;
}

// function for date boxes - to jump to next box based on input key
function date_key_up(e,text_box,next_box){
 	if (!e) e=window.event;
  	var code;
	var sepPressed = false;
  	if ((e.charCode) && (e.keyCode==0))
    	code = e.charCode
  	else
    	code = e.keyCode;
		
	switch(code){
		// -> spc / - . \ ,
	  case 39: case 32: case 47: case 45: case 46: case 92: case 44:
		sepPressed = true;
		break;
	  }
	if(sepPressed){
		next_box.select();
		next_box.focus();
		return false;
	}
	else if(text_box.value.length >= text_box.maxLength && ((code>=48 && code <=57) || (e.keyCode>=96 && e.keyCode <=105))    ){
		//next_box.value=String.fromCharCode(code);
		next_box.select();
		next_box.focus();
		return false;
	}
	return true;
}


function IsSelected (textControl)
{
	var retVal = false;
	var sl = (textControl.value).substring(textControl.selectionStart,textControl.selectionEnd);  
	// if ALL of text is selected return true
	if(sl.length >= textControl.maxLength)
		retVal = true;

	return retVal;
}

