﻿/*CreateBy Jack
8 BS 9 Tab 13 Enter 35 End 36 Home 37 Left 39 Right 46 Del
*/
//Modified by houling 2008-10-28 修改所有方法中的event.KeyCode为参数传入方式var vKey = e.keyCode || e.which;


var GV_ExceptInputWord= new Array(8,9,13,35,36,37,39,46); 
//计算中英字长度
function StrLenthByByte(str) 
{ 
	var len; 
	var i; 
	len = 0; 
	for (i=0;i<str.length;i++) 
	{ 
		if (str.charCodeAt(i)>255) len+=2; else len++; 
	} 
	return len; 
}
/*Create By Jack
	限制中文字以2个字符,英文字1个字符限制输入
	Event onKeyDown
*/
function chChinesEnglishWord_onKeyDown(e,Obj)
{
	var vKey = e.keyCode || e.which;
	
	if(StrLenthByByte(Obj.value)>=Obj.maxLength){
		if(GV_ExceptInputWord.search(vKey)==0){
			return false;
		}else{
			return true;
		}
	}else
		return true;
}

function chReplaceSpecicalword_onKeyUp(e,obj)
{
	var vKey = e.keyCode || e.which;
	if(vKey==188)
	{
		obj.value=obj.value.replace(',','，');
	}
	if(vKey==222)
	{
		obj.value=obj.value.replace('\'','＇');
	}
}
//取代 单引号 ' 跟及双引号"
function ReplaceSpecWord(){ 
	for (i=0; i<document.all.length; i++){
		if(document.all(i).tagName=='FORM')
		{
			for(var j=0;j<=document.all(i).elements.length-1;++j){
				if((document.all(i).elements[j].type=='text') || (document.all(i).elements[j].type=='textarea')){
					str=document.all(i).elements[j].value.replace(/'/g,'’');
					str=str.replace(/"/g,'”');
					document.all(i).elements[j].value=str;
				}
			}
		}
	}
}

//From Jack_chang	onkeypress调用，不可输入的字元 String.fromCharCode
//!=33 "=34 #=35 $=36 %=37 &=38 '=39 (=40 )=41 *=42 +=43 ,=44 -=45 .=46 /=47 :=58 ;=59 <=60 
//==61 >=62 ?=63 @=64 [=91 \=92 ]=93 ^=94 _=95 `=96 |=124 ~=126 
function chNotSpecicalword_onkeypress(e,specStr) {	// 
	
	var vKey = e.keyCode || e.which;
	var splitStr=specStr.split(',');
	for (i in splitStr){
		if(vKey==parseInt(splitStr[i]))
		{	event.returnValue = false;
			alert("此框不能输入此字符!");
			event.srcElement.focus();
		}
	}
}
function chRealNumber_onkeypress(e) {	// onkeypress调用，检查只可以输入正负数字和点
	
	var vKey = e.keyCode || e.which;
	if ((vKey < 48) || (vKey > 57))
	{	if ((vKey < 45) || (vKey > 46)){
			event.returnValue = false;alert("此框只可以输入正负数和点!");
			event.srcElement.focus();
		}else{
			var range = document.selection.createRange();
			if(vKey==45&&event.srcElement.value.length>0&&range.text.length!=event.srcElement.value.length){
				event.returnValue = false;
				alert("此框只可以输入正负数和点!");
				event.srcElement.focus();
			}
		}
	}
}
function chIntNumber_onkeypress(e) {	// onkeypress调用，检查只可以输入正负数字
	
	var vKey = e.keyCode || e.which;
	if ((vKey < 48) || (vKey > 57))
	{	if ((vKey < 45) || (vKey >= 46)){
			event.returnValue = false;alert("此框只可以输入正负数!");
			event.srcElement.focus();
		}else{
			var range = document.selection.createRange();
			if(vKey==45&&event.srcElement.value.length>0&&range.text.length!=event.srcElement.value.length){
				event.returnValue = false;alert("此框只可以输入正负数!");
				event.srcElement.focus();
			}
		}
	}
}
function chPhoneInput_onkeypress(e){	// onkeypress调用，检查只能输入英文
	
	var vKey = e.keyCode || e.which;
	regx = new RegExp(/^[\x08\x25\x27\x2E0-9\-/ ]{1}$/);	
	return regx.test(String.fromCharCode(vKey));
}
function chIntchar_onkeypress(e){	// onkeypress调用，检查只能输入英文
	//debugger;
	var vKey = e.keyCode || e.which;
	regx = new RegExp(/^[a-z A-Z\x08\x25\x27\x2E]{1}$/);	
	return regx.test(String.fromCharCode(vKey));
}
function chnonSpacechar_onkeypress(e){	// onkeypress调用，检查只能输入英文
	
	var vKey = e.keyCode || e.which;
	regx = new RegExp(/^[a-zA-Z\x08\x25\x27\x2E]{1}$/);	
	return regx.test(String.fromCharCode(vKey));
}
// onkeypress调用，检查只可以输入数字和点
function chNumberAndDot_onkeypress(e) {	
	
	var vKey = e.keyCode || e.which;
	if ((vKey < 48) || (vKey > 57))
		{if (vKey != 46)
			{event.returnValue = false;alert("此框只可以输入数字和点!");event.srcElement.focus();}
		}
}
// onkeypress调用，检查只可以输入数字，逗号和分号
function chNumberDot1_onkeypress(e) {
	
	var vKey = e.keyCode || e.which;
	if ((vKey < 48) &&(vKey != 44) || (vKey > 57) &&(vKey != 59))
		{event.returnValue = false;alert("此框只可以输入数字,逗号和分号!");event.srcElement.focus();}
}
// onkeypress调用，检查只可以输入数字
function chNumber_onkeypress(e) {	
	
	var vKey = e.keyCode || e.which;
	if ((vKey < 48) || (vKey > 57)) 
	{event.returnValue = false;alert("This information can only be in numbers!");event.srcElement.focus();}
}
/*
用来检测输入框中的数字介于两个数字之间。
Event onSubmit
OBJ对象名称 MinNum最小值 MaxNum最大值 Minlengh限制输入的数值的最小长度 WrongMsg 1 显示信息
2006/3/8 by ws
*/
function numBetweenNum(OBJ,MinNum,MaxNum,Minlength,WrongMsg)
{
	var objname
	objname='';
	if(OBJ.alt!='' || OBJ.title!='')
	{
		if(OBJ.alt!='')
			objname=OBJ.alt;
		else
			objname=OBJ.title;
	}
	if (Minlength==0&&OBJ.value.length==0){
		return true;
	}
    if (isNaN(OBJ.value)){
		if(WrongMsg=1) alert(objname+'资料必须是数值型态!');
		return false
	}
	else{
		if (OBJ.value.length<Minlength){
			if(WrongMsg=1) alert(objname+'资料最少要'+Minlength+'位!');
			return false;
		}
		if(OBJ.value>=MinNum && OBJ.value<=MaxNum){
			return true
		}
		else{
			if(WrongMsg=1) alert(objname+'资料必须介于'+MinNum+'和'+MaxNum+'之间!');
			return false
		}
	}
}
// onkeypress调用，检查只可以输入数字
function chOneToNig_onkeypress(e) {
	
	var vKey = e.keyCode || e.which;
	if ((vKey < 49) || (vKey > 57)) 
	{event.returnValue = false;alert("此框只可以输入数字1-9 !");event.srcElement.focus();}
}
// onkeypress调用，检查只可以输入数字和-
function chPhone_onkeypress(e) {	

	var vKey = e.keyCode || e.which;
	if ((vKey < 44) || (vKey > 46) && (vKey < 48) || (vKey > 57))
	{event.returnValue = false;alert("此框只可以输入数字和“-＂ !");event.srcElement.focus();}
}
// onkeypress调用，检查只可以输入数字和字母
function chEmpID_onkeypress(e) {	
	
	var vKey = e.keyCode || e.which;
	if ((vKey < 48) || (vKey > 57 && vKey < 65) || (vKey > 90 && vKey < 97) || (vKey > 122))
	{event.returnValue = false;alert("此框只可以输入数字和字母 !");event.srcElement.focus();}
}
//去掉左空格  ,回车字符串
function chLTrim(){ 
	for (i=0; i<document.all.length; i++){
		if(document.all(i).tagName=='FORM')
		{
			for(var j=0;j<=document.all(i).elements.length-1;++j){
				if((document.all(i).elements[j].type=='text') || (document.all(i).elements[j].type=='textarea')){
					//if((document.all(i).elements[j].type=='text') && (document.all(i).elements[j].value.length>document.all(i).elements[j].size))
//					{
//						alert('系统限制长度'+document.all(i).elements[j].size+',超出系统限制长度!');
//						document.all(i).elements[j].focus()
//						break;
//					}
					str=document.all(i).elements[j].value.replace(/'/g,'’');
					var strL = "";
					for(k=0;k<str.length;k++) {
						if(str.charCodeAt(k)!=32) {
							for(l=k;l<str.length;l++) {
					
								strL += String.fromCharCode(str.charCodeAt(l))
							}
							document.all(i).elements[j].value=strL;
							break;		
						}
					} 
					document.all(i).elements[j].value=strL;
				}
			}
		}
	}
}
	//结束
	//去掉右空格  ,回车字符串
function chLTrim(){ 
	for (i=0; i<document.all.length; i++){
		if(document.all(i).tagName=='FORM')
		{
			for(var j=0;j<=document.all(i).elements.length-1;++j){
				if((document.all(i).elements[j].type=='text') || (document.all(i).elements[j].type=='textarea')){
					str=document.all(i).elements[j].value;
					var strL = "";
					for(k=0;k<str.length;k++) {
						if(str.charCodeAt(k)!=32) {
							for(l=k;l<str.length;l++) {
					
								strL += String.fromCharCode(str.charCodeAt(l))
							}
							document.all(i).elements[j].value=strL;
							break;		
						}
					} 
					document.all(i).elements[j].value=strL;
				}
			}
		}
	}
}
//去掉Form1所有左右的空格	
	function chLRTrim(){
		chLTrim();
		chRTrim();
	}
//Jack_Chang
function regInput(obj, reg, inputStr)
{
	var docSel    = document.selection.createRange()
	if (docSel.parentElement().tagName != "INPUT")    return false
	oSel = docSel.duplicate()
	oSel.text = ""
	var srcRange    = obj.createTextRange()
	oSel.setEndPoint("StartToStart", srcRange)
	var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
	return reg.test(str)
}
/*
==================================================================
LTrim(string):去除左边的空格
==================================================================
*/
function LTrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);  
    if (whitespace.indexOf(s.charAt(0)) != -1)
    {
        var j=0, i = s.length;
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
        {
            j++;
        }
        s = s.substring(j, i);
    }
    return s;
}
/*
==================================================================
RTrim(string):去除右边的空格
==================================================================
*/
function RTrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);
    if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
    {
        var i = s.length - 1;
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
        {
            i--;
        }
        s = s.substring(0, i+1);
    }
    return s;
}
/*
Createby WS 2006/3/7
Event KeyPress
用于限制输入框的字数，有三个参数。obj要限制的对象，length要控制的字符数，msg显示的提示信息。
*/
function chCheckLenth(obj,lenth,msg)
{ 
   if(obj.value.length>=lenth)
	{
		obj.value=obj.value.substr(0,(obj.value.length-1))
		alert(msg)
	}
 }
 //不限制输入框子数，超出范围是报错
 function chCheckLenthnolimit(obj,lenth,msg)
{ 
   if(obj.value.length>=lenth)
 {
  //obj.value=obj.value.substr(0,(obj.value.length-1))
   alert(msg);
      }
 }
