//----------- 鎖住右鍵 -------------------

function right(e) {
if (navigator.appName =='Netscape'&&
(e.which ==3|| e.which ==2))
return false;
else if (navigator.appName == 'Microsoft Internet Explorer' &&
(event.button == 2|| event.button ==3)) {
alert("Welcome to ABIT!!");
return false;
}
return true;
}
document.onmousedown=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
window.onmousedown=right;

//----------- 比對欄位值函數 -------------------
//FormName		:form 名稱
//ObjName		:輸入標籤名稱
//TagType		:輸入標籤種類 -->	S:select tag 
//									C:checkbox tag 
//									R:radio tag
//									T:text tag
//ValueType		:檢查值的型態 -->I:Integer  S:String
//CheckValue	:是否允0值 --> 1:not 0:yes
//Msg			:顯示的訊息
//------------------------------------------------------
function checkvalue(FormName,ObjName,TagType,ValueType,CheckValue,Msg)
{
	var flag = true;
	var value = GET_Value(FormName,ObjName,TagType);
	if ((!value)&&(value!=0)) //判斷 value 是否有被設定
	{
		flag = false;
	}
	else
	{	
		if (ValueType == 'I') //如果輸入型態為整數時
		{
			if ((value == '')||((CheckValue == '1')&&(value == '0')))
				flag = false;
			if (flag) flag = isNum(value)	
		}
		else
		{		
			if (value == '')
				flag = false;
		}
	}	
	if (! flag)	
	{ 
		shotTo(FormName,ObjName,TagType,Msg);
	}
	return flag;
}
//----------- 設定欄位焦點函數 -------------------
//FormName		:form 名稱
//ObjName		:輸入標籤名稱
//TagType		:輸入標籤種類 -->	S:select tag 
//									C:checkbox tag 
//									R:radio tag
//									T:text tag
//Msg			:顯示訊息
//------------------------------------------------------
function shotTo(FormName,ObjName,TagType,Msg) 
{ 
	var X = document.forms[FormName].elements[ObjName];
	if (Msg != '') alert(Msg);
	if ((TagType == 'C') || (TagType == 'R'))
	{
		if (!X.length) 
			X.focus();
		else
			X[0].focus(); //if tag is checkbox then set focus to first checkbox
	}		
	else X.focus();
} 
//----------- 取得欄位標籤所輸入之值 -------------------
//FormName		:form 名稱
//ObjName		:輸入標籤名稱
//TagType		:輸入標籤種類 -->	S:select tag 
//									C:checkbox tag 
//									R:radio tag
//									T:text tag
//------------------------------------------------------
function GET_Value(FormName,ObjName,TagType)
{
	var X = document.forms[FormName].elements[ObjName];
	if (TagType == 'S') { var i = X.selectedIndex;return X[i].value;}
	if ((TagType == 'C')||(TagType == 'R')) 
	{ 		
		if (!X.length) 
		{
			if (X.checked) return X.value;
		}
		else
		{
			var i = 0;
			while (i<X.length)
			{
				if (X[i].checked) return X[i].value;
				i++;
			}
		}	
	}
	if (TagType == 'T') { return X.value;}
}
//----------- 判斷是否為數值 -------------------
//chkStr		:判斷字串
//------------------------------------------------------
function isNum(chkStr)
{
	var cmp="0123456789.";
	var rc=true;
	var cmpChar;

	for(var i=0; i<chkStr.length; i++)
	{
		cmpChar=chkStr.substring(i,i+1)
		if(cmp.indexOf(cmpChar)<0)
		{
			rc=false;
			i=chkStr.length;
		}
	}
	return rc;
}
//----------- 判斷是否為16進制數值 -------------------
//chkStr		:判斷字串
//------------------------------------------------------
function is16Num(chkStr)
{
	var cmp="0123456789ABCDEFabcdef";
	var rc=true;
	var cmpChar;

	for(var i=0; i<chkStr.length; i++)
	{
		cmpChar=chkStr.substring(i,i+1)
		if(cmp.indexOf(cmpChar)<0)
		{
			rc=false;
			i=chkStr.length;
		}
	}
	return rc;
}
//----------- 判斷欄位是否為數值 -------------------
//FormName		:form 名稱
//ObjName		:輸入標籤名稱
//Msg			:顯示訊息
//------------------------------------------------------
function chkNum(FormName,ObjName,Msg)
{
	var rc=isNum(document.forms[FormName].elements[ObjName].value);
	if(!rc)
	{
		if(Msg!='')
			shotTo(FormName,ObjName,'T',Msg) ;
		else
			shotTo(FormName,ObjName,'T','Please Enter Number') ;
	}
	return rc;
}

