/*import myAjax.js,dhtmlwindow.js,comLib.js,comUtil.js,date.js,myMask.js
 * 
 *js variables defined in cartPageLayout.jsp ->
 *resourceRoot, CHANNELID_HOTEL, CHANNELID_VILLA, CHANNELID_PACKAGE,
 *CHANNELID_AIROFFLINE, CHANNELID_AIRXO, CHANNELID_INSURANCE, CHANNELID_CAR,
 *OMS_NETWORKTYPE_DOMESTIC, OMS_NETWORKTYPE_INTERNATIONAL,localizedStrings <-
 */
var imageFolder = resourceRoot + "/images";
var smallAirlineImageExt = "_small.gif";
var errorAirlineImage = "AirDP.gif";
var totalFare = 0;
var currency = "";
var discountOnBaseFare = 0;
var discountOnTotalTax = 0;
var netPayableAmount = 0;
var serviceCharges = 0;
var serviceTax = 0;

var orderDetailXmlDom;
var airDetailXmlDom;

var NOD = new Number(1);
var ATT = new Number(2);
var NOV = new Number(3);

var flightsCharge = "0";
var hotelsCharge = "0";
var villasCharge = "0";
var carsCharge = "0";
var toursCharge = "0";
var transfersCharge = "0";

var CAR_SEARCH_PAGE = "carSearch.jsp";
var HOTEL_SEARCH_PAGE = "hotelSearch.jsp";
var FLIGHT_SEARCH_PAGE = RETURN_PAGE = "flightSearch.jsp";
var TOURSANDTRANSFERS_SEARCH_PAGE = "toursTransfersSearch.jsp";
var SHOPPING_CART_DIV = "shopingcontainerdiv";
var CONFIRM_MESSAGE_DIV = 'cancelshopingcart';
var VAR_MESSAGE_SPAN = "mess";
var PRICECHANGE_MESSAGE_DIV = "priceChange";
var VAR_PRICECHANGE_MESSAGE_SPAN = "messPriceChange";
var AVAILFAIL_MESSAGE_DIV = "availFail";
var VAR_AVAILFAIL_MESSAGE_SPAN = "messAvailFail";

var HIDDEN_FLIGHTURL = "furl";
var HIDDEN_SUB_FIELDID = "remsubid";
var HIDDEN_SUBCSV_FIELDID = "delSubordNos";
var MASK_CONTENT_DIVID = "myMaskContent";
var HIDDEN_FLIGHT_SUBORDER_ID = "flightSuborderId";

var DATE_FORMAT_ONE = localizedStrings.DATE_FORMAT_ONE;
var DATE_FORMAT_TWO = localizedStrings.DATE_FORMAT_TWO;
var DATE_FORMAT_THREE = localizedStrings.DATE_FORMAT_THREE;

var FLIGHT_CONFIRM_MESS = localizedStrings.FLIGHT_CONFIRM_MESS;
var HOTEL_CONFIRM_MESS = localizedStrings.HOTEL_CONFIRM_MESS;
var VILLA_CONFIRM_MESS = localizedStrings.VILLA_CONFIRM_MESS;
var CAR_CONFIRM_MESS = localizedStrings.CAR_CONFIRM_MESS;
var TOUR_CONFIRM_MESS = localizedStrings.TOUR_CONFIRM_MESS;

var COMPLETEBOOKING = localizedStrings.COMPLETEBOOKING; // Button text
var POINTS_WARNING = localizedStrings.POINTS_WARNING;
var DEPARTURE = localizedStrings.DEPARTURE;
var ARRIVAL = localizedStrings.ARRIVAL;
var TOTAL_TRAVEL_TIME = localizedStrings.TOTAL_TRAVEL_TIME;
var REMOVE = localizedStrings.REMOVE;
var ADD_ITIN = localizedStrings.ADD_ITIN;
var GREAT_DEALS = localizedStrings.GREAT_DEALS;
var YOUR_ITIN = localizedStrings.YOUR_ITIN;
var CART_EMPTY_MESSAGE = localizedStrings.CART_EMPTY_MESSAGE;
var SEARCH = localizedStrings.SEARCH;
var SUMMARY_CHARGES = localizedStrings.SUMMARY_CHARGES;
var RETURN_TO_SEARCH = localizedStrings.RETURN_TO_SEARCH;
var FLIGHT = localizedStrings.FLIGHT;
var HOTEL = localizedStrings.HOTEL;
var VILLA = localizedStrings.VILLA;
var TOUR = localizedStrings.TOUR;
var TRANSFER = localizedStrings.TRANSFER;
var CAR_RENT = localizedStrings.CAR_RENT;
var TOTAL = localizedStrings.TOTAL;
var TOTAL_FARE = localizedStrings.TOTAL_FARE;
var PICKUP = localizedStrings.PICKUP;
var DROPOFF = localizedStrings.DROPOFF;
var CAR_TYPE = localizedStrings.CAR_TYPE;
var BOOK_HOTEL = localizedStrings.BOOK_HOTEL;
var BOOK_CAR_RENTAL = localizedStrings.BOOK_CAR_RENTAL;
var BOOK_FLIGHT = localizedStrings.BOOK_FLIGHT;
var BOOK_TOURSNXFERS = localizedStrings.BOOK_TOURSNXFERS;
var CHECKIN = localizedStrings.CHECKIN;
var CHECKOUT = localizedStrings.CHECKOUT;
var TOTAL_ROOMS = localizedStrings.TOTAL_ROOMS;
var CONFIRM_REMOVAL = localizedStrings.CONFIRM_REMOVAL;
var PRICECHANGE_HEADERMESSAGE = localizedStrings.PRICE_CHANGE;
var AVAILFAIL_HEADERMESSAGE = localizedStrings.NO_AVAILABILITY;

var CONNECTION_TIME = localizedStrings.CONNECTION_TIME;
var COMMENCE = localizedStrings.COMMENCE;
var DURATION = localizedStrings.DURATION;
var PNR = localizedStrings.PNR;
var ORDERNO = "0";

var LABEL_SEATS_CART = localizedStrings.seats;

var flightSearchUrl = null;

/**
 * 
 * @return
 */
function getOrderDetailXmlDom() {
	if (!orderDetailXmlDom) {
		orderDetailXmlDom = getXmlDom(orderDetailXml, 1);
	}
	return orderDetailXmlDom;
}

/**
 * 
 * @return
 */
function genHTML() {
	getOrderDetailXmlDom();
	var ctElem = get(orderDetailXmlDom, NOD, "Orders");
	var i = 0;
	var subOrders = new Array();
	if (ctElem.length > 0) {
		var xmlElem = get(ctElem[0], NOD, "Order");

		if (xmlElem[0] && get(xmlElem[0], NOD, "OrderInfo")[0]) {
			ORDERNO = get(get(xmlElem[0], NOD, "OrderInfo")[0], ATT, "POTRFNUM");
			subOrders = get(xmlElem[0], NOD, "SubOrders");
			currency = get(xmlElem[0], NOD, "Currency");
			currency = get(get(currency[currency.length - 1], NOD,
					"CurrencyInfo")[0], ATT, "POTPAYCURR");

		}
	}
	if (subOrders.length > 0) {
		setDivValue$(SHOPPING_CART_DIV, getShoppingCartHtml(subOrders[0]));
	} else {
		setDivValue$(SHOPPING_CART_DIV, getShoppingCartEmptyHtml());
	}
}

/**
 * O/P format eg. Mar 13, 2008 12:23 am (Default En Locale)
 * 
 * @param date
 * @return
 */
function displayFormatDate(date) {
	return formatDate(date, DATE_FORMAT_ONE);
}

/**
 * O/P format eg. Mar 13, 2008 (Default En Locale)
 * 
 * @param date
 * @return
 */
function displayFormatDateOnly(date) {
	return formatDate(date, DATE_FORMAT_TWO);
}

/**
 * O/P format eg. Mar 13, @ 12:40PM (Default En Locale)
 * 
 * @param date
 * @return
 */
function displayFormatDateTimeCar(date) {
	return formatDate(date, DATE_FORMAT_THREE);
}

/**
 * 
 * @return
 */
function getDottedDividerHtml() {
	return "<div class='dividerdotted'></div>";
}

/**
 * 
 * @return
 */
function getSolidDividerHtml() {
	return "<div class='divider'>&nbsp;</div>";
}

/**
 * 
 * @param airlineSuborder
 * @return
 */
