var aCountryCode;//array store each country code
var aCountryName;//array store each countru name
var aCountryCode = new Array("AU","BN","ID","MY","SG");
var aCountryDesc = new Array("Australia","Brunei Darussalam","Indonesia","Malaysia","Singapore");
var VALID_NUMBERS = "0123456789" ;
var VALID_PASSWORD = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var VALID_TEL_CHAR = "0123456789";
var dtCh= "-";
var aOrderCode = new Array("PP","PR","PC","PD","PTD","D","R","NP","C");
var aOrderDesc = new Array("Pending Payment","Payment Received","Processing","Process Delivery","Partial Delivery","Delivered","Received","No Payment","Cancelled");
var aOrderItemCode = new Array("","O","PD","D","R","NR","S");
var aOrderItemDesc = new Array("","Ordered","Pending Delivery","Delivered from Taiwan","Received by Operator","Not Received by Operator","Sent Customer");

function isAnyChecked(elemName){
	var elem = document.getElementsByName(elemName);
	var total = elem.length;
	for (var i=0; i < total ; i++){		
	   if(elem[i].checked) return true;
	}
	return false;
}

function setCheckedValue(radioObj, newValue) {
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}

	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}


function refreshheader(){
	
	if(document.myForm!=null && document.myForm.sortby!=null && document.myForm.sortby.value.length > 0 ){
		
		var sortcol = document.getElementById(document.myForm.sortby.value);
		
		if(sortcol!=null){
			var sortseq = document.myForm.sortseq.value;
			//alert(sortseq);
			if(sortseq=="asc"){
				sortcol.className = "sortasc";
			}else if(sortseq=="desc"){
				sortcol.className = "sortdsc";
			}else{
				sortcol.className = "sortable";
			}
		}
	}
}

function sortdata(obj){
	if(obj!=null){
		document.myForm.sortby.value = obj.id;
		var currentclass = obj.className;
		//alert("Current Class= " + currentclass);
		if(currentclass == "sortable" || currentclass=="sortasc"){
			obj.className = "sortdsc"
			document.myForm.sortseq.value = "desc";
		}else{
			obj.className = "sortasc"
			document.myForm.sortseq.value = "asc";
		}
		//alert("After click is = " + document.myForm.sortseq.value);
		document.myForm.submit();
	}
}
function hitSearch(evt,frmObj){	
	var isNav;
	if (parseInt(navigator.appVersion) >= 4) {
	  if (navigator.appName == "Netscape")
		isNav = true;
	}
	var mykey;
	if (isNav) 
		mykey = evt.which
	else
		mykey = window.event.keyCode
		
	switch (mykey) {	
		case 13 :	// return key
			frmObj.submit();
		break;
	}
}//submitLogin
function checknow(obj){
	if(obj!=null){
		if(obj.checked){
			check(obj.value);
		}else{
			uncheck(obj.value);
		}
	}
}
function removeChar(input) {
	var output = "";
	for (var i = 0; i < input.length; i++) {
		if ((input.charCodeAt(i) == 13) && (input.charCodeAt(i + 1) == 10)) {
			i++;
			output += " ";
		} else {
			output += input.charAt(i);
		}
	}
	return output;
	}
	String.prototype.fullTrim = function()
	{
	   return this.replace(/\s+/g," ").replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,"$1");
}


function getPageName(){
	var sPath = window.location.pathname;
	var iPos = sPath.indexOf(".php");
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1,iPos);
	return sPage;
}
			

/*function right(e) {
if (navigator.appName == 'Netscape' && 
(e.which == 3 || e.which == 2))
return false;
else if (navigator.appName == 'Microsoft Internet Explorer' && 
(event.button == 2 || event.button == 3)) {
//alert("Sorry, you do not have permission to right click.");
return false;
}
return true;
}
document.onmousedown=right;
document.onmouseup=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
if (document.layers) window.captureEvents(Event.MOUSEUP);
window.onmousedown=right;
window.onmouseup=right;
*/


function printOrderStatus(name,tabindex){
	document.writeln("<select NAME="+name+" size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' style='height:20px'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aOrderCode.length;i++){		
		document.writeln("<option value="+aOrderCode[i]+">"+aOrderDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}
function printOrderItemStatus(name,tabindex){
	document.writeln("<select NAME="+name+" size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' '>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aOrderItemCode.length;i++){		
		document.writeln("<option value="+aOrderItemCode[i]+">"+aOrderItemDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}

function printDeliveryMode(name,tabindex){
	var aCTCode = new Array("NRM","RGM","EM","AM");
	var aCTDesc = new Array("Normal Mail","Registered Mail","Express Mail","Air Mail");
	document.writeln("<select NAME="+name+" size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' style='height:20px'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}

function printCurrency(name,tabindex){
	var aCTCode = new Array("NT","RM","SGD");
	var aCTDesc = new Array("NT","RM","SGD");
	document.writeln("<select NAME="+name+" size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' style='height:20px'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}


function printCostStatus(name,tabindex){
	var aCTCode = new Array("O","PD","D","R","NR","IS");
	var aCTDesc = new Array("Ordered","Pending Delivery","Delivered","Received Item","Not Receive","Insufficient Quantity");
	document.writeln("<select NAME="+name+" size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' style='height:20px'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}

function printMRT (name,tabindex){
	//var aCTCode = new Array("DBG","SK","HB");
	//var aCTDesc = new Array("Dhoby Ghuat MRT Station","Seng Kang MRT Station","HarbourFront MRT Station");
	var aCTCode = new Array("SK");
	var aCTDesc = new Array("Seng Kang MRT Station");
	document.writeln("<select NAME="+name+" size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' style='height:20px'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}

function printPayMethod (name,tabindex,country){
	var aCTCode ; var aCTDesc;
	if(country == "SG" ||  country == "MY" ){
		aCTCode = new Array("CC","ITR","ATR","ADPS","BIC");
		aCTDesc = new Array("Credit Card / PayPal Account ","Internet Funds Transfer","ATM Funds Transfer","ATM Deposit","Bank-In at Counter (Cheque/Cash)");
	}else{
		aCTCode = new Array("CC");
		aCTDesc = new Array("Credit Card");
	}
	
	document.writeln("<select NAME='"+name+"' size=1 tabindex="+tabindex+" title='Preferred Payment Method' class='login' style='height:20px' onChange='javascript:choosePayEx(this);' >");
	
	//document.writeln("<select NAME='"+name+"' size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' style='height:20px'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value='"+aCTCode[i]+"'>"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}

function printBank (name,tabindex,country){
	if(country == "SG"){
		var aCTCode = new Array("POSB","UOB");
		var aCTDesc = new Array("DBS/POSB","UOB");
	}else{
		var aCTCode = new Array("MBNK");
		var aCTDesc = new Array("Maybank");
	}
	document.writeln("<select NAME="+name+" size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' style='height:20px'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}

function QtyOnSel(frmName,name,unitPrice,colName){
	if(document.forms[frmName]!=null){
		//Update the CC fee to 0 first
		var element = document.getElementById("CC_FEE");
		element.innerHTML = format_number(0,2); 
		updateGrandTotal("PriceTBL");
		var selQty = document.forms[frmName].elements[name].value;
		var total = selQty * (unitPrice);
		var tdObj=document.getElementById(colName);
		if(tdObj!=null) tdObj.innerHTML = format_number(total,2)+"";
		updateGrandTotal("PriceTBL");
		updateCCFee();
		saveqty(colName,selQty);
	}
}

function updateGrandTotal(id){
	var grandTotal = 0;
	var pdttotal = 0;
	var grandTotalObj;
	var tableObj=document.getElementById(id);
	var tds = tableObj.getElementsByTagName('td');
	
	for(var i=0;i<tds.length; i++){
		if(tds[i].title == "TotalCol"){
			var id = tds[i].id;
			if(IsNumeric(id)){
				pdttotal = pdttotal + (tds[i].innerHTML-0);
			}
			grandTotal = grandTotal + (tds[i].innerHTML-0);
		}
	}	
	var pdttotalobj = document.getElementById("pdttotal");
	if(pdttotalobj!=null){
		pdttotalobj.value = format_number(pdttotal,2);
	}
	
	var grandTotalObj=document.getElementById("GrantTotal");
	if(grandTotalObj !=null){
		grandTotalObj.innerHTML = format_number(grandTotal,2);
	}
	UseEzy();
	//updatePayable();
	return true;
}

function format_number(pnumber,decimals){
	if (isNaN(pnumber)) { return 0};
	if (pnumber=='') { return 0};
	
	var snum = new String(pnumber);
	var sec = snum.split('.');
	var whole = parseFloat(sec[0]);
	var result = '';
	
	if(sec.length > 1){
		var dec = new String(sec[1]);
		dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)));
		dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));
		var dot = dec.indexOf('.');
		if(dot == -1){
			dec += '.'; 
			dot = dec.indexOf('.');
		}
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	} else{
		var dot;
		var dec = new String(whole);
		dec += '.';
		dot = dec.indexOf('.');		
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	}	
	return result;
}

function IsNumeric(sText)

{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }



function printState(name, tabindex,countryObjName){
	var aCTCode = new Array("JB","KD","KT","MK","NS","PH","PK","PS","PP","SB","SRW","SLG","SG","TGN","KL");
	var aCTDesc = new Array("Johor","Kedah","Kelantan","Melaka","Negeri Sembilan","Pahang","Perak","Perlis","Pulau Pinang","Sabah","Sarawak","Selangor","Singapore","Terengganu","Kuala Lumpur");
	document.writeln("<select NAME="+name+" style='height:20px' size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' onChange=\"javascript:autoChooseCountry(this,'"+countryObjName+"');\">");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}

function autoPopulateState(element, objName){
	 if (element!=null){
		var selCountry = element.value;
		var obj = document.getElementById(objName);
		if(obj!=null) removeAllOpt(obj);
		if(obj!=null) appendOption(selCountry,obj);
	 }
}

function removeAllOpt(obj){
  var i;
  if(obj.length == null) return;
  for (i =(obj.length - 1); i>=0; i--) {
      obj.remove(i);
  }
}

function appendOption(country,obj)
{
  var aCTCode; var aCTDesc;
	if(country == "MY"){
		aCTCode = new Array("JB","KD","KT","MK","NS","PH","PK","PS","PP","SB","SRW","SLG","TGN","KL");
		aCTDesc = new Array("Johor","Kedah","Kelantan","Melaka","Negeri Sembilan","Pahang","Perak","Perlis","Pulau Pinang","Sabah","Sarawak","Selangor","Terengganu","Kuala Lumpur");
	}else if(country=="SG"){
		aCTCode = new Array("SG");
		aCTDesc = new Array("Singapore");
	}else if(country=="BN"){
		aCTCode = new Array("BL","BM","TE","TU");
		aCTDesc = new Array("Belait","Brunei-Muara","Temburong","Tutong");
	}else if(country=="AU"){
		aCTCode = new Array("CT","NSW","NT","QL","SA","TS","VI","WA");
		aCTDesc = new Array("Australian Capital Territory","New South Wales","Northern Territory","Queensland","South Australia","Tasmania","Victoria","Western Australia");
	}else if(country=="ID"){
		aCTCode = new Array("AC","BA","BB","BT","BE","GO","JA","JK","JR","JT","JI","KB","KS","KT","KI","LA","MA","MU","NB","NT","IJ","RI","SN","ST","SG","SW","SB","SL","SU","YO");
		aCTDesc = new Array("Aceh","Bali","Bangka-Belitung","Banten","Bengkulu","Gorontalo","Jambi","Jakarta Raya","Jawa Barat","Jawa Tengah","Jawa Timur","Kalimantan Barat","Kalimantan Selatan","Kalimantan Tengah","Kalimantan Timur","Lampung","Maluku","Maluku Utara","Nusa Tenggara Barat","Nusa Tenggara Timur","Papua","Riau","Sulawesi Selatan","Sulawesi Tengah","Sulawesi Tenggara","Sulawesi Utara","Sumatera Barat","Sumatera Selatan","Sumatera Utara","Yogyakarta");
	}else{	
		return;
	}
	//alert(aCTCode.length);
  for(var i=0;i<aCTCode.length;i++){
	 var elOptNew = document.createElement('option');
	  elOptNew.text = aCTDesc[i];
	  elOptNew.value = aCTCode[i];
	  //obj.add(elOptNew, i); // standards compliant; doesn't work in IE
	  try { 
		 obj.add(elOptNew, null); //for Fireworks
	  }catch(ex) {
		  obj.add(elOptNew, i); //for IE
	  }	 
  }//for
  
}



function printCountry (name, tabindex , selVal, stateObjName){
	var aCTCode = new Array("AU","BN","CHN","HK","ID","JPN","KOR","MY","SG","TWN");
	var aCTDesc = new Array("Australia","Brunei Darussalam","China","Hong Kong","Indonesia","Japan","Korea","Malaysia","Singapore","Taiwan");
	document.writeln("<select NAME="+name+" style='height:20px' size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login' onChange=\"javascript:autoPopulateState(this,'"+stateObjName+"');updateAddress(this);\">");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}

function printOnlyCountry (name, tabindex ){
	document.writeln("<select NAME="+name+" style='height:20px' size=1 tabindex="+tabindex+" title='TOP_SELECTION' class='login'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCountryCode.length;i++){		
		document.writeln("<option value="+aCountryCode[i]+">"+aCountryDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}



function printStateEx (name,tabindex,country){
	var aCTCode; var aCTDesc;
	if(country == "MY" || country == "EMY" || country == "WMY" ){
		var aCTCode = new Array("JB","KD","KT","MK","NS","PH","PK","PS","PP","SB","SRW","SLG","TGN","KL");
		var aCTDesc = new Array("Johor","Kedah","Kelantan","Melaka","Negeri Sembilan","Pahang","Perak","Perlis","Pulau Pinang","Sabah","Sarawak","Selangor","Terengganu","Kuala Lumpur");
	}else if(country=="SG"){
		var aCTCode = new Array("SG");
		var aCTDesc = new Array("Singapore");
	}else if(country=="BN"){
		var aCTCode = new Array("BL","BM","TE","TU");
		var aCTDesc = new Array("Belait","Brunei-Muara","Temburong","Tutong");
	}else if(country="AU"){
		var aCTCode = new Array("CT","NSW","NT","QL","SA","TS","VI","WA");
		var aCTDesc = new Array("Australian Capital Territory","New South Wales","Northern Territory","Queensland","South Australia","Tasmania","Victoria","Western Australia");
	}else if(country="ID"){
		var aCTCode = new Array("AC","BA","BB","BT","BE","GO","JA","JK","JR","JT","JI","KB","KS","KT","KI","LA","MA","MU","NB","NT","IJ","RI","SN","ST","SG","SW","SB","SL","SU","YO");
		var aCTDesc = new Array("Aceh","Bali","Bangka-Belitung","Banten","Bengkulu","Gorontalo","Jambi","Jakarta Raya","Jawa Barat","Jawa Tengah","Jawa Timur","Kalimantan Barat","Kalimantan Selatan","Kalimantan Tengah","Kalimantan Timur","Lampung","Maluku","Maluku Utara","Nusa Tenggara Barat","Nusa Tenggara Timur","Papua","Riau","Sulawesi Selatan","Sulawesi Tengah","Sulawesi Tenggara","Sulawesi Utara","Sumatera Barat","Sumatera Selatan","Sumatera Utara","Yogyakarta");
	}
	document.writeln("<select NAME="+name+" size=1 tabindex="+tabindex+" onChange='javascript:updateAddress(this);' class='login' style='height:20px'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}


function printCountryEx (name, tabindex , country){
	var aCTCode; var aCTDesc;
	if(country == "MY"){
		var aCTCode = new Array("MY");
		var aCTDesc = new Array("Malaysia");
	}else if(country == "SG"){
		var aCTCode = new Array("SG");
		var aCTDesc = new Array("Singapore");
	}else if(country == "ID"){
		var aCTCode = new Array("ID");
		var aCTDesc = new Array("Indonesia");
	}else if(country == "AU"){
		var aCTCode = new Array("AU");
		var aCTDesc = new Array("Australia");
	}else if(country == "BN"){
		var aCTCode = new Array("BN");
		var aCTDesc = new Array("Brunei Darussalam");
	}
	document.writeln("<select NAME="+name+" style='height:20px' size=1 tabindex="+tabindex+" onChange='javascript:updateAddress(this);' class='login'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){		
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}



function printCountryCode (name, tabindex){
	var aCTCode = new Array("60","61","62","65","81","82","86","673","852","886");
	var aCTDesc = new Array("60","61","62","65","81","82","86","673","852","886");
	document.writeln("<select NAME="+name+" size=1 style='height:20px' tabindex="+tabindex+" title='TOP_SELECTION' class='login'>");
	document.writeln("<option value=''></option>");
	for(var i=0;i<aCTCode.length;i++){
		document.writeln("<option value="+aCTCode[i]+">"+aCTDesc[i]+"</option>");
	}//for
	document.writeln("</select>");
}


function trim(strInput){	
	if (strInput==null) return "";
	var i=0,p = strInput.length-1;	
	
	while(strInput.charAt(i)==' ') i++;
	while(strInput.charAt(p)==' ') p--;
	
	if(i>p) strInput = '';
	strInput = strInput.substring(i,p+1);
	
	return strInput;
}



function isValidDOBEx(dob){
	if(!isDate(dob)){
		return "Invalid Date of Birth";
	}
	
	var this_year = new Date().getFullYear();
	var max_year_old = this_year - 55; //1985
	var min_year_old = this_year - 16; //1903
	var arr = dob.split("-");
	if(arr[2]!=null){ //check the year
		if(arr[2]< max_year_old ||  arr[2] > min_year_old){
			return "Invalid Age";
		}
	}else{
				alert("C");
		return "Invalid Date of Birth";
	}
	return "";
}



//Checkbox: Is to check whether any checkbox being checked
function isAnyChecked(elemName){
	var elem = document.getElementsByName(elemName);
	var total = elem.length;
	for (var i=0; i < total ; i++){		
	   if(elem[i].checked) return true;
	}
	return false;
}

function getObjValue(obj){
	if(obj==null){return "";}
	var sValue = "";
	
	if (obj){
		//alert(obj.name +" => " + obj.type);
		var sType = "";
		if(obj.length > 1 ){
			sType = obj[0].type;
		}else{
			sType = obj.type;
		}
		//alert(sType);
		switch(sType){
			case "file":
				return obj.value;
				break;
				
			case "select-one":
				sValue = obj.options[obj.selectedIndex].value;
				break;
				
			case "select-multiple":
				if (obj.selectedIndex != -1){
					sValue = "Filled";
				}
				break;
				
			case "password":
			case "text":
			case "textarea":
				sValue = trim(obj.value);
				obj.value = sValue;
				return sValue;
				break;
			
			case "radio":
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						return obj[j].value;
					}
				}
				break
				
			case "checkbox":
				var val = "";
				for (var j = 0; j < obj.length; j++){
					if(obj[j].checked){
						val = val + obj[j].value + "|";
					}
				}
				return val;
				break;
			
			case undefined:
				if(obj.value == undefined){
					return "";
				}
				return obj.value;
				break;

		}//Switch		
	}//if(obj)
	
	return sValue;
	
}


function bookmark()
{
	var url = window.location.href;
	var description = window.document.title;
	//alert(title);
	netscape="Netscape User's hit CTRL+D to add a bookmark to this site."
	if (navigator.appName=='Microsoft Internet Explorer')
	{
	window.external.AddFavorite(url, description);
	}
	else if (navigator.appName=='Netscape')
	{
		txt += "  (Ctrl+D)";
		document.write(txt);
	}
}


function checked_item(elementObj, sel_value){
	//alert("1 - "+ (elementObj==null));
	if (elementObj==null){return;}
	var a_subj;
	if(sel_value.search("|")>0){
		a_subj = sel_value.split("|");
		for (var j=0; j<a_subj.length ; j++){
			for (var i=0; i < elementObj.length; i++){
				if (elementObj[i].value == a_subj[j]){
					elementObj[i].checked = true;
				}
			}//for	
		}
	}else{
		elementObj.checked = sel_value;
	}		
}


function validPostal(frmObj, fieldName){
	var theField = frmObj.elements[fieldName];
	var pCode = trim(theField.value);
	var checkStr;
	if (pCode.length!=6){
		return "Invalid Postal Code";
	}
	for (k=0; k<pCode.length; k++) {
		checkStr = pCode.substring(k, k+1);					
		//have invalid char in the Postal Code
		if (VALID_NUMBERS.indexOf(checkStr) == "-1") {
			return "Sorry, you had entered an invalid Postal Code.";
		}//if
	}//for
	return "";
}
//Check Box (Multiple) = concatenate values being selected
function getSelValues(obj,splitter){
	var selValue = "";
	var iCheck = 0;
	if(obj!=null){
		for (var j = 0; j < obj.length; j++){
			if (obj[j].checked){
				iCheck ++;
				if (iCheck > 1 ) {selValue = selValue + splitter;}
				selValue = selValue + obj[j].value;
			}
		}
		
	}
	return selValue;
}


function selectRow(chkObj,defaultcss){
	var row = document.getElementById(chkObj.value);
	if(chkObj.checked){
		if(row!=null)
			//row.style.backgroundColor ='yellow';
			row.className ='pinkhbg';
	}else{
		if(row!=null)
			row.className = defaultcss;
	}
	
}


function disabledItem(elemName,bdisable){
	var elem = document.getElementsByName(elemName);
	var total = elem.length;
	for (var i=0; i < total ; i++){
	   elem[i].disabled = bdisable;
	}
}


function check(elemName){
	var elem = document.getElementsByName(elemName);
	var total = elem.length;
	for (var i=0; i < total ; i++){
	   elem[i].checked = true;
		selectRow(elem[i],elem[i].className);
	}
}
function uncheck(elemName)
{
	var elem = document.getElementsByName(elemName);
	var total = elem.length;
	for (var i=0; i < total ; i++){		
	   elem[i].checked = false;
	   if ((i+1) % 2) { even = ""; }else{ even = "odd";}
	   selectRow(elem[i],even);
	}
}

//Radio Button: Get Selected Value
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function getCheckedIndex(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return i;
		}
	}
	return "";
}

//Radio Button: Set Value
function setCheckedValue(radioObj, newValue) {
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}


//Combobox: Checked Item
function setCheckedItem(comboObj, newValue) {
	if(!comboObj)
		return;
	var n = comboObj.length;
	for(var i = 0; i < n; i++) {
		if(comboObj[i].value == newValue.toString()) {
			comboObj[i].checked = true;
		}
	}
}

function printSource(name,tabindex,oth_txtfield,frmName){
	var strOut = "";
	var aOccupCode = new Array("AMBS","GG","YH","BFRM","FB","FRI","EML","WOM","OTH");
	var aOccupDesc = new Array("Ambassador","Google Search","Yahoo Search","Beauty Forum","Facebook","Friends","Email","Word Of Mouth","Others");
	strOut = "<select style='z-index:0' style='height:20px' NAME="+name+" size=1 tabindex="+tabindex+" title=TOP_SELECTION onChange=\"javascript:Source_OnSel('"+frmName+"','"+name+"','"+oth_txtfield+"')\">";
	document.writeln(strOut);
	strOut = "<option value=''>--- Please select ---</option>";
	document.writeln(strOut);
	for(var i=0;i<aOccupCode.length;i++){		
		strOut = "<option value="+aOccupCode[i]+">"+aOccupDesc[i]+"</option>";		
		document.writeln(strOut);
	}//for
	document.writeln("</select>")
}
function Source_OnSel(frmName,name,txtfield){
	var srcObj = document.forms[frmName].elements[name];
	if(srcObj!=null){
		if(srcObj.value == "BFRM" || srcObj.value == "OTH"){
				document.forms[frmName].elements[txtfield].enabled= true;
		}else{
			document.forms[frmName].elements[txtfield].enabled= false;
		}
	}
}

function  validatePasswords(pass1,pass2){
	var msg = "";
	var checkStr = "";
	var passCode = 0;
	var aErr = new Array(2);	
	
	if (pass1.length>=6 && pass1.length<=14){				
		for (i=0; i<pass1.length; i++) {
			checkStr = pass1.substring(i, i+1);	
			if (VALID_PASSWORD.indexOf(checkStr) == "-1") {
				msg = "Password only allows characters a-z, A-Z and number 0-9";
				passCode = 1;
				break;
			}//if
		}//for
		
		//Password 1 is correct
		if(msg.length==0){ 
			if (pass2.length>0){
				if(pass1 != pass2){
					msg = "Sorry, your Confirmed password does not match with your Password.\nPlease re-enter.";
					passCode = 2;
				}//if
			}else{
				msg = "Please enter your confirmed password";
				passCode = 2;
			}	
		}//if				
	}else{
		msg = "Password must be between 6 to 14 characters";		
		passCode = 1;
	}//else		
	
	aErr[0] = passCode;	
	aErr[1] = msg;	
	return aErr;
}//validatePasswords

function  validateUsername(usernameobj,resultobj){
	var passCode=0; var msg="";
	var aErr = new Array(2);
	if(usernameobj==null){
		passCode = 1;
		msg = "Unexpected Error for Username.";
	}else{
		if(usernameobj.value.length < 4){
			passCode = 1;
			msg = "Username must be at least 4 characters";
		}else{ // > 4, must check is it valid result
			if(resultobj!=null){
				var res = resultobj.innerHTML;
				//alert(res.indexOf("Unavailable") + " " + res);
				if(res.indexOf("Unavailable") >= 0 ){
					passCode = 1;
					msg = "Invalid Username, please choose another username.";
				}
			}
		}
	}
	aErr[0] = passCode;	
	aErr[1] = msg;
	return aErr;
}


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(dateStr) {

var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
var matchArray = dateStr.match(datePat); // is the format ok?

if (matchArray == null) {
//alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
return false;
}

month = matchArray[1]; // p@rse date into variables
day = matchArray[3];
year = matchArray[5];

if (month < 1 || month > 12) { // check month range
//alert("Month must be between 1 and 12.");
return false;
}

if (day < 1 || day > 31) {
//alert("Day must be between 1 and 31.");
return false;
}

if ((month==4 || month==6 || month==9 || month==11) && day==31) {
//alert("Month "+month+" doesn't have 31 days!")
return false;
}

if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day > 29 || (day==29 && !isleap)) {
//alert("February " + year + " doesn't have " + day + " days!");
return false;
}
}
return true; // date is valid
}


// Date Validation Javascript
// copyright 30th October 2004, 31st December 2009 by Stephen Chapman
// http://javascript.about.com

// You have permission to copy and use this javascript provided that
// the content of the script is not changed in any way.

function valDateFmt(datefmt) {myOption = -1;
for (i=0; i<datefmt.length; i++) {if (datefmt[i].checked) {myOption = i;}}
if (myOption == -1) {alert("You must select a date format");return ' ';}
return datefmt[myOption].value;}
function valDateRng(daterng) {myOption = -1;
for (i=0; i<daterng.length; i++) {if (daterng[i].checked) {myOption = i;}}
if (myOption == -1) {alert("You must select a date range");return ' ';}
return daterng[myOption].value;}
function stripBlanks(fld) {var result = "";var c=0;for (i=0; i<fld.length; i++) {
if (fld.charAt(i) != " " || c > 0) {result += fld.charAt(i);
if (fld.charAt(i) != " ") c = result.length;}}return result.substr(0,c);}
var numb = '0123456789';
function isValid(parm,val) {if (parm == "") return true;
for (i=0; i<parm.length; i++) {if (val.indexOf(parm.charAt(i),0) == -1)
return false;}return true;}

function isNumber(parm) {return isValid(parm,numb);}
var mth = new Array(' ','january','february','march','april','may','june','july','august','september','october','november','december');
var day = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

/*The complete script below not only handles both numeric and alpha months (including both upper and lower case and three letter month abbreviations) but you pass a second parameter to the validation function 
to tell the routine which of the three formats that the date is supposed to be in (u for MDY, j for YMD, and w for DMY). 
There is also a third parameter where you pass a to indicate that all dates are valid, p to indicate that future dates are invalid, and f to indicate that past dates are invalid. */
function validateDate(fld,fmt,rng) {
var dd, mm, yy;var today = new Date;var t = new Date;fld = stripBlanks(fld);
if (fld == '') return false;var d1 = fld.split('\/');
if (d1.length != 3) d1 = fld.split('-');
if (d1.length != 3) return false;
if (fmt == 'u' || fmt == 'U') {
  dd = d1[1]; mm = d1[0]; yy = d1[2];}
else if (fmt == 'j' || fmt == 'J') {
  dd = d1[2]; mm = d1[1]; yy = d1[0];}
else if (fmt == 'w' || fmt == 'W'){
  dd = d1[0]; mm = d1[1]; yy = d1[2];}
else return false;
var n = dd.lastIndexOf('st');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf('nd');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf('rd');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf('th');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf(',');
if (n > -1) dd = dd.substr(0,n);
n = mm.lastIndexOf(',');
if (n > -1) mm = mm.substr(0,n);
if (!isNumber(dd)) return false;
if (!isNumber(yy)) return false;
if (!isNumber(mm)) {
  var nn = mm.toLowerCase();
  for (var i=1; i < 13; i++) {
    if (nn == mth[i] ||
        nn == mth[i].substr(0,3)) {mm = i; i = 13;}
  }
}
if (!isNumber(mm)) return false;
dd = parseFloat(dd); mm = parseFloat(mm); yy = parseFloat(yy);
if (yy < 100) yy += 2000;
if (yy < 1582 || yy > 4881) return false;
if (mm == 2 && (yy%400 == 0 || (yy%4 == 0 && yy%100 != 0))) day[1]=29;else day[1]=28;
if (mm < 1 || mm > 12) return false;
if (dd < 1 || dd > day[mm-1]) return false;
t.setDate(dd); t.setMonth(mm-1); t.setFullYear(yy);
if (rng == 'p' || rng == 'P') {
if (t > today) return false;
}
else if (rng == 'f' || rng == 'F') {
if (t < today) return false;
}
else if (rng != 'a' && rng != 'A') return false;
return true;
}


//mm/dd/yyyy
function isValidDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strYear=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strDay=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
	}
return true
}


//mm/dd/yyyy (dd/mm/yyyy)
function isValidDate_DDMMYYYY(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)	
	/*alert("Day = "+ strDay);
	alert("Month = "+ strMonth);
	alert("Year = "+ strYear);		*/
	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(year<1800){
		return false
	}
return true
}


function isValidNRIC(inputstr) {
	var NRIC = '';
	var strWeight = '2765432';
	var strReference = 'ABCDEFGHIZJ';
	var intTotal = 0;
	
	if (inputstr == null || inputstr == '')
		return false;
	
	if(inputstr.length != 9)
		return false;
	
	NRIC = inputstr.toUpperCase();
	switch (NRIC.length) {
	case 8 :
		return false;
	case 9:
		if (NRIC.substr(0,1) != 'S')
			return false;
		else
			NRIC = NRIC.substr(1,8);
		break;
	default:
		return false;
	}
	if (isNaN(NRIC.substr(0,7))) return false;
		
	for ( var i = 0; i < 7; i++)
		intTotal = intTotal + NRIC.substr(i,1) * strWeight.substr(i,1);
	
	if (NRIC.substr(7,1) != strReference.substr(11 - (intTotal % 11) -1, 1))
		return false;
	else
		return true;
}



function isValidEmail(strAccount){
	var i = 0;
	var nCount = 0;
	var nDotCount = 0;
	var cChar;
	for (i=0 ; i< strAccount.length ; i++){
		cChar = strAccount.charAt(i);		
		if (cChar == '@'){
			nCount ++;
		}else if (nDotCount == 0 && cChar == '.'){
			nCount ++;
			nDotCount = 1;
		}else if (cChar==' ' || cChar=='[' || cChar==']' || cChar=='{' || cChar=='}' || cChar==':' || cChar==';' || cChar=='<' || cChar=='>' || cChar=='?' || cChar=='/' || cChar=='\\' || cChar==','){
			return false;
		}
	}
	if(nCount >=2) return true;	
	return false;
	
}//isValidEmail

function validContactNo(tel){
	var errMsg = validHousePhone(tel);
	if (errMsg==""){return true;}
	errMsg = validMobile(tel);
	if (errMsg!=""){
		return false;
	}else{
		return true;
	}
}//validPhone

function validMobile(tel){
	var firstDig = tel.substring(0,1);
	if (firstDig!="9" && firstDig!="8") {return "Invalid mobile number"};
	if (tel.length != 8 ) {return "Invalid mobile number"};
	for (var r=0; r<tel.length; r++) {
		checkStr = tel.substring(r, r+1);
		if (VALID_TEL_CHAR.indexOf(checkStr) == "-1"){
			return "Sorry, you had entered an invalid mobile No.";
		}
	}//for
	return "";
}

function validHousePhone(tel){
	var firstDig = tel.substring(0,1);
	if (firstDig!="6") {return "Invalid house phone number"};
	if (tel.length != 8) {return "Invalid house phone number"};
	for (var r=0; r<tel.length; r++) {
		checkStr = tel.substring(r, r+1);
		if (VALID_TEL_CHAR.indexOf(checkStr) == "-1"){
			return "Sorry, you had entered an invalid Telephone No.";
		}
	}//for
	return "";
}


/***********************************************
* Required field(s) validation v1.10- By NavSurf
* Visit Nav Surf at http://navsurf.com
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/
function formCheck(formobj, fieldRequired, fieldDescription){
	
	// dialog message
	var alertMsg = "Please complete the following fields:\n";
	var focusObj=null;
	var l_Msg = alertMsg.length;
	
	for (var i = 0; i < fieldRequired.length; i++){
		//alert( i + ")" + fieldRequired[i] + " " + (formobj==null));
		var obj = formobj.elements[fieldRequired[i]];
		if(obj!=null){
			if (obj){
				switch(obj.type){
				case "select-one":
					if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].value == ""){
						alertMsg += " - " + fieldDescription[i] + "\n";
						if (focusObj==null){focusObj=obj;}
					}
					break;
				case "select-multiple":
					if (obj.selectedIndex == -1){
						alertMsg += " - " + fieldDescription[i] + "\n";
					}
					break;
				case "password":
				case "text":
				case "textarea":
					if (obj.value == "" || obj.value == null){
						alertMsg += " - " + fieldDescription[i] + "\n";
						if (focusObj==null){focusObj=obj;}
					}else{
						if(trim(obj.value).length <=0) {
							alertMsg += " - " + fieldDescription[i] + "\n";
							if (focusObj==null){focusObj=obj;}
						}
						obj.value = trim(obj.value);
					}
					break;
				default:
				}
				if (obj.type == undefined){
					var blnchecked = false;
					for (var j = 0; j < obj.length; j++){
						if (obj[j].checked){
							blnchecked = true;
						}
					}
					if (!blnchecked){
						alertMsg += " - " + fieldDescription[i] + "\n";
					}
				}
			}
		}
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		if(focusObj!=null){focusObj.focus();}
		return false;
	}
}//formCheck


function isValidDOB(day,month,year){
	var msg = "";
	var errExist = false;
	var aErr = new Array(2);
	var code = 0;	
	
	//Only Birth month is compulsory
	if(month.length<=0){
		msg = "Please select the month you were born";
		code = 7;
	}
	
	aErr[0]= code;
	aErr[1]= msg;
	
	return aErr;
}//isValidIndv





function clearForm(frmObj){
var aElements = frmObj.elements;
for(i=0; i<aElements.length; i++)
{
	var obj = aElements[i];
	if(obj==null){break;}
	if (obj){
		var sType = "";
		if(obj.length > 1 ){
			sType = obj[0].type;
		}else{
			sType = obj.type;
		}
		
		//alert(sType +  " = " + obj.name);
		
		switch(sType){
			case "file":
				obj.value = "";
				break;
				
			case "select-one": //options
				obj.value = "";
				break;
				
			case "select-multiple":
				uncheck(obj.name);
				break;
				
			case "password":
			case "text":
			case "textarea":
				obj.value = "";
				break;
			
			case "radio":
				uncheck(obj.name);
				break
				
			case "checkbox":
				uncheck(obj.name);
				break;
			
			case undefined:
				obj.value = "";
				if(obj.tagName == "SELECT"){
					obj.selectedIndex = 0;
				}
				break;
				
			case "hidden":
			break;

		}//Switch		
	}//if(obj)
}
}
