﻿
/**
 *  Get the element by id.  if not found, try to get using name.
 *
 **/
function getElementByIdentity(identity) {
	eval("var elem = document.getElementById('" + identity + "');");
	if (!elem) {
		eval("elem = document.getElementsByName('" + identity + "')[0];");
	}
	return elem;
}



/**
 *  Get the element by id in specified window.  if not found, try to get using name.
 *
 **/
function getWndElementByIdentity(identity, wnd) {
	eval("var elem = wnd.document.getElementById('" + identity + "');");
	if (!elem) {
		eval("elem = wnd.document.getElementsByName('" + identity + "')[0];");
	}
	return elem;
}



/**
 *  Value Copy
 *
 **/
function valueCopy(identityFrom, identityTo) {
	var from = getElementByIdentity(identityFrom);
	var to = getElementByIdentity(identityTo);
	if (!from || !to) {
		return;
	}
	to.value = from.value;
}



/**
 *  使用validatorTag的時候,每個要驗證的欄位必定會有一個error output的<label>
 *  當有多個欄位要作為一次驗證,就像phoneCountryCode,phoneAreaCode,phone,tbCompany.phoneExt只想要輸出一
 *  條紀錄的時候,就需要做修正.
 *  這個函數可以達成修正.只保留一個msg.
 *  第一個參數是msg輸出的目標的id
 *  接下來的參數數量是不限的,只要把其他的欄位的id依次傳入即可
 * 
 *  @param  arg0 --> the id of the element that to display the msg.
 *  @param  arg1... argN  -->  the id of other elements 
 */
function mendMsg() {
	var dest = getElementByIdentity(arguments[0]);
	var msg = "";
	for (var i = 1; i < arguments.length; ++i) {
		var each = getElementByIdentity(arguments[i]);
		if (each.innerHTML != "") {
			msg = each.innerHTML;
			break;
		}
	}
	for (var i = 1; i < arguments.length; ++i) {
		var each = getElementByIdentity(arguments[i]);
		each.innerHTML = "";
	}
	dest.innerHTML = msg;
}



function valueRequired(property, cation) {
	var item = getElementByIdentity(property);
	var output = getElementByIdentity(property + ".msg");
	if (item.value == "") {
		output.innerHTML = "\u300e" + cation + "\u300f\u6b04\u4f4d\u4e0d\u53ef\u70ba\u7a7a\u767d\uff0c\u4e00\u5b9a\u8981\u8f38\u5165\u8cc7\u6599\uff01\uff01";
		return false;
	} else {
		output.innerHTML = "";
		return true;
	}
}



function checkLength(property, caption, lengthTo, lengthFrom)
{
	if (!lengthFrom)
		lenthFrom=0;
	
	var item = getElementByIdentity(property);
	var output = getElementByIdentity(property + ".msg");
	
	if (item.value.length > lengthTo) 
	{
		output.innerHTML = "『" + caption+ "』欄位最多只可輸入" + lengthTo +"字，請重新輸入！！";
		return false;
	}
	else if (item.value.length < lengthFrom)
	{
		output.innerHTML = "『" + caption + "』欄位最少要輸入 "+ lengthFrom + "字，請重新輸入！！";
		return false;
	}
	else 
	{
		output.innerHTML = "";
		return true;
	}
}


 

function isNumber(property, caption)
{
	var item = getElementByIdentity(property);
	var output = getElementByIdentity(property + ".msg");
	var value = item.value;
	
	for (var i=0; i<value.length; ++i)
	{
		if (value[i] <'0' || value[i] > '9')
		{
			output.innerHTML="『" + caption + "』欄位應為數字，請重新輸入！！";
			return false;
		}
	}
	
	output.innerHTML="";
	return true;
}





/**
 * 選擇所有的Option
 * 根據參數還可以在用戶什麼都沒有選的時候增加一個空的option來標示用戶什麼都沒有選的場合(當form-bean是session時)
 */  
function selectAllOptions( select_id, addOne)
{
	var sel = getElementByIdentity(select_id);
	
	
	if (sel.options.length == 0 && (addOne == true || addOne == undefined))
	{
		var option = document.createElement("OPTION");
		option.innserText="";
		option.value="-1";
		option.selected=true;

		try
	    {
	    	sel.add(option,null); // standards compliant
	    }
	  	catch(ex)
	    {
	    	sel.add(option); // IE only
	    }
	}

	for (var i=0; i<sel.options.length; i++)
	{
		sel.options[i].selected=true;
	}
}

//2008.02.14 modified by lewiswang TTUAT-748
function selectAllOptions2( select_id, addOne)
{
	var sel = getElementByIdentity(select_id);

	for (var i=0; i<sel.options.length; i++)
	{
		sel.options[i].selected=false;
	}
}


/**
 * 刪除當前選中的所有的Option
 */ 
function deleteCurrentSelectItem( select_id )
{
	var select = getElementByIdentity(select_id);
	for (var i=select.options.length-1; i>=0; --i)
	{
		if (select.options[i].selected == true)
			select.remove(i);
	}
}



/** 
 * 確認是否是身分證字號
 *
 **/
function checkSID2(property, caption) {
	var strTmp = getElementByIdentity(property).value;
	blnPass = (strTmp.match(/^[a-hj-np-zA-HJ-NP-Z][12]\d{8}$/));
	if (blnPass) {
		var acc;
		var locationNumber = new Array(1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 2, 11, 20, 29, 38, 47, 56, 65, 74, 83, 3, 12, 21, 30);
		var locationChar = new Array("A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "X", "Y", "W", "Z");
		for (var i = 0; i < 26; i++) {
			if (strTmp.charAt(0).toUpperCase() == locationChar[i]) {
				acc = locationNumber[i];
				break;
			}
		}
	}
	var d1 = strTmp.charAt(1);
	var d2 = strTmp.charAt(2);
	var d3 = strTmp.charAt(3);
	var d4 = strTmp.charAt(4);
	var d5 = strTmp.charAt(5);
	var d6 = strTmp.charAt(6);
	var d7 = strTmp.charAt(7);
	var d8 = strTmp.charAt(8);
	var d9 = strTmp.charAt(9);
	var checksum = acc + 8 * d1 + 7 * d2 + 6 * d3 + 5 * d4 + 4 * d5 + 3 * d6 + 2 * d7 + 1 * d8 + 1 * d9;
	var check1 = parseInt(checksum / 10);
	var check2 = checksum / 10;
	var check3 = (check2 - check1) * 10;
	if (checksum == check1 * 10) {
		blnPass = true;
	} else {
		if (d9 == (10 - check3)) {
			blnPass = true;
		} else {
			blnPass = false;
		}
	}
	var output = getElementByIdentity(property + ".msg");
	if (blnPass == false) {
		output.innerHTML = "\u300e" + caption + "\u300f\u6b04\u4f4d\u61c9\u70ba\u8eab\u5206\u8b49\u8cc7\u6599\uff0c\n\u5982\uff1aF123532136\uff0c\u8acb\u91cd\u65b0\u8f38\u5165\uff01\uff01";
	} else {
		output.innerHTML = "";
	}
	return blnPass;
}
/** 
 * 確認是否是身分證字號_james_update
 *
 **/
function checkSID(property, caption){
	var id = getElementByIdentity(property).value;
	var blnPass = true;
	id = id.toUpperCase();
	tab = "ABCDEFGHJKLMNPQRSTUVXYWZIO";
	A1 = new Array (1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3 );
	A2 = new Array (0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5 );
	Mx = new Array (9,8,7,6,5,4,3,2,1,1);
	if(id.length!=10){
		blnPass = false;
	}
	i = tab.indexOf(id.charAt(0));
	if(i==-1){
		blnPass = false;
	}
	sum = A1[i] + A2[i]*9;
	for ( i=1; i<10; i++ ){
		v = parseInt( id.charAt(i) );
		if (isNaN(v)){
			blnPass = false;
		}
		sum = sum + v * Mx[i];
	}
	if(sum%10!=0){
		blnPass = false;
	}
	var output = getElementByIdentity(property + ".msg");
	if (blnPass == false) {
		output.innerHTML = "\u300e" + caption + "\u300f\u6b04\u4f4d\u61c9\u70ba\u8eab\u5206\u8b49\u8cc7\u6599\uff0c\n\u5982\uff1aF123532136\uff0c\u8acb\u91cd\u65b0\u8f38\u5165\uff01\uff01";
	} else {
		getElementByIdentity(property).value = id;
		output.innerHTML = "";
	}
	return blnPass;
}


//排序
function orderByMethod(oneName, twoName, threeName, fourName, fiveName, sixName, check) {
	var allName = [oneName, twoName, threeName, fourName, fiveName, sixName];
	for (i = 0; i < allName.length; i++) {
		if (check == i) {
			var changeValue = document.getElementById(allName[i]).value;
			if (changeValue == 0) {
				document.getElementById(allName[i]).value = 1;
			} else {
				if (changeValue == 1) {
					document.getElementById(allName[i]).value = 2;
				} else {
					if (changeValue == 2) {
						document.getElementById(allName[i]).value = 1;
					}
				}
			}
		}
		if (check != i && allName[i] != "") {
			document.getElementById(allName[i]).value = 0;
		}
	}
}



/*******************************************************************/
//　　　　くそデブが提供した関数だ　　　　　　　　　Begin
//       iLen  似乎是多餘的參數.
/*******************************************************************/
//Not call this!
function funStrFormat(iLen,sStr) 
{ 
	var bFormat = true; 

	for (var iStr = 0; iStr < iLen; iStr++) 
	{ 
		var sChar = sStr.substring(iStr,iStr+1); 
		
		if(sChar.charCodeAt(0)<48 || sChar.charCodeAt(0)>57) 
		{ 
			bFormat = false; 
			break; 
		} 
	} 
	
	return bFormat; 
}


//Not Call this!
function funSerialNoFormat(iLen,sStr) 
{ 
	var bFormat = true; 
	var numcheck = funStrFormat(iLen,sStr); 
	var Arr_s = new Array(8); 
	var Arr_s1 = new Array(8); 
	var Arr_s2 = new Array(1,2,1,2,1,2,4,1); 
	var numtotal = 0; 
	var numtotal2 = 0; 

	if (!numcheck) 
	{ 
		bFormat = false; 
	} 
	else 
	{ 
		for (var i = 0; i < iLen; i++) 
		{ 
			Arr_s[i] = eval(sStr.charAt(i)) * Arr_s2[i]; 
			Arr_s1[i] = eval(sStr.charAt(i)) * Arr_s2[i]; 
			
			if (Arr_s[i] > 9) 
			Arr_s[i] = eval(Arr_s[i].toString().substring(0,1)) + eval(Arr_s[i].toString().substring(1,2)); 
			
			while (Arr_s1[i] > 9) 
			Arr_s1[i] = eval(Arr_s1[i].toString().substring(0,1)) + eval(Arr_s1[i].toString().substring(1,2)); 
			
			numtotal += Arr_s[i]; 
			numtotal2 += Arr_s1[i]; 
		} 
	
		var checknum = numtotal%10; 
		var checknum2 = numtotal2%10; 
		
		if (checknum != 0 && checknum2 != 0) 
			bFormat = false; 
		else 
			bFormat = true; 
	} 
	return bFormat; 
}

//Call This!!!
function checkCompanyInvnum(property)
{
	var item = getElementByIdentity(property);
	var output = getElementByIdentity(property + ".msg");
	var value = item.value;
	
	if (!funSerialNoFormat(value.length, value))
	{
		output.innerHTML="公司統一編號格式不正確";
		item.focus();
		return false;
	}
	else
	{
		output.innerHTML="";
	}
	return true;
}

     function chooseOneGroup(cb,eId){   
         var obj = document.getElementsByName(eId);   
         for (i=0; i<obj.length; i++){   
            if (obj[i]!=cb) obj[i].checked = false;   
            else obj[i].checked = true;   
         }   
     }   
     
/*******************************************************************/
//　　　　くそデブが提供した関数だ　　　　　　　　　End
/*******************************************************************/