﻿//[格式為十碼格式化日期]
//eg:onchange="DateYMD10(this)"
function DateYMD10(obj)
{
    if("468".indexOf(obj.value.length)>=0)
    {    
        if(obj.value.length ==6)
	        obj.value = "20" + obj.value;
	    if(obj.value.length ==4)
	        obj.value = new Date().getYear() + obj.value;
	    var val = ReplaceStr(obj.value,'/','');        
        val = val.substr(0,4) + "/" + val.substr(4,2) + "/" +val.substr(6,2)        
    
        obj.value =val;
    }
}
//---------------------------------------------------------------------[輸入控制,僅限日期yyyy/dd/mm]
//eg:onkeypress="return inputDate()" 
function  inputDate() 
{
		var key=window.event.keyCode;
		if((key>=48 && key<=57)||key==47)
		{
		 return true;
		}
		else
		{
		 window.event.keyCode=0;
		 return true;
		}
}
//---------------------------------------------------------------------[值驗証,判斷日期yyyy/mm/dd是否合法,返回bool 值]
//eg:var bIsDate=IsDate("2005/02/28")
//eg:var bIsDate=IsDate("20050228")
//eg:var bIsDate=IsDate("050228")
//eg:var bIsDate=IsDate("0228")
function IsDate(str) 
{ 
    if(str.length==6)return CheckDateMMDD(str.substring(2,6));
    if(str.length==4)return CheckDateMMDD(str);
    if(str.length==8 && str.indexOf('/')==-1)
    {
       str=str.substring(0,4)+"/"+str.substring(4,6)+"/"+str.substring(6,8)
    } 
        
	var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);  
	if(r==null)return false;  
	var d= new Date(r[1], r[3]-1, r[4]);  
	return (d.getFullYear()==r[1] && (d.getMonth()+1)==r[3] && d.getDate()==r[4]); 
} 
//---------------------------------------------------------------------[值驗証,判斷日期YYYY/MM/DD是否合法,返回bool 值]
//eg:var b=IsYYYYMMDD("2007/02/29","YM");//反回false
// strFLG="M"  驗證月
// strFLG="Y"  驗證年
// strFLG="D"  驗證日
// strFLG="MD" 驗證月日
// strFLG="YMD"驗證年月日
function IsYYYYMMDD(strDate,strFLG) 
{ 
	var r = strDate.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);  
	var bYMD=false;
	if(r==null) return false;  
	
	var d= new Date(r[1], r[3]-1, r[4]);  
	strFLG=strFLG.toUpperCase();
	
	switch(strFLG)
	{
		case "Y": {bYMD=(d.getFullYear()==r[1]);break;}
		case "M": {bYMD=((d.getMonth()+1)==r[3]);break;}
		case "D": {bYMD=(d.getDate()==r[4]);break;}
		case "YM": {bYMD=(d.getFullYear()==r[1] && (d.getMonth()+1)==r[3]);break;}
		case "MD": {bYMD=((d.getMonth()+1)==r[3] && d.getDate()==r[4]);break;}
		case "YMD": {bYMD=(d.getFullYear()==r[1] && (d.getMonth()+1)==r[3] && d.getDate()==r[4]);break;}
	}
	return bYMD; 
} 
//---------------------------------------------------------------------[值驗証,判斷日期YYYYMM是否合法,反回bool 值]
//eg:var bIsDate=CheckDateYYYYMM("200602")
//則反回真
function CheckDateYYYYMM(strDate)
{   
 	var strDate=trimSpace(strDate);
	var strY="";
	var strM="";
	var tempLen;
	tempLen=strDate.length;
	if(tempLen!=6)return false;		
	if(isNaN(strDate)==true)return false;
	if(strDate.indexOf('.')!=-1)return false;
		strY=strDate.substring(0,1);
		strM=strDate.substring(tempLen-2);

		if (strY == "0" )return false;
		
		if (strM>= "01" && strM<="12")
			return true;
		else
			return false;
}
//---------------------------------------------------------------------[值驗証,判斷日期mmdd是否合法,反回bool 值]
//eg:var bIsDate=CheckDateMMDD("1231")
function CheckDateMMDD(strDate)
{   
 	var strDate=trimSpace(strDate);
	var strM="";
	var strD="";
	var tempLen;
	tempLen=strDate.length;
	if(tempLen!=4)return false;		
	if(isNaN(strDate)==true)return false;

		strM=strDate.substring(0,2);
		strD=strDate.substring(tempLen-2);
		var intM=parseInt(strM,10);
		var intD=parseInt(strD,10);

		if (intM>12||intM==0 )return false;
		if (intD>31||intD==0 )return false;
		
		if (intM==2&&intD>29)return false;
		if(intM==4||intM==6||intM==9||intM==11)//小月
		{
		  if(intD==31)return false;
		}
  return true;
}
//---------------------------------------------------------------------判斷Start日期是否大於End日期,參數必須是合法日期
function checkSEDate(StartDate,EndDate) 
 {
    if(IsDate(StartDate)&&IsDate(EndDate))  
    {
     var r = StartDate.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);    
     var dStart= new Date(r[1], r[3]-1, r[4]);    
     var r = EndDate.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);    
     var dEnd= new Date(r[1], r[3]-1, r[4]);   
     return(dStart>dEnd); 
     }
  } 
  //---------------------------------------------------------------------判斷Start日期是否大於End日期,參數必須是合法日期
 function DateFormat(obj1)
{
  var obj=document.getElementById(obj1);
    if("468".indexOf(obj.value.length)>=0)
    {
    
        if(obj.value.length ==6)
	        obj.value = "20" + obj.value;
	    if(obj.value.length ==4)
	        obj.value = new Date().getYear() + obj.value;
    	
	    var val = ReplaceAll(obj.value,'/','');
        
        val = val.substr(0,4) + "/" + val.substr(4,2) + "/" +val.substr(6,2)
        obj.value =val;
    }
}
function checkDateSE(objDateS,objDateE,ISstart) 
 {
     ClearError();
     DateFormat(objDateS);
     DateFormat(objDateE);
     var objStartDate=document.getElementById(objDateS);
     var objEndDate=document.getElementById(objDateE);
     var StartDate=objStartDate.value.trim();
     var EndDate=objEndDate.value.trim();
     if(StartDate!=""&&IsDate(StartDate)==false)
     {
         AddMsg(getMsg('J00022'));//日期輸入錯誤
         objStartDate.select();
        // objStartDate.focus();
         return false;
         
     }
     if(EndDate!=""&&IsDate(EndDate)==false)
     {
      AddMsg(getMsg('J00022'));////日期輸入錯誤
      objEndDate.select();
     // objEndDate.focus();
      return false;
     }
     if(StartDate!=""&&EndDate!="")
     {
        if(IsDate(StartDate)&&IsDate(EndDate))  
        {
             var r = StartDate.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);    
             var dStart= new Date(r[1], r[3]-1, r[4]);    
             var r = EndDate.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);    
             var dEnd= new Date(r[1], r[3]-1, r[4]);  
             if(dStart>dEnd)
             {
              if(ISstart==true)
              {
                 AddMsg(getMsg('J00001'));//開始日期不能大於結束日期
 
              }
              else
              {
                 AddMsg(getMsg('J00020'));//結束日不能小於開始日
              }
              return false;
             } 
             else
             {
              return true;
             }
          //   return(dStart>dEnd); 
         }
      }
  } 
