function getUrlParm(specParmName) {
	
	var strQuery = self.location.search;
	var parmAry = null;
	var parmName = "";
	var parmValue = "";
	var i = 0;
		
	if ( strQuery.length > 0 ) {
		strQuery = strQuery.substring(1, strQuery.length);
		parmAry = strQuery.split("&");
		for ( i = 0; i < parmAry.length; i++) {
			if ( parmAry[i].indexOf("=") != -1 ) {
				parmName = parmAry[i].split("=")[0];
				parmValue = parmAry[i].split("=")[1];
				if ( parmName == specParmName ) {
					return parmValue;
				}
			}
		}
	}
	
	return "";
	
}

// ?? body ???????J?B?z??????
function insertProcessingWindow() {

	var strWindow = "";
	
	strWindow += '<div id="processingDiv" style="position:absolute; top: 0px; left: 0px; width: 120pt; height: 75pt; z-index: 5; display: none" align="center">\n';
	strWindow += '<table width="100%" height="100%" border="1" cellpadding="0" cellspacing="0">\n';
	strWindow += '    <tr>\n';
	strWindow += '        <td align="left" valign="middle" bgcolor="#0067F4" height="20" style="color: white">????</td>\n';
	strWindow += '    </tr>\n';
	strWindow += '    <tr>\n';
	strWindow += '        <td align="center" valign="middle" bgcolor="#ECE9D8">?????B?z???A???y?? ...</td>\n';
	strWindow += '    </tr>\n';
	strWindow += '</table>\n';
	strWindow += '</div>\n';	

	document.body.insertAdjacentHTML("beforeEnd", strWindow);
	
	document.all.processingDiv.style.left = (document.body.clientWidth - document.all.processingDiv.style.pixelWidth ) / 2;
	document.all.processingDiv.style.top = (document.body.clientHeight - document.all.processingDiv.style.pixelHeight ) / 2;
	

}

// ?????B?z??????
function showProcessingWindow() {

	if ( document.all.processingDiv != null ) {
		document.all.processingDiv.style.display = '';
	}

}

// ?????B?z??????
function hideProcessingWindow() {

	if ( document.all.processingDiv != null ) {
		document.all.processingDiv.style.display = 'none';
	}

}


function cellOnFocus() {

	var oCell = null;
	var oRow = null;
	var i = 0;
		
	if ( event.srcElement.tagName.toLowerCase() == "td" ) {
		oCell = event.srcElement;
		oRow = oCell.parentNode;

		for ( i = 0; i < oRow.childNodes.length; i++ ) {
			oRow.childNodes[i].className = "focus"; 
		}
	
	}
		
}

function cellLostFocus() {

	var oCell = null;
	var oRow = null;
	var i = 0;
		
	if ( event.srcElement.tagName.toLowerCase() == "td" ) {
		oCell = event.srcElement;
		oRow = oCell.parentNode;

		for ( i = 0; i < oRow.childNodes.length; i++ ) {
			oRow.childNodes[i].className = "normal"; 
		}
	
	}

}

// ???? Select ?????????
function removeSelOpt(oSelect) {

	var i = 0;
	
	for ( i = oSelect.options.length - 1; i >= 0; i-- ) {
		if ( oSelect.options[i].selected == true ) {
			oSelect.options[i] = null;
		}
	}
	
}

// ?????? option ???????? select ?????????
function arrayToOptions(oSelect, oAry) {
	
	var oTmpOption = null;	
	var i = 0;
	var j = 0;
	var bExist = false;
	
	for ( i = 0; i < oAry.length; i++ ) {
		
		bExist = false;
		for ( j = 0; j < oSelect.options.length; j++) {	
			if ( oAry[i][0] == oSelect.options[j].value ) {
				bExist = true;
				break;
			} 
		}

		if ( bExist == false ) {
			// ???????
			oTmpOption = new Option(oAry[i][1], oAry[i][0]);
			oSelect.options[oSelect.options.length] = oTmpOption;
		}		
	
	}
	
}

	/*
	*將陣列轉為SQL In的字串
	*傳入array(s1,s2,s3...)..傳回's1','s2','s3'.........
	*/
	function getSQLINStr(aData) {
			//組成in字串
			var strSQLIN = "";
			
			if (aData.length == 0 ) {
				strSQLIN= "''";
			}
			else {
				for (var i = 0; i < aData.length; i++) {
					aData[i] = "'" + aData[i] + "'";
				}
				//去掉最後一個 ','
				//strSQLIN = strSQLIN.slice(0,-1);
				//將陣列內元素轉成字串,用","分隔,(Array.join()的預設值)
				strSQLIN= aData.join();
			}
			
			return strSQLIN;
	}

