﻿function JX() {
}

JX.XMLHttpRequest = 1;
JX.IFrame = 2;
// JX.LoadingMessage = 0;
JX.setBodyFragment = function(bodyFragment) {
	JX.setFragment("div_body", bodyFragment);
};
JX.setReqSynFlag = function(synFlag) {
	JXEngine.setReqSynFlag(synFlag);
};
JX.setEvalMode = function(flag) {
	JXEngine.setEvalMode(flag);
};
JX.setVerb = function(verb) {
	JXEngine.setVerb(verb);
};
JX.execute = function(serviceName, methodName, paramsMap, callbackFunc) {
	// if(JX.LoadingMessage == 0){
	// JXEngine.useLoadingMessage('50%',0);
	// }else{
	// JX.LoadingMessage = 0;
	// }
	var args = new Array();
	// args[0]=callbackFunc;
	processParamsMap(args, paramsMap, null);
	return JXEngine._execute(getDispatchPath(), serviceName, methodName, args,
			callbackFunc);
};
JX.useLoadingMessage = function(topper, leftpx, mode) {
	// JX.LoadingMessage = 1;
	return JXEngine.useLoadingMessage(topper, leftpx, mode);
};
JX.getValue = function(ele) {

	return JXUtil.getValue(ele);
};
JX.getText = function(ele) {
	return JXUtil.getText(ele);
};
JX.setValue = function(ele, val) {
	return JXUtil.setValue(ele, val);
};
JX.getCheckboxValue = function(ele) {
	// the below clauses may cause problems
	var orig = ele;
	ele = $$$(ele);
	if (JXUtil._isHTMLElement(ele, "input")) {
		switch (ele.type) {
		case "checkbox":
			var result = new Array();
			var items = document.getElementsByName(orig);
			if (items != null) {
				var j = 0;
				for ( var i = 0; i < items.length; i++) {
					if (items[i].checked) {
						result[j++] = items[i].value;
					}
				}
			}
			return result;
		case "check-box":
		case "radio":
			return ele.checked;
		default:
			return ele.value;
		}
	} else {
		return null;
	}

};
JX.processMessage = function(messages, viewMode, classtable, classtd,
		confirmMsgMap) {
	try {
		var xmlDocument = null;
		if (typeof messages == "string") {
			xmlDocument = JX.newDOMDocument();
			if (typeof window.ActiveXObject != 'undefined') {
				xmlDocument.loadXML(messages);

			} else if (document.implementation
					&& document.implementation.createDocument) {
				var oParser = new DOMParser();
				try {
					xmlDocument = oParser.parseFromString(messages, "text/xml");
				} catch (ex) {
					alert("xml解析出錯！");
				}
			}
		} else {
			xmlDocument = messages;
		}
		if (!displayError(xmlDocument)) {
			if (displayMessage(xmlDocument, classtd, classtable, viewMode,
					confirmMsgMap)) {
				// alert("displayError");
				return null;
			} else {
				return xmlDocument;
			}
		} else {
			return null;
		}
		return xmlDocument;
	} catch (ex) {
		alert(ex.message);
	}
};
JX.transXMLByXSL = function(xmldoc, xsldoc) {

	var Browser = {};
	var htmlFragment;
	Browser.isMozilla = (typeof document.implementation != 'undefined')
			&& (typeof document.implementation.createDocument != 'undefined')
			&& (typeof HTMLDocument != 'undefined');
	if (Browser.isMozilla == true) {

		// alert("xmldoc");
		// alert(new XMLSerializer().serializeToString(xmldoc.documentElement));
		// alert("xsldoc");
		// alert(new XMLSerializer().serializeToString(xsldoc.documentElement));
		var xslProcessor = new XSLTProcessor();
		xslProcessor.importStylesheet(xsldoc);

		var oResultDom = xslProcessor.transformToDocument(xmldoc);
		var oSerializer = new XMLSerializer();
		htmlFragment = oSerializer.serializeToString(oResultDom);

		// alert("htmlFragment");
		// alert(htmlFragment);
		// opera浏览器兼容问题
		if (navigator.userAgent.indexOf('Opera') >= 0) {
	
			if (xsldoc == xslDoc_searchFlightInfoResult
					|| xsldoc == xslDoc_searchFlightTimeResult
					|| xsldoc == xslDoc_searchFlightPriceResult
					|| xsldoc == xslDoc_searchInterFlightInfoResult) {
				// alert("xslDoc_searchFlightInfoResult");
				htmlFragment = "<html><head></head><body><h1 xmlns:xalan=\"http://xml.apache.org/xslt\"></h1> <h2 xmlns:xalan=\"http://xml.apache.org/xslt\">"
						+ htmlFragment.substring(49);

				// alert(htmlFragment);
			} else if (xsldoc == xslDoc_validateEticketResult) {

				// alert("xslDoc_validateEticketResult");
				htmlFragment = "<html><head></head><body><div xmlns:xalan=\"http://xml.apache.org/xslt\" class=\"info\">"
						+ htmlFragment.substring(58);
				// alert(htmlFragment);

			} else if (xsldoc == xslDoc_validateEticketResult_receipt) {
				// alert("xslDoc_validateEticketResult_receipt");
				htmlFragment = "<html><head></head><body><div xmlns:xalan=\"http://xml.apache.org/xslt\" style=\"height: 45px;\" class=\"list\">"
						+ htmlFragment.substring(80);
				// alert(htmlFragment);
			} else if (xsldoc == xslDoc_validateEticketResult_receipt_big) {
				 //alert("xslDoc_validateEticketResult_receipt_big");
				htmlFragment = "<html><head></head><body><div xmlns:xalan=\"http://xml.apache.org/xslt\" class=\"journey_list_detail\">"
						+ htmlFragment.substring(73);
				// alert(htmlFragment);
			} else if (xsldoc == xslDoc_retrieveTripResult) {
				// alert("xslDoc_retrieveTripInfoResult");
				htmlFragment = "<html><head></head><body><div xmlns:xalan=\"http://xml.apache.org/xslt\" class=\"head\">"
						+ htmlFragment.substring(58);
				 //alert(htmlFragment);
			} else if (xsldoc == xslDoc_searchWeatherInfoResult) {
				//alert("xslDoc_searchWeatherInfoResult");
				htmlFragment = "<html><head></head><body><div xmlns:xalan=\"http://xml.apache.org/xslt\" class=\"head\">"
						+ htmlFragment.substring(58);
				// alert(htmlFragment);
			}else{
			
				/* nt_logonResult.xsl|
				 * nt_validateEticketResult_invoice.xsl |
				 * nt_validateInvoiceResult_eticket.xsl｜
				 * nt_validateInvoiceResult.xsl
				 * 四个XSL文件由于功能没有实现，所以没有进行解析
				 * */
			}
			
		} else if (htmlFragment == "") {
			alert("此浏览器不支持xsl，请更换浏览器！");
			return null;
		}
	} else {
		htmlFragment = xmldoc.transformNode(xsldoc);
	}
	
	return htmlFragment;
};
JX.setFragment = function(divid, htmlFragment) {

	$$$(divid).innerHTML = "";
	$$$(divid).innerHTML = htmlFragment;
};
JX.setScriptFragment = function(divid, srcs) {
	var divcontent = $$$(divid).innerHTML;
	for ( var i = 0; i < srcs.length; i++) {
		var elejs = document.createElement('script');
		// elejs.language="javascript";
		elejs.type = "text/javascript";
		var src = srcs[i];
		elejs.src = src;
		if (divcontent.indexOf(src) == -1) {
			$$$(divid).appendChild(elejs);
		}
	}
};
JX.getFragment = function(divid) {
	return $$$(divid).innerHTML;
}
JX.setblank = function(vararg_params) {
	for ( var i = 0; i < arguments.length; i++) {
		$$$(arguments[i]).value = "";
	}
};
JX.getTagValueByName = function(xmldoc, tagName, returnType) {
	returnType = (returnType == null ? 0 : returnType);
	var tagObj = xmldoc.getElementsByTagName(tagName);
	var values = null;
	if (tagObj != null) {
		values = new Array();
		if (tagObj.length != 0) {
			for ( var i = 0; i < tagObj.length; i++) {
				var itemObj = tagObj.item(i);
				if (itemObj != null) {
					var firstChildObj = itemObj.firstChild;
					if (firstChildObj != null) {
						values[i] = firstChildObj.xml;
					}
				}
			}
		}
		if (values.length == 0) {
			values = null;
		}
		if (values != null && values.length == 1 && returnType == 0) {
			return values[0];
		} else
			return values;
	}
};
JX.loadXSLTDocument = function(xsltPath) {
	var xslDoc = JXEngine._newActiveXObject(JXEngine._DOMDocument);
	xslDoc.async = false;
	if (typeof window.ActiveXObject != 'undefined') {
		xslDoc.load(xsltPath);
	} else if (document.implementation
			&& document.implementation.createDocument) {
		var xmlhttp = new window.XMLHttpRequest();
		xmlhttp.open("GET", xsltPath, false);
		xmlhttp.send(null);
		xslDoc = xmlhttp.responseXML;
	} else {
		return null;
	}
	return xslDoc;
};
JX.loadXMLDocument = function(xmlPath) {
	var xmlDoc = JXEngine._newActiveXObject(JXEngine._DOMDocument);
	xmlDoc.async = false;
	if (typeof window.ActiveXObject != 'undefined') {
		xmlDoc.load(xmlPath);
	} else if (document.implementation
			&& document.implementation.createDocument) {
		var xmlhttp = new window.XMLHttpRequest();
		xmlhttp.open("GET", xmlPath, false);
		xmlhttp.send(null);
		xmlDoc = xmlhttp.responseXML;
	} else {
		return null;
	}
	return xmlDoc;
};
JX.getMessage = function(message_id, para1, para2, para3, para4, para5) {
	return getMessage(message_id, para1, para2, para3, para4, para5);
};
JX.handleError = function(message) {
	JXEngine.defaultMessageHandler(message);
};
JX.getSession = function() {
	if (session == null) {
		session = new Session();
	}
	return session;
};

// newmethod can be JXEngine.IFrame or JXEngine.XMLHttpRequest
JX.setMethod = function(newmethod) {
	JXEngine.setMethod(newmethod);
}
JX.addOptions = function(ele, data, valuerev, textprop, clearFlag) {
	JXUtil.addOptions(ele, data, valuerev, textprop, clearFlag);
}
JX.newActiveXObject = function(type) {
	return JXEngine._newActiveXObject(type)
}
JX.newDOMDocument = function() {
	var xmlDocument = JXEngine._newActiveXObject(JXEngine._DOMDocument);
	xmlDocument.async = false;
	return xmlDocument;
}
JX.switchDivDisplay = function(eleid) {
	var elediv = $$$(eleid);
	if (elediv != null) {
		if (elediv.style.display == "none") {
			elediv.style.display = "block";
		} else {
			elediv.style.display = "none";
		}
	}
}
JX.setLanguageMode = function(flag) {
	JXEngine.setLanguageMode(flag);
};
JX.disableElement = function(eleId) {
	$$$(eleId).style.backgroundColor = "#FFFFFF";
	$$$(eleId).readOnly = true;
	$$$(eleId).disabled = 'true';
}

