//var TotalErrorMessage = "";
//var WaitFlag = true;
//var Flag = false;
//var submitForm = "yes";
var HUBRIS_LogonLink = "https://www.ebank.hsbc.com.hk/logon.htm"
//var validateFlag = 0;

var HUBRIS_oldstring;	//variables used for HUBRIS_checker()
var HUBRIS_hsbcCookieDomain = ".hsbc.com.hk";
var HUBRIS_hsbcCookiePath = "/";


function HUBRIS_hk_amh_p2g_ebank_setPublicCookie(name, value, path, domain, maxAge, isSecure) {
	var expireDate = new Date ();
	var offset = maxAge / 1;
	var expiryString = "";

	if (offset > 0) {
		expireDate.setSeconds(expireDate.getSeconds()+offset);
		expiryString = ";expires=" + expireDate.toGMTString();
	} else if (offset == 0) {
		expireDate.setYear(expireDate.getYear()-1);
		expiryString = ";expires=" + expireDate.toGMTString();
	} else {
		expiryString = ";";
	}

	document.cookie = name + "=" +escape( value ) + expiryString
					+ ( ( path ) ? ";path=" + path : "" )
					+ ( ( domain ) ? ";domain=" + domain : "" )
					+ ( ( isSecure ) ? ";secure" : "" );
}

function HUBRIS_removeHSBCCookie(name) {
	var allcookies = document.cookie;
	var pos = allcookies.indexOf(name + '=');
	if (pos != -1) {
		var lasthour = new Date();
		lasthour.setHours(lasthour.getHours()-1);
		cookiestring = name + '=' + escape('') + ';EXPIRES=' + lasthour.toUTCString();
		if (HUBRIS_hsbcCookiePath != null) {
			cookiestring = cookiestring + ';PATH=' + HUBRIS_hsbcCookiePath;
		}
		if (HUBRIS_hsbcCookieDomain != null) {
			cookiestring = cookiestring + ';DOMAIN=' + HUBRIS_hsbcCookieDomain;
		}
		document.cookie = cookiestring;
	}
}


function HUBRIS_format_no(str,noOfDec)
{
   var numStr = new String(str);
   var sign = "";
   //var result = "";


if (numStr.length==0){
	return numStr;
}else{


   // Remove sign before formatting
   if(numStr.substr(0,1)=="+" || numStr.substr(0,1)=="-")
   {
      sign = numStr.substr(0,1);
      numStr = numStr.substr(1);
   }

   var lenOfHead = numStr.indexOf(".",0);
   var tail;

   if(lenOfHead==0)
   {
      numStr = "0" + numStr;
      lenOfHead = 1;
   }

   // Format decimal place
   if(lenOfHead==-1)
   {
      tail = ".";
      for(var i=0; i<noOfDec; i++)
         tail += "0";
      lenOfHead = numStr.length;
   }
   else
      tail = numStr.substr(lenOfHead,noOfDec+1)


   while(tail.length-1<noOfDec)
      tail += "0";

   var result = numStr.substr(0,lenOfHead);

   if(noOfDec!=0){
   	//alert (result+tail);
      return(result + tail);}
   else
      return(result);

}

}


function HUBRIS_checker(element){

    var newstring="";
    var counter;
    var counter2;
    var counter3;
    var iz;
    var i;
    var indexer = new Array(2);

    iz = 0;
    i = 0;
    counter = 0;
    counter2 = 0;
    counter3 = 0;
    newstring = element.value;

    while (iz < newstring.length){
    	if (iz>=1){
    	    if (newstring.substring(iz,iz+1)== " " && newstring.substring(iz-1,iz) == " "){
    	    	element.value = HUBRIS_oldstring;
    	    	return false;
    	    }
    	}
    	if (newstring.substring(iz,iz+1) == " " && (!(i%35 == 0) || i == 0)){
    	    counter2 = i % 35 + 1;
	}
	if (newstring.substring(iz,iz+1) == "\n"){
	    counter = counter + 1; i = 0; counter2 = 0;
	}
	else {
	    i = i + 1;
	}
    	if (i > 35) {
	    counter = counter + 1;
	    indexer[counter3]=iz+1;
	    counter3 = counter3 + 1;
	    if(counter2 == 0) {
	   	i = i - 35;
	    }
	    else {
	    	i = i - counter2;
	    	counter2 = 0;
	    }
	}
	iz = iz + 1;
    }
    if (newstring.charAt(indexer[0]) == '\n') {
	counter = counter - 1;
    }
    if (newstring.charAt(indexer[1]) == '\n') {
	counter = counter - 1;
    }
    if (counter>=3){
    	element.value = HUBRIS_oldstring;
    	return false;
    }
    else{
        HUBRIS_oldstring = element.value;
        return true;
    }
}

function HUBRIS_toTrb(submitForm){
		var str = document.forms[0].AccountPullDown.options[document.forms[0].AccountPullDown.selectedIndex].value;
		var acctType = str.substring(0, 23);
		submitForm.AcctType.value = acctType;
		submitForm.AcctIndex.value = str.substring(23, str.length);
		submitForm.action = HUBRIS_dtlToTrb(acctType);
		submitForm.submit();
	}

function HUBRIS_dtlToTrb(acctNickname){

	var prodType = HUBRIS_getProductType(acctNickname);

	if (prodType.indexOf("MC") != -1)
		return "ITHIDE_AcMcyTrb";
	else if ( (prodType.indexOf("BV") != -1) || (prodType.indexOf("PV") != -1) || (prodType.indexOf("AV") != -1) )
		return "ITHIDE_AcIpsTrb";
	else return "ITHIDE_AcTrb";
}

function HUBRIS_getProductType(acctNickname){
	var startPos = 18;
	if (acctNickname.length > 0 && acctNickname.length>startPos ){
		var prodType = acctNickname.substring(startPos, startPos + 2);
	}
	return prodType;
}

function HUBRIS_getProductTypeFromFieldValue(acctNickname){
	var startPos = acctNickname.indexOf("~~") + 2;
	if (acctNickname.length > 0 && acctNickname.length>startPos ){
		var prodType = acctNickname.substring(startPos, startPos + 2);
	}
	return prodType;
}