/*
=================================================================
Trim(string):去除前后空格
==================================================================
*/
function Trim(str)
{
    return RTrim(LTrim(str));
}

function DateAdd(timeU,byMany,dateObj) {
	var millisecond=1;
	var second=millisecond*1000;
	var minute=second*60;
	var hour=minute*60;
	var day=hour*24;
	var newDate;
	var dVal=dateObj.valueOf();
	switch(timeU) {
		case "ms": newDate=new Date(dVal+millisecond*byMany); break;
		case "s": newDate=new Date(dVal+second*byMany); break;
		case "mi": newDate=new Date(dVal+minute*byMany); break;
		case "h": newDate=new Date(dVal+hour*byMany); break;
		case "m":newDate =new Date(dateObj.getYear(),dateObj.getMonth()+byMany,dateObj.getDate());break;
		case "d": newDate=new Date(dVal+day*byMany); break;
		case "y":newDate =new Date(dateObj.getFullYear()+byMany,dateObj.getMonth(),dateObj.getDate());break;
	}
	return newDate;
}
function Cdate(DateStr,DateFormat,splitStr)
{
	var dSize;
	dSize=DateStr.length;
	if(dSize==0)
	{
		b=new Date();
	}
	else
	{
		if(DateFormat.indexOf('yyyy')==0){
			idxBarI = DateStr.indexOf(splitStr); 
			idxBarII= DateStr.lastIndexOf(splitStr); 
			strY = DateStr.substring(0,idxBarI);
			strM = DateStr.substring(idxBarI+1,idxBarII); 
			strD = DateStr.substring(idxBarII+1,dSize); 
		}
		else
		{
			idxBarI = DateStr.indexOf(splitStr); 
			idxBarII= DateStr.lastIndexOf(splitStr); 
			strD = DateStr.substring(0,idxBarI); 
			strM = DateStr.substring(idxBarI+1,idxBarII); 
			strY = DateStr.substring(idxBarII+1,dSize); 
		}
		b=new Date(parseInt(strY,10),parseInt(strM,10)-1,parseInt(strD,10));
	}
	return b;
	//b.setUTCDate(Date.UTC(strY,strM,strD));
	
}
// DateDiff("m","2002/12/1 00:00:00","2004/12/1 00:00:00")
function DateDiff(strInterval, dtStart, dtEnd) {
 var dtStart = new Date(dtStart);
 if (isNaN(dtStart)) dtStart = new Date();
 var dtEnd = new Date(dtEnd);
 if (isNaN(dtEnd)) dtEnd = new Date();
 switch (strInterval) {
  case "s":return parseInt((dtEnd - dtStart) / 1000);
  case "n":return parseInt((dtEnd - dtStart) / 60000);
  case "h":return parseInt((dtEnd - dtStart) / 3600000);
  case "d":return parseInt((dtEnd - dtStart) / 86400000);
  case "w":return parseInt((dtEnd - dtStart) / (86400000 * 7));
  case "m":return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);
  case "y":return dtEnd.getFullYear() - dtStart.getFullYear();
 }
}