function getAirlineSingleFlightHtml(airlineSuborder) {
	var subOrderNo = getSuborderRfNum(airlineSuborder);
	obj$(HIDDEN_FLIGHT_SUBORDER_ID).value = subOrderNo;
	flightsCharge = parseInt(flightsCharge, 10)
			+ parseInt(getSuborderTotalPrice(airlineSuborder), 10) + "";
	var htmlStr = "";
	var airlineTag = get(airlineSuborder, NOD, "Airline")[0];
	var itnArr = get(airlineTag, NOD, "ItineraryDetail");
	var psnArr = get(airlineTag, NOD, "PassengerDetail");
	var forSeatMap = 0;
	for ( var paxc = 0; paxc < psnArr.length; paxc++) {
		var paxTypeC = get(get(psnArr[paxc], NOD, "PassengerInfo")[0], ATT,
				"PITCNDPASSTYPE");
		if (paxTypeC == "Adult" || paxTypeC == "ADT") {
			noOfAdults++;
		} else if (paxTypeC == "Child" || paxTypeC == "CHD") {
			noOfChildren++;
		}
	}
	onLoadInitSeatMapBaseHtml(itnArr, psnArr);// Init Seatmap var

	var itnArrO = getOneDir(itnArr, "outbound");
	var itnArrI = getOneDir(itnArr, "inbound");
	var isOnlyInbound = false; // For RT DOM Inbound
	if (itnArrO.length == 0 && itnArrI.length > 0) {// For Domestic Return
		// Flight
		itnArrO = itnArrI;
		itnArrI = new Array();
		isOnlyInbound = true;

	}

	var intArrSuper = getItnArrArr(itnArrO, isOnlyInbound);

	for ( var itnx = 0; itnx < intArrSuper.length; itnx++) {// For OW/MC
		itnArrO = intArrSuper[itnx];

		var time1 = 0;
		for ( var itn = 0; itn < itnArrO.length; itn++) {
			time1 += parseInt(get(get(itnArrO[itn], NOD, "ItineraryInfo")[0],
					ATT, "ITNDURATION"));
			var isLast1 = (itnArrO.length - 1 == itn);
			var time2 = getConnectionTime(itnArrO, itn);
			time1 += time2;
			var sm = forSeatMap++;
			htmlStr += getAirlineSingleSegmentHtml(itnArrO[itn], subOrderNo,
					itn, true, isLast1 ? time1 : 0, !isLast1 ? time2 : 0,
					segmentDetailForSeatMapArray[sm], sm, psnArr);
			if (itn < itnArrO.length - 1) {
				htmlStr += getDottedDividerHtml();
			}
		}
	}

	time1 = 0;

	for ( var itn2 = 0; itn2 < itnArrI.length; itn2++) {
		time1 += parseInt(get(get(itnArrI[itn2], NOD, "ItineraryInfo")[0], ATT,
				"ITNDURATION"));
		var isLast2 = (itnArrI.length - 1 == itn2);
		var time3 = getConnectionTime(itnArrI, itn2);
		time1 += time3;
		if (itn2 == 0) {
			htmlStr += getDottedDividerHtml();
			htmlStr += getDottedDividerHtml();
		}
		var sm = forSeatMap++;
		htmlStr += getAirlineSingleSegmentHtml(itnArrI[itn2], subOrderNo, itn2,
				false, isLast2 ? time1 : 0, !isLast2 ? time3 : 0,
				segmentDetailForSeatMapArray[sm], sm, psnArr);
		if (!isLast2) {
			htmlStr += getDottedDividerHtml();
		}
	}
	return htmlStr;
}

function getItnArrArr(itnArrO, isInbound) {

	var itnArr = new Array();
	var count = 0;
	if (!isInbound) {
		itnArr[0] = getItnArrForExactMatchDir(itnArrO, "outbound");
		var x1 = getItnArrForExactMatchDir(itnArrO, "outbound1");
		if (x1) {
			itnArr[1] = x1;
		}

		var x2 = getItnArrForExactMatchDir(itnArrO, "outbound2");
		if (x2) {
			itnArr[2] = x2;
		}

		var x3 = getItnArrForExactMatchDir(itnArrO, "outbound3");
		if (x3) {
			itnArr[3] = x3;
		}

		var x4 = getItnArrForExactMatchDir(itnArrO, "outbound4");
		if (x4) {
			itnArr[4] = x4;
		}

		var x5 = getItnArrForExactMatchDir(itnArrO, "outbound5");
		if (x5) {
			itnArr[5] = x5;
		}

	} else {
		itnArr[0] = getItnArrForExactMatchDir(itnArrO, "inbound");
	}
	return itnArr;

}

function getItnArrForExactMatchDir(itnArr, dir) {
	var dirArr = new Array();
	var dirArrIndex = 0;
	for ( var itn = 0; itn < itnArr.length; itn++) {
		var dirn = get(get(itnArr[itn], NOD, "ItineraryOtherInfo")[0], ATT,
				"ITNCNDDIRECTION");
		if (!dirn) {
			return null;
		}
		if (dirn == dir) {
			dirArr[dirArrIndex++] = itnArr[itn];
		}
	}
	return dirArr;
}

function getConnectionTime(itnArr, count) {
	var len = itnArr.length;
	var t1 = 0;
	var t2 = 0;
	t1 = getDateFromAltovaFormat(
			get(get(itnArr[count], NOD, "ItineraryInfo")[0], ATT, "ITNARRVTIME"))
			.getTime();

	if (count != (len - 1)) {
		t2 = getDateFromAltovaFormat(
				get(get(itnArr[count + 1], NOD, "ItineraryInfo")[0], ATT,
						"ITNDEPTTIME")).getTime();
	}

	var conntime = t2 - t1;
	if (conntime < 0) {
		conntime = 0;
	}
	return conntime;
}

/**
 * 
 * @param itnArr
 * @param dir
 * @return
 */
function getOneDir(itnArr, dir) {
	var dirArr = new Array();
	var dirArrIndex = 0;
	for ( var itn = 0; itn < itnArr.length; itn++) {
		if (get(get(itnArr[itn], NOD, "ItineraryOtherInfo")[0], ATT,
				"ITNCNDDIRECTION").indexOf(dir) != -1) {
			dirArr[dirArrIndex++] = itnArr[itn];
		}
	}
	return dirArr;
}

/**
 * 
 * @return
 */
function getAirlineSingleSegmentHtml(itineraryDetail, subOrderNo, count,
		showRemove, totDur, conDur, segmentDet, seatMapCount, paxDetArr) {

	var itnInf = get(itineraryDetail, NOD, "ItineraryInfo")[0];
	var itnOthInf = get(itineraryDetail, NOD, "ItineraryOtherInfo")[0];
	var fareRule = "";

	var airlineName = get(itnInf, ATT, "ITNALNAME");

	arrTime = get(itnInf, ATT, "ITNARRVTIME");
	depTime = get(itnInf, ATT, "ITNDEPTTIME");
	originCode = get(itnInf, ATT, "ITNSOURCE");
	originName = get(itnInf, ATT, "ITNSOURCENAME");
	destCode = get(itnInf, ATT, "ITNDEST");
	destName = get(itnInf, ATT, "ITNDESTNAME");
	flightDate = get(itnInf, ATT, "ITNDESTNAME");
	flightNo = get(itnInf, ATT, "ITNFLIGHTNO");
	var itnRfNum = get(itnInf, ATT, "ITNREFNUM");
	// allowTKT = get(itnInf,ATT,"AllowTKT");
	// allowBH = get(itnInf,ATT,"AllowBH");
	// allowWL = get(itnInf,ATT,"AllowWL");
	// minCancelTime = get(itnInf,ATT,"MinCancelTime");
	equipType = get(itnInf, ATT, "ITNEQUIPMENTTYPE");
	durLong = get(itnInf, ATT, "ITNDURATION");

	airlineCode = get(itnOthInf, ATT, "ITNAIRLINECODE");
	adultTax = get(itnOthInf, ATT, "PITTAX");
	cabinClass = get(itnOthInf, ATT, "ITNCABINCLA");
	direction = get(itnOthInf, ATT, "ITNCNDDIRECTION");// outbound,inbound
	dirIndicator = get(itnOthInf, ATT, "ITNCNDSEQ");
	itnfarerule = get(itnOthInf, ATT, "ITNFARERULE");

	var alreadySelSeats = getSeatsForItnIfAvail(itnRfNum, paxDetArr)

	var htmlStr = "";

	htmlStr += "<div class='itinerarydiv'>";
	htmlStr += "<div class='itinerarylogo'>";
	htmlStr += "	<span><img src='" + imageFolder + "/" + airlineCode
			+ smallAirlineImageExt
			+ "' onerror='carErrorImage(this);'/></span>";
	htmlStr += "	<span>" + airlineCode + " " + flightNo + "</span><br>";
	htmlStr += "	<span>"/* +depTimeMar 10, 2006 */+ "</span>";

	htmlStr += "</div>";
	htmlStr += "<div class='itinerarytxt2'>";
	htmlStr += "	<div class='labelheading'>" + airlineName + "</div>";
	htmlStr += "	<div style='clear:both;'>";

	htmlStr += "		<span class='itinerarytxttime'>" + DEPARTURE + "</span>";
	htmlStr += "		<span class='itinerarytxt'>"
			+ displayFormatDate(getDateFromAltovaFormat(depTime)) /* 09:05PM */
			+ "</span>";
	htmlStr += "		<span>" + originName + " (" + originCode + ")" + ""/*
																			 * Frankfurt,
																			 * Germany(FRA)
																			 */
			+ "</span>";

	htmlStr += "	</div>";
	htmlStr += "	<div style='clear:both;'>";

	htmlStr += "		<span class='itinerarytxttime'>" + ARRIVAL + "</span>";
	htmlStr += "		<span class='itinerarytxt'>"
			+ displayFormatDate(getDateFromAltovaFormat(arrTime)) + "</span>";
	htmlStr += "		<span>" + destName + " (" + destCode + ")" + ""/*
																		 * Frankfurt,
																		 * Germany(FRA)
																		 */
			+ "</span>";
	htmlStr += "	</div>";
	htmlStr += "	<div style='clear:both;'><span >" + equipType + " | "
			+ getTimeDisplayInHM(durLong) + " | " + cabinClass + "</span>";
	htmlStr += "<span id='seatselspan" + segmentDet.optionId() + "_"
			+ segmentDet.flightId() + "_" + segmentDet.segmentId() + "' >"
			+ alreadySelSeats + "</span>";
	htmlStr += "</div>";

	htmlStr += "</div>";

	htmlStr += "<div class='itinerarytxt3'>";

	var seatMapLink = "<a href='javascript:;' onclick='dhtmlSeatMap("
			+ seatMapCount + ",\"" + segmentDet.optionId() + "_"
			+ segmentDet.flightId() + "_" + segmentDet.segmentId()
			+ "\")' class='assignseat'>" + localizedStrings.assignSeat + "</a>";

	htmlStr += "	<br>" + seatMapLink + "<br>";
	if (totDur != 0) {
		htmlStr += "<span class='totaltraveltime'>" + TOTAL_TRAVEL_TIME
				+ "</span>&nbsp;";
		htmlStr += "	<span>" + getTimeDisplayInHM(totDur) + "</span>";
	}
	if (conDur != 0) {
		htmlStr += "<span class='connectiontime'>" + CONNECTION_TIME
				+ "</span>&nbsp;";
		htmlStr += "	<span>" + getTimeDisplayInHM(conDur) + "</span>";
	}
	htmlStr += "</div>";

	if ((count == 0) && showRemove) {
		htmlStr += "<div>";
		htmlStr += "	<span><img src='" + imageFolder
				+ "/IconDelete.gif' border='0' align='absmiddle'></span>&nbsp;";
		htmlStr += "	<span><a  href=\"javascript:confirmRemoveWindow('"
				+ FLIGHT_CONFIRM_MESS + "','" + subOrderNo
				+ "')\" class='redText'>" + REMOVE + " </a></span>";
		htmlStr += "</div>";
	}

	htmlStr += "</div>";
	return htmlStr;
}

/**
 * 
 * @param suborder
 * @return
 */
function getVillaHtml(villaSuborder) {
	return getHotelHtml(villaSuborder, true);
}

/**
 * 
 * @param hotelSuborder
 * @return
 */
function getHotelHtml(hotelSuborder, isVilla) {
	var subOrderNo = getSuborderRfNum(hotelSuborder);
	if (isVilla == false) {
		hotelsCharge = parseInt(hotelsCharge, 10)
				+ parseInt(getSuborderTotalPrice(hotelSuborder), 10) + "";
	} else {
		villasCharge = parseInt(villasCharge, 10)
				+ parseInt(getSuborderTotalPrice(hotelSuborder), 10) + "";
	}
	var hotelOrderInfo = get(hotelSuborder, NOD, "HotelOrderInfo");
	var hotelAddressInfo = get(hotelSuborder, NOD, "HotelAddressInfo");
	var hotelContactInfo = get(hotelSuborder, NOD, "HotelContactInfo");
	var hotelOtherInfo = get(hotelSuborder, NOD, "HotelOtherInfo");
	var pricePlan = get(hotelSuborder, NOD, "PricePlan");
	var roomRef = get(hotelSuborder, NOD, "RoomRef");
	var travelerDetails = get(hotelSuborder, NOD, "TravelerDetails");

	var chkinDate = displayFormatDateOnly(getDateFromAltovaFormat(get(
			hotelOrderInfo[0], ATT, "HBTCHKINDATE")));
	var chkouDate = displayFormatDateOnly(getDateFromAltovaFormat(get(
			hotelOrderInfo[0], ATT, "HBTCHKOUTDATE")));
	var hotelName = get(hotelAddressInfo[0], ATT, "HBTHOTELNAME");
	var hotelAddr = get(hotelAddressInfo[0], ATT, "HBTHOTELADDRESS1");
	
	var totRooms = roomRef.length;
	var hotImage = get(hotelOtherInfo[0], ATT, "HotelImageUrl");
      if(hotImage.indexOf("http")==-1)
		  hotImage="http://"+hotImage;

	var htmlStr = "";
	htmlStr += "<div class='itinerarydiv' >";
	htmlStr += "<div class='itinerarylogo'>";
	htmlStr += "	<span><img src='"
			+ hotImage
			+ "' width='75' height='75' onerror='carErrorImage(this);'/></span><br>";
	htmlStr += "	<span>" + (isVilla ? VILLA : HOTEL) + "</span><br><span>"
			+ chkinDate + "</span>";
	htmlStr += "</div>";
	htmlStr += "<div class='itinerarytxt2'>";
	htmlStr += "	<div class='labelheading'>" + hotelName + "</div>";
	htmlStr += "	<div  style='clear:both;'>" + hotelAddr + "</div><br>";
	htmlStr += "	<div style='clear:both;'>";
	htmlStr += "		<span class='itinerarytxttime'>" + CHECKIN + "</span>";
	htmlStr += "		<span class='itinerarytxt'>" + chkinDate + "</span>";
	htmlStr += "	</div>";
	htmlStr += "	<div style='clear:both;'>";
	htmlStr += "		<span class='itinerarytxttime'>" + CHECKOUT + "</span>";
	htmlStr += "		<span class='itinerarytxt'>" + chkouDate + "</span>";
	htmlStr += "	</div>";
	htmlStr += "</div>";
	htmlStr += "<div class='itinerarytxt3'>";
	htmlStr += "	<br><br><br><br>";
	htmlStr += "	<span class='totaltraveltime'>" + TOTAL_ROOMS
			+ "</span>&nbsp;";
	htmlStr += "	<span>" + totRooms + "</span>";
	htmlStr += "</div>";
	htmlStr += "<div>";

	var pnrVal = getSuborderPnrNum(hotelSuborder);

	if (pnrVal) {
		htmlStr += "	<span>" + PNR + "</span>&nbsp;";
		htmlStr += "	<span>" + pnrVal + "</span>";
	} else {
		htmlStr += "	<span><img src='"
				+ imageFolder
				+ "/IconDelete.gif' border='0' align='absmiddle'></span>&nbsp;<span>";
		htmlStr += "	<a  href=\"javascript:confirmRemoveWindow('"
				+ HOTEL_CONFIRM_MESS + "','" + subOrderNo
				+ "')\"  class='redText'>" + REMOVE + " </a></span>";
	}

	htmlStr += "</div>";
	htmlStr += "</div>";

	return htmlStr;
}

/**
 * 
 * @param tourSuborder
 * @return
 */
function getTourHtml(tourSuborder) {
	var tourDuration = "NA";
	var tourDetailNode = "";
	var tourLinkNode = "";
	var tourDate = "";

	var tourImageLinkNode = "";
	var subOrderNo = getSuborderRfNum(tourSuborder);
	toursCharge = parseFloat(toursCharge, 10)
			+ parseFloat(getSuborderTotalPrice(tourSuborder), 10) + "";

	var tourNode = get(tourSuborder, NOD, "Tour");
	var tourNameNode = get(tourNode[0], NOD, "TourName");
	var tourName = get(tourNameNode[0], NOV, "TourName");

	var tourCityNode = get(tourNode[0], NOD, "City");
	var tourCommence = get(tourCityNode[0], NOV, "CityName");

	if (tourNode[0].getElementsByTagName("Duration").length > 0
			&& tourNode[0].getElementsByTagName("Duration")[0].firstChild != null) {
		tourDuration = get(tourNode[0], NOV, "Duration");
	}
	var tourDetailsNode = get(tourNode[0], NOD, "TourDetails");
	if (tourDetailsNode.length > 0) {
		tourDetailNode = get(tourDetailsNode[0], NOD, "TourDetail");
	}
	if (tourDetailNode.length > 0) {
		tourLinkNode = get(tourDetailNode[0], NOD, "Link");
	}
	if (tourLinkNode.length > 0) {
		tourImageLinkNode = get(tourDetailNode[0], NOD, "ImageLink");
	}
	var tourImage = get(tourImageLinkNode[0], NOV, "Thumbnail");

	var tourEssentialNode = get(tourNode[0], NOD, "EssentialInfornation");
	var tourDateNode = get(tourEssentialNode[0], NOD, "TimeSpan");

	tourDate = get(tourDateNode[0], NOV, "StartDate");
	tourDate = displayFormatDateForTour(tourDate);
	var htmlStr = "";
	htmlStr += "<div class='itinerarydiv' >";
	htmlStr += "<div class='itinerarylogo'>";
	htmlStr += "	<span><img src='"
			+ tourImage
			+ "' width='75' height='75' onerror='carErrorImage(this);'/></span><br>";
	htmlStr += "	<span>Tours</span><br><span>" + tourDate + "</span>";
	htmlStr += "</div>";
	htmlStr += "<div class='itinerarytxt2'>";
	htmlStr += "	<div class='labelheading'>" + tourName + "</div>";

	htmlStr += "	<br><br><br>";
	htmlStr += "	<div style='clear:both;'>";
	htmlStr += "		<span class='itinerarytxttime'>" + COMMENCE + "</span>";
	htmlStr += "		<span style='float:left;'></span>";
	htmlStr += "		<span class='itinerarytxt'>" + tourCommence + "</span>";
	htmlStr += "	</div>";
	htmlStr += "	<div style='clear:both;'>";
	htmlStr += "		<span class='itinerarytxttime'>" + DURATION + "</span>";

	htmlStr += "		<span class='itinerarytxt'>" + tourDuration + "</span>";
	htmlStr += "	</div>";
	htmlStr += "</div>";
	htmlStr += "<div class='itinerarytxt3'>";
	htmlStr += "	<br><br><br><br>";
	htmlStr += "</div>";
	htmlStr += "<div>";

	var pnrVal = getSuborderPnrNum(tourSuborder);
	if (pnrVal) {
		htmlStr += "	<span>" + PNR + "</span>&nbsp;";
		htmlStr += "	<span>" + pnrVal + "</span>";
	} else {
		htmlStr += "	<span><img src='" + imageFolder
				+ "/IconDelete.gif' border='0' align='absmiddle'></span>&nbsp;";
		htmlStr += "	<span><a href=\"javascript:confirmRemoveWindow('"
				+ TOUR_CONFIRM_MESS + "','" + subOrderNo
				+ "')\" class='redText'>" + REMOVE + "  </a></span>";
	}

	htmlStr += "</div>";
	htmlStr += "</div>";
	return htmlStr;
}

/**
 * 
 * @param transferSuborder
 * @return
 */
function getTransferHtml(transfersSuborder) {
	var transfersDuration = "NA";
	var transfersDetailNode = "";
	var transfersLinkNode = "";
	var transfersDate = "";

	var transfersImageLinkNode = "";
	var subOrderNo = getSuborderRfNum(transfersSuborder);
	transfersCharge = parseInt(transfersCharge, 10)
			+ parseInt(getSuborderTotalPrice(transfersSuborder), 10) + "";

	var transferNode = get(transfersSuborder, NOD, "Transfer");
	var transferName = "";
	if (transferNode[0].getElementsByTagName("TransferType")[0] != null)
		transferName = get(transferNode[0], ATT, "ItemName"); // get(get(transferNode[0],
	// NOD,
	// "TransferType")[0],ATT,"Description");
	if (transferName == "") {
		transferName = TRANSFER;
	}
	var transferImage = "";
	var pickupDetails = get(
			get(transferNode[0], NOD, "PickUpReturnDetails")[0], NOD,
			"PickUpDetails");
	var transferDateTime = get(pickupDetails[0], ATT, "PickUpDate");
	var transferDate = transferDateTime.split("T")[0];
	transferDate = displayFormatDateForTour(transferDate);
	var transferCommence = get(transferNode[0], ATT, "CityName");
	var transferDuration = get(get(transferNode[0], NOD,
			"ApproximateTransferTime")[0], ATT, "Time");
	var htmlStr = "";
	htmlStr += "<div class='itinerarydiv' >";
	htmlStr += "<div class='itinerarylogo'>";
	htmlStr += "	<span><img src='"
			+ transferImage
			+ "' width='75' height='75' onerror='carErrorImage(this);'/></span><br>";
	htmlStr += "	<span>" + TRANSFER + "</span><br><span>" + transferDate
			+ "</span>";
	htmlStr += "</div>";
	htmlStr += "<div class='itinerarytxt2'>";
	htmlStr += "	<div class='labelheading'>" + transferName + "</div></br>";

	htmlStr += "	<div style='clear:both;'>";
	htmlStr += "		<span class=''>" + COMMENCE + "</span>";
	htmlStr += "		<span style='float:left;'></span>";
	htmlStr += "		<span class=''>" + transferCommence + "</span></br>";
	htmlStr += "	</div>";
	htmlStr += "	<div style='clear:both;'>";
	htmlStr += "		<span class='itinerarytxttime'>" + DURATION + "</span>";

	htmlStr += "		<span class='itinerarytxt'>" + transferDuration + "</span>";
	htmlStr += "	</div>";
	htmlStr += "		<br/>";
	htmlStr += "	<br>";
	htmlStr += "</div>";
	htmlStr += "<div class='itinerarytxt3'>";
	htmlStr += "	<br><br><br><br>";
	htmlStr += "</div>";
	htmlStr += "<div>";

	var pnrVal = getSuborderPnrNum(transfersSuborder);
	if (pnrVal) {
		htmlStr += "	<span>" + PNR + "</span>&nbsp;";
		htmlStr += "	<span>" + pnrVal + "</span>";
	} else {
		htmlStr += "	<span><img src='" + imageFolder
				+ "/IconDelete.gif' border='0' align='absmiddle'></span>&nbsp;";
		htmlStr += "	<span><a href=\"javascript:confirmRemoveWindow('"
				+ TOUR_CONFIRM_MESS + "','" + subOrderNo
				+ "')\" class='redText'>" + REMOVE + "  </a></span>";
	}
	htmlStr += "</div>";
	htmlStr += "</div>";
	return htmlStr;
}

/**
 * 
 * @param carSuborder
 * @return
 */
function getCarHtml(carSuborder) {

	var subOrderNo = getSuborderRfNum(carSuborder);
	carsCharge = parseInt(carsCharge, 10)
			+ parseInt(getSuborderTotalPrice(carSuborder), 10) + "";

	var carNode = get(carSuborder, NOD, "Car");
	var carItnInfNode = get(carNode[0], NOD, "CarItineraryInfo");
	var carDescNode = get(carNode[0], NOD, "CarDesc");

	var imgUrl = get(carDescNode[0], ATT, "CarImageUrl");
	// var pickUpDate = get(carItnInfNode[0], ATT, "CarPickUpDateTime");
	var vendorName = get(carItnInfNode[0], ATT, "CarVendorName");
	var pickUpLocation = get(carItnInfNode[0], ATT, "CarPickUpLocationName");
	var pickUpDateAndTime = get(carItnInfNode[0], ATT, "CarPickUpDateTime");
	var dropLocation = get(carItnInfNode[0], ATT, "CarDropLocationName");
	var dropDateAndTime = get(carItnInfNode[0], ATT, "CarDropDateTime");
	var carDesc = getCarDesc(carDescNode[0]);

	var htmlStr = "";
	htmlStr += "<div class='itinerarydiv' >";
	htmlStr += "<div class='itinerarylogo'>";
	htmlStr += "	<span><img src='"
			+ imgUrl
			+ "' width='75' height='50' onerror='carErrorImage(this);'/></span><br>";
	htmlStr += "	<span>" + CAR_RENT + "</span><br><span>"
			+ displayFormatDateOnly(getDateFromAltovaFormat(pickUpDateAndTime))
			+ "</span>"; // Mar 13, 2006
	htmlStr += "</div>";
	htmlStr += "<div class='itinerarytxt2'>";
	htmlStr += "	<div class='labelheading'>" + vendorName + "</div>";
	htmlStr += "	<div  style='clear:both;'>" + pickUpLocation + "</div><br>";// RHEIN
	// MAIN
	// AIRPORT,<br>Frankfurt,
	// 60549
	// DE
	htmlStr += "	<div style='clear:both;'>";
	htmlStr += "		<span class='itinerarytxttime'>" + PICKUP + "</span>";
	htmlStr += "		<span class='itinerarytxt'>"
			+ displayFormatDateTimeCar(getDateFromAltovaFormat(pickUpDateAndTime))
			+ "</span>"; // Mar 13, @ 12:40PM
	htmlStr += "		<span>" + pickUpLocation + "</span>";// Frankfurt,
	// Germany
	htmlStr += "	</div>";
	htmlStr += "	<div style='clear:both;'>";
	htmlStr += "		<span class='itinerarytxttime'>" + DROPOFF + "</span>";
	htmlStr += "		<span class='itinerarytxt'>"
			+ displayFormatDateTimeCar(getDateFromAltovaFormat(dropDateAndTime))
			+ "</span>";
	htmlStr += "		<span>" + dropLocation + "</span>";
	htmlStr += "	</div>";
	htmlStr += "</div>";
	htmlStr += "<div class='itinerarytxt3'>";
	htmlStr += "	<br><br><br><br>";
	htmlStr += "	<span>" + CAR_TYPE + "</span>";
	htmlStr += "	<span>" + carDesc + "</span>";// Economy
	htmlStr += "</div>";
	htmlStr += "<div>";

	var pnrVal = getSuborderPnrNum(carSuborder);
	if (pnrVal) {
		htmlStr += "	<span>" + PNR + "</span>&nbsp;";
		htmlStr += "	<span>" + pnrVal + "</span>";
	} else {
		htmlStr += "	<span><img src='" + imageFolder
				+ "/IconDelete.gif' border='0' align='absmiddle'></span>&nbsp;";
		htmlStr += "	<span><a href=\"javascript:confirmRemoveWindow('"
				+ CAR_CONFIRM_MESS + "','" + subOrderNo
				+ "')\" class='redText'>" + REMOVE + "  </a></span>";
	}

	htmlStr += "</div>";

	htmlStr += "</div>";
	return htmlStr;
}

function getCarDesc(carDescNode) {
	return get(carDescNode, ATT, "CarSizeDesc") + ", "
			+ get(carDescNode, ATT, "CarName");
}

/**
 * 
 * @return
 */
function getPriceBreakUpHtml() {

	var htmlStr = "";
	htmlStr += "<div class='itinerarydiv'>";
	htmlStr += "	<div class='pointybg'>";
	htmlStr += "	<div class='faresummary'>" + SUMMARY_CHARGES + "</div>";
	htmlStr += "		<br/><div style='margin-left:100px; clear:both;'>";
	var total = 0;
	if (parseInt(flightsCharge) != 0) {
		htmlStr += "	<div class='comodityType'>" + FLIGHT + "</div>";
		htmlStr += "	<div class='comodityTypevalue'>" + currency + "&nbsp;"
				+ flightsCharge + "</div>";
		//htmlStr += "	<div class='comodityTypevaluelabel'>" + TOTAL_FARE
		//		+ "</div>";
		htmlStr += "		<br/>";
		total += parseInt(flightsCharge);
	}
	if (parseInt(hotelsCharge) != 0) {
		htmlStr += "	<div class='comodityType'>" + HOTEL + "</div>";
		htmlStr += "	<div class='comodityTypevalue'>" + currency + "&nbsp;"
				+ hotelsCharge + "</div>";
		//htmlStr += "	<div class='comodityTypevaluelabel'>" + TOTAL_FARE
		//		+ "</div>";
		htmlStr += "		<br/>";
		total += parseInt(hotelsCharge);
	}
	if (parseInt(villasCharge) != 0) {
		htmlStr += "	<div class='comodityType'>" + VILLA + "</div>";
		htmlStr += "	<div class='comodityTypevalue'>" + currency + "&nbsp;"
				+ villasCharge + "</div>";
		//htmlStr += "	<div class='comodityTypevaluelabel'>" + TOTAL_FARE
		//		+ "</div>";
		htmlStr += "		<br/>";
		total += parseInt(villasCharge);
	}
	if (parseInt(carsCharge) != 0) {
		htmlStr += "	<div class='comodityType'>" + CAR_RENT + "</div>";
		htmlStr += "	<div class='comodityTypevalue'>" + currency + "&nbsp;"
				+ carsCharge + "</div>";
		//htmlStr += "	<div class='comodityTypevaluelabel'>" + TOTAL_FARE
		//		+ "</div>";
		htmlStr += "		<br/>";
		total += parseInt(carsCharge);
	}
	if (parseFloat(toursCharge) != 0) {
		htmlStr += "	<div class='comodityType'>" + TOUR + "</div>";
		htmlStr += "	<div class='comodityTypevalue'>" + currency + "&nbsp;"
				+ toursCharge + "</div>";
		//htmlStr += "	<div class='comodityTypevaluelabel'>" + TOTAL_FARE
		//		+ "</div>";
		htmlStr += "		<br/>";
		total += parseFloat(toursCharge);
	}
	if (parseFloat(transfersCharge) != 0) {
		htmlStr += "	<div class='comodityType'>" + TRANSFER + "</div>";
		htmlStr += "	<div class='comodityTypevalue'>" + currency + "&nbsp;"
				+ transfersCharge + "</div>";
		//htmlStr += "	<div class='comodityTypevaluelabel'>" + TOTAL_FARE
		//		+ "</div>";
		htmlStr += "		<br/>";
		total += parseFloat(transfersCharge);
	}
	htmlStr += "	<span class='totaltext comodityType'>" + TOTAL_FARE + "</span>";
	htmlStr += "	<span class='totaltext comodityTypevalue'>" + currency
			+ "&nbsp;" + total + "</span>";
	//htmlStr += "	<span class='totaltext comodityTypevaluelabel'>" + TOTAL_FARE
	//		+ "</span>";
	htmlStr += "</div>	</div>";
	htmlStr += "</div>";
	return htmlStr;
}

/**
 * 
 * @return
 */
function getShoppingCartFooter(showContinue) {
	var htmlStr = "";
	if (showContinue) {
		htmlStr += "<div class='itinerarydiv'>";
		htmlStr += "<div>";
		htmlStr += "	<span class='redbarleft'></span>";
		htmlStr += "	<span class='redbar'><a href='javascript:continueShopping()' class='redbar'>"
				+ COMPLETEBOOKING + "</a></span>";
		htmlStr += "	<span class='redbarright'></span>";
		htmlStr += "</div><br>&nbsp;&nbsp;";
		htmlStr += "<span>" + POINTS_WARNING + "</span><br><br>";
		htmlStr += "</div>";
	}
	htmlStr += "<div class='itinerarydiv'>";
	htmlStr += "<span><a href='javascript:discardCart()'"
			+ "  class='txtlebel'><b>" + RETURN_TO_SEARCH + "</b></a></span>";
	htmlStr += "&nbsp;&nbsp;&nbsp;<span></span><br><br><br><br>";

	htmlStr += "</div>";
	return htmlStr;

}

function continueShopping() {// RGK1

	showMask(MASK_CONTENT_DIVID);
	performBooking(ORDERNO);
}

function discardCart() {
	showMask(MASK_CONTENT_DIVID);
	window.location = getContextPath() + "/DiscardCart?page=" + RETURN_PAGE;
	return false;
}

function discardFlightAndContinue() {
	var SID = obj$(HIDDEN_FLIGHT_SUBORDER_ID).value;
	confirmRemoveWindowObj.hide();
	showMask(MASK_CONTENT_DIVID);

	var url = getContextPath() + "/ContinueBookingServlet";
	var params = "SID=" + SID;
	var suggestAjax = new myAjax(url, 'get', 'xml', {
		'params' :params,
		'callBack' :'handleRespPerformBooking'
	});
}

/**
 * 
 * @return
 */
function getShoppingCartHeader(isShoppingCartEmpty) {
	var htmlStr = "";

	htmlStr += "<div style='clear:both;'>";
	htmlStr += "<span class='headertxt'>" + ADD_ITIN + "</span><br>";
	htmlStr += "<span class='txtlebel'>" + GREAT_DEALS + "</span><br><br>";

	htmlStr += "<div class='itinerarydiv'>";
	htmlStr += "	<div class='itenerybg'>";
	htmlStr += "	<span class='sopingcard1'><img src='" + imageFolder
			+ "/shoppingcardupdn.gif'/></span>";

	htmlStr += "		<span class='sopingcard2'><b>" + BOOK_HOTEL + "</b><br><br>";

	htmlStr += "		<a href='"
			+ HOTEL_SEARCH_PAGE
			+ "'><img src='"
			+ imageFolder
			+ "/redarrow.gif' border='0' align='absmiddle'/><span class='redText'><b>"
			+ SEARCH + "<br></b></span></a>";
	htmlStr += "		</span>";
	/*htmlStr += "		<span class='sopingcard2'><b>" + BOOK_CAR_RENTAL
			+ "</b><br><br>";
	htmlStr += "		<a href='"
			+ CAR_SEARCH_PAGE
			+ "'><img src='"
			+ imageFolder
			+ "/redarrow.gif' border='0' align='absmiddle'/><span class='redText'><b>"
			+ SEARCH + "</b></span></a>";
	htmlStr += "		</span>";*/
	htmlStr += "		<span  class='sopingcard3'><b>" + BOOK_FLIGHT
			+ "</b><br><br>";
	htmlStr += "		<a href='"
			+ FLIGHT_SEARCH_PAGE
			+ "'><img src='"
			+ imageFolder
			+ "/redarrow.gif' border='0' align='absmiddle'/><span class='redText'><b>"
			+ SEARCH + "<br></b></span></a>";

	htmlStr += "		</span>";
	/*htmlStr += "			<span  class='sopingcard3'><b>" + BOOK_TOURSNXFERS
			+ "</b><br><br>";
	htmlStr += "		<a href='"
			+ TOURSANDTRANSFERS_SEARCH_PAGE
			+ "'><img src='"
			+ imageFolder
			+ "/redarrow.gif' border='0' align='absmiddle'/><span class='redText'><b>"
			+ SEARCH + "<br></b></span></a>";
	htmlStr += "		</span>";*/
	htmlStr += "	</div>";
	htmlStr += "</div>";
	htmlStr += "<hr><p/>";

	if (isShoppingCartEmpty) {
		htmlStr += "<span class='headertxt'>" + CART_EMPTY_MESSAGE + "</span>";
	} else {
		htmlStr += "<span class='headertxt'>" + YOUR_ITIN + "</span>";
	}
	htmlStr += "</div>";

	return htmlStr;
}

function getShoppingCartEmptyHtml() {

	var htmlStr = "";
	htmlStr += getShoppingCartHeader(true);
	htmlStr += getSolidDividerHtml();
	htmlStr += getShoppingCartFooter(false);
	return htmlStr;
}

/**
 * 
 * @param suborders
 * @return
 */
function getShoppingCartHtml(suborders) {

	var htmlStr = "";

	suborderArray = creArr(get(suborders, NOD, "Suborder"));

	suborderArray = filterBySuborder(suborderArray);

	suborderArray.sort(sortByTime);// Sort Suborders Chronologically

	var isFlightPresent = isFlightItemPresent(suborderArray);

	var nonFlightSuborderAvailable = false;

	htmlStr += getShoppingCartHeader(false);
	htmlStr += getSolidDividerHtml();

	for ( var s = 0; s < suborderArray.length; s++) {
		var oneSuborder = suborderArray[s];
		switch (getChannelID(oneSuborder)) {
		case CHANNELID_AIRLINE:
			// Air
			htmlStr += getAirlineSingleFlightHtml(oneSuborder);
			htmlStr += getSolidDividerHtml();
			break;
		case CHANNELID_HOTEL:
			// Hotel
			htmlStr += getHotelHtml(oneSuborder, false);
			htmlStr += getSolidDividerHtml();
			nonFlightSuborderAvailable = true;
			break;
		case CHANNELID_VILLA:
			// Villa
			htmlStr += getVillaHtml(oneSuborder);
			htmlStr += getSolidDividerHtml();
			nonFlightSuborderAvailable = true;
			break;
		case CHANNELID_CAR:
			// Car
			htmlStr += getCarHtml(oneSuborder);
			htmlStr += getSolidDividerHtml();
			nonFlightSuborderAvailable = true;
			break;
		case CHANNELID_TOURS:
			// Tour
			htmlStr += getTourHtml(oneSuborder);
			htmlStr += getSolidDividerHtml();
			nonFlightSuborderAvailable = true;
			break;
		case CHANNELID_TRANSFERS:
			// Transfer
			htmlStr += getTransferHtml(oneSuborder);
			htmlStr += getSolidDividerHtml();
			nonFlightSuborderAvailable = true;
			break;
		default:
			break;
		}
	}
	if (nonFlightSuborderAvailable) {
		// this will show 'Discard Flight and Continue' button, only in case
		// there is other Non-Flight suborder available.
		makePriceChangeUnavailableDivVisible();

	}
	htmlStr += getPriceBreakUpHtml();
	htmlStr += getSolidDividerHtml();
	htmlStr += getShoppingCartFooter(true);

	return htmlStr;
}

function makePriceChangeUnavailableDivVisible() {
	obj$('PriceChangeflightDiscard').style.display = 'block';
	obj$('PriceChangeflightDiscard').style.visibility = 'visible';
	obj$('AvailflightDiscard').style.display = 'block';
	obj$('AvailflightDiscard').style.visibility = 'visible';
}

function isFlightItemPresent(suborderArray) {

	var isFlight = false;
	for ( var s = 0; s < suborderArray.length; s++) {
		var oneSuborder = suborderArray[s];
		switch (getChannelID(oneSuborder)) {
		case CHANNELID_AIRLINE:
			// Air
			isFlight = true;
			break;

		}

	}
	return isFlight;

}

/**
 * 
 * @param arr
 * @return
 */
function creArr(arr) {
	var narr = new Array();
	for ( var i = 0; i < arr.length; i++) {
		narr[i] = arr[i];
	}
	return narr;
}

/**
 * 
 * @param a
 * @param b
 * @return
 */
function sortByTime(a, b) {
	var timea = getTime(a);
	var timeb = getTime(b);
	if (timea > timeb) {
		return 1;
	} else {
		return -1;
	}
}

/**
 * 
 * @param suborder
 * @return
 */
function getTime(suborder) {
	switch (getChannelID(suborder)) {
	case CHANNELID_AIRLINE:
		return getDateFromAltovaFormat(get(get(
				get(suborder, NOD, "Airline")[0], NOD, "ItineraryInfo")[0],
				ATT, "ITNDEPTTIME"));
		break;
	case CHANNELID_HOTEL:
		return getDateFromAltovaFormat(get(get(get(suborder, NOD, "Hotel")[0],
				NOD, "HotelOrderInfo")[0], ATT, "HBTCHKINDATE"));
		break;
	case CHANNELID_VILLA:
		return getDateFromAltovaFormat(get(get(get(suborder, NOD, "Villa")[0],
				NOD, "HotelOrderInfo")[0], ATT, "HBTCHKINDATE"));
		break;
	case CHANNELID_CAR:
		return getDateFromAltovaFormat(get(get(get(suborder, NOD, "Car")[0],
				NOD, "CarItineraryInfo")[0], ATT, "CarPickUpDateTime"));
		break;
	case CHANNELID_TOURS:
		return getDateFormatTour(get(get(get(get(suborder, NOD, "Tour")[0],
				NOD, "EssentialInfornation")[0], NOD, "TimeSpan")[0], NOV,
				"StartDate"));
		break;
	case CHANNELID_TRANSFERS:
		return getDateFromAltovaFormat(get(get(get(get(suborder, NOD,
				"Transfer")[0], NOD, "PickUpReturnDetails")[0], NOD,
				"PickUpDetails")[0], ATT, "PickUpDate"));
		break;
	default:
		return "0";// return
		// getTimeInSortFormat(get(get(get(suborder,NOD,"Airline")[0],NOD,"ItineraryInfo")[0],ATT,"ITNDEPTTIME"));
		break;
	}
}

/**
 * 
 * @param altDateTimeStr
 * @return
 */
function getDateFromAltovaFormat(altDateTimeStr) {
	var dateObj = new Date();
	var defaultFormat = "yyyy-MM-ddTHH:mm:ss";
	if (altDateTimeStr.indexOf("Z") != -1) {
		defaultFormat += "Z";
	}
	dateObj.setTime(getDateFromFormat(altDateTimeStr, defaultFormat));
	return dateObj;
}

function getDateFormatTour(altDateTimeStr) {
	var dateObj = new Date();
	var defaultFormat = "dd-MM-yyyy";
	dateObj.setTime(getDateFromFormat(altDateTimeStr, defaultFormat));
	return dateObj;
}

/**
 * returns Formatted time string eg. input '12:23:0Z' returns 1223 input
 * '01:23:0Z' returns 123
 * 
 * @param timeToFormat -
 *            unformatted time string
 * @return
 */
function processTime(timeToFormat) {
	var splitArr = timeToFormat.split(":");
	return splitArr[0] + ":" + splitArr[1];
}

/**
 * 
 * @param parentNode
 *            -Parent Xml Dom Node
 * @param type -
 *            1->Node 2->Node Value 3->Node Attribute
 * @param name -
 *            tag name OR attribute name
 * @return
 */
function get(parentNode, type, name) {
	switch (type) {
	case NOD:
		return parentNode.getElementsByTagName(name);
		break;
	case ATT:
		return parentNode.getAttribute(name);
		break;
	case NOV:
		return parentNode.getElementsByTagName(name)[0].childNodes[0].nodeValue;
		break;
	default:
		alert("arg 'type' required for tag/attrib-> " + name);
		break;
	}
}

/**
 * 
 * @param message
 * @param suborderID
 * @return
 */
function confirmRemoveWindow(message, suborderID) {
	confirmRemoveWindowObj = dhtmlmodal
			.open(
					'confdiv',
					'div',
					CONFIRM_MESSAGE_DIV,
					CONFIRM_REMOVAL,
					'title=1,close=1,drag=0,width=300px,height=150px,left=150px,top=100px,resize=0,scrolling=0,center=1');
	setDivValue$(VAR_MESSAGE_SPAN, message);
	// alert(suborderID)//Rohan
	setValue$(HIDDEN_SUB_FIELDID, suborderID);

}

/**
 * 
 * @param val
 * @return
 */
function confirmAction(val) {
	confirmRemoveWindowObj.hide();
	if (val == "YES") {
		showMask(MASK_CONTENT_DIVID);
		removeSuborder();
		genHTML();
		hideMask();
	}

}

/**
 * Remove suborder without ajax
 * 
 * @return
 */
/*
 * function removeSuborder() { //alert("1 "+getValue$(HIDDEN_SUBCSV_FIELDID));
 * var sid = getValue$(HIDDEN_SUB_FIELDID); var csv =
 * getValue$(HIDDEN_SUBCSV_FIELDID); if (csv == "") { csv = sid; } else { if
 * (!isSubOrderInCSV(sid, csv)) { csv += "," + sid; } }
 * setValue$(HIDDEN_SUBCSV_FIELDID, csv); setValue$(HIDDEN_SUB_FIELDID, "");
 * //alert("2 "+getValue$(HIDDEN_SUBCSV_FIELDID)); }
 */

/**
 * Remove suborder with ajax
 */
function removeSuborder() {
	var sid = getValue$(HIDDEN_SUB_FIELDID);
	updateCart(sid);
}

/**
 * 
 * @param suborderArray
 * @return
 */
function filterBySuborder(suborderArray) {
	var csv = getValue$(HIDDEN_SUBCSV_FIELDID);
	if (csv && csv != "") {
		for ( var x = 0; x < suborderArray.length; x++) {
			if (isSubOrderInCSV(getSuborderRfNum(suborderArray[x]), csv)) {
				suborderArray.splice(x, 1);
			}
		}
	}
	return suborderArray;
}

/**
 * 
 * @param suborderid
 * @param csv
 * @return
 */
function isSubOrderInCSV(suborderid, csv) {
	var sarr = csv.split(",");
	if (sarr.length > 0) {
		for ( var s = 0; s < sarr.length; s++) {
			if (sarr[s] == suborderid) {
				return true;
			}
		}
	}
}

/**
 * 
 * @param suborder
 * @return
 */
function getSuborderRfNum(suborder) {
	return get(get(suborder, NOD, "SubOrderInfo")[0], ATT, "PSTRFNUM");
}

/**
 * 
 * @param suborder
 * @return
 */
function getSuborderTotalPrice(suborder) {
	return get(get(suborder, NOD, "PriceInfo")[0], ATT, "PSTPAYABLEPRICE");
}

/**
 * 
 * @param oneSuborder
 * @return
 */
function getChannelID(oneSuborder) {
	return parseInt(get(get(oneSuborder, NOD, "SubOrderInfo")[0], ATT,
			"PSTCNDCHANNELID"), 10);
}

/**
 * 
 * @param suborder
 * @return
 */
function getSuborderPnrNum(suborder) {
	var pnr = get(suborder, NOD, "Pnr")[0];
	var pnrInfo = get(pnr, NOD, "PNRInfo")[0];
	var pnrNum = get(pnrInfo, ATT, "PSTPNRNUM");
	var gdsPnrNum = get(pnrInfo, ATT, "PSTGDSPNRNUM");
	if (pnrNum != null && pnrNum != "")
		return pnrNum;
	else if (gdsPnrNum != null && gdsPnrNum != "")
		return gdsPnrNum;
	else
		return null;
}

/**
 * 
 * @param value
 * @return
 */
function updateCart(value) {
	var url = getContextPath() + "/UpdateCart";
	var params = "SID=" + value;
	var suggestAjax = new myAjax(url, 'get', 'text', {
		'params' :params,
		'callBack' :'handleRespUpdateCart'
	}); // myAjax.js
}

/**
 * 
 * @param xmlResponse
 * @return
 */
function handleRespUpdateCart(xmlResponse) {
	if (xmlResponse && xmlResponse != "") {
		orderDetailXml = xmlResponse;
		orderDetailXmlDom = null;
		resetPrice();
		genHTML();
		setValue$(HIDDEN_SUB_FIELDID, "");// reset hidden suborder
	}
}

/**
 * 
 * @param value
 * @return
 */
function performBooking(val) {
	
	var url = getContextPath() + "/ContinueBooking";
	var params = "orderNo=" + ORDERNO;
	var suggestAjax = new myAjax(url, 'post', 'xml', {
		'params' :params,
		'callBack' :'handleRespPayment'
	});
	

}



function handleRespPayment(){

	hideMask();

    window.location = "./enterSSL.jsp";

}
/**
 * 
 * @param xmlResponse
 * @return
 * 
 * Eg. <b>Case 1: <i>Price Change</i></b> <BookingResponse> <BookingHold
 * NewPrice="23233.22" Currency="USD"/> </BookingResponse>
 * 
 * <b>Case 2: <i>Error With Message</i></b> <BookingResponse> <BookingError
 * ErrorCode="121" ErrorDesc="Avail Fail" /> </BookingResponse>
 * 
 * <b>Case 3: <i>Booking Successful</i></b> <BookingResponse> <Booking
 * Success/> </BookingResponse>
 * 
 */
function handleRespPerformBooking(xmlResponse) {
	if (xmlResponse && xmlResponse != null) {
		alert("hi")
		if (get(xmlResponse, NOD, "BookingHold").length > 0) {
			var currL;
			var npriceL;
			var bookHoldVar = get(xmlResponse, NOD, "BookingHold")[0];
			currL = get(bookHoldVar, ATT, "Currency");
			npriceL = get(bookHoldVar, ATT, "NewPrice");
			flightSearchUrl = get(get(xmlResponse, NOD, "BookingHold")[0], ATT,
					"SearchUrl");
			setValue$(HIDDEN_FLIGHTURL, flightSearchUrl);
			confirmRemoveWindowObj = dhtmlmodal
					.open(
							'confPriceChangediv',
							'div',
							PRICECHANGE_MESSAGE_DIV,
							PRICECHANGE_HEADERMESSAGE,
							'title=1,close=1,drag=0,width=400px,height=150px,left=150px,top=100px,resize=0,scrolling=0,center=1,close=0');
			setDivValue$(VAR_PRICECHANGE_MESSAGE_SPAN,
					PRICECHANGE_HEADERMESSAGE + " : " + currL + " " + npriceL);
		} else if (get(xmlResponse, NOD, "AvailBookingError").length > 0) {
			flightSearchUrl = get(
					get(xmlResponse, NOD, "AvailBookingError")[0], ATT,
					"SearchUrl");
			setValue$(HIDDEN_FLIGHTURL, flightSearchUrl);
			confirmRemoveWindowObj = dhtmlmodal
					.open(
							'confPriceChangediv',
							'div',
							AVAILFAIL_MESSAGE_DIV,
							AVAILFAIL_HEADERMESSAGE,
							'title=1,close=1,drag=0,width=400px,height=150px,left=150px,top=100px,resize=0,scrolling=0,center=1');
			setDivValue$(VAR_AVAILFAIL_MESSAGE_SPAN, AVAILFAIL_HEADERMESSAGE);
		} else if (get(xmlResponse, NOD, "BookingError").length > 0) {
			window.location = getContextPath()
					+ "/ProceedToConfirmation?orderNo=" + ORDERNO + "&status=0";
		} else if (get(xmlResponse, NOD, "BookingSuccess").length > 0) {
			window.location = getContextPath()
					+ "/ProceedToConfirmation?orderNo=" + ORDERNO + "&status=1";
		} else {
			window.location = getContextPath()
					+ "/ProceedToConfirmation?orderNo=" + ORDERNO + "&status=0";
		}
	}
}

/**
 * 
 * @return
 */
function getContextPath() {

	var pathname = window.location.pathname;
	var contextPath = pathname.substring(0, pathname.indexOf("/faces"))
			+ "/faces";
	return contextPath;
}

function resetPrice() {
	flightsCharge = "0";
	hotelsCharge = "0";
	villasCharge = "0";
	carsCharge = "0";
	toursCharge = "0";
	transfersCharge = "0";
}

/*
 * Accepts a String represntation of the time duration in long format Returns a
 * String for Displaying the flight Duration eg. input - '14400000' , output -
 * '04h00m' eg. input - '2100000' , output - '35m'
 */
function getTimeDisplayInHM(durationStr) {
	var timeDiff = parseFloat(durationStr);
	var days = 0;
	var hour = 0;
	var mins = 0;
	days = parseInt(timeDiff / (60 * 1000 * 60 * 24));
	timeDiff = (timeDiff % (60 * 1000 * 60 * 24));

	hour = parseInt(timeDiff / (60 * 1000 * 60));
	timeDiff = (timeDiff % (60 * 1000 * 60));

	mins = parseInt(timeDiff / (60 * 1000));
	var displayStr = "";
	if (days > 0) {
		displayStr = getDoubleLetterdStr(days) + "days" + " "
				+ getDoubleLetterdStr(hour) + "h" + getDoubleLetterdStr(mins)
				+ "m";
	} else if (hour > 0) {
		displayStr = getDoubleLetterdStr(hour) + "h"
				+ getDoubleLetterdStr(mins) + "m";

	} else {
		displayStr = getDoubleLetterdStr(mins) + "m";

	}
	return displayStr;
}

/*
 * Accepts a number and returns a String with 0 prepended if the number is one
 * digit eg. input(Integer) - 1 , output(String) = '01' input - 12, output =
 * '12'
 */
function getDoubleLetterdStr(val) {
	if (val == 0) {
		return "00";
	} else if (val < 10) {
		return "0" + val;
	}
	return "" + val;
}

function displayFormatDateForTour(dateStr) {
	return formatDate(parseDate(dateStr, "d-M-y"), "NNN, dd yyyy");
}

function changeFlight() {
	confirmRemoveWindowObj.hide();
	var srchurl = getValue$(HIDDEN_FLIGHTURL);
	if (srchurl) {
		srchurl = "."
				+ srchurl
						.substring(srchurl.indexOf("/jsp") + 4, srchurl.length);
	} else {
		srchurl = "./flightSearch.jsp";
	}
	showMask(MASK_CONTENT_DIVID);
	window.location = srchurl;

}

function continueBookingErr() {
	showMask(MASK_CONTENT_DIVID);
	window.location = getContextPath() + "/ProceedToConfirmation?orderNo="
			+ ORDERNO + "&status=0";
}

function continueBookingPriceChange() {
	confirmRemoveWindowObj.hide();
	showMask(MASK_CONTENT_DIVID);
	continueShopping();

}

/**
 * For Testing
 * 
 * @return
 */
function clickMe1() {
	confirmRemoveWindowObj = dhtmlmodal
			.open(
					'confPriceChangediv',
					'div',
					PRICECHANGE_MESSAGE_DIV,
					PRICECHANGE_HEADERMESSAGE,
					'title=1,close=1,drag=0,width=400px,height=150px,left=150px,top=100px,resize=0,scrolling=0,center=1,close=0');
	setDivValue$(VAR_PRICECHANGE_MESSAGE_SPAN, PRICECHANGE_HEADERMESSAGE);
}

/**
 * For Testing
 * 
 * @return
 */
function clickMe2() {
	confirmRemoveWindowObj = dhtmlmodal
			.open(
					'confPriceChangediv',
					'div',
					AVAILFAIL_MESSAGE_DIV,
					AVAILFAIL_HEADERMESSAGE,
					'title=1,close=1,drag=0,width=400px,height=150px,left=150px,top=100px,resize=0,scrolling=0,center=1');
	setDivValue$(VAR_AVAILFAIL_MESSAGE_SPAN, AVAILFAIL_HEADERMESSAGE);
}

/**
 * Segmentdetails Array for SeatMap
 */
var segmentDetailForSeatMapArray = new Array();
var segde = 0;
/**
 * for SeatMap
 * 
 * @return
 */
function SegmentDetailForSeatMap() {
	var optionIdL = "0";
	var flightIdL = "0";
	var segmentIdL = "0";
	var flightNoL = "";
	var departAirportCodeL = "";
	var departCityL = "";
	var arrAirportCodeL = "";
	var arrivalCityL = "";
	var aircraftL = "";
	var airlineL = "";
	var optAirlineL = "";
	var rfNumL = "";

	this.optionId = getOptionIdL;
	this.flightId = getFlightIdL;
	this.segmentId = getSegmentIdL;
	this.flightNo = getFlightNoL;
	this.departAirportCode = getDepartAirportCodeL;
	this.departCity = getDepartCityL;
	this.arrAirportCode = getArrAirportCodeL;
	this.arrivalCity = getArrivalCityL;
	this.aircraft = getAircraftL;
	this.airline = getAirlineL;
	this.optAirline = getOptAirlineL;
	this.rfNum = getRfNumL;

	this.setOptionId = setOptionIdL;
	this.setFlightId = setFlightIdL;
	this.setSegmentId = setSegmentIdL;
	this.setFlightNo = setFlightNoL;
	this.setDepartAirportCode = setDepartAirportCodeL;
	this.setDepartCity = setDepartCityL;
	this.setArrAirportCode = setArrAirportCodeL;
	this.setArrivalCity = setArrivalCityL;
	this.setAircraft = setAircraftL;
	this.setAirline = setAirlineL;
	this.setOptAirline = setOptAirlineL;
	this.setRfNum = setRfNumL;

	function setRfNumL(rf) {
		rfNumL = rf;
	}

	function getRfNumL() {
		return rfNumL;
	}

	function setAirlineL(al) {
		airlineL = al;
	}

	function setOptAirlineL(oal) {
		optAirlineL = oal;
	}

	function setDepartAirportCodeL(da) {
		departAirportCodeL = da;
	}

	function setDepartCityL(dc) {
		departCityL = dc;
	}

	function setArrAirportCodeL(aac) {
		arrAirportCodeL = aac;
	}

	function setArrivalCityL(ac) {
		arrivalCityL = ac
	}

	function setAircraftL(et) {
		aircraftL = et;
	}

	function getAirlineL() {
		return airlineL;
	}

	function getOptAirlineL() {
		return optAirlineL;
	}

	function getDepartAirportCodeL() {
		return departAirportCodeL;
	}

	function getDepartCityL() {
		return departCityL;
	}

	function getArrAirportCodeL() {
		return arrAirportCodeL;
	}

	function getArrivalCityL() {
		return arrivalCityL;
	}

	function getAircraftL() {
		return aircraftL;
	}

	function setOptionIdL(opt) {
		optionIdL = opt;
	}
	function getOptionIdL() {
		return optionIdL;
	}
	function setFlightIdL(fl) {
		flightIdL = fl;
	}
	function getFlightIdL() {
		return flightIdL;
	}
	function setSegmentIdL(se) {
		segmentIdL = se;
	}
	function getSegmentIdL() {
		return segmentIdL;
	}
	function setFlightNoL(fn) {
		flightNoL = fn;
	}
	function getFlightNoL() {
		return flightNoL;
	}
}

/**
 * 
 * @return
 */
function getAirDetailXmlDom() {
	if (!airDetailXmlDom) {
		airDetailXmlDom = getXmlDom(airDetailXml, 1);
	}
	return airDetailXmlDom;
}

function populateSegmentDetailForSeatMapArray(itnArr) {

	if (airDetailXml && airDetailXml != null && airDetailXml != ""
			&& airDetailXml != "null") {
		segde=0;
		var airDetailXmlDomLocal = getAirDetailXmlDom();
		var optionArr = get(airDetailXmlDomLocal, NOD,
				"OriginDestinationOption");
		for ( var op = 0; op < optionArr.length; op++) {
			var optionx = get(optionArr[op], ATT, "OptionID");
			var flightsArr = get(optionArr[op], NOD, "FlightResult");
			for ( var fl = 0; fl < flightsArr.length; fl++) {
				var flightId = get(flightsArr[fl], ATT, "FlightResultID");
				var segmentArr = get(flightsArr[fl], NOD, "FlightSegment");
				for ( var segId = 0; segId < segmentArr.length; segId++) {
					var segmentId = segId + '';// get(segmentArr[segId],ATT,"SegmentID");

					var OriginLocation = get(segmentArr[segId], NOD,
							"OriginLocation");
					var airportCodeforOrigin = get(OriginLocation[0], ATT,
							"AirportCode");
					var cityCodeforOrigin = get(OriginLocation[0], ATT,
							"CityCode");

					var destLoc = get(segmentArr[segId], NOD,
							"DestinationLocation");
					var airportCodeforDestination = get(destLoc[0], ATT,
							"AirportCode");
					var cityCodeforDestination = get(destLoc[0], ATT,
							"CityCode");

					var flDetail = get(segmentArr[segId], NOD, "FlightDetails");
					var aircraftType = get(flDetail[0], ATT, "AircraftType");
					var flightCode = get(flDetail[0], ATT, "FlightCode");
					var airlineCode = get(flDetail[0], ATT,
							"MarketingAirlineCode");
					var airlineCodeOp = get(flDetail[0], ATT,
							"OperatingAirlineCode");
					var itnRfNumK = "";
					if (itnArr && itnArr.length > 0) {
						for ( var itnc = 0; itnc < itnArr.length; itnc++) {
							var oneItn = itnArr[itnc];
							var itnInfo = get(oneItn, NOD, "ItineraryInfo")[0];
							var itnOtherInfo = get(oneItn, NOD,
									"ItineraryOtherInfo")[0];

							var originL = get(itnInfo, ATT, "ITNSOURCE");
							var destL = get(itnInfo, ATT, "ITNDEST");
							var aircraftTypeL = get(itnInfo, ATT,
									"ITNEQUIPMENTTYPE");
							var flightCodeL = get(itnInfo, ATT, "ITNFLIGHTNO");
							var airlineCodeL = get(itnOtherInfo, ATT,
									"ITNAIRLINECODE");
							var itnRfNumL = get(itnInfo, ATT, "ITNREFNUM");

							if (flightCodeL == flightCode
									&& airlineCodeL == airlineCode
									&& originL == airportCodeforOrigin
									&& destL == airportCodeforDestination) {
								itnRfNumK = itnRfNumL;
								break;
							}
						}
					}

					var segmentDetailForSeatMap = new SegmentDetailForSeatMap();
					segmentDetailForSeatMap.setOptionId(optionx);
					segmentDetailForSeatMap.setFlightId(flightId);
					segmentDetailForSeatMap.setSegmentId(segmentId);
					segmentDetailForSeatMap.setFlightNo(flightCode);
					segmentDetailForSeatMap.setAirline(airlineCode);
					segmentDetailForSeatMap.setOptAirline(airlineCodeOp);
					segmentDetailForSeatMap
							.setDepartAirportCode(airportCodeforOrigin);
					segmentDetailForSeatMap.setDepartCity(cityCodeforOrigin);
					segmentDetailForSeatMap
							.setArrAirportCode(airportCodeforDestination);
					segmentDetailForSeatMap
							.setArrivalCity(cityCodeforDestination);
					segmentDetailForSeatMap.setAircraft(aircraftType);
					segmentDetailForSeatMap.setRfNum(itnRfNumK);
					segmentDetailForSeatMapArray[segde++] = segmentDetailForSeatMap;
				}
			}
		}
	}
}

function getSeatsForItnIfAvail(itnrf, paxDetArr) {
	var str = "";
	for ( var sx = 0; sx < paxDetArr.length; sx++) {
		var paxSeatTagArr = get(paxDetArr[sx], NOD, "PASSENGERSEAT");
		if (paxSeatTagArr && paxSeatTagArr.length > 0) {
			for ( var sx1 = 0; sx1 < paxSeatTagArr.length; sx1++) {
				if (itnrf == get(paxSeatTagArr[sx1], ATT, "ItnRefNum")) {
					if (str == "") {
						str = get(paxSeatTagArr[sx1], ATT, "SeatNo");
					} else {
						str += "," + get(paxSeatTagArr[sx1], ATT, "SeatNo");
					}
				}
			}
		}
	}
	if (str != "") {
		str = " | " + LABEL_SEATS_CART + ": " + str;
	}
	return str;
}
