<!--
/*
	2007/9/29 增加-加入最愛功能 (IE, FIREFOX都適用)
*/
  function trim(str)   {
     var len=str.length;
     var lpos=0,rpos=len-1;
     var newstr;
     
     if(len>0)	{
        while(str.charAt(lpos)==" ") lpos++;
		while (str.charAt(rpos) == " ")	rpos--;
		if (rpos >= lpos)	newstr = str.substring(lpos,rpos+1);
		else				newstr = "";
	 }
	 else	newstr = "";
	 return newstr;
  }



function email_check (email) {
	if(email=="") {
      alert("Please enter email addresses for both Sender and Receiver.");
      return false;
    }
	else {
		m1 = email.indexOf('@');
		m2 = email.length;
		m3 = email.lastIndexOf('.');
		if((m2<8) || (email.indexOf('.')<1) || (m3<=m1+1) || (m3==m2-1) || (m1<=1) || (m1==m2-1) ||(email.indexOf('#')>0) || (email.indexOf(',')>0)) {
			alert("Please check the email addresses are correct.");
			return false;
		}
    }
}

function date_check(d_year, d_month, d_day) {
	if(!isnum(d_year) || !isnum(d_month) || !isnum(d_day)) {
      alert ("日期錯誤!!");
      return false;
	}

	if((d_month=="2" || d_month=="02") && d_day>29) {
		alert ("日期錯誤!!");
      return false;
	}
	else if((d_month=="4" || d_month=="04" || d_month=="6" || d_month=="06" || d_month=="9" || d_month=="09" || d_month=="11" || d_month=="11") && d_day==31) {
      alert ("日期錯誤!!");
      return false;
	}
	else if(d_month<1 || d_month>12) {
		alert("月份錯誤!!")
		return false;
	}
	else if(d_day<1 || d_day>31) {
		alert("日期錯誤!!")
		return false;
	}
	return true;
}

function check_date(st1) {
		sterror = 0;
		stindex = st1.indexOf("-");
		if(stindex==-1)  sterror = 1;
		else {
			year = st1.substring(0, stindex);
			st1 = st1.substring(stindex+1, st1.length);
			
			stindex = st1.indexOf("-");
			if(stindex==-1)  sterror = 1;
			else {
				month = st1.substring(0, stindex);
				day = st1.substring(stindex+1, st1.length);
			}
			
			year = trim(year);
			month = trim(month);
			day = trim(day);
			if(year=="" || month=="" || day=="") sterror=1;
		}
		
		if(sterror==0) {
			if(!date_check(year,month,day)) return false;
		}
		else {
			alert("日期格式為 YYYY-MM-DD");
			return false;
		}
		return true;
}