//----------- 檢查email輸入之值 -------------------
//aa			:
//graf			:email value
//------------------------------------------------------
function checkemail1(aa, graf)
{
   var pos = 0;
   var num = -1;
   var i = -1;
   var email = new Array()
   while (pos != -1)
   {
      pos = graf.indexOf(";",i+1);
      num += 1;
      if (pos == -1) { email[num] = graf.substring(i+1,graf.length); }
      else { email[num] = graf.substring(i+1,pos); }
      i = pos;
   }
   for ( i = 0 ; i <= num ; i++ )
   {
     if (email[i].length > 0)
     {
       l=email[i].indexOf("@");
       j=email[i].indexOf(".",l);
       k=email[i].indexOf(",");
       kk=email[i].indexOf(" ");
       jj=email[i].lastIndexOf(".") + 1;
       ll=email[i].indexOf(":");
       mm=email[i].indexOf("(");
       nn=email[i].indexOf(")");
       oo=email[i].indexOf("：");
       len=email[i].length;

       if ((l <= 0) || (j <= (1+1)) || (k != -1) || (kk != -1) || (len-jj < 2) || (len-jj > 3) || (ll != -1) || (mm != -1 ) || (nn != -1) || (oo != -1))
       {
       	   if ( aa != "" ) { alert("Your " + aa + " Email 【" + email[i] + "】is Failed !"); }
       	   else { alert("Your Email 【" + email[i] + "】Is Failed !"); }
           return false;
       }
     }
   }
   return true;
}

//----------- 判斷電話是否正確 -------------------
//FormName		:form 名稱
//ObjName		:輸入標籤名稱
//------------------------------------------------------
/*
var constTelFormat = "電話號碼格式為：" + "\n\n" +
       	             "【大台北地區，中部地區】─區碼為(0X) 電話號碼為8碼 格式：0X-XXXXXXXX" + "\n\n" +
               	     "【其他地區】─1. 區碼為2碼(0X) 電話號碼為7碼 格式：0X-XXXXXXX" + "\n\n" + 
               	     "　　　　　　　2. 區碼為3碼(03X) 電話號碼為6碼 格式：0XX-XXXXXX";
function isTel(FormName,ObjName)
{
	var Tel = document.forms[FormName].elements[ObjName].value;
	//if(Tel.length == 10 || Tel.length == 11)
	//{
		var index = Tel.indexOf("-");
		if(index == 2 || index == 3)
		{
			var i, iASCII;
			for(i = 0; i < index; i ++)
			{
				if(i != index)
				{
					iASCII = Tel.charCodeAt(i);
					if(iASCII < 48 || iASCII > 57)
						{
							return false;
							shotTo(FormName,ObjName,'T',constTelFormat); 
							break;
						}
				}
			}
			return true;
		}
		else
		{
			shotTo(FormName,ObjName,'T',constTelFormat);
			return false;
		}
	//}
	//else
	//{
	//	return false;
	//}
}

//----------- 判斷行動電話是否正確 -------------------
//FormName		:form 名稱
//ObjName		:輸入標籤名稱
//------------------------------------------------------
var constMobilFormat = "【行動電話】─前置碼為4碼(XXXX) 後置碼為6碼  格式：XXXX-XXXXXX";
function isMobil(FormName,ObjName)
{
	var value = document.forms[FormName].elements[ObjName].value;
	if (value.length != 11 && value.length > 0)
	{
		return false;
		shotTo(FormName,ObjName,'T',constMobilFormat); 
	}
	else
	{
		var j;
		var index = 4;
		for (j = 0; j < value.length; j++)
		{
			if (j != index)
			{
				iASCII = value.charCodeAt(j);
				if (iASCII < 48 || iASCII > 57)
				{
					shotTo(FormName,ObjName,'T',constMobilFormat); 
					return false;
				}
			}
		}
		return true;
	}
}
*/

