isIE =(document.all)?1:0;
///////////////////////////////////////////////////////////////////////////////////////////

String.prototype.trim=trim;  //傳回去除前後空白的值
String.prototype.ltrim=ltrim;  //傳回去除左邊空白的值
String.prototype.rtrim=rtrim;  //傳回去除右邊空白的值
String.prototype.replaceAll = strReplace;

function trim() {
  return this.replace(/^\s+|\s+$/g, "");
} 
function ltrim() {
  return this.replace(/(^\s*)/g, "");
}
function rtrim() {
  return this.replace(/(\s*$)/g, "");
}

function strReplace(findText, replaceText) {
	var str = new String(this);
	while (str.indexOf(findText)!=-1) {
		str = str.replace(findText, replaceText);
	}
	return str;
}

//-----------------------------------------------------------------------------------------------------------------------

function winPopUp(url,n,w,h,x,y,s,d){
	// s=set size able?	
	return window.open(url,n,"width="+w+",height="+h+",resizable=1,dependent="+d+",status=no,"+
		"scrollbars=" + s + ",titlebar=0,menubar=0,toolbar=0,location=0,"+
		(isIE?"left=":"screenX=")+x+(isIE?",top=":",screenY=")+y);
}

function replaceString(oldS,newS,fullS) {
	// Replaces oldS with newS in the string fullS
	for(var i=0; i<fullS.length; i++){
		if(fullS.substring(i,i+oldS.length) == oldS){
			fullS = fullS.substring(0,i)+newS+fullS.substring(i+oldS.length,fullS.length);
		}
	}
	return fullS;
}

function checkchinese(str) {
	var strlen=str.length;
	if(strlen>0){
		var oldstrlen=str.length
		for(var i=0;i<strlen;i++) {
			c = '';
			c = escape(str.charAt(i));
			if( c.charAt(0) == '%') {
				cc = c.charAt(1);//IE~u,NS~A
				if(cc =='A' ||cc =='u'){
					return true;
				}
			}
		}
		return false; 
	}else{
		return false;
	}
}

function toAscii(ch){
	var symbols = " !\"#$%&'()*+'-./0123456789:;<=>?@";
	var loAZ = "abcdefghijklmnopqrstuvwxyz";
	symbols+= loAZ.toUpperCase();
	symbols+= "[\\]^_`";
	symbols+= loAZ;
	symbols+= "{|}~";
	var loc;
	loc = symbols.indexOf(ch);
	if (loc > -1) { 
		Ascii_Decimal = 32 + loc;
		return (32 + loc);
	}
	return(0);  // If not in range 32-126 return ZERO
}

//-----------------------------------------------------------------------------------------------------------------------