function sid_check(obj, sId) {
      var LegalID = "0123456789"
      var fResult=true;
      var value = 0;
      if(sId.length<10) fResult=false;
      else  {
        if((sId.charAt(0)=="A") || (sId.charAt(0)=="a")) value=10
        else if((sId.charAt(0)=="B") || (sId.charAt(0)=="b")) value=11
        else if((sId.charAt(0)=="C") || (sId.charAt(0)=="c")) value=12
        else if((sId.charAt(0)=="D") || (sId.charAt(0)=="d")) value=13
        else if((sId.charAt(0)=="E") || (sId.charAt(0)=="e")) value=14
        else if((sId.charAt(0)=="F") || (sId.charAt(0)=="f")) value=15
        else if((sId.charAt(0)=="G") || (sId.charAt(0)=="g")) value=16
        else if((sId.charAt(0)=="H") || (sId.charAt(0)=="h")) value=17
        else if((sId.charAt(0)=="J") || (sId.charAt(0)=="j")) value=18
        else if((sId.charAt(0)=="K") || (sId.charAt(0)=="k")) value=19
        else if((sId.charAt(0)=="L") || (sId.charAt(0)=="l")) value=20
        else if((sId.charAt(0)=="M") || (sId.charAt(0)=="m")) value=21
        else if((sId.charAt(0)=="N") || (sId.charAt(0)=="n")) value=22
        else if((sId.charAt(0)=="P") || (sId.charAt(0)=="p")) value=23
        else if((sId.charAt(0)=="Q") || (sId.charAt(0)=="q")) value=24
        else if((sId.charAt(0)=="R") || (sId.charAt(0)=="r")) value=25
        else if((sId.charAt(0)=="S") || (sId.charAt(0)=="s")) value=26
        else if((sId.charAt(0)=="T") || (sId.charAt(0)=="t")) value=27
        else if((sId.charAt(0)=="U") || (sId.charAt(0)=="u")) value=28
        else if((sId.charAt(0)=="V") || (sId.charAt(0)=="v")) value=29
        else if((sId.charAt(0)=="X") || (sId.charAt(0)=="x")) value=30
        else if((sId.charAt(0)=="Y") || (sId.charAt(0)=="y")) value=31
        else if((sId.charAt(0)=="W") || (sId.charAt(0)=="w")) value=32
        else if((sId.charAt(0)=="Z") || (sId.charAt(0)=="z")) value=33
        else if((sId.charAt(0)=="I") || (sId.charAt(0)=="i")) value=34
        else if((sId.charAt(0)=="O") || (sId.charAt(0)=="o")) value=35
        else fResult = false 
      }
      if(fResult==true)
      {
        value = Math.floor(value/10)+(value%10)*9+
                parseInt(sId.charAt(1))*8+
                parseInt(sId.charAt(2))*7+
                parseInt(sId.charAt(3))*6+
                parseInt(sId.charAt(4))*5+
                parseInt(sId.charAt(5))*4+
                parseInt(sId.charAt(6))*3+
                parseInt(sId.charAt(7))*2+
                parseInt(sId.charAt(8))+
                parseInt(sId.charAt(9)) ;
        value = value % 10;
        if(value!=0)  fResult = false;
        for (i = 1; i < sId.length; i++)
        {
          c = sId.charAt(i);
          if (LegalID.indexOf(c) == -1)
            fResult = false;
        }
      }
      if(fResult == false) {
		  alert("請正確填寫身份證字號！")
		  obj.focus();
        return false;
      }  
}


  function iseng(str1) {
    var str2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for(i=0;i<str1.length;i++)   {
      if(str2.indexOf(str1.substring(i,i+1))==-1)
	    return false;   //只要有一個字元不是半形英文或數字就傳回false                     
    }
    return true;
  }


    function isnoeng(str1) {
    var str2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (i=0 ; i< str1.length ; i++ )
    {
      if (str2.indexOf(str1.substring(i,i+1))!=-1)
	    return false;   //只要有一個字元是半形英文就傳回false                     
    }
    return true;
  }

  function isengname(str1) {
    var str2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
    for (i=0 ; i< str1.length ; i++ )   {
      if (str2.indexOf(str1.substring(i,i+1))==-1)
	    return false;   //只要有一個字元不是半形英文或數字就傳回false                     
    }
    return true;
  }

  function isnum(str1)
  {
    var str2="1234567890";
    for(i_n=0;i_n<str1.length;i_n++)  {
      if (str2.indexOf(str1.substring(i_n,i_n+1))==-1)
	    return false;   //只要有一個字元不是數字就傳回false                     
    }
    return true;
  } 

  function isNumEng(str1)   {
    var str2="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for(i=0;i<str1.length;i++)    {
      if(str2.indexOf(str1.substring(i,i+1))==-1)
	    return false;   //只要有一個字元不是半形英文或數字就傳回false                     
    }
    return true;
  } 

  function isnNumEng(str1) {
    var str2="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (i=0 ; i< str1.length ; i++ )   {
      if (str2.indexOf(str1.substring(i,i+1))!=-1)
	    return false;   //只要有一個字元不是半形英文或數字就傳回false                     
    }
    return true;
  } 








//檢驗字元數 START
  //檢驗字元數   obj=物件 ; maxlen=字元數限制 ; subject=欄位標題
  function charlen(obj,maxlen,subject)
  {
	var cnt=0;
	var str=trim(obj.value);
	
	for(var i=0;i<str.length;i++)
	{
		if (escape(str.charAt(i)).length>=4)
		  cnt+=2;
		else
		  cnt+=1;
	}
	
	if (cnt>maxlen)
	{
		alert(subject+" : 請勿超過"+parseInt(maxlen/2)+"個中文或"+maxlen+"個英數字！");
		obj.focus();
		return false;
	}
	
	return true;
  }


//檢查檔案類型
function checkFileUpload(idname,extensions,requireUpload) {
  if (extensions != '') var re = new RegExp("\.(" + extensions.replace(/,/gi,"|") + ")$","i");

	field = document.getElementById(idname);
    if (field.value == '') {
      if (requireUpload) {
		  alert('請選取上傳的檔案！');
		  field.focus();
		  return false;
	  }
    } else {
      if(extensions != '' && !re.test(field.value)) {
        alert('檔案類型限定： ' + extensions);
		field.value = "";
		field.focus();
		return false;
      }
	}
	return true;
}