//----------- 開啟新視窗 -------------------
//mylink		:url
//w				:window width
//h				:window height
//rs			:set change size :yes can change
//								 :no can't change
//sl			:set scroll bar :yes
//								:no								 
//------------------------------------------------------
function openwindow(mylink,w,h,rs,sl)
{
   var gt = unescape('%3e');
   var popup = null;
   var over = "Launch Pop-up Navigator";
   popup = window.open('','popwindow','width='+w+',height='+h+',resizable='+rs+',scrollbars='+sl+',top=50,left=20');
   if (popup != null) {
      if (popup.opener == null) {
         popup.opener = self; 
      }
      popup.location.href = mylink;
   }
}

//----------- 開啟新視窗(可設定位置) -------------------
//mylink		:url
//w				:window width
//h				:window height
//align			:set window align : center
//						 
//------------------------------------------------------
function openwindow2(mylink,w,h,align)
{
	var width=screen.width;
	var height=screen.height;
	var left = 50;
	var top = 50;
	if (w=='')
		w = width;
	if (h=='')
		h = height;
	if (align=='center')
	{
		left = (width-w)/2;
		top = (height-h)/2;
	}
	if(document.all)
		window.open(mylink,'popwindow','width='+w+',height='+h+',left='+left+',top='+top+',scrollbars=1');
	else
		window.open(mylink,'popwindow','width='+w+',height='+h+',screenX='+left+',screenY='+top);
}

//----------- 判斷年份是否是輸入數值 -------------------
//FormName		:form 的名稱
//YY			:輸入西元 year 的欄位名稱(<input type=text> 的模式)
//MM			:輸入 month 的欄位名稱(<select> 的模式)
//DD			:輸入 date 的欄位名稱(<select> 的模式)
//使用法		:配合 改變日期天數的選單 的函數 
//<input name="YY" type=text onblur="javascript:CheckYY('Send','YY','MM','DD');">年
//<select name="MM" onchange="javascript:ChangeDay('Send','YY','MM','DD');">
//------------------------------------------------------
function CheckYY(FormName,YY,MM,DD)
{
	var sflag = true;
	if (document.forms[FormName].elements[YY].value!='')
		if (! isNum(document.forms[FormName].elements[YY].value)) 
		{
			sflag = false;
			shotTo(FormName,YY,'T','Year Please Enter Number!!') 
		}
		else
			ChangeDay(FormName,YY,MM,DD);
	return sflag;		
			
}
//----------- 改變日期天數的選單 -------------------
//FormName		:form 的名稱
//YY			:輸入西元 year 的欄位名稱(<input type=text> 的模式)
//MM			:輸入 month 的欄位名稱(<select> 的模式)
//DD			:輸入 date 的欄位名稱(<select> 的模式)
//						 
//------------------------------------------------------
function ChangeDay(FormName,YY,MM,DD)
{
	if (!checkvalue(FormName,YY,'T','S',1,'Please Enter Year First in Date!!')) 
		return false;
	{	
		var da = new Array(12);
		da[0] = 31;   da[1] = 28;   da[2] = 31;   da[3] = 30;   da[4] = 31
		da[5] = 30;   da[6] = 31;   da[7] = 31;   da[8] = 30;   da[9] = 31
		da[10] = 30;   da[11] = 31;
		var X = document.forms[FormName].elements[MM];
		var M = X[X.selectedIndex].value;
		var Days = 0;
		var Flag = true; 
		//if (Flag) Flag = checkvalue(FormName,YY,'T','S',1,'請先輸入「日期」之年份');
		y = document.forms[FormName].elements[YY].value;
		if (isleap(y))	da[1] = 29;
		if (Flag)
		{
			if (M == '') 
				Days = 0;
			else
				Days = da[M-1]
			document.forms[FormName].elements[DD].length = Days;
			for (var i=0;i<Days;i++)
			{	
				document.forms[FormName].elements[DD].options[i].value = i+1;
				document.forms[FormName].elements[DD].options[i].text = i+1;
			}
		}
	}	
}

//----------- 判斷是否有資料 -------------------
//s				:變數
//						 
//------------------------------------------------------
function empty(s) 
{	
	if (s == null)			return(true)
	if (allTrim(s) == 'undefined')	return(true)
	if (allTrim(s) == "null")	return(true)
	if (allTrim(s) == "")		return(true)
	
	if (allTrim(s) == "0")		return(true)

	return(false)
}

//----------- 判斷是否有資料 -------------------
//s				:變數
//						 
//------------------------------------------------------
function notEmpty(s) 
{
	return(!nullEmpty(s))
}