var Sel1=new Array("==請選擇縣市==,0;","台北市,DIS001;","台北縣,DIS003;","基隆市,DIS002;","桃園縣,DIS007;","新竹市,DIS005;","新竹縣,DIS006;","苗栗縣,DIS008;","台中市,DIS009;","台中縣,DIS010;","彰化縣,DIS011;","南投縣,DIS012;","雲林縣,DIS015;","嘉義市,DIS013;","嘉義縣,DIS014;","台南市,DIS016;","台南縣,DIS017;","高雄市,DIS018;","高雄縣,DIS019;","屏東縣,DIS021;","台東縣,DIS022;","花蓮縣,DIS023;","宜蘭縣,DIS004;","金門縣,DIS024;","澎湖縣,DIS020;","連江縣,DIS025;","南海諸島,DIS026;","釣魚台,DIS027;");
var Sel2=new Array();
Sel2[0] = new Array("==請選擇區域==,0;郵遞區號");
Sel2[1] = new Array("==請選擇區域==,0;郵遞區號","大同區,ZIP103;103","中正區,ZIP100;100","中山區,ZIP104;104","松山區,ZIP105;105","大安區,ZIP106;106","萬華區,ZIP108;108","信義區,ZIP110;110","士林區,ZIP111;111","北投區,ZIP112;112","內湖區,ZIP114;114","南港區,ZIP115;115","文山區,ZIP116;116");
Sel2[2] = new Array("==請選擇區域==,0;郵遞區號","萬里鄉,ZIP207;207","金山鄉,ZIP208;208","板橋市,ZIP220;220","汐止市,ZIP221;221","深坑鄉,ZIP222;222","石碇鄉,ZIP223;223","瑞芳鎮,ZIP224;224","平溪鄉,ZIP226;226","雙溪鄉,ZIP227;227","貢寮鄉,ZIP228;228","新店市,ZIP231;231","坪林鄉,ZIP232;232","烏來鄉,ZIP233;233","永和市,ZIP234;234","中和市,ZIP235;235","土城市,ZIP236;236","三峽鎮,ZIP237;237","樹林市,ZIP238;238","鶯歌市,ZIP239;239","三重市,ZIP241;241","新莊市,ZIP242;242","泰山鄉,ZIP243;243","林口鄉,ZIP244;244","蘆洲市,ZIP247;247","五股鄉,ZIP248;248","八里鄉,ZIP249;249","淡水鎮,ZIP251;251","三芝鄉,ZIP252;252","石門鄉,ZIP253;253");
Sel2[3] = new Array("==請選擇區域==,0;郵遞區號","仁愛區,ZIP200;200","信義區,ZIP201;201","中正區,ZIP202;202","中山區,ZIP203;203","安樂區,ZIP204;204","暖暖區,ZIP205;205","七堵區,ZIP206;206");
Sel2[4] = new Array("==請選擇區域==,0;郵遞區號","中壢市,ZIP320;320","平鎮市,ZIP324;324","龍潭鄉,ZIP325;325","楊梅鎮,ZIP326;326","新屋鄉,ZIP327;327","觀音鄉,ZIP328;328","桃園市,ZIP330;330","龜山鄉,ZIP333;333","八德市,ZIP334;334","大溪鎮,ZIP335;335","復興鄉,ZIP336;336","大園鄉,ZIP337;337","蘆竹鄉,ZIP338;338");
Sel2[5] = new Array("==請選擇區域==,0;郵遞區號","新竹市,ZIP300;300");
Sel2[6] = new Array("==請選擇區域==,0;郵遞區號","竹北市,ZIP302;302","北埔鄉,ZIP314;314","竹東鎮,ZIP310;310","湖口鄉,ZIP303;303","新埔鎮,ZIP305;305","新豐鄉,ZIP304;304","關西鎮,ZIP306;306","寶山鄉,ZIP308;308","橫山鄉,ZIP312;312","尖石鄉,ZIP313;313","峨眉鄉,ZIP315;315","芎林鄉,ZIP307;307","五峰鄉,ZIP311;311");
Sel2[7] = new Array("==請選擇區域==,0;郵遞區號","竹南,ZIP350;350","頭份,ZIP351;351","三灣,ZIP352;352","南庄,ZIP353;353","獅潭,ZIP354;354","後龍,ZIP356;356","通霄,ZIP357;357","苑裡,ZIP358;358","苗栗,ZIP360;360","造橋,ZIP361;361","頭屋,ZIP362;362","公館,ZIP363;363","大湖,ZIP364;364","泰安,ZIP365;365","銅鑼,ZIP366;366","三義,ZIP367;367","西湖,ZIP368;368","卓蘭,ZIP369;369");
Sel2[8] = new Array("==請選擇區域==,0;郵遞區號","中區,ZIP400;400","東區,ZIP401;401","南區,ZIP402;402","西區,ZIP403;403","北區,ZIP404;404","北屯區,ZIP406;406","西屯區,ZIP407;407","南屯區,ZIP408;408");
Sel2[9] = new Array("==請選擇區域==,0;郵遞區號","太平,ZIP411;411","大里,ZIP412;412","霧峰,ZIP413;413","烏日,ZIP414;414","豐原,ZIP420;420","后里,ZIP421;421","石岡,ZIP422;422","東勢,ZIP423;423","和平,ZIP424;424","新社,ZIP426;426","潭子,ZIP427;427","大雅,ZIP428;428","神岡,ZIP429;429","大肚,ZIP432;432","沙鹿,ZIP433;433","龍井,ZIP434;434","梧棲,ZIP435;435","清水,ZIP436;436","大甲,ZIP437;437","外埔,ZIP438;438","大安,ZIP439;439");
Sel2[10] = new Array("==請選擇區域==,0;郵遞區號","彰化,ZIP500;500","芬園,ZIP502;502","花壇,ZIP503;503","秀水,ZIP504;504","鹿港,ZIP505;505","福興,ZIP506;506","線西,ZIP507;507","和美,ZIP508;508","伸港,ZIP509;509","員林,ZIP510;510","社頭,ZIP511;511","永靖,ZIP512;512","埔心,ZIP513;513","溪湖,ZIP514;514","大村,ZIP515;515","埔鹽,ZIP516;516","田中,ZIP520;520","北斗,ZIP521;521","田尾,ZIP522;522","埤頭,ZIP523;523","溪州,ZIP524;524","竹塘,ZIP525;525","二林,ZIP526;526","大城,ZIP527;527","芳苑,ZIP528;528","二水,ZIP530;530");
Sel2[11] = new Array("==請選擇區域==,0;郵遞區號","集集,ZIP552;552","水里,ZIP553;553","魚池,ZIP555;555","信義,ZIP556;556","竹山,ZIP557;557","鹿谷,ZIP558;558","南投,ZIP540;540","中寮,ZIP541;541","草屯,ZIP542;542","國姓,ZIP544;544","埔里,ZIP545;545","仁愛,ZIP546;546","名間,ZIP551;551");
Sel2[12] = new Array("==請選擇區域==,0;郵遞區號","斗南,ZIP630;630","大埤,ZIP631;631","虎尾,ZIP632;632","土庫,ZIP633;633","褒忠,ZIP634;634","東勢,ZIP635;635","臺西,ZIP636;636","崙背,ZIP637;637","麥寮,ZIP638;638","斗六,ZIP640;640","林內,ZIP643;643","古坑,ZIP646;646","莿桐,ZIP647;647","西螺,ZIP648;648","二崙,ZIP649;649","北港,ZIP651;651","水林,ZIP652;652","口湖,ZIP653;653","四湖,ZIP654;654","元長,ZIP655;655");
Sel2[13] = new Array("==請選擇區域==,0;郵遞區號","嘉義市,ZIP600;600");
Sel2[14] = new Array("==請選擇區域==,0;郵遞區號","番路,ZIP602;602","梅山,ZIP603;603","竹崎,ZIP604;604","阿里山,ZIP605;605","中埔,ZIP606;606","大埔,ZIP607;607","水上,ZIP608;608","鹿草,ZIP611;611","太保,ZIP612;612","朴子,ZIP613;613","東石,ZIP614;614","六腳,ZIP615;615","新港,ZIP616;616","民雄,ZIP621;621","大林,ZIP622;622","溪口,ZIP623;623","義竹,ZIP624;624","布袋,ZIP625;625");
Sel2[15] = new Array("==請選擇區域==,0;郵遞區號","中區,ZIP700;700","東區,ZIP701;701","南區,ZIP702;702","西區,ZIP703;703","北區,ZIP704;704","安平區,ZIP708;708","安南區,ZIP709;709");
Sel2[16] = new Array("==請選擇區域==,0;郵遞區號","永康,ZIP710;710","歸仁,ZIP711;711","新化,ZIP712;712","左鎮,ZIP713;713","玉井,ZIP714;714","楠西,ZIP715;715","南化,ZIP716;716","仁德,ZIP717;717","關廟,ZIP718;718","龍崎,ZIP719;719","官田,ZIP720;720","麻豆,ZIP721;721","佳里,ZIP722;722","西港,ZIP723;723","七股,ZIP724;724","將軍,ZIP725;725","學甲,ZIP726;726","北門,ZIP727;727","新營,ZIP730;730","後壁,ZIP731;731","白河,ZIP732;732","東山,ZIP733;733","六甲,ZIP734;734","下營,ZIP735;735","柳營,ZIP736;736","鹽水,ZIP737;737","善化,ZIP741;741","大內,ZIP742;742","山上,ZIP743;743","新市,ZIP744;744","安定,ZIP745;745");
Sel2[17] = new Array("==請選擇區域==,0;郵遞區號","新興區,ZIP800;800","前金區,ZIP801;801","苓雅區,ZIP802;802","鹽埕區,ZIP803;803","鼓山區,ZIP804;804","旗津區,ZIP805;805","前鎮區,ZIP806;806","三民區,ZIP807;807","楠梓區,ZIP811;811","小港區,ZIP812;812","左營區,ZIP813;813");
Sel2[18] = new Array("==請選擇區域==,0;郵遞區號","桃源,ZIP848;848","三民,ZIP849;849","茂林,ZIP851;851","茄萣,ZIP852;852","仁武,ZIP814;814","大社,ZIP815;815","岡山,ZIP820;820","路竹,ZIP821;821","阿蓮,ZIP822;822","田寮,ZIP823;823","燕巢,ZIP824;824","橋頭,ZIP825;825","梓官,ZIP826;826","彌陀,ZIP827;827","永安,ZIP828;828","湖內,ZIP829;829","鳳山,ZIP830;830","大寮,ZIP831;831","林園,ZIP832;832","鳥松,ZIP833;833","大樹,ZIP840;840","旗山,ZIP842;842","美濃,ZIP843;843","六龜,ZIP844;844","內門,ZIP845;845","杉林,ZIP846;846","甲仙,ZIP847;847");
Sel2[19] = new Array("==請選擇區域==,0;郵遞區號","屏東,ZIP900;900","三地,ZIP901;901","霧臺,ZIP902;902","瑪家,ZIP903;903","九如,ZIP904;904","里港,ZIP905;905","高樹,ZIP906;906","鹽埔,ZIP907;907","長治,ZIP908;908","麟洛,ZIP909;909","竹田,ZIP911;911","內埔,ZIP912;912","萬丹,ZIP913;913","潮州,ZIP920;920","泰武,ZIP921;921","來義,ZIP922;922","萬巒,ZIP923;923","崁頂,ZIP924;924","新埤,ZIP925;925","南州,ZIP926;926","林邊,ZIP927;927","東港,ZIP928;928","琉球,ZIP929;929","佳冬,ZIP931;931","新園,ZIP932;932","枋寮,ZIP940;940","枋山,ZIP941;941","春日,ZIP942;942","獅子,ZIP943;943","車城,ZIP944;944","牡丹,ZIP945;945","恆春,ZIP946;946","滿州,ZIP947;947");
Sel2[20] = new Array("==請選擇區域==,0;郵遞區號","台東,ZIP950;950","綠島,ZIP951;951","蘭嶼,ZIP952;952","延平,ZIP953;953","卑南,ZIP954;954","鹿野,ZIP955;955","關山,ZIP956;956","海端,ZIP957;957","池上,ZIP958;958","東河,ZIP959;959","成功,ZIP961;961","長濱,ZIP962;962","太麻里,ZIP963;963","金峰,ZIP964;964","大武,ZIP965;965","達仁,ZIP966;966");
Sel2[21] = new Array("==請選擇區域==,0;郵遞區號","花蓮,ZIP970;970","新城,ZIP971;971","秀林,ZIP972;972","吉安,ZIP973;973","壽豐,ZIP974;974","鳳林,ZIP975;975","光復,ZIP976;976","豐濱,ZIP977;977","瑞穗,ZIP978;978","萬榮,ZIP979;979","玉里,ZIP981;981","卓溪,ZIP982;982","富里,ZIP983;983");
Sel2[22] = new Array("==請選擇區域==,0;郵遞區號","宜蘭,ZIP260;260","頭城,ZIP261;261","礁溪,ZIP262;262","壯圍,ZIP263;263","員山,ZIP264;264","羅東,ZIP265;265","三星,ZIP266;266","大同,ZIP267;267","五結,ZIP268;268","冬山,ZIP269;269","蘇澳,ZIP270;270","南澳,ZIP272;272");
Sel2[23] = new Array("==請選擇區域==,0;郵遞區號","金沙,ZIP890;890","金湖,ZIP891;891","金寧,ZIP892;892","金城,ZIP893;893","列嶼,ZIP894;894","烏坵,ZIP896;896");
Sel2[24] = new Array("==請選擇區域==,0;郵遞區號","馬公,ZIP880;880","西嶼,ZIP881;881","望安,ZIP882;882","七美,ZIP883;883","白沙,ZIP884;884","湖西,ZIP885;885");
Sel2[25] = new Array("==請選擇區域==,0;郵遞區號","南竿,ZIP209;209","北竿,ZIP210;210","莒光,ZIP211;211","東引,ZIP212;212");
Sel2[26] = new Array("==請選擇區域==,0;郵遞區號","東沙,ZIP817;817","南沙,ZIP819;819");
Sel2[27] = new Array("==請選擇區域==,0;郵遞區號","釣魚台列嶼,ZIP290;290");

