function addValRow(err)
{
row = new Object();
ruleArr = new Array();
row["errMess"] = err;
row["rule"] = ruleArr;
//for (i = 0; i < 10; i++)
return row
}

function addRule(row, rt, rv)
{
rule = new Object();
rule["rt"] = rt;
rule["rv"] = rv;
row["rule"][row["rule"].length] = rule;
return rule
}


function hderr( objName )
{
	if ( document.getElementById )
	{
		if ( document.getElementById(objName) )
			if ( document.getElementById( objName ).style )
				document.getElementById( objName ).style.visibility = 'hidden';
	}
	else
		if ( document.layers )
			if ( document.layers[objName] )
				document.layers[objName].visibility = 'hide';
}

function swerr( objName )
{

	if ( document.getElementById )
	{
		document.getElementById(objName).style.visibility = 'visible';
	}
	else
		if ( document.layers )
			document.layers[objName].visibility = 'show';
}


function HideAllErrors( frm )
{
	for ( i=0; i < frm.elements.length; i++ )
		hderr( frm.elements[i].name + '_err' );
}

function doForm(f, act)
{
var dummy;
var sact;
var bCont = false;
var bRet = true;
var bRetCustomValidation = true;

	window.status = 'Validating information entered...';	
	HideAllErrors( f );
	//sact = act.substring( act.indexOf('act=')+4, act.length );
	//alert( sact );
	//if (sact=='u' || sact=='i')
	{
	
		for (var i=0;i<f.elements.length;i++)
		{

			var fld = f.elements[i].name;
			
			if (fld.substr(0,1)!="_")
			   {

				if ( !valArr[fld])
				{
					continue;
				}


				//check for optional, only continue if there is a value
				bCont = true;

				for (var j=0;j<valArr[fld].rule.length;j++)
				{
					if (valArr[fld].rule[j].rt=='opt' && f.elements[i].value=='')
						bCont = false;
				}

				if (bCont == true)
				{
	
					for (j=0;j<valArr[fld].rule.length;j++)
					{
						switch (valArr[fld].rule[j].rt)
							{
							case "man":
								var x;

								switch ( f.elements[i].type ) 
								{	// needed for ns4, Eugene Barnard 18 Jan 2002
									case "text" :
									//A.K added validation for MSA Career Oppurtunities 14/12/2004
									case "textarea" :
									//A.K added validation for MSA Competion 12/04/2005
									case "radio":
									case "password":
									
												x = f.elements[i];
												break;
								
									case "select-one":
												x = f.elements[i].options[ f.elements[i].selectedIndex ];
												break;
									default:
												alert( f.elements[i].type + ' has not been implemented in frmval.js, please implement it.' );
												return;
								}

								if ( (trim( x.value ) == "") || ( x.value==null ) )
								{
							
									swerr( f.elements[i].name + '_err' );
									bRet = false;
								}
							
								break;

							case "date":
								if ( trim( f.elements[i].value ) != '' )
								{
									var re = new RegExp( "^([0]?[1-9]|[1-2][0-9]|3[0-1])\/([0]?[1-9]|1[0-2])\/([1-2][0-9][0-9][0-9])$", "ig" );
									var r = f.elements[i].value.match(re);

									if ( r==null )
									{
										swerr( f.elements[i].name + '_err' );
										bRet = false;
									}
									else
										if ( !isValidDate(f.elements[i].value) )
										{
											swerr( f.elements[i].name + '_err' );
											bRet = false;
										}
								}
								break;	
							case "emailx":
								if ( trim( f.elements[i].value ) != '' ) 
								{
									
									var re = new RegExp( "^[a-z][a-z_0-9\\.-]*@[a-z_0-9\\.-]+\\.[a-z]{2,4}$", "ig" );
									var r = f.elements[i].value.match(re);

									if ( r==null )
									{
										swerr( f.elements[i].name + '_err' );
										bRet = false;
									}
								}
								break;	


							case "email":
								if ( trim( f.elements[i].value ) != '' ) 
								{
									if ( isValidEmailAddress( trim( f.elements[i].value ) ) == false )
									{
										
										swerr( f.elements[i].name + '_err' );
										bRet = false;
									}
								}
								break;	


								
									
							case "num":
								if ( trim( f.elements[i].value ) != '' )
								{
									var re = new RegExp( "^([0-9]{1,})(([.]?[0-9]{1,})?)$", "ig" );
									var r = f.elements[i].value.match(re);
								
									if ( r==null )
									{
								
										swerr( f.elements[i].name + '_err' );
										bRet = false;
									}
								}
								break;		

							case "minlength":
								if ( trim( f.elements[i].value ) != '' )
								{
									if ( f.elements[i].value.length < valArr[fld].rule[j].rv )
									{
										swerr( f.elements[i].name + '_err' );
										bRet = false;
									}
								}
								break;		
							case "maxlength":
								if ( trim( f.elements[i].value ) != '' )
								{
									if ( f.elements[i].value.length > valArr[fld].rule[j].rv )
									{
										swerr( f.elements[i].name + '_err' );
										bRet = false;
									}
								}
								break;	
							case "reg":
								var re = new RegExp( valArr[fld].rule[j].rv, "ig" );
								var r = f.elements[i].value.match(re);

								if ( r==null )
								  {
									f.elements[i].focus();
									alert(valArr[fld].errMess);
									return false;
								  }
								break;																										
							default :
								alert( 'Invalid validation rule name, please check rule : ' + valArr[fld].rule[j].rt );
							}
					}	
				}	
			}
		}

	}



	bRetCustomValidation = CustomValidation( f );
	
	window.status = '';

	if ( bRet && bRetCustomValidation )
		
		return true;
		
	else
		return false;
}

