// 
// Auto validation Pack v1.4 (Nov 06)
// by Judah Lim (i.am@directory.per.sg), Copyright 2001-06
//
// Copyright (c) 2006, all rights reserved
// No part of this script may be copied, modified, used or distributed without
// prior knowledge or approval of the author.
//
// Please send all requests and correspondences to the above email address.
//
// ---------------------------------------------------------------------------

bIntelliCase = true;

intIE	= (parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5, navigator.userAgent.indexOf( ";", navigator.userAgent.indexOf("MSIE")+5))));

IsIE	= (navigator.userAgent.indexOf("MSIE")!=-1) ? true : false;
IsIE4	= (IsIE && intIE >= 4.0);
IsIE6	= (IsIE && intIE >= 6.0);

IsNS4	= (document.layers);
IsIENS6	= (document.all||document.getElementById);

dtToday = new Date();

//--------------------------------------------------------------------------

function SubmitWebForm2(frm)
{
	var blnV = true;
	
	blnV = IsEmpty(blnV, frm.vAddr1, "Please enter your mailing address first before sending. Thank you");
	//blnV = IsEmpty(blnV, frm.vAddr2, "Please enter your mailing address first before sending. Thank you");
	//blnV = IsEmpty(blnV, frm.vAddr3, "Please enter your mailing address first before sending. Thank you");
	//blnV = IsEmpty(blnV, frm.vCity, "Please enter your mailing address first before sending. Thank you");
	//blnV = IsEmpty(blnV, frm.vState, "Please enter your mailing address first before sending. Thank you");
	//blnV = IsEmpty(blnV, frm.vZip, "Please enter your mailing address first before sending. Thank you");
	//blnV = IsEmpty(blnV, frm.vCountry, "Please enter your mailing address first before sending. Thank you");
	
	frm.action="page3.asp";
	if (blnV) {frm.submit();}
}

