var errUnconsistentPassword	    = 	"密碼不一致!請再確認!!";
var errNoContactTel				= 	"請至少填寫一聯絡電話，以方便日後連絡!!";
var errIdentity_ID				= 	"身份證字號不正確!!";
	var errEmail					=	"E-mail 信箱格式不正確!!";
	var errIdentyID					=	"身分證字號不正確!!";
	var errInvoiceNo				=	"統一編號不正確!!";
	var errIdentyIDOrInvoiceNO		=	"「身分證字號」或「統一編號」不正確!!";
var errDate						=   "日期不正確!!";
var errNotNull					= "不可為空白，請重新輸入!!";
var wngNonMatchedData			=	"查無符合的資料!!";
var errNoQueryItem				= "請至少輸入一查詢條件!!";
var errCustNo					= "你所輸入的「客戶編號」不存在!!";

var msgLicense					=	"請尊重智慧財產權!!";
var msgUpload_OK				=	"恭禧您!  檔案上傳成功!!";
var msgExcute_OK				=	"執行成功!!";
var msgAdd_OK					=	"新增資料成功!!";
var msgDelete_OK				=	"記錄刪除成功!!";
var msgModify_OK				=	"記錄修改成功!!";
var msgAddMember_OK				=	"恭禧您!  會員加入成功!!";
var msgRefresh					= 	"是否重新更新資料?";
var msgDeleteConfirm			=	"你確定要刪除此筆資料嗎?";
var msgLastPage					=	"已到最後一頁!!";
var msgFirstPage				=	"已是第一頁!!";
var msgNoPic					=	"尚未設定圖片!!";

/*********************************************
   函式名稱：trim
   輸入參數：strRawString	(原始字串)
   			 leftTrim 		(是否去除左邊的多餘的空白，預設為true)
   			 rightTrim		(是否去除右邊的多餘的空白，預設為true)
   函式描述：去除多餘的空白                 
   傳回值：  傳回結果字串 
   函式控管：Morgan　 2003/04/01　Version 1.0
*********************************************/
function trim(strRawString, leftTrim, rightTrim) {

    var strWhiteSpace = "\n\r\t ";

    if ( strRawString == null || strRawString.length == 0 ) {
        return "";
    }

    if ( leftTrim == null ) {
        leftTrim = true;
    }
    if ( rightTrim == null ) {
        rightTrim = true;
    }

    var left=0;
    var right=0;
    var i=0;
    var k=0;

    // modified to properly handle strings that are all strWhiteSpace
    if ( leftTrim == true ) {
        while ( (i<strRawString.length) && (strWhiteSpace.indexOf(strRawString.charAt(i++))!=-1) ) {
            left++;
        }
    }
    if ( rightTrim == true ) {
        k=strRawString.length-1;
        while( (k>=left) && (strWhiteSpace.indexOf(strRawString.charAt(k--))!=-1) ) {
            right++;
        }
    }
   
    return strRawString.substring(left, strRawString.length - right);
}

function checkLengthOfField(element) {

	if ( element.value.length < parseInt(element.minlength) ) {
		alert("「" + element.m_caption + "」之長度不可小於 " + element.minlength + "，請重新輸入!!");
		element.focus();		
		return element;
	} else 
		return null;
}

function checkRequiredFields(array) {

	var objElement = null;
	
	if ( array == null )
		return null;
	
	for ( var i = 0; i < array.length; i++ ) {
		objElement = array[i];
		//alert(objElement.outerHTML);
		switch(objElement.type)	{
			case "text":
			case "Text":
			case "password":
			case "textarea":
			case "file":
				if ( trim(objElement.value) == "" ) {
					alert("「" + objElement.m_caption + "」" + errNotNull);
					objElement.focus();
					return objElement;
				}
				break;
			case "combobox":
			case "Combobox":
			case "select-one":
		            if ( objElement.selectedIndex < 0 ) {
						alert("「" + objElement.m_caption + "」" + errNotNull);
						objElement.focus();
						return objElement;
					}
					var objOption = objElement.options[objElement.selectedIndex];
					if ( trim(objOption.value) == "") {
						alert("「" + objElement.m_caption + "」" + errNotNull);
						objElement.focus();
						return objElement;
					}
				      break;
			default:
				// Need to modify
				alert("Unsupported type:" + objElement.type);
				return objElement;
		}
	
	}
	
	return null;

}

function checkPositiveFields(array) {

	var objElement = null;
	
	if ( array == null )
		return null;
	
	for ( var i = 0; i < array.length; i++ ) {
		objElement = array[i];
		if ( objElement.value != "" && isPositiveInt(objElement.value) == false ) {
			alert("「" + objElement.m_caption + "」之數值格式不正確，請重新輸入!!");
			objElement.focus();
			return objElement;
		}
		
	}

	return null;
		
}


/* 判斷是否為正整數，例如: +25, 77 皆符合條件
 * @param   value       欲檢查的值
 * @return  boolean
 */
function isPositiveInt(value) {
    var pattern = /^(\+)?\d+$/;
    return pattern.test(value);
}


/* 檢查指定email格式是否正確
 * @param   email       欲檢查的email
 * @return  boolean
 */
function checkEmail(email) {
	
	if ( email.value == null || email.value == "" )
		return true;
		
    var filter=/^.+@.+\..{2,3}$/;

    if (filter.test(email.value)) {
        return true;
    }
    else{
    	alert(errEmail);
        return false;
    }
}


/* 檢查輸入的身份證字號是否正確
 * @param   IDString    欲檢查的身份證字號
 * @return  boolean
 */
function checkId(IDString) {
    var ErrString = "" ;
    var ID1 = IDString.toUpperCase();
    if (IDString.length != 0 ) {IDString =IDString.toUpperCase()}
    if (IDString.length != 10){ErrString = ErrString + "身分證字號字數不對。" + unescape('%0D')}
    if (ID1.length != 10) return false; //alert("身分證字號字數不對 !");
    var IDdigit = new Array(10);
    for (var i=0; i<10; i++) { IDdigit[i] = ID1.charAt(i); }
    var CharEng = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    IDdigit[0]   = CharEng.indexOf(IDdigit[0]);
    if (IDdigit[0] == -1)  return false; //alert("身分證字號第一位為錯誤英文字母 !");
    if (IDdigit[1] !=1 && IDdigit[1] !=2) return false; //alert("身分證字號無法辨識性別 !");

    var Array1  = new Array(26);
    Array1[0]   = 1 ; Array1[1]  = 10; Array1[2]  = 19;
    Array1[3]   = 28; Array1[4]  = 37; Array1[5]  = 46;
    Array1[6]   = 55; Array1[7]  = 64; Array1[8]  = 39;
    Array1[9]   = 73; Array1[10] = 82; Array1[11] = 2 ;
    Array1[12]  = 11; Array1[13] = 20; Array1[14] = 48;
    Array1[15]  = 29; Array1[16] = 38; Array1[17] = 47;
    Array1[18]  = 56; Array1[19] = 65; Array1[20] = 74;
    Array1[21]  = 83; Array1[22] = 21; Array1[23] = 3 ;
    Array1[24]  = 12; Array1[25] = 30;
    var result = Array1[IDdigit[0]];
    for (var i=1; i<10; i++) {
        var Number = "0123456789";
        IDdigit[i] = Number.indexOf(IDdigit[i]);
        if (IDdigit[i] == -1) {
            //alert("身分證字號錯誤 !");
            return false;
        } else {
            result += IDdigit[i] * (9-i);
        }
    }
    result += 1 * IDdigit[9];
    //alert("result=="+result);
    if (result % 10 != 0) {
        //alert("身分證字號錯誤 !");
        return false; }
    else {
        return true;
    }
}


/*********************************************
   函式名稱：checkInvoiceNo  	
   輸入參數：invoice_no			公司統一編號
   函式描述：檢查營利事業單位之統一編號              
   傳回值：  true --格式正確; false -- 錯誤。
   函式控管：Morgan　 2003/12/30　Version 1.0
   函式控管：Morgan　 2003/12/30　Version 1.0
*********************************************/
   
function checkInvoiceNo(invoice_no) {

	if ( invoice_no == null )
		return false;
	else if ( invoice_no.length == 10 && invoice_no.substring(0,2) == "00" )
		invoice_no = invoice_no.substring(2,10);
	else if ( invoice_no.length  != 8 )
		return false;
	
	for ( var i = 0; i < 8; i++ )
		if ( ! ( '0' <= invoice_no.charAt(i) && invoice_no.charAt(i) <= '9') )
			return false;
	
	var c1 = parseInt(invoice_no.substring(0,1));
	var c2 = parseInt(invoice_no.substring(2,3));
	var c3 = parseInt(invoice_no.substring(4,5));
	var c4 = parseInt(invoice_no.substring(7,8));
	var a1b1 = parseInt(invoice_no.substring(1,2))*2;
	var a2b2 = parseInt(invoice_no.substring(3,4))*2;
	var a3b3 = parseInt(invoice_no.substring(5,6))*2;
	var a4b4 = parseInt(invoice_no.substring(6,7))*4;
	
	
	if ( a1b1 >= 10 ) {
		a1 = parseInt( a1b1 / 10 );
		b1 = a1b1 % 10;
	} else {
		a1 = 0;
		b1 =a1b1;
	}
	
	if ( a2b2 >= 10 ) {
		a2 = parseInt( a2b2 / 10 );
		b2 = a2b2 % 10;	
	} else {
		a2=0;
		b2=a2b2;
	}

	if ( a3b3 >= 10 ) {
		a3 = parseInt( a3b3 / 10 );
		b3 = a3b3 % 10;	
	} else {
		a3=0;
		b3=a3b3;
	}
	
	if ( a4b4 >= 10 ) {
		a4 = parseInt( a4b4 / 10 );
		b4 = a4b4 % 10;
	} else {
		a4 = 0;
		b4 =a4b4;
	}
	
	var a5b5 =a4+b4;
	
	if ( a5b5 >= 10 ) {
		a5 = parseInt( a5b5 / 10 );
	} else {
		a5 = a5b5;
	}

    Y1=a1+b1+c1+a2+b2+c2+a3+b3+c3+a4+b4+c4;
    Y2=a1+b1+c1+a2+b2+c2+a3+b3+c3+a5+c4;
    
    if ( Y1%10 == 0 || Y2%10 == 0 ) 
    	return true;
    else
    	return false;

}

function checkForeignID(foreignId) {
	
	if ( foreignId == null || foreignId.length  != 10 )
		return false;	
	if ( foreignId.substring(0,2).toUpperCase() != "PP" )
		return false;
		
	var theDate = foreignId.substring(2);
	theDate = theDate.substring(0,4) + "/" + theDate.substring(4,6) + "/" + theDate.substring(6);
	
	return checkDate(theDate,"/");
		
}

function checkDateFormat(array) {

	var objElement = null;
	
	if ( array == null )
		return null;

	for ( var i = 0; i < array.length; i++ ) {
		objElement = array[i];
		if ( objElement.value == "" )
			continue;
		if ( checkDate(objElement.value, "/") == false ) {
			alert("「" + objElement.m_caption + "」" + errDate);
			objElement.focus();
			return objElement;
		}	
	}
	
	return null;
}


/* 檢查日期格式是否正確
 * @param   DateString  	欲檢查的日期字串
 * @param   chrFmt    		分隔子串(如: /)
 * @return  boolean
 */
function checkDate(DateString,chrFmt)
{   
  if (DateString.length !=10) return false;
  var y,m,d;
  var idx=DateString.indexOf(chrFmt)
  y=DateString.substring(0,idx)  //年
  DateString=DateString.substring(idx+1,DateString.length)
  var idx=DateString.indexOf(chrFmt)
  m=DateString.substring(0,idx); //月
  d=DateString.substring(idx+1,DateString.length);  //日 
  if (m.substring(0,1)=='0') m=m.substring(1,m.length);
  if (d.substring(0,1)=='0') d=d.substring(1,d.length);
 /*alert("y="+y);
 alert("m="+m);
 alert("d="+d);*/
 var CharNum = "0123456789";
  //判別是否皆為數字
  for(var i=0;i<y.length;i++){
      var str=y.substring(i,i+1);
      if (CharNum.indexOf(str)<0) return false;
  }
   for(var i=0;i<m.length;i++){
      var str=m.substring(i,i+1);
      if (CharNum.indexOf(str)<0) return false;
  }
   for(var i=0;i<d.length;i++){
      var str=d.substring(i,i+1);
      if (CharNum.indexOf(str)<0) return false;
  }
 

 
 
  y=parseInt(y);
  m=parseInt(m);
  d=parseInt(d);
 
  if (isNaN(y)) return false;
  if (isNaN(m)) return false;
  if (isNaN(d)) return false;
 
//  if (y < 100 && y > 70) y += 1900;
//  if (y < 70) y += 2000;
//  if (y > 2070 || y < 1970) return false;
  if ( y > 3000 || y < 1900) return false;

  if (m < 1 || m > 12) return false;
 
  if (d < 1 || d > 31) return false;
 
  var isleap = ((y % 100) && !(y % 4)) || !(y % 400); 
  switch (m)
  {    
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      return true;
    case 4:
    case 6:
    case 9:
    case 11:
      if (d > 30) return false;
      else return true;
    case 2:     
      if (isleap) {
        if (d > 29) return false;
        else return true;
      }
      if (d > 28) return false;
      return true;
    default:         
      return false;
  }
}


/* 檢查日期格式是否正確
 * @param   DateString  	欲檢查的日期字串
 * @return  boolean
 */
function checkSimpleDate(objElement, chrFmt)
{   
// for misi //
  //if (DateString.length !=10) return false;
  var DateString = objElement.value;
  
  if ( chrFmt == null )
  	chrFmt = "/";
  var changeFlag = false;
  if ( DateString == null || DateString.length == 0 )
  	return true;
  else if ( DateString.length == 8 ) {	
  	DateString = DateString.substring(0,4) + chrFmt + DateString.substring(4,6) + chrFmt + DateString.substring(6);
  	changeFlag = true;
  } else if (DateString.length !=10 ) {
  	alert("「" + objElement.m_caption + "」" + errDate);
  	return false;
  }
  var newDateString = DateString;
//
  var y,m,d;
  var idx=DateString.indexOf(chrFmt)
  y=DateString.substring(0,idx)  //年
  DateString=DateString.substring(idx+1,DateString.length)
  var idx=DateString.indexOf(chrFmt)
  m=DateString.substring(0,idx); //月
  d=DateString.substring(idx+1,DateString.length);  //日 
  if (m.substring(0,1)=='0') m=m.substring(1,m.length);
  if (d.substring(0,1)=='0') d=d.substring(1,d.length);
 /*alert("y="+y);
 alert("m="+m);
 alert("d="+d);*/
 var CharNum = "0123456789";
  //判別是否皆為數字
  for(var i=0;i<y.length;i++){
      var str=y.substring(i,i+1);
      if (CharNum.indexOf(str)<0) {
      	alert("「" + objElement.m_caption + "」" + errDate);
      	return false;
      }
  }
   for(var i=0;i<m.length;i++){
      var str=m.substring(i,i+1);
      if (CharNum.indexOf(str)<0) {
      	alert("「" + objElement.m_caption + "」" + errDate);
      	return false;
      }
  }
   for(var i=0;i<d.length;i++){
      var str=d.substring(i,i+1);
      if (CharNum.indexOf(str)<0) {
      	alert("「" + objElement.m_caption + "」" + errDate);
      	return false;
      }
  }
 

 
 
  y=parseInt(y);
  m=parseInt(m);
  d=parseInt(d);
 
  if (isNaN(y)) {
  	alert("「" + objElement.m_caption + "」" + errDate);
  	return false;
  }
  if (isNaN(m)) {
  	alert("「" + objElement.m_caption + "」" + errDate);
  	return false;
  }
  if (isNaN(d)) {
  	alert("「" + objElement.m_caption + "」" + errDate);
  	return false;
  }
 
//  if (y < 100 && y > 70) y += 1900;
//  if (y < 70) y += 2000;
//  if (y > 2070 || y < 1970) return false;
  if ( y > 3000 || y < 1900) {
  	alert("「" + objElement.m_caption + "」" + errDate);
  	return false;
  }

  if (m < 1 || m > 12) {
  	alert("「" + objElement.m_caption + "」" + errDate);
  	return false;
  }
 
  if (d < 1 || d > 31) {alert("「" + objElement.m_caption + "」" + errDate);
  	alert("「" + objElement.m_caption + "」" + errDate);
  	return false;
  }
 
  var isleap = ((y % 100) && !(y % 4)) || !(y % 400); 
  switch (m)
  {    
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      objElement.value = newDateString;
      return true;
    case 4:
    case 6:
    case 9:
    case 11:
      if (d > 30) {
      	alert("「" + objElement.m_caption + "」" + errDate);
      	return false;
      } else {
      	objElement.value = newDateString;
      	return true;
      }
    case 2:     
      if (isleap) {
        if (d > 29) {
        	alert("「" + objElement.m_caption + "」" + errDate);
        	return false;
        } else {
        	objElement.value = newDateString;
        	return true;
        }
      }
      if (d > 28) {
      	alert("「" + objElement.m_caption + "」" + errDate);
      	return false;
      }
      
      objElement.value = newDateString;
      return true;
    default:   
      alert("「" + objElement.m_caption + "」" + errDate);      
      return false;
  }
}


function showCalendarDialog(txtObj){

  var ret = window.showModalDialog("../../js/cal/calendar_CHT.htm", "", "dialogTop: 60px; dialogLeft: 55px; center: Yes; help: No; resizable: No; status: No;");
  txtObj.value = ret;

}

function checkKeyUp() { 

      if ( event.keyCode == 13 ) {
      		if ( event.srcElement.onchange != null )
      			if ( event.srcElement.onchange() == false )
					return false;
            fnQuery();
      }
      
      return true;
}

function checkAllID(objElement) {
	
	if ( objElement.value == null || objElement.value.length == 0 )
		return true;
	else if ( checkId(objElement.value) || checkInvoiceNo(objElement.value) || checkForeignID(objElement.value) )
		return true;
	else {
		alert(errIdentyIDOrInvoiceNO);
		return false;
	}
}


function checkChinese(obj) {
	
	var str_1 = obj.value;
	if ( trim(str_1) == "" ) 
		return true;
	
	for ( var i =0; i < str_1.length; i++ )
		if (str_1.charCodeAt(i) < 256 ) {
			alert("「" + obj.m_caption + "」必須為中文字");
			return false;
		}
	
	return true;				
	
}

/*
	unicode: 將斷行轉換為Unicode
	leave  : 保留斷行
	clean  : 清除斷行
	htmlbr : 將斷行轉換為<BR>
	js     : 將斷行轉換為 \n
*/	
function decodecore(rawString,breaktype) {

	var decodedary = new Array();
	var aryno = 0;
	var notfinish = (true);
	var lastout = 0;
	var lastand = 0;
	var lastsemicolon = 0;
	
	if ( breaktype == null || breaktype == "" )
		breaktype = "clean";
	
	while (notfinish) {
		lastand = rawString.indexOf("&#",lastsemicolon);

		if (lastand == -1) {
			decodedary[aryno] = rawString.substring(lastout,rawString.length+1);
			aryno++;
			notfinish = (false);
		} else {
			lastsemicolon = rawString.indexOf(";",lastand);
			decodedary[aryno] = rawString.substring(lastout,lastand);
			var notbreak = (true);
			if ((decodedary[aryno].indexOf(String.fromCharCode(92)+"n") != -1)&&(breaktype == "js")) {
				while (notbreak) {
					decodedary[aryno] = decodedary[aryno].substring(0,decodedary[aryno].indexOf(String.fromCharCode(92)+"n")-1)+String.fromCharCode(13)+String.fromCharCode(10);+decodedary[aryno].substring(decodedary[aryno].indexOf(String.fromCharCode(92)+"n")+1,decodedary[aryno].length);
					if (decodedary[aryno].indexOf(String.fromCharCode(92)+"n") == -1) notbreak = (false);
				}
			}
			if ((decodedary[aryno].indexOf("<BR>") != -1)&&(breaktype == "htmlbr")) {
				while (notbreak) {
					decodedary[aryno] = decodedary[aryno].substring(0,decodedary[aryno].indexOf("<BR>")-1)+String.fromCharCode(13)+String.fromCharCode(10)+decodedary[aryno].substring(decodedary[aryno].indexOf("<BR>")+4,decodedary[aryno].length);
					if (decodedary[aryno].indexOf("<BR>") == -1) notbreak = (false);
				}
			}
			if ((decodedary[aryno].indexOf("\n") != -1)&&(breaktype == "clean")) {
				while (notbreak) {
					decodedary[aryno] = decodedary[aryno].substring(0,decodedary[aryno].indexOf("\n")-1)+decodedary[aryno].substring(decodedary[aryno].indexOf("\n")+3,decodedary[aryno].length);
					if (decodedary[aryno].indexOf("\n") == -1) notbreak = (false);
				}
			}
			aryno++;
			var base;
			if ((rawString.substr(lastand+2,1) == "X")||(rawString.substr(lastand+2,1) == "x"))
				base = 16;
			else base = 10;
			var charcode = parseInt(((base == 16)?"0":"")+rawString.substring(lastand+2,lastsemicolon));
			if (charcode == 13) decodedary[aryno] = "";
			else decodedary[aryno] = String.fromCharCode(charcode);
			aryno++;
			lastout = lastsemicolon+1;
		}
	}

	//decode end
	return decodedary.join("");

}


function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