function isValidDate( strSrc )
{
	// Function expects date in d/m/y format
	var days = [31,28,31,30,31,30,31,31,30,31,30,31];
	var d = new Number();
	var m = new Number();
	var y = new Number();
	var arrSS = new Array();;
	var blnRet = new Boolean();

	blnRet = true;
	arrSS = strSrc.split("/");
	d = arrSS[0];
	m = arrSS[1];
	y = arrSS[2];


	if ( trim( strSrc ) != '' )
	{
		var re = new RegExp( "^([0]?[1-9]|[1-2][0-9]|3[0-1])\/([0]?[1-9]|1[0-2])\/([1-2][0-9][0-9][0-9])$", "ig" );
		var r = strSrc.match(re);

		if ( r==null )
			blnRet = false;
		else
		{
			if ( arrSS.length != 3 )
				blnRet = false;
			else
			{
				if ( ( m < 1 ) || ( m > 12 ) )
					blnRet = false;

				if ( ( y % 4 ) == 0 )
					days[1] = 29;

				if ( ( y % 100 ) == 0 ) 
				{
					if ( ( y % 400 ) == 0 )
						days[1] = 29;
				}
				else 
					days[1] = 28;

				if ( d > days[ m - 1 ] )
					blnRet = false;
			}
		}
	}

	return blnRet;
}




function isValidEmailAddress(psEmailAddress)
{
	var bRet = true;
	
	//Change by A.K to allow emails with 4 chars in 2nd extension (13/10/2004)
									
	var re = new RegExp( "^[a-z][a-z_0-9\\.-]*@[a-z_0-9\\.-]+\\.[a-z]{2,4}$", "ig" );
	
	var r = psEmailAddress.match(re);

	if ( r==null )
	{
		bRet = false;
	}

	return bRet;
}


function trim(sSrc)
{
	var ichar, icount;
	var strValue = new String();

	strValue = sSrc;
	ichar = strValue.length - 1;
	icount = -1;
	while (strValue.charAt(ichar)==' ' && ichar > icount)
		--ichar;

	if (ichar!=(strValue.length-1))
		strValue = strValue.slice(0,ichar+1);
	ichar = 0;
	icount = strValue.length - 1;
	while (strValue.charAt(ichar)==' ' && ichar < icount)
		++ichar;
		if (ichar!=0)
			strValue = strValue.slice(ichar,strValue.length);
	return strValue;
 }

function bRadioChecked( oControl )
{
	var bRet=false;

	if ( oControl.length )
	{
		for ( i=0; i < oControl.length ; i++ )
			if ( oControl[i].checked == true)
				bRet = true;
	}
	else
		bRet = false;
	return bRet;
}

function ValidateAmount( oCtrl )
{
	if ( trim( oCtrl.value ) != '' )
	{
		if ( isNaN( oCtrl.value ) )
			alert("Please enter numbers only with no spaces. (eg 500000)");
		else
			oCtrl.value = parseFloat( oCtrl.value );
	}
}