function SetSel1(TargetObj,DefaultValue) {  
	SetValue(TargetObj,Sel1,DefaultValue);	 
}
function SetSel2(SelectedObj,TargetObj,DefaultValue){  
	SetValue(TargetObj,Sel2[GetSelectedValue(SelectedObj)],DefaultValue);  
}
function SetZip(SelectedObj1,SelectedObj2,SelectedObj3){  
	var ZipStr = Sel2[GetSelectedValue(SelectedObj1)][GetSelectedValue(SelectedObj2)];  
	var ind = ZipStr.indexOf(";");  
	SelectedObj3.value = ZipStr.substr(ind+1);  
}
function GetSelectedValue (TargetObj){
	var i,length;
	var j=0;
	length = TargetObj.length;
	for(i=0;i<length;i++)
		if (TargetObj.options[i].selected){
			j=i;
		}
	return (j);
}
function SetValue(TargetObj,ValueArray,DefaultValue){
	var i,init=0;
	with (TargetObj){
		var length = ValueArray.length;
		for (i=0;i<length;i++){
			var tmpStr = ValueArray[i];
			var ind = tmpStr.indexOf(",");
			var ind2 = tmpStr.indexOf(";");
			TargetObj.options[i].value=tmpStr.substr(ind+1,ind2-ind-1);
			TargetObj.options[i].text=tmpStr.substr(0,ind);
			if (tmpStr.substr(ind+1,ind2-ind-1)==DefaultValue) init=i;
		}
		TargetObj.options[init].selected=true;
	}  
}
function setDefaultByZip(SelectedObj1, SelectedObj2, Value1, Value2, zip){
	var i,j;
	var length = Value2.length;
	var DefSel1=0;
	var DefSel2=0;
	var ISGOT=false;
	for (i=0; i<length; i++){
		var length2 = Value2[i].length;
		for(j=0; j<length2; j++){
			var tmpStr = Value2[i][j];
			var ind = tmpStr.indexOf(",");
			var ind2 = tmpStr.indexOf(";");
			var ind3 = Value1[i].indexOf(",");
			var ind4 = Value1[i].indexOf(";");
			if(zip==tmpStr.substr(ind2+1)){
				DefSel1=Value1[i].substr(ind3+1,ind4-ind3-1);
				DefSel2=tmpStr.substr(ind+1,ind2-ind-1);
				ISGOT=true;
				break;
			}
		}
		if(ISGOT) break;
	}
	SetSel1(SelectedObj1, DefSel1);
	SetSel2(SelectedObj1, SelectedObj2, DefSel2);
}