//---------------------------------------------------------------------[輸入控制,僅限輸入 0~9 十個字元]
//eg:onkeypress="return inputNubmer()" 
function  inputNubmer() 
{


	var key=window.event.keyCode;
	if(key>=48 && key<=57)
	{
	 return true;
	}
	else
	{
	 window.event.keyCode=0;
	 return true;
	}
}

//---------------------------------------------------------------------[輸入控制,僅限輸入 0~9 十個字元和小數點]
//eg:onkeypress="return inputNubmerFloat()" 
function  inputNubmerFloat() 
{

		var key=window.event.keyCode;
		if((key>=48 && key<=57)||key==46)
		{
		 return true;
		}
		else
		{
		 window.event.keyCode=0;
		 return true;
		}
}
 
//限定輸入數字
function numberKey(obj)
{
   
    if(event.keyCode != 46)
    {
        if((event.keyCode != 8) && (event.keyCode <48) || (event.keyCode >57))
        {
            event.returnValue =0
        }
    }
    else
    {
        if(obj.value.indexOf('.') >=0)
        {
            var ints,inte;
            var caretPos = window.document.selection.createRange().duplicate();
            caretPos.collapse(true);
            caretPos.moveStart("textedit",-1);
            ints = caretPos.text.length;

            var caretPos2 = window.document.selection.createRange().duplicate();
            caretPos2.collapse(false);
            caretPos2.moveStart("textedit",-1);
            inte = caretPos2.text.length;
            if(obj.value.substring(ints,inte).indexOf('.')<0)
            {  
                event.returnValue =0
            }          
        }
        else if(obj.value.trim()=="")
        {
           event.returnValue =0
        }

    }
}
//---------------------------------------------------------------------[判斷是否為數字,是則返回true]
function isNumeric(strNum)  
{  
 var strCheckNum = strNum + "";  
 if(strCheckNum.length < 1) //空字符串  
 return false;  
 if(isNaN(strCheckNum)) //不是數值 
  {  
    return false;  
  }  
 return true;  
} 
//---------------------------------------------------------------------[判斷是否是整數,是則返回true]
//判斷是否是整數（驗證變量） 
function isInteger(strNum)
{
   	if(strNum.indexOf(".")>0)
	{
	return false;
	}
	var strCheckNum = strNum*1 + "";
	if(strCheckNum.length < 1) //空字符串
		return false;
	if(isNaN(strCheckNum)) //不是數值

	{
		//alert(ErrorCode("20002", ""));
		return false;
	}

	if(parseFloat(strCheckNum) > parseInt(strCheckNum)) //不是整數
		return false;

	return true;
}
//---------------------------------------------------------------------[檢查字符串是否包含除字母、數值、下橫綫以外的字符,是則返回true]
//eg:var bIs=CheckStrCN("1231")
function CheckStrCN(strCheck) 
{ 
    for(var i=0;i<strCheck.length;i++)  
    {  
     var strTemp=strCheck.charAt(i);  
     if((strTemp<"A" || strTemp>"Z") && (strTemp<"a" || strTemp>"z") && (strTemp<"0" || strTemp>"9") && (strTemp!="_"))  
     return true  
    }  
    return false;  
} 
//---------------------------------------------------------------------[得到字符串的bit長度]
function GetBitLenght(strText)  {  
 var intlen=0;  
 for(var i=0; i<strText.length; i++)  {  
 if(strText.charCodeAt(i)>255){intlen=intlen+2;}  
 else{intlen++;}  
 }  
 return intlen;  
} 
//---------------------------------------------------------------------[判斷中文字符串是否超過指定長度,obj_ID,控件id，len，控件允許的最大的長度]
function CheckOver_CN(obj_ID,len)  {
 var intlen=obj_ID.value.length;  
 if (intlen<=len && intlen>len/2) intlen=bitLenght(obj_ID);  
 return (intlen>len);  
} 