/*
 * DateFormat.js
 * Formats a Date object into a human-readable string
 *
 * Copyright (C) 2001 David A. Lindquist (http://www.gazingus.org)
 */

Date.MONTHS = [
  'January', 'February', 'March', 'April', 'May', 'June', 'July',
  'August', 'September', 'October', 'November', 'December'
];

Date.DAYS = [
  'Sunday', 'Monday', 'Tuesday', 'Wednesday',
  'Thursday', 'Friday', 'Saturday'
];

Date.SUFFIXES = [
  'st','nd','rd','th','th','th','th','th','th','th',
  'th','th','th','th','th','th','th','th','th','th',
  'st','nd','rd','th','th','th','th','th','th','th',
  'st'
];

Date.prototype.format = function( mask ) {
  var formatted     = ( mask != null ) ? mask : 'DD-MMM-YY';
  var letters       = 'DMYHdhmst'.split( '' );
  var temp          = new Array();
  var count         = 0;
  var regexA;
  var regexB        = /\[(\d+)\]/;

  var day           = this.getDay();
  var date          = this.getDate();
  var month         = this.getMonth();
  var year          = this.getFullYear().toString();
  var hours         = this.getHours();
  var minutes       = this.getMinutes();
  var seconds       = this.getSeconds();

  var formats       = new Object();
  formats[ 'D' ]    = date;
  formats[ 'd' ]    = date + Date.SUFFIXES[ date - 1 ];
  formats[ 'DD' ]   = ( date < 10 ) ? '0' + date : date;
  formats[ 'DDD' ]  = Date.DAYS[ day ].substring( 0, 3 );
  formats[ 'DDDD' ] = Date.DAYS[ day ];
  formats[ 'M' ]    = month + 1;
  formats[ 'MM' ]   = ( month + 1 < 10 ) ? '0' + ( month + 1 ) : month + 1;
  formats[ 'MMM' ]  = Date.MONTHS[ month ].substring( 0, 3 );
  formats[ 'MMMM' ] = Date.MONTHS[ month ];
  formats[ 'Y' ]    = ( year.charAt( 2 ) == '0' ) ? year.charAt( 3 ) : year.substring( 2, 4 );
  formats[ 'YY' ]   = year.substring( 2, 4 );
  formats[ 'YYYY' ] = year;
  formats[ 'H' ]    = hours;
  formats[ 'HH' ]   = ( hours < 10 ) ? '0' + hours : hours;  
  formats[ 'h' ]    = ( hours > 12 || hours == 0 ) ? Math.abs( hours - 12 ) : hours;
  formats[ 'hh' ]   = ( formats[ 'h' ] < 10 ) ? '0' + formats[ 'h' ] : formats[ 'h' ];
  formats[ 'm' ]    = minutes;
  formats[ 'mm' ]   = ( minutes < 10 ) ? '0' + minutes : minutes;
  formats[ 's' ]    = seconds;
  formats[ 'ss' ]   = ( seconds < 10 ) ? '0' + seconds : seconds;
  formats[ 't' ]    = ( hours < 12 ) ?  'A' : 'P';
  formats[ 'tt' ]   = ( hours < 12 ) ?  'AM' : 'PM';

  for ( var i = 0; i < letters.length; i++ ) {
    regexA = new RegExp( '(' + letters[ i ] + '+)' );
    while ( regexA.test( formatted ) ) {
      temp[ count ] = RegExp.$1;
      formatted = formatted.replace( RegExp.$1, '[' + count + ']' );
      count++;
    }
  }

  while ( regexB.test( formatted ) ) {
    formatted = formatted.replace( regexB, formats[ temp[ RegExp.$1 ] ] );
  }

  return formatted;
}