//-----------------------------------------------------------------------------------------------------------------------

var btnName=["add","del"];
var selName=["selFree","selUsed"];
var SortYES=true;

function btnCtrl(x,n,hook){
	var c=0,m=n?0:1,y=eval("x."+selName[m]),z=eval("x."+selName[n]+".options");
	allItem(y,0);
	y.selectedIndex=-1;
	for(var i=0; i<z.length; i++){
		if (z[i].value.charAt(1)=='*')
			z[i].selected=false;
		if (z[i].selected) c++;
	}
	eval("x."+btnName[m]+".disabled=true");
	eval("x."+btnName[n]+".disabled="+(c?"false":"true"));
	if (hook) hook(x);
}

function addItem(x,nt,nv,qs,hook){
	var y=x.selUsed;
	for (var i=0; i<x.selFree.length; i++) {
		var z=x.selFree.options[i];
		if (z.value.charAt(1)=='*')
			z.selected=false;
		else if (z.selected) {
			y.options[y.length]=new Option(!nt?z.text:nt(z.text),!nv?z.value:nv(z.value));
			y.options[y.length-1].style.color=x.selFree.options[i].style.color;		//JLxxx
			x.selFree.options[i--]=null;
		}
	}
	if (qs) QSort(y.options,0,y.length-1,qs);
	if (hook) hook(x);
	x.add.disabled=true;
	x.del.disabled=true;
}