/******************************
*作用：計算一個對象的值的長度，中文占２個長度
*Author:Ales
*名稱：bitLenght（）
*參數：sText：對像名
*用法示例：bitLenght(sText)
*/
function bitLenght(obj)
{
	var intlen;
	intlen=0;
	for(var i=0; i<obj.value.length; i++)
	{
		if(obj.value.charCodeAt(i)>255){
				intlen=intlen+2;}
			else{
				intlen++;}
	}
	return intlen;	
}
//檢查是否為英文字母函數或數字函數  
function isIA(){   
  var instring=this.toString()  
 for(i=0;i<instring.length;i++){  
 var value=instring.charAt(i)  
     if((value < "A" || value >"Z")&&(value < "a"||value > "z")&&(value < "0" || value >"9")) return false;  
 }  
 return true;  
} 

//---------------------------------------------------------------------[輸入控制,過濾中文輸入]
//Author        ：sky
//Last Modifiy  ：2006/03/27
//eg:onblur="LeachInputChinese()"
function LeachInputChinese()
{
    var obj=event.srcElement;
    if(obj.value.search(/[\u4E00-\u9FA5]/g) != -1)
    {
        obj.value=obj.value.replace(/[\u4E00-\u9FA5]/g,'');   
        obj.value=obj.value.replace(/[\uFE30-\uFFA0]/g,'');
    }

    if(obj.onkeydown==null)
    {
        obj.onkeydown=LeachInputChinese;
    }   
}
//---------------------------------------------------------------------[輸入控制,過濾非數字內容]
//Author        ：Kangco
//Last Modifiy  ：2007/06/20
//eg:onblur="OnlyInputNumber()"
function OnlyInputNumber()
{
    var obj=event.srcElement;
    if(obj.value.search(/\W/g) != -1)
    {
        obj.value=obj.value.replace(/\W/g,'');   
        obj.value=obj.value.replace(/\W/g,'');
    }
    if(obj.onkeydown==null)
    {
        obj.onkeydown=OnlyInputNumber;
    }   
}
//---------------------------------------------------------------------[去前後空格] (附加為基類方法)
//Author        ：sky
//Last Modifiy  ：2006/02/05
//eg:var str=document.all.txtName.value.trim();
String.prototype.trim=function()
{
	return this.replace(/(^\s*)|(\s*$)/g,'');	
}
//---------------------------------------------------------------------[去前後空格] (函數)
//eg:var str=trimSpace(document.all.txtName.value);
function trimSpace(str)
{
	var instring=str.toString();
	var value=new String();
	//去頭
	for(var i=0;i<instring.length;i++){
		if(instring.charAt(i)!=" "){
			value=instring.substring(i);
			break;
		}
	}
	//去尾
	while(value.charAt(value.length-1)==" ")
	{
		value=value.substring(0,value.length-1);
	}
	return value;
 }
 