function HUBRIS_chkWholeFigure(x, fieldDesc, obj, totalErrorMessage, flag)
{
	if(HUBRIS_chknum(x))
		return(true);
	else
		return(HUBRIS_setErrorMessage(HUBRIS_Error_105.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

}

function HUBRIS_chkSameValue(field1, field2, fieldDesc, totalErrorMessage, flag){
	if ((field1.selectedIndex == field2.selectedIndex) && field1.selectedIndex!=0 && field2.selectIndex!=0 ){
		totalErrorMessage.value += HUBRIS_Error_101.replace(/~~1/, HUBRIS_getDesc(fieldDesc)) + "\n";
		HUBRIS_chkFocus(field1, flag);
	}
}
function HUBRIS_chkEitherChecked(field1, field2, fieldDesc1, fieldDesc2, totalErrorMessage, flag){
	if (!(field1.checked || field2.checked)) {
		ErrorMsg = HUBRIS_Error_102.replace(/~~1/, HUBRIS_getDesc(fieldDesc1));
		totalErrorMessage.value += ErrorMsg.replace(/~~2/, HUBRIS_getDesc(fieldDesc2)) + "\n";
		HUBRIS_chkFocus(field1, flag);
	}
}

function HUBRIS_setErrorMsg(field1, desc, totalErrorMessage, flag){
		totalErrorMessage.value += desc + "\n";
		HUBRIS_chkFocus(field1, flag);
}

function HUBRIS_chkBlank(field1, fieldDesc1, totalErrorMessage, flag){
	if (field1.value.length >0 ) {
		totalErrorMessage.value += HUBRIS_Error_103.replace(/~~1/, HUBRIS_getDesc(fieldDesc1)) + "\n";
		HUBRIS_chkFocus(field1, flag);
	}
}

function HUBRIS_chkEitherFilled(field1, field2, fieldDesc1, fieldDesc2, totalErrorMessage, flag){
	if (field1.value.length == 0 && field2.value.length == 0) {
		ErrorMsg = HUBRIS_Error_104.replace(/~~1/, HUBRIS_getDesc(fieldDesc1));
		totalErrorMessage.value += ErrorMsg.replace(/~~2/, HUBRIS_getDesc(fieldDesc2)) + "\n";
		HUBRIS_chkFocus(field1, flag);
		return false;
	}else
		return true;
}

function HUBRIS_chkMessageBody(x,fieldDesc,obj, totalErrorMessage, flag){
	for(i=0;i<x.length;i++){
		if(x.charCodeAt(i) == 123 || x.charCodeAt(i) == 124 || x.charCodeAt(i) == 125){
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
		}else if(x.charCodeAt(i)<32 || x.charCodeAt(i)>126){
				if(x.charCodeAt(i) != 13 && x.charCodeAt(i) != 10){
					return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
				}
		}

	}
	return true;
}

function HUBRIS_chkMessageBodyChi(x,fieldDesc,obj, totalErrorMessage, flag){
	for(i=0;i<x.length;i++){
		if(x.charCodeAt(i) == 123 || x.charCodeAt(i) == 124 || x.charCodeAt(i) == 125){
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
		}
	}
	return true;
}

function HUBRIS_chkRemarks(x,fieldDesc,obj, totalErrorMessage, flag){
	for(i=0;i<x.length;i++){
		if(x.charCodeAt(i)<32 || x.charCodeAt(i)>126)
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	}
	return true;
}

function HUBRIS_isCookieSupported() {
	document.cookie = "cookie=enable";
	if (document.cookie.length > 0)
		return true;
	return false;
}

function HUBRIS_isBrowserSupported()
{
	if((navigator.appName.indexOf("Netscape")>-1)) //Netscape must greater than version 4
	{
		browserVersion = navigator.appVersion;
		End = browserVersion.indexOf("[");

		if(End > -1)
			VersionNo = browserVersion.substring(0,End);
		else
			VersionNo = browserVersion.substring(0,browserVersion.indexOf("("));
		if (parseFloat(VersionNo) >= 4.07)

			return true;
	}
	if((navigator.appName.indexOf("Microsoft")>-1)) //IE must greater than verison 5
	{
		browserName = navigator.appVersion;
		VersionPos=browserName.lastIndexOf("MSIE") + 5;
		VersionNo = browserName.substring(VersionPos,VersionPos+1);
		if(parseFloat(VersionNo)>=5){
			return true;
		}
	}
	return false;
}

function HUBRIS_initform()
{
	if (HUBRIS_isBrowserSupported() && HUBRIS_isCookieSupported())
		return true;
	else
		return false;
}

function HUBRIS_chkHSBCAcct(x,fieldDesc,obj, totalErrorMessage, flag){
	if(HUBRIS_chkAccount(x,fieldDesc,obj, totalErrorMessage, flag)){
		var tmpAcct="";
		for(i=0;i<x.length;i++){
			if(x.charAt(i)!="-")
				tmpAcct+=x.charAt(i);
		}
		if(tmpAcct.length!=10&&tmpAcct.length!=12&&tmpAcct.length!=16)
			return(HUBRIS_setErrorMessage(HUBRIS_Error_21.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	}else
		return(false);
}

function HUBRIS_chkCIFAcct(x,fieldDesc,obj, totalErrorMessage, flag){
	if(HUBRIS_chkAccount(x,fieldDesc,obj, totalErrorMessage, flag)){
		var tmpAcct="";
		for(i=0;i<x.length;i++){
			if(x.charAt(i)!="-")
				tmpAcct+=x.charAt(i);
		}
		if(tmpAcct.length!=12)
			return(HUBRIS_setErrorMessage(HUBRIS_Error_21.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	}else
		return(false);
}

function HUBRIS_setSubmitFormAllowed(submitForm){
	submitForm.value = "yes";
}

function HUBRIS_checkIfSubmitted(submitForm){
	if(submitForm.value=="yes"){
		submitForm.value="no";
		return true;
	}else{
		return false;
	}
}

function HUBRIS_checkIfSubmittedHelp(submitForm){
	if(submitForm.value=="yes"){
		return true;
	}else{
		return false;
	}
}

function HUBRIS_chkEqual(x,y,fieldDescX,fieldDescY,objX,objY, totalErrorMessage, flag){
	if(x!=y){
		ErrorMessage = HUBRIS_Error_29.replace(/~~1/,HUBRIS_getDesc(fieldDescX));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,HUBRIS_getDesc(fieldDescY)),objX, totalErrorMessage, flag));
	}
	return(true);
}

function HUBRIS_chkNotEqual(x,y,fieldDescX,fieldDescY,objX,objY, totalErrorMessage, flag){
	if(x==y){
		ErrorMessage = HUBRIS_Error_25.replace(/~~1/,HUBRIS_getDesc(fieldDescX));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,HUBRIS_getDesc(fieldDescY)),objX, totalErrorMessage, flag));
	}
	return(true);
}