function delItem(x,nt,nv,qs,hook){
	var y=x.selFree;
	for (var i=0; i<x.selUsed.length; i++) {
		var z=x.selUsed.options[i];
		if (z.value.charAt(1)=='*')
			z.selected=false;
		else if (z.selected) {
			y.options[y.length]=new Option(!nt?z.text:nt(z.text),!nv?z.value:nv(z.value));
			y.options[y.length-1].style.color=x.selUsed.options[i].style.color;		//JLxxx
			x.selUsed.options[i--]=null;
		}
	}
	if (qs) QSort(y.options,0,y.length-1,qs);
	if (hook) hook(x);
	x.add.disabled=true;
	x.del.disabled=true;
}

function QSort(x,xlo,xhi,qs){
	if(SortYES){
		var lo=xlo,hi=xhi,mid;
		if (xhi>xlo) {
			mid=qs(x,Math.floor((xlo+xhi)/2));
			while(lo<=hi) {
				while(lo<xhi && qs(x,lo)<mid) ++lo;
				while(hi>xlo && qs(x,hi)>mid) --hi;
				if(lo<=hi) {
					//var t=x[lo].text,v=x[lo].value;
					var t=x[lo].text,v=x[lo].value,c=x[lo].style.color;		//JLxxx
					x[lo].text =x[hi].text;
					x[lo].value=x[hi].value;
					x[lo].style.color=x[hi].style.color;			//JLxxx
					x[hi].text =t;
					x[hi].value=v;
					x[hi].style.color=c;					//JLxxx
					lo++; hi--;
				}
			}
			if(xlo<hi) QSort(x,xlo,hi,qs);
			if(lo<xhi) QSort(x,lo,xhi,qs);
		}
	}
}