//取得今天日期加幾日(負數為減)	
function getNowAddDate(addDay) {
		var nowDate = null;

	var ddo = new DDO();
	var row = new Row();
	ddo.init();
	ddo.setAction("AffixAction.DB2SQLQuery");
	row.setQuery("SYSCOMGETDATETIME");
	ddo.appendRow("SysDateTime", row);
	xmlRtn = ddo.send();

	if (xmlRtn.selectSingleNode("//Row/sysDate")) {
		nowDate = new Date(parseInt(xmlRtn.selectSingleNode("//Row/sysDate").text.substring(0, 4), 10),
		                   parseInt(xmlRtn.selectSingleNode("//Row/sysDate").text.substring(5, 7), 10) - 1,
		                   parseInt(xmlRtn.selectSingleNode("//Row/sysDate").text.substring(8, 10), 10));
	} else {
		nowDate = new Date();
	}

	nowDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate() + Number(addDay));
	var nowMonth = ( nowDate.getMonth() +1 >= 10 ? nowDate.getMonth() +1 : "0" + (nowDate.getMonth()+1) );
	var nowYear = nowDate.getFullYear();
	var nowDay = ( nowDate.getDate() >= 10 ? nowDate.getDate() : "0" + nowDate.getDate() );
	var NowString = nowYear + "/" + nowMonth + "/" + nowDay ;
	return NowString;
}
	
/*
*一組checkbox內自動形成單選狀態
*@parm - trueStatus : 勾選時call setStatus()時要設定的狀態名稱
*@parm - trueStatus : 取消勾選時call setStatus()時要設定的狀態名稱
*/
function chbList_OnClick(trueStatus, falseStatus) {
	
	var oChb = event.srcElement;
	var oChbs = document.getElementsByName(oChb.name);
	var bFlag = oChb.checked;
	
	for ( i = 0; i < oChbs.length; i++ ) {
		oChbs[i].checked = false;
	}
	
	oChb.checked = bFlag;
	
	if ( bFlag == true ) {
		if (trueStatus) {
			setStatus(trueStatus);
		}
	} 
	else {
		if (falseStatus) {
			setStatus(falseStatus);
		}
	}
	
}

/*
*一組checkbox內可複選自動設定狀態狀態
*@parm - trueStatus : 只要有一筆勾選時call setStatus()時要設定的狀態名稱
*@parm - trueStatus : 都無勾選時call setStatus()時要設定的狀態名稱
*/
function chbListM_OnClick(trueStatus, falseStatus) {
	
	var oChb = event.srcElement;
	var oChbs = document.getElementsByName(oChb.name);
	var bFlag = false;
	
	for ( i = 0; i < oChbs.length; i++ ) {
		if (oChbs[i].checked) {
			bFlag = true;
			break;
		}
	}
	
	if ( bFlag == true ) {
		if (trueStatus) {
			setStatus(trueStatus);
		}
	} 
	else {
		if (falseStatus) {
			setStatus(falseStatus);
		}
	}
	
}

/*
*點選全選 or 全不選
*@parm - oCheckBoxName : 欲全選或全不選的該組checkBox Name
*@parm - trueStatus : 勾選時call setStatus()時要設定的狀態名稱
*@parm - trueStatus : 取消勾選時call setStatus()時要設定的狀態名稱
*/
function chkAll_OnClick(oCheckBoxName, trueStatus, falseStatus) {
	
	var oChb = event.srcElement;
	var bFlag = oChb.checked;
	var oChbs = document.getElementsByName(oCheckBoxName);

	for (var i = 0; i < oChbs.length; i++) {
		oChbs[i].checked = bFlag;
	}

	if ( bFlag == true ) {
		if (trueStatus) {
			setStatus(trueStatus);
		}
	} 
	else {
		if (falseStatus) {
			setStatus(falseStatus);
		}
	}	
	
}


//select Control function
function ClearCob(Obj) {
	while (Obj.options.length != 0) {
		Obj.options.remove(0);
	}
}

function AddCboItem(Obj, Val ,Text) {
	var opt = document.createElement("OPTION");
	opt.value = Val;
	opt.text = Text;
	Obj.options.add(opt);
}

function SelectedByValue(obj, obj_value) {
	for (var i = 0; i < obj.length; i++) {
		if (obj.options[i].value == obj_value) {
			obj.options[i].selected = true;
			break;
		} else {
			continue;
		}
	}
}

