//Function List
// isFloat (s [,eok])                  True if string s is an unsigned floating point (real) number. (Integers also OK.)
// dot (num)							add dot to the number.

// VARIABLE DECLARATIONS
var defaultEmptyOK = false;
var digits = "0123456789";

var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"

var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"


// whitespace characters
var whitespace = " \t\n\r";


// decimal point character differs by language and culture
var decimalPointDelimiter = "."


// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";


// characters which are allowed in US phone numbers
var validUSPhoneChars = digits + phoneNumberDelimiters;


// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = digits + phoneNumberDelimiters + "+";


// non-digit characters which are allowed in 
// Social Security Numbers
var SSNDelimiters = "- ";



// characters which are allowed in Social Security Numbers
var validSSNChars = digits + SSNDelimiters;



// U.S. Social Security Numbers have 9 digits.
// They are formatted as 123-45-6789.
var digitsInSocialSecurityNumber = 9;



// U.S. phone numbers have 10 digits.
// They are formatted as 123 456 7890 or (123) 456-7890.
var digitsInUSPhoneNumber = 10;



// non-digit characters which are allowed in ZIP Codes
var ZIPCodeDelimiters = "-";



// our preferred delimiter for reformatting ZIP Codes
var ZIPCodeDelimeter = "-"


// characters which are allowed in Social Security Numbers
var validZIPCodeChars = digits + ZIPCodeDelimiters



// U.S. ZIP codes have 5 or 9 digits.
// They are formatted as 12345 or 12345-6789.
var digitsInZIPCode1 = 5
var digitsInZIPCode2 = 9


// non-digit characters which are allowed in credit card numbers
var creditCardDelimiters = " "

//----------------------------------------------------------
//????text????????????????
//??????onblur="checkLength(this,????????????);",
//----------------------------------------------------------
function checkLength(v,l){
 var s = v.value;
 var len = 0;
   for(i=0;i<s.length;i++){
     var c = s.substr(i,1);
     var ts = escape(c);
     if(ts.substring(0,2) == "%u") {
      len+=2;
     } else {
      len+=1;
     }
   }
   if(l>=len){
     return;
   }
   else{
	var aaa=Math.floor(l/2);
	alert("????????????????????????"+l+"????????"+aaa+"????????");
    v.value = "";
    v.focus();
   }
}

//----------------------------------------------------------
//????textarea????????????????
//??????onblur="checkAreaLength(this,????????????);"
//----------------------------------------------------------
function checkAreaLength(v,l){
 var s= v.value;
 var temlen=0;
 var len = 0;
 for(i=0;i<s.length;i++){
     var c = s.substr(i,1);
     var ts = escape(c);

     if(ts.substring(0,2) == "%u"){
      len+=2;
      len+=temlen;
      temlen=0;
     }
     else if(ts.substring(0,3) == "%0D"){
      temlen+=1;
     }
     else if(ts.substring(0,3) == "%0A"){
         temlen+=1;
     }
     else if(ts.substring(0,3) == "%20"){
      temlen+=1;
     }
      else{
      len+=1;
      len+=temlen;
      temlen=0;
     }
   }
  if(len>l){
	var aaa=Math.floor(l/2);
	alert("????????????????????????"+l+"????????"+aaa+"????????");  	
    v.value = "";
    v.focus();
    return false;
  }
  return true;
}


//----------------------------------------------------------
//	????????????????
//	????????
//	true??????
//	false????????
//----------------------------------------------------------
function isEmpty(e)
{
	if( trim(e) == "" )
		return true;
	else
		return false;
}

//----------------------------------------------------------
// 	????????????????????
//	????????
//	??????????????????
//----------------------------------------------------------
function trim(param) {
	if ((vRet = param) == '') { return vRet; }
	while (true) {
		if (vRet.indexOf (' ') == 0) {
			vRet = vRet.substring(1, parseInt(vRet.length));
		} else if ((parseInt(vRet.length) != 0) && (vRet.lastIndexOf (' ') == parseInt(vRet.length) - 1)) {
			vRet = vRet.substring(0, parseInt(vRet.length) - 1);
		} else {
			return vRet;
		}
	}
}