function allItem(x,n){
	for (var i=0; i<x.length; i++)
		x.options[i].selected = (n && x.options[i].value.charAt(1) !='*')? true : false;
}

function selItem(x,u,f,n){
	if (u) allItem(x.selUsed,n);
	if (f) allItem(x.selFree,n);
}

//-----------------------------------------------------------------------------------------------------------------------
function chkIP(s){ //檢查是否為IP
	var c,i=j=k=m=n=0;

	if ((s=s.trim())=="") return 0;
	for (i=0; i<s.length; i++) {
		c=s.charAt(i);
		if (c<'0'||c>'9') {
			if (!n || c!='.') return -1;
			m++; 
		}else
			n=1;
	}
	if (m!=3) return -1;
	if (s.charAt(s.length-1)!='.') s+=".";
	for (i=0; i<4; i++,j=k+1) {
		k=s.indexOf(".",j);
		if (k<0 || parseInt(s.substring(j,k),10)>255) return -1;
	}
	return 1;
}

/*
檢查是否為空字串
return: true=空字串
        false=非空字串
*/
function checkEmpty(s) {
	if(s=="") return true;
	else return false;
}
/*
檢查是否含有中文字或是 2 byte 的字
return: true=含中文
        false=不含中文
*/
function have_2byte_code(s){
	for (var i=0; i<s.length; i++){
		if (s.charCodeAt(i)>256)
			return true;
	}
	return false;
}
/*
檢查是否所有的字都是 2 byte
return: true=都是 2 byte
        false=含有不是 2 byte 的字
*/
function all_2byte_code(s){
	for (var i=0; i<s.length; i++){
		if (s.charCodeAt(i)<256)
			return false;
	}
	return true;
}
/*
檢查字串是否超過長度
return: true=沒超過
        false=超過長度
*/
function checkLength(s, n)
{
	var jsLen, byteLen;
	jsLen = s.length;
	byteLen=0;
	for (var i=0; i<s.length; i++)
	{
		if (s.charCodeAt(i)>256) byteLen+=2;
		else byteLen++;
		if (byteLen>n)
		{
			return false;
		}
	}
	return true;
}
/*
檢查是否含有不合法字元
return: true=有不合法字元
        false=沒有不合法字元
*/
function have_illegal_char(s, illegalStr)
{
	for (var i=0; i<s.length; i++)
	{
		if (illegalStr.indexOf(s.charAt(i))>=0)
			return true;
	}
	return false;
}

/*
檢查是否為 E-mail 格式
return: true=E-mail 格式
        false=不是 E-mail 格式
*/
function is_email_format(s)
{
	var lmn=0;
	var dotn=0;
	if(s.indexOf(" ") >= 0) return false;
	for (var i=0; i<s.length; i++){
		if (s.charAt(i) == "@")	lmn++;
		if ((s.charAt(i) == ".") && (lmn > 0))	dotn++;
	}
	if((lmn == 1) && (dotn>0))
		return true;
	else
		return false;
}

/*
檢查是否為合法的數字字串
return: true=合法
        false=不合法
*/
function is_numberic_str(s){
	var dot_N=0;
	if(s.charAt(0)=="0") return true;
	if((s.charAt(0)=="0") && (s.charAt(1)!=".")) return false;
	for(var i=0; i<s.length; i++)
	{
		if(i==0)
		{
			if(!(((s.charAt(i)>="0") && (s.charAt(i)<="9")) || (s.charAt(i)=="-")))
				return false;
		}
		else
		{
			if((s.charAt(i)<"0") || (s.charAt(i)>"9"))
			{
				if(s.charAt(i)=="." && dot_N<1)
				{
					dot_N++;
					continue;
				}
				return false;
			}
		}
	}
	return true;
}

/*
檢查是否為合法的手機號碼
return: true=合法
        false=不合法
*/
function is_mobile_str(s)
{
	if(s.length != 10)
		return false;
	if(s.substring(0, 2) != "09")
		return false;
	return true;
}