//----------- 判斷是否為空值 -------------------
//s				:變數
//						 
//------------------------------------------------------
function nullEmpty(s) 
{	
	if (s == null)			return(true)
	if (allTrim(s) == 'undefined')	return(true)
	if (allTrim(s) == "null")	return(true)
	if (allTrim(s) == "")		return(true)
	
	if (allTrim(s) == "0")		return(true)

	return(false)
}

//----------- 左右去空白 -------------------
//s				:字串
//						 
//------------------------------------------------------
function allTrim(s)
{
	var s1 = lTrim(s)
	return(rTrim(s1))
}

//----------- 左方去空白 -------------------
//s				:字串
//						 
//------------------------------------------------------
function lTrim(s)
{
	s = "" + s;
	var len = s.length;
	var pos = 0;
	var s1 = "";

	while (pos < len) {
		var chr = s.substring( pos, pos + 1 );
		if (chr == " " || chr == "") pos = pos + 1; 
		else return(s.substring(pos,len))
	}
	
	return s1;
}

//----------- 右方去空白 -------------------
//s				:字串
//						 
//------------------------------------------------------
function rTrim(s)
{
	s = "" + s;
	var len = s.length;
	var pos = len-1;
	var s1 = "";
	var i = 0
	while (pos >= 0) {
		var chr = s.substring( pos, s.length-i );
		if (chr == " " || chr == "") pos = pos - 1; 
		else return(s.substring(0,pos+1))
		i++
	}
	
	return s1;
}

//***********************************************************************
//函數名稱：JSChk_Suid(suid) 
//功    能：檢查統一編號函式 
//參　　數：$suid	 	： 公司統一編號 C8
//回 傳 值：True,False
//作　　者：Tseng Wei-Yuan
//修改日期：2000/10
//***********************************************************************
function JSChk_Suid(suid) 
{ 
	var Flag = true;
	var w_check=0;
	if (suid.length==8) 
	{ 
		var w_cnt = 0; 
		var i = 0; 
		var checkstr = '12121241';
		
		for (i=0;i<=7;i++) 
		{
			if ((suid.charAt(i,1)-0)*(checkstr.charAt(i,1)-0) >= 10)
				w_cnt = w_cnt+Math.floor(((suid.charAt(i,1)-0)*(checkstr.charAt(i,1)-0))/10)+((suid.charAt(i,1)-0)*(checkstr.charAt(i,1)-0))%10;
			else
				w_cnt = w_cnt+((suid.charAt(i,1)-0)*(checkstr.charAt(i,1)-0));
		}
		if ((w_cnt%10)==0) return true;
		else
		{
			if (suid.charAt(6,1)=='7') 
			{
				if (((w_cnt-10+1)%10)==0) 
					Flag = true;
				else 
					Flag = false;
			}
			else Flag = false;
		}
	}
	else
		Flag = false;
	
	return Flag;	
	
} 

//----------- 左方補特定字元 -------------------
//s				:處理字串
//n				:補字元數
//c				:特定字元
//------------------------------------------------------
function padLeft(s, n, c) {
	var ss
	ss = ""
	for(i = 0; i < n - s.length; i++) {
		ss += c
	}
	ss += s
	return ss
}

//----------- 讀取字串右方 n 位數 -------------------
//s				:處理字串
//n				:取得字元數
//------------------------------------------------------
function right(s, n) {

	if (empty(s)) return("")
	s = rTrim(s)
	var len = s.length;
	len1 = len - n;
	str = s.substring(len1, len);
	return(str);
}

//----------- 讀取字串左方 n 位數 -------------------
//s				:處理字串
//n				:取得字元數
//------------------------------------------------------
function left(s, n) {

	if (empty(s)) return("")
	var str = s.substring(0, n);
	return(str);
}

//----------- 判斷檔名是否正確 -------------------
//fvar			:處理字串
//------------------------------------------------------
function validUpload(fvar) 
{
	if (fvar.value.length==0) {
		alert("Please Enter File Name!!");
		return(false)
	}
	if (fvar.value.indexOf("\"")>=0 || fvar.value.indexOf("'")>=0) {
		alert("File Name Can't has \" or '");
		return(false)
	}
	if (fvar.value.indexOf(">")>=0 || fvar.value.indexOf("<")>=0) {
		alert("File Name Can't has> or <");
		return(false)
	}

	return(true);
}

function img_show(imgname, newgif) 
{
	browser = navigator.userAgent
	if ((browser.indexOf("Mozilla/3.0") != -1) || (browser.indexOf("Mozilla/4.0") != -1))
		imgname.src = newgif; 
}

function isNotANum(fvar, msg, allowempty) {
	if (isNotANum.arguments < 3) allowempty = true
	if (!allowempty && allTrim(fvar.value) == '' ) {
		alert(msg);
		fvar.focus()
		return(true)
	}
	if (isNaN(fvar.value)) {
		alert(msg);
		fvar.focus()
		return(true)
	} 
	return(false)
}

//----------- 判斷是否為閏年 -------------------
//y				:輸入西元 year
//						 
//------------------------------------------------------
function isleap(y) 
{
	var m, d, k
	y++
	y--
	y = parseInt(y);
	k = y / 4;
	m = y - Math.floor(k) * 4;
	if (nullEmpty(m))	return(true);
	else		return(false);
}

//----------- 判斷日期是否正確 -------------------
//fvar			:日期
//allowempty	:是否允許空白  true;false
//msg			:顯示訊息
//------------------------------------------------------
function isValidDate(fvar, allowempty, msg) 
{
	if (allowempty && nullEmpty(fvar.value)) return true
	if (!chkDateStr(fvar.value)) {
		alert(msg);
		fvar.focus()
		return(false)
	} 
	return(true)
}

function isValidStr(fvar, msg, allowempty) 
{
	if (isValidStr.arguments < 3) allowempty = true
	if (allowempty && nullEmpty(fvar.value)) return true
	if (nullEmpty(fvar.value)) {
		alert(msg);
		fvar.focus()
		return(false)
	} 
	return(true)
}

//----------- 判斷身份証是否正確 -------------------
//userID		:身份証號
//------------------------------------------------------
function JScheckID(userID)
{
	ret="";
	userID = userID.toUpperCase();
	areaCode = userID.substring(0, 1);
	if (userID.length != 10) ret="1";
	if (areaCode < "A" && areaCode > "Z") ret="1";
	if (isNaN(userID.substring(2, 10))) ret="1";
	ss = "ABCDEFGHJKLMNPQRSTUVXYWZIO";
	areaNO = ss.indexOf(areaCode) + 10;
	userID = areaNO + userID.substring(1, 10);
	//取得CheckSum的值
	checkSum = parseInt(userID.substring(0,1),10) + parseInt(userID.substring(10, 11), 10);
	
	for (i = 1 ; i <= 9; i ++) {
	    checkSum += parseInt(userID.substring(i, i+1), 10) * (11 - i - 1);
	}
	bFlag=false;
	if(ret!="1")
		ret=mod(checkSum, 10) == 0 ? "0" : "2";
	if(ret!="0")
		bFlag=confirm('ID Number Failed !!Accept?');
	else
		bFlag=true;
	return (bFlag);
	//return (mod(checkSum, 10) == 0 ? 11 : 11)
}

//----------- 讀取時間(12:01:01) -------------------
//
//------------------------------------------------------
function getTimeStr() {

	var da = new Date();
	h = "0" + da.getHours()
	m = "0" + da.getMinutes()
	s = "0" + da.getSeconds()
	tstr = right(h, 2) +":"+ right(m, 2) + ":"+right(s, 2);
	return(tstr);
}

//----------- 日期格式(yyymmdd->yyy/mm/dd) -------------------
//d			:民國日期
//------------------------------------------------------
function getDateFormat(d) {
	
	if (empty(d)) d = getDateStr()
	yy = left(d, 3)
	mm = d.substring(3, 5)
	dd = d.substring(5, 7)
	return(yy+"/"+mm+"/"+dd)	
}

//----------- 日期格式(yyymmdd->mm/dd/yyyy) -------------------
//d			:民國日期
//------------------------------------------------------
function getEDateFormat(d) {
	
	if (empty(d)) d = getDateStr()
	yy = 1911 + parseInt(left(d, 3))
	mm = d.substring(3, 5)
	dd = d.substring(5, 7)
	return(mm+"/"+dd+"/"+yy)	
}

//----------- 讀取民國年 -------------------
//da		:西元日期(日期格式)
//------------------------------------------------------
function getChinaYear(da) {
	var y = da.getYear()
	if (y < 2000)
		return (y - 11)
	else
		return (y - 1911)
	
}

//----------- 日期格式：民國日期(yyymmdd) -------------------
//da		:西元日期(日期格式)
//------------------------------------------------------
function getDateStr() {
	var y, m, d

	var da = new Date();
	y = "0000" + da.getYear()
	m = "00" + (da.getMonth() + 1)
	d = "00" + da.getDate()
	dstr = right(y, 4) + '/' + right(m, 2) + '/' + right(d, 2);
	return(dstr);
}

//----------- 傳回前 n 日 -------------------
//d				:西元日期(yyy/mm/dd)
//n				:改變的天數
//------------------------------------------------------
function getLastDays(d, n) 
{
	var dd
	for (var i=0 ; i < n; i++) {
		dd = d.substring(8, 10)
		if (dd == "01")
			d = getMonDayBottom(getLastMonth(d))
		else {
			dd--
			d = left(d, 8) + right("0"+dd, 2)
		}
	}
	return(d);
}

//----------- 傳回後 n 日 -------------------
//d				:民國日期
//n				:改變的天數
//------------------------------------------------------
function getNextDays(d, n) 
{
	var dd, yy, mm
	da = new Array(12);
	da[0] = 31;   da[1] = 28;   da[2] = 31;   da[3] = 30;   da[4] = 31
	da[5] = 30;   da[6] = 31;   da[7] = 31;   da[8] = 30;   da[9] = 31
	da[10] = 30;   da[11] = 31;

	for (var i=0 ; i < n; i++) {
		yy = left(d, 4)
		if (isleap(yy)) da[1] = 29
		dd = d.substring(8, 10)
		mm = d.substring(5, 7)
		if (dd == da[mm-1])
			d = getMonDayTop(getNextMonth(d))
		else {
			dd++
			d = left(d, 8) + right("0"+dd, 2)
		}
	}
	return(d);
}

//----------- 檢查日期是否正確(yyyy/mm/dd) -------------------
//d				:西元日期
//------------------------------------------------------
function chkDateStr(d) 
{
	var yy,mm,dd
	da = new Array(12);
	da[0] = 31;   da[1] = 28;   da[2] = 31;   da[3] = 30;   da[4] = 31
	da[5] = 30;   da[6] = 31;   da[7] = 31;   da[8] = 30;   da[9] = 31
	da[10] = 30;   da[11] = 31;


	d = allTrim(d)
	if (d.length < 10) return(false)

	yy = left(d, 4)
	yy++; yy--
	if (isleap(yy))	da[1] = 29;
	mm = d.substring(5, 7)
	mm++; mm--
	dd = d.substring(8, 10)
	dd++; dd--
	if (isNaN(yy) || isNaN(mm) || isNaN(dd)) return(false)
	if (mm < 1 || mm > 12) return(false)
	if (dd < 1 || dd > da[mm-1]) return(false)

	return(true)
}

//----------- 計算時間差(分) -------------------
//yyyy/mm/dd
//hh:mm
//------------------------------------------------------
function calculateMinute(fdate, ftime, tdate, ttime) 
{
	nDay = calculateDays(fdate, tdate)
	nMin = nDay * 24 * 60
	fm = parseInt(left(ftime,2) * 60) + parseInt(ftime.substring(3,5))
	tm = parseInt(left(ttime,2) * 60) + parseInt(ttime.substring(3,5))
	return(parseInt(nMin)+parseInt(tm)-parseInt(fm))
}

//----------- 計算時間差(天) -------------------
//tdate - fdate   (yyyy/mm/dd)
//------------------------------------------------------
function calculateDays(fdate, tdate) 
{
	da = new Array(12);
	da[0] = 31;   da[1] = 28;   da[2] = 31;   da[3] = 30;   da[4] = 31
	da[5] = 30;   da[6] = 31;   da[7] = 31;   da[8] = 30;   da[9] = 31
	da[10] = 30;   da[11] = 31;
	var pdays = 0, fdays = 0, tdays = 0, i=0;

	if (fdate==tdate) return 0
	
	yy = left(fdate, 4);	yy++;	yy--;
	mm = parseInt(fdate.substring(5, 7));	mm++; mm--;
	dd = parseInt(fdate.substring(8, 10));	dd++; dd--;
	da[1] = isleap(yy)?29:28
	for (i = 1 ; i <= yy; i++)
		fdays += ((isleap(i))?366:365)
	for (i = 0 ; i < mm; i++)
		fdays += da[i]
	fdays += dd
	
	yy = parseInt(left(tdate, 4), 10)
	mm = parseInt(tdate.substring(5, 7), 10)
	dd = parseInt(tdate.substring(8, 10), 10)
	
	da[1] = isleap(yy)?29:28
	for (i = 1; i <= yy; i++)
		tdays += ((isleap(i))?366:365)

	for (i = 0; i < mm; i++) {
		tdays += da[i]
	}
	tdays += dd

	pdays = tdays - fdays
	return(pdays)
}

//----------- 讀取星期 -------------------
//d			:民國日期
//------------------------------------------------------
function getWeekStr(d) 
{
	var yy, mm, dd
	aMon = new Array("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec")
	//aWeek = new Array("Sundey", "Monday", "星期二", "星期三", "星期四", "星期五", "星期六")
	aWeek = new Array("Sundey", "Monday", "th", "we", "4", "5", "6")
	if (empty(d)) d = getDateStr()
	yy = left(d, 4)
	yy++; yy--; 
	mm = d.substring(5, 7)
	mm--
	dd = d.substring(8, 10)
	dd++; dd--
	var da = new Date(aMon[mm]+" "+dd+","+yy)
	var week = da.getDay()
	return(aWeek[week]);
}

function getWeek(d) 
{
var yy, mm, dd
	if (empty(d)) d = getDateStr()
	aMon = new Array("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec")
	if (empty(d)) d = getDateStr()
	yy = left(d, 4)
	yy++; yy--; 
	mm = d.substring(5, 7)
	mm--
	dd = d.substring(8, 10)
	dd++; dd--
	var da = new Date(aMon[mm]+" "+dd+","+yy)
	var week = da.getDay()
	return(week);
}

//----------- 讀取月初 --> 2001/02/01 -------------------
//d			:西元日期
//------------------------------------------------------
function getMonDayTop(d) 
{
	if (empty(d)) d = getDateStr()
	return(left(d, 8) + "01");
}

//----------- 讀取月底 --> 2001/01/31 -------------------
//d			:西元日期
//------------------------------------------------------
function getMonDayBottom(d) 
{
	var y, m

	da = new Array(12);
	da[0] = 31;   da[1] = 28;   da[2] = 31;   da[3] = 30;   da[4] = 31
	da[5] = 30;   da[6] = 31;   da[7] = 31;   da[8] = 30;   da[9] = 31
	da[10] = 30;   da[11] = 31;

	if (empty(d)) d = getDateStr()
	y = left(d, 4)
	m = d.substring(5,7);
	if (isleap(y))	da[1] = 29;
	return(left(d, 8) + da[m-1]);
}

//***  return next month --> 2001/01/31 *****
function getNextMonth(d) 
{
	da = new Array(12);
	da[0] = 31;   da[1] = 28;   da[2] = 31;   da[3] = 30;   da[4] = 31
	da[5] = 30;   da[6] = 31;   da[7] = 31;   da[8] = 30;   da[9] = 31
	da[10] = 30;   da[11] = 31;

	if (empty(d)) d = getDateStr()

	y = left(d,4);
	m = d.substring(5, 7);
	md = da[m-1]
	d = d.substring(8, 10)
	
	if (m == "12") {
		y++
		m = "01"
	} else {
		m++
	}	
	if (isleap(y))	da[1] = 29;
	if (d == md || d > da[m-1]) d = da[m-1]
	return(right("00"+y, 4) + '/' + right("0"+m, 2) + '/' + d);
}

//***  return last month --> 2001/01/31 *****
function getLastMonth(d) 
{
	da = new Array(12);
	da[0] = 31;   da[1] = 28;   da[2] = 31;   da[3] = 30;   da[4] = 31
	da[5] = 30;   da[6] = 31;   da[7] = 31;   da[8] = 30;   da[9] = 31
	da[10] = 30;   da[11] = 31;

	if (empty(d)) d = getDateStr()

	y = left(d,4);
	m = d.substring(5, 7);
	md = da[m-1]
	d = d.substring(8, 10)
	
	if (m == "01") {
		y--
		m = "12"
	} else {
		m--
	}	
	if (isleap(y))	da[1] = 29;
	if (d == md || d > da[m-1]) d = da[m-1]

	return(right("00"+y, 4) + '/' + right("0"+m, 2) + '/' + d);
}

function mod(v, s) {
	
	var m, d, k
	if (empty(s)) return(0)
	k = v / s;
	m = v - Math.floor(k) * s;
	return(m)
}

function getInt(v) {

	return(Math.floor(v))
}

function goMonth(f, dir) {
	var i
	mm = f.mm[0].selectedIndex
	yy = f.yy[0].selectedIndex

	if (dir == '1') {
		if (mm == 11) {
			mm = 0
			yy++
			f.yy[0].options[yy].selected = true
			f.yy[1].options[yy].selected = true
		} else {
			mm++
		}	
		f.mm[0].options[mm].selected = true
		f.dd[0].options[0].selected = true
		f.mm[1].options[mm].selected = true
		
	} else if (dir == '-1') {
		if (mm == 0) {
			mm = 11
			yy--
			f.yy[0].options[yy].selected = true
			f.yy[1].options[yy].selected = true
		} else {
			mm--
		}
	} else if (dir == '0') {
		var da = new Date();
		mm = da.getMonth()
		yy = da.getYear()
		for (i=0; i<f.yy[0].length; i++)
			if (f.yy[0].options[i].value == yy) break;
		yy = i
		dd = da.getDate()
		f.yy[0].options[yy].selected = true
		f.yy[1].options[yy].selected = true
	}
	f.mm[0].options[mm].selected = true
	f.mm[1].options[mm].selected = true
	
	yvalue = right("0000" + f.yy[0].options[yy].value, 4)
	mvalue = right("00" + f.mm[0].options[mm].value, 2)
	dvalue = yvalue + mvalue + "01"
	bvalue = parseInt(right(getMonDayBottom(dvalue), 2), 10)
	for (i=f.dd[1].length-1; i >= 0 ; i--)
		f.dd[1].options[i] = null
	for (i=0; i < bvalue ; i++) {
		f.dd[1].options[i] = null
		opt = new Option(i+1, i+1)
		f.dd[1].options[i] = opt
	}
	if (dir == '1' || dir == '-1') {
		f.dd[0].options[0].selected = true
		f.dd[1].options[bvalue-1].selected = true
	} else {
		f.dd[0].options[dd-1].selected = true
		f.dd[1].options[dd-1].selected = true
	}
	
	
	return(true);
}

function goDate(f, dir) {
	da = new Array(12);
	da[0] = 31;   da[1] = 28;   da[2] = 31;   da[3] = 30;   da[4] = 31
	da[5] = 30;   da[6] = 31;   da[7] = 31;   da[8] = 30;   da[9] = 31
	da[10] = 30;   da[11] = 31;

	var i
	dd = f.dd.selectedIndex
	mm = f.mm.selectedIndex
	yy = f.yy.selectedIndex
	if (isleap(yy))	da[1] = 29;

	if (dir == '1') {
		if (dd == da[mm]-1) {
			dd = 0
			if (mm == 11) {
				mm = 0
				yy++
			} else mm++
			f.yy.options[yy].selected = true
			f.mm.options[mm].selected = true
		} else {
			dd++
		}	
		f.dd.options[dd].selected = true
		
	} else if (dir == '-1') {
		if (dd == 0) {
			if (mm == 0) {
				mm = 11
				yy--
			} else mm--
			dd = da[mm]-1
			f.yy.options[yy].selected = true
			f.mm.options[mm].selected = true
		} else {
			dd--
		}
		f.dd.options[dd].selected = true
	} else if (dir == '0') {
		var da1 = new Date();
		mm = da1.getMonth()
		yy = getChinaYear(da1)
		for (i=0; i<f.yy.length; i++)
			if (f.yy.options[i].value == yy) break;
		yy = i
		f.yy.options[yy].selected = true
		
		mm = da1.getMonth()
		f.mm.options[mm].selected = true

		dd = da1.getDate()
		bvalue = da[mm]

		for (i=f.dd.length-1; i >= 0 ; i--)
			f.dd.options[i] = null
		for (i=0; i < bvalue ; i++) {
			f.dd.options[i] = null
			opt = new Option(i+1, i+1)
			f.dd.options[i] = opt
		}
		f.dd.options[dd-1].selected = true
		
	}
	
	return(true);
}

function goDate1(fvar, dir) 
{
	if (!chkDateStr(fvar.value)) {
		fvar.value = getDateStr()
		return true
	}
	if (dir == -1)
		fvar.value = getLastDays(fvar.value, 1)
	else
		fvar.value = getNextDays(fvar.value, 1)
	return true
}