// 按頁數查詢
function QueryByPage(iPage) {

	var oTemp = null;
	var oCell = null;
	var oPageTable = null;
	var oListTable = null;
	var oField = null;
	var i = 0;
	var bChkFlag = true;
	
	
	oTemp = event.srcElement;
	
	if ( oTemp.tagName.toLowerCase() == "td" ) {
		oCell = oTemp;
	}
	if ( oTemp.tagName.toLowerCase() == "img" ) {
		oCell = oTemp.parentNode;
	}	
	
	oPageTable = oCell.parentNode.parentNode.parentNode;

	oListTable = oPageTable.parentNode.childNodes[0];
	if(oForm){
		for ( i = 0; i < oForm.elements.length; i++ ) {
			oField = oForm.elements[i];
			if ( oListTable.contains(oField) ) {
				switch ( oField.tagName.toLowerCase() ) {
					case "input" :
						switch ( oField.type.toLowerCase() ) {
							case "text" :
							case "password" :
								if ( oField.defaultValue != oField.value ) {
									bChkFlag = false;
								}
								break;
					
							case "checkbox":
							case "radio":
								if ( oField.defaultChecked != oField.checked ) {
									bChkFlag = false;
								}
								break;
						}
						
						break;
					
					case "textarea" :
						if ( oField.defaultValue != oField.value ) {
							bChkFlag = false;
						}	
						break;	
				
				}
				
				if ( bChkFlag == false ) {
					break;
				}
			}
		}
	
		if ( bChkFlag != true ) {
			if ( !confirm("點選切換至其它頁而不儲存可能會遺失您在此頁\n所作的變更, 或使查詢結果不如預期, 是否不儲存\n直接前往其它頁??") ) {
				return false;
			} 
		}
	}

	var xmlRtn = null;
	xmlRtn = Query(iPage);

}

//將form裡的input與select設為disable..為了維護頁面直接改成查詢頁使用
function setAllDisable() {
	
	var oInput = document.getElementsByTagName("INPUT");
	var oSelect = document.getElementsByTagName("SELECT");
	
	for (var i = 0; i < oInput.length; i++) {
		oInput[i].disabled = true;
	}
	
	for (var i = 0; i < oSelect.length; i++) {
		oSelect[i].disabled = true;
	}	
	
}

//將xml裡的Data轉成Object {1 : {fieldkey: fieldvalue}, 2 : {fieldKey : fieldvalue}}
function xmlTranObj(oXml) {

	var oRow = oXml.selectNodes("//Row");
	var oTemp = new Object();
	var oRowTemp = null;
	var oNodes = null;
	var oNode = null;

	for (var i = 0; i < oRow.length; i++) {
		oNodes = oRow[i].childNodes;
		oRowTemp = new Object();
		for (var j = 0; j < oNodes.length; j++) {
			oNode = oNodes[j];
			oRowTemp[oNode.tagName] = (oNode.text == "null") ? "" : oNode.text;
		}
		oTemp[i] = oRowTemp;	
	}
	
	return oTemp;
}

//將資料建立select list的option
function objToOptions(oSel, oData, selectedLabel, allLabel) {
	
	oSel.innerHTML = "";
	
	//全部
	if (allLabel) {
		var oOpt = document.createElement("option");
		oOpt.value = "";
		oOpt.innerHTML = allLabel;
		oSel.appendChild(oOpt);		
	}
	
	for (var key in oData) {
		var oOpt = document.createElement("option");
		oOpt.value = key;
		oOpt.innerHTML = key + " - " + oData[key];
		if (key == selectedLabel) {
			oOpt.selected = true;
		}
		oSel.appendChild(oOpt);
	}

}


//將資料建立select list的option 無編號出現 Lynn
function objToOptionsNoKey(oSel, oData, selectedLabel, allLabel) {
	
	oSel.innerHTML = "";
	
	//全部
	if (allLabel) {
		var oOpt = document.createElement("option");
		oOpt.value = "";
		oOpt.innerHTML = allLabel;
		oSel.appendChild(oOpt);		
	}
	
	for (var key in oData) {
		var oOpt = document.createElement("option");
		oOpt.value = key;
		oOpt.innerHTML = oData[key];
		if (key == selectedLabel) {
			oOpt.selected = true;
		}
		oSel.appendChild(oOpt);
	}

}