function SubmitWebForm(frm)
{
	var blnV = true;
	
	//if ((blnV) && (frm.choice[0].checked == false) && (frm.choice[1].checked == false))
	//	{alert("Please select your gift type and your gift amount"); frm.choice[0].focus(); blnV = false;}
	
	var index1 = -1
	var amtValue1 = 0
	
	/*
	if ((blnV) && (frm.choice[0].checked == true))
	{
		for (var i = 0; i < frm.amtMth.length; i++)
		{
			if (frm.amtMth[i].checked == true) {index1 = i; amtValue1 = frm.amtMth[i].value;}
		}
		
		if (index1 == -1) {alert("Please select your gift type and your gift amount"); frm.choice[0].focus(); blnV = false;}
		
		if ((blnV) && (amtValue1 == 1))
		{
			blnV = IsEmpty(blnV, frm.amtSpec1, "Please specify your gift amount");
			blnV = ValidateFloat(blnV, frm.amtSpec1);
		}
	}
	*/
	
	//if ((blnV) && (frm.typeMth[0].checked == true))
	//{
	//	blnV = IsEmpty(blnV, frm.iMth, "Please enter the number of months");
	//	var a = frm.iMth.value.replace(/^\s*/, '').replace(/\s*$/, '')
	//	if ((blnV) && isNaN(a)) {alert("Please specify a proper no. of month(s): 1 to 36"); frm.iMth.focus(); blnV = false;}
	//	if ((blnV) && a.length == 2 && a.charAt(0) == '0') {alert("Please specify a proper no. of month(s): 1 to 36"); frm.iMth.focus(); blnV = false;}
	//	if ((blnV) && (a < 1 || a > 36)) {alert("Please specify a proper no. of month(s): 1 to 36"); frm.iMth.focus(); blnV = false;}
	//	
	//	var b = frm.maxMth.value;
	//	if ((blnV) && a > b)
	//	{
	//			alert ("The maximum number of months is " + b + ". Please re-enter the no. of month ");
	//			frm.iMth.focus(); blnV = false;
	//	}
	//}
	
	
	var index2 = -1
	var amtValue2 = 0
	//if ((blnV) && (frm.choice[1].checked == true))
	//{
	for (var i = 0; i < frm.amtOne.length; i++)
	{
		if (frm.amtOne[i].checked == true) {index2 = i; amtValue2 = frm.amtOne[i].value;}
	}
		
	if (index2 == -1) {
		alert("Please select your gift amount"); 
		//frm.choice[1].focus(); 
		blnV = false;
	}
		
	if ((blnV) && (amtValue2 == 1))
	{
		blnV = IsEmpty(blnV, frm.amtSpec2, "Please specify your gift amount");
		blnV = ValidateFloat(blnV, frm.amtSpec2);
	}
	//}
	
	if ((blnV) && (frm.blnAnon[0].checked == false) && (frm.blnAnon[1].checked == false))
		{alert("Please select your preference "); frm.blnAnon[0].focus(); blnV = false;}

	//Name and Email compulsory	
	blnV = IsEmpty(blnV, frm.vName, "Please enter your name. Thank you.");
	blnV = ValidateAlpha(blnV, frm.vName, "Please enter your name. Thank you.", "Y")
	blnV = IsEmpty(blnV, frm.vEmail, "Please provide your e-mail address. Thank you.");
	blnV = ValidateEmail(blnV, frm.vEmail);

	var index4 = -1
	if ((frm.blnAnon[0].checked == true))
	{
		if (blnV )
		{
			for (var i = 0; i < frm.vSalu.length; i++) {if (frm.vSalu[i].checked == true) index4 = i;}
			if (index4 == -1) {alert("Please select your salutation"); blnV = false;}
			
			if ((blnV) && (index4 == 5))
			{
				blnV = IsEmpty(blnV, frm.vOSalu, "Please specify your salutation");
				blnV = ValidateAlphaNumeric(blnV, frm.vOSalu, "N");
			}
		}
		
		//moved above
		//blnV = IsEmpty(blnV, frm.vName, "Please enter your name. Thank you.");
		//blnV = ValidateAlpha(blnV, frm.vName, "Please enter your name. Thank you.", "Y")
		//blnV = IsEmpty(blnV, frm.vEmail, "Please provide your e-mail address. Thank you.");
		//blnV = ValidateEmail(blnV, frm.vEmail);
		
		var tel = frm.vTel.value.replace(/^\s*/, '').replace(/\s*$/, '')
		if (blnV && tel.length > 0) blnV = ValidateNumeric(blnV, frm.vTel, "Please enter numbers only");
		
		//if (blnV && frm.blnTax[0].checked == true)
		//{
		//		blnV = IsEmpty(blnV, frm.vIC, "Please enter your NRIC/ FIN. Thank you.");
		//		
		//		var ic = frm.vIC.value.replace(/^\s*/, '').replace(/\s*$/, '')
		//		if (blnV && ic.length > 0)
		//		{
		//			if (ic.length != 9) {alert("Your NRIC/FIN No. should have 9 characters\ne.g.A1234567B"); blnV = false;}
		//			else {blnV = ValidateAlphaNumeric(blnV, frm.vIC, "N");}
		//		}
		//}
	}
	
	
	//check NRIC for Singapore Tax Resident
	//if (blnV && frm.blnTax[0].checked == true)
	//{
	//		blnV = IsEmpty(blnV, frm.vIC, "Please enter your NRIC/ FIN. Thank you.");
	//		
	//		var ic = frm.vIC.value.replace(/^\s*/, '').replace(/\s*$/, '')
	//		if (blnV && ic.length > 0)
	//	{
	//			if (ic.length != 9) {alert("Your NRIC/FIN No. should have 9 characters\ne.g.A1234567B"); blnV = false;}
	//			else {blnV = ValidateAlphaNumeric(blnV, frm.vIC, "N");}
	//		}
	//}


	//added by riky irawan on 19-3-2007
	if (frm.choiceTaxRec.checked)
	{
		blnV = IsEmpty(blnV, frm.addrTaxRec1, "Please enter your Address. Thank you.");
		//blnV = IsEmpty(blnV, frm.cityTaxRec, "Please enter your City. Thank you.");
		//blnV = IsEmpty(blnV, frm.zipCodeTaxRec, "Please enter your Zip Code. Thank you.");
		blnV = IsEmpty(blnV, frm.countryTaxRec, "Please enter your Country. Thank you.");
	}

	frm.action="confirm.asp";
	if (blnV) {frm.submit();}
	
	
}

//--------------------------------------------------------------------------

function chkAmt()
{
	/*
	if (document.webform.choice[0].checked == false)
	{
		for (var i = 0; i < document.webform.amtMth.length; i++) document.webform.amtMth[i].checked = false;
		for (var i = 0; i < document.webform.typeMth.length; i++) document.webform.typeMth[i].checked = false;
	}
	else
	{
		if (document.webform.typeMth[0].checked == false && document.webform.typeMth[1].checked == false)
			document.webform.typeMth[1].checked = true;
	}

	if (document.webform.choice[1].checked == false)
		{for (var i = 0; i < document.webform.amtOne.length; i++) document.webform.amtOne[i].checked = false;}
	*/
}