/*
檢查字串最小與最大的長度
return: true=通過
        false=不通過
*/
function str_len_check(s, min_len, max_len)
{
	var jsLen, byteLen, pass1, pass2;
	jsLen = s.length;
	byteLen=0;
	pass1 = pass2 = false;
	for (var i=0; i<s.length; i++){
		if (s.charCodeAt(i)>256) byteLen+=2;
		else byteLen++;
		if (byteLen<min_len)
			pass1 = false;
		else
			pass1 = true;
		
		if (byteLen>max_len)
			pass2 = false;
		else
			pass2 = true;
	}
	if(pass1 && pass2)
		return true;
	else
		return false;
}

//-----------------------------------------------------------------------------------------------------------------------

var HTML_EDITOR_FORM="";
var HTML_EDITOR_NAME="";
var HTML_EDITOR_TITLE="";
var HTML_EDITOR_DIV="";
function open_heml_edit(x, tt, ta, dn, dr){
	HTML_EDITOR_FORM=x.name;
	HTML_EDITOR_TITLE=tt;
	HTML_EDITOR_NAME = ta;
	HTML_EDITOR_DIV = dn;
	var winx = winPopUp(dr+"admin/html_edit.php",HTML_EDITOR_NAME,780,540,0,0,0,1);
	winx.focus();
}

function get_html_title(){
	return HTML_EDITOR_TITLE;
}

function get_html_edit(){
	var obj = eval("document." + HTML_EDITOR_FORM + "." + HTML_EDITOR_NAME);
	return obj.value;
}

function set_html_edit(htmlstr){
	var obj = eval("document." + HTML_EDITOR_FORM + "." + HTML_EDITOR_NAME),
			obj1 = document.getElementById(HTML_EDITOR_DIV);
	htmlstr = replaceString("~||~", "\"", htmlstr)
	obj.value = htmlstr;
	obj1.innerHTML = htmlstr;
	HTML_EDITOR_FORM="";
	HTML_EDITOR_NAME="";
	HTML_EDITOR_TITLE="";
	HTML_EDITOR_DIV="";
}

///////////////////////////////////////////////////////////////////////////////////////////

//以下好鬼建
function getFormObj(frm){ //取得表單物件
	var x = false;
	if( document.getElementById(frm) ){
		x = document.getElementById(frm);
	}else if( eval("document." + frm) ){
		x = eval("document." + frm);
	}
	return x;
}

function SetFormSelectSelected(frm, obj_name, val){ //設定 Select-obj物件 selected 該值
	if( typeof( frm ) == "string" )
		var x = getFormObj(frm);
	else
		var x = frm;
	if( x ){
		var obj = eval("x." + obj_name);
		if( obj ){
			if( obj.options && obj.options.length > 0 ){
				for(var i=0; i < obj.options.length; i++){	
					if( obj.options[i].value == val ){
						obj.options[i].selected = true;
						break;
					}
				}
			}
		}
	}
}
function SetFormRadioChecked(frm, obj_name, val){
	if( typeof( frm ) == "string" )
		var x = getFormObj(frm);
	else
		var x = frm;
	if( x ){
		var obj = eval("x." + obj_name);
		if( obj ){
			if( obj.length ){
				for(var i=0; i< obj.length; i++){
					if( obj[i].value == val ){
						obj[i].checked = true;
//						break;
					}else{
						obj[i].checked = false;
					}
				}
			}else{
				if( obj.value == val ){
					obj.checked = true;
				}else{
					obj.checked = false;
				}
			}
		}
	}
}
function SetFormCheckboxChecked(frm, obj_name, val){
  //if( typeof(ischecked) == 'undefined' ) { ischecked = 0; }
	if( typeof( frm ) == "string" )
		var x = getFormObj(frm);
	else
		var x = frm;
	if( x ){
		var obj = eval("x['" + obj_name + "']");
		if( obj ){
			if( obj.length ){
				for(var i=0; i< obj.length; i++){
				  if(val == -1){
					  obj[i].checked = false;
					}else {
            if( obj[i].value & val ){
						  obj[i].checked = true;
						}else{
						  obj[i].checked = false;
  					}
					}
				}
			}else{
  			if(val == -1){
				  obj.checked = false;
				}else {
          if(obj.value & val) {
					  obj.checked = true;
					}else{
					  obj.checked = false;
					}
				}
			}
		}
	}
}