//obj:测试对象为textbox；opera: '+'验证所有正数，'-'演正所有负数，null为空所有正负数；i；允许后面小数位数，为0时不允许输入小数；
//返回 turn or false
//CreateBy:Lee
function  CheckNumber(obj,opera,i)   
  { 
    var regx;
	var m;
	 if (obj== null) return false;
	if (opera== null){ opera="";}
	if  (i== null || i==""){ i=0;}
	
	if (opera==""){
	    if(i==0){
		   regx=eval("/^([+ -]?)([0-9]+)$/");
		}else{
		   regx=eval("/^([+ -]?)([0-9]+)(([.]{1}[0-9]{1,"+i+"})?)$/");
		}   
        m=regx.test(obj.value);
		return m;
	}else if(opera=="+"){
	    if (i==0){
		   regx=eval("/^([+]?)([0-9]+)$/");
		}else{
		   regx=eval("/^([+]?)([0-9]+)(([.]{1}[0-9]{1,"+i+"})?)$/");
		}   
        m=regx.test(obj.value);
		return m;
	}else if (opera=="-"){
	    if(i==0){
		   regx=eval("/^([-]{1})([0-9]+)$/"); 
		}else{
		   regx=eval("/^([-]{1})([0-9]+)(([.]{1}[0-9]{1,"+i+"})?)$/"); 
		}  
        m=regx.test(obj.value);
		return m;
	}else{
	    alert("参数错误！");
	    return false;
	}	      
  }
