var
Win=window,
Doc=document,
Loc=location,		

winSW=Win.screen.width,		
winSH=Win.screen.height,
wthId=(winSW<900)?0:1,

isIE =(Doc.all)?1:0,		
isNS6=(Doc.getElementById)?1:0,
isCSS=(isIE || isNS6)?1:0,
isAll=(isIE || isNS6)?1:0,
winSon=null;
winTask=null;

var SortYES=true;

var btnName=["add","del"];
var selName=["selFree","selUsed"];

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 winPopUp(url,n,w,h,x,y,d)
{
 return window.open(url,n,"width="+w+",height="+h+",resizable=1,dependent="+d+",status=0,"+
                       "scrollbars=1,titlebar=0,menubar=0,toolbar=0,location=0,"+
                       (isIE?"left=":"screenX=")+x+(isIE?",top=":",screenY=")+y);
}

/*
檢查是否為空字串
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;
	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;
}

var HTML_EDITOR_FORM="";
var HTML_EDITOR_NAME="";
var HTML_EDITOR_TITLE="";
var HTML_EDITOR_DIV="";
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 open_heml_edit(x, tt, ta, dn)
{
	HTML_EDITOR_FORM=x.name;
	HTML_EDITOR_TITLE=tt;
	HTML_EDITOR_NAME = ta;
	HTML_EDITOR_DIV = dn;
	var winx = winPopUp("/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;
}

function string_shorten(s, n)
{
	var s1="", j=0, k=0, rc=true;
	for(var i=0; i<s.length; i++){
		if(j > n) rc=false;
		if(rc){
			s1 += s.charAt(i);
			if(s.charCodeAt(i) > 256) j+=2;
			else j++;
		}
		if(s.charCodeAt(i) > 256) k+=2;
		else k++;
	}
	if(j < k) s1 += "...";
	return s1;
}