//檢查帳號
  function check_mid(value1, min_length, max_length)
  {
	if(value1=="") 	{
	    alert("請輸入!!");
		return false;
    }
	else if(!iseng(value1.charAt(0))) {
		alert("帳號第一個字必須為英文！");
		return false;
	}
	else if((value1.length<min_length) || (value1.length>max_length) || !(isNumEng(value1))) {
		alert("帳號必須為"+min_length+"~"+max_length+"個英文或數字！");
		return false;
	}
	else return true;
  } 
//檢查帳號


function setCookie(name, value)		//cookies建立
{
	var argv = setCookie.arguments;
	var argc = setCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	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()));
}

function getCookie(Name)			//cookies讀取
{
	var search = Name + "="
	if(document.cookie.length > 0) 
	{
		offset = document.cookie.indexOf(search)
		if(offset != -1) 
		{
			offset += search.length
			end = document.cookie.indexOf(";", offset)
			if(end == -1) end = document.cookie.length
			return unescape(document.cookie.substring(offset, end))
		 }
	else return ""
	  }
}

//換頁
function change_page (link, sel) {
	location.href = link+sel.value;
}

function change_href(link_va) {
	location.href = link_va;
}

//加入最愛
function bookmarksite(title, url){
	//* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code

	if (document.all)
		window.external.AddFavorite(url, title);
	else if (window.sidebar)
		window.sidebar.addPanel(title, url, "")
}
//加入最愛


//UTF16轉UTF8
function utf16to8(str) {
    var out, i, len, c;

    out = "";
    len = str.length;
    for(i = 0; i < len; i++) {
 c = str.charCodeAt(i);
 if ((c >= 0x0001) && (c <= 0x007F)) {
     out += str.charAt(i);
 } else if (c > 0x07FF) {
     out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
     out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
     out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
 } else {
     out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
     out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
 }
    }
    return out;
}
//UTF16轉UTF8

//UTF8轉UTF16
function utf8to16(str) {
    var out, i, len, c;
    var char2, char3;

    out = "";
    len = str.length;
    i = 0;
    while(i < len) {
 c = str.charCodeAt(i++);
 switch(c >> 4)
 {
   case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
     // 0xxxxxxx
     out += str.charAt(i-1);
     break;
   case 12: case 13:
     // 110x xxxx   10xx xxxx
     char2 = str.charCodeAt(i++);
     out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
     break;
   case 14:
     // 1110 xxxx  10xx xxxx  10xx xxxx
     char2 = str.charCodeAt(i++);
     char3 = str.charCodeAt(i++);
     out += String.fromCharCode(((c & 0x0F) << 12) |
        ((char2 & 0x3F) << 6) |
        ((char3 & 0x3F) << 0));
     break;
 }
    }

    return out;
}
//UTF8轉UTF16


var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars = new Array(
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
    -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);

//客户端Base64编码
function base64encode(str) {
    var out, i, len;
    var c1, c2, c3;
len = str.length;
    i = 0;
    out = "";
    while(i < len) {
 c1 = str.charCodeAt(i++) & 0xff;
 if(i == len)
 {
     out += base64EncodeChars.charAt(c1 >> 2);
     out += base64EncodeChars.charAt((c1 & 0x3) << 4);
     out += "==";
     break;
 }
 c2 = str.charCodeAt(i++);
 if(i == len)
 {
     out += base64EncodeChars.charAt(c1 >> 2);
     out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
     out += base64EncodeChars.charAt((c2 & 0xF) << 2);
     out += "=";
     break;
 }
 c3 = str.charCodeAt(i++);
 out += base64EncodeChars.charAt(c1 >> 2);
 out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
 out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
 out += base64EncodeChars.charAt(c3 & 0x3F);
    }
    return out;
}
//客户端Base64编码


//客户端Base64解码
function base64decode(str) {
    var c1, c2, c3, c4;
    var i, len, out;

    len = str.length;
    i = 0;
    out = "";
    while(i < len) {
 /* c1 */
 do {
     c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
 } while(i < len && c1 == -1);
 if(c1 == -1)
     break;

 /* c2 */
 do {
     c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
 } while(i < len && c2 == -1);
 if(c2 == -1)
     break;

 out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));

 /* c3 */
 do {
     c3 = str.charCodeAt(i++) & 0xff;
     if(c3 == 61)
  return out;
     c3 = base64DecodeChars[c3];
 } while(i < len && c3 == -1);
 if(c3 == -1)
     break;

 out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));

 /* c4 */
 do {
     c4 = str.charCodeAt(i++) & 0xff;
     if(c4 == 61)
  return out;
     c4 = base64DecodeChars[c4];
 } while(i < len && c4 == -1);
 if(c4 == -1)
     break;
 out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
    }
    return out;
}
//客户端Base64解码
-->