//有中文或全形字传回true否则false
function IsChinese(PA_Str){
	for(var i = 0; i < PA_Str.length; i++){
		if(PA_Str.charCodeAt(i) >255){
			return true;
		}
	}
	return false;
}
function isEmail(EmailStr){
	var regx;
	regx = new RegExp(/^[a-zA-Z0-9]([a-zA-Z0-9]*[-_.]?[a-zA-Z0-9]+)+@([\w-]+\.)+[a-zA-Z]{2,}$/);	
	return regx.test(EmailStr);
}
function isPhoneNumber(PhoneStr){
	var regx;
	regx = new RegExp(/(^[0-9]{3,4}\-[0-9]{3,11}$)|(^[0-9]{3,11}$)|(^\([0-9]{3,4}\)[0-9]{3,11}$)|(^0{0,1}13[0-9]{9}$)/);	
	return regx.test(PhoneStr);
}
//切换多普通话言Function 
function ChangeLange(Language)
{
	var i=window.open('/Utility/ChangeLanguage.asp?Language='+Language,'ChangeLanguage','width=0,height=0,toolbar=no,addressbar=no,location=no,Directory=no,Status=no,menubar=no,scrollbars=no,resizable=no,top=1000,left=1000');
}

function IniFirstName(obj){
	if(obj.value.toUpperCase()=='FIRST NAME')
		obj.value='';
}
function IniLastName(obj){
	if(obj.value.toUpperCase()=='LAST NAME')
		obj.value='';
}
function IniMiddleName(obj){
	if(obj.value.toUpperCase()=='MIDDLE NAME')
		obj.value='';
}