//----------------------------------------------------------
//	????????
//----------------------------------------------------------
function commonprint(title,divId,cardNo,branchName,width,height){
	//alert("HELLO");
	var sarg=new Array();
	var sdata=document.all.item(divId);
	sarg[0]=title;
	text = sdata.outerHTML;
	text = text.replace(/border=[^[1|\s]]*([\s|>])/ig,"border=1 style='border-collapse:collapse' bordercolor='#000000'$1");
	text = text.replace(/cellSpacing=[^[0|\s]]*([\s|>])/ig,"$1");
	text = text.replace(/cellPadding=[^[0|\s]]*([\s|>])/ig,"$1");
	text = text.replace(/<TABLE/ig,"<TABLE cellSpacing=0 cellPadding=0");
	
	sarg[1]=text;
	sarg[2]=cardNo;
	sarg[3]=branchName;
	//alert(test);
	//alert(sarg[1]);
	window.showModalDialog("print.jsp",sarg,"dialogWidth:"+width+"px;dialogHeight:"+height+"px;center:yes;help:no;status:no;resizable:yes");
	return;
}

//----------------------------------------------------------
//	??????????????????
//	????????
//	true??	??????
//	false??	????????
//----------------------------------------------------------
function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isInteger (s)

{   var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

    // All characters are numbers.
    return true;
}

// isFloat (STRING s [, BOOLEAN emptyOK])
// 
// True if string s is an unsigned floating point (real) number. 
//
// Also returns true for unsigned integers. If you wish
// to distinguish between integers and floating point numbers,
// first call isInteger, then call isFloat.
//
// Does not accept exponential notation.
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.
function isFloat (s)

{   var i;
    var seenDecimalPoint = false;

    if (isEmpty(s)) return "1"; 
    if (s == decimalPointDelimiter) return "1";

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
		
        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return "1";
    }

    // All characters are numbers.
    return "0";
}


// Returns true if character c is a digit 
// (0 .. 9).

function isDigit(c)
{
	return ((c >= "0") && (c <= "9"))
}
function isDigits(strValue)
{
	if(strValue==null||strValue=="")
		return false;
	if(isNaN(strValue))
		return false;
	return true;
}


//add dot to the number.
function dot(num) {
var count=0;	
var number=0;
var DotIndex;
var isSigned = false;
var signflag ='';

	for (i = 0; i < num.length; i++)
    {   
        var c = num.charAt(i);
        if (c == decimalPointDelimiter)
        	count=1;
	if(c=='+' || c=='-'){	  
	   isSigned = true;
	}
    }
     if(isSigned){
	signflag = num.charAt(0);
	num	 = num.substring(1);
	}
	
	if (count==0 && num.length>2){
		number=num.substring(0,num.length-2)+"."+num.substring(num.length-2);
	}
	if (count==0 && num.length<3)
	{
		if(num.length==1){			 
			   number="0.0"+num;			
		}else if(num.length==2){			 		
			   number="0."+num;			
		}else{
		  	number	= "";
		}
	}
	if (count==1)		
	{	
		DotIndex=num.indexOf('.');		
		if(DotIndex==0){
		  number="0"+"."+(num+"000").substring(DotIndex+1,DotIndex+3);
		}else{		
		  number = num.substring(0,DotIndex)+"."+(num+"000").substring(DotIndex+1,DotIndex+3);
		}					       			
	}
	
	var result;	
	result = parseFloat(number);
	if(!isNaN(result)){
	  if(result==0){
	    result = "0.00";
	    return result;
	  }
	}else{
	  result = "0.00"; //错误的金额格式!	 
	  return result;
	}
	
	var rtn;
	rtn = ""+result;
	DotIndex = rtn.indexOf('.');
	if(DotIndex>-1){
	  rtn = (rtn+"00").substring(0,DotIndex+3);
	}else{
	  rtn = rtn+".00";
	}
	if('-'==signflag){
	  rtn = signflag +rtn;
	}

	return rtn;
}