//格式化數字的函數FormatCurrency
//入參：1. srcStr->被格式化的數字

//      2. nAfterDot->小數位數
//      3. intClause->分隔位數
//-----------------------------------------------------------------------------修正小數點更換的問題
function FormatCurrency(srcStr,nAfterDot,intClause)
{
    var flag = false;
    srcStr = srcStr + '';
    if(srcStr.indexOf('-') != -1)
    {
        srcStr = srcStr.substring(1);
        flag = true;
    }
	var srcStrA,srcStrB,srcStrC;
	var resStr,resStrC,resStrB;
	srcStrA=FormatNumber(srcStr,nAfterDot);
	srcStrA=""+srcStrA+"";
		strLen = srcStrA.length;
		dotPos = srcStrA.indexOf(".",0);
	if(dotPos==-1)
	{	srcStrB=srcStrA;
		srcStrC="";
	}else
	{
		srcStrB=srcStrA.substring(0,dotPos);
		srcStrC=srcStrA.substring(dotPos+1,strLen);
	}
	resStrC="";
	resStrB="";
	
	for(var i=0;i<srcStrC.length;i=i+intClause)
	{	
		resStrC=resStrC +srcStrC.substring(i,i+intClause)
		if(i<srcStrC.length-intClause)
			resStrC=resStrC+ ","
	}
	for(var i=srcStrB.length;i>-2;i=i-intClause)
	{	
		resStrB=srcStrB.substring(i-intClause,i)+resStrB;
		if(i>3)
			resStrB="," +resStrB
	}
	
	if(resStrC=="")
		resStr=resStrB;
	else
		resStr=resStrB+"."+resStrC;
	if(flag)
	{
	    resStr = '-' + resStr;
	}
	return resStr;
}
//將格式化數字變為普通數字函數unFormat
//入參：1. srcStr->數字
function unFormat(srcStr)
{
	var resStr="";
	for(var i=0;i<srcStr.length;i++)
	{	
		resStr=resStr +((srcStr.substring(i,i+1)).replace(',',''));
	}
	return resStr;
}