//-----
function getAbsoluteOffsetLeft(obj) { //取得物件的絕對位置 X座標
	var x = obj.offsetLeft;
	while(obj = obj.offsetParent){
		x += obj.offsetLeft;
	}
	if(isIE){
		return x;
	}else{
		return x + "px";
	}
}
function getAbsoluteOffsetTop(obj) { //取得物件的絕對位置 Y座標
	var y = obj.offsetTop;
	while(obj = obj.offsetParent){
		y += obj.offsetTop;
	}
	if(isIE){
		return y;
	}else{
		return y + "px";
	}
}

function ClickRadio(form_name, item_name, no){ //點選跟隨在 Radio 或 Checkbox 後面跟隨的字時，也會觸發 Radio 或 Checkbox 的 onclick事件
	var type = 1;
	if( typeof(form_name) == "object" ){
		if( form_name.tagName != "FORM" ){
			type = 2;
		}
	}

	if( type == 1 ){
		//傳過來的是字件，則找設定的Form
		if( typeof(form_name) == "object" ){
			var x = form_name;
		}else{
			var x = document.getElementById(form_name);
			if( !x || x.tagName != "FORM" ){
				x = eval("document." + form_name );
			}
		}

		if( x && x.tagName == "FORM" ){
			var obj = eval("x." + item_name );
			if( obj.length > 1 ){
				if( !obj[no].disabled )
					obj[no].click();
			}else{
				if( !obj.disabled )
					obj.click();
			}
		}else{
			return false;
		}
	}else if( type == 2 ){
		var nowLen = -1;  //傳過來的是物件，則找此物件的上個物件是否為 Radio 或 Checkbox
		var pp = form_name.parentNode;
		for(var i=0; i < pp.childNodes.length; i++ ){
			if( pp.childNodes[i] == form_name ){
				nowLen = i;
				break;
			}
		}
		if( nowLen > 0 ){
			for(var i = (nowLen-1); i >= 0; i-- ){
				if( pp.childNodes[i].tagName == "INPUT" && (pp.childNodes[i].type == "checkbox" || pp.childNodes[i].type == "radio") ){
					if( !pp.childNodes[i].disabled )
						pp.childNodes[i].click();
					break;
				}
			}
		}else
			return false;
	}

}
//類似PHP 的 sprintf() 功能 => 參考於 http://jan.moesen.nu/code/javascript/sprintf-and-printf-in-javascript/
function sprintf(){
	if (!arguments || arguments.length < 1 || !RegExp){
		return;
	}
	var str = arguments[0];
	var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a = b = [], numSubstitutions = 0, numMatches = 0;
	while (a = re.exec(str))
	{
		var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
		var pPrecision = a[5], pType = a[6], rightPart = a[7];
		
		//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

		numMatches++;
		if (pType == '%')
		{
			subst = '%';
		}
		else
		{
			numSubstitutions++;
			if (numSubstitutions >= arguments.length)
			{
				alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
			}
			var param = arguments[numSubstitutions];
			var pad = '';
				   if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
			  else if (pPad) pad = pPad;
			var justifyRight = true;
				   if (pJustify && pJustify === "-") justifyRight = false;
			var minLength = -1;
				   if (pMinLength) minLength = parseInt(pMinLength);
			var precision = -1;
				   if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
			var subst = param;
				   if (pType == 'b') subst = parseInt(param).toString(2);
			  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
			  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
			  else if (pType == 'u') subst = Math.abs(param);
			  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
			  else if (pType == 'o') subst = parseInt(param).toString(8);
			  else if (pType == 's') subst = param;
			  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
			  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
		}
		str = leftpart + subst + rightPart;
	}
	return str;
}
//From http://chrisbalboa.wordpress.com/2007/07/05/javascriptcookie%E5%AF%AB%E6%B3%95/
function createCookie(name,value,days) { //建立cookie
	if(days) {
		var date = new Date();
		date.setTime( date.getTime() + (days*24*60*60*1000) );
		var expires = "; expires=" + date.toGMTString();
	} else
		var expires = "";

	document.cookie = name + "=" + escape(value) + expires + "; path=/";
}

function readCookie(name) { //取得cookie
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');

	for(var i=0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0)==" ")
			c = c.substring(1,c.length);

		if (c.indexOf(nameEQ) == 0)
			return unescape(c.substring(nameEQ.length, c.length));
	}
	return null;
}

function eraseCookie(name) { //清除cookie
	createCookie(name, "", -1);
}