//add dot to the number in terms of integer bounds
function dotWithinIntegerBound(num,intMaxLen) {
var count=0;	
var number=0;
var DotIndex;
var isSigned = false;
var signflag ='';

	for (i = 0; i < num.length; i++)
    {   
        var c = num.charAt(i);
        if (c == decimalPointDelimiter)
        	count=1;
	if(c=='+' || c=='-'){	  
	   isSigned = true;
	}
    }
     if(isSigned){
	signflag = num.charAt(0);
	num	 = num.substring(1);
	intMaxLen = intMaxLen -1;
	}

	if (count==0 && num.length>2){
		number=num.substring(0,Math.min(num.length-2,intMaxLen))+"."+num.substring(Math.min(num.length-2,intMaxLen),Math.min(num.length,intMaxLen+2));
	}
	if (count==0 && num.length<3)
	{
		if(num.length==1){			 
			   number="0.0"+num;			
		}else if(num.length==2){			 		
			   number="0."+num;			
		}else{
		  	number	= "";
		}
	}
	if (count==1)		
	{	
		DotIndex=num.indexOf('.');		
		if(DotIndex==0){
		  number="0"+"."+(num+"000").substring(DotIndex+1,DotIndex+3);
		}else{		
		  number = num.substring(0,Math.min(DotIndex,intMaxLen))+"."+(num+"000").replace('.','').substring(Math.min(DotIndex,intMaxLen),Math.min(DotIndex,intMaxLen)+2);
		}					       			
	}

	var result;	
	result = parseFloat(number);
	if(!isNaN(result)){
	  if(result==0){
	    result = "0.00";
	    return result;
	  }
	}else{
	  result = "0.00"; //错误的金额格式!	 
	  return result;
	}
	
	var rtn;
	rtn = ""+result;
	DotIndex = rtn.indexOf('.');
	if(DotIndex>-1){
	  rtn = (rtn+"00").substring(0,DotIndex+3);
	}else{
	  rtn = rtn+".00";
	}
	if('-'==signflag){
	  rtn = signflag +rtn;
	}

	return rtn;
}

function disableAllButton()
{
 var inputObjs=document.getElementsByTagName("input");
  for(i=0;i<inputObjs.length;i++) {
		if(inputObjs[i].type == "button" || inputObjs[i].type == "reset" || inputObjs[i].type == "submit") {
			inputObjs[i].disabled=true;
		}
	}


}
function enableAllButton()
{

	for(i=0;i<document.all.length;i++) {
		if(document.all(i).type == "button" || document.all(i).type == "reset" || document.all(i).type == "submit") {
			document.all(i).disabled=false;
		}
	}

}

function LPAD(str,strlength,padstr){
	var retstr = '';
	if(padstr.length > 1){
		return str;
	}
	if (str.length < strlength){
		for (var i =0 ; i < strlength - str.length; i++){
			retstr += padstr; 
		} 
		
		retstr += str;
	}else{
		retstr = str;
	}
	return retstr;	
}
/**
* This function is to check if a form (or a container of implements) has been changed.
* JK 2004-01-05
* formObj:the checked form
* exceptObjName:the name of whitch need not be checked;
* For example:isFormChangedFun(document.frm,"ACheckbox,BRadio,CSelect");
*/
function isFormChanged(formObj,exceptObjName)
{
if(formObj==null) formObj=document.forms[0];
if(exceptObjName==null) exceptObjName=="";
var selectObjs=formObj.getElementsByTagName("SELECT");//For Select Obj
for(var i=0;i<selectObjs.length;i++)
{
if((selectObjs[i].name=="")||(eval("/(^|,)"+selectObjs[i].name+"(,|$)/g").test(exceptObjName))) continue;
for(var j=1;j<selectObjs[i].length;j++)
{
if(selectObjs[i].options[j].defaultSelected!=selectObjs[i].options[j].selected)
return true;
}
}
var inputObjs=formObj.getElementsByTagName("INPUT");//For Input Obj
for(var i=0;i<inputObjs.length;i++)
{
//if(inputObjs[i].name=="")||
if((eval("/(^|,)"+inputObjs[i].name+"(,|$)/g").test(exceptObjName))) continue;
if((inputObjs[i].type.toUpperCase()=="TEXT")&&(inputObjs[i].defaultValue!=inputObjs[i].value))
{return true;}
else if(((inputObjs[i].type.toUpperCase()=="RADIO")||(inputObjs[i].type.toUpperCase()=="CHECKBOX"))
&&(inputObjs[i].defaultChecked!=inputObjs[i].checked)){
//alert(inputObjs[i].id+"="+inputObjs[i].defaultChecked+" "+inputObjs[i].checked);
return true;}
}
var textareaObjs=formObj.getElementsByTagName("TEXTAREA");//For Textarea Obj
for(var i=0;i<textareaObjs.length;i++)
{
if((textareaObjs[i].name=="")||(eval("/(^|,)"+textareaObjs[i].name+"(,|$)/g").test(exceptObjName))) continue;
if(textareaObjs[i].defaultValue!=textareaObjs[i].value)
return true;
}
return false;
}