//obsolete method
function choice1(blnSpecAmt)
{
	document.webform.choice[0].checked = true;
	if (blnSpecAmt == 'Y') 
	{
		document.webform.amtMth[0].checked = true; 
		if (document.webform.typeMth[0].checked == false && document.webform.typeMth[1].checked == false)
			document.webform.typeMth[1].checked = true;
	}
	if (blnSpecAmt == 'N')
	{
		document.webform.amtSpec1.value = '';
		if (document.webform.typeMth[0].checked == false && document.webform.typeMth[1].checked == false)
			document.webform.typeMth[1].checked = true;
	}
	if (blnSpecAmt == 'T1')  
	{
		document.webform.typeMth[0].checked = true;
		var a = 99
		for (var i = 0; i < document.webform.amtMth.length; i++) {if (document.webform.amtMth[i].checked == true) a = i;}
		if (a == 99) document.webform.amtMth[1].checked = true;
	}
	if (blnSpecAmt == 'T2')  
	{
		document.webform.iMth.value = '';
		var a = 99
		for (var i = 0; i < document.webform.amtMth.length; i++) {if (document.webform.amtMth[i].checked == true) a = i;}
		if (a == 99) document.webform.amtMth[1].checked = true;
	}
}

function choice2(blnSpecAmt)
{
	//document.webform.choice[1].checked = true;
	
	if (blnSpecAmt == 'Y')  document.webform.amtOne[0].checked = true;
	if (blnSpecAmt == 'N')  document.webform.amtSpec2.value = '';
}

//function chkMth(n)
//{
//	var a = n.replace(/^\s*/, '').replace(/\s*$/, '')
//	if (a == '') return '';
//	if (isNaN(a)) {alert("Please specify a proper no. of month(s): 1 to 36"); return '';}
//	if (a.length == 2 && a.charAt(0) == '0') {alert("Please specify a proper no. of month(s): 1 to 36"); return '';}
//	if (a < 1 || a > 36) {alert("Please specify a proper no. of month(s): 1 to 36"); return '';}
//	return a
//}

//--------------------------------------------------------------------------

function IsEmpty(blnValid, objElement, vMsg)
{
	// Description - Check if form text field is empty
	// Requires - boolean on validity status, form field object, error message	
	
	// if form is still valid, continue test
	if (blnValid)
	{
		if ((objElement.value.replace(/^\s*/, '').replace(/\s*$/, ''))=="")
		{
			// form is no longer valid
			blnValid = false; alert(vMsg); objElement.focus(); objElement.value = "";
		}
	}
	
	// return validity result
	return blnValid;
}

function IsSelected(blnValid, objElement, iIndex, vMsg)
{
	// Description - Check if form select field is selected at particular index
	// Requires - boolean on validity status, form field object, index number, error message	

	if (blnValid)
	{
		if (objElement.selectedIndex==iIndex)
		{
			blnValid = false; alert(vMsg); objElement.focus();
		}
	}
	
	return blnValid;
}

function ValidateEmail(blnValid, field)
{
	// check only if not empty, to ensure entry, use IsEmpty
	if ((field.value!="")&&(blnValid))
	{
		if (window.RegExp)
		{
			// browser support RegExp
			var rx1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)");
			var rx2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
				
			if (!rx1.test(field.value) && rx2.test(field.value)) 
			{
			}
			else
			{
				alert("The email address provided is invalid. Examples of proper emails are,\n\n     user@singnet.com.sg        office@pacific.net.sg\n     staff@company.com.sg     manager@business.com");
				field.focus(); field.select(); return false;
			}
		}
		else
		{
			// browser don't support RegExp
			if (field.value.indexOf("@")>=0)
			{
				var validchar=".@-_0123456789abcdefghijklmnopqrstuvwxyz"
				var strin = field.value.toLowerCase();
				var strlen = field.value.length;
				var strout = "";
			
				for (var i=0; i<strlen; i++)
				{
					tempchar = strin.substring(i, i+1);
					if (validchar.indexOf(tempchar)!=-1)
						strout = strout + tempchar;
				}
				field.value = strout;
			}
			else
			{
				alert("The email address provided is invalid. Examples of proper emails are,\n\n     user@singnet.com.sg        office@pacific.net.sg\n     staff@company.com.sg     manager@business.com");
				field.focus(); field.select(); return false;
			}
		}
	}
	field.value = field.value.toLowerCase();
	return blnValid;
}

//--------------------------------------------------------------------------

function ValidateAlphaNumeric(blnValid, field, space)
{
	var strString = field.value.replace(/^\s*/, '').replace(/\s*$/, '').toLowerCase();
	
	if (space == 'Y')
		var strValidChars = " 0123456789abcdefghijklmnopqrstuvwxyz";
	else
		var strValidChars = "0123456789abcdefghijklmnopqrstuvwxyz";
		
	var strChar;
	for (i = 0; i < strString.length && blnValid == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
			{alert("Please enter alphanumeric characters only"); field.focus(); field.select(); blnValid = false;}
	}
	return blnValid;
}

function ValidateAlpha(blnValid, field, vMsg, space)
{
	var strString = field.value.replace(/^\s*/, '').replace(/\s*$/, '').toLowerCase();
	
	if (space == 'Y')
		var strValidChars = " abcdefghijklmnopqrstuvwxyz";
	else
		var strValidChars = "abcdefghijklmnopqrstuvwxyz";
	
	var strChar;
	for (i = 0; i < strString.length && blnValid == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
			{alert(vMsg); field.focus(); field.select(); blnValid = false;}
	}
	return blnValid;
}

function ValidateNumeric(blnValid, field, vMsg)
{
	var strString = field.value.replace(/^\s*/, '').replace(/\s*$/, '');
	var strValidChars = "0123456789";
	var strChar;
		
	for (i = 0; i < strString.length && blnValid == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
			{alert(vMsg); field.focus(); field.select(); blnValid = false;}
	}
	return blnValid;
}

function ValidateFloat(blnValid, field)
{
	var strString = field.value.replace(/^\s*/, '').replace(/\s*$/, '');
	var strValidChars = ".0123456789";
	var strChar;
	var intDotCount = 0;
		
	for (i = 0; i < strString.length && blnValid == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
			{alert("Please enter a proper amount"); field.value = ''; field.focus(); blnValid = false;}
		if (strChar == '.') {intDotCount = intDotCount + 1;}
	}
	
	if((blnValid)&&(strString.length>=1)&&((strString==0)||(strString.charAt(0)=='.')||(strString.charAt(strString.length-1)=='.')||(intDotCount>1)))
		{alert("Please enter a proper amount"); field.value = ''; field.focus(); blnValid = false;}
	
	return blnValid;
}

function cent(n)
{
	var a = n.replace(/^\s*/, '').replace(/\s*$/, '')
	if (a == '') return '';
	
	var i = a.indexOf('0')
	if (i == 0)
	{
		var j = a.indexOf('.')
		if (j == 1) {if (a <= 0) {alert("Please specify a proper amount"); return "";}}
		else {alert("Please specify a proper amount"); return "";}
	}

	var i = a.indexOf('-')
	if (i >= 0) {alert("Please specify a proper amount"); return '';}

	if (isNaN(a)) {alert("Please specify a proper amount"); return '';}

	var i = a.indexOf('.')
	if (i < 0)
	{
		if (a.length+3 <= 10) return a + ".00"
		else {alert("Please specify a proper amount"); return '';}
	}

	if (a.substring(0,i).length > 7) {alert("Please specify a proper amount"); return "";}
	if (a.substring(i+1,a.length+1).length > 2) {alert("Please specify a proper amount"); return "";}

	if (i + 2 == a.length) a += "0"
	if (i + 1 == a.length) a += "00"
	return a
}

//--------------------------------------------------------------------------

function InitCap(field)
{
	if (bIntelliCase)
	{
		var strin = field.value.toLowerCase();
		var strlen = field.value.length;	
		var tempchar, strtmp1, strtmp2;
		
		tempchar = strin.substring(0,1).toUpperCase();
		strtmp1 = strin.substring(1,strlen);
		strin = tempchar + strtmp1;
		
		for (i = 1; i < strlen; i++)
		{
			tempchar = strin.substring(i, i+1);
			if (tempchar == " " && i < (strlen-1))
			{
				tempchar = strin.substring(i+1, i+2).toUpperCase();
				strtmp1 = strin.substring(0, i+1);
				strtmp2 = strin.substring(i+2,strlen);
				strin = strtmp1 + tempchar + strtmp2;
			}
		}
		field.value = strin;
	}
}

function checkMinMonth(minMonth)
{
	if (parseInt(minMonth) <= 1)
	{

		alert("The minimum monthly contribution is 2 months. The maximum monthly contribution period is 24 months.");
		return false;
	}
	else
		return true;
}

// generate unique number (vRunner)
vRunner = "";
if (dtToday.getMonth()<10-1) vRunner += "0";
vRunner += dtToday.getMonth()+1;

if (dtToday.getDate()<10) vRunner += "0";
vRunner += dtToday.getDate() + "-";

if (dtToday.getHours()<10) vRunner += "0";
vRunner += dtToday.getHours();

if (dtToday.getMinutes()<10) vRunner += "0";
vRunner += dtToday.getMinutes();

iTmp = dtToday.getMilliseconds();
if (iTmp<100) vRunner += "0";
if (iTmp<10) vRunner += "0";
vRunner += iTmp;