function ValidateDate( oCtrl )
{
	if ( trim( oCtrl.value ) != '' )
	{
		if ( !isValidDate( oCtrl.value ) )
			alert("Please enter a valid date in dd/mm/yyyy format. (eg 20/4/2002)");
	}
}



function isValidMod10Number(sNumber) 
{
	var isValid = false;
	var CheckRegExp = /[^\d ]/;
	isValid = !CheckRegExp.test(sNumber);

	var cardNumbersOnly = sNumber.replace(/ /g,"");
	var cardNumberLength = cardNumbersOnly.length;

	if (isValid)
	{
		var numberProduct;
		var numberProductDigitIndex;
		var checkSumTotal = 0;
		for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--)
		{
			checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
			digitCounter--;
			numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
			for (var productDigitCounter = 0; productDigitCounter < numberProduct.length; productDigitCounter++)
				checkSumTotal += parseInt(numberProduct.charAt(productDigitCounter));
		}
		isValid = (checkSumTotal % 10 == 0);
	}
	return isValid;
}
function init()
{


	valArr["appFirstname"] = addValRow("appFirstname");
	addRule(valArr["appFirstname"],"man","");

	valArr["appSurname"] = addValRow("appSurname");
	addRule(valArr["appSurname"],"man","");

	valArr["appIDType"] = addValRow("appIDType");
	addRule(valArr["appIDType"],"man","");

	valArr["appIDNo"] = addValRow("appIDNo");

	valArr["appAddr1"] = addValRow("appAddr1");
	addRule(valArr["appAddr1"],"man","");

	valArr["appAddrSuburb"] = addValRow("appAddrSuburb");
	addRule(valArr["appAddrSuburb"],"man","");

	valArr["appAddrPostalCode"] = addValRow("appAddrPostalCode");
	addRule(valArr["appAddrPostalCode"],"man","");

	valArr["appHomeEmail"] = addValRow("appHomeEmail");
	addRule(valArr["appHomeEmail"],"man","");
	addRule(valArr["appHomeEmail"],"email","");

	valArr["appFirstHomeFlag"] = addValRow("appFirstHomeFlag");
	addRule(valArr["appFirstHomeFlag"],"man","");

	valArr["appOccupationalStatus"] = addValRow("appOccupationalStatus");
	addRule(valArr["appOccupationalStatus"],"man","");

	valArr["AlreadySignedOfferToPurchase"] = addValRow("AlreadySignedOfferToPurchase");
	addRule(valArr["AlreadySignedOfferToPurchase"],"man","");
	
	valArr["AgreeToCreditCheck"] = addValRow("AgreeToCreditCheck");
	addRule(valArr["AgreeToCreditCheck"],"man","");

	valArr["ActivelyLookingForProperty"] = addValRow("ActivelyLookingForProperty");
	addRule(valArr["ActivelyLookingForProperty"],"man","");

	valArr["ApplicationType"] = addValRow("ApplicationType");
	addRule(valArr["ApplicationType"],"man","");

	valArr["LoanTypeID"] = addValRow("LoanTypeID");
	addRule(valArr["LoanTypeID"],"man","");

	valArr["LoanReasonID"] = addValRow("LoanReasonID");
	addRule(valArr["LoanReasonID"],"man","");

	valArr["EstimatedPurchasePrice"] = addValRow("EstimatedPurchasePrice");
	addRule(valArr["EstimatedPurchasePrice"],"man","");
	addRule(valArr["EstimatedPurchasePrice"],"num","");

	valArr["Deposit_BondCostAmount"] = addValRow("Deposit_BondCostAmount");
	addRule(valArr["Deposit_BondCostAmount"],"num","");

	valArr["appMonthlyIncome"] = addValRow("appMonthlyIncome");
	addRule(valArr["appMonthlyIncome"],"man","");
	addRule(valArr["appMonthlyIncome"],"num","");

	valArr["HomegrowReferralSource"] = addValRow("HomegrowReferralSource");
	addRule(valArr["HomegrowReferralSource"],"man","");

}


function ValidateForm( frm, sact )
{
	var bRet = doForm( frm, sact );
	if ( !bRet )
		alert('Please enter values for all the fields marked with an *');
	else
	{
		frm.action = sact;
		frm.method= 'post';
		frm.submit();
	}
	return;
}


function CustomValidation(frm)
{
	var x;
	var bRet = true;

	with ( frm )
	{
		if ( ( trim( appHomeTelCode.value ) == '' )  && ( trim( appHomeTelNo.value ) != '' ) )
		{
			swerr("appHomeTelCode_err");
			bRet=false;
		}

		if ( (trim( appHomeTelCode.value ) != '')  && ( trim(appHomeTelNo.value) == '') )
		{
			swerr("appHomeTelNo_err");
			bRet=false;
		}

		if (( trim( appWorkTelCode.value ) == '' )  && ( trim( appWorkTelNo.value ) != '' ) )
		{
			swerr("appWorkTelCode_err");
			bRet=false;
		}

		if (( trim( appWorkTelCode.value ) != '')  && ( trim( appWorkTelNo.value ) == '') )
		{
			swerr("appWorkTelNo_err")
			bRet=false;
		}

		var blnHomeTel = ( ( trim( appHomeTelCode.value ) == '' ) || ( trim( appHomeTelNo.value ) == '' ) );
		var blnWorkTel = ( ( trim( appWorkTelCode.value ) == '' ) || ( trim( appWorkTelNo.value ) == '' ) );
		var blnCell = trim( appCellNo.value ) == '';

		if ( blnHomeTel && blnWorkTel && blnCell )
		{
			swerr("appTelephone_err");
			bRet = false;
		} else {
			hderr("appTelephone_err");
		}

		if ( appIDType.options[ appIDType.selectedIndex ].value == '2' )
		{		
			if ( trim( appIDNo.value ) == '' ||  isNaN(trim( appIDNo.value ))  )
			{
		
				swerr('appIDNo_err');
				bRet = false;
			}
			else
			{
				var IDNO;
				IDNO =  trim( appIDNo.value );
				if (IDNO.length != 13)
				{
				alert ("Please ensure your ID Number is restricted to 13 characters");
				swerr('appIDNo_err');
				bRet = false;
				}
				
				
			
			}
			
		}
		
		
	

		if ( LoanTypeID.options[ LoanTypeID.selectedIndex ].value == '4' )
		{
			if ( trim( LoanTypeOther.value ) == '' )
			{
				swerr('LoanTypeOther_err');
				bRet = false;
			}
		}

		if ( LoanReasonID.options[ LoanReasonID.selectedIndex ].value == '6' )
		{
			if ( trim( LoanReasonOther.value ) == '' )
			{
				swerr('LoanReasonOther_err');
				bRet = false;
			}
		}

	if ( ApplicationType.options[ ApplicationType.selectedIndex ].value == '2' || ApplicationType.options[ ApplicationType.selectedIndex ].value == '3')
		{
			if ( trim( CoappMonthlyIncome.value ) == '' )
			{
				swerr('CoappMonthlyIncome_err');
				bRet = false;
			}
		}




	}

	return bRet;
}

function setbg( objControl, sColor )
{
	if (objControl.style)
		objControl.style.backgroundColor = sColor;
}

function menuover(menuname)
{
	document.all(menuname).className = "MenuOver"; 
	document.all("link" + menuname).className = "LinkMenuOver"; 
}
function menuout(menuname)
{
	document.all(menuname).className = "MenuOut";
	document.all("link" + menuname).className = "LinkMenuOut";
}
function submenuover(menuname)
{
	document.all(menuname).className = "SubMenuOver"; 
	document.all("link" + menuname).className = "SubLinkMenuOver"; 
}
function submenuout(menuname)
{
	document.all(menuname).className = "SubMenuOut";
	document.all("link" + menuname).className = "SubLinkMenuOut";
}
function sidemenuover(menuname)
{
	document.all(menuname).className = "SideMenuOver"; 
	document.all("link" + menuname).className = "SideLinkMenuOver"; 
}
function sidemenuout(menuname)
{
	document.all(menuname).className = "SideMenuOut";
	document.all("link" + menuname).className = "SideLinkMenuOut";
}
function goto(menuname)
{
	window.location = document.all(menuname).href;
}
function sig(thisid)
{
	var strTmp = thisid;
	document.all(strTmp).style.display = "";
    var i = new Image();
    var s = "/l.asp?desc="+ thisid;
	i.src = s;
}
function hig(thisid)
{
	var strTmp = thisid;
	document.all(strTmp).style.display = "none";
}
function showit(thisval)
{
    var i = new Image();
    var s = "/l.asp?i="+ thisval;
	sig(thisval);
	i.src = s;
}
