﻿<!--

var DecData = new QSData()
var new_window

function QSData()
{
    var vMapFields;
}

//把字串兩邊的空白刪除，用法 form.obj.value.trim() ;
String.prototype.trim = function()
{
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

function Fun_Resize() {
	//alert(parent.TopFrame.cols);
	if (parent.TopFrame.cols == "0,*"){	
		parent.TopFrame.cols="22%,*"
		document.all.form.b1.value = "<"
	}
	else {
		parent.TopFrame.cols="0,*"
		document.all.form.b1.value = ">"
	}

}


//---------------------------------------------------------------------------------------------------------
//資料處理: ListBox比對資料,回傳SelectedIndex到畫面上顯示
//	    傳入: 欄位物件名稱
//			傳出: 對應ListBox的SelectedIndex值
function Fun_ListBox(obj,value)
{   
	var i;
	var w_index=0;
	
	for(i=0; i< obj.length; i++)
		if (value == obj[i].value) {
			w_index = i
			break;}
	return	w_index;
}

//---------------------------------------------------------------------------------------------------------
//輸入轉換: 英文小寫轉大寫 (欄位物件名稱)
//	  傳入: 欄位物件名稱
//	  傳出: 自動將物件轉成大寫英文字母
function Fun_UpperCase(obj,wIndex)
{   
	if (wIndex >= 0) 
	{  
	   if (obj[wIndex].value != null)
	   {
		obj[wIndex].value = obj[wIndex].value.toUpperCase();
	   }
	}
	else 
	{
	    if (obj.value != null)
	    {
		obj.value = obj.value.toUpperCase();
	    }
	}
}

//---------------------------------------------------------------------------------------------------------
//輸入轉換: 英文大寫轉小寫 (欄位物件名稱)
//	  傳入: 欄位物件名稱
//	  傳出: 自動將物件轉成小寫英文字母
function Fun_LowerCase(obj,wIndex)
{
	if (wIndex >= 0) 
	{  
	   if (obj[wIndex].value != null)
	   {
		obj[wIndex].value = obj[wIndex].value.toLowerCase();
	   }
	}
	else 
	{
	    if (obj.value != null)
	    {
		obj.value = obj.value.toLowerCase();
	    }
	}
}


//---------------------------------------------------------------------------------------------------------
//輸入檢核: 數字, 以文字框的title內容為錯誤提示 (欄位物件名稱)
//	  傳入: obj:  欄位物件名稱, 
//			show: 0或''-傳回訊息, 否則直接alert訊息, 
//			wChk: ''-只check是數字即可; 與0 check = >= <= < > <> 條件
//			wValue: 限制最大值
//			wValue2:限制小數位數
//	  傳出: 錯誤訊息或彈出訊息框
//---------------------------------------------------------------------------------------------------------
function Fun_CheckInt(obj,show,wChk,wValue,wMinValue,wValue2)
{
    var errmsg='';    
 
    if (isNaN(obj.value))
        errmsg  =   '. 必須數字';
    else
    {	
		if (typeof(wChk) == 'undefined' || wChk == '')
		{ 
		}
		else
		{
			if (wChk.substr(0,1) != '.' && obj.value.indexOf('.') != -1)	//第1碼若不為小數點, 則必須為整數
				errmsg	= '. 必須為整數'  ;	
		
			if (wChk.substr(0,1) == '.')
				wChk = wChk.substr(1,2)
		
			if (wChk != '')
			{
				switch (wChk){
					case '=':	if  (!(obj.value == 0))	errmsg	= '. 必須＝0' ;	break;
					case '>=':	if  (!(obj.value >= 0))	errmsg	= '. 必須≧0' ;	break;
					case '<=':	if  (!(obj.value <= 0))	errmsg	= '. 必須≦0' ;	break;
					case '!=':	if  (  obj.value == 0)	errmsg	= '. 必須≠0' ;	break;
					case '>':	if  (!(obj.value >  0))	errmsg	= '. 必須＞0' ;	break;
					case '<':	if  (!(obj.value <  0))	errmsg	= '. 必須＜0' ;	break;
				}
			}			  
		}	
		
		if (typeof(wValue) == 'undefined'){
		}
		else{
		    if (wValue > '' && parseInt(obj.value,10) > parseInt(wValue,10) )	{	//限制最大值			 
			    errmsg	= '. 必須 ＜= ' + wValue ;  	
		    }	
		}
		
		if (typeof(wMinValue) == 'undefined'){
	    }
	    else{
	        if (wMinValue != ''){
    	        if (parseInt(obj.value,10) < parseInt(wMinValue,10) ){		//限制最小值			 
    			    errmsg	= '. 必須 ＞= ' + wMinValue ;  			    
    			}
			}
	    }	
	  
	  	
	    if (typeof(wValue2) == 'undefined')
	    {
	    }
	    else
	    {
	        if (wValue2 != '' && obj.value.indexOf('.') != -1)
	        {
    	        	if(parseInt(obj.value.substr(obj.value.indexOf('.')+1).length,10) > parseInt(wValue2,10))
    	        	{
    				    errmsg	= 	errmsg	+	'. 小數位數最多 ' + wValue2 + '位' ;  			        			    
    			}
		}
	    }	
    }
   
    if (errmsg != '')
    {
		errmsg  =   obj.title   +   errmsg	+	'\n';    
		
		if (show == '' || show == '0' || typeof(show) == 'undefined') 
		{}
		else
		{	if (errmsg != "" )
				alert(errmsg+'?');
				errmsg = '';
		}
	}
		
	return errmsg;
}


//---------------------------------------------------------------------------------------------------------
//輸入檢核: 數字0-9 ,以文字框的title內容為錯誤提示 (欄位物件名稱)
//	  傳入: 欄位物件名稱
//	  傳出: 錯誤訊息框
function Fun_CheckInt1(obj)
{
    var w_int = true;
    w_int = isNaN(obj.value);
    var w_chr = (obj.value).match(/.$/) ;
    //alert(w_chr) ;
    if ((w_int == true) || (parseInt(obj,10) < 0) || w_chr == '.')
     {
       alert (obj.title);
       obj.value = '' ;
       obj.focus() ;
     }  
}
//-----------------------------------------------------------------------------------
//輸入檢核: 數字0-9及是否大於0, 以文字框的title內容為錯誤提示 (欄位物件名稱)
//	  傳入: 欄位物件名稱
//	  傳出: 錯誤訊息框並把物件的沒有值的變成0
function Fun_CheckInt2(obj)
{	var errmsg	=	'';
	if	(obj.value == '')
		obj.value	=	0;
	if	(isNaN(obj.value) == true)	
		errmsg	= obj.title + '\n';	
	if	(parseFloat(obj.value,10) < 0)	
		errmsg	= obj.title + '\n';
	return errmsg;
}

//---------------------------------------------------------------------------------------------------------
//輸入檢核: 只可輸入數字0-9,-,. (負號,小數點)
//	  傳出: 否則return .F.
function Fun_InputNum(){
	if (!(event.keyCode >= 45 && event.keyCode <= 57 && event.keyCode != 47)) event.returnValue = false;
}

//---------------------------------------------------------------------------------------------------------
//	  傳入: objnum= 金額 ,decimal=雄獅國家小數位數
//	  傳出: 四捨五入後的金額
function Fun_NumFixed(objnum,decimal){
	var tNum	=	0;
	tNum	=	Math.round( objnum	*	Math.pow(10,decimal)	 ) / Math.pow(10,decimal)
	return	tNum;
}

//---------------------------------------------------------------------------------------------------------
//存檔檢核: 資料實際長度(byte)及必須輸入否, 以物件的MaxLength檢查欄位可輸入長度,並以title內容為錯誤提示
//	  傳入: 欄位物件名稱, chkmode= 0(必須輸入並檢核長度) 1(必須輸入) 2(可為空白只檢核長度),多行資料的最大長度值  9(必須輸入& 必須輸滿位數 maxLen)
//	  傳出: 錯誤訊息字串
function Fun_CheckLens(obj,chkmode,wmaxlen)
{
	var tmplen = 0;
	var tmpmax = 0;
	var i;
	var errmsg='';
		
	if (typeof (wmaxlen) == "undefined")	
		tmpmax = obj.maxLength;
	else
		tmpmax = wmaxlen;
		
	if	(chkmode != 2 && obj.value.trim() == '')                       //chkmode=0,1必須輸入
	{	errmsg = obj.title	+	"\n";}	
	
	if	(chkmode != 1)								//chkmode=0,2檢查長度 中文=2Byte
	{	for (i=0; i<obj.value.length ; i++)		
		if	(obj.value.charCodeAt(i) <=	255)
			tmplen	=	tmplen	+	1;
		else
			tmplen	=	tmplen	+	2;
		
		if	(tmplen > tmpmax ||	(chkmode == 9 && tmplen != tmpmax))
			errmsg	=	obj.title + "目前：" + tmplen + "碼 \n";        //顯示實際輸入長度				
	}
	
	return	errmsg;
}
//---------------------------------------------------------------------------------------------------------
//檢核: 資料必須為英數字 , 主要用在key, trim後, 中間也不可有空白
//---------------------------------------------------------------------------------------------------------
function Fun_CheckCode(obj)
{
	var tmpchar ;
	var i;
	var errmsg='';
		
	
	for (i=0; i< obj.value.trim().length ; i++)		
	{
		tmpchar = obj.value.substr(i, 1);
		if	(! ( (tmpchar >= '0' && tmpchar <= '9') || (tmpchar >= 'a' && tmpchar <= 'z') || (tmpchar >= 'A' && tmpchar <= 'Z') ) )
		{	errmsg = '請輸入英數字\n';
			break;
		}
	}	
	if	(errmsg > '')
		errmsg	=	obj.title + errmsg ;  	
	
	return	errmsg; 
}

//---------------------------------------------------------------------------------------------------------
// 檢核: 日期格式為 char(6) 是否符合輸入格式 
// 傳入: obj , chkmode = 0-必key, 2-非必key
// 傳出: 錯誤訊息字串
// 範例: 
//---------------------------------------------------------------------------------------------------------
function Fun_CheckYm(obj,chkmode)
{
    var tYear, tMm;    
    var tobj="", ttitle="";
    var ErrFlag=0;	//0-合法, 9-空白, 其他不合法
    var errmsg="";
   
      
	tobj	= obj.value.trim();
	
    if (tobj == "")
    {
		if (chkmode == 2) 
			ErrFlag=0;					//空白, 非必key
		else	
			ErrFlag=9;
	}
	else		
	{
		if (isNaN(tobj))						ErrFlag=1;
		if (ErrFlag == 0 && tobj.length != 6 )	ErrFlag=2; 
	
		if (ErrFlag == 0)
		{	tYear = parseInt( tobj.substr(0,4),10 );
			tMm	  = parseInt( tobj.substr(4,2),10 );
			if (tYear < 1 || tMm < 1 || tMm > 12) 
				ErrFlag=3;		
		}
	}
		
	if (ErrFlag != 0)				
	{	
		if (obj.title.trim() == "")	
			errmsg = "請輸入年月 yyyymm\n";
		else	
			errmsg = obj.title.trim() + "\n";	
	}		
	return errmsg;
}
//---------------------------------------------------------------------------------------------------------
// 檢核: 日期格式為 char(8) 是否符合輸入格式 
// 傳入: obj 
//		 可省略/0/2- 省略:可不輸入, 但Err時立即alert出來 0:必須輸入回傳訊息, 2:可不輸入回傳訊息
//       array物件的index- 可省略
// 傳出: 錯誤訊息字串
// 範例: 一般 obj 物件後加 onblur="Fun_CheckDates(this)"
// 　　  檢核fun. 則 errmsg=errmsg + Fun_CheckDates(form.sVi50_date,0); 0必須輸入 2-可不輸入
//---------------------------------------------------------------------------------------------------------

function Fun_CheckDates(obj,show,wIndex)
{
    var tYear, tMm, tDd;    
    var tobj="", ttitle="";
    var tFlag=0;	//1 潤年
    var ErrFlag=0;	//非0 則不符
    var errmsg="";    
    var tSess_Year;
   
   tSess_Year =(new Date()).getFullYear();
    
    if (wIndex >= 0)
	{	if (obj[wIndex].value != null) 
		{
			obj[wIndex].value = obj[wIndex].value.trim();
			if (obj[wIndex].value.length ==4) obj[wIndex].value = tSess_Year + obj[wIndex].value ;
			tobj = obj[wIndex].value ;			
			ttitle = "第 " + (parseInt(wIndex,10) + 1)  + " 行:" + obj[wIndex].title;
		}
	}	
	else   
	{	obj.value = obj.value.trim();
		if (obj.value.length ==4) obj.value = tSess_Year + obj.value ;
		tobj = obj.value;
		ttitle = obj.title;	
	}
	
    if (tobj == "") ErrFlag=9;		//沒輸入不check
    
    if (isNaN(tobj))						ErrFlag=1;
	if (ErrFlag == 0 && tobj.length != 8 )	ErrFlag=2; 
	if (ErrFlag == 0)
	{	tYear = parseInt( tobj.substr(0,4),10 );
		tMm	  = parseInt( tobj.substr(4,2),10 );
		tDd   = parseInt( tobj.substr(6,2),10 );

		if (tYear < 1 || tMm < 1 || tMm > 12 || tDd < 1 || tDd > 31) 
		{	ErrFlag=3;}
		else
		{	
			if (tYear % 4 == 0)	//潤年
			{
				tFlag = 1;
				if (tYear % 100 == 0 )
					if (tYear % 400 != 0) tFlag = 0;
			}
			switch (tMm)
			{
				case 2: if ( (tFlag == 1 && tDd > 29) || (tFlag == 0 && tDd > 28) ) ErrFlag = 4; break;
				case 4:
				case 6:
				case 9:
				case 11:if (tDd > 30) ErrFlag = 5; break;
			}		
		}	
	}
		
	if (ErrFlag == 9)				//沒輸入 
	{	if (show == 0)
		{	
			if (ttitle=="") 
			{	errmsg = "請輸入日期\n";}
			else 
			{	errmsg = ttitle + "\n";}
		}
	}
	else
		if (ErrFlag != 0)			//有錯 且 非不檢核
		{	if (ttitle=="") 
			{	errmsg = "日期格式:YYYYMMDD -年4碼西曆年\n";}
			else 
			{	errmsg = ttitle + "\n";}
		}

	if (typeof(show)  != 'undefined') 
	{	return errmsg;}
	else
	{	if (errmsg != "" )
			alert(errmsg);}
		
}

//---------------------------------------------------------------------------------------------------------
// 檢核: 時間格式為 char(5) 是否符合輸入格式 
// 傳入: obj [,array物件的index] 
// 傳出: 輸入HHMM 回傳 HH:MM

function Fun_CheckCTime(obj,wIndex)
{	
    if (wIndex >= 0)
    {
		if (obj[wIndex].value.length == 4) obj[wIndex].value = obj[wIndex].value.substr(0,2) + ':' + obj[wIndex].value.substr(2,2) ;
	}	
	else
	{
		if (obj.value.length == 4) obj.value = obj.value.substr(0,2) + ':' + obj.value.substr(2,2) ;
	}		
}

//---------------------------------------------------------------------------------------------------------
// 身份証檢查副程式
function Fun_idCheck(id)
{   
	var fResult=false;
	var value = 0;
	var sId=id;
   
	if(sId.length==10)
	{
		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
		
		if(value > 0)
		{
			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 = true ;
		}    
	}  
    return fResult ;
}

function FunCalendar(objname,tFdate,tTop,tLeft)
{
	if	(tTop	==	'')
	{
		tTop	=	(screen.height - 220) / 2;
	}
	if	(tLeft	==	'')
	{
		tLeft	=	(screen.width - 245) / 2;
	}
	openwin("calendar.aspx?sObj=" + objname + "&sFdate=" + tFdate,"calendar","width=245,height=220,status=yes,top=" + tTop + ",left=" + tLeft);
}


//---------------------------------------------------------------------------------------------------------
// 郵件帳號檢查副程式
function FunEmailCheck(vEmail)
{
	var fResult	=	false;
	var sEmail	=	vEmail;

	if(sEmail.length > 5)
	{
		if (sEmail.indexOf("!")>=0)  { return fResult; }
		if (sEmail.indexOf("|")>=0)  { return fResult; }
		if (sEmail.indexOf(":")>=0)  { return fResult; }
		if (sEmail.indexOf(",")>=0)  { return fResult; }
		if (sEmail.indexOf(";")>=0)  { return fResult; }
		if (sEmail.indexOf("(")>=0)  { return fResult; }
		if (sEmail.indexOf(")")>=0)  { return fResult; }
		if (sEmail.indexOf("<")>=0)  { return fResult; }
		if (sEmail.indexOf(">")>=0)  { return fResult; }
		if (sEmail.indexOf("[")>=0)  { return fResult; }
		if (sEmail.indexOf("]")>=0)  { return fResult; }
		if (sEmail.indexOf("@")<1)   { return fResult; }
		if (sEmail.indexOf(".")==-1) { return fResult; }
		if (sEmail.substr(sEmail.length-1 , 1)=="@") { return fResult; }
		if (sEmail.substr(sEmail.length-1 , 1)==".") { return fResult; }
		if (sEmail.substr(sEmail.indexOf("@")+1,sEmail.length-sEmail.indexOf("@")-1).indexOf("@")>=0) { return fResult; }
		if (sEmail.substr(sEmail.indexOf("@")+1,sEmail.length-sEmail.indexOf("@")-1).indexOf(".")==-1) { return fResult; }
		fResult = true ;
	}
    return fResult ;
}
//==========開啟網頁=================
function openwin(url,winName,features) {

	if (typeof (features) == "undefined") 
		var hintW=window.open(url,winName);
	else	
		var hintW = window.open(url,winName,features);

	if (!hintW.opener) hintW.opener = self;
    if (hintW.focus != null) hintW.focus();	
}

//---------------------------------------------------------------------------------
// 執行開窗HELP程式
// 傳入: vMapFields, 於呼叫程式內設定回傳物件名稱
//       urlname, 執行的(HELP)ASP程式名稱, 不含附加檔名 (.asp)
//		 wHeight, 0:標準高, 否則自訂
//		 wWidth , 0:標準寬, -1:小於標準寬 1:大於標準寬, 否則自訂
//		 wTop	, 0:置中, 否則自訂垂直起始位置
//		 wLeft	, 0:置中, 否則自訂水平左起位置
//				  一般傳入0,0,0,0 , 未定則全螢幕
//				  螢幕: 768 * 1024	

function HISearch(vMapFields, urlname,wHeight,wWidth,wTop,wLeft) 
{
   
	//var ret = IniDecData();
	
	//DecData.vMapFields = vMapFields;
	
	url =  urlname ;
	
	//-- 計算開窗的大小及位置
	if (wHeight <= 0)											// 標準高
		{wHeight = 550;}
	else 
		if (wHeight > screen.heigh)
			{wHeight = screen.heigh;}
		
	if (wWidth == 0)											// 標準寬
		{wWidth = 650}
	else		
		if (wWidth <= -1)										// 標準寬-1
			{wWidth = 450}
		else		
			if (wWidth == 1)									// 標準寬+1
				{wWidth = 850}
			else		
				if (wWidth > screen.width)
					{wWidth = screen.width}
		
	if (wTop<=0 || wTop =='')									// 置中
		{ wTop = (screen.height - wHeight) / 2;}		  
	else 
		if (screen.height - wHeight < wTop)						// 偏下方, 否則自訂值
		{ wTop = screen.height - wHeight}		
	
	if (wLeft<=0 || wLeft=='')									// 置中
		{ wLeft= (screen.width  - wWidth ) / 2; }
	else 
		if (screen.width - wWidth < wLeft)						// 偏右方, 否則自訂值
		{ wWidth = screen.width - wWidth}		

	// 開窗呼叫help程式    	
	new_window = window.open(url,"qs","height="+wHeight+",width="+wWidth+",left="+wLeft+",top="+wTop+",status=yes,toolbar=no,menubar=no,resizable=yes");	
 
}

function IniDecData()
{
    DecData.vMapFields = "";
    return 1;
}

//-->