//Modify Hisotry		
//Function :	ChkNumber()
//Date		Name 		Reason
//8/9/01	LL		Change alert message and set wrong value to zero.

//Function :	towPlaces()
//Date		Name 		Reason
//8/9/01	LL		Set the number have two decimals

//Function :	validateEmail()
//Date		Name		Reason
//20/9/01	LL		validate Email Address

//Function : indexKey(obj)
//Date		Name		Reasion
//24/12/01	LL		jump to the entry begin with one character which key in through keyboard
//				in Select box
//**************************************************************
//Example: <Select Name=select1 onKeyUp='javaScript:indexKey(this)'>.... </Select>
//***************************************************************

//Function : chkCurrency(oField,len)
//Date		Name		Description
//07/03/02	LL
//				parameter len:  is the number of decimal point
//						i.e. chkCurrency(A,2)--if a digital with two decimal points
//						this function will return true

//Function : exceedLength(oField,Len)
//Date			Name		Description
//2003/03/04	LL			Check the LENGTH of object's content 
//
	function indexKey(obj){
		var keyPress;
		var len,i,v_char;
		var index;
		var v_curIndex;
		total = 0;
		index = 0;
		len=obj.length;

		keyPress = String.fromCharCode(event.keyCode).toUpperCase();

		for (i=0;i<len;i++){
			v_char = obj.options[i].text.toUpperCase();
			if (v_char!= ""){
				if (v_char.charAt(0)==keyPress){
					index = i;
					//alert(i);
					break;
				}
			}
		}
		v_curIndex = obj.selectedIndex;
		for (i=0;i<len;i++){
			v_char = obj.options[i].text.toUpperCase();
			if (v_char!=""){
				if ((v_char.charAt(0) == keyPress)){
					if ((obj.options[v_curIndex].text.charAt(0)!=keyPress)){
						obj.selectedIndex = index;
						break;
					}
				}
			}
		}
	}


//-----------------------------------------------------------------------------------
//-------Modification for Number Key Pad--------------------------
//28/05/02 Modified by Licky
	function indexKey(obj,start){
		var keyPress;
		var len,i,v_char;
		var index;
		var v_curIndex;
		total = 0;
		index = 0;
		len=obj.length;

		keyPress = String.fromCharCode(event.keyCode).toUpperCase();

		for (i=0;i<len;i++){
			v_char = obj.options[i].text.toUpperCase();
			if (v_char!= ""){
				if (v_char.charAt(start)==keyPress){
					index = i;
					//alert(i);
					break;
				}
			}
		}
		v_curIndex = obj.selectedIndex;
		for (i=0;i<len;i++){
			v_char = obj.options[i].text.toUpperCase();
			if (v_char!=""){
				if ((v_char.charAt(start) == keyPress)){
					if ((obj.options[v_curIndex].text.charAt(start)!=keyPress)){
						obj.selectedIndex = index;
						break;
					}
				}
			}
		}
	}

//-----------------------------------------------------------------------------------
//-------Modification for Number Key Pad--------------------------
//28/05/02 Modified by Licky
	function indexKey(obj,start,digital){
		var keyPress,keyIn;
		var len,i,v_char;
		var index;
		var v_curIndex;
		var indexFlag;
		var resultFlag = false;
		total = 0;
		index = 0;
		len=obj.length;
		
		keyIn = event.keyCode;
		if ((keyIn >=96) && (keyIn <=105)){
			//digital	
			keyPress = keyIn - 96;
		}else{
			//String 
			keyPress = String.fromCharCode(event.keyCode).toUpperCase();
		}
		if (!isNaN(keyPress)){
			start = digital;	
		}
		/*else{
			start = start;
		}*/
		//len = 2
		v_curIndex = obj.selectedIndex;
				
		for (i=v_curIndex;i<len;i++){
			v_char = obj.options[i].text.toUpperCase();
			//alert(v_char.charAt(start) + "**" + start)
			if (v_char!= ""){
				if (v_char.charAt(start)==keyPress){
					index = i;
					//alert(i);
					break;
				}
			}
		}



		//alert(index+"**"+v_curIndex+"*******");
		
		if (v_curIndex != index){
			for (i=0;i<len;i++){
				v_char = obj.options[i].text.toUpperCase();
				if (v_char!=""){
					if ((v_char.charAt(start) == keyPress)){
						if ((obj.options[v_curIndex].text.charAt(start)!=keyPress)){
							obj.selectedIndex = index;
							resultFlag = true;
							//break;
							return;
						}
					}
				}
			}
		}else{
			indexFlag = v_curIndex + 1;
			//alert(indexFlag<=len);


			//len = 5
			if (indexFlag<=len){
				for (i=indexFlag;i<len;i++){
					v_char = obj.options[i].text.toUpperCase();
					//alert(v_char)
					if (v_char!=""){
						if ((v_char.charAt(start) == keyPress)){
							if ((obj.options[i].text.charAt(start)==keyPress)){
								obj.selectedIndex = i;
								resutlFlag = true;
								//break;
								return;
							}
						}
					}
				}
				//alert(resultFlag)
				if (resultFlag == false){
					for (i=0;i<len;i++){
						v_char = obj.options[i].text.toUpperCase();
						//alert(v_char.charAt(start) + "**" + start)
						if (v_char!= ""){
							if (v_char.charAt(start)==keyPress){
								obj.selectedIndex = i;
								break;
							}
						}
					}
				}
			}
		}
	}


//****************Check Number field***********************
function ChkEmpty(oField){
	var i
	var Items = oField.value
		for (i=0;i<Items.length;i++){
			if (Items.charAt(i)!=" "){
				break;
			}
		}
		if (i == Items.length){
			alert("Cannot Input Empty!");
			oField.value = 0;
			return false		
		}else{
			return true;
			}
}

//******* add by Rebecca on 2002/06/05 ***********************
//**** add one parameter named "aLang" to cater multi_lang ***
function ChkEmpty(oField,aLang){
    var v_LangNo;
    var mesg=CreateArrCommMesg(1,3);
    
    mesg[0][0]="Cannot Input Empty!";
    mesg[0][1]="字段不能为空";
    mesg[0][2]="琿ぃフ";
    v_LangNo=GetLangNo(aLang);    
    	
	var i
	var Items = oField.value
		for (i=0;i<Items.length;i++){
			if (Items.charAt(i)!=" "){
				break;
			}
		}
		if (i == Items.length){
			alert(mesg[0][v_LangNo]);
			return false;
		}else{
			return true;
			}
}


function ChkEmptyNoMsg(oField){
	var i
	var Items = oField.value
		for (i=0;i<Items.length;i++){
			if (Items.charAt(i)!=" "){
				break;
			}
		}
		if (i == Items.length){
			oField.value = 0;
			return false		
		}else{
			return true;
		}
}
//***************************************
//****************Check String field***********************
function ChkEmpty_Str(oField){
	var i
	var Items = oField.value
		for (i=0;i<Items.length;i++){
			if (Items.charAt(i)!==" "){
				break;
				}
			}
		if (i==Items.length){
			return false;
		}
		else{
			return true;
		}
	
}
//***************************************


//***************************************
function validateEmail(field) {

 var str = field.value;

 		if (window.RegExp) {
 		  var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";   // invalid pattern expression
		  var reg2str = "[a-zA-Z0-9\\-\\.\\_\\@]\\s[a-zA-Z0-9\\-\\.\\_\\@]" // invalid pattern expression (space in between)
  		  var reg3str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$"; // valid pattern expression
		  var reg1 = new RegExp(reg1str);
		  var reg2 = new RegExp(reg2str);
		  var reg3 = new RegExp(reg3str);
		  if (!reg1.test(str) && !reg2.test(str) && reg3.test(str)) {
                    if (str.indexOf(" ") != -1) {
                            alert ("Please enter correct email address.");
		            field.focus();
		            field.select();
		            return false;}
		    return true;
		  }
		  alert ("Please enter correct email address.");
		  field.focus();
		  field.select();
		  return false;
		}
		else {
		  // alert ("Object not supported in low level browser!\n Not all invalid email address can be found.")
		  var atCount=0;
		  var perCount=0;
		  var spaceCount=0;
		  var lenCount=str.length;
		  for (var i=0; i<lenCount; i++) {
			tempstr=str.substring(i,i+1);
				if (tempstr=="@") {
					atCount=atCount+1; // check the "@" symbol
				}
				if (tempstr==".") {
					perCount=perCount+1; // Check the period Symbol
				}
				if (tempstr==" ") {
					spaceCount=spaceCount+1; //Check the space in the email address
				}
			}

		  if (atCount==1 && perCount>0 && spaceCount==0) {
                      if (str.indexOf(" ") != -1) {
                            alert ("Please enter correct email address.");
		            field.focus();
		            field.select();
		            return false;}
			 	return true	;
		  }
		  alert ("Please enter correct email address.");
		  field.focus();
		  field.select();
		  return false;
		}
}
//***************************************
// *** add by Rebecca on 2002-06-06
// add one parameter named 'aLang' to cater multi_lang 
function validateEmail(aField,aLang) {

 var str = aField.value; 
 var mesg=CreateArrCommMesg(1,3);
 var v_LangNo;
 
	mesg[0][0]="Please enter correct email address";
	mesg[0][1]="请输入有效的电邮地址";
	mesg[0][2]="叫块Τ筿秎";
        v_LangNo=GetLangNo(aLang);
        
 		if (window.RegExp) {
 		  var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";   // invalid pattern expression
		  var reg2str = "[a-zA-Z0-9\\-\\.\\_\\@]\\s[a-zA-Z0-9\\-\\.\\_\\@]" // invalid pattern expression (space in between)
  		  var reg3str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$"; // valid pattern expression
		  var reg1 = new RegExp(reg1str);
		  var reg2 = new RegExp(reg2str);
		  var reg3 = new RegExp(reg3str);
		  if (!reg1.test(str) && !reg2.test(str) && reg3.test(str)) {
                    if (str.indexOf(" ") != -1) {
                            //alert ("Please enter correct email address.");
                            alert(mesg[0][v_LangNo]);
		            aField.focus();
		            aField.select();
		            return false;}
		    return true;
		  }
		  //alert ("Please enter correct email address.");
		  alert(mesg[0][v_LangNo]);
		  aField.focus();
		  aField.select();
		  return false;
		}
		else {
		  // alert ("Object not supported in low level browser!\n Not all invalid email address can be found.")
		  var atCount=0;
		  var perCount=0;
		  var spaceCount=0;
		  var lenCount=str.length;
		  for (var i=0; i<lenCount; i++) {
			tempstr=str.substring(i,i+1);
				if (tempstr=="@") {
					atCount=atCount+1; // check the "@" symbol
				}
				if (tempstr==".") {
					perCount=perCount+1; // Check the period Symbol
				}
				if (tempstr==" ") {
					spaceCount=spaceCount+1; //Check the space in the email address
				}
			}

		  if (atCount==1 && perCount>0 && spaceCount==0) {
                      if (str.indexOf(" ") != -1) {
                            //alert ("Please enter correct email address.");
                            alert(mesg[0][v_LangNo]);
		            aField.focus();
		            aField.select();
		            return false;}
			 	return true	;
		  }
		  //alert ("Please enter correct email address.");
		  alert(mesg[0][v_LangNo]);
		  aField.focus();
		  aField.select();
		  return false;
		}
}
//***************************************
//***************************************
//***********Trim parameter's blank and return the Parameter's exact Length**************
function exactLen(oField){
	var i,iBegin,iEnd		
	var iOrgLen,trueLen
	i= 0;
	iBegin = 0;
	iEnd = 0;
	iOrgLen = 0;
	trueLen = 0;
		iOrgLen = oField.value.length
		if (iOrgLen != 0 ){
			for (i=0;i<iOrgLen;i++){// check the first character position
				if (oField.value.charAt(i)!=" "){
					iBegin = i;
					break;
				}
			}
//			alert("begin is " + iBegin)			
			if (iBegin<iOrgLen){//check the last character position
				iEnd = iBegin;
				for (i=iOrgLen-1;i>=iBegin;i--){
					if (oField.value.charAt(i)!=" "){
						iEnd = i;
						break;	
					}
				}		
			}
//			alert("End is " + iEnd)
			
			if(iBegin==iEnd){
				trueLen = 1;
			}else if(iBegin<iEnd){
				trueLen = iEnd - iBegin+1;	
			}
		}
		return trueLen;
}
//********************************************************



function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function GoSubmit(form_name) {
	eval("document." + form_name + ".submit()");
}

function GoReset(form_name) {
	eval("document." + form_name + ".reset()");
}

function ConfirmAct(atxt,aframe,aurl){
    var a = eval("parent." + aframe + ".location");
	if(confirm(atxt)){
	   a.assign(aurl);
	}
}	

function ChkNumber(aField)
{	
	var val = 1*aField.value;
	
	if(String(val)=="NaN"){
		//alert("所输入的不是数学");		
		alert("Please input Number");
		aField.select();
		aField.focus();
		return false;
	}
	
	if(val<0){
		//alert("不可输入负数");
		alert("Don't input negative")
		aField.select();
		aField.focus();
		return false;
	}
	
	return true;
}

//********Add by Rebecca*********************
//*** one parameter name "aLang"***********

function ChkNumber(aField,aLang)
{	
	var val = 1*aField.value;
	var v_LangNo;
    	var mesg=CreateArrCommMesg(2,3);
    
    	mesg[0][0]="Please input Number";
    	mesg[0][1]="所输入的不是数字";
    	mesg[0][2]="┮块ぃ琌计";
    	
    	
    	mesg[1][0]="Don't input negative";
    	mesg[1][1]="不可输入负数";
    	mesg[1][2]="ぃ块璽计";
    	
   	 v_LangNo=GetLangNo(aLang);    	
	
	if(String(val)=="NaN"){
		//alert("所输入的不是数学");		
		//alert("Please input Number");
		alert(mesg[0][v_LangNo]);
		aField.select();
		aField.focus();
		return false;
	}
	
	if(val<0){
		//alert("不可输入负数");
		//alert("Don't input negative")
		alert(mesg[1][v_LangNo]);
		aField.select();
		aField.focus();
		return false;
	}
	
	return true;
}

//********Add by Licky*********************
function twoPlaces(amount) {
	// return number format ".99"
	return (amount == Math.floor(amount)) ? amount + '.00' : (  (amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
	}

function round(number,X) {
	// rounds number to X decimal places, defaults to 2
	X = (!X ? 2 : X);
	return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
	}
//**********************************************



function ChkForBlanks()
{
	var alertMsg="";
	switch(vLang){
		case "E" :
			alertMsg = "Please Enter "
			break;
		case "S" :
			alertMsg = "请输入"
			break;
		case "C" :		
			alertMsg = "叫块"	
		}
			
	for (var i = 0; i < arguments.length; i += 2)
	{
		if (!arguments[i])
			{alert(alertMsg + arguments[i+1] + ".");return false;}
	}
	return true;
}


function valDate(M, D, Y){
  Months= new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  Leap  = false;
  	
  if(String(D*1)=="NaN") return(false);
  if(String(M*1)=="NaN") return(false);
  if(String(Y*1)=="NaN") return(false);
  
  if((Y % 4 == 0) && ((Y % 100 != 0) || (Y %400 == 0)))
    Leap = true;
  if((D < 1) || (D > 31) || (M < 1) || (M > 12) || (Y < 0))
    return(false);
  if((D > Months[M-1]) && !((M == 2) && (D > 28)))
    return(false);
  if(!(Leap) && (M == 2) && (D > 28))
    return(false);    
  if((Leap)  && (M == 2) && (D > 29))
    return(false);    
  
  return(true);
}

function ChkDate(aField){

   cDate = aField.value;
   dSize = cDate.length;
   sCount= 0;
 
   if(cDate=='') return;
   
   //Check ou the slashs
   for(var i=0; i < dSize; i++)
      (cDate.substr(i,1) == "/") ? sCount++ : sCount;
   if (sCount != 2){
      alert('Date Format Not Correct(YYYY/MM/DD)!');
      aField.select();
      return(false);
   };
   
   //Check if the year is a 2 or 4 digits string
   //ySize = cDate.substring(cDate.indexOf("/")+1,dSize).length
   ySize = cDate.indexOf("/");
   if(ySize<2 || ySize>4 || ySize == 3){
     alert('Date Format Not Correct(YYYY/MM/DD)!');
     aField.select();
     return(false);
   };
   
   //Cut the date string into three parts (Month, Day & Year)
   idxBarI = cDate.indexOf("/");
   idxBarII= cDate.lastIndexOf("/");
   strY    = cDate.substring(0,idxBarI);
   strM    = cDate.substring(idxBarI+1,idxBarII);
   strD    = cDate.substring(idxBarII+1,dSize);
   strM = (strM.length < 2 ? '0'+strM : strM);
   strD = (strD.length < 2 ? '0'+strD : strD);
   if(strY.length == 2)
      strY = (strY > 50  ? '19'+strY : '20'+strY);
    
   ok = valDate(strM, strD, strY);
   if(ok==false){ 
     alert('Date Format Not Correct(YYYY/MM/DD)!');
     aField.select();
     return(false);
   };
   
   aField.value = strY+'/'+strM+'/'+strD;
}
//** add by rebecca on 2002-06-06 **************
//*** add one parameter named aLang to cater multi_lang
function ChkDate(aField,aLang){
	
var v_LangNo;
var mesg=CreateArrCommMesg(1,3);

mesg[0][0]="Date Format Not Correct(YYYY/MM/DD)!";
mesg[0][1]="日期格式不正确（年年年年/月月/日日）";
mesg[0][2]="ら戳Αぃタ絋/るる/らら";

v_LangNo=GetLangNo(aLang);     	
   cDate = aField.value;
   dSize = cDate.length;
   sCount= 0;
 
   if(cDate=='') return;
   
   //Check ou the slashs
   for(var i=0; i < dSize; i++)
      (cDate.substr(i,1) == "/") ? sCount++ : sCount;
   if (sCount != 2){
      //alert('Date Format Not Correct(YYYY/MM/DD)!');
      alert(mesg[0][v_LangNo]);
      aField.select();
      return(false);
   };
   
   //Check if the year is a 2 or 4 digits string
   //ySize = cDate.substring(cDate.indexOf("/")+1,dSize).length
   ySize = cDate.indexOf("/");
   if(ySize<2 || ySize>4 || ySize == 3){
     //alert('Date Format Not Correct(YYYY/MM/DD)!');
     alert(mesg[0][v_LangNo]);
     aField.select();
     return(false);
   };
   
   //Cut the date string into three parts (Month, Day & Year)
   idxBarI = cDate.indexOf("/");
   idxBarII= cDate.lastIndexOf("/");
   strY    = cDate.substring(0,idxBarI);
   strM    = cDate.substring(idxBarI+1,idxBarII);
   strD    = cDate.substring(idxBarII+1,dSize);
   strM = (strM.length < 2 ? '0'+strM : strM);
   strD = (strD.length < 2 ? '0'+strD : strD);
   if(strY.length == 2)
      strY = (strY > 50  ? '19'+strY : '20'+strY);
    
   ok = valDate(strM, strD, strY);
   if(ok==false){ 
     //alert('Date Format Not Correct(YYYY/MM/DD)!');
     alert(mesg[0][v_LangNo]);
     aField.select();
     return(false);
   };
   
   aField.value = strY+'/'+strM+'/'+strD;
   return(true);
}


//** add by winson on 2003-03-19 **************
//*** change msg parameter  to YYYY/MM
function ChkpartDate(aField,aLang){
	
var v_LangNo;
var mesg=CreateArrCommMesg(1,3);

mesg[0][0]="Date Format Not Correct(YYYY/MM)!";
mesg[0][1]="日期格式不正确（年年年年/月月）";
mesg[0][2]="ら戳Αぃタ絋/るる";
v_LangNo=GetLangNo(aLang);     	
   cDate = aField.value;
   dSize = cDate.length;
   sCount= 0;
 
   if(cDate=='') return;
   
   //Check ou the slashs
   for(var i=0; i < dSize; i++)
      (cDate.substr(i,1) == "/") ? sCount++ : sCount;
   if (sCount != 2){
      //alert('Date Format Not Correct(YYYY/MM/DD)!');
      alert(mesg[0][v_LangNo]);
      aField.select();
      return(false);
   };
   
   //Check if the year is a 2 or 4 digits string
   //ySize = cDate.substring(cDate.indexOf("/")+1,dSize).length
   ySize = cDate.indexOf("/");
   if(ySize<2 || ySize>4 || ySize == 3){
     //alert('Date Format Not Correct(YYYY/MM/DD)!');
     alert(mesg[0][v_LangNo]);
     aField.select();
     return(false);
   };
   
   //Cut the date string into three parts (Month, Day & Year)
   idxBarI = cDate.indexOf("/");
   idxBarII= cDate.lastIndexOf("/");
   strY    = cDate.substring(0,idxBarI);
   strM    = cDate.substring(idxBarI+1,idxBarII);
   strD    = cDate.substring(idxBarII+1,dSize);
   strM = (strM.length < 2 ? '0'+strM : strM);
   strD = (strD.length < 2 ? '0'+strD : strD);
   if(strY.length == 2)
      strY = (strY > 50  ? '19'+strY : '20'+strY);
    
   ok = valDate(strM, strD, strY);
   if(ok==false){ 
     //alert('Date Format Not Correct(YYYY/MM/DD)!');
     alert(mesg[0][v_LangNo]);
     aField.select();
     return(false);
   };
   
   aField.value = strY+'/'+strM+'/'+strD;
   return(true);
}


function DisplayErr(lang,merr,mdesc,maction) {
	var msg;
	if (lang=="C") {
		msg = "  错误讯息 !";
		msg = msg + "\n\r" + "=============";
		msg = msg + "\n\r";
		msg = msg + "\n\r" + "错误号码 : " + merr;
		msg = msg + "\n\r" + "错误详程 : " + mdesc;
		msg = msg + "\n\r" + "補救动作 : " + maction;
		alert(msg);
	}
	else {
		msg = "  Error Message !";
		msg = msg + "\n\r"+ "=================";
		msg = msg + "\n\r";
		msg = msg + "\n\r" + "Error code  : " + merr;
		msg = msg + "\n\r" + "Description : " + mdesc;
		msg = msg + "\n\r" + "Action      : " + maction;
		alert(msg);
	}

}


function del_rec(atxt, aform){
	if(confirm(atxt)){
		aform.status.value = "D";
		aform.submit();
	}
}


function CloseChild(aWin)
{
  if (aWin && aWin.open && !aWin.closed) aWin.close();
}


function RetSrch(aurl)
{
  parent.window.location.assign(aurl);
}


//check time format function
function valTime(H, M, S){
  if(String(H*1)=="NaN") return(false);
  if(String(M*1)=="NaN") return(false);
  if(String(S*1)=="NaN") return(false);

  if(H<0 || H>23){
    return(false);

  };

  if(M<0 || M>59){
    return(false);
  };

  if(S<0 || S>59){
    return(false);
  };
}

function ChkTime(aField){
   cTime = aField.value;
   dSize = cTime.length;
   sCount= 0;
   	
   if(cTime=='') return;
   
   //Check ou the ":"
   for(var i=0; i < dSize; i++)
      (cTime.substr(i,1) == ":") ? sCount++ : sCount;
   if (sCount != 2){
      alert("时间格式一定要是\n ''(时时/分分/秒秒)''");
      aField.select();
      return(false);
   };
   
   idxBar1 = cTime.indexOf(":");
   idxBar2 = cTime.lastIndexOf(":");
   strH = cTime.substring(0, idxBar1);
   strM = cTime.substring(idxBar1+1, idxBar2);
   strS = cTime.substring(idxBar2+1, dSize);
   strM = (strM.length < 2 ? '0'+strM : strM);
   strS = (strS.length < 2 ? '0'+strS : strS);
   ok = valTime(strH, strM, strS);
   if(ok==false){ 
     alert('时间格式不正确!');
     aField.select();
     return(false);
   };
   
   aField.value = strH+':'+strM+':'+strS;   
}

function ChkPc(aField){
   var cVal = parseInt(aField.value, 10);
   if (isNaN(cVal) || cVal>100 || cVal<0) {
      alert("输入数值不正确!");
      aField.select();
      return(false);
   }
   
   return(true);	
}

function ChkAlphaNumeric(aField,maxlen,minlen){
	var inStr = aField.value.toUpperCase();
	var inLen = inStr.length;

	if(inLen > maxlen || inLen < minlen) {
		return (false);
	}
	else {
		for(var i=0; i<inLen; i++) {		
  			var ch = inStr.substring(i,i+1);
            if (!((ch >= "0" && ch <= "9") || (ch >= "A" && ch <= "Z"))) {return(false); }
		}
	}
	return (true);
}

function ChkForDependence()
{
    // Check if any one fields provided are not blank, if so, all are mandatory
    var allBlank = true;
	for (var i = 0; i < arguments.length; i+=2)
	{
        if (arguments[i]) {allBlank = false;}
     }
     if (!allBlank) 
     {
        for (var i = 0; i < arguments.length; i+=2)    
	    {
		if (!arguments[i])
			{alert("Please Enter " + arguments[i+1] + ".");return false;}
         }               
     }
     return true;
    
}



function AddListValue(form_name, hf_desc, hf_code, f_del, code, val)
{
    //var temparray = new Array();
    //temparray = val.split("|");
    //eval(form_name + "." + hf_desc + ".value = " + "\"" + temparray[1] + "\"");
    //eval(form_name + "." + hf_code + ".value = " + "\"" + temparray[0] + "\"");
    //eval(form_name + "." + f_del + ".value=\"\"");
    //eval(form_name + "." + f_del + ".readOnly=true");
    //if (temparray[0] == code)
   //   eval(form_name + "." + f_del + ".readOnly=false");

    eval(form_name + "." + f_del + ".value=\"\"");
    eval(form_name + "." + f_del + ".readOnly=true");
    if (val == code)
      eval(form_name + "." + f_del + ".readOnly=false");
}

function GetDateObj(dateStr)
{
    var strY, strM, strD, idxBarI, idxBarII;
    dSize = dateStr.length;
   idxBarI = dateStr.indexOf("/");
   idxBarII= dateStr.lastIndexOf("/");
   strY    = dateStr.substring(0,idxBarI);
   strM    = dateStr.substring(idxBarI+1,idxBarII);
   strD    = dateStr.substring(idxBarII+1,dSize);
   NewDate = new Date(strY,strM, strD);   
    return NewDate;

}

function DateDiff(d2,d1)
{    
     var T2, T1;
     T2 = d2.getTime();
     T1 = d1.getTime();
    var x =  (T2 - T1) / (60 * 60 * 24  * 1000);    
    return x;
}

//GE : Generic function of check date different
function ChkDateDiff_GE(enddate, effdate)
{
     if(DateDiff(GetDateObj(enddate), GetDateObj(effdate)) >= 0) 
         return true;
     else
         return false;                          
 }
 
 function ChkDateRange(c_effdate, c_enddate, effdate, enddate)
 {
     if((ChkDateDiff_GE(c_effdate, effdate) && ChkDateDiff_GE(enddate, c_effdate)) || (ChkDateDiff_GE( c_enddate, effdate) && ChkDateDiff_GE(enddate,  c_enddate)) || (ChkDateDiff_GE(effdate, c_effdate) && ChkDateDiff_GE( c_enddate, enddate)))
            return true;
      else 
            return false;
 }

// check dup code (text field)
function ChkDupCode(index, field, message)
{
        var rowcnt;
        var isFull;
        var odel = document.getElementsByName(field);
        rowcnt = odel.length;
        
        for (var i = 0;i < rowcnt; i++) {
                isFull = ChkForBlanks(odel[i].value,"Item");
                if (!isFull) { break;}
          }
          if(!isFull)
              return false; 
          else
          {

              for(var j = 0; j < rowcnt-1; j++)
              {
   //alert("odel[" + j + "]:" + odel[j].value);

                  if(odel[index].value == odel[j].value)
                  {
                     alert(message);
                     return false;
                  }
              }
              return true;                          
           }
 }
 
 //argument(0)= form_name
 //argument(1)= action field
 //check which table's row was changed                   
 function ChkDefault()
 {
        var rowcnt;
        var form_name; 
        var no_of_field;
        var act_field_name;
        var str, theobj;

        form_name = arguments[0];
        no_of_field  = arguments.length-2;
        act_field = document.getElementsByName(arguments[1]);
        var ofield = new Array(no_of_field);
        var field_type =new Array(arguments.length -2);
        for(var i=2 ; i<arguments.length; i++){
            ofield[i-2] = document.getElementsByName(arguments[i]);
            theobj = ofield[i-2][0].type;
            field_type[i-2]= theobj ;
        }

        rowcnt = ofield[0].length;
        for(var i=0;i<rowcnt;i++)
        {
               //alert("act_field:" + act_field[i].value);

                if(act_field[i].value != "I")
                {
                    str = true;
                    for(var j = 0; j< no_of_field; j++ )
                    {
                        // alert("field:" + field_type[j]);
                        switch(field_type[j]){
                            case "select-one":                 // drop down list
                                str =  str && ofield[j][i].options[ofield[j][i].selectedIndex].defaultSelected ;
                                break;
                            case "text":                       //text
                                str =  str && (ofield[j][i].value == ofield[j][i].defaultValue);
                                break;
                            case "hidden":
                                str = str && (ofield[j][i].value == ofield[j][i].defaultValue);
                                break;
                         }    
                    }     
                    if (str)
                        act_field[i].value = "N";
                    else
                        act_field[i].value = "U";
                }
                //alert("act_field[" + i + "] :" + act_field[i].value);
         }        
}       
       
// check the input is numeric (include positive and negative number) 
// add by jessy (2002/01/31)
function isNumber(aField){
    oneDecimal = false;
    inputStr   = aField.value.toString();
    for (var i = 0; i < inputStr.length; i++)
    {
        var oneChar = inputStr.charAt(i);
        if(i ==0 && oneChar == "-")
            continue;
        if(oneChar == "." && !oneDecimal)
        {
            oneDecimal = true;
            continue;
        }
        if (oneChar < "0" || oneChar > "9")
        {
            alert("Please input a vaild numeric value!")
            return false;
         }
     }
     return true;
 }
 

// -- add by Rebecca (2002-6-5)
//add one paramater named aLang to cater multi-lang change
function isNumber(aField,aLang){	
    var v_LangNo;
    var mesg=CreateArrCommMesg(1,3);
    
    mesg[0][0]="Please input a vaild numeric value!";
    mesg[0][1]="请输入一个有效的数字";
    mesg[0][2]="叫块Τ计";
    v_LangNo=GetLangNo(aLang);    
    
    oneDecimal = false;
    inputStr   = aField.value.toString();
    for (var i = 0; i < inputStr.length; i++)
    {
        var oneChar = inputStr.charAt(i);
        if(i ==0 && oneChar == "-")
            continue;
        if(oneChar == "." && !oneDecimal)
        {
            oneDecimal = true;
            continue;
        }
        if (oneChar < "0" || oneChar > "9")
        {	
        	alert(mesg[0][v_LangNo]);
        	return false;
         }
     }
     return true;
 }

// -- Add by Licky (2002-3-8)
function chkCurrency(oField,len){
	//len: the number of decimal point
	//i.e. chkCurrency(A,2)--if a digital with two decimal points,
	//	this function will return true
	var ant,m_len;
	ant = oField.value; // ant is the value of oField object
	
	if (isNaN(ant)){ // is not number
           alert("Please input the number!!");
		return false;	
	}
	
	if (len==0){ // for Integer
		if (parseInt(ant)==ant){
			return ture;		
		}else{
			return false;
		}
	}
	if (ant.length<(4+len-2)){
           alert("Please input the decimal points!!");
		return false;	
	}
	m_len = ant.length-(3+len-2);
	if (ant.charAt(m_len)=="."){
		return true;	
	}else{
           alert("Max "+ len + " decimal points only! Please try again!!");
		return false;
	}
}       

//
// -- add by Adrian (2002/03/13)
//
function ChkAlpha(aValue,maxlen,minlen){
	var inStr = aValue.toUpperCase();
	var inLen = inStr.length;

	if(inLen > maxlen || inLen < minlen) {
		return (false);
	}
	else {
		for(var i=0; i<inLen; i++) {		
  			var ch = inStr.substring(i,i+1);
            if (!(ch >= "A" && ch <= "Z")) {return(false); }
		}
	}
	return (true);
}
 
//
// -- add by jessy (2002/03/25)
// 
function SetDisabled(){
     var form = window.document.forms[0];
     for (var i = 0; i< form.elements.length; i++)
         form.elements[i].disabled = true;
 }
   
   //
//-- add by Licky (2002/03/25)
// trim the blank at two side of one String 
	String.prototype.trim = function(){
		return this.replace(/(^\s*)&brvbar;(\s*$)/g,"");  
	} 

//
// -- add by jessy (2002/03/27)
// 
function triming(strInput)
{
	var strResults = strInput ; 
	while(strResults.charAt(0)==' ')
	{
 		strResults=strResults.substring(1,strResults.length);
 	}
 	
 	while(strResults.charAt(strResults.length-1)==' ')
 	{
		strResults=strResults.substring(0,strResults.length-1);
	}
	return strResults;
}

// 
// -- add by jessy (2002/04/08)
//
function AllUpper(aField)
{
    aField.value   = aField.value.toUpperCase();
    return true;
}


function AllLower(aField)
{
    aField.value = aField.value.toLowerCase();
    return true;
}

 function FirstCaps(aField)
 {
     var InputStr, i ,change, Uchar;
     InputStr = aField.value.toString();
     change   = "F";
     for (var i = 0; i < InputStr.length; i++)
     {
          var oneChar = InputStr.charAt(i);
          if (change == "T" || (i == 0 && oneChar != " "))
          {
               Uchar =oneChar.toUpperCase();
               if (i==0)
                   InputStr = Uchar + InputStr.substring(1,InputStr.length);
               else
                   InputStr = InputStr.substring(0,i) + Uchar + InputStr.substring(i+1,InputStr.length);    
               change ="F";
          } 
          if(oneChar == " ")
               change = "T";
     }
     aField.value = InputStr;
     return true;

 }

//
//-- Add by Licky (2002-4-22)
//  check the number if it exceed the decimal limit
//	Parm --	obj : Number object
//		len : the max decimal point
	function maxDecimalPoint(obj,len){

		var objVal,position;
		var tmpVal;
		var valLen;
		
		objVal = obj.value;
		valLen = objVal.length;
		
		if (isNumber(obj)){
			position = objVal.indexOf(".");
			if (position >0){
				tmpVal = objVal.substring(position+1,valLen);
				if (tmpVal.length>len){
					obj.select();
					obj.focus();
					return false;
				}else{
					return true;
				}
			}
			else{
				return true;
			}
		}else{
			obj.select();
			obj.focus();
			return false;
		}
		
	}

// *** add by rebecca on 2002-06-06 **********
//**** create Array of common message ***
function CreateArrCommMesg(v_Row,v_Col){
	var mesg=new Array(v_Row);
	
	for(var i=0;i<mesg.length;i++){		
		mesg[i]=new Array(v_Col);		
		mesg[i][0]="";
		mesg[i][1]="";
		mesg[i][2]="";		
	}
	return mesg;
}

function GetLangNo(aLang){
	switch(aLang){
		case 'E':		
			return 0;
		case 'S':
			return 1;			
		case 'C':
			return 2;
            default:
                  return 0;
			
	}
}
// ********************************************
//** add by jessy on 2002-09-18 **************
//*** add one parameter named aLang to cater multi_lang
function ChkDateTime(aField,aLang){
	
var v_LangNo;
var mesg=CreateArrCommMesg(1,3);

mesg[0][0]="Date Format Not Correct(YYYY/MM/DD HH:MM:SS)!";
mesg[0][1]="Date Format Not Correct(YYYY/MM/DD HH:MM:SS)!";
mesg[0][2]="ら戳Αぃタ絋/るる/らら :だだ:";

v_LangNo=GetLangNo(aLang);     	
   cDateTime = aField.value;
   DTSize = cDateTime.length;
   sCount= 0;
 
   if(cDateTime=='') return;
   cDate = cDateTime.substring(0,10);
   dSize = cDate.length;
   cTime = cDateTime.substring(11,DTSize);
   tSize = cTime.length;
    
   // check the space
    if (cDateTime.charAt(10) != " "){
     alert(mesg[0][v_LangNo]);
//alert("1");
      aField.select();
      return(false);
    };

   //Check ou the slashs
   for(var i=0; i < dSize; i++)
      (cDate.substr(i,1) == "/") ? sCount++ : sCount;
   if (sCount != 2){
     alert(mesg[0][v_LangNo]);
//alert("2");
      aField.select();
      return(false);
   };
   
   //Check if the year is a 2 or 4 digits string
   //ySize = cDate.substring(cDate.indexOf("/")+1,dSize).length
   ySize = cDate.indexOf("/");
   if(ySize<2 || ySize>4 || ySize == 3){
     alert(mesg[0][v_LangNo]);
//alert("3");
     aField.select();
     return(false);
   };
   
   //Cut the date string into three parts (Month, Day & Year)
   idxBarI = cDate.indexOf("/");
   idxBarII= cDate.lastIndexOf("/");
   strY    = cDate.substring(0,idxBarI);
   strM    = cDate.substring(idxBarI+1,idxBarII);
   strD    = cDate.substring(idxBarII+1,dSize);
   strM = (strM.length < 2 ? '0'+strM : strM);
   strD = (strD.length < 2 ? '0'+strD : strD);
   if(strY.length == 2)
      strY = (strY > 50  ? '19'+strY : '20'+strY);
    
   ok = valDate(strM, strD, strY);
   if(ok==false){ 
     alert(mesg[0][v_LangNo]);
//alert("4");
     aField.select();
     return(false);
   };
   
  sCount= 0;

 //********************************************* check for time ********************************
 //Check ou the ":"
   for(var i=0; i < tSize; i++)
      (cTime.substr(i,1) == ":") ? sCount++ : sCount;
   if (sCount != 2){
      alert(mesg[0][v_LangNo]);
//alert("5");
      aField.select();
      return(false);
   };
   
   idxBar1 = cTime.indexOf(":");
   idxBar2 = cTime.lastIndexOf(":");
   strH  = cTime.substring(0, idxBar1);
   strMi = cTime.substring(idxBar1+1, idxBar2);
   strS  = cTime.substring(idxBar2+1, tSize);
   strMi = (strMi.length < 2 ? '0'+strMi : strMi);
   strS  = (strS.length < 2 ? '0'+strS : strS);
   ok    = valTime(strH, strMi, strS);
   if(ok==false){ 
     alert(mesg[0][v_LangNo]);
//alert("6");
     aField.select();
     return(false);
   };


   aField.value = strY+'/'+strM+'/'+strD + " " + strH+':'+strMi+':'+strS;
   return(true);
}


function exceedLength(oField,Len){
	var sString;
	if (typeof oField == "undefined"){
		sString = "";
	}else{
		sString = oField.value;
	}
	sString = sString.trim();
	var textLang = CreateArrTextLang(1,3);
	
	textLang[0][0] = "The input exceed the restriction(Should be " + Len + " Characters)";
	textLang[0][1] = "输入超出限制（" + Len +  "个字符）";
	textLang[0][2] = "块禬" + Len + "才";
	
	if (sString.length > Len){
		alert(getTextVal(0,textLang));
		oField.focus();
		return true;
	}else{
		return false;
	}
	
}


//--------Add by Licky -------2004/06/21----------
//--------For solving the DDL problem------------------
	
	function formatDDL(ddlName,formname,ctrlname,len){
		var i = 0;
		var hidObj;
		var ddlObj;

		/*if (len == 1){
				hidObj = eval("document." + formname + "." + ctrlname + "0");
				ddlObj = eval("document." + formname + "." + ddlName );
				alert(ddlObj[0].text)
				ddlObj[0].text = hidObj.value;
		}else {*/
			for (i=0;i<len;i++){
				hidObj = eval("document." + formname + "." + ctrlname + i);
				ddlObj = eval("document." + formname + "." + ddlName + "[" + i + "]");
				ddlObj.text = hidObj.value;
			}
		//}

	
	}