//將格式化數字變為普通數字並返回原對像函數unFormatNum
//入參：1. sText->對像
function unFormatNum(sText)
{
	sText.value=unFormat(sText.value);
	sText.select();
}
//限制只能輸入0-9,a-z,A-Z的字符
function CheckInputChar(){  
    var tmpCode = window.event.keyCode;   
    //A-Z keyCode 65-95  
    //a-z keyCode 97-122  
    //0-9 keyCode 48-57  
    try      {  
        if((tmpCode >= 48 && tmpCode <= 57) || (tmpCode >= 65 && tmpCode <= 90) || (tmpCode >= 97 && tmpCode <= 122))  {         
            return true;  
        }  
        else          {   
            event.returnValue=false;   
        }  
    }catch(e){}  
} 

//取得當前瀏覽器支持的XMLHTTP對象   
function GetXmlHttpRequest() 
{  
    var xhr=null;   
    try   
    {   
        xhr=new ActiveXObject("Msxml2.XMLHTTP");//initialize a xmlhttp object   
    }   
    catch(e)  
    {   
         try  
         {   
            xhr=new ActiveXObject("Microsoft.XMLHTTP");   
         }  
         catch(oc)  
         {   
            xhr=null;   
         }  
    }   
    if (!xhr && typeof XMLHttpRequest != "undefined" )   
    {   
        xhr=new XMLHttpRequest();
    }   
    return xhr;
}  

 /********************************************
* 函數名稱：fun_SelectAll(obj))
* 目的：DATAGRID表頭的CHECKBOX控制全選
* 作者：JASON
* 時間：2007/01/19
* 參數說明：obj 全選ＣＨＥＣＫＢＯＸ的ＩＤ號
*********************************************/
function fun_SelectAll(obj)
{
    var intLen = document.getElementsByTagName("input").length;
	var objA = document.getElementsByTagName("input");
	
	//在所有input控件中循環，當找到checkbox時就做操作	
	var forClient=document.getElementById(obj.parentNode.childNodes[1].id);
	for(var i=0;i<intLen;i++)
	{
		var objS = objA[i].getAttribute("type");
		if(objS=="checkbox")
		{	
            objA[i].checked=forClient.checked;
		}
	}
	return false;
}

//驗證電話號碼
function checkTelNumber(obj)
{

   var objValue=document.getElementById(obj).value;
   if (objValue.trim()!= "")
   {
         var phone=objValue;
         var p1 = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/;
         var me = false;
         if (p1.test(phone))
         me=true;
         if (!me)
         {
             return false;
         }
         else
         {
         return true;
         }
    }
}
//add by bin================================================
//驗證http網址
function checkHttp(obj)
{
   var objValue=document.getElementById(obj).value;
   if (objValue.trim()!= "")
   {
         var phone=objValue;
         var p1 = /^http:\/\/[A-Za-z0-9\-]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;         
         if (!p1.test(phone))
         {
             ShowError("000161","");//請輸入類似http://www.google.com網址格式！
             //alert("請輸入類似http://www.baidu.com網址格式");            
             document.getElementById(obj).value="";
             //ShowError("000161","");
             return false;
         }    
         else
         {return true;}     
    }
    
    return false;
}
//返回一個字符串的字節長度
 function getByteLen(str)   
 {   
      var   l   =   str.length;   
      var   n   =   l;   
      for   (   var   i=0;   i<l;   i++   )   
      if   (   str.charCodeAt <0   ||   str.charCodeAt >255  )   
      n++;   
      return   n   
} 


////===================================================

////-----讀取XML檔-----------------aeper 20080415 
//function readXML(Culture)
//{
//    //为了兼容Firefox
//    if (window.ActiveXObject)
//    {
//        var oDoc = new ActiveXObject("Microsoft.XMLDOM");
//    }
//    else
//    {
//        if (document.implementation && document.implementation.createDocument)
//        {
//            var oDoc = document.implementation.createDocument("","",null);
//        }
//    }
//    var result = "../Data/Area_"+Culture+".xml";
//    oDoc.async=false;
//    oDoc.load(result);
//    var root=oDoc.documentElement;
//    if(root==null)
//    {
//        var result ="../../Data/Area_"+Culture+".xml";
//        oDoc.async=false;
//        oDoc.load(result);
//        var root=oDoc.documentElement;
//    }
//    if (root==null) return "Error";
//    else return root;
////}
//**************** aeper 20080425 ******************************//
// 判斷EMail格式（驗證控件） 
function checkEmail(objText) 
{
	var strText=trimSpace(objText.value);
	//var objRe =/^[\w]+@([\w]+\.)+[\w]{2,3}$/;
	var objRe =/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; 
	if(strText=="") return true;
	if(objRe.test(strText))
	{
		return true;
	}
	else
	{
//		objText.focus();
//		objText.select();
	    ShowError("000022","");//“Email地址”欄位格式錯誤, 請檢查修改所輸入資料!     //Modify By Chris 2008/04/28
		//alert('Email格式輸入不正確，請重新輸入！');
		return false;
	}
}
//－－－－－－－－－－－－－－－[ 只輸入整數 ]
function inputNubmer() 
{
    var key=window.event.keyCode;
	if(key>=48 && key<=57)
	{
		var curInput = event.srcElement;
		var inputValue = curInput.value;
		//alert(event.keyCode);
		inputValue=inputValue.replace(document.selection.createRange().text,'');
		if(inputValue.length==0)
			inputValue="0";
		
		if(event.keyCode>=96 && event.keyCode<=105)
			event.keyCode=event.keyCode-48;
			
		if(event.keyCode == 13)
		{
			popWindow.onEnterKeyDown();
			event.returnValue = false;
			return ;
		}	
		
		var inputChar = String.fromCharCode(event.keyCode);
		
		if((isNaN(inputChar) || inputChar==' ') && !(event.keyCode == 8 || event.keyCode == 46)) {
			window.event.keyCode=0;
		}
	}
	else
	{
	 window.event.keyCode=0;
	 return true;
	}
}

//限制只能輸入字母和數字
function  _onluyNum_En(obj)
{   
    obj.value = obj.value.replace(/[^a-zA-Z0-9]/g,'');  
}  
//限制只能輸入數字
function onlyInt(obj) 
{ 
  obj.value = obj.value.replace(/[^0-9]/g,'');
} 
//限制只能輸入數字和分隔符號
function onlyInt_SP(obj) 
{ 
  obj.value = obj.value.replace(/[^0-9,;]/g,'');
}
//**************** end aeper 20080425 ******************************//


 /********************************************
* 函數名稱：isMaxLen(obj,len)
* 目的：在火狐和IE下限制多行文本框的長度
* 作者：
* 時間：2007/05/19
* 參數說明：obj 當前文本框ID
* 例子： onkeyup="return isMaxLen(this,300)"
*********************************************/
function isMaxLen(obj,len)
{
       var nMaxLen=len*1;  
     if(obj.getAttribute && obj.value.length>nMaxLen)
     {  
        obj.value=obj.value.substring(0,nMaxLen);
     }  
}

 /********************************************
* 函數名稱： getUrl(s) 
* 目的：在火狐和IE下串成http://host:prot/app_web/ + s 絕對路徑
* 時間：2007/05/19
* 參數說明：s 目錄路徑
* 例子： 
*********************************************/
function   getUrl(s)   {   
  var   aLocation =   document.location.href.split("/");   
  //alert(self.location.href);
  var   sRootURL =   aLocation[0]   +   "//"   +   aLocation[2]   +   "/" + aLocation[3]  ;   
  return   sRootURL + s;   
  }