// checkTicket.js
var xmlDom = new ActiveXObject("Msxml2.DOMDOCUMENT");
var xslpath = "../../data/order/transform/checkTicket.xsl";
var pageFlag=1;
var segmentCounts=0;

//B2C传入参数进行客票验证
function B2CTKCheck()
{
if(queryType=="0")
	{
		document.all("passengerName").value=passengerName;
		document.all("orderNo").value=orderNum;
		doQuery();
	}
else if(queryType=="1")
	{
		document.all("passengerName1").value=passengerName;
		document.all("ticketNo").value=ticketNum;
		loadTicketInfo(ticketNum,'p');
	}
else if(queryType=="2")
	{
		document.all("checkTicketNo").value=ticketNum;
		document.all("journeyNo").value=journeyNum;		
		loadTicketInfo(ticketNum,'j');
	}	

}

function validate(){
    if(document.all("passengerName").value==''||document.all("orderNo").value==''){
        alert("旅客姓名或订单编号不得为空,请重新填写!");
		if (document.all("orderNo").value=='') document.all.orderNo.focus()
		if (document.all("passengerName").value=='') document.all.passengerName.focus();
        return false;
    }else{
        return true;
    }
}


function doQuery()
{	
	pageFlag=1;
	segmentCounts=0;   
	xslpath = "../../data/order/transform/checkTicket.xsl";
	if(validate()){
		var passengerName=document.all("passengerName").value.toLowerCase();
		var orderNo=document.all("orderNo").value.substring(0,12);
			var condition  = "";
			condition =  'passengerName='+document.all("passengerName").value.toLowerCase();
        	condition = condition+ '&'+'orderNo=' +document.all("orderNo").value.substring(0,12);
			var xmlURL = "../../data/order/checkTicket.xsql?"+condition;
			
			xmlDom  = getData(xmlURL);
			if (!xmlDom.selectSingleNode("//CAMPAIGNTYPE")){
				showInfo.innerHTML= "<strong><font color='red'>对应的旅客记录不存在或还未出票，请重新查询。</font></strong>";
			    //tab1.style.display='none';
			    //tab2.style.display='';
			    return;
			}
			showOrHidden(xmlDom); 
			prompt("",xmlDom.xml);
			renderPage(xmlDom,xslpath);
		
	}
}

function getData(url)
{
	try
	{  
		var xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");
		xmlhttp.open("GET",url,false);
		xmlhttp.setRequestHeader("Content-Type","text/xml");
		xmlhttp.send();
		var _renderxml = xmlhttp.responseXML;
        return _renderxml;
	}
	catch(exp)
	{
		throw( exp );
	}
}

function showOrHidden(dom){
	var ticketNodes=dom.selectNodes("/page/Tickets/Ticket");
	var lenght=ticketNodes.length;
	if(lenght==0){
		showInfo.innerHTML = "<strong><font color='red'>对应的旅客记录不存在或还未出票，请重新查询。</font></strong>";
	    //tab1.style.display='none';
	    //tab2.style.display='';
		return;
	}else if(lenght==1){
		document.all("viewticket").style.display="none";
	}
	else if(lenght>1){
		document.all("viewticket").style.display="";
	}
}


function renderPage(dom,xslURL)
{  	var errorNodes = dom.selectNodes("//xsql-error//message")
	if(errorNodes != null && errorNodes.length > 0){
		showInfo.innerHTML = "<strong><font color='red'>对应的旅客记录不存在或还未出票，请重新查询。</font></strong>";
	    //tab1.style.display='none';
	    //tab2.style.display='';
		return;
	}

	try{	
	if(dom.selectNodes("/page/ORDER/ROW").length>0){      //根据姓名和票号或者票号和行程单进行查询，如果此订单有多张票，那么在总价里只显示该张票的价格，所以要重新组装价格结点
		var type=dom.selectSingleNode("/page/ORDER/ROW/TYPE").text;
		
		var ticketNodes=dom.selectNodes("/page/Tickets/Ticket");
		var lenght=ticketNodes.length;
		var amountString="<page><AMOUNTS>";
		for(i=0;i<lenght;i++){
			var tickektNode=ticketNodes.item(i);
			var seque=tickektNode.selectSingleNode("Sequence").text;
			var CouponsNodes=tickektNode.selectNodes("Coupons/Coupon");
			var amount=0;
			for(j=0;j<CouponsNodes.length;j++){
				var CouponNode=CouponsNodes.item(j);
				var flightdate=CouponNode.selectSingleNode("FlightDate").text
				var flightno=CouponNode.selectSingleNode("FlightNo").text;
				var departtime=CouponNode.selectSingleNode("DepartureTime").text;
				
			if(dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/ADULTPRICE")==null){
					showInfo.innerHTML = "<strong><font color='red'>很抱歉，此订单作了变更，请联系南航查询，查询电话: 95539转4 。</font></strong>";
	   	 			//tab1.style.display='none';
	    			//tab2.style.display='';
					return;
				}				
				if(dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/ADULTPRICE")!=null){				
					if(type==0){
						if(dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/ADULTDISPLAYPRICE").text*1 != 0)
							amount=amount*1+dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/ADULTDISPLAYPRICE").text*1;
						else
							amount=amount*1+dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/ADULTPRICE").text*1;
						amount=amount*1+dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/AIRPORTTAX").text*1;
						amount=amount*1+dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/ADULTFUELTAX").text*1;
					}else if(type==1){
						if(dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/CHILDDISPLAYPRICE").text*1 != 0)
							amount=amount*1+dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/CHILDDISPLAYPRICE").text*1;
						else
							amount=amount*1+dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/CHILDPRICE").text*1;
						amount=amount*1+dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/CHILDFUELTAX").text*1;
					}else if(type==2){
						if(dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/INFANTDISPLAYPRICE").text*1 != 0)
							amount=amount*1+dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/INFANTDISPLAYPRICE").text*1;
						else
							dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/INFANTPRICE").text*1;
						amount=amount*1+dom.selectSingleNode("/page/SEGMENT/ROW[FLIGHTDATE='"+flightdate+"' and FLIGHTCODE='"+flightno+"' and FLIGHTTIME='"+departtime+"']/INFANTFUELTAX").text*1;
					}
				}
				
			}	
			amountString=amountString+"<ROW><Sequence>"+seque+"</Sequence><AMOUNT>"+amount+"</AMOUNT></ROW>";
		}
		amountString=amountString+"</AMOUNTS></page>";
		var amountXml= new ActiveXObject("Msxml2.DOMDOCUMENT");
		amountXml.async=false;
		amountXml.loadXML(amountString);
		dom.selectSingleNode("/page/Tickets").appendChild(amountXml.selectSingleNode("/page/AMOUNTS"));
		}
	} catch(e) {
		processException("显示票面信息时发生错误",e.description);
	}
		
			
	var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
	var xslt = new ActiveXObject("Msxml2.XSLTemplate");
	xslDoc.async = false;
	xslDoc.resolveExternals = false;
	xslDoc.load(xslURL);
	xslt.stylesheet = xslDoc;
	var xslProc = xslt.createProcessor();
	xslProc.input = dom;
	xslProc.addParameter("pageFlag",pageFlag);
	xslProc.addParameter("segmentCounts",segmentCounts);
	xslProc.transform();
	showInfo.innerHTML= xslProc.output;
    //tab1.style.display='none';
    //tab2.style.display='';
}


var tiketNumber="";
function loadTicketInfo(ticketno,flag) {
	pageFlag=1;
	segmentCounts=0;  
	document.all("viewticket").style.display="none";
	xslpath = "../../data/order/transform/checkTicketNo.xsl";
	if(flag == 'p')
	{
		if (document.all.passengerName1.value=='' || document.all("ticketNo").value==''){
			alert("旅客姓名或电子客票号不得为空,请重新填写!");
			if (document.all("ticketNo").value=='') document.all.ticketNo.focus();
			if (document.all.passengerName1.value=='') document.all.passengerName1.focus();
			return;
		}
	}else{
		if (document.all.journeyNo.value=='' || document.all.checkTicketNo.value==''){
			alert("行程单号或电子客票号不得为空,请重新填写!");
			if (document.all.checkTicketNo.value=='') document.all.checkTicketNo.focus();
			if (document.all.journeyNo.value=='') document.all.journeyNo.focus();
			return;
		}
	}
	tiketNumber="784"+ticketno; 
	var url = "/ECS/modules/order/getTicketInfo.jsp?ticketno=784"+ticketno;
	if(flag == 'p'){
		try {	
			xmlHttpSend(url,null,true);
			
			//prompt(getData(url).xml);
		} catch(e) {
			processException("获取票面信息错误.",e.description);
		}
	}else{
		var xmlhttp = new bingo.XMLHttpRequest("POST",url,true,checkJourneyNoCallback);
		xmlhttp.send();
	}
}



function getProcessor(xsltpath){
   	try {
	     var xslDoc=new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
	     var xslTemplate=new ActiveXObject("MSXML2.XSLTemplate");
	     
  		var xmlhttp_xsl = new ActiveXObject("Microsoft.XMLHTTP");
		xmlhttp_xsl.open("GET",xsltpath,false);
		xmlhttp_xsl.send();
				
	     xslDoc.async=false;
	     xslDoc.loadXML(xmlhttp_xsl.responseXML.xml);
	     
	     xmlhttp_xsl = null;
	     
	     xslTemplate.stylesheet=xslDoc;
	     xslProcessor=xslTemplate.createProcessor();
	     return xslProcessor;
	} catch(exp) {
		throw exp;
	}
}

function transformData(srcDoc,processor){
	try {
	    processor.input=srcDoc;
	    processor.transform();
	    resultDoc = processor.output;
	    return resultDoc;
    } catch(exp) {
    	throw exp;
    }
}

function showResult(xsltpath,args,newXmlDom){
	try {
	 
	    var processor=getProcessor(xsltpath);
	   
	    if(args!=null&&args.length!=null) {
	    	for(var i=0;i<args.length;i+=2) {
	    		 processor.addParameter(args[i],args[i+1]);
	    	}
	    }
	   
	   	var rsltDoc;
	   	rsltDoc=transformData(newXmlDom,processor);
	  	return rsltDoc;
   } catch(exp) {
   		throw exp;
   }
}  

var _tmpXmlhttp = null;
function xmlHttpSend(url,body,asyn) {
	try {
		_tmpXmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		_tmpXmlhttp.open("POST",url,asyn);
		if(asyn)
			_tmpXmlhttp.onreadystatechange = ticket_callback;
		if(null != body) {
			_tmpXmlhttp.send(body);
		} else {
			_tmpXmlhttp.send();
		}
		if(!asyn)
			return _tmpXmlhttp.responseXML;
	} catch(exp) {
		throw exp;
	}
}

function ticket_callback() {
	
	if(_tmpXmlhttp==null) return;
	if(_tmpXmlhttp.readyState != 4)return;
	xmlDom=_tmpXmlhttp.responseXML;
	if (!_tmpXmlhttp.responseXML.selectSingleNode("/page/Tickets/Ticket/Traveler/Name")){
		_tmpXmlhttp = null;
		showInfo.innerHTML = "<strong><font color='red'>对应的旅客记录不存在或还未出票，请重新查询。</font></strong>";
	    //tab1.style.display='none';
	    //tab2.style.display='';
		return;
	}
	if (_tmpXmlhttp.responseXML.selectSingleNode("/page/Tickets/Ticket/Traveler/Name").text.toLowerCase().replace(/\s/g,"")!=document.all.passengerName1.value.toLowerCase())
	{
		_tmpXmlhttp = null;
		showInfo.innerHTML = "<strong><font color='red'>对应的旅客记录不存在或还未出票，请重新查询。</font></strong>";
	   //tab1.style.display='none';
	    //tab2.style.display='';
		return;
	}
	if(!validateXMLHTTP(_tmpXmlhttp,"查询数据时出错，原因可能是：\n1、网络问题\n2、数据库连接问题")) {
		_tmpXmlhttp = null;
		return;
	}
	try {
		var showQuene=xmlDom.selectSingleNode("/page/Tickets/Ticket[No='"+tiketNumber+"']/Sequence").text;
		pageFlag=showQuene;    

		renderPage(xmlDom,xslpath);//显示结果
	} catch(e) {
		processException("显示票面信息时发生错误",e.description);
	}
	_tmpXmlhttp = null;
}


function checkJourneyNoCallback(xmlDom){

	var ReceiptNumbernNode = xmlDom.selectSingleNode("/page/Tickets/Ticket[No='784"+document.all.checkTicketNo.value+"']/ReceiptNumber");
	if (ReceiptNumbernNode == null || ReceiptNumbernNode.text!=document.all.journeyNo.value){
		showInfo.innerHTML = "<strong><font color='red'>对应的旅客记录不存在或还未出票，请重新查询。</font></strong>";
	    //tab1.style.display='none';
	    //tab2.style.display='';
		return;
	}
	try {
		var showQuene=xmlDom.selectSingleNode("/page/Tickets/Ticket[No='"+tiketNumber+"']/Sequence").text;
		pageFlag=showQuene;
		renderPage(xmlDom,xslpath);
	} catch(e) {
		processException("显示票面信息时发生错误",e.description);
	}
}


function orderNoCheck(){ 
	var orderNo=document.all("orderNo").value;
	orderNo=orderNo.replace(/\s/g,"");
	orderNo=orderNo.toUpperCase();
	document.all("orderNo").value=orderNo    
	
	var regOrderNo=/^[B,b,C,c]{1}([0-9]{11}|[0-9]{13})$/;
	if(orderNo!=""){
		if(regOrderNo.test(orderNo)==false){
			alert("订单编号为12位或14位字符，第一位是字母B或C，后跟11位或13位数字。");
			document.all("orderNo").focus();
			return false;
		}
	}
}


function nameCheck(obj){
	var psgname=obj.value.replace(/(^\s*)|(\s*$)/g,""); //去除头尾空格
	
	obj.value=psgname;
	
	//var regPsgName=/(^(([\u4E00-\u9fA5]{2,9})|([A-Za-z]{2,55}([A-Za-z])*\/[A-Za-z]{2,55})|([\u4E00-\u9fA5]{1,5}[A-Za-z]{2,20}))$)/;
	var regPsgName=/(^(([\u4E00-\u9fA5]{2,9}(\sCHD)?)|([A-Za-z]{2,55}([A-Za-z])*\/[A-Za-z]{2,55}(\sCHD)?)|([\u4E00-\u9fA5]{1,5}[A-Za-z]{2,20}))$)/;
	if(psgname!=""){
		if(regPsgName.test(psgname)==false){
			alert("姓名的格式错误，请重新输入");
			obj.focus();
			return false;
		}
	}
}

function ticketNoCheck(obj){
	var ticketNo=obj.value; 
	ticketNo=ticketNo.replace(/\s/g,"");
	obj.value=ticketNo;
	var regTicketNo=/\d{10,10}$/;
	if(ticketNo!=""){
		if(regTicketNo.test(ticketNo)==false){
			if(obj.name=="checkTicketNo" || obj.name=="ticketNo")
				alert("电子客票号格式错误,格式应为 10 个数字");
			else
				alert("行程单号格式错误,格式应为 10 个数字");
			obj.focus();
			return false;
		}
	}
}

function viwNextTicket(){
	var ticketNodes=xmlDom.selectNodes("/page/Tickets/Ticket");
	var lenght=ticketNodes.length;
	if(pageFlag==lenght)return;
	 
	var i=pageFlag-1;//控制页面第几航段的显示
	var segmentNode=ticketNodes.item(i);
	segmentCounts=segmentCounts+segmentNode.selectNodes("Coupons/Coupon").length;
	pageFlag=pageFlag+1;
	renderPage(xmlDom,xslpath);
}
function viwPreTicket(){
	if(pageFlag==1)return;
	
	pageFlag=pageFlag-1;
	var ticketNodes=xmlDom.selectNodes("/page/Tickets/Ticket");
	var i=pageFlag-1;//控制页面第几航段的显示
	var segmentNode=ticketNodes.item(i);
	segmentCounts=segmentCounts-segmentNode.selectNodes("Coupons/Coupon").length;
	
	renderPage(xmlDom,xslpath);
}