//將資料建立select list的option
function objToInputObj(oSpan, oData, name, type, dataType, nullAble, caption, checkedValue) {
	
	oSpan.innerHTML = "";
	
	for (var key in oData) {
		var oInput = document.createElement("input");
		oInput.type = type;
		oInput.name = name;
		oInput.dataType = dataType;
		oInput.nullAble = nullAble;
		oInput.caption = caption;
		oInput.value = key;
		oInput.innerHTML = oData[key];
		if (key == checkedValue) {
			oInput.checked = true;
		}
		oSpan.appendChild(oInput);
	}

}


function getUserLevel(userNo) {
	if (userNo == "Admin") {
		return 15;
	}

	var i = 0;
	var ndRow = null;
	var xmlRtn = null;
	var rtnLevel = 0;

	var ddo = new DDO();
	var row = new Row();

	ddo.init();
	ddo.setAction("CommonAction.Query");
	ddo.setValueObj("BasGroup");
	row.setQuery("MISCLEVELHQ01");
	row.appendParm(userNo, "java.lang.String");
	ddo.appendRow("BasGroup", row);

	xmlRtn = ddo.send();

	if ( xmlRtn.selectSingleNode("//Root/BasGroup/Row") ) {
		for ( i = 0; i < xmlRtn.selectNodes("//Root/BasGroup/Row").length; i++ ) {
			ndRow = xmlRtn.selectNodes("//Root/BasGroup/Row")[i];
			if (ndRow.selectSingleNode("role").text.trim() != "") {
				rtnLevel += parseInt(ndRow.selectSingleNode("role").text.trim());
			}
		}
	}

	return rtnLevel;
}


function testLevel(userLevel, testLevel) {
	if ((userLevel & testLevel) != 0) return true;
	else return false;
}

function getBackVacct(orgCode, fundCode) {

	var i = 0;
	var ndRow = null;
	var xmlRtn = null;
	var strBackVacct = "";

	var ddo = new DDO();
	var row = new Row();

	ddo.init();
	ddo.setAction("AffixAction.DB2SQLQuery");
	row.setQuery("GETBACKVACCT");
	row.appendParm(orgCode, "java.lang.String");
	row.appendParm(orgCode, "java.lang.String");
	row.appendParm(fundCode, "java.lang.String");
	ddo.appendRow("BasVirtualAccount", row);

	xmlRtn = ddo.send();

	if ( xmlRtn.selectSingleNode("//Root/BasVirtualAccount/Row") ) {
		for ( i = 0; i < xmlRtn.selectNodes("//Root/BasVirtualAccount/Row").length; i++ ) {
			ndRow = xmlRtn.selectNodes("//Root/BasVirtualAccount/Row")[i];
			if (ndRow.selectSingleNode("backVacct").text.trim() != "null") {
				strBackVacct = ndRow.selectSingleNode("backVacct").text.trim();
			}
		}
	}

	return strBackVacct;
}

function getApplyVacct(divOption, orgCode, fundCode) {
	alert(divOption+"/"+orgCode+"/"+fundCode)
	var i = 0;
	var ndRow = null;
	var xmlRtn = null;
	var strApplyVacct = "";

	var ddo = new DDO();
	var row = new Row();

	ddo.init();
	ddo.setAction("AffixAction.DB2SQLQuery");
	row.setQuery("GETAPPLYVACCT");
	row.appendParm(divOption, "java.lang.String");
	row.appendParm(divOption, "java.lang.String");
	row.appendParm(divOption, "java.lang.String");
	row.appendParm(divOption, "java.lang.String");
	row.appendParm(orgCode, "java.lang.String");
	row.appendParm(divOption, "java.lang.String");
	row.appendParm(divOption, "java.lang.String");
	row.appendParm(divOption, "java.lang.String");
	row.appendParm(divOption, "java.lang.String");
	row.appendParm(orgCode, "java.lang.String");	
	row.appendParm(fundCode, "java.lang.String");
	ddo.appendRow("BasVirtualAccount", row);

	xmlRtn = ddo.send();

	if ( xmlRtn.selectSingleNode("//Root/BasVirtualAccount/Row") ) {
		for ( i = 0; i < xmlRtn.selectNodes("//Root/BasVirtualAccount/Row").length; i++ ) {
			ndRow = xmlRtn.selectNodes("//Root/BasVirtualAccount/Row")[i];
			if (ndRow.selectSingleNode("applyVacct").text.trim() != "null") {
				strApplyVacct = ndRow.selectSingleNode("applyVacct").text.trim();
			}
		}
	}

	return strApplyVacct;
}