﻿/*** 新增String 擴充型別 raychien  20090526 START */
// 去除前後空白
if (!String.prototype.trim){
    String.prototype.trim=function(){   
        return this.replace(/(^\s*)|(\s*$)/g, "");
    }
}

// 去除左邊空白
if (!String.prototype.ltrim){
    String.prototype.ltrim=function(){   
        return this.replace(/(^\s*)/g,"");   
    }   
}

// 去除右邊空白
if (!String.prototype.rtrim){
    String.prototype.rtrim=function(){   
        return this.replace(/(\s*$)/g,"");   
    }
}

// 從左邊擷取指定長度的字串
if (!String.prototype.left){
    String.prototype.left = function(n)
    {
        return this.slice(0,n);
    }
}

// 從右邊擷取指定長度的字串
if (!String.prototype.right){
    String.prototype.right = function(n)
    {
        return this.slice(this.length-n);
    }
}

// 保留數字
if (!String.prototype.getNum){
    String.prototype.getNum = function()
    {
        return this.replace(/\D*/g,"");
    }
}

// Array Search
if (!Array.prototype.indexOf){
    Array.prototype.indexOf = function(elt /*, from*/){

      var len = this.length;

      var from = Number(arguments[1]) || 0;

      from = (from < 0)

         ? Math.ceil(from)

         : Math.floor(from);

      if (from < 0)

       from += len;

      for (; from < len; from++)

      {

       if (from in this &

        this[from] === elt)

        return from;

      }
      return -1;
    };
}
/*** 新增String 擴充型別 raychien  20090526 END */


/*** 新增函式 raychien  20090526 START */

function VerifyOneEmailFormat(email)
// 描述:  驗證單一個EMAIL的格式
// Input: 要驗證的E-mail
// Ouput: true.格式正確  false.格式不正確
{
    var chk_reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    if (email == "" || (!chk_reg.test(email)) ){
        return false;
    }
    else{
        return true;
    }
}

function VerifyMoreEmailFormat(email, delimiter)
// 描述:  驗證多個EMAIL的格式
// Input: email:要驗證的E-mail, delimiter:區隔多個EMAIL的符號
// Ouput: true.格式正確  false.格式不正確
{
    var chk_reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    var chk_email = email;
    
    if (chk_email == "" || delimiter == ""){
        return false;
    }
    else{
        var str_arr = chk_email.split(delimiter);
        for (var i = 0; i < str_arr.length; i++)
        {
            if (str_arr[i] != ""){if (!chk_reg.test(str_arr[i])){return false;}}
        }
    }
    return true;
}

function VerifyIsOnlyNumber(svalue)
// 描述:  驗證是否是數字
// Input: 要驗證String
// Ouput: true.格式正確  false.格式不正確
{
	var chk_cphone_reg = /\D/; 
    if (chk_cphone_reg.test(svalue)){
        return false;
    }
    else{
        return true;
    }
}


function VerifyPhoneFormat(phone)
// 描述:  驗證電話號碼格式 (EX:(02)212345678 or 02-212345678 or 09123456789 or 02 2123456789 or 02 2123456789 ..)
// Input: phone:要驗證的電話號碼
// Ouput: true.格式正確  false.格式不正確
{
    var chk_reg = /(^((\d{10,20})([-(\s)*]?)([#]{0,1}\d{1,6}))$)|(^((\((\d{2,4})\))([-(\s)*]?)(\d{6,10})([-(\s)*]?)([#]{0,1}\d{1,6}))$)|(^((\d{2,4})([-(\s)*]?)(\d{4,10})([-(\s)*]?)([#]{0,1}\d{1,6}))$)|(^((([-(\s)*]?)(\d{2,4})){3,4}([-(\s)*]?)([#]{0,1}\d{1,6}))$)/;   
    if( (phone == "") || (chk_reg.test(phone) == false) || (phone.length < 9) ){   
        return false;
    }
    else{
        return true;
    }
}


function VerifyIsDateFormat(StrDate){
// 描述:  驗證是否符合日期格式 (YYYY/MM/DD or YYYY-MM-DD)
// Input: StrDate AS String
// Ouput: true.格式正確  false.格式不正確
    var r = StrDate.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]);
}

function CheckStartAndEndDate(StartDate, EndDate)
{
// 描述:  判斷起始時間正確
// Input: StartDate AS String, EndDate AS String
// Ouput: true.起迄日正確  false.不正確
    try{    
        if (StartDate.trim() != "" && EndDate.trim() != "")
        {
           var tmpdate1 = new Date();
           var tmpdate2 = new Date();
           
           tmpdate1 = StartDate.trim();
           tmpdate2 = EndDate.trim();
           
           if (tmpdate1 > tmpdate2)
           {
                return false;
           }
           return true;
        }
        else
        {
            return false;
        }
    }
    catch(e)
    {return false;}    
}
 
/*** 新增函式 raychien  20090526 END   */

function createAJAX()
{
	if(window.ActiveXObject)
	{
		try
		{
			return new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				return new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(ee)
			{
				return null;
			}
		}
	}
	else if(window.XMLHttpRequest)
	{
		return new XMLHttpRequest();				
	}
	else
	{
		return null;
	}
}
function chkdate(datestr)
{
	var lthdatestr
 	if (datestr != "")
  	lthdatestr= datestr.length ;
 	else
  	lthdatestr=0;
  	
	var tmpy="";
	var tmpm="";
	var tmpd="";
	var status=0;
 	if(lthdatestr== 0)
  	return false
  	
 	for (i=0;i<lthdatestr;i++)
 	{ 
 		if (datestr.charAt(i)== '/')
   		status++;
  	if (status>2)
   		return 0;
  	if ((status==0) && (datestr.charAt(i)!='/'))
   		tmpy=tmpy+datestr.charAt(i)
  	if((status==1) && (datestr.charAt(i)!='/'))
   		tmpm=tmpm+datestr.charAt(i)
  	if((status==2) && (datestr.charAt(i)!='/'))
   		tmpd=tmpd+datestr.charAt(i)
 	}
	year=new String (tmpy);
	month=new String (tmpm);
	day=new String (tmpd)
	if ((tmpy.length!=4) || (tmpm.length>2) || (tmpd.length>2))
		return false;
	if (!((1<=month) && (12>=month) && (31>=day) && (1<=day)) )
		return false;
 	if (!((year % 4)==0) && (month==2) && (day==29))
  	return false;
 	if ((month<=7) && ((month % 2)==0) && (day>=31))
  	return false;
 	if ((month>=8) && ((month % 2)==1) && (day>=31))
  	return false;
	if ((month==2) && (day==30))
  	return false;
	return true;
}
function idchk(num)
{
   num=num.toLowerCase()
   patten=/^[a-z][12][0-9]{8}$/
   if(patten.test(num)){
      h="abcdefghjklmnpqrstuvxywzio"
      x=10+h.indexOf(num.substring(0,1))
      chksum=(x-(x%10))/10+(x%10)*9
      for(i=1;i<9;i++){
         chksum+=num.substring(i,i+1)*(9-i)
      } 
      chksum=(10-chksum%10)%10 
      
      if(chksum==num.substring(9,10))return true
   }
   return false
}
function strlen(svar)
{
    var i=0;
    var len=0;
    for(i=0;i<svar.length;i++)
    {
        if(escape(svar.charAt(i)).length!=1)
	    	len+=2;
		else
            ++len;
    }
    return len;
}
function SelectAll(check)
{	
	var i,index;
	index = document.forms(1).length ; //減掉Submit
	for(i=0;i<index;i++)
	{
		document.forms(1).elements(i).checked = check;
	}
}
function AnySelect(index)
{
	var i=0,num=0,count=0;
	count = document.forms(index).length - 1; //減掉Submit
	for(i=0;i<=count;i++)
	{
		if(document.forms(index).elements(i).type == "checkbox") 
		{
	 		if(document.forms(index).elements(i).checked) 
	 			++num;
	 	}
	}
	if(num==0)
	{
		window.alert("請選擇至少選擇一項要處理的項目");
		return false;
	}
	else
	{
		if(!(window.confirm("確定要處理嗎？")))
			return false;
	}
}
function checkLen(form_index,isChinese)
{
		var i,index;
		index = document.forms(form_index).length ; //減掉Submit
		for(i=0;i<index;i++)
		{
			if(document.forms(form_index).elements(i).type=="text")
			{
				if(strlen(document.forms(form_index).elements(i).value) > document.forms(form_index).elements(i).maxLength)
				{
					if(isChinese)
						alert('字串長度超過，請重新輸入');
					else
						alert('A bunch of length of word exceeds, please input again ');
					document.forms(form_index).elements(i).select();
					return false;
				}
			}
		}
		return true;
}
function ChkEmail(obj,isChinese)
{ 
	obj.value=obj.value.toLowerCase();
	var chkNumber = obj.value; 
	var checkOK = "0123456789abcdefghijklmnopqrstuvwxyz@._- "; 
	var checkStr = obj.value;
	var allValid = true;
	var decPoints = 0;
	var allNum = 0; 
	var mousce = 0;
	var mouscel = 0;
	
	if (chkNumber == "")
	{
		flag='T';
		return (true);
	} 
		else
	{ 
	
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
		if (ch == checkOK.charAt(j))
			break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
		allNum += ch;
	}
	
	if (!allValid)
	{
		if(isChinese)
			alert("請輸入數字型態或英文字母及'@','.'等");
		else
			alert("E-Mail Format Error");
		obj.select();
		flag='F'; 
		return (false);
	} 
	allValid = false;
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		
		if (ch == "@")
		{ 
			mousce=mousce+1;
			mouscel=i 
			//allNum = 1 + i 
			//break;
		} 
		
		} 
		allNum=0;
		if (mousce > 1)
		{			
			if(isChinese)
				alert("E-Mail欄位中不可有兩個以上 @ 符號,格式錯誤!");
			else
				alert("E-Mail Format Error");
			obj.select(); 
			flag='F';
			return (false);	
		}
		
		if (mousce == 1){	
			allNum = 1 + mouscel;}
		
		if (allNum == 0)
		{
			
			if(isChinese)
				alert("E-Mail欄位中無 @ 符號,格式錯誤!");
			else
				alert("E-Mail Format Error");			
			obj.select(); 
			flag='F';
			return (false);
		}
		
		if (allNum < 3)
		{			
			if(isChinese)
				alert("E-Mail欄位中 @ 符號左邊需有至少2位長度,格式錯誤");
			else
				alert("E-Mail Format Error");						
			obj.select(); 
			flag='F';
			return (false);
		}
		
		
		if ((chkNumber.length - allNum) < 6 )
		{			
			if(isChinese)
				alert("E-Mail欄位@ 符號右邊需有至少6位長度,格式錯誤");
			else
				alert("E-Mail Format Error");									
			obj.select();
			flag='F';
			return (false); 
		}
		
		for (i = allNum ; i < checkStr.length; i++)
		{
			ch = checkStr.charAt(i);		
			if (ch == ".")
			{
				allValid=true
				break;
			} 
		} 
		
		if (allValid==false)
		{			
			if(isChinese)
				alert("E-Mail欄位@ 符號右邊無 . 符號,格式錯誤");
			else
				alert("E-Mail Format Error");												
			obj.select();
			flag='F';
			return (false);
		}
		
		for (i = 0; i < checkStr.length; i++)
		{
			ch = checkStr.charAt(i);
			if (ch == "@")
			{ 
				if (checkStr.charAt(i+1)=='.')
				{					
					if(isChinese)
						alert("E-Mail欄位錯誤'@.',無此格式");
					else
						alert("E-Mail Format Error");															
					obj.select();
					flag='F';
					return (false); 
				}
				if (checkStr.charAt(i+1)==' ' || checkStr.charAt(i+1)=='　' || checkStr.charAt(i-1)==' ' || checkStr.charAt(i+1)=='　')
				{
					if(isChinese)
						alert("E-Mail欄位錯誤,'@'前後不可接空白!");
					else
						alert("E-Mail Format Error");															
					obj.select();
					flag='F';
					return (false); 
				}
			}
		}
		flag='T';
		return (true);
	}
}
function ChkCard(chknum) 
{
	if(chknum.length != 16)
	{
		return 0;
	}
	evenum = 0;
	oddnum = 0;
	chksum = 0;
	for (i=1; i<15; i=i+2) 
	{
		temp = chknum.substring(i,i+1)/1;
		evenum = evenum + temp;
	}
	for (i=0; i<15; i=i+2) 
	{
		temp = chknum.substring(i,i+1)/1;
		temp = temp * 2;
		if (temp > 9)
			temp = 1+(temp-10);
		oddnum = oddnum + temp;
	}
	chksum = evenum + oddnum;
	chksum = 10-(chksum%10);
	if (chksum > 9) 
		chksum = 0;
	if (chksum == chknum.substring(15,16))
		return 1;
	else
		return 0;
}
function getWeek(ds)
{
	myDays= ["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
	myDate=new Date(eval('"'+ds+'"'))
	return myDays[myDate.getDay()];
}
function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}
function setCookie(name, value, path, domain)
{
	var argv = setCookie.arguments;
	var argc = setCookie.arguments.length;
	var expires = 1;
	if(expires!=null)
	{
		var LargeExpDate = new Date ();
		LargeExpDate.setTime(LargeExpDate.getTime() + (expires*1000*3600*24));
	}
	document.cookie = name + "= " + escape (value) + "; "+((expires == null) ? " " : ( "; expires= " +LargeExpDate.toGMTString())) + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "");
}

function getCookie(Name)
{
	var search = Name + "=";
	var offset;
	if(document.cookie.length > 0) 
	{
		//alert(document.cookie);
		offset = document.cookie.indexOf(search);
		//alert(offset);
		if(offset != -1) 
		{
			//alert(offset);
			offset += search.length;
			end = document.cookie.indexOf( "; ", offset);
			if(end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(offset, end));
		}
			else return " ";
		}
	return " ";
}

function delCookie( name, path, domain ) 
{
	if ( getCookie( name ) ) document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