function HUBRIS_chkPassword(x,fieldDesc,obj, totalErrorMessage, flag){
	for(i=0;i<x.length;i++)
		if(x.charCodeAt(i)==32)
			return(HUBRIS_setErrorMessage(HUBRIS_Error_26.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	if(x.length<8){
		ErrorMessage=HUBRIS_Error_27.replace(/~~1/,HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,8),obj, totalErrorMessage, flag));}
	if(!HUBRIS_chkAlphaNumeric(x,fieldDesc,obj, totalErrorMessage, flag))
	    return(false);
	var temp = new Array(3);
	for(i=0;i<x.length-2;i++)
	{
		temp[1] = x.charCodeAt(i);
		temp[2] = x.charCodeAt(i+1);
		temp[3] = x.charCodeAt(i+2);
		if(temp[1]==temp[2] && temp[2]==temp[3])
			return(HUBRIS_setErrorMessage(HUBRIS_Error_28.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	}
	return(true);
}

function HUBRIS_chkDOSI(x,fieldDesc,obj, totalErrorMessage, flag){
	if(x.length<6){
		ErrorMessage=HUBRIS_Error_27.replace(/~~1/,HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,6),obj, totalErrorMessage, flag));}
	if(!HUBRIS_chkAlphaNumericSpecalCharsForIDV(x,fieldDesc,obj, totalErrorMessage, flag, true)) {
		ErrorMessage=HUBRIS_Error_536.replace(/~~1/,HUBRIS_getDesc(fieldDesc));
		return (HUBRIS_setErrorMessage(ErrorMessage.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	}
	return(true);
}

function HUBRIS_chkIDVUserID(x,fieldDesc,obj, totalErrorMessage, flag){
	if(x.length<5){
		ErrorMessage=HUBRIS_Error_27.replace(/~~1/,HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,5),obj, totalErrorMessage, flag));}
	if(!HUBRIS_chkAlphaNumericSpecalCharsForIDV(x,fieldDesc,obj, totalErrorMessage, flag, false))
	    return (HUBRIS_setErrorMessage(HUBRIS_Error_535.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	return(true);
}

function HUBRIS_requireOrderPrice(List) // argument: pulldownlist, corresponding textbox
{
	Value = List.options[List.selectedIndex].value;

	Start = Value.lastIndexOf("~~") + 2;
	Temp = Value.substring(Start, Value.length);
	if(Temp == "At-Auction Order" || Temp == "Market Order")
		return(false);
	return(true);
}

function HUBRIS_blurOrderPriceAllOrNothing(List, Textbox, Radio1, Radio2) // argument: pulldownlist, corresponding textbox
{
	Value = List.options[List.selectedIndex].value;

	Start = Value.lastIndexOf("~~") + 2;
	Temp = Value.substring(Start, Value.length);
	if(Temp == "At-Auction Order")
	{
		Textbox.blur();
		Textbox.value = "N/A";
		Radio1.checked = true;
		Radio2.checked = false;
	}
	else if (Temp == "At-Auction Limit Order")
	{
		if(Textbox.value == "N/A")
			Textbox.value = "";
		Radio1.checked = true;
		Radio2.checked = false;
	}
	else if(Temp == "Market Order")
	{
		Textbox.blur();
		Textbox.value = "N/A";
	}
	else
	    if (Textbox.value == "N/A")
		Textbox.value = "";
}

function HUBRIS_blurPayeeAcctL(List, Textbox) // argument: pulldownlist, corresponding textbox
{
	Value = List.options[List.selectedIndex].value;

	Start = Value.lastIndexOf("~~") - 1;
	Temp = Value.substring(Start, Start+1);

	if(Temp == "N")
	{
		Textbox.blur();
		Textbox.value = "";
	}
}

function HUBRIS_blurPayeeAcctF(Flag, Textbox) // argument: String, corresponding textbox
{
	if(Flag.value == "N")
	{
		Textbox.blur();
		Textbox.value = "";
	}
}

function HUBRIS_chkChanged(x, fieldDesc,Compulsory, obj, totalErrorMessage, flag)
{
	var Err = 0;
	if(obj.type=="select-one")
	{
		for(i = 0; i < obj.length; i++)
			if(obj[i].defaultSelected)
				if(obj[i].value == x)
					Err = 1;
	}
	else if(obj.type == "text" || obj.type == "textarea")
	{
		if(obj.defaultValue == x)
			Err = 1;
	}
	else
	{
		var defaultIndex;
		for(i =0; i< obj.length; i++){
			if(obj[i].defaultChecked){
				defaultIndex = i;
				break;
			}
		}
		if(isNaN(obj.length))	//for only one checkbox
		{
			if(obj.defaultChecked == obj.checked)
				Err = 1;
		}
		else if(obj[defaultIndex].type=="checkbox")	//for more than one checkbox
		{
			for(i=0; i<obj.length;i++){
				if(obj[i].defaultChecked != obj[i].checked)
					return(true);}
			Err = 1;
			obj=obj[0];
		}
		else	//for radio button
			if(obj[defaultIndex].value == x)
			{
				obj = obj[defaultIndex];
				Err = 1;
			}
	}
	if(Err == 1){
		if(Compulsory)
			return(HUBRIS_setErrorMessage(HUBRIS_Error_24.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
		}
	return(true);

}

function HUBRIS_processFormResultWithoutAction(form, totalErrorMessage, submitForm, flag)
{
	if(totalErrorMessage.value.length > 0){
		form.action="";
		HUBRIS_alertErrorMessage(totalErrorMessage, submitForm, flag);
		return -1;
	}
	else
	{
		return 1;
	}
}

function HUBRIS_processFormResult(form, chgDateName, totalErrorMessage, waitFlag, validateFlag, submitForm, flag)
{
	if(totalErrorMessage.value.length > 0){
		form.action="";
		HUBRIS_alertErrorMessage(totalErrorMessage, submitForm, flag);
	}
	else
	{
		if (waitFlag.value == true)
			HUBRIS_popupWait();
		if ( validateFlag.value == 1 )
		{
			//chgdate(form);
			eval(chgDateName);
		}
		form.submit();
	}
}

function HUBRIS_alertErrorMessage(totalErrorMessage, submitForm, flag)
{
	if(totalErrorMessage.value.length > 0)
	{
		Temp = totalErrorMessage.value;
		totalErrorMessage.value = "";
		flag.value = false;
		submitForm.value = "yes";
		alert(HUBRIS_errHead+Temp+HUBRIS_errFoot);
	}
}

function HUBRIS_chkFocus(x, flag)
{
	if(!flag.value)
	{
		x.focus();
		flag.value = true;
	}
}

function HUBRIS_setErrorMessage(message, obj, totalErrorMessage, flag)
{
	totalErrorMessage.value+=message + "\n";

	Value = document.URL;
	Start = Value.lastIndexOf("/") + 1;
	Location = Value.substring(Start, Value.length);

	if (Location.indexOf("LnPnInstIn")<0&&Location.indexOf("LnTaxIn")<0&&Location.indexOf("PfCusPersonalInfoAddrIn")<0&&
		obj.name!="OtherAccount"&&obj.name!="BillType"&&obj.name!="OrderPrice"&&
		obj.name!="Instr_PrincipalAmt"&&obj.name!="Instr_DeductAmt"&&obj.name!="FundCode"&&
		obj.name!="OrderPrice"&&obj.name!="OtherEducationLevel"&&obj.name!="OtherResidence"&&
		obj.name!="MonthlyPayPercent")
	HUBRIS_chkFocus(obj, flag);
	return(false);
}

function HUBRIS_chkTextArea(x, col, row,fieldDesc, obj, totalErrorMessage, flag)
{
	ErrorMessage = HUBRIS_Error_42.replace(/~~1/, HUBRIS_getDesc(fieldDesc));
	ErrorMessage = ErrorMessage.replace(/~~2/, (col*row) + HUBRIS_CharactersMsg.substring(0,HUBRIS_CharactersMsg.length-1));
	ErrorMessage = ErrorMessage.replace(/~~3./, (row) + HUBRIS_Rowsmsg);
	
	if (x.indexOf("\n") != -1 && x.indexOf("\r") == -1)
		x = x.replace(/\n/g, "\r\n");
	
	var temp = 0;
	var line = new Array();
	var y =0;
	var token="";
	var end=false;
	var offset = 0;
	for(count=0; count<(row+1); count++){
		var breakexit=false;
		var CR_NL_found=(x.indexOf("\r", 0) != -1 && x.indexOf("\n", 0) != -1);
		while(x.charCodeAt(0)==13 && y<(row)){
			if(breakexit || y==0){
				line[y]="";
				y++;
			}
			if (CR_NL_found){
				x=x.substring(2,x.length);
			}else{
				x=x.substring(1,x.length);
			}
			breakexit=true;
		}
		temp = x.indexOf("\r", 0);
		if(temp!=-1){
			offset = temp-1;
			token=x.substr(0,offset+1);
		}else{
			token=x.substr(0,x.length);
			end=true;
		}
		while(token.length>col && y<=row){
			line[y]=token.substr(0,col);
			var i = col-1;
			var done=false;
			while(!done){
				if(line[y].charCodeAt(col-1)==45||line[y].charCodeAt(col-1)==32){
					token=token.substring(col,token.length);
					y++;
					done=true;
				}
				else if(line[y].charCodeAt(i)==32){
					if(token.charCodeAt(col)!=32){
						tmp=token.lastIndexOf(" ",col-1);
						line[y]=token.substring(0,tmp);
						token=token.substring(tmp+1,token.length);
					}else
						token=token.substring(col,token.length);
					y++;
					done=true;
				}
				else if(i==0 && token.charCodeAt(0)!=32)
				{
					token=token.substring(col,token.length);
					y++;
					done=true;
				}
				i--;
			}
		}
		if(token.length<=col){
			line[y]=token.substr(0,token.length);
			y++;
		}
		if(y>row)
		{
			var count=0;
			while(count < x.length)
			{
				if(x.charCodeAt(count) != 10 && x.charCodeAt(count) != 13)
					return(HUBRIS_setErrorMessage(ErrorMessage, obj, totalErrorMessage, flag));
				count++;
			}
			return true;
		}
		if(end)
			return true;
		else{
			start=offset+1;
			x=x.substring(start,x.length);
		}
	}
	return true;
}

function HUBRIS_chkAlphaNumeric(x, fieldDesc, obj, totalErrorMessage, flag)
{
	for(y = 0; y<x.length; y++)
	{
		charCode = x.charCodeAt(y);
		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >=97 && charCode <= 122));
			//continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_22.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);
}

function HUBRIS_chkAlphaNumericHyphen(x, fieldDesc, obj, totalErrorMessage, flag)
{

	var Err = 0;

	for(y = 0; y<x.length; y++)
	{
		if((x.charCodeAt(y)>=48 && x.charCodeAt(y) <=57)||(x.charCodeAt(y)>=65 && x.charCodeAt(y) <=90)||(x.charCodeAt(y)>=97 && x.charCodeAt(y) <=122)||(x.charCodeAt(y) ==45))
			continue;
		else
			Err = 1;
	}
	if(Err == 1)
		return(HUBRIS_setErrorMessage(HUBRIS_Error_21.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	return(true);
}

function HUBRIS_chkAlphaNumericSpecalCharsForIDV(x, fieldDesc, obj, totalErrorMessage, flag, includeSpace)
{

	var Err = 0;

	for(y = 0; y<x.length; y++)
	{
		if((x.charCodeAt(y)>=48 && x.charCodeAt(y) <=57)||(x.charCodeAt(y)>=65 && x.charCodeAt(y) <=90)||(x.charCodeAt(y)>=97 && x.charCodeAt(y) <=122)||(x.charCodeAt(y) ==45)||(x.charCodeAt(y) ==95)||(x.charCodeAt(y) ==64)||(x.charCodeAt(y) ==46)||(x.charCodeAt(y) ==39))
			continue;
		else {
			if (includeSpace && (x.charCodeAt(y)==32)) {
				continue;	
			}
			Err = 1;
		}
	}
	if(Err == 1)
		return (false);
	return(true);
}

function HUBRIS_chkLogonChar(x)
{
	for(y = 0; y<x.length; y++)
	{
		charCode = x.charCodeAt(y);
		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >=97 && charCode <= 122) || (charCode ==95))
			continue;
		else
			return (false);
	}
	return(true);
}

function HUBRIS_chkLogonID(x, fieldDesc, obj, totalErrorMessage, flag){
	for(i=0;i<x.length;i++)
		if(x.charCodeAt(i)==32) {
			return(HUBRIS_setErrorMessage(HUBRIS_Error_22.replace(/~~1/, HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
		}
	if(!HUBRIS_chkLogonChar(x)) {
		return(HUBRIS_setErrorMessage(HUBRIS_Error_22.replace(/~~1/, HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	}
	return true;
}

function HUBRIS_chkMinLength(x,y,fieldDesc,obj, totalErrorMessage, flag){
	if(x.length<y){
		ErrorMessage=HUBRIS_Error_27.replace(/~~1/,HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,y),obj, totalErrorMessage, flag));}
	else
		return true;
}

function HUBRIS_chkMaxLength(x,y,fieldDesc,obj, totalErrorMessage, flag){
	if(x.length>y){
		ErrorMessage=HUBRIS_Error_500.replace(/~~1/,HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,y),obj, totalErrorMessage, flag));}
	else
		return true;
}
function HUBRIS_chkEqualLength(x, y, fieldDesc, obj, totalErrorMessage, flag){
	if(x.length != y){
		ErrorMessage=HUBRIS_Error_44.replace(/~~1/,HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,y),obj, totalErrorMessage, flag));}
	else
		return true;
}

function HUBRIS_chkAccount(x, fieldDesc, obj, totalErrorMessage, flag)
{
	var Err = 0;
	var tmpx="";
	for(i=0;i<x.length;i++)
		if(x.charAt(i)!='-')
			tmpx+=x.charAt(i);
		for(y = 0; y<x.length; y++)
		{
			charCode = x.charCodeAt(y);
			if(charCode == 45)
			{
				if(isNaN(x.charAt(y-1)) || isNaN(x.charAt(y + 1)) || y==x.length-1 || y==0)
					Err = 1;
			}
			else if(charCode>=48 && charCode <=57)
				continue;
			else
				Err = 1;
		}
	if(Err == 1)
		return(HUBRIS_setErrorMessage(HUBRIS_Error_21.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	return(true);
}

function HUBRIS_chkAlphabetic(x, fieldDesc, obj, totalErrorMessage, flag)
{
	for(y = 0; y<x.length; y++)
	{
		charCode = x.charCodeAt(y);
		if((charCode >= 65 && charCode <= 90) || (charCode >=97 && charCode <=122))
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_20.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

		return(true);
	}
	return(true);
}

function HUBRIS_chkNotSmallerThan(x,y,fieldDesc, obj, totalErrorMessage, flag)
{
	tempx = HUBRIS_trimSeparator(x);
	tempy = HUBRIS_trimSeparator(y);

	if(parseFloat(tempx) < parseFloat(tempy)){
		ErrorMessage = HUBRIS_Error_14.replace(/~~1/, HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/, y), obj, totalErrorMessage, flag));
	}
	else
		return(true);
}

function HUBRIS_chkNotGreaterThan(x,y,fieldDesc, obj, totalErrorMessage, flag)
{
	tempx = HUBRIS_trimSeparator(x);
	tempy = HUBRIS_trimSeparator(y);

	if(parseFloat(tempx) > parseFloat(tempy)){
		ErrorMessage = HUBRIS_Error_13.replace(/~~1/, HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/, y), obj, totalErrorMessage, flag));
	}
	else
		return(true);
}

function HUBRIS_chkBothInput(x,y,fieldDesc, fieldDesc2, obj, totalErrorMessage, flag)
{
	ErrorMessage = HUBRIS_Error_10.replace(/~~1/, HUBRIS_getDesc(fieldDesc));

	if(x.length == 0 || y.length == 0 )
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/, HUBRIS_getDesc(fieldDesc2)),obj, totalErrorMessage, flag));

	return(true);
}

function HUBRIS_chkBothEmpty(x,y,fieldDesc, fieldDesc2, obj, totalErrorMessage, flag)
{
	ErrorMessage = HUBRIS_Error_11.replace(/~~1/, HUBRIS_getDesc(fieldDesc));
	if(x.length == 0 && y.length == 0 )
		return(true);
	else
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/, HUBRIS_getDesc(fieldDesc2)), obj, totalErrorMessage, flag));
}

function HUBRIS_chkDateComparsion(x, y, fieldDesc, fieldDesc2, obj, totalErrorMessage, flag)
{
	if(Date.parse(HUBRIS_convertEngDate(x)) >= Date.parse(HUBRIS_convertEngDate(y)))
		return(true);
	else
	{
		ErrorMessage = HUBRIS_Error_09.replace(/~~1/, HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/, HUBRIS_getDesc(fieldDesc2)),obj, totalErrorMessage, flag));
	}
}

function HUBRIS_chkDateComparsionNotEqual(x, y, fieldDesc, fieldDesc2, obj, totalErrorMessage, flag)
{
	if(Date.parse(HUBRIS_convertEngDate(x)) > Date.parse(HUBRIS_convertEngDate(y)))
		return(true);
	else
	{
		ErrorMessage = HUBRIS_Error_510.replace(/~~1/, HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/, HUBRIS_getDesc(fieldDesc2)),obj, totalErrorMessage, flag));
	}
}

function HUBRIS_chkNotEarlyThanToday(x, fieldDesc, obj, totalErrorMessage, flag)
{
	var Today = new Date();
	var Now = Today.getFullYear() + "/" + (Today.getMonth()+1) + "/" +Today.getDate();
	if(Date.parse(x) >= Date.parse(Now))
		return(true);
	else
		return(HUBRIS_setErrorMessage(HUBRIS_Error_08.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
}

function HUBRIS_chkNotFutureDate(x, fieldDesc, obj, totalErrorMessage, flag)
{
	var Today = new Date();

	var Now = Today.getFullYear() + "/" + (Today.getMonth()+1) + "/" + Today.getDate();
	if(Date.parse(x) <= Date.parse(Now))
		return(true);
	else
		return(HUBRIS_setErrorMessage(HUBRIS_Error_07.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
}
function HUBRIS_chkLeapYear(x)
{
	if(x/400 == parseInt(x/400))
		return(true);
	else if(x/100 == parseInt(x/100))
		return(false);
	else if(x/4 == parseInt(x/4))
		return(true);
	else
		return(false);
}

function HUBRIS_chkNumeric(x, fieldDesc, obj, totalErrorMessage, flag)
{
	if(HUBRIS_chknum(x))
		return(true);
	else
		return(HUBRIS_setErrorMessage(HUBRIS_Error_01.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

}

function HUBRIS_chkGreaterThanZero(x, fieldDesc, obj, totalErrorMessage, flag)
{
	return(HUBRIS_chkGreaterThan(x,"0",fieldDesc,obj, totalErrorMessage, flag));
}
function HUBRIS_chkGreaterThan(x,y,fieldDesc,obj, totalErrorMessage, flag){
	var tmpx=HUBRIS_trimSeparator(x);
	var tmpy=HUBRIS_trimSeparator(y);
	if(parseFloat(tmpx)>parseFloat(tmpy))
		return(true);
	else{
		ErrorMessage=HUBRIS_Error_02.replace(/~~1/,HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,y),obj, totalErrorMessage, flag));
	}
}
function HUBRIS_chkSmallerThan(x,y,fieldDesc,obj, totalErrorMessage, flag)
{
	var tmpx=HUBRIS_trimSeparator(x);
	var tmpy=HUBRIS_trimSeparator(y);
	if(parseFloat(tmpx)<parseFloat(tmpy))
		return(true);
	else
	{
		if(y==0)y="zero";
		ErrorMessage=HUBRIS_Error_33.replace(/~~1/,HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,y),obj, totalErrorMessage, flag));
	}
}
function HUBRIS_chkLessThanOrEqualTo(x,y,xFieldDesc,yFieldDesc,obj, totalErrorMessage, flag)
{
	var tmpx=HUBRIS_trimSeparator(x);
	var tmpy=HUBRIS_trimSeparator(y);
	if(parseFloat(tmpx)<=parseFloat(tmpy))
		return(true);
	else
	{
		ErrorMessage=HUBRIS_Error_488.replace(/~~1/,HUBRIS_getDesc(xFieldDesc));
		ErrorMessage=ErrorMessage.replace(/~~2/,HUBRIS_getDesc(yFieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage, obj, totalErrorMessage, flag));
	}
}
function HUBRIS_chkLessThanWithDesc(x,y,xFieldDesc,yFieldDesc,obj, totalErrorMessage, flag)
{
	var tmpx=HUBRIS_trimSeparator(x);
	var tmpy=HUBRIS_trimSeparator(y);
	if(parseFloat(tmpx)<parseFloat(tmpy))
		return(true);
	else
	{
		ErrorMessage=HUBRIS_Error_532.replace(/~~1/,HUBRIS_getDesc(xFieldDesc));
		ErrorMessage=ErrorMessage.replace(/~~2/,HUBRIS_getDesc(yFieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage, obj, totalErrorMessage, flag));
	}
}
function HUBRIS_chkGreaterThanWithDesc(x,y,xFieldDesc,yFieldDesc,obj, totalErrorMessage, flag)
{
	var tmpx=HUBRIS_trimSeparator(x);
	var tmpy=HUBRIS_trimSeparator(y);
	if(parseFloat(tmpx)>parseFloat(tmpy))
		return(true);
	else
	{
		ErrorMessage=HUBRIS_Error_533.replace(/~~1/,HUBRIS_getDesc(xFieldDesc));
		ErrorMessage=ErrorMessage.replace(/~~2/,HUBRIS_getDesc(yFieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage, obj, totalErrorMessage, flag));
	}
}
function HUBRIS_chkGreaterThanOrEqualToValue(x,value,xFieldDesc,obj, totalErrorMessage, flag)
{
	var tmpx=HUBRIS_trimSeparator(x);
	if(parseFloat(tmpx)>=parseFloat(value))
		return(true);
	else
	{
		ErrorMessage=HUBRIS_Error_489.replace(/~~1/,HUBRIS_getDesc(xFieldDesc));
		ErrorMessage=ErrorMessage.replace(/~~2/,value);
		return(HUBRIS_setErrorMessage(ErrorMessage, obj, totalErrorMessage, flag));
	}
}
function HUBRIS_chkNotBlank(x, fieldDesc,Compulsory, obj, totalErrorMessage, flag) {

	if(obj.type==null){
		for(i=0;i<obj.length;i++){
			if(obj[i].checked)
			return(true);}
		if(Compulsory){
			totalErrorMessage.value += HUBRIS_Error_03.replace(/~~1/, HUBRIS_getDesc(fieldDesc)) + "\n";
			HUBRIS_chkFocus(obj[0], flag);
		}
		return(false);
	}
	else
	{
		if(obj.type == "text") x = HUBRIS_trimString(x);
		if(obj.type == "textarea") x = HUBRIS_trimTextAreaString(x);
		if(x.length==0 || (obj.type=="checkbox" && !obj.checked)){
			if(Compulsory){
				if(obj.type == "select-one")
					totalErrorMessage.value += HUBRIS_Error_23.replace(/~~1/, HUBRIS_getDesc(fieldDesc)) + "\n";
				else {
					totalErrorMessage.value += HUBRIS_Error_03.replace(/~~1/, HUBRIS_getDesc(fieldDesc)) + "\n";
				}
				if (obj.name!="OtherAccount"&&obj.name!="BillType"&&obj.name!="OrderPrice"&&obj.name!="InterBankAccount"
					&&obj.name!="u_BeneficiaryName"&&obj.name!="u_PaymentDetail"&&obj.name!="InterBankAccount"
					&&obj.name!="InterBankAccount"&&obj.name!="SelfRentedAmount"&&obj.name!="OtherResidentialStatus"
					&&obj.name!="MortgageRepayment"&&obj.name!="OtherRepayment"&&obj.name!="EmployeeName"
					&&obj.name!="ATMNumber1"&&obj.name!="ATMNumber2"&&obj.name!="CardCollectionBranch"
					&&obj.name!="Instr_PrincipalAmt"&&obj.name!="Instr_DeductAmt"&&obj.name!="FundCode"
					&&obj.name!="OrderPrice"&&obj.name!="OtherEducationLevel"&&obj.name!="OtherResidence"
					&&obj.name!="MonthlyPayPercent"&&obj.name!="OrderPrice")
					HUBRIS_chkFocus(obj, flag);
			}
			return(false);
		}
	}
	return(true);
}
function HUBRIS_chkLessThan(x, y, fieldDesc, obj, totalErrorMessage, flag)
{
	if(x.length > y)
	{
		ErrorMessage = HUBRIS_Error_04.replace(/~~1/ , HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2./, y + 1)+ HUBRIS_CharactersMsg, obj, totalErrorMessage, flag));
	}
	else
		return(true);
}
function HUBRIS_chkLongerThan(x,y,fieldDesc, obj, totalErrorMessage, flag)
{
	if(x.length < y)
	{
		ErrorMessage = HUBRIS_Error_05.replace(/~~1/ , HUBRIS_getDesc(fieldDesc));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/, y - 1), obj, totalErrorMessage, flag));
	}
	else
		return(true);
}
function HUBRIS_convertCompositeDateToDate(x, y, z) {
	DD=x;
	if (y=="1") MM="JAN";
	else if (y=="2") MM="FEB";
	else if (y=="3") MM="MAR";
	else if (y=="4") MM="APR";
	else if (y=="5") MM="MAY";
	else if (y=="6") MM="JUN";
	else if (y=="7") MM="JUL";
	else if (y=="8") MM="AUG";
	else if (y=="9") MM="SEP";
	else if (y=="10") MM="OCT";
	else if (y=="11") MM="NOV";
	else if (y=="12") MM="DEC";
	else MM="";
	YYYY=z
	return DD + " " + MM + " " + YYYY;
}
function HUBRIS_convertDateFormat(x){
        var tmpx=x;
        var s1pos, s2pos;

/*
        if ( !(tmpx.indexOf( " " ) < 0 ))
        {
                var sp1, sp2;
                sp1 = tmpx.indexOf( " " );
                DD=tmpx.substring( 0, sp1 );
                sp2 = tmpx.indexOf( " ", sp1 + 1 );
                if ( sp2 < 0 )
                {
                        return "";
                }
                MM = ( tmpx.substring( sp1 + 1, sp2 ).toUpperCase());
                YYYY = tmpx.substring( sp2 + 1, tmpx.length );
                if(MM=="JAN")MM="01";
                else if(MM=="FEB")MM="02";
                else if(MM=="MAR")MM="03";
                else if(MM=="APR")MM="04";
                else if(MM=="MAY")MM="05";
                else if(MM=="JUN")MM="06";
                else if(MM=="JUL")MM="07";
                else if(MM=="AUG")MM="08";
                else if(MM=="SEP")MM="09";
                else if(MM=="OCT")MM="10";
                else if(MM=="NOV")MM="11";
                else if(MM=="DEC")MM="12";
                else return "";
                tmpx = DD + "/" + MM + "/" + YYYY;
        }
*/
        s1pos = tmpx.indexOf( "/" );
        if ( s1pos < 0 )
        {
                if ( tmpx.length == 8 )
                {
                	    // yyyyMMdd case
                        s1pos = 2;
                        s2pos = 5;
                        tmpx = tmpx.substring( 6, 8 ) + "/" + tmpx.substring( 4, 6 ) + "/" + tmpx.substring( 0, 4 );
                }
                else
                {
                        return "";
                }
        }
        else
        {
               s2pos = tmpx.indexOf( "/", s1pos + 1 );
               if ( (s2pos < 0) || (s1pos != 4) || (s2pos != 7))
               {
                        return "";
               }
               else
               {
               	        // yyyy/MM/dd case
                        s1pos = 2;
                        s2pos = 5;
                        tmpx = tmpx.substring( 8, 10 ) + "/" + tmpx.substring( 5, 7 ) + "/" + tmpx.substring( 0, 4 );
               }
        }
        if ( !HUBRIS_chknum( tmpx.substring(0, s1pos )) || !HUBRIS_chknum( tmpx.substring( s1pos + 1, s2pos )) || !HUBRIS_chknum( tmpx.substring( s2pos + 1, tmpx.length )) || tmpx.substring( s2pos + 1, tmpx.length ) < 1900)
        {
                return "";
        }
        return tmpx;
}
function HUBRIS_chkCompositeDate(x, y, z, fieldDesc, obj, totalErrorMessage, flag) {
	return HUBRIS_chkDateCustomError(HUBRIS_convertCompositeDateToDate(x, y, z), fieldDesc, obj, HUBRIS_Error_45, totalErrorMessage, flag);
}
function HUBRIS_chkDate(x, fieldDesc, obj, totalErrorMessage, flag){
	return HUBRIS_chkDateCustomError(x, fieldDesc, obj, HUBRIS_Error_06, totalErrorMessage, flag);
}
function HUBRIS_chkDateCustomError(x, fieldDesc, obj, s, totalErrorMessage, flag){

        var tmpx=HUBRIS_convertDateFormat(x);
        Err =0;

        var s1pos, s2pos;
        s1pos = tmpx.indexOf( "/" );
        if ( s1pos > 0 )
        {
                s2pos = tmpx.indexOf( "/", s1pos + 1 );
                if ( s2pos < 0 )
                {
                        Err = 1;
                }
        }
        else
        {
                Err = 1;
        }
        if(Err != 1 )
        {
                DD = tmpx.substring(0,s1pos);
                MM = tmpx.substring(s1pos+1,s2pos);
                YYYY = tmpx.substring(s2pos+1,tmpx.length);

                if(MM <= 12 && MM >= 1)
                {
                        if(MM==1 || MM==3 || MM==5 || MM==7 || MM==8 || MM==10 || MM==12)
                        {
                                if(DD > 31 || DD < 1)
                                        Err = 1;
                        }
                        else if(MM == 2)
                        {
                                if(HUBRIS_chkLeapYear(YYYY))
                                {
                                        if(DD > 29 || DD < 1)
                                                Err = 1;
                                }
                                else
                                {
                                        if(DD > 28 || DD < 1)
                                                Err = 1;
                                }
                        }
                        else{
                                if(DD > 30 || DD < 1)
                                        Err = 1;
                        }
                }
                else
                        Err = 1;
        }
        if(Err == 1)
                return(HUBRIS_setErrorMessage(s.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

        return(true);
}
function HUBRIS_chkAmount(x, fieldDesc, obj, totalErrorMessage, flag){

	return(HUBRIS_chkPositive(x,fieldDesc,obj, totalErrorMessage, flag));
}
function HUBRIS_chkAmountNG(x, fieldDesc, obj, totalErrorMessage, flag){

	return(HUBRIS_chkNonNegative(x, fieldDesc, obj, totalErrorMessage, flag));
}
function HUBRIS_trimSeparator(x){

	Start_Point = 0;
	End_Point = x.indexOf(",", Start_Point);
	while(End_Point != -1){
		x = x.substring(0, End_Point) + x.substring(End_Point+1, x.length);
		End_Point = x.indexOf(",", End_Point + 1);
	}
	return(x);
}
function HUBRIS_chkAmountSeparator(x, fieldDesc, obj, totalErrorMessage, flag){
	noSeparator=HUBRIS_trimSeparator(x);
	if(HUBRIS_chkFloat(noSeparator,fieldDesc,obj, totalErrorMessage, flag)){
		if(HUBRIS_chkSeparator(x,fieldDesc,obj))
			return true;
		return(HUBRIS_setErrorMessage(HUBRIS_Error_19.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	else
		return false;
}
function HUBRIS_chkSeparator(x,fieldDesc,obj){
	if(x.charAt(0) == "-")
		x = x.substring(1, x.length);

	FirstSeparator = x.indexOf(",", 0);
	if(FirstSeparator <=3 && FirstSeparator > 0)
	{
		Start_Point = FirstSeparator + 1;
		Found = true;

		while(Found)
		{
			End_Point = x.indexOf(",", Start_Point);
			Offset = End_Point - Start_Point;
			if(End_Point == -1)
			{
				Tail = x.substring(Start_Point, x.length).length;

				if(x.substring(Start_Point+3, Start_Point+4) == ".")
				{
					Start_Point += 4;
					if(x.indexOf(",", Start_Point) == -1 && x.indexOf(".", Start_Point)== -1)
						return true;
					else
						return false;

				}
				else if(Tail != 3 || (Tail==3 && x.charAt(x.length-1)==".")){
					return false;
				}
				else if(Tail == 3)
					return(true);

			}
			else if(Offset != 3){
				return false;
			}
			Start_Point = End_Point + 1;
		}
	}
	else if(x.indexOf(",",0) != -1 && FirstSeparator > 3)
		return false;
	else if(x.indexOf(".", 0) == -1 && x.indexOf(",",0) == -1)
		return(true);
	else if(x.indexOf(".", 0) != -1)
	{
		return true;
	}
	else
		return false;
}
function HUBRIS_chknum(x){

	for(y=0; y<x.length; y++)
	{
 		if(x.charCodeAt(y) > 57 || x.charCodeAt(y) < 48)
			return(false);
	}
	return(true);
}

function HUBRIS_chkSearchStockName(x, fieldDesc, obj, totalErrorMessage, flag){

	for(i=0;i<x.length;i++)
		if(x.charCodeAt(i)==32)
			return(HUBRIS_setErrorMessage(HUBRIS_Error_26.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	for(y=0 ; y < x.length ; y++)
	{
		charCode = x.charCodeAt(y);

		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || charCode == 10 || charCode == 13 || charCode == 58 || charCode==63 || charCode==46 || charCode==44 || charCode==40 || charCode==41 || charCode==39)
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);
}

function HUBRIS_chkValidCharacters(x, fieldDesc, obj, totalErrorMessage, flag){

	for(y=0 ; y < x.length ; y++)
	{
		charCode = x.charCodeAt(y);

		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || charCode == 10 || charCode == 13 || charCode == 58 || charCode==63 || charCode==46 || charCode==44 || charCode==40 || charCode==41 || charCode==32 || charCode==39)
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);
}
function HUBRIS_chkValidCharactersSlash(x, fieldDesc, obj, totalErrorMessage, flag){

	for(y=0 ; y < x.length ; y++)
	{
		charCode = x.charCodeAt(y);

		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || charCode == 10 || charCode == 13 || charCode == 58 || charCode==63 || charCode==46 || charCode==44 || charCode==40 || charCode==41 || charCode==32 || charCode==39 || charCode==47)
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);
}
function HUBRIS_chkSWIFTValidCharacters(x, fieldDesc, obj, totalErrorMessage, flag){

	for(y=0 ; y < x.length ; y++)
	{
		charCode = x.charCodeAt(y);

		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || (charCode >= 43 && charCode <= 47) || charCode == 10 || charCode == 13 || charCode==32 || charCode==39 || charCode==40 || charCode==41 || charCode == 58 || charCode==63)
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);
}
function HUBRIS_chkInteger(x,fieldDesc, obj, totalErrorMessage, flag) {
	tmpx=HUBRIS_trimSeparator(x);
	if(!isNaN(tmpx)&&tmpx.indexOf(".",0)==-1&&HUBRIS_chkSeparator(x)){
		if ((tmpx-parseInt(tmpx,10))!=0){
			return(HUBRIS_setErrorMessage(HUBRIS_Error_16.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
		}
		return true;
	}
	else
		return(HUBRIS_setErrorMessage(HUBRIS_Error_16.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
}
function HUBRIS_chkFloat(x,fieldDesc, obj, totalErrorMessage, flag){
	ErrorMessage = HUBRIS_Error_15.replace(/~~1/, HUBRIS_getDesc(fieldDesc));
	if(HUBRIS_chkFloatingPoint(x))
		return true;
	return(HUBRIS_setErrorMessage(ErrorMessage, obj, totalErrorMessage, flag));
}

function HUBRIS_chkFloatingPoint(x) {

	var string_len = x.length;
	var decimal_counter = 0;
	var temp_string;
	var start = 0;

	if(x.substring(0,1) == "-")
		start = 1;
	else if(x.substring(0,1) == "."){
		start = 1;
		decimal_counter++;
	}

	if(x.substring(start,x.length).length ==0)
		return(false);

	for(y=start; y<string_len; y++)
	{
		temp_string = x.substring(y,y+1);
		if(isNaN(parseInt(temp_string)))
		{
			if(temp_string == "." && decimal_counter == 0)
				decimal_counter++;
			else
				return(false);
		}
	}
	return (true);
}

function HUBRIS_chkNonNegative(x, fieldDesc, obj, totalErrorMessage, flag){

	if(HUBRIS_chkAmountSeparator(x,fieldDesc, obj, totalErrorMessage, flag))
		x = HUBRIS_trimSeparator(x);
	else
		return(false);

	if(HUBRIS_chkFloat(x,fieldDesc, obj, totalErrorMessage, flag)){

		if(parseFloat(x) >= 0)
			return(true);
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_17.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	else{
		return(false);
	}
}

function HUBRIS_chkPositive(x, fieldDesc, obj, totalErrorMessage, flag){

	if(HUBRIS_chkAmountSeparator(x,fieldDesc, obj, totalErrorMessage, flag))
		x = HUBRIS_trimSeparator(x);
	else
		return(false);

	if(HUBRIS_chkFloat(x,fieldDesc, obj, totalErrorMessage, flag)){

		if(parseFloat(x) > 0)
			return(true);
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_18.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	else{
		return(false);
	}
}
function HUBRIS_radioChecker(obj) {
   for (var i=0; i<obj.length; i++) {
      if (obj[i].checked) return (obj[i].value);
   }
   return(null);
}

function HUBRIS_removeCookie(){

	var allcookies = document.cookie;
	var pos = allcookies.indexOf("logonifs=");
	var lasthour = new Date();
	lasthour.setHours(lasthour.getHours()-1);
	if (pos != -1){
		var test = new Date();
		cookievalue = test.toGMTString();
		document.cookie = "logonifs" + "=" +escape(cookievalue)+
	        (  ";expires=" + lasthour.toGMTString()) +
	        (  ";path=" +  "/") +
	        (  ";domain=" + ".hsbc.com.hk") ;
	}
}


function HUBRIS_setLocation(obj, loc, waitFlag)
{
	if (waitFlag.value)
	{
		HUBRIS_popupWait();
	}
	obj.href = loc;
}

function HUBRIS_popupWait()
{

}

function HUBRIS_OpenHelp(form)
{
	window.open(form,'PopUp','width=400,height=400,resizable=yes,menubar=no,toolbar=no,directories=no,location=no,scrollbars=yes,status=yes');
}

function HUBRIS_helpopen(name)
{
	window.open(name,'HelpPage', 'width=390,height=400,resizable=yes,menubar=no,toolbar=no,directories=no,location=no,scrollbars=yes,status=yes');
}
function HUBRIS_owin(ooo)
{
	window.open(ooo, '', 'menubar=no,resizable=yes,toolbar=no,location=no,directories=no,scrollbars=yes,center=yes,status=yes,width=400,height=400,screenX=150,screenY=200,top=200,left=150');
}

function HUBRIS_OpenWindow(url)
{
	window.open(url, '', 'width=390,height=400,resizable=yes,menubar=no,toolbar=no,directories=no,location=no,scrollbars=yes,status=yes');
}

function HUBRIS_chkIntAmount(x, fieldDesc, obj, totalErrorMessage, flag)
{
	return(HUBRIS_chkPositive(x,fieldDesc, obj, totalErrorMessage, flag) && HUBRIS_chkInteger(x, fieldDesc, obj, totalErrorMessage, flag));
}

function HUBRIS_buy() {
	alert(document.buyfrm.StockCode.value);
	alert(document.buyfrm.StockName.value);
	alert(document.buyfrm.LotSize.value);
	alert(document.buyfrm.StockCurrency.value);
	document.buyfrm.submit();
}

function HUBRIS_sell() {
	document.sellfrm.submit();
}

function HUBRIS_quote() {
	document.quotefrm.submit();
}

function HUBRIS_charts() {
	document.chartsfrm.submit();
}

function HUBRIS_bidask() {
	document.bidaskfrm.submit();
}

function HUBRIS_futures() {
	document.futuresfrm.submit();
}

function HUBRIS_options() {
	document.optionsfrm.submit();
}

function HUBRIS_validsrchkey(x,srchtype) {
// srchtype = 1, for stock code search
// srchtype = 2, for news search
	if (x.value == "" || x.value == null) {
		alert(HUBRIS_Error_200);
		x.focus();
		return (false);
	} else {
		var nochar = 0;
		var fchar = -1;
		var lchar = -1;
		for (count = 0; x.value.length > count ; count++) {
			var c = x.value.charCodeAt(count);
			if (! ( (c <= 57 && c >= 48) || (c <= 90 && c >= 65) || (c <= 122 && c >= 97) || c == 10 || c == 13 || c == 32) ) {
				alert(HUBRIS_Error_201);
				x.focus();
				return (false);
			}
			if ((c <= 57 && c >= 48) || (c <= 90 && c >= 65) || (c <= 122 && c >= 97)) {
				nochar = nochar + 1;
				lchar = count;
			}
			if (((c <= 57 && c >= 48) || (c <= 90 && c >= 65) || (c <= 122 && c >= 97)) && fchar == -1) fchar = count;
		}
		if (nochar < 3) {
			alert(HUBRIS_Error_204);
			x.focus();
			return (false);
		   }
		if (srchtype != 2) {
			if (lchar - fchar + 1 != nochar) {
				alert(HUBRIS_Error_205);
				x.focus();
				return (false);
			}
		}

	}
	return (true);
}

function HUBRIS_validstocknum(x) {
	if (x.value == "" || x.value == null) {
		alert(HUBRIS_Error_200);
		x.focus();
		return (false);
	} else {
		var nochar = 0;
		var fchar = -1;
		var lchar = -1;
		for (count = 0; x.value.length > count ; count++) {
			var c = x.value.charCodeAt(count);
			if (! ( (c <= 57 && c >= 48) || c == 10 || c == 13 || c == 32 ) ) {
				alert(HUBRIS_Error_201);
				x.focus();
				return (false);
			}
			if (c <= 57 && c >= 48) {
				nochar = nochar + 1;
				lchar = count;
			}
			if ((c <= 57 && c >= 48) && fchar == -1) fchar = count;
		}
		if (nochar > 5) {
			alert(HUBRIS_Error_202);
			x.focus();
			return (false);
		}
		if (lchar - fchar + 1 != nochar) {
	 		alert(HUBRIS_Error_203);
			x.focus();
			return (false);
		}
	}
	return (true);
}
function HUBRIS_chkNotEqualIgnoreCase(x,y,fieldDescX,fieldDescY,objX,objY, totalErrorMessage, flag){
	if(x.toUpperCase()==y.toUpperCase()){
		ErrorMessage = HUBRIS_Error_25.replace(/~~1/,HUBRIS_getDesc(fieldDescX));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/,HUBRIS_getDesc(fieldDescY)),objX, totalErrorMessage, flag));
	}
	return(true);
}
function HUBRIS_chkIntAmountIncZero(x, fieldDesc, obj, totalErrorMessage, flag)
{
	return(HUBRIS_chkNonNegative(x, fieldDesc, obj, totalErrorMessage, flag) && HUBRIS_chkInteger(x, fieldDesc, obj, totalErrorMessage, flag));
}

function HUBRIS_appendErrorMessage(Message, totalErrorMessage)
{
	totalErrorMessage.value+=Message + "\n";
//	return(false);
}
function HUBRIS_convertPartialDateToFullDate(x)
{
	var MonthList = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");

	var Today = new Date();
	var NowDate = (Today.getDate()<10)? "0" + Today.getDate() : Today.getDate() ;
	var NowMonth = MonthList[Today.getMonth()];
	var testDate = x;

	if (testDate.length==4)
		testDate = NowMonth + " " +  testDate;
	if (testDate.length==8)
		if (testDate.substring(3,1) ==  " ")
			testDate = NowDate + " " + testDate;

	return(testDate);
}


function HUBRIS_chkPartialDate(x, fieldDesc, obj, totalErrorMessage, flag)
{
	var tmpx=HUBRIS_convertDateFormat(HUBRIS_convertPartialDateToFullDate(x));
	return HUBRIS_chkDate(tmpx, fieldDesc, obj, totalErrorMessage, flag);
/*
	Err =0;
	if(tmpx.length != 10)
		Err =1;
	else if(tmpx.charAt(2) != "/" || tmpx.charAt(5) != "/")
		Err =1;
	else if(!HUBRIS_chknum(tmpx.substring(0,2)) || !HUBRIS_chknum(tmpx.substring(3,5)) || !HUBRIS_chknum(tmpx.substring(6,10)))
		Err = 1;

	if(Err != 1 )
	{
		DD = tmpx.substring(0,2);
		MM = tmpx.substring(3,5);
		YYYY = tmpx.substring(6,10);

		if(MM <= 12 && MM >= 1)
		{
			if(MM==1 || MM==3 || MM==5 || MM==7 || MM==8 || MM==10 || MM==12)
			{
				if(DD > 31 || DD < 1)
					Err = 1;
			}
			else if(MM == 2)
			{
				if(HUBRIS_chkLeapYear(YYYY))
				{
					if(DD > 29 || DD < 1)
						Err = 1;
				}
				else
				{
					if(DD > 28 || DD < 1)
						Err = 1;
				}
			}
			else{
				if(DD > 30 || DD < 1)
					Err = 1;
			}
		}
		else
			Err = 1;
	}
	if(Err == 1)
		return(HUBRIS_setErrorMessage(HUBRIS_Error_31.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj));

	return(true);
*/
}
function HUBRIS_chkBirthDate(x, fieldDesc, obj, totalErrorMessage, flag)
{
	return(HUBRIS_chkPartialDate(x, fieldDesc, obj, totalErrorMessage, flag) && HUBRIS_chkNotFutureDate(HUBRIS_convertPartialDateToFullDate(x), fieldDesc, obj, totalErrorMessage, flag));
}

function HUBRIS_chkEmailAddr(x, fieldDesc, obj, totalErrorMessage, flag)
{
	if (HUBRIS_chkNotBlank(x, fieldDesc, false, obj, totalErrorMessage, flag)) {

		for(y=0; y<x.length; y++)
		{
			charCode = x.charCodeAt(y);

			if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || (charCode >= 35 && charCode <= 39) || charCode == 43 || (charCode >= 45 && charCode <= 47) || charCode==63 || charCode==64 || charCode==95)
				continue;
			else
				return(HUBRIS_setErrorMessage(HUBRIS_Error_32.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
		}

		var s1 = x.indexOf("@");
		var s2 = x.lastIndexOf("@");
		if (s1 != s2 || s1 <= 0 || s1 >= x.length-1) {
			return(HUBRIS_setErrorMessage(HUBRIS_Error_32.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
		}

		s1 = x.indexOf(".");
		s2 = x.lastIndexOf(".");
		if (s1 == 0 || s2 == x.length-1) {
			return(HUBRIS_setErrorMessage(HUBRIS_Error_32.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
		}

		if (x.indexOf("..") != -1) {
			return(HUBRIS_setErrorMessage(HUBRIS_Error_32.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
		}

		s1 = x.indexOf(".@");
		s2 = x.indexOf("@.");
		if (s1 != -1 || s2 != -1) {
			return(HUBRIS_setErrorMessage(HUBRIS_Error_32.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
		}
		return(true);
	}
	else {
		return(HUBRIS_setErrorMessage(HUBRIS_Error_32.replace(/~~1/,HUBRIS_getDesc(fieldDesc)),obj, totalErrorMessage, flag));
	}
}


function HUBRIS_histToHist(nickname)
{
	var acctType = nickname.substring(20,23);
	var prodType = nickname.substring(18,20);

	if (acctType == "MST")
		if (prodType == "MC")
			return "ITHIDE_AcCombiSummary";
		else
			return "ITHIDE_AcIpsDtl";
	else if ((acctType == "CUA")||(acctType == "RCF")||(acctType == "SSA"))
		return "ITHIDE_AcCurrentHist";
	else if ((acctType == "SAV")||(acctType == "SEE")||(acctType == "USC")||(acctType == "CAC"))
		return "ITHIDE_AcSavingHist";
	else if (acctType == "TMS")
		return "ITd_MiList";
	else if (acctType == "GLD")
		return "ITHIDE_AcGoldHist";
	else if ((acctType == "INV")||(acctType == "SEC")||(acctType == "SEM"))
		return "ITHIDE_IvPortfolioOverview";
	else if (prodType== "CR")
		return "ITHIDE_AcCreditCardHist";
	else if ((nickname.indexOf("0") != -1))
		return "";

}
function HUBRIS_dtlToDtl(nickname)
{
	var acctType = nickname.substring(20,23);
	var prodType = nickname.substring(18,20);

	if (acctType == "MST")
		if (prodType == "MC")
			return "ITHIDE_AcCombiSummary";
		else
			return "ITHIDE_AcIpsDtl";
	else if ((acctType == "CUA")||(acctType == "RCF")||(acctType == "SSA"))
		return "ITHIDE_AcCurrentDtl";
	else if ((acctType == "SAV")||(acctType == "SEE")||(acctType == "USC")||(acctType == "CAC"))
		return "ITHIDE_AcSavingDtl";
	else if (acctType == "TMS")
		return "ITd_MiList";
	else if (acctType == "GLD")
		return "ITHIDE_AcGoldDtl";
	else if ((acctType == "INV")||(acctType == "SEC")||(acctType == "SEM"))
		return "ITHIDE_IvPortfolioOverview";
	else if (prodType == "CR")
		return "ITHIDE_AcCreditCardDtl";
	else if ((acctType == "PLL")||(acctType == "TXL"))
		return "ITHIDE_AcLoanRPIDtl";
	else if ((nickname.indexOf("0") != -1))
		return "";
}



function HUBRIS_trbToTrb(acctType)
{
	if ((acctType.indexOf("MCMST") != -1))
		return "ITHIDE_AcMcyTrb";
	else if ((acctType.indexOf("MST") != -1))
		return "ITHIDE_AcIpsTrb";
	else	return "ITHIDE_AcTrb";

}



function HUBRIS_chkNonZero(x, fieldDesc, obj, totalErrorMessage, flag)
{
	var tmpx=HUBRIS_trimSeparator(x);
	if(parseFloat(tmpx)!=parseFloat("0"))
		return(true);
	else{
		return(HUBRIS_setErrorMessage(HUBRIS_Error_34.replace(/~~1/,HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
}

function HUBRIS_chkDecimalPlaces(num,fieldDesc,obj,l, totalErrorMessage, flag)
{
   var x = HUBRIS_trimSeparator(String(num));
   if(x.indexOf(".")!=-1)
      x = x.substr(x.indexOf(".")+1);
   else
      x = "";

   if(x.length<=l)
      return(true);
   else
      return(HUBRIS_setErrorMessage(HUBRIS_Error_35.replace(/~~2/, l).replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
}

function HUBRIS_chkDayInMonth(day,month,obj, totalErrorMessage, flag)
{
switch(month){
	case "APR":
	case "JUN":
	case "SEP":
	case "NOV":	if (day=="31")
					return(HUBRIS_setErrorMessage(HUBRIS_Error_36.replace(/~~2/,month).replace(/~~1/,day),obj, totalErrorMessage, flag));
				break;
	case "FEB": if (day=="30"||day=="31")
					return(HUBRIS_setErrorMessage(HUBRIS_Error_36.replace(/~~2/,month).replace(/~~1/,day),obj, totalErrorMessage, flag));
				break;
	default: return "";
}
}
function HUBRIS_chkPhone(x, fieldDesc, obj, totalErrorMessage, flag)
{
	if(HUBRIS_chkPhoneNum(x))
		return(true);
	else
		return(HUBRIS_setErrorMessage(HUBRIS_Error_37.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

}
function HUBRIS_chkPhoneNum(x){

	for(y=0; y<x.length; y++)
	{
 		if((x.charCodeAt(y) > 57 || x.charCodeAt(y) < 48) && x.charCodeAt(y) != 32 && x.charCodeAt(y) != 45)
			return(false);
	}
	return(true);
}

function HUBRIS_chkPhoneNumbers(x, fieldDesc, obj, totalErrorMessage, flag){

	for(y=0; y<x.length; y++)
	{
 		if((x.charCodeAt(y) > 57 || x.charCodeAt(y) < 48) && x.charCodeAt(y) != 32)
			return(HUBRIS_setErrorMessage(HUBRIS_Error_46.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);

}
function HUBRIS_chkSuppCharacters(x, fieldDesc, obj, totalErrorMessage, flag) {

	for(y=0; y<x.length; y++)
	{
		charCode = x.charCodeAt(y);

		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || charCode == 32 || (charCode >= 35 && charCode <= 41) || (charCode >= 43 && charCode <= 47) || charCode == 58 || charCode == 59 || charCode==63 || charCode==64 || charCode==95)
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);
}

function HUBRIS_chkPrsNameCharacters(x, fieldDesc, obj, totalErrorMessage, flag) {

	for(y=0; y<x.length; y++)
	{
		charCode = x.charCodeAt(y);

		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || charCode==32 || (charCode >= 44 && charCode <= 46) || charCode==39)
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);
}

function HUBRIS_chkAddrCharacters(x, fieldDesc, obj, totalErrorMessage, flag) {

	for(y=0; y<x.length; y++)
	{
		charCode = x.charCodeAt(y);

		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || charCode == 32 || charCode==35 || (charCode >= 38 && charCode <= 41) || (charCode >= 43 && charCode <= 47) || charCode == 58 || charCode==64 || charCode==95)
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);
}
function HUBRIS_chkSubString(x,y,fieldDesc1,fieldDesc2,yobj, totalErrorMessage, flag)
{
	if(x.toUpperCase().indexOf(y.toUpperCase())!=-1)
	return(HUBRIS_setErrorMessage(HUBRIS_Error_38.replace(/~~2/,HUBRIS_getDesc(fieldDesc1)).replace(/~~1/, HUBRIS_getDesc(fieldDesc2)),yobj, totalErrorMessage, flag));
}

function HUBRIS_trimString(x)
{
	while (x.substring(0,1) == " " )
	{	templength=x.length;
		x = x.substring(1,templength);
	}

	while (x.substring(x.length-1,x.length) == " " )
	{	x=x.substring(0,x.length-1)
	}
	return x
}

function HUBRIS_trimTextAreaString(x)
{
	var tempStr = "";
	var c = '';
	for(var i=0; i<x.length; ++i) {
		c = x.charCodeAt(i);
		if((c != 32) && (c != 13) && (c != 10)) {
			tempStr += x.substring(i, i+1);
		}
	}
	return tempStr;
}

function HUBRIS_chkAlphaSpace(x, fieldDesc, obj, totalErrorMessage, flag)
{
	for(y = 0; y<x.length; y++)
	{
		charCode = x.charCodeAt(y);
		if((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || charCode == 32)
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_39.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

		return(true);
	}
	return(true);
}

function HUBRIS_chkDDADebtorName(x, fieldDesc, obj, totalErrorMessage, flag)
{
	for(y = 0; y<x.length; y++)
	{
		charCode = x.charCodeAt(y);
		if((charCode >= 48 && charCode <= 57) || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122)
		|| charCode == 32 || (charCode >= 35 && charCode <= 36) || (charCode >= 38 && charCode <= 47))
			continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_12.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

		return(true);
	}
	return(true);
}

function HUBRIS_chkAlphaNumericSpace(x, fieldDesc, obj, totalErrorMessage, flag)
{
	for(y = 0; y<x.length; y++)
	{
		charCode = x.charCodeAt(y);
		if((charCode >= 48 && charCode <=57) || (charCode >= 65 && charCode <= 90) || (charCode >=97 && charCode <= 122) || charCode == 32);
			//continue;
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_40.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	return(true);
}

function HUBRIS_chkHKIDNum(x, fieldDesc, obj, totalErrorMessage, flag)
{
	var atPos;
	x = HUBRIS_trimString(x);
	switch(x.length) {
		case 7:
		case 8:	atPos = x.length-1;
				break;
		case 10:
		case 11:
				cCode1 = x.charCodeAt(x.length-3);
				cCode2 = x.charCodeAt(x.length-2);
				cCode3 = x.charCodeAt(x.length-1);

				if(cCode1 != 40 || cCode3 != 41)
					return(HUBRIS_setErrorMessage(HUBRIS_Error_41.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

				if((cCode2 < 48 || cCode2 > 57) && cCode2 != 65)
					return(HUBRIS_setErrorMessage(HUBRIS_Error_41.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

				atPos = x.length-4;
				break;
		default:
				return(HUBRIS_setErrorMessage(HUBRIS_Error_41.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
	}
	for (y=0; y<6; y++)
	{
		charCode = x.charCodeAt(atPos);
		if(charCode >= 48 && charCode <=57) {
			atPos--;
			continue;
		}
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_41.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

	}
	while (atPos >= 0)
	{
		charCode = x.charCodeAt(atPos);
		if((charCode >= 65 && charCode <= 90) || (charCode >=97 && charCode <= 122)) {
			atPos--;
			continue;
		}
		else
			return(HUBRIS_setErrorMessage(HUBRIS_Error_41.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

	}
	return(true)
}

function HUBRIS_chkBlankNoSpace(field1, fieldDesc1, totalErrorMessage, flag){
	if (HUBRIS_trimString(field1.value).length >0 ) {
		totalErrorMessage.value += HUBRIS_Error_103.replace(/~~1/, HUBRIS_getDesc(fieldDesc1)) + "\n";
		HUBRIS_chkFocus(field1, flag);
	}
}


function HUBRIS_chkNotEarlyThanOrEqualToday(x, fieldDesc, obj, totalErrorMessage, flag)
{
	var Today = new Date();
	var Now = Today.getFullYear() + "/" + (Today.getMonth()+1) + "/" +Today.getDate();
	if(Date.parse(x) > Date.parse(Now))
		return(true);
	else
		return(HUBRIS_setErrorMessage(HUBRIS_Error_471.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));
}


function HUBRIS_chkNotSmallerThanBetweenFields(x,y,fieldDesc1,fieldDesc2,obj, totalErrorMessage, flag)
{
	tempx = HUBRIS_trimSeparator(x);
	tempy = HUBRIS_trimSeparator(y);

	if(parseFloat(tempx) < parseFloat(tempy)){
		ErrorMessage = HUBRIS_Error_14.replace(/~~1/, HUBRIS_getDesc(fieldDesc1));
		return(HUBRIS_setErrorMessage(ErrorMessage.replace(/~~2/, HUBRIS_getDesc(fieldDesc2)), obj, totalErrorMessage, flag));
	}
	else
		return(true);
}


function HUBRIS_chkMobile(x, fieldDesc, obj, totalErrorMessage, flag)
{
	if(HUBRIS_chkMobileNum(x))
		return(true);
	else
		return(HUBRIS_setErrorMessage(HUBRIS_Error_480.replace(/~~1/, HUBRIS_getDesc(fieldDesc)), obj, totalErrorMessage, flag));

}


function HUBRIS_chkMobileNum(x)
{
	// check all number
	for(y=0; y<x.length; y++)
	{
 		if(x.charCodeAt(y) > 57 || x.charCodeAt(y) < 48)
			return(false);
	}
	// check the first number is '6' or '9'
	if (x.charCodeAt(0) != 54 && x.charCodeAt(0) != 57)
		return(false);

	return(true);
}


/***** Date *****/
function HUBRIS_convertEngDate(x)
{
        var tmpx=HUBRIS_convertDateFormat(x);
        if ( tmpx == "" )
        {
                return x;
        }

        var s1pos, s2pos;
        s1pos = tmpx.indexOf( "/" );
        if ( s1pos > 0 )
        {
                s2pos = tmpx.indexOf( "/", s1pos + 1 );
                if ( s2pos < 0 )
                {
                        return x;
                }
        }
        else
        {
                return x;
        }
        DD = tmpx.substring(0,s1pos);
	if ( DD.length == 1 ) {
		DD = "0" + DD;
	}
        MMM = tmpx.substring(s1pos+1,s2pos);
        YYYY = tmpx.substring(s2pos+1,tmpx.length);
        // processing date
        if(MMM=="1" || MMM=="01")MMM="JAN";
        else if(MMM=="2" || MMM=="02")MMM="FEB";
        else if(MMM=="3" || MMM=="03")MMM="MAR";
        else if(MMM=="4" || MMM=="04")MMM="APR";
        else if(MMM=="5" || MMM=="05")MMM="MAY";
        else if(MMM=="6" || MMM=="06")MMM="JUN";
        else if(MMM=="7" || MMM=="07")MMM="JUL";
        else if(MMM=="8" || MMM=="08")MMM="AUG";
        else if(MMM=="9" || MMM=="09")MMM="SEP";
        else if(MMM=="10")MMM="OCT";
        else if(MMM=="11")MMM="NOV";
        else if(MMM=="12")MMM="DEC";
        else MMM="XXX";
        return DD+" "+MMM+" "+YYYY;

}

function HUBRIS_fmtDateString( obj )
{
	if (obj != null) {
        	obj.value = HUBRIS_convertEngDate( obj.value );
	}
        return obj;
}

/****** Date **********/

/* Tokenize string with delimiter "~~" */
function HUBRIS_tokenize(str) {

	var tokens = new Array(3);
	var delimiter = "~~";
	var count = 0;
	var index = -1;

	if (str!=null) {
		index = str.indexOf(delimiter);
		while (index != -1) {
			tokens[count] = str.substring(0, index);
			str = str.substring(index + delimiter.length);
			index = str.indexOf(delimiter);
			count++;
		}
		tokens[count] = str;
	}

	return tokens;
}

