
var gIntQtyMinTicket = 0;
var gIntQtyMaxTicket = 10;
var gIntQtyMinHotel = 0;
var gIntQtyMaxHotel = 10;
var gIntQtyMinRestaurant = 0;
var gIntQtyMaxRestaurant = 10;
var gIntQtyMinAttraction = 0;
var gIntQtyMaxAttraction = 10;

//var gIntMaxHotelTypes = 3;
//var gIntMaxRestaurantTypes = 1;
var gIntMaxOptionColumns = 3;

var gStrPleaseWait = "Please wait...";
var gStrPleaseSelect = "Please select...";
var gStrErrorOccured = "Error occured.";
var gStrNoAvailTicket = "No available tickets.";
var gStrSelectDate = "Please select a performance date.";
var gStrNoAvailSeats = "No available seats.";
var gStrNoAvailDate = "No available dates.";
var gStrNoAvailHotel = "No available hotels.";
var gStrNoAvailRestaurant = "No available restaurants.";
var gStrNoAvailAttraction = "No available attractions.";
var gStrNoReservation = "Reservation is not available.";
var gStrNoAvailDespatch = "No available collection method.";
var gStrDespatchMessageCollectionOnly = "As the performance you have chosen is within 30 days, please pick up your ticket(s) at the Show's Box Office on the day of the performance, two hours prior to the show.";
var gStrDespatchMessageNormal = "Please choose one of the collection methods below then select &quot;Next&quot;";
var gStrClassFirstOption = "firstOption";
var gStrClassWait = "wait";
var gStrClassEmpty = "empty";
var gStrClassNormal = "normal";
//var gTimerValue = "01:00";
var gBtnCancel = "btnCancel";
var gBtnReserve = "btnReserveSeats";
//var gStrInterval = null;
var gDatesResponse = null;
var gDinnerResponse = null;
var gStayResponse = null;
var gAttractionResponse = null;
var objType = new Object;

var Buttons = new Object();
Buttons.btnReserveSeats = "../images/buttons/find_my_seats.png";
Buttons.btnReserveSeatsGrey = "../images/buttons/find_my_seats_grey.png";
/*Buttons.btnYes = "../images/yes.png";
Buttons.btnYesGrey = "../images/buttons/yes_grey.gif";
Buttons.btnNo = "../images/buttons/no.gif";
Buttons.btnNoGrey = "../images/buttons/no_grey.gif";*/
Buttons.btnSkipRestaurant = "../images/buttons/skip_rest.png";
Buttons.btnSkipRestaurantGrey = "../images/buttons/skip_rest_grey.png";
Buttons.btnSkipHotel = "../images/buttons/skip_hotel.png";
Buttons.btnSkipHotelGrey = "../images/buttons/skip_hotel_grey.png";
Buttons.btnSkipAttraction = "../images/buttons/skip_attraction.png";
Buttons.btnSkipAttractionGrey = "../images/buttons/skip_attraction_grey.png";
Buttons.btnAddReservation = "../images/buttons/add_reservation.png";
Buttons.btnAddReservationGrey = "../images/buttons/add_reservation_grey.png";
Buttons.btnOk = "../images/buttons/ok.png";
Buttons.btnOkGrey = "../images/buttons/ok_grey.png";

objType.Ticket = 1;
objType.Restaurant = 2;
objType.Hotel = 3;
objType.Attraction = 4;

var oCurrentProcess = objType.Ticket;

var Tickets = new Object();
Tickets.New = function()	{
	this.IsSubmitted = false;
	this.Count = 0;
	this.Items = new Array();
	this.Total = 0;
}

var TicketItem = new Object();
TicketItem.New = function()	{
	this.ID = "";
	this.Type = "";
	this.Description = "";
	this.Quantity = 0;
	this.Price = 0;
}

var OptionItem = new Object();
OptionItem.New = function()	{
	this.ID = "";
	this.Date = "";
	this.Time = "";
	this.Qty = 0;
	this.Price = 0;
	this.Type = "";
	this.Description = "";
	this.CheckoutDate = "";
	//new hotel code **************************************************
	//*****************************************************************
	this.AvailDates = new Array();
	//*****************************************************************
	//*****************************************************************
}

var Restaurant = new Object();
Restaurant.New = function()	{
	this.IsSubmitted = false;
	this.IsSkipped = false;
	this.IsMandatory = false;
	this.ShoID = 0;
	this.VenID = "";
	this.Items = new Array();
	this.Total = 0;
}

var Hotel = new Object();
Hotel.New = function()	{
	this.IsSubmitted = false;
	this.IsSkipped = false;
	this.IsMandatory = false;
	this.ShoID = 0;
	this.VenID = "";
	this.Items = new Array();
	this.Total = 0;

	//new hotel code **************************************************
	//*****************************************************************
	this.Days = 1;
	this.RoomsSelected = false;
	this.BookedDates = new Array();
	this.iDatesComplete = 1;
	this.Year = 0;
	//*****************************************************************
	//*****************************************************************
}

var Attraction = new Object();
Attraction.New = function() {
	this.IsSubmitted = false;
	this.IsSkipped = false;
	this.IsMandatory = false;
	this.ShoID = 0;
	this.VenID = "";
	this.Items = new Array();
	this.Total = 0;

//	//new attraction code **************************************************
//	//*****************************************************************
//	this.Days = 1;
//	this.RoomsSelected = false;
//	this.BookedDates = new Array();
//	this.iDatesComplete = 1;
//	this.Year = 0;
//	//*****************************************************************
//	//*****************************************************************
}

var Insurance = new Object();
Insurance.New = function(){
	this.Count = 0;
	this.IsSubmitted = false;
	this.Items = new Array();
	this.Total = 0;
	this.SelectedIndex = -1;
}

var Despatch = new Object();
Despatch.New = function()	{
	this.Count = 0;
	this.IsSubmitted = false;
	this.Items = new Array();
	this.Total = 0;
	this.SelectedIndex = -1;
}

var DespatchItem = new Object();
DespatchItem.New = function()	{
	this.Description = "";
	this.Code = "";
	this.Price = 0;
	this.ShortDescription = "";
}

var RestSessions = new Object();
RestSessions.New = function()	{
	this.Items = new Array();
}

var AttractionSessions = new Object();
AttractionSessions.New = function() {
    this.Items = new Array();
}

var OptionSessionItem = new Object();
OptionSessionItem.New = function()	{
	this.PerIndex = 0;
	this.PerTime = "";
}

var SelectedItem = new Object();
SelectedItem.New = function()	{
	this.ID = "";
	this.Qty = 0;
}

var SelectedItems = new Object();
SelectedItems.New = function()	{
	this.Items = new Array();
	this.ToString = function()	{
		var i, strID = "", strQty = "";
		
		for (i = 0; i < this.Items.length; i++)	{
			if (strID != "") { strID += ","; }
			strID += this.Items[i].ID;

			if (strQty != "") { strQty += ","; }
			strQty += this.Items[i].Qty;
		}
		
		if (strID == "")	{
			return ("");
		}
		else	{
			return ("id=" + encodeURI(strID) + "&qty=" + strQty);
		}
	}
	this.Add = function(sID, sQty)	{
		var i, count, bFound = false;
		
		count = this.Items.length;
		for (i = 0; i < count; i++)	{
			if (this.Items[i].ID == sID)	{
				this.Items[i].Qty = parseInt(this.Items[i].Qty, 10) + parseInt(sQty, 10);
				bFound = true;
			}
		}
		if (!bFound)	{
			this.Items[count] = new SelectedItem.New();
			this.Items[count].ID = sID;
			this.Items[count].Qty = parseInt(sQty, 10);
		}
	}
}

addEvent(window, "load", showbizBodyOnLoad);

function showbizBodyOnLoad()	{
	var loader = new net.ContentLoader(gSitePath + "deepClearBasket.aspx", true, BodyOnLoadRemoveAllCompleted);
	
	Tickets.New();
	Hotel.New();
	Restaurant.New();
	Attraction.New();
	Insurance.New();
	Despatch.New();
}

function BodyOnLoadRemoveAllCompleted()	{
//	alert ("cleared.");
}

function getResponseXML(objXML) {
    if (objXML) {
        if (objXML.documentElement)	{
		    return objXML.documentElement;
		}
	}
	alert("There was an error occurred while processing your request. It is most likely that your browser session has been timed out.\nWe are now restarting your session.");
	
	var strXml = "<?xml version=\"1.0\" ?>" +
				"<dummys>" +
					"<dummy>" +
						"<item>Dummy</item>" +
					"</dummy>" +
				"</dummys>";

	reloadPage();
	
	return convertToXML(strXml);
}

function convertToXML(sXML)	{
	var xmlDoc;
	
	if (document.implementation && document.implementation.createDocument) {
		xmlDoc = document.implementation.createDocument("", "doc", null);
	}
	else	{
		// Build XMLDOM object and establish "onload" event for MSIE
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	}
	xmlDoc.async = false;
	xmlDoc.load(sXML);
	
	return xmlDoc;
}

function handleErrorClearCart()	{
	var loader = new net.ContentLoader(gSitePath + "deepClearBasket2.aspx", true, BodyOnLoadRemoveAllCompleted);
}

function handleError(objResponse, context) {
    var objError = objResponse.getElementsByTagName('error');
    var objMsgBox, objFrame, objMsg;
    var strError;
    context = context ? context : '';
    
	if (objError) {
		if (objError.length > 0) {
		    //objMsgBox = getMsgBox();
			//if (objMsgBox) {
			//	document.body.appendChild(objMsgBox);
			//	objFrame = getMsgBoxIEpatch(objMsgBox.style.top, objMsgBox.style.left, objMsgBox.clientHeight, objMsgBox.clientWidth);
			//	document.body.appendChild(objFrame);
			//	objMsg = MM_findObj("divMsg");
			//	strError = "<div class='divErrorMsg'>" + objError[0].childNodes[0].firstChild.nodeValue + "</div>";
			//	if (objError[0].childNodes[1] && objError[0].childNodes[1].firstChild)	{
			//		strError += "<div class='divSupport'>Support</div><div class='divSupportMsg'>" + objError[0].childNodes[1].firstChild.nodeValue + "</div>";
		    //	}
		        strError = objError[0].childNodes[0].firstChild.nodeValue;
    		    
			    if (objError[0].childNodes[1] && objError[0].childNodes[1].firstChild) {
				    strError += "\n\n" + objError[0].childNodes[1].firstChild.nodeValue;
			    }
			    // manual override of an error message
			    if (strError.indexOf("the requested quantities for the selected dates are unavailable") != -1) {
			        if (context != 'hotel') strError = "Unfortunately, we don't have the requested number of seats available for this performance.\nPlease choose another date.";
			        else strError = "The number of rooms you selected are not available, please lower the number of rooms you are booking";
			    }
			    if (strError.indexOf("Items on offer in the current booking contain multiple currencies") != -1) {
			        strError = "Sorry, an error has occurred. Please call us at  1300 4 SHOWS (or 1300 4 74697) and a member of our customer care team will be able to help you continue your request.";
			    }
			    alert(strError.replace(/<br.*>/,"\n"));
    			
			    // clear all reserved item if it is in Ticket selection when there is an error.
			    if (oCurrentProcess == objType.Ticket)	{
				    handleErrorClearCart();
			    }
		    //	objMsg.innerHTML = strError;
		    //}
		    return true;
        }
		
	}
	return false;
}

function getSetAsideCodesFetchCompleted()	{
    var response = getResponseXML(this.req.responseXML);

	if (!handleError(response))	{
		gDatesResponse = response;
		DateFetchCompleted("show");
	}
	else	{
		gDatesResponse = null;
	}
}
// END of Set aside code for each Show

// executed when user choose a date from the dropdownlist
function gotoDate(iPerIndex)  {
	var tblTicket = MM_findObj("tblAvailTicket");

	clearTable(tblTicket, false, true);
	Tickets.New();
	
	var loader = new net.ContentLoader(gSitePath + "deepShowDatesCombo.aspx?type=" + objType.Ticket + "&pi=" + iPerIndex, true, gotoDateCompleted);
}

function gotoDateRemoveAllCompleted()	{}

function gotoDateCompleted()	{
	var response = getResponseXML(this.req.responseXML);
	var objPrice = response.getElementsByTagName("prices");
	var tblTicket = MM_findObj("tblAvailTicket");
	var trTicketTotal = MM_findObj("TicketTotal");
	var tdReserve = MM_findObj("tdReserveButton");
//	var timer = MM_findObj("spanTimer");
	var i, j;
	var tr, td, input, span, qty, img, a;
	var lnkPackInfo = MM_findObj("lnkPackInfo");
	var blnOk = false;
	
    if (!handleError(response))	{
		if (objPrice)	{
			if (objPrice.length > 0)	{
				clearTable(tblTicket, false, false);
				blnOk = true;

				tblTicket = tblTicket.tBodies[0];
				for (i = 0, j = 0; i < objPrice[0].childNodes.length; i++)	{
					if (objPrice[0].childNodes[i].nodeType == 1)	{
						Tickets.Items[j] = new TicketItem.New();
						tr = createObj("tr");
						// Empty Column
						td = createObj("td");
						td.innerHTML = "&nbsp;";
						tr.appendChild(td);
						// Type column
						td = createObj("td");
						Tickets.Items[j].Type = objPrice[0].childNodes[i].childNodes[0].firstChild.nodeValue;
						td.innerHTML = Tickets.Items[j].Type;
						td.className = "rPadding";
						tr.appendChild(td);
						// Description column
						td = createObj("td");
						Tickets.Items[j].Description = objPrice[0].childNodes[i].childNodes[1].firstChild.nodeValue;
						td.innerHTML = Tickets.Items[j].Description;
						tr.appendChild(td);
						// I icon column
						a = createObj("a");
						a.href = lnkPackInfo.href;
						img = createObj("img");
						img.border = "0";
						if (lnkPackInfo.className == "hide")	{
						    //img.src = "../images/icon_info_grey.gif";
							img.src = "../images/spacer.gif";
						}
						else	{
						    img.src = "../images/icon_info.gif";
						}
						a.appendChild(img);
						td = createObj("td");
						td.appendChild(a);
						tr.appendChild(td);
						// Quantity column
						td = createObj("td");
						Tickets.Items[j].Quantity = parseInt(objPrice[0].childNodes[i].childNodes[4].firstChild.nodeValue, 10);
						qty = renderQtyDropdownList("idQty" + j, gIntQtyMinTicket, gIntQtyMaxTicket, calcTicketTotal, Tickets.Items[j].Quantity);
						qty.className = "TicketQuantity";
						td.appendChild(qty);
						tr.appendChild(td);
						// x column
						td = createObj("td");
						td.innerHTML = "x";
						tr.appendChild(td);
						// Cost column
						td = createObj("td");
						Tickets.Items[j].Price = unformatCurrency(objPrice[0].childNodes[i].childNodes[2].firstChild.nodeValue, objCurrency.Symbol, objCurrency.Text);
						td.innerHTML = objPrice[0].childNodes[i].childNodes[2].firstChild.nodeValue;
						tr.appendChild(td);
						// = column
						td = createObj("td");
						td.innerHTML = "=";
						tr.appendChild(td);
						// Total column
						td = createObj("td");
						td.id = "tdTotal" + j;
						td.align = "left";
						td.innerHTML = formatCurrency(0, objCurrency.Symbol);
						tr.appendChild(td);
						// Empty Column
						td = createObj("td");
						td.innerHTML = "&nbsp;";
						tr.appendChild(td);
						// save ID in array
						Tickets.Items[j].ID = objPrice[0].childNodes[i].childNodes[3].firstChild.nodeValue;
						// add row to the table
						//tblTicket.appendChild(tr);
						tblTicket.insertBefore(tr, trTicketTotal);
						// add empty row
						tr = createObj("tr");
						td = createObj("td");
						td.colSpan = 10;
						td.className = "spacer";
						tr.appendChild(td);
						// add spacer row to the table
						//tblTicket.appendChild(tr);
						tblTicket.insertBefore(tr, trTicketTotal);

						j++;
					}
				}
				
//				timer.innerHTML = gTimerValue;
				calculateTicketTotal(null);
			}
		}
	}
	if (!blnOk)	{
		clearTable(tblTicket, true, false);
	}
}

function getVenueInfo(sShoID, sVenID)	{
	var loader = new net.ContentLoader(gSitePath + "venue-information.aspx?sid=" + sShoID + "&vid=" + sVenID, true, getVenueInfoCompleted);
}

function getVenueInfoCompleted()	{
	var response = getResponseXML(this.req.responseXML);
	var objVenue = response.getElementsByTagName("Venue");
	var sUrl = "";
	var sSmallImg = "", sLargeImg = "", sPDFDoc = "";

	if (objVenue && objVenue.length > 0)	{
		if (objVenue[0].childNodes[0] && objVenue[0].childNodes[0].firstChild)	{
			sUrl = objVenue[0].childNodes[0].firstChild.nodeValue;
		}
		if (objVenue[0].childNodes[1] && objVenue[0].childNodes[1].firstChild)	{
			sSmallImg = sUrl + objVenue[0].childNodes[1].firstChild.nodeValue;
		}
		if (objVenue[0].childNodes[2] && objVenue[0].childNodes[2].firstChild)	{
			sLargeImg = sUrl + objVenue[0].childNodes[2].firstChild.nodeValue;
		}
		if (objVenue[0].childNodes[3] && objVenue[0].childNodes[3].firstChild)	{
			sPDFDoc = sUrl + objVenue[0].childNodes[3].firstChild.nodeValue;
		}
	}
	setVenueInfo(false, sSmallImg, sLargeImg, sPDFDoc);
}

function checkPackInfo(iShoID, iPerIndex)  {
    var loader = new net.ContentLoader(gSitePath + "package-information.aspx?shoID=" + iShoID + "&perIndex=" + iPerIndex + "&rt=1", true, checkPackInfoCompleted);
}

function checkPackInfoCompleted()	{
	var response = getResponseXML(this.req.responseXML);
	var objPack = response.getElementsByTagName("Return");
	var objUrl = response.getElementsByTagName("URL");
	var objNewWin = response.getElementsByTagName("IsNewWin");
	var sUrl = "", bNewWin = false;
	var bFound = false;

	if (objPack && objPack.length > 0)	{
		if (objPack[0].childNodes[0] && objPack[0].childNodes[0].firstChild)	{
			if (objPack[0].childNodes[0].firstChild.nodeValue == "1")	{
				if (objUrl && objUrl.length > 0)	{
					if (objUrl[0].childNodes[0] && objUrl[0].childNodes[0].firstChild)	{
						sUrl = objUrl[0].childNodes[0].firstChild.nodeValue;
					}
				}
				if (objNewWin && objNewWin.length > 0)	{
					if (objNewWin[0].childNodes[0] && objNewWin[0].childNodes[0].firstChild)	{
						bNewWin = (objNewWin[0].childNodes[0].firstChild.nodeValue == "1");
					}
				}
				setPackInfo(true,sUrl,bNewWin);
				bFound = true;
			}
		}
	}
	if (!bFound)	{
		setPackInfo(false,"",false);
	}
}

function calcTicketTotal()	{
	if (this.id)	{
		objQty = MM_findObj(this.id);
	}
	else	{
		objQty = MM_findObj(event.srcElement.id);
	}
	calculateTicketTotal(objQty);
}

function calculateTicketTotal(objQty)	{
	var tbTotalPrice = MM_findObj("spanTicketPrice");
	var objTotal;
	var i, sngTotal = 0;
	var id = -1;

	if (objQty)	{
		id = parseInt(objQty.id.replace("idQty", ""), 10);
		Tickets.Items[id].Quantity = objQty.value;
	}
	for (i = 0; i < Tickets.Items.length; i++)	{
		objTotal = MM_findObj("tdTotal" + i);
		if (i == id)	{
			objTotal.innerHTML = formatCurrency(Tickets.Items[id].Quantity * Tickets.Items[id].Price, objCurrency.Symbol);
		}
		sngTotal += Tickets.Items[i].Quantity * Tickets.Items[i].Price;
	}
	tbTotalPrice.innerHTML = formatCurrency(sngTotal, objCurrency.Symbol) + " " + objCurrency.Text;

	calculateGrandTotal();
}

function calcRestaurantTotal()	{
	if (this.id)	{
		objQty = MM_findObj(this.id);
	}
	else	{
		objQty = MM_findObj(event.srcElement.id);
	}
	calculateRestaurantTotal(objQty);
}

function calculateRestaurantTotal(objQty)	{
	var tbTotalPrice = MM_findObj("spanRestaurantTotalPrice");
	var objTotal;
	var i, sngTotal = 0;
	var id = -1;
	
	if (objQty)	{
		id = parseInt(objQty.id.replace("idRestaurantQty", ""), 10);
		Restaurant.Items[id].Qty = objQty.value;
	}
	for (i = 0; i < Restaurant.Items.length; i++)	{
		objTotal = MM_findObj("tdRestaurantTotal" + i);
		if (i == id)	{
			objTotal.innerHTML = formatCurrency(Restaurant.Items[id].Qty * Restaurant.Items[id].Price, objCurrency.Symbol);
		}
		sngTotal += Restaurant.Items[i].Qty * Restaurant.Items[i].Price;
	}
	tbTotalPrice.innerHTML = formatCurrency(sngTotal, objCurrency.Symbol) + " " + objCurrency.Text;

	calculateGrandTotal();
}

function calcAttractionTotal() {
    if (this.id) {
        objQty = MM_findObj(this.id);
    }
    else {
        objQty = MM_findObj(event.srcElement.id);
    }
    calculateAttractionTotal(objQty);
}

function calculateAttractionTotal(objQty) {
    var tbTotalPrice = MM_findObj("spanAttractionTotalPrice");
    var objTotal;
    var i, sngTotal = 0;
    var id = -1;
    var test1, test2;
    
    if (objQty) {
        id = parseInt(objQty.id.replace("idAttractionQty", ""), 10);
        Attraction.Items[id].Qty = objQty.value;
    }
    for (i = 0; i < Attraction.Items.length; i++) {
        objTotal = MM_findObj("tdAttractionTotal" + i);
        if (i == id) {
            objTotal.innerHTML = formatCurrency(Attraction.Items[id].Qty * Attraction.Items[id].Price, objCurrency.Symbol);
        }
        //new Attraction code **************************************************
        //*****************************************************************
        //sngTotal += Attraction.Items[i].Qty * Attraction.Items[i].Price * Attraction.Days;
        test1 = Attraction.Items[i].Qty;
        test2 = Attraction.Items[i].Price;
        sngTotal += Attraction.Items[i].Qty * Attraction.Items[i].Price;
        //*****************************************************************
        //*****************************************************************
    }
    tbTotalPrice.innerHTML = formatCurrency(sngTotal, objCurrency.Symbol) + " " + objCurrency.Text;

    calculateGrandTotal();
}

function calcHotelTotal()	{
	if (this.id)	{
		objQty = MM_findObj(this.id);
	}
	else	{
		objQty = MM_findObj(event.srcElement.id);
	}
	calculateHotelTotal(objQty);
}

function calculateHotelTotal(objQty)	{
	var tbTotalPrice = MM_findObj("spanHotelTotalPrice");
	var objTotal;
	var i, sngTotal = 0;
	var id = -1;
	
	if (objQty) {
	    id = parseInt(objQty.id.replace("idHotelQty", ""), 10);
	    Hotel.Items[id].Qty = objQty.value;
	}
	for (i = 0; i < Hotel.Items.length; i++)	{
		objTotal = MM_findObj("tdHotelTotal" + i);
		if (i == id)	{
			objTotal.innerHTML = formatCurrency(Hotel.Items[id].Qty * Hotel.Items[id].Price, objCurrency.Symbol);
		}
		//new hotel code **************************************************
		//*****************************************************************
		sngTotal += Hotel.Items[i].Qty * Hotel.Items[i].Price * Hotel.Days;
		//*****************************************************************
		//*****************************************************************
	}
	tbTotalPrice.innerHTML = formatCurrency(sngTotal, objCurrency.Symbol) + " " + objCurrency.Text;

	calculateGrandTotal();
}

function renderQtyDropdownList(strID, intMin, intMax, event, intDefault)	{
	var objSelect = createObj("select", strID);
	var i, j;
	
	objSelect.id = strID;
	addEvent(objSelect, "change", event);
	for (i = intMin, j = 0; i <= intMax; i++)	{
		objSelect.options[j] = new Option(i, i);
		if (i == intDefault)	{
			objSelect.options[j].selected = true;
		}
		j++;
	}
	return objSelect;
}

function clearTable(objTable, blnShowError, blnShowWait, blnInitial)	{
	var tblTicket;
	var tr, td, trTableHeader;
	var trTicketTotal, trRestTotal, trHotelDates, trAttractionTotal;
	var i, j;

	tblTicket = objTable.tBodies[0];
	trTicketTotal = findRow(tblTicket, "TicketTotal");
	trRestTotal = findRow(tblTicket, "RestTotal");
	trHotelDates = findRow(tblTicket, "HotelDates");
	trAttractionTotal = findRow(tblTicket, "AttractionTotal");

	if (tblTicket)	{
		for (i = tblTicket.childNodes.length - 1; i >= 0; i--)	{
			if (tblTicket.childNodes[i].nodeType == 1)	{
				tr = tblTicket.childNodes[i];
				if (!(tr.getAttribute("class") == "TableHeader" || tr.getAttribute("className") == "TableHeader") && (tr.getAttribute("id") != "TicketTotal" && tr.getAttribute("id") != "RestTotal" && tr.getAttribute("id") != "HotelTotal" && tr.getAttribute("id") != "HotelDates" && tr.getAttribute("id") != "AttractionTotal" && tr.getAttribute("id") != "AttractionDates")) {
					tr.parentNode.removeChild(tr);
				}
			}
		}
	}
	if (blnShowError || blnShowWait || blnInitial)	{
		tr = createObj("tr");
		td = createObj("td");
		if (objTable.id == "tblAvailTicket")	{
			td.innerHTML = "&nbsp;";
			tr.appendChild(td);
			td = createObj("td");
			td.colSpan = "9";
		}
		else	{
			td = createObj("td");
		}
		if (blnShowWait)	{
			td.className = gStrClassWait;
			td.innerHTML = gStrPleaseWait;
		}
		if (blnShowError)	{
			td.className = gStrClassEmpty;
			td.innerHTML = gStrNoAvailTicket;
		}
		if (blnInitial)	{
			td.className = gStrClassEmpty;
			td.innerHTML = gStrSelectDate
		}
		tr.appendChild(td);
		if (objTable.id == "tblAvailTicket")	{
			if (trTicketTotal)	{
				tblTicket.insertBefore(tr, trTicketTotal);
			}
			else	{
				tblTicket.appendChild(tr);
			}
			// add empty row
			tr = createObj("tr");
			td = createObj("td");
			td.colSpan = 10;
			td.className = "spacer";
			tr.appendChild(td);
			// add spacer row to the table
			if (trTicketTotal)	{
				tblTicket.insertBefore(tr, trTicketTotal);
			}
			else	{
				tblTicket.appendChild(tr);
			}
		}
		if (objTable.id == "tblAvailRestaurant")	{
			if (trRestTotal)	{
				tblTicket.insertBefore(tr, trRestTotal);
			}
			else	{
				tblTicket.appendChild(tr);
			}
			// add empty row
			tr = createObj("tr");
			td = createObj("td");
			td.colSpan = 9;
			td.className = "spacer";
			tr.appendChild(td);
			// add spacer row to the table
			if (trRestTotal)	{
				tblTicket.insertBefore(tr, trRestTotal);
			}
			else	{
				tblTicket.appendChild(tr);
			}
		}
		if (objTable.id == "tblAvailHotel") {
		    if (trHotelDates) {
		        tblTicket.insertBefore(tr, trHotelDates);
		    }
		    else {
		        tblTicket.appendChild(tr);
		    }
		    // add empty row
		    tr = createObj("tr");
		    td = createObj("td");
		    td.colSpan = 9;
		    td.className = "spacer";
		    tr.appendChild(td);
		    // add spacer row to the table
		    if (trHotelDates) {
		        tblTicket.insertBefore(tr, trHotelDates);
		    }
		    else {
		        tblTicket.appendChild(tr);
		    }
		}
		if (objTable.id == "tblAvailAttraction") {
		    if (trAttractionDates) {
		        tblTicket.insertBefore(tr, trAttractionDates);
		    }
		    else {
		        tblTicket.appendChild(tr);
		    }
		    // add empty row
		    tr = createObj("tr");
		    td = createObj("td");
		    td.colSpan = 9;
		    td.className = "spacer";
		    tr.appendChild(td);
		    // add spacer row to the table
		    if (trAttractionDates) {
		        tblTicket.insertBefore(tr, trAttractionDates);
		    }
		    else {
		        tblTicket.appendChild(tr);
		    }
		}
	}
}

function findRow(objTBody, sID)	{
	var obj = null;
	var i;
	
	for (i = 0; i < objTBody.childNodes.length; i++) {
		if (objTBody.childNodes[i].id == sID) {
			obj = objTBody.childNodes[i];
		}
	}
	return obj;
}

function removeAllCompleted() {}

function reserveSeatRemoveAllCompleted() {
	alert("Seats are released.");
}

function switchSteps(iStep)	{
	var divStep = MM_findObj("steps");
	//var divTimer = MM_findObj("timer");
	
	var aSteps = ["step_one","step_two","step_three"];
	
	if(iStep > 0 && iStep <= aSteps.length){
		divStep.className = aSteps[iStep-1];
	}
    /*
	if (iStep == 1)	{
		//divTimer.style.display = "none";
		divStep.className = "step_one";
	}
	else	{
		//divTimer.style.display = "block";
		if (iStep == 2)	{
			divStep.className = "step_two";
		}
		else if (iStep == 3)	{
			divStep.className = "step_three";
		}
	}
    */
}

function splitDateTime(sDateTime)	{
	var arrDateTime;
	var sDate, sTime;
	
	arrDateTime = sDateTime.split("-");
	if (arrDateTime[0]) sDateTime = trim(arrDateTime[0]);
	arrDateTime = sDateTime.split(",");
	if (arrDateTime[0])	sDate = trim(arrDateTime[0]);
	if (arrDateTime[1]) sTime = trim(arrDateTime[1]);
	
	return (new Array(sDate, sTime));
}

/*
function tickTimer()	{
	var span = MM_findObj("spanTimer");
	var btnReserve = MM_findObj("btnReserve");
	var sTime, sPart;
	var iMin, iSec;
	
	if (span)	{
		sTime = span.innerHTML;
		sPart = sTime.split(":");
		if (sPart.length == 2)	{
			iMin = parseInt(sPart[0], 10);
			iSec = parseInt(sPart[1], 10);
			if (iSec == 0)	{
				if (iMin > 0)	{
					iSec = 59;
					iMin--;
				}
			}
			else	{
				iSec--;
			}
			if (iSec == 0 && iMin == 0)	{
				//span.className = "timeout";
				clearInterval(gStrInterval);
				gStrInterval = null;
				//btnReserve.className = gBtnReserve;
				//reloadPage();
				NewWindow("PopupTimeout.aspx","Timeout",528,260,"no");
			}
*/
			/* end of testing */
/*			span.innerHTML = padZero(iMin,2) + ":" + padZero(iSec,2);
		}
	}
}
*/

function getOneStar() {
	var img = createObj("img");
	img.src = "../images/icon_star.png";
	return (img);
}

function getOneStar2() {
	var img = createObj("img");
	img.src = "../images/icon_star.png";
	return (img);
}

function getHalfStar() {
	var img = createObj("img");
	img.src = "../images/icon_star_half.png";
	return (img);
}

function getHalfStar2()	{
	var img = createObj("img");
	img.src = "../images/icon_star_half.png";
	return (img);
}

function showContainerMsg(objDiv, strMsg, strClass) {
    var div1;

    clearContainer(objDiv);

    div1 = createObj("div");
    div1.className = strClass;
    div1.innerHTML = strMsg;

    objDiv.appendChild(div1);
}

function clearContainer(objDiv) {
    var i;

    for (i = 0; i < objDiv.childNodes.length; i++) {
        objDiv.removeChild(objDiv.childNodes[i]);
    }
    objDiv.innerHTML = "";
}

function getHotelReservation() {
	var strID;
	var objItems;
	var div1 = MM_findObj("divHotelDesc");
	var div3 = MM_findObj("divHotelAddress");
	var div4 = MM_findObj("divHotelAddress2");
	var img1 = MM_findObj("imgStaySee");
	var img2 = MM_findObj("imgStaySee2");
	var objBold, objText;
	var objHotel, div, rating;
	var objID;
	var i, j;
	var shoID = null, venID = null;
	
	Hotel.Items = new Array();
	setDivVisibility("divHotelSelectAnother", false);
	setDivVisibility("divHotelButtonContainer", true);
	switchDivVisibility("divStaySeeInstruction", "divStaySeeInstruction2", true);
	setDivVisibility("divHotelShowError", false);

	if (gStayResponse) {
		if (this.id) {
			objID = this.id;
		}
		else {
			objID = findIDUpwards(event.srcElement, "Hotel_");
			objID = objID.id;
		}
		strID = objID.replace("Hotel_", "");
		objItems = gStayResponse.getElementsByTagName("item");
		if (objItems && objItems.length) {
			setDivVisibility("divHotelSelectionPane", false);
			setDivVisibility("divHotelSelectionPaneMsg", true, gStrPleaseWait, gStrClassWait);

			for (i = 0; i < objItems.length; i++) {
				objHotel = MM_findObj("Hotel_" + i);
				objHotel.className = objHotel.className.replace(" selected", "");
				if (i == parseInt(strID, 10)) {
					objHotel.className += " selected";
					if (img1) {
						if (objItems[i].childNodes[5].firstChild && objItems[i].childNodes[5].firstChild.nodeValue != "")	{
							img1.src = imageDir + "thumbnail/" + objItems[i].childNodes[5].firstChild.nodeValue;
						}
						else {
							img1.src = "../images/spacer.gif";
						}
						if (img2) {
							img2.src = img1.src;
						}
					}
					if (div1) {
						clearContainer(div1);
						// Hotel Description
						if (objItems[i].childNodes[6]) {
							objText = createObj("span");
							objText.innerHTML = objItems[i].childNodes[6].firstChild.nodeValue;
							div1.appendChild(objText);
						}
					}
					if (div3) {
						clearContainer(div3);
						clearContainer(div4);
						span = createObj("span");
						span.className = "title2";
						// Hotel Title
						if (objItems[i].childNodes[2])	{
							span.innerHTML = objItems[i].childNodes[2].firstChild.nodeValue;
						}
						div3.appendChild(span);
						div4.appendChild(span.cloneNode(true));
						div = createObj("div");
						div.className = "space5";
						div3.appendChild(div);
						div4.appendChild(div.cloneNode(true));
						// Hotel Rating
						div = createObj("div");
						if (objItems[i].childNodes[9] && objItems[i].childNodes[9].firstChild)	{
							rating = parseFloat(objItems[i].childNodes[9].firstChild.nodeValue);
							for (j = 0; j < Math.floor(rating); j++) {
								div.appendChild(getOneStar2());
							}
							if (rating > Math.floor(rating)) {
								div.appendChild(getHalfStar2());
							}
						}
						div3.appendChild(div);
						div4.appendChild(div.cloneNode(true));

						// Hotel Address
						if (objItems[i].childNodes[3] && objItems[i].childNodes[3].firstChild)	{
							objText = createObj("span");
							objText.innerHTML = objItems[i].childNodes[3].firstChild.nodeValue;
							div3.appendChild(objText);
							div4.appendChild(objText.cloneNode(true));
						}

						div = createObj("div");
						div.className = "space10";
						div.innerHTML = "&nbsp;";
						div3.appendChild(div);

						// more information
						a = createObj("a");
						//a.href = sFrontSiteUrl + "StaySeeDetail.aspx?hid=" + encodeURIComponent(objItems[i].childNodes[10].firstChild.nodeValue);
						a.href = "javascript:NewWindow('PopupMoreInfo.aspx?hid=" + objItems[i].childNodes[1].firstChild.nodeValue + "','MoreInfo',660,600,'yes')";
						//a.target = "_blank";
						a.innerHTML = "More information";
						div3.appendChild(a);
						div3.appendChild(createObj("br"));

						// View Location link
						if (objItems[i].childNodes[4] && objItems[i].childNodes[4].firstChild)	{
							a = createObj("a");
							a.href = objItems[i].childNodes[4].firstChild.nodeValue;
							a.target = "_blank";
							a.innerHTML = "View location";
							div3.appendChild(a);
						}
					}
					if (objItems[i].childNodes[1] && objItems[i].childNodes[1].firstChild)	{
						shoID = objItems[i].childNodes[1].firstChild.nodeValue;
					}
					if (objItems[i].childNodes[8] && objItems[i].childNodes[8].firstChild)	{
						venID = objItems[i].childNodes[8].firstChild.nodeValue;
					}
				}
			}
		}
	}
	if (shoID && venID)	{
		Hotel.ShoID = shoID;
		Hotel.VenID = venID;
		var loader = new net.ContentLoader(gSitePath + "deepTicketSetSession.aspx?sid=" + shoID + "&ven=" + venID + "&type=" + objType.Hotel, true, getHotelReservationCompleted);
	}
}

function getHotelReservationCompleted()	{
	var response = getResponseXML(this.req.responseXML);
	var objTotal = MM_findObj("spanHotelTotalPrice");
	var tblAvailHotel = MM_findObj("tblAvailHotel");
	//var trHotelTotal = MM_findObj("HotelTotal");

	//new hotel code **************************************************
	//*****************************************************************
	var trHotelDates = MM_findObj("HotelDates");
	//var inHotDateIn = MM_findObj("hotDateIn");
	//var inHotDateOut = MM_findObj("hotDateOut");
	var inHotDateIn = MM_findObj('ctl00_PageContentPlaceHolder_StaySeeOption_StartDateTextBox');
	var inHotDateOut = MM_findObj('ctl00_PageContentPlaceHolder_StaySeeOption_EndDateTextBox');
	//*****************************************************************
	//*****************************************************************

    //	var objDate = MM_findObj("divReservationFor");
	var objPrices = response.getElementsByTagName("price");
	var i, AUSDate;
	var td, tr;
	var strType;
	
	var blnOk = false;

	if (!Hotel.IsSubmitted)	{
		//clearStayOptions();
		objTotal.innerHTML = formatCurrency(0, objCurrency.Symbol) + " " + objCurrency.Text;
		calculateGrandTotal();
	}

	clearTable(tblAvailHotel, false, false, false);
	tblAvailHotel = tblAvailHotel.tBodies[0];
	
    if (!handleError(response))	{
		if (objPrices && objPrices.length > 0) {
			blnOk = true;
			setDivVisibility("divHotelSelectionPane", true);
			setDivVisibility("divHotelSelectAnother", true);
			setDivVisibility("divHotelButtonContainer", false);
			switchDivVisibility("divStaySeeInstruction", "divStaySeeInstruction2", false);

			switchDivVisibility("divHotelSelectionPane", "divHotelSelectionPaneMsg", true);

			for (i = 0; i < objPrices.length; i++) {
				Hotel.Items[i] = new OptionItem.New();

				if (objPrices[i].childNodes[4] && objPrices[i].childNodes[4].firstChild)	{
					Hotel.Items[i].Qty = objPrices[i].childNodes[4].firstChild.nodeValue;
				}
				else	{
					Hotel.Items[i].Qty = 0;
				}
				if (objPrices[i].childNodes[5] && objPrices[i].childNodes[5].firstChild)	{
					Hotel.Items[i].Time = objPrices[i].childNodes[5].firstChild.nodeValue;
				}
				else	{
					Hotel.Items[i].Time = "";
				}
				if (objPrices[i].childNodes[3] && objPrices[i].childNodes[3].firstChild)	{
					Hotel.Items[i].ID = objPrices[i].childNodes[3].firstChild.nodeValue;
				}
				else	{
					Hotel.Items[i].ID = "";
				}
				if (objPrices[i].childNodes[6] && objPrices[i].childNodes[6].firstChild)	{
					Hotel.Items[i].Date = objPrices[i].childNodes[6].firstChild.nodeValue;
				}
				else	{
					Hotel.Items[i].Date = "";
				}
				if (objPrices[i].childNodes[7] && objPrices[i].childNodes[7].firstChild)	{
					Hotel.Items[i].CheckoutDate = objPrices[i].childNodes[7].firstChild.nodeValue;
				}
				else	{
					Hotel.Items[i].CheckoutDate = "";
				}
				
				//new hotel code **************************************************
				//*****************************************************************
				if (objPrices[i].childNodes[8] && objPrices[i].childNodes[8].firstChild) {
				    Hotel.Year = parseInt(objPrices[i].childNodes[8].firstChild.nodeValue);
				}
				else {
				    Hotel.Year = 0;
				}
				//*****************************************************************
				//*****************************************************************

				if (objPrices[i].childNodes[2] && objPrices[i].childNodes[2].firstChild) {
					Hotel.Items[i].Price = unformatCurrency(objPrices[i].childNodes[2].firstChild.nodeValue, objCurrency.Symbol, objCurrency.Text);
				}
				else	{
					Hotel.Items[i].Price = 0;
				}
				if (objPrices[i].childNodes[1] && objPrices[i].childNodes[1].firstChild)	{
					Hotel.Items[i].Description = objPrices[i].childNodes[1].firstChild.nodeValue;
				}
				else	{
					Hotel.Items[i].Description = "";
				}
				if (objPrices[i].childNodes[0] && objPrices[i].childNodes[0].firstChild)	{
					strType = objPrices[i].childNodes[0].firstChild.nodeValue;
				}
				else	{
					strType = "";
				}
				Hotel.Items[i].Type = strType;

				tr = createObj("tr");
				// Empty Column
				td = createObj("td");
				td.innerHTML = "&nbsp;";
				tr.appendChild(td);
				
				// Quantity dropdown
				td = createObj("td");
				qty = renderQtyDropdownList("idHotelQty" + i, gIntQtyMinHotel, gIntQtyMaxHotel, calcHotelTotal, Hotel.Items[i].Qty);
				qty.className = "HotelQuantity";
				td.appendChild(qty);
				tr.appendChild(td);
				
				// x column
				td = createObj("td");
				td.innerHTML = "x";
				tr.appendChild(td);
				
				// For column
				td = createObj("td");
				td.innerHTML = Hotel.Items[i].Type;
				tr.appendChild(td);

				// Description column
				td = createObj("td");
				td.innerHTML = Hotel.Items[i].Description;
				tr.appendChild(td);

				// Cost column
				td = createObj("td");
				td.innerHTML = formatCurrency(Hotel.Items[i].Price, objCurrency.Symbol);
				tr.appendChild(td);

				// = column
				td = createObj("td");
				td.innerHTML = "=";
				tr.appendChild(td);

				// Total column
				td = createObj("td");
				td.id = "tdHotelTotal" + i;
				td.align = "right";
				td.innerHTML = formatCurrency(Hotel.Items[i].Price * Hotel.Items[i].Qty, objCurrency.Symbol);
				tr.appendChild(td);

				// Empty Column
				td = createObj("td");
				td.innerHTML = "&nbsp;";
				tr.appendChild(td);

				//new hotel code **************************************************
				//*****************************************************************
				tblAvailHotel.insertBefore(tr, trHotelDates);
				// add empty row
				tr = createObj("tr");
				td = createObj("td");
				td.colSpan = 9;
				td.className = "spacer";
				tr.appendChild(td);
				// add spacer row to the table
				tblAvailHotel.insertBefore(tr, trHotelDates);
				getUpsellAvailDates("hotel", Hotel.Items[i].ID);
            }
            AUSDate = SBZDates.formatOptionDate(Hotel.Items[0].Date + ' ' + Hotel.Year);

            var myDateIn = normalizeDate(AUSDate);
            var myDateOut = normalizeDate(SBZDates.nextDate(AUSDate));
            
            inHotDateIn.value = myDateIn;
            inHotDateOut.value = myDateOut;
        }
    }

    if (!blnOk) {
        Hotel.ShoID = 0;
        Hotel.VenID = "";
        setDivVisibility('divHotelSelectionPane', false);
        setDivVisibility('divHotelSelectionPaneMsg', true, gStrNoReservation, gStrClassEmpty);
    }
}
//*****************************************************************
//*****************************************************************

                /*tblAvailHotel.insertBefore(tr, trHotelTotal);
				// add empty row
				tr = createObj("tr");
				td = createObj("td");
				td.colSpan = 9;
				td.className = "spacer";
				tr.appendChild(td);
				// add spacer row to the table
				tblAvailHotel.insertBefore(tr, trHotelTotal);
			}
			//objDate.innerHTML = Hotel.Items[0].Date;
		}
	}

	if (!blnOk)	{
		Hotel.ShoID = 0;
		Hotel.VenID = "";
		setDivVisibility("divHotelSelectionPane", false);
		setDivVisibility("divHotelSelectionPaneMsg", true, gStrNoReservation, gStrClassEmpty);
	}
}*/

function getRestaurantReservation()	{
	var strID;
	var objItems;
	var div1 = MM_findObj("divRestDesc");
	var div3 = MM_findObj("divRestAddress");
	var div4 = MM_findObj("divRestAddress2");
	var img1 = MM_findObj("imgDinnerShow");
	var img2 = MM_findObj("imgDinnerShow2");
	var objText, a, img, span, div;
	var objRest;
	var objID;
	var i;
	var shoID = null, venID = null;

	Restaurant.Items = new Array();
	setDivVisibility("divRestaurantSelectAnother", false);
	setDivVisibility("divRestaurantButtonContainer", true);
	switchDivVisibility("divRestaurantInstruction", "divRestaurantInstruction2", true);
	setDivVisibility("divRestaurantError", false);

	if (gDinnerResponse) {
		if (this.id) {
			objID = this.id;
		}
		else {
			objID = findIDUpwards(event.srcElement, "Restaurant_");
			objID = objID.id;
		}
		strID = objID.replace("Restaurant_", "");
		objItems = gDinnerResponse.getElementsByTagName("item");
		if (objItems && objItems.length) {
			setDivVisibility("divRestaurantSelectionPane", false);
			setDivVisibility("divRestaurantSelectionPaneMsg", true, gStrPleaseWait, gStrClassWait);

			for (i = 0; i < objItems.length; i++) {
				objRest = MM_findObj("Restaurant_" + i);
				objRest.className = objRest.className.replace(" selected", "");
				if (i == parseInt(strID, 10)) {
				    objRest.className += " selected";
				    if (img1) {
				        if (objItems[i].childNodes[5].firstChild && objItems[i].childNodes[5].firstChild.nodeValue != "") {
					        img1.src = imageDir + "thumbnail/"  + objItems[i].childNodes[5].firstChild.nodeValue;
						}
						else {
						    img1.src = "../images/spacer.gif";
						}
						if (img2) {
						    img2.src = img1.src;
						}
		            }
		            
                    if (div1) {
						clearContainer(div1);
						// Restaurant Description
						if (objItems[i].childNodes[6] && objItems[i].childNodes[6].firstChild) {
							objText = createObj("span");
							objText.innerHTML = objItems[i].childNodes[6].firstChild.nodeValue;
							div1.appendChild(objText);
						}
					}
					if (div3) {
						clearContainer(div3);
						clearContainer(div4);
						span = createObj("span");
						span.className = "title2";
						// Restaurant Title
						if (objItems[i].childNodes[2]) {
							span.innerHTML = objItems[i].childNodes[2].firstChild.nodeValue;
						}
						div3.appendChild(span);
						div4.appendChild(span.cloneNode(true));
						div = createObj("div");
						div.className = "space5";
						div3.appendChild(div);
						div4.appendChild(div.cloneNode(true));
						// Restaurant Address
						if (objItems[i].childNodes[3] && objItems[i].childNodes[3].firstChild) {
							objText = createObj("span");
							objText.innerHTML = objItems[i].childNodes[3].firstChild.nodeValue;
							div3.appendChild(objText);
							div4.appendChild(objText.cloneNode(true));
						}
						div = createObj("div");
						div.className = "space10";
						div.innerHTML = "&nbsp;";
						div3.appendChild(div);
						// more information
						a = createObj("a");
						//a.href = sFrontSiteUrl + "DinnerShowDetail.aspx?rid=" + encodeURIComponent(objItems[i].childNodes[10].firstChild.nodeValue);
						a.href = "javascript:NewWindow('PopupMoreInfo.aspx?rid=" + objItems[i].childNodes[1].firstChild.nodeValue + "','MoreInfo',660,600,'yes')";
						//a.target = "_blank";
						a.innerHTML = "More information";
						div3.appendChild(a);
						div3.appendChild(createObj("br"));
						
						// View Menu link
						if (objItems[i].childNodes[11] && objItems[i].childNodes[11].firstChild) {
							a = createObj("a");
							//a.href = objItems[i].childNodes[11].firstChild.nodeValue;
							a.href = imageDir + "VenueMap/pdf/" + objItems[i].childNodes[11].firstChild.nodeValue;
							a.target = "_blank";
							a.innerHTML = "View menu";
							div3.appendChild(a);
							div3.appendChild(createObj("br"));
						}

						// View Location link
						if (objItems[i].childNodes[4] && objItems[i].childNodes[4].firstChild) {
							a = createObj("a");
							a.href = objItems[i].childNodes[4].firstChild.nodeValue;
							a.target = "_blank";
							a.innerHTML = "View location";
							div3.appendChild(a);
						}
					}
					if (objItems[i].childNodes[1] && objItems[i].childNodes[1].firstChild)	{
						shoID = objItems[i].childNodes[1].firstChild.nodeValue;
					}
					if (objItems[i].childNodes[8] && objItems[i].childNodes[8].firstChild)	{
						venID = objItems[i].childNodes[8].firstChild.nodeValue;
					}
				}
			}
		}
	}
	if (shoID && venID)	{
		Restaurant.ShoID = shoID;
		Restaurant.VenID = venID;
		
		// clear date dropdownlist
		var datesUpsell = MM_findObj("ctl00_PageContentPlaceHolder_DinnerShowOption_DatesRestaurantListBox");
		showFirstOption_Restaurant(datesUpsell, gStrPleaseWait, gStrClassWait);

        var loader = new net.ContentLoader(gSitePath + "deepTicketSetSession.aspx?sid=" + shoID + "&ven=" + venID + "&type=" + objType.Restaurant, true, getRestaurantReservationCompleted);
		
        setDivVisibility("divAvailableDatesRestaurant", true);
	}
}

function getRestaurantReservationCompleted() {
    clearControls_Restaurant();

    setDivVisibility("divRestaurantSelectionPane", true);
    setDivVisibility("divRestaurantSelectAnother", true);
    setDivVisibility("divRestaurantButtonContainer", false);
    switchDivVisibility("divRestaurantInstruction", "divRestaurantInstruction2", false);

    switchDivVisibility("divRestaurantSelectionPane", "divRestaurantSelectionPaneMsg", true);

    var response = getResponseXML(this.req.responseXML);
    if (!handleError(response)) {
        gDatesResponse = response;
        getSetAsideCodes_Restaurant();
    }
    else {
        gDatesResponse = null;
    }
}
/*eliminato!!!*/
function getRestaurantReservationCompleted_old()	{
	var response = getResponseXML(this.req.responseXML);
	var tblAvailRestaurant = MM_findObj("tblAvailRestaurant");
	var trRestTotal = MM_findObj("RestTotal");
	var objTotal = MM_findObj("spanRestaurantTotalPrice");
	var cboRestSession = MM_findObj("cboRestSession");
	var objPrices = response.getElementsByTagName("price");
	var objSessions = response.getElementsByTagName("session");
	var i;
	var td, tr;
	var strType;
	var strTime;
	
	var blnOk = false;

	if (!Restaurant.IsSubmitted)	{
		//clearDinnerOptions();
		objTotal.innerHTML = formatCurrency(0, objCurrency.Symbol) + " " + objCurrency.Text;
		calculateGrandTotal();
	}
	RestSessions.Items = new Array();
	
	setDivVisibility("divRestSessionSelection", false);
	setDivVisibility("divRestTypeSelection", false);
	setDivVisibility("divRestButtons", false);

	clearTable(tblAvailRestaurant, false, false, false);
	tblAvailRestaurant = tblAvailRestaurant.tBodies[0];
	
    if (!handleError(response))	{
		// Only happens when there are more than one restaurant session times
		if (objSessions && objSessions.length > 0)	{
			blnOk = true;
			setDivVisibility("divRestaurantSelectionPane", true);
			setDivVisibility("divRestaurantSelectAnother", true);
			setDivVisibility("divRestaurantButtonContainer", false);
			setDivVisibility("divRestaurantInstruction", false);
			setDivVisibility("divRestaurantInstruction2", false);
			
			switchDivVisibility("divRestaurantSelectionPane", "divRestaurantSelectionPaneMsg", true);
			setDivVisibility("divRestSessionSelection", true);
			
			setButtonStatus2("btnSessionSetOk", Buttons.btnOk, false);
			
			cboRestSession.options.length = 0;
			
			for (i = 0; i < objSessions.length; i++) {
				RestSessions.Items[i] = new OptionSessionItem.New();
				
				if (objSessions[i].childNodes[0] && objSessions[i].childNodes[0].firstChild) {
					RestSessions.Items[i].PerIndex = objSessions[i].childNodes[0].firstChild.nodeValue;
				}
				if (objSessions[i].childNodes[1] && objSessions[i].childNodes[1].firstChild) {
					RestSessions.Items[i].PerTime = objSessions[i].childNodes[1].firstChild.nodeValue;
				}
				strTime = RestSessions.Items[i].PerTime;
				strTime = strTime.substring(strTime.indexOf(" ") + 1);
				cboRestSession.options[i] = new Option(strTime, RestSessions.Items[i].PerIndex);
			}
		}
		// Happens when there is only one restaurant session time
		if (objPrices && objPrices.length > 0) {
			blnOk = true;
			setDivVisibility("divRestaurantSelectionPane", true);
			setDivVisibility("divRestaurantSelectAnother", true);
			setDivVisibility("divRestTypeSelection", true);
			setDivVisibility("divRestButtons", true);
			setDivVisibility("divRestaurantButtonContainer", false);
			switchDivVisibility("divRestaurantInstruction", "divRestaurantInstruction2", false);
			
			switchDivVisibility("divRestaurantSelectionPane", "divRestaurantSelectionPaneMsg", true);

			for (i = 0; i < objPrices.length; i++) {
				Restaurant.Items[i] = new OptionItem.New();
			
				if (objPrices[i].childNodes[4] && objPrices[i].childNodes[4].firstChild) {
					Restaurant.Items[i].Qty = objPrices[i].childNodes[4].firstChild.nodeValue;
				}
				else {
					Restaurant.Items[i].Qty = 0;
				}
				if (objPrices[i].childNodes[5] && objPrices[i].childNodes[5].firstChild) {
					Restaurant.Items[i].Time = objPrices[i].childNodes[5].firstChild.nodeValue;
				}
				else {
					Restaurant.Items[i].Time = "";
				}
				if (objPrices[i].childNodes[3] && objPrices[i].childNodes[3].firstChild) {
					Restaurant.Items[i].ID = objPrices[i].childNodes[3].firstChild.nodeValue;
				}
				else {
					Restaurant.Items[i].ID = "";
				}
				if (objPrices[i].childNodes[6] && objPrices[i].childNodes[6].firstChild) {
					Restaurant.Items[i].Date = objPrices[i].childNodes[6].firstChild.nodeValue;
				}
				else {
					Restaurant.Items[i].Date = "";
				}
				if (objPrices[i].childNodes[2] && objPrices[i].childNodes[2].firstChild) {
					Restaurant.Items[i].Price = unformatCurrency(objPrices[i].childNodes[2].firstChild.nodeValue, objCurrency.Symbol, objCurrency.Text);
				}
				else {
					Restaurant.Items[i].Price = 0;
				}
				if (objPrices[i].childNodes[1] && objPrices[i].childNodes[1].firstChild) {
					Restaurant.Items[i].Description = objPrices[i].childNodes[1].firstChild.nodeValue;
				}
				else {
					Restaurant.Items[i].Description = "";
				}
				if (objPrices[i].childNodes[0] && objPrices[i].childNodes[0].firstChild) {
					strType = objPrices[i].childNodes[0].firstChild.nodeValue;
				}
				else {
					strType = "";
				}
				Restaurant.Items[i].Type = strType;

				tr = createObj("tr");
				// Empty Column
				td = createObj("td");
				td.innerHTML = "&nbsp;";
				tr.appendChild(td);
				
				// Quantity dropdown
				td = createObj("td");
				qty = renderQtyDropdownList("idRestaurantQty" + i, gIntQtyMinRestaurant, gIntQtyMaxRestaurant, calcRestaurantTotal, Restaurant.Items[i].Qty);
				qty.className = "RestQuantity";
				td.appendChild(qty);
				tr.appendChild(td);
				
				// x column
				td = createObj("td");
				td.innerHTML = "x";
				tr.appendChild(td);
				
				// For column
				td = createObj("td");
				td.innerHTML = Restaurant.Items[i].Type;
				tr.appendChild(td);

				// Description column
				td = createObj("td");
				td.innerHTML = Restaurant.Items[i].Description;
				tr.appendChild(td);
				
				// Time column
				td = createObj("td");
				td.innerHTML = Restaurant.Items[i].Time;
				tr.appendChild(td);

				// Cost column
				td = createObj("td");
				td.innerHTML = formatCurrency(Restaurant.Items[i].Price, objCurrency.Symbol);
				tr.appendChild(td);

				// = column
				td = createObj("td");
				td.innerHTML = "=";
				tr.appendChild(td);

				// Total column
				td = createObj("td");
				td.id = "tdRestaurantTotal" + i;
				td.align = "right";
				td.innerHTML = formatCurrency(Restaurant.Items[i].Price * Restaurant.Items[i].Qty, objCurrency.Symbol);
				tr.appendChild(td);

				// Empty Column
				td = createObj("td");
				td.innerHTML = "&nbsp;";
				tr.appendChild(td);

				tblAvailRestaurant.insertBefore(tr, trRestTotal);
				// add empty row
				tr = createObj("tr");
				td = createObj("td");
				td.colSpan = 9;
				td.className = "spacer";
				tr.appendChild(td);
				// add spacer row to the table
				tblAvailRestaurant.insertBefore(tr, trRestTotal);
				//tblAvailRestaurant.appendChild(tr);
			}
		}
	}
	
	if (!blnOk)	{
		Restaurant.ShoID = 0;
		Restaurant.VenID = "";
		setDivVisibility("divRestaurantSelectionPane", false);
		setDivVisibility("divRestaurantSelectionPaneMsg", true, gStrNoReservation, gStrClassEmpty);
		setButtonStatus2("btnSessionSetOk", Buttons.btnOk, false);
	}
}

function setRestaurantSession()	{
	var cboRestSession = MM_findObj("cboRestSession");
	var strPost;

	strPost = "PerIndex=" + RestSessions.Items[cboRestSession.selectedIndex].PerIndex;
	strPost += "&PerTime=" + RestSessions.Items[cboRestSession.selectedIndex].PerTime;

	setButtonStatus2("btnSessionSetOk", Buttons.btnOkGrey, true);
	var loader = new net.ContentLoader(gSitePath + "deepShowHotelRestDatesCombo.aspx", false, getRestaurantReservationCompleted, strPost);
}

function getRestaurants() {
    Restaurant.New();
    var loader = new net.ContentLoader(gSitePath + "deepGetHotelRestaurant.aspx?type=2", true, getRestaurantsCompleted);
}

function getRestaurantsCompleted() {
    var response = getResponseXML(this.req.responseXML);
    var objContainer = MM_findObj("divRestaurant");
    var objItems = response.getElementsByTagName("item");
    var i;
    var div1, img1, obj, a, div2;
    var table, tbody, tr, td;
    var blnOk = false;
    var arrDivs = new Array();

    gDinnerResponse = null;
    sSelectedRest = "";

    if (!handleError(response)) {

        if (objItems && objItems.length > 0) {

            blnOk = true;
            gDinnerResponse = response;
            clearContainer(objContainer);

            for (i = 0; i < objItems.length; i++) {
                if ((i > 0) && (i % gIntMaxOptionColumns == 0)) {
                    div2 = createObj("div");
                    div2.className = "clear";
                    objContainer.appendChild(div2);
                }
                div1 = createObj("div", "Restaurant_" + i);
                div1.id = "Restaurant_" + i;
                div1.className = "HotelRestItem";
                if (i < gIntMaxOptionColumns) {
                    div1.className += " noTopMargin";
                }
                addEvent(div1, "click", getRestaurantReservation);
                if (parseInt(objItems[i].childNodes[0].firstChild.nodeValue) == intRest) {
                    sSelectedRest = div1.id;
                }
                obj = createObj("div");
                obj.className = "image";
                img1 = createObj("img");
                img1.align = "left";

                if (objItems[i].childNodes[5].firstChild && objItems[i].childNodes[5].firstChild.nodeValue != "") {
                    img1.src = imageDir + "thumbnail/" + objItems[i].childNodes[5].firstChild.nodeValue;
                }
                else {
                    img1.src = "../images/spacer.gif";
                }

                obj.appendChild(img1);
                div1.appendChild(obj);
                obj = createObj("div");
                obj.className = "details";

                span = createObj("span");
                span.className = "title2";
                if (objItems[i].childNodes[2] && objItems[i].childNodes[2].firstChild) {
                    span.innerHTML = objItems[i].childNodes[2].firstChild.nodeValue;
                }
                obj.appendChild(span);
                div2 = createObj("div");
                div2.className = "space5";
                obj.appendChild(div2);
                span = createObj("span");
                if (objItems[i].childNodes[3] && objItems[i].childNodes[3].firstChild) {
                    span.innerHTML = objItems[i].childNodes[3].firstChild.nodeValue;
                }
                obj.appendChild(span);
                /*
                obj.appendChild(createObj("br"));
				
				if (objItems[i].childNodes[4] && objItems[i].childNodes[4].firstChild)	{
                a = createObj("a");
                a.href = objItems[i].childNodes[4].firstChild.nodeValue;
                a.innerHTML = "View Location Map";
                a.target = "_blank";
                obj.appendChild(a);
                obj.appendChild(createObj("br"));
                }
                */
                div2 = createObj("div");
                div2.className = "space10";
                obj.appendChild(div2);

                table = createObj("table");
                tbody = createObj("tbody");
                tr = createObj("tr");
                td = createObj("td");
                td.vAlign = "middle";
                img1 = createObj("img");
                img1.src = "../images/buttons/select.png";
                img1.width = "62";
                img1.height = "20";
                img1.style.cursor = "pointer";
                td.appendChild(img1);
                tr.appendChild(td);

                // more information
                td = createObj("td");
                td.vAlign = "middle";
                td.innerHTML = "&nbsp;&nbsp;";
                tr.appendChild(td);
                td = createObj("td");
                td.vAlign = "middle";
                td.appendChild(document.createTextNode(" "));
                a = createObj("a");
                a.href = "javascript:NewWindow('PopupMoreInfo.aspx?rid=" + objItems[i].childNodes[1].firstChild.nodeValue + "','MoreInfo',660,600,'yes')";
                a.innerHTML = "More Information";
                td.appendChild(a);
                tr.appendChild(td);
                tbody.appendChild(tr);
                table.appendChild(tbody);
                obj.appendChild(table);

                div1.appendChild(obj);
                div2 = createObj("div");
                div2.className = "clear";
                div1.appendChild(div2);
                objContainer.appendChild(div1);
            }
            div2 = createObj("div");
            div2.className = "clear";
            objContainer.appendChild(div2);

            Restaurant.IsMandatory = blnRestOption;

            if (sSelectedRest != "") {
                var objSelected = MM_findObj(sSelectedRest);
                if (objSelected) {
                    if (objSelected.click) {
                        objSelected.click();
                    }
                    if (objSelected.dispatchEvent) {
                        var clickevent = document.createEvent("MouseEvents")
                        clickevent.initEvent("click", true, true)
                        objSelected.dispatchEvent(clickevent)
                    }
                }
            }
            else {
                if (intRest != 0) {
                    //setDivVisibility("divRestaurantError", true);
                    switchDivVisibility("divRestaurantError", "divRestaurantInstruction", true);
                }
            }
        }
        else {
            Restaurant.IsMandatory = false;
            
            skipRestaurant();
        }
    }
    
    if (!blnOk) {
        showContainerMsg(objContainer, gStrNoAvailRestaurant, gStrClassEmpty);
    }
    else {
        //Restaurant completed
        arrDivs[arrDivs.length] = 1;

        if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
            if (Hotel.IsSubmitted) {
                arrDivs[arrDivs.length] = 7; // Display Hotel info
            }
        }
        else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
            //do nothing
        }
        else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
            if (Attraction.IsSubmitted) {
                arrDivs[arrDivs.length] = 13; // Display Attraction info
            }
            if (Hotel.IsSubmitted) {
                arrDivs[arrDivs.length] = 7; // Display Hotel info
            }
        }

        if (intRest == 0) {
            arrDivs[arrDivs.length] = 2; // Display Restaurant Option
        }
        else {
            arrDivs[arrDivs.length] = 3; // Display Restaurant Selection
        }

        toggleDIVs(arrDivs);
    }
}

//new hotel code **************************************************
//*****************************************************************
function getUpsellAvailDates(upsellType, upsellID) {
    var upsellItem;
    switch (upsellType) {
        case "hotel":
            upsellItem = Hotel;
            break;
        case "restaurant":
            upsellItem = Restaurant;
            break;
        case "attraction":
            upsellItem = Attraction;
            break;
        default:
            alert('Upsell type incorrect');
            return false;
    }
    
    var strPost = 'st=' + upsellID.substr(0, upsellID.indexOf('|'))
				+ '&mr=' + upsellID.substring(upsellID.indexOf('|') + 1, upsellID.lastIndexOf('|'))
				+ '&lst=true&sid=' + upsellItem.ShoID;
    //var loader = new net.ContentLoader(gSitePath + "deepShowHotelRestDatesCombo.aspx", false, getUpsellAvailDatesCompleteH, strPost);

    switch (upsellType) {
        case "hotel":
            var loader = new net.ContentLoader(gSitePath + "deepShowHotelRestDatesCombo.aspx", false, getUpsellAvailDatesCompleteH, strPost);
            break;
        case "restaurant":
            var loader = new net.ContentLoader(gSitePath + "deepShowHotelRestDatesCombo.aspx", false, getUpsellAvailDatesCompleteR, strPost);
            break;
        case "attraction":
            var loader = new net.ContentLoader(gSitePath + "deepShowHotelRestDatesCombo.aspx", false, getUpsellAvailDatesCompleteA, strPost);
            break;
        default:
            alert('Upsell type incorrect');
            return false;
    }
}

function getUpsellAvailDatesCompleteH() {
    var response = getResponseXML(this.req.responseXML), i = 0, aDates = new Array(), upsellID = "", itemType = "";
    itemType = $(response).find('SeatType').text();

    $(response).find('session').each(function() {
        var itemDate = { iPerIdx: 0, sDate: "" };
        itemDate.iPerIdx = parseInt($(this).find('PerIndex').text());
        itemDate.sDate = $(this).find('PerTime').text();
        aDates[i] = itemDate;
        i++;
    });

    for (i = 0; i < Hotel.Items.length; i++) {
        upsellID = Hotel.Items[i].ID
        if (upsellID.substr(0, upsellID.indexOf('|')) == itemType) {
            Hotel.Items[i].AvailDates = aDates;
        }
    }
}

function getUpsellAvailDatesCompleteR() {
    var response = getResponseXML(this.req.responseXML), i = 0, aDates = new Array(), upsellID = "", itemType = "";
    itemType = $(response).find('SeatType').text();
    
    $(response).find('session').each(function() {
        var itemDate = { iPerIdx: 0, sDate: "" };
        itemDate.iPerIdx = parseInt($(this).find('PerIndex').text());
        itemDate.sDate = $(this).find('PerTime').text();
        aDates[i] = itemDate;
        i++;
    });
    
    for (i = 0; i < Restaurant.Items.length; i++) {
        upsellID = Restaurant.Items[i].ID
        if (upsellID.substr(0, upsellID.indexOf('|')) == itemType) {
            Restaurant.Items[i].AvailDates = aDates;
        }
    }
}

function getUpsellAvailDatesCompleteA() {
    var response = getResponseXML(this.req.responseXML), i = 0, aDates = new Array(), upsellID = "", itemType = "";
    itemType = $(response).find('SeatType').text();
    
    $(response).find('session').each(function() {
        var itemDate = { iPerIdx: 0, sDate: "" };
        itemDate.iPerIdx = parseInt($(this).find('PerIndex').text());
        itemDate.sDate = $(this).find('PerTime').text();
        aDates[i] = itemDate;
        i++;
    });
    
    for (i = 0; i < Attraction.Items.length; i++) {
        upsellID = Attraction.Items[i].ID
        if (upsellID.substr(0, upsellID.indexOf('|')) == itemType) {
            Attraction.Items[i].AvailDates = aDates;
        }
    }
}

function validateDates(upsellType) {
    var upsellItem;
    var controlOptionName;
    var startDateOnly = false;
    var dateFromDDL = false;
    
    switch(upsellType)
    {
        case "hotel":
            upsellItem = Hotel;
            controlOptionName = "StaySee"
            break;
        case "restaurant":
            upsellItem = Restaurant;
            controlOptionName = "DinnerShow"
            break;
        case "attraction":
            upsellItem = Attraction;
            controlOptionName = "Attraction"
            startDateOnly = true;
            dateFromDDL = true;
            break;
        default:
            alert('Upsell type incorrect');
            return false;
    }

    var startDateControlID = "ctl00_PageContentPlaceHolder_" + controlOptionName + "Option_StartDate";
    
    if (dateFromDDL) {
        startDateControlID += "DropDownList";
    } else {
        startDateControlID += "TextBox";
    }

    var checkInDateControl = MM_findObj(startDateControlID);
    var checkOutDateControl;
    var i = 0, j = 0, k = 0, iDif = 1;
    var sUnavailDates = '';
    var dNow = new Date(), dIn = null;
    var checkInDate;
    var checkInDateInt;
    
    if (dateFromDDL) {
        checkInDateInt = parseInt(checkInDateControl.value);
    } else {
        checkInDate = SBZDates.flip(checkInDateControl.value);
        dIn = new Date(checkInDate + ' 23:59:59');
    }
    
    var checkOutDate;
    var iDays = 1;
    var endDateControlID = "ctl00_PageContentPlaceHolder_" + controlOptionName + "Option_EndDateTextBox";
    if (!startDateOnly) {
        checkOutDateControl = MM_findObj(endDateControlID);
        checkOutDate = SBZDates.flip(checkOutDateControl.value);
        iDays = dateDiff(checkInDate, checkOutDate);
    }

    if (startDateOnly || dateFromDDL) {
        upsellItem.Days = 1;
    } else if (SBZDates.isDate(checkInDate)) { //date is valid
        var sEle = $(checkInDateControl).attr('id'), altEle = '', altDate = '', i = 0, dateIn = '', dateOut = '';
        altEle = sEle == startDateControlID ? "#" + endDateControlID : "#" + startDateControlID;
        altDate = $(altEle).val();
        if (SBZDates.isDate(SBZDates.flip(altDate))) {
            dateIn = sEle == startDateControlID ? checkInDate : SBZDates.flip(altDate);
            dateOut = sEle == startDateControlID ? SBZDates.flip(altDate) : checkInDate;

            //Cris note: this function does not calculate correctly the dates difference
            //upsellItem.Days = SBZDates.compare(d1, d2);
            //Therefore I'm using the one below
            upsellItem.Days = dateDiff(dateIn, dateOut);
        }
    } else {
        alert('You have specifed an invalid date for your check in.');
        return false;
    }

    switch (upsellType) {
        case "hotel":
            calculateHotelTotal();
            break;
        case "restaurant":
            calculateRestaurantTotal();
            break;
        case "attraction":
            calculateAttractionTotal();
            break;
        default:
            alert('Upsell type incorrect');
            return false;
    }

    if (!dateFromDDL) {
        if (upsellItem.Days < 1) {
            alert('You must specify a check out date at least one day after your check in.');
            return false;
        }
        if (SBZDates.isDate(checkInDate)) {
            if (dIn < dNow) {
                alert('You have specified a check in date that has already past.');
                return false;
            } else {
                if (!startDateOnly) {
                    if (!SBZDates.isDate(checkOutDate)) {
                        alert('You have specifed an invalid date for your check out.')
                        return false;
                    }
                }
            }
        } else {
            alert('You have specifed an invalid date for your check in.');
            return false;
        }
    }
    
    var totalBookedItems = 0;
    var y = 0;
    for (y; y < upsellItem.Items.length; y++) {
        if (parseInt(upsellItem.Items[y].Qty) > 0) totalBookedItems++;
    }

    if (totalBookedItems * upsellItem.Days > 10) {
        switch (upsellType) {
            case "hotel":
                alert('Sorry, the maximum number of combined room days has been exceeded. Please reduce the number of rooms or days to no more than 10 room nights, or contact us on  1300 4 SHOWS (or 1300 4 74697)');
                break;
            case "restaurant":
                alert('Sorry, the maximum number dining days has been exceeded. Please reduce it to no more than 10, or contact us on  1300 4 SHOWS (or 1300 4 74697)');
                break;
            case "attraction":
                alert('Sorry, the maximum number of days for this attraction you can book has been exceeded. Please reduce it to no more than 10, or contact us on  1300 4 SHOWS (or 1300 4 74697)');
                break;
            default:
                alert('Upsell type incorrect');
                return false;
        }
        
        return false;
    }

    //validating availability dates agaist the booked dates
    var checkInDateOnlyForLoop;
    var addedDays = 0;
    for (k = 0; k < upsellItem.Items.length; k++) { // Loop through each Upsell Sub Item
        if (parseInt(upsellItem.Items[k].Qty) > 0) { // Validate only selected Sub Items
            checkInDateOnlyForLoop = checkInDate; // Reset checkInDateOnlyForLoop for each sub item

            i = 0;
            j = 0;
            while (addedDays != 0) {
                upsellItem.BookedDates.pop(); // To remove array items
                addedDays--;
            }
            while (i < iDays && j < upsellItem.Items[k].AvailDates.length) {
                if (dateFromDDL) {
                    iDif = checkInDateInt - upsellItem.Items[k].AvailDates[j].iPerIdx;
                } else {
                    iDif = dateDiff(upsellItem.Items[k].AvailDates[j].sDate, checkInDateOnlyForLoop);
                }
                if (iDif === 0) {
                    // Add days only if they still need to be added. If the first booked item has all dates available,
                    // the dates will be added with it's loop, therefore there is no need to keep adding dates subsequently.
                    upsellItem.BookedDates[i] = upsellItem.Items[k].AvailDates[j];
                    addedDays++;
                    if (dateFromDDL) {
                        // I need this part only to calculate dIn.
                        // And because using the DropDownList a user can book only one day,
                        // I don't need to make sure to calculate this just once (for the check-in day).
                        checkInDate = upsellItem.Items[k].AvailDates[j].sDate;
                        checkInDate = checkInDate.replace(/-/g, "/"); // Replace all occurrences of "-" with "/" (ie: "2011-03-15 10:00 AM" to "2011/03/15 10:00 AM")
                        dIn = new Date(checkInDate); // so this line calculates correctly the date
                    } else {
                        checkInDateOnlyForLoop = normalizeDate(SBZDates.nextNoFlip(checkInDateOnlyForLoop)); // Set checkInDateOnlyForLoop = to the next day
                    }
                    i++
                } else if (iDif < 0) {
                    break;
                }
                j++;
            }
            
            // If at least one day is available but not all selected days.
            // This will never happen for the DropDownList control so no need to add a function for it as well.
            if (i < iDays && i > 0) {
                var z = 0;
                var w;
                var dateFound;
                while (z < upsellItem.BookedDates.length) { // Loop through the booked days
                    w = 0;
                    dateFound = false;
                    checkInDateOnlyForLoop = checkInDate; // Reset checkInDateOnlyForLoop for each booked day
                    for (w; w < iDays; w++) {// Loop through the selected days
                        if (dateDiff(upsellItem.BookedDates[z].sDate, checkInDateOnlyForLoop) == 0) { // If selected day is booked
                            dateFound = true;
                            break;
                        }
                        checkInDateOnlyForLoop = normalizeDate(SBZDates.nextNoFlip(checkInDateOnlyForLoop)); // Set checkInDateOnlyForLoop = to the next day
                    }
                    if (!dateFound) {
                        sUnavailDates += upsellItem.BookedDates[z].sDate + '\n';
                    }
                    z++;
                }
                
                alert('The following dates are unavailable for "' + upsellItem.Items[k].Type + '":\n' + sUnavailDates);
                return false;
            }
            if (i == 0) { // If no day is available
                var availDateCount = upsellItem.Items[k].AvailDates.length;
                var firstAvailDateObj = upsellItem.Items[k].AvailDates[0];
                var lastAvailDateObj = upsellItem.Items[k].AvailDates[(availDateCount - 1)];
                var firstAvailDate;
                var lastAvailDate;
                var firstAvailDateDif = 0;
                var lastAvailDateDif = 0;
                var errorMSG = "";

                if (dateFromDDL) {
                    errorMSG = "The date/s & time you have selected is/are not available.";
                } else { // This will avoid an error due to checkInDate being empity. Also, there is no need to display the below message when using a DDL control.
                    errorMSG = "The date/s you have selected is/are not available.";
                    if (firstAvailDateObj != null) {
                        firstAvailDate = firstAvailDateObj.sDate;
                        firstAvailDateDif = dateDiff(firstAvailDate, checkInDate);
                        if (firstAvailDateDif < 0) {
                            errorMSG += "\nThe first available date is: " + SBZDates.backflip(firstAvailDate);
                        }
                    }
                    if (!startDateOnly && lastAvailDateObj != null) {
                        lastAvailDate = lastAvailDateObj.sDate;
                        lastAvailDateDif = dateDiff(checkOutDate, lastAvailDate);
                        if (lastAvailDateDif < 0) {
                            errorMSG += "\nThe last available date is: " + SBZDates.backflip(lastAvailDate);
                        }
                    }
                }

                alert(errorMSG);

                return false;
            }

            var myTime = "";
            if (dateFromDDL) { // Function to display the time
                var a_p = "";

                var curr_hour = dIn.getHours();

                if (curr_hour < 12) {
                    a_p = "AM";
                }
                else {
                    a_p = "PM";
                }
                if (curr_hour == 0) {
                    curr_hour = 12;
                }
                if (curr_hour > 12) {
                    curr_hour -= 12;
                }

                var curr_min = dIn.getMinutes();
                curr_min = curr_min + "";

                if (curr_min.length == 1) {
                    curr_min = "0" + curr_min;
                }

                myTime = ", " + curr_hour + ":" + curr_min + " " + a_p;
            }
            
            upsellItem.Items[k].Date = dIn.toLocaleDateString() + myTime;
            
            if (!startDateOnly) {
                dIn.setDate(dIn.getDate() + iDays);
                upsellItem.Items[k].CheckoutDate = dIn.toLocaleDateString();
                dIn.setDate(dIn.getDate() - iDays);
            }
        }
    }
    
    switch (upsellType) {
        case "hotel":
            Hotel = upsellItem;
            break;
        case "restaurant":
            Restaurant = upsellItem;
            break;
        case "attraction":
            Attraction = upsellItem;
            break;
        default:
            alert('Upsell type incorrect');
            return false;
    }

    return true;
}
//*****************************************************************
//*****************************************************************

function submitStaySee() {
    var tblSelectedStaySee = MM_findObj("tblSelectedStaySee");
    var tblSelectedStaySeeCheckIn = MM_findObj("tblSelectedStaySeeCheckIn");
    var divTotalHotelPrice = MM_findObj("divTotalHotelPrice");
    var spanHotelTotalPrice = MM_findObj("spanHotelTotalPrice");
    var objSelect;
    var tr, td;
    var i;

    //new hotel code **************************************************
    //*****************************************************************
    var j, strPost = "", sQty = "", sDSID = "";

    //Added date validation on hotel submit
    if (!validateDates("hotel")) {
        return void (0);
    }
    //*****************************************************************
    //*****************************************************************

    Hotel.IsSubmitted = false;
    SelectedItems.New();

    clearTable(tblSelectedStaySee, false, false, false);
    clearTable(tblSelectedStaySeeCheckIn, false, false, false);
    tblSelectedStaySee = tblSelectedStaySee.tBodies[0];
    tblSelectedStaySeeCheckIn = tblSelectedStaySeeCheckIn.tBodies[0];

    for (i = 0; i < Hotel.Items.length; i++) {
        objSelect = MM_findObj("idHotelQty" + i);
        if (objSelect) {
            if (objSelect.value != "0") {
                SelectedItems.Add(Hotel.Items[i].ID, objSelect.value);
                tr = createObj("tr");

                // Quantity
                td = createObj("td");
                td.innerHTML = objSelect.value;
                td.vAlign = "top";
                tr.appendChild(td);

                // For
                td = createObj("td");
                td.innerHTML = Hotel.Items[i].Type;
                td.vAlign = "top";
                tr.appendChild(td);

                // Description
                td = createObj("td");
                td.innerHTML = Hotel.Items[i].Description;
                td.vAlign = "top";
                tr.appendChild(td);

                tblSelectedStaySee.appendChild(tr);

                tr = createObj("tr");

                td = createObj("td");
                td.innerHTML = Hotel.Items[i].Date;
                td.vAlign = "top";
                tr.appendChild(td);

                td = createObj("td");
                td.innerHTML = Hotel.Items[i].CheckoutDate;
                td.vAlign = "top";
                tr.appendChild(td);

                tblSelectedStaySeeCheckIn.appendChild(tr);
                //new hotel code **************************************************
                //*****************************************************************
                Hotel.RoomsSelected = true;
                //*****************************************************************
                //*****************************************************************
            }
        }
    }

    //new hotel code **************************************************
    //*****************************************************************
    //if (Hotel.Items.length > 0 && Hotel.BookedDates.length > 0) {
    if (Hotel.Items.length > 0 && Hotel.Days > 0) {
        if (Hotel.RoomsSelected === false) {
            alert("Please choose the number of rooms for Stay & See Option.");
        }
        else {

            //Concat room IDs and Qty
            for (i = 0; i < Hotel.Items.length; i++) {
                if (parseInt(Hotel.Items[i].Qty) > 0) {
                    sQty += '' + parseInt(Hotel.Items[i].Qty) + ",";
                    sDSID += Hotel.Items[i].ID + ",";
                }
            }

            sQty = sQty.substr(0, sQty.lastIndexOf(","));
            sDSID = sDSID.substr(0, sDSID.lastIndexOf(","));

            setButtonStatus2("btnHotelSubmit", Buttons.btnAddReservationGrey, true);
            if (parseInt(sQty) > 0) {
                for (i = 0; i < Hotel.BookedDates.length; i++) {
                    strPost += Hotel.BookedDates[i].iPerIdx + ",";
                }
                
                strPost = (strPost.charAt(strPost.length - 1, 1) == ",") ? strPost.substring(0, strPost.length - 1) : strPost;
                fnPushHotelDates(strPost, sQty, sDSID);
            }

            setTotalPrice("spanHotelTotalPrice", Hotel);
            divTotalHotelPrice.innerHTML = spanHotelTotalPrice.innerHTML;
        }
    }
    else {
        alert("Please choose a hotel from the list.");
    }
    //*****************************************************************
    //*****************************************************************

    /*if (Hotel.Items.length > 0)	{
    var strPost = SelectedItems.ToString();

		if (strPost == "")	{
    alert("Please choose the number of guests and types for Stay & See Option.");
    }
    else	{
    //setButtonStatus("btnHotelSubmit", "btnAddReservationGrey", true);
    setButtonStatus2("btnHotelSubmit", Buttons.btnAddReservationGrey, true);
    var loader = new net.ContentLoader(gSitePath + "deepEventPrices.aspx?type=3", false, submitStaySeeCompleted, strPost);
    setTotalPrice("spanHotelTotalPrice", Hotel);
    divTotalHotelPrice.innerHTML = spanHotelTotalPrice.innerHTML;
    }
    }
    else	{
    alert("Please choose a hotel from the list.");
    }*/
}

//new hotel code **************************************************
//*****************************************************************
function fnPushHotelDates(sDates, sQty, sHotID) {
    $.ajax({
        "url": gSitePath + "deepAddDateRange.aspx"
		, "async": true
		, "type": "post"
		, "cache": false
		, "data": { "hpx": sDates, "qty": sQty, "dsid": sHotID, "sType": "hotel" }
		, "success": fnDatePushComplete
    });
}

function fnDatePushComplete(r) {
    if ($(r).find('error').length > 0) {
        alert($(r).find('error').text());
        //handleErrorClearCart();
        //reloadPage();
        setButtonStatus2("btnHotelSubmit", Buttons.btnAddReservation, false);
    } else { 
        submitStaySeeCompleted();
    }
    /*Hotel.iDatesComplete++;
    if (Hotel.iDatesComplete >= Hotel.BookedDates.length) submitStaySeeCompleted();*/
}
//*****************************************************************
//*****************************************************************

//Attraction *****************************************************************
//*****************************************************************

function getAttractionReservation() {
    var strID;
    var objItems;
    var div1 = MM_findObj("divAttractionDesc");
    var div3 = MM_findObj("divAttractionAddress");
    var div4 = MM_findObj("divAttractionAddress2");
    var img1 = MM_findObj("imgAttraction");
    var img2 = MM_findObj("imgAttraction2");
    var objText, a, img, span, div;
    var objAttraction;
    var objID;
    var i;
    var shoID = null, venID = null;

    Attraction.Items = new Array();
    setDivVisibility("divAttractionSelectAnother", false);
    setDivVisibility("divAttractionButtonContainer", true);
    switchDivVisibility("divAttractionInstruction", "divAttractionInstruction2", true);
    setDivVisibility("divAttractionError", false);

    if (gAttractionResponse) {
        if (this.id) {
            objID = this.id;
        }
        else {
            objID = findIDUpwards(event.srcElement, "Attraction_");
            objID = objID.id;
        }
        strID = objID.replace("Attraction_", "");
        objItems = gAttractionResponse.getElementsByTagName("item");
        if (objItems && objItems.length) {
            setDivVisibility("divAttractionSelectionPane", false);
            setDivVisibility("divAttractionSelectionPaneMsg", true, gStrPleaseWait, gStrClassWait);

            for (i = 0; i < objItems.length; i++) {
                objAttraction = MM_findObj("Attraction_" + i);
                objAttraction.className = objAttraction.className.replace(" selected", "");
                
                if (i == parseInt(strID, 10)) {
                    objAttraction.className += " selected";
                    if (img1) {
                        if (objItems[i].childNodes[5].firstChild && objItems[i].childNodes[5].firstChild.nodeValue != "") {
                            img1.src = imageDir + "thumbnail/" + objItems[i].childNodes[5].firstChild.nodeValue;
                        }
                        else {
                            img1.src = "../images/spacer.gif";
                        }
                        if (img2) {
                            img2.src = img1.src;
                        }
                    }
                    
                    if (div1) {
                        clearContainer(div1);
                        // Attraction Description
                        if (objItems[i].childNodes[6] && objItems[i].childNodes[6].firstChild) {
                            objText = createObj("span");
                            objText.innerHTML = objItems[i].childNodes[6].firstChild.nodeValue;
                            div1.appendChild(objText);
                        }
                    }
                    if (div3) {
                        clearContainer(div3);
                        clearContainer(div4);
                        span = createObj("span");
                        span.className = "title2";
                        // Attraction Title
                        if (objItems[i].childNodes[2]) {
                            span.innerHTML = objItems[i].childNodes[2].firstChild.nodeValue;
                        }
                        div3.appendChild(span);
                        div4.appendChild(span.cloneNode(true));
                        div = createObj("div");
                        div.className = "space5";
                        div3.appendChild(div);
                        div4.appendChild(div.cloneNode(true));
                        // Attraction Address
                        if (objItems[i].childNodes[3] && objItems[i].childNodes[3].firstChild) {
                            objText = createObj("span");
                            objText.innerHTML = objItems[i].childNodes[3].firstChild.nodeValue;
                            div3.appendChild(objText);
                            div4.appendChild(objText.cloneNode(true));
                        }
                        div = createObj("div");
                        div.className = "space10";
                        div.innerHTML = "&nbsp;";
                        div3.appendChild(div);
                        // more information
                        a = createObj("a");
                        //a.href = sFrontSiteUrl + "AttractionDetail.aspx?rid=" + encodeURIComponent(objItems[i].childNodes[10].firstChild.nodeValue);
                        a.href = "javascript:NewWindow('PopupMoreInfo.aspx?aid=" + objItems[i].childNodes[1].firstChild.nodeValue + "','MoreInfo',660,600,'yes')";
                        //a.target = "_blank";
                        a.innerHTML = "More information";
                        div3.appendChild(a);
                        div3.appendChild(createObj("br"));

                        // View Menu link
                        if (objItems[i].childNodes[11] && objItems[i].childNodes[11].firstChild) {
                            a = createObj("a");
                            //a.href = objItems[i].childNodes[11].firstChild.nodeValue;
                            a.href = imageDir + "VenueMap/pdf/" + objItems[i].childNodes[11].firstChild.nodeValue;
                            a.target = "_blank";
                            a.innerHTML = "View menu";
                            div3.appendChild(a);
                            div3.appendChild(createObj("br"));
                        }

                        // View Location link
                        if (objItems[i].childNodes[4] && objItems[i].childNodes[4].firstChild) {
                            a = createObj("a");
                            a.href = objItems[i].childNodes[4].firstChild.nodeValue;
                            a.target = "_blank";
                            a.innerHTML = "View location";
                            div3.appendChild(a);
                        }
                    }
                    if (objItems[i].childNodes[1] && objItems[i].childNodes[1].firstChild) {
                        shoID = objItems[i].childNodes[1].firstChild.nodeValue;
                    }
                    if (objItems[i].childNodes[8] && objItems[i].childNodes[8].firstChild) {
                        venID = objItems[i].childNodes[8].firstChild.nodeValue;
                    }
                }
            }
        }
    }
    if (shoID && venID) {

        Attraction.ShoID = shoID;
        Attraction.VenID = venID;


//        var tblTicket = MM_findObj("tblAvailAttraction");
//        clearTable_Attraction(tblTicket, false, false, true);
        
        // clear date dropdownlist
        var datesUpsell = MM_findObj("ctl00_PageContentPlaceHolder_AttractionOption_DatesAttractionListBox");
        showFirstOption_Attraction(datesUpsell, gStrPleaseWait, gStrClassWait);
        

        //var loader = new net.ContentLoader(gSitePath + "deepTicketSetSession.aspx?sid=" + shoID + "&ven=" + venID + "&type=" + objType.Attraction, true, gotoCityCompleted_Attraction);
        var loader = new net.ContentLoader(gSitePath + "deepTicketSetSession.aspx?sid=" + shoID + "&ven=" + venID + "&type=" + objType.Attraction, true, getAttractionReservationCompleted);

        setDivVisibility("divAvailableDatesAttraction", true);
    
    
    
    }
}

function getAttractionReservationCompleted() {
    clearControls_Attraction();
    
    setDivVisibility("divAttractionSelectionPane", true);
    setDivVisibility("divAttractionSelectAnother", true);
    setDivVisibility("divAttractionButtonContainer", false);
    switchDivVisibility("divAttractionInstruction", "divAttractionInstruction2", false);

    switchDivVisibility("divAttractionSelectionPane", "divAttractionSelectionPaneMsg", true);
    


    var response = getResponseXML(this.req.responseXML);
    if (!handleError(response)) {
        gDatesResponse = response;
        getSetAsideCodes_Attraction();
    }
    else {
        gDatesResponse = null;
    }
}

/*eliminato!!!*/
function getAttractionReservationCompleted_old() {
    var response = getResponseXML(this.req.responseXML);
    var objTotal = MM_findObj("spanAttractionTotalPrice");
    var tblAvailAttraction = MM_findObj("tblAvailAttraction");
    //var trAttractionTotal = MM_findObj("AttractionTotal");
    
    //new attraction code **************************************************
    //*****************************************************************
    var trAttractionDates = MM_findObj("AttractionDates");
    //var inAttDateIn = MM_findObj('ctl00_PageContentPlaceHolder_AttractionOption_StartDateTextBox');
    //var inAttDateOut = MM_findObj('ctl00_PageContentPlaceHolder_AttractionOption_EndDateTextBox');
    
    var inAttDateIn = MM_findObj("ctl00_PageContentPlaceHolder_AttractionOption_StartDateDropDownList");
    showFirstOption(inAttDateIn, gStrPleaseWait, gStrClassWait); // clear date dropdownlist
    //*****************************************************************
    //*****************************************************************
    
    //var objDate = MM_findObj("divReservationFor");
    var objPrices = response.getElementsByTagName("price");
    var i, AUSDate;
    var td, tr;
    var strType;
    
    var blnOk = false;
    
    if (!Attraction.IsSubmitted) {
        objTotal.innerHTML = formatCurrency(0, objCurrency.Symbol) + " " + objCurrency.Text;
        calculateGrandTotal();
    }
    
    clearTable(tblAvailAttraction, false, false, false);
    tblAvailAttraction = tblAvailAttraction.tBodies[0];
    
    if (!handleError(response)) {
        if (objPrices && objPrices.length > 0) {
            blnOk = true;
            setDivVisibility("divAttractionSelectionPane", true);
            setDivVisibility("divAttractionSelectAnother", true);
            setDivVisibility("divAttractionButtonContainer", false);
            switchDivVisibility("divAttractionInstruction", "divAttractionInstruction2", false);
            
            switchDivVisibility("divAttractionSelectionPane", "divAttractionSelectionPaneMsg", true);

            for (i = 0; i < objPrices.length; i++) {
                Attraction.Items[i] = new OptionItem.New();

                if (objPrices[i].childNodes[4] && objPrices[i].childNodes[4].firstChild) {
                    Attraction.Items[i].Qty = objPrices[i].childNodes[4].firstChild.nodeValue;
                }
                else {
                    Attraction.Items[i].Qty = 0;
                }
                if (objPrices[i].childNodes[5] && objPrices[i].childNodes[5].firstChild) {
                    Attraction.Items[i].Time = objPrices[i].childNodes[5].firstChild.nodeValue;
                }
                else {
                    Attraction.Items[i].Time = "";
                }
                if (objPrices[i].childNodes[3] && objPrices[i].childNodes[3].firstChild) {
                    Attraction.Items[i].ID = objPrices[i].childNodes[3].firstChild.nodeValue;
                }
                else {
                    Attraction.Items[i].ID = "";
                }
                if (objPrices[i].childNodes[6] && objPrices[i].childNodes[6].firstChild) {
                    Attraction.Items[i].Date = objPrices[i].childNodes[6].firstChild.nodeValue;
                }
                else {
                    Attraction.Items[i].Date = "";
                }
                /*if (objPrices[i].childNodes[7] && objPrices[i].childNodes[7].firstChild) {
                    Attraction.Items[i].CheckoutDate = objPrices[i].childNodes[7].firstChild.nodeValue;
                }
                else {
                    Attraction.Items[i].CheckoutDate = "";
                }*/

                //new attraction code **************************************************
                //*****************************************************************
                if (objPrices[i].childNodes[8] && objPrices[i].childNodes[8].firstChild) {
                    Attraction.Year = parseInt(objPrices[i].childNodes[8].firstChild.nodeValue);
                }
                else {
                    Attraction.Year = 0;
                }
                //*****************************************************************
                //*****************************************************************

                if (objPrices[i].childNodes[2] && objPrices[i].childNodes[2].firstChild) {
                    Attraction.Items[i].Price = unformatCurrency(objPrices[i].childNodes[2].firstChild.nodeValue, objCurrency.Symbol, objCurrency.Text);
                }
                else {
                    Attraction.Items[i].Price = 0;
                }
                if (objPrices[i].childNodes[1] && objPrices[i].childNodes[1].firstChild) {
                    Attraction.Items[i].Description = objPrices[i].childNodes[1].firstChild.nodeValue;
                }
                else {
                    Attraction.Items[i].Description = "";
                }
                if (objPrices[i].childNodes[0] && objPrices[i].childNodes[0].firstChild) {
                    strType = objPrices[i].childNodes[0].firstChild.nodeValue;
                }
                else {
                    strType = "";
                }
                Attraction.Items[i].Type = strType;

                tr = createObj("tr");
                // Empty Column
                td = createObj("td");
                td.innerHTML = "&nbsp;";
                tr.appendChild(td);

                // Quantity dropdown
                td = createObj("td");
                qty = renderQtyDropdownList("idAttractionQty" + i, gIntQtyMinAttraction, gIntQtyMaxAttraction, calcAttractionTotal, Attraction.Items[i].Qty);
                qty.className = "AttractionQuantity";
                td.appendChild(qty);
                tr.appendChild(td);

                // x column
                td = createObj("td");
                td.innerHTML = "x";
                tr.appendChild(td);

                // For column
                td = createObj("td");
                td.innerHTML = Attraction.Items[i].Type;
                tr.appendChild(td);

                // Description column
                td = createObj("td");
                td.innerHTML = Attraction.Items[i].Description;
                tr.appendChild(td);

                // Cost column
                td = createObj("td");
                td.innerHTML = formatCurrency(Attraction.Items[i].Price, objCurrency.Symbol);
                tr.appendChild(td);

                // = column
                td = createObj("td");
                td.innerHTML = "=";
                tr.appendChild(td);

                // Total column
                td = createObj("td");
                td.id = "tdAttractionTotal" + i;
                td.align = "right";
                td.innerHTML = formatCurrency(Attraction.Items[i].Price * Attraction.Items[i].Qty, objCurrency.Symbol);
                tr.appendChild(td);
                
                // Empty Column
                td = createObj("td");
                td.innerHTML = "&nbsp;";
                tr.appendChild(td);
                
                //new attraction code **************************************************
                //*****************************************************************
                tblAvailAttraction.insertBefore(tr, trAttractionDates);
                // add empty row
                tr = createObj("tr");
                td = createObj("td");
                td.colSpan = 9;
                td.className = "spacer";
                tr.appendChild(td);
                // add spacer row to the table
                tblAvailAttraction.insertBefore(tr, trAttractionDates);
                getUpsellAvailDates("attraction", Attraction.Items[i].ID);
            }
            AUSDate = SBZDates.formatOptionDate(Attraction.Items[0].Date + ' ' + Attraction.Year);
            
            // To display the pre-selected date corresponding to the Show date
            //var myDateIn = normalizeDate(AUSDate);
            //inAttDateIn.value = myDateIn;
            
            //var myDateOut = normalizeDate(SBZDates.nextDate(AUSDate));
            //inAttDateOut.value = myDateOut;
        }
    }

    if (!blnOk) {
        Attraction.ShoID = 0;
        Attraction.VenID = "";
        setDivVisibility('divAttractionSelectionPane', false);
        setDivVisibility('divAttractionSelectionPaneMsg', true, gStrNoReservation, gStrClassEmpty);
    } else {
        // Cris code
        //Attraction.ShoID;
        //Attraction.VenID;
        //var loader = new net.ContentLoader(gSitePath + "deepGetUpsellDates.aspx?sid=" + shoID + "&ven=" + venID + "&type=" + objType.Attraction, true, getAttractionReservationCompleted);
        var loader = new net.ContentLoader(gSitePath + "deepGetUpsellDates.aspx?type=" + objType.Attraction, true, getUpsellDatesCompleted);
    }
}

function getUpsellDatesCompleted() {
    var response = getResponseXML(this.req.responseXML);
    gDatesResponse = response; // Needed for DateFetchCompleted
    DateFetchCompleted("Attraction"); // Populate dropdownlist
}

function fnPushAttractionDates(sDates, sQty, sAttID) {
    $.ajax({
        "url": gSitePath + "deepAddDateRange.aspx"
		, "async": true
		, "type": "post"
		, "cache": false
		, "data": { "hpx": sDates, "qty": sQty, "dsid": sAttID, "sType": "attraction" }
		, "success": fnAttractionDatePushComplete
    });
}

function fnAttractionDatePushComplete(r) {
    if ($(r).find('error').length > 0) {
        alert($(r).find('error').text());
        setButtonStatus2("btnAttractionSubmit", Buttons.btnAddReservation, false);
    } else {
        submitAttractionCompleted();
    }
}
//*****************************************************************
//*****************************************************************

function setAttractionSession() {
    var cboAttractionSession = MM_findObj("cboAttractionSession");
    var strPost;

    strPost = "PerIndex=" + AttractionSessions.Items[cboAttractionSession.selectedIndex].PerIndex;
    strPost += "&PerTime=" + AttractionSessions.Items[cboAttractionSession.selectedIndex].PerTime;

    setButtonStatus2("btnSessionSetOk", Buttons.btnOkGrey, true);
    var loader = new net.ContentLoader(gSitePath + "deepShowHotelRestDatesCombo.aspx", false, getAttractionReservationCompleted, strPost);
}

function getAttractions() {
    Attraction.New();
    var loader = new net.ContentLoader(gSitePath + "deepGetHotelRestaurant.aspx?type=3", true, getAttractionsCompleted);
}

function getAttractionsCompleted() {
    var response = getResponseXML(this.req.responseXML);
    var objContainer = MM_findObj("divAttraction");
    var objItems = response.getElementsByTagName("item");
    var i;
    var div1, img1, obj, a, div2;
    var table, tbody, tr, td;
    var blnOk = false;
    var arrDivs = new Array();

    gAttractionResponse = null;
    sSelectedAttraction = "";

    if (!handleError(response)) {

        if (objItems && objItems.length > 0) {

            blnOk = true;
            gAttractionResponse = response;
            clearContainer(objContainer);

            for (i = 0; i < objItems.length; i++) {
                if ((i > 0) && (i % gIntMaxOptionColumns == 0)) {
                    div2 = createObj("div");
                    div2.className = "clear";
                    objContainer.appendChild(div2);
                }
                div1 = createObj("div", "Attraction_" + i);
                div1.id = "Attraction_" + i;
                div1.className = "HotelRestItem";
                if (i < gIntMaxOptionColumns) {
                    div1.className += " noTopMargin";
                }
                addEvent(div1, "click", getAttractionReservation);
                if (parseInt(objItems[i].childNodes[0].firstChild.nodeValue) == intAttraction) {
                    sSelectedAttraction = div1.id;
                }
                obj = createObj("div");
                obj.className = "image";
                img1 = createObj("img");
                img1.align = "left";

                if (objItems[i].childNodes[5].firstChild && objItems[i].childNodes[5].firstChild.nodeValue != "") {
                    img1.src = imageDir + "thumbnail/"  + objItems[i].childNodes[5].firstChild.nodeValue;
                }
                else {
                    img1.src = "../images/spacer.gif";
                }

                obj.appendChild(img1);
                div1.appendChild(obj);
                obj = createObj("div");
                obj.className = "details";

                span = createObj("span");
                span.className = "title2";
                if (objItems[i].childNodes[2] && objItems[i].childNodes[2].firstChild) {
                    span.innerHTML = objItems[i].childNodes[2].firstChild.nodeValue;
                }
                obj.appendChild(span);
                div2 = createObj("div");
                div2.className = "space5";
                obj.appendChild(div2);
                span = createObj("span");
                if (objItems[i].childNodes[3] && objItems[i].childNodes[3].firstChild) {
                    span.innerHTML = objItems[i].childNodes[3].firstChild.nodeValue;
                }
                obj.appendChild(span);
                /*
                obj.appendChild(createObj("br"));
				
				if (objItems[i].childNodes[4] && objItems[i].childNodes[4].firstChild)	{
                a = createObj("a");
                a.href = objItems[i].childNodes[4].firstChild.nodeValue;
                a.innerHTML = "View Location Map";
                a.target = "_blank";
                obj.appendChild(a);
                obj.appendChild(createObj("br"));
                }
                */
                div2 = createObj("div");
                div2.className = "space10";
                obj.appendChild(div2);

                table = createObj("table");
                tbody = createObj("tbody");
                tr = createObj("tr");
                td = createObj("td");
                td.vAlign = "middle";
                img1 = createObj("img");
                img1.src = "../images/buttons/select.png";
                img1.width = "62";
                img1.height = "20";
                img1.style.cursor = "pointer";
                td.appendChild(img1);
                tr.appendChild(td);

                // more information
                td = createObj("td");
                td.vAlign = "middle";
                td.innerHTML = "&nbsp;&nbsp;";
                tr.appendChild(td);
                td = createObj("td");
                td.vAlign = "middle";
                td.appendChild(document.createTextNode(" "));
                a = createObj("a");
                a.href = "javascript:NewWindow('PopupMoreInfo.aspx?aid=" + objItems[i].childNodes[1].firstChild.nodeValue + "','MoreInfo',660,600,'yes')";
                a.innerHTML = "More Information";
                td.appendChild(a);
                tr.appendChild(td);
                tbody.appendChild(tr);
                table.appendChild(tbody);
                obj.appendChild(table);

                div1.appendChild(obj);
                div2 = createObj("div");
                div2.className = "clear";
                div1.appendChild(div2);
                objContainer.appendChild(div1);
            }
            div2 = createObj("div");
            div2.className = "clear";
            objContainer.appendChild(div2);

            Attraction.IsMandatory = blnAttractionOption;

            if (sSelectedAttraction != "") {
                var objSelected = MM_findObj(sSelectedAttraction);
                if (objSelected) {
                    if (objSelected.click) {
                        objSelected.click();
                    }
                    if (objSelected.dispatchEvent) {
                        var clickevent = document.createEvent("MouseEvents")
                        clickevent.initEvent("click", true, true)
                        objSelected.dispatchEvent(clickevent)
                    }
                }
            }
            else {
                if (intAttraction != 0) {
                    //setDivVisibility("divAttractionError", true);
                    switchDivVisibility("divAttractionError", "divAttractionInstruction", true);
                }
            }
        }
        else {
            Attraction.IsMandatory = false;

            skipAttraction();
        }
    }

    if (!blnOk) {
        showContainerMsg(objContainer, gStrNoAvailAttraction, gStrClassEmpty);
    }
    else {
        //Attraction completed
        arrDivs[arrDivs.length] = 1;

        if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
            if (Hotel.IsSubmitted) {
                arrDivs[arrDivs.length] = 7; // Display Hotel info
            }
            if (Restaurant.IsSubmitted) {
                arrDivs[arrDivs.length] = 4; // Display Restaurant info
            }
        }
        else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
            if (Restaurant.IsSubmitted) {
                arrDivs[arrDivs.length] = 4; // Display Restaurant info
            }
            if (Hotel.IsSubmitted) {
                arrDivs[arrDivs.length] = 7; // Display Hotel info
            }
        }
        else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
            //Do nothing
        }

        if (intAttraction == 0) {
            arrDivs[arrDivs.length] = 11; //Attraction Option
        }
        else {
            arrDivs[arrDivs.length] = 12; //Attraction Selection
        }

        toggleDIVs(arrDivs);
    }
}

function submitAttractionCompleted() {
    var arrDivs = new Array();
    
    Attraction.IsSubmitted = true;
    Attraction.IsSkipped = false;
    
    if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
        arrDivs[arrDivs.length] = 1; // Display Ticket info
        if (Hotel.IsSubmitted) {
            arrDivs[arrDivs.length] = 7; // Display Hotel info
        }
        if (Restaurant.IsSubmitted) {
            arrDivs[arrDivs.length] = 4; // Display Restaurant info
        }
        arrDivs[arrDivs.length] = 13; // Display Attraction info
        arrDivs[arrDivs.length] = 8; // Display Insurance info
        toggleDIVs(arrDivs);

        getDespatch();
    }
    else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
        arrDivs[arrDivs.length] = 1; // Display Ticket info
        if (Restaurant.IsSubmitted) {
            arrDivs[arrDivs.length] = 4; // Display Restaurant info
        }
        if (Hotel.IsSubmitted) {
            arrDivs[arrDivs.length] = 7; // Display Hotel info
        }
        arrDivs[arrDivs.length] = 13; // Display Attraction info
        arrDivs[arrDivs.length] = 8; // Display Insurance info
        toggleDIVs(arrDivs);

        getDespatch();
    }
    else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
        arrDivs[arrDivs.length] = 1; // Display Ticket info
        arrDivs[arrDivs.length] = 13; // Display Attraction info
        /*if (Hotel.IsSubmitted) {
        arrDivs[arrDivs.length] = 7; // Display Hotel info
        }*/
        /*if (Restaurant.IsSubmitted) {
        arrDivs[arrDivs.length] = 4; // Display Restaurant info
        }*/
        //arrDivs[arrDivs.length] = 8; // Display Insurance info
        toggleDIVs(arrDivs);

        getHotels();
    }
}
//*****************************************************************
//*****************************************************************

function submitRestaurantCompleted() {
    var arrDivs = new Array();

    Restaurant.IsSubmitted = true;
    Restaurant.IsSkipped = false;

    if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
        arrDivs[arrDivs.length] = 1; // Display Ticket info
        if (Hotel.IsSubmitted) {
            arrDivs[arrDivs.length] = 7; // Display Hotel info
        }
        arrDivs[arrDivs.length] = 4; // Display Restaurant info
        //arrDivs[arrDivs.length] = 8; // Display Insurance info
        toggleDIVs(arrDivs);

        getAttractions();
    }
    else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
        arrDivs[arrDivs.length] = 1; // Display Ticket info ................... secondo la vecchia version dovrebbe essere commentato
        arrDivs[arrDivs.length] = 4; // Display Restaurant info ................... secondo la vecchia version dovrebbe essere commentato
        toggleDIVs(arrDivs);
            
        getHotels();
    }
    else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
        arrDivs[arrDivs.length] = 1; // Display Ticket info
        if (Attraction.IsSubmitted) {
            arrDivs[arrDivs.length] = 13; // Display Attraction info
        }
        if (Hotel.IsSubmitted) {
            arrDivs[arrDivs.length] = 7; // Display Hotel info
        }
        arrDivs[arrDivs.length] = 4; // Display Restaurant info
        arrDivs[arrDivs.length] = 8; // Display Insurance info
        toggleDIVs(arrDivs);
            
        getDespatch();
    }
}

//new hotel code **************************************************
//*****************************************************************
function submitStaySeeCompleted() {
    var arrDivs = new Array();
    /*var response = getResponseXML(this.req.responseXML);
	
	if (!handleError(response, 'hotel'))	{*/
    Hotel.IsSubmitted = true;
    Hotel.IsSkipped = false;
    
    if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
        /*arrDivs[arrDivs.length] = 1; // Display Ticket info
        arrDivs[arrDivs.length] = 4; // Display Restaurant info
        if (Hotel.IsSubmitted) {
            arrDivs[arrDivs.length] = 7; // Display Hotel info
        }
        if (Attraction.IsSubmitted) {
            arrDivs[arrDivs.length] = 13; // Display Attraction info
        }
        arrDivs[arrDivs.length] = 8; // Display Insurance info
        toggleDIVs(arrDivs);*/
        
        getRestaurants();
    }
    else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
        arrDivs[arrDivs.length] = 1; // Display Ticket info
        if (Restaurant.IsSubmitted) {
            arrDivs[arrDivs.length] = 4; // Display Restaurant info
        }
        arrDivs[arrDivs.length] = 7; // Display Hotel info
        /*if (Attraction.IsSubmitted) {
            arrDivs[arrDivs.length] = 13; // Display Attraction info
        }*/
        //arrDivs[arrDivs.length] = 8; // Display Insurance info
        toggleDIVs(arrDivs);
        
        getAttractions();
    }
    else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
        arrDivs[arrDivs.length] = 1; // Display Ticket info
        if (Attraction.IsSubmitted) {
            arrDivs[arrDivs.length] = 13; // Display Attraction info
        }
        arrDivs[arrDivs.length] = 7; // Display Hotel info
        /*if (Restaurant.IsSubmitted) {
            arrDivs[arrDivs.length] = 4; // Display Restaurant info
        }*/
        //arrDivs[arrDivs.length] = 8; // Display Insurance info
        toggleDIVs(arrDivs);

        getRestaurants();
    }
    
    /*if (optionOrder == 0 || optionOrder == 1) {
        getRestaurants();
    }
    else {
        arrDivs[arrDivs.length] = 1;
        arrDivs[arrDivs.length] = 7;

        if (Restaurant.IsSubmitted) {
            arrDivs[arrDivs.length] = 4;
        }
        arrDivs[arrDivs.length] = 8;
        getDespatch();
        
        toggleDIVs(arrDivs);
    }*/
    
    /*}
    else	{
    //setButtonStatus('btnHotelSubmit', 'btnAddReservation', false);
    setButtonStatus2('btnHotelSubmit', Buttons.btnAddReservation, false);
    }*/
}
//*****************************************************************
//*****************************************************************

/*
function submitStaySeeCompleted()	{
var response = getResponseXML(this.req.responseXML);
var arrDivs = new Array();
	
if (!handleError(response))	{
Hotel.IsSubmitted = true;
Hotel.IsSkipped = false;

if (optionOrder == 0 || optionOrder == 1) {
//if (gBlnReverse) {
getRestaurants();
}
else	{
arrDivs[arrDivs.length] = 1;
arrDivs[arrDivs.length] = 7;
			
if (Restaurant.IsSubmitted)	{
arrDivs[arrDivs.length] = 4;
}
arrDivs[arrDivs.length] = 8;
getDespatch();
}
toggleDIVs(arrDivs);
}
else	{
//setButtonStatus("btnHotelSubmit", "btnAddReservation", false);
setButtonStatus2("btnHotelSubmit", Buttons.btnAddReservation, false);
}
}
*/

function submitRestaurant() {
    var tblSelectedRestaurant = MM_findObj("tblSelectedRestaurant");
    var divTotalRestaurantPrice = MM_findObj("divTotaRestaurantPrice");
    var spanRestaurantTotalPrice = MM_findObj("spanRestaurantTotalPrice");
    var tblSelectedRestaurantCheckIn = MM_findObj("tblSelectedRestaurantCheckIn");
    var objSelect;
    var tr, td;
    var i;

    var sID = "", sQty = "";
    
    Restaurant.IsSubmitted = false;
    SelectedItems.New();

    clearTable(tblSelectedRestaurant, false, false, false);
    clearTable(tblSelectedRestaurantCheckIn, false, false, false);
    tblSelectedRestaurant = tblSelectedRestaurant.tBodies[0];
    tblSelectedRestaurantCheckIn = tblSelectedRestaurantCheckIn.tBodies[0];

    for (i = 0; i < Restaurant.Items.length; i++) {
        objSelect = MM_findObj("idRestaurantQty" + i);
        if (objSelect) {
            if (objSelect.value != "0") {
                if (sQty != "") sQty += ",";
                sQty += objSelect.value;

                if (sID != "") sID += ",";
                sID += Restaurant.Items[i].ID;

                SelectedItems.Add(Restaurant.Items[i].ID, objSelect.value);
                tr = createObj("tr");

                // No. of Guests
                td = createObj("td");
                td.innerHTML = objSelect.value;
                td.vAlign = "top";
                tr.appendChild(td);

                // For
                td = createObj("td");
                td.innerHTML = Restaurant.Items[i].Type;
                td.vAlign = "top";
                tr.appendChild(td);

                // Discount Code
                td = createObj("td");
                td.innerHTML = Restaurant.Items[i].Description;
                td.vAlign = "top";
                tr.appendChild(td);

//                // Time
//                td = createObj("td");
//                td.innerHTML = Restaurant.Items[i].Time;
//                td.vAlign = "top";
//                tr.appendChild(td);
                
                tblSelectedRestaurant.appendChild(tr);

                tr = createObj("tr");

                td = createObj("td");
                td.innerHTML = Restaurant.Items[i].Date + ", " + Restaurant.Items[i].Time;
                td.vAlign = "top";
                tr.appendChild(td);

                tblSelectedRestaurantCheckIn.appendChild(tr);


            }
        }
    }

    /*if (Restaurant.Items.length > 0) {
        var strPost = SelectedItems.ToString();

        if (strPost == "") {
            alert("Please choose the number of guests for Dinner & Show Option.");
        }
        else {
            setButtonStatus2("btnRestaurantSubmit", Buttons.btnAddReservationGrey, true);
            var loader = new net.ContentLoader(gSitePath + "deepEventPrices.aspx?type=2", false, submitRestaurantCompleted, strPost);
            setTotalPrice("spanRestaurantTotalPrice", Restaurant);
            divTotaRestaurantPrice.innerHTML = spanRestaurantTotalPrice.innerHTML;
        }
    }
    else {
        alert("Please choose a restaurant from the list.");
    }*/




    if (Restaurant.Items.length > 0) {
        if (sQty == "") {
            alert("Please choose the number of guests for Restaurant Option.");
        }
        else {
            setButtonStatus2("btnRestaurantSubmit", Buttons.btnAddReservationGrey, true);
            var strPost = "id=" + encodeURI(sID) + "&qty=" + sQty;
            //gSitePath +
            $.post("deepEventPrices.aspx?type=2", { id: sID, qty: sQty }, submitRestaurantCompleted, "xml");
            setTotalPrice("spanRestaurantTotalPrice", Restaurant);
            divTotalRestaurantPrice.innerHTML = spanRestaurantTotalPrice.innerHTML;
        }
    }
    else {
        alert("Please ensure you have selected a restaurant, the date and the quantity of people");
    }





}

function proceedToDinnerShow() {
    var arrDivs = new Array();

    oCurrentProcess = objType.Restaurant;
    
    arrDivs[arrDivs.length] = 1; // Display Ticket info
    if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
        if (Hotel.IsSubmitted) {
            arrDivs[arrDivs.length] = 7; // Display Hotel info
        }
    }
    else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
        //Do nothing
    }
    else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
        if (Attraction.IsSubmitted) {
            arrDivs[arrDivs.length] = 13; // Display Attraction info
        }
        if (Hotel.IsSubmitted) {
            arrDivs[arrDivs.length] = 7; // Display Hotel info
        }
    }
    arrDivs[arrDivs.length] = 3; //Restaurant Selection
    toggleDIVs(arrDivs);
}

function proceedToStaySee() {
    var arrDivs = new Array();

    oCurrentProcess = objType.Hotel;

    arrDivs[arrDivs.length] = 1; // Display Ticket info
    if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
        //Do nothing
    }
    else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
        if (Restaurant.IsSubmitted) {
            arrDivs[arrDivs.length] = 4; // Display Restaurant info
        }
    }
    else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
        if (Attraction.IsSubmitted) {
            arrDivs[arrDivs.length] = 13; // Display Attraction info
        }
    }
    arrDivs[arrDivs.length] = 6; //Hotel Selection
    toggleDIVs(arrDivs);
}

function proceedToAttraction() {
    var arrDivs = new Array();

    oCurrentProcess = objType.Attraction;

    arrDivs[arrDivs.length] = 1; // Display Ticket info
    if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
        if (Hotel.IsSubmitted) {
            arrDivs[arrDivs.length] = 7; // Display Hotel info
        }
        if (Restaurant.IsSubmitted) {
            arrDivs[arrDivs.length] = 4; // Display Restaurant info
        }
    }
    else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
        if (Restaurant.IsSubmitted) {
            arrDivs[arrDivs.length] = 4; // Display Restaurant info
        }
        if (Hotel.IsSubmitted) {
            arrDivs[arrDivs.length] = 7; // Display Hotel info
        }
    }
    else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
        //Do nothing
    }
    arrDivs[arrDivs.length] = 12; //Attraction Selection
    toggleDIVs(arrDivs);
}

function skipRestaurant() {
    var objTotal = MM_findObj("spanRestaurantTotalPrice");
    var arrDivs = new Array();

    //if (Tickets.IsSubmitted || ((optionOrder == 0 || optionOrder == 1) && (Hotel.IsSubmitted || Hotel.IsSkipped))) {
    if (Tickets.IsSubmitted) {
        objTotal.innerHTML = formatCurrency(0, objCurrency.Symbol) + " " + objCurrency.Text;
        calculateGrandTotal();

        setButtonStatus2("btnSkipRestaurant", Buttons.btnSkipRestaurantGrey, true);
        setButtonStatus2("btnSkipRestaurant2", Buttons.btnSkipRestaurantGrey, true);

        Restaurant.IsSubmitted = false;
        Restaurant.IsSkipped = true;

        arrDivs[arrDivs.length] = 1;
        if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
            if (Hotel.IsSubmitted) {
                arrDivs[arrDivs.length] = 7; // Display Hotel info
            }
            toggleDIVs(arrDivs);
            
            getAttractions();
        }
        else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
            getHotels();
        }
        else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
            if (Attraction.IsSubmitted) {
                arrDivs[arrDivs.length] = 13; // Display Attraction info
            }
            if (Hotel.IsSubmitted) {
                arrDivs[arrDivs.length] = 7; // Display Hotel info
            }
            arrDivs[arrDivs.length] = 8; // Display Insurance info
            toggleDIVs(arrDivs);
            
            getDespatch();
        }
    }
}

function skipStaySee() {
    var objTotal = MM_findObj("spanHotelTotalPrice");
    var arrDivs = new Array();

    //if (((optionOrder == 0 || optionOrder == 1) && Tickets.IsSubmitted) || (Restaurant.IsSubmitted || Restaurant.IsSkipped)) {
    if (Tickets.IsSubmitted) {
        objTotal.innerHTML = formatCurrency(0, objCurrency.Symbol) + " " + objCurrency.Text;
        calculateGrandTotal();
        
        setButtonStatus2("btnSkipHotel", Buttons.btnSkipHotelGrey, true);
        setButtonStatus2("btnSkipHotel2", Buttons.btnSkipHotelGrey, true);
        
        Hotel.IsSubmitted = false;
        Hotel.IsSkipped = true;
        
        arrDivs[arrDivs.length] = 1;
        if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
            getRestaurants();
        }
        else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
            if (Restaurant.IsSubmitted) {
                arrDivs[arrDivs.length] = 4; // Display Restaurant info
            }
            toggleDIVs(arrDivs);
            
            getAttractions();
        }
        else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
            if (Attraction.IsSubmitted) {
                arrDivs[arrDivs.length] = 13; // Display Attraction info
            }
            toggleDIVs(arrDivs);

            getRestaurants();
        }
    }
}

function skipAttraction() {
    var objTotal = MM_findObj("spanAttractionTotalPrice");
    var arrDivs = new Array();

    //if (Tickets.IsSubmitted || ((optionOrder == 0 || optionOrder == 1) && (Hotel.IsSubmitted || Hotel.IsSkipped))) {
    if (Tickets.IsSubmitted) {
        objTotal.innerHTML = formatCurrency(0, objCurrency.Symbol) + " " + objCurrency.Text;
        calculateGrandTotal();

        setButtonStatus2("btnSkipAttraction", Buttons.btnSkipAttractionGrey, true);
        setButtonStatus2("btnSkipAttraction2", Buttons.btnSkipAttractionGrey, true);

        Attraction.IsSubmitted = false;
        Attraction.IsSkipped = true;

        arrDivs[arrDivs.length] = 1;
        if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
            if (Hotel.IsSubmitted) {
                arrDivs[arrDivs.length] = 7; // Display Hotel info
            }
            if (Restaurant.IsSubmitted) {
                arrDivs[arrDivs.length] = 4; // Display Restaurant info
            }
            arrDivs[arrDivs.length] = 8; // Display Insurance info
            toggleDIVs(arrDivs);
            
            getDespatch();
        }
        else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
            if (Restaurant.IsSubmitted) {
                arrDivs[arrDivs.length] = 4; // Display Restaurant info
            }
            if (Hotel.IsSubmitted) {
                arrDivs[arrDivs.length] = 7; // Display Hotel info
            }
            arrDivs[arrDivs.length] = 8; // Display Insurance info
            toggleDIVs(arrDivs);

            getDespatch();
        }
        else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
            getHotels();
        }
    }
}

function getHotels() {
    var objContainer = MM_findObj("divHotel");
    
    if (objContainer) {
        showContainerMsg(objContainer, gStrPleaseWait, gStrClassWait);
    }
    
    Hotel.New();
    var loader = new net.ContentLoader(gSitePath + "deepGetHotelRestaurant.aspx?type=1", true, getHotelsCompleted);
}

function getHotelsCompleted() {
    var response = getResponseXML(this.req.responseXML);
    var objContainer = MM_findObj("divHotel");
    var objItems = response.getElementsByTagName("item");
    var i, j;
    var div1, img1, obj, a, div2;
    var table, tbody, tr, td;
    var rating = 0;
    var blnOk = false;
    var arrDivs = new Array();

    gStayResponse = null;
    
    if (!handleError(response)) {
        if (objItems && objItems.length > 0) {
            gStayResponse = response;
            clearContainer(objContainer);
            for (i = 0; i < objItems.length; i++) {
                if ((i > 0) && (i % gIntMaxOptionColumns == 0)) {
                    div2 = createObj("div");
                    div2.className = "clear";
                    objContainer.appendChild(div2);
                }
                div1 = createObj("div", "Hotel_" + i);
                div1.id = "Hotel_" + i;
                div1.className = "HotelRestItem";
                if (i < gIntMaxOptionColumns) {
                    div1.className += " noTopMargin";
                }
                addEvent(div1, "click", getHotelReservation);
                if (parseInt(objItems[i].childNodes[0].firstChild.nodeValue) == intHotel) {
                    sSelectedHotel = div1.id;
                }
                obj = createObj("div");
                obj.className = "image";
                img1 = createObj("img");
                img1.align = "left";
                
                if (objItems[i].childNodes[5].firstChild && objItems[i].childNodes[5].firstChild.nodeValue != "") {
                    img1.src = imageDir + "thumbnail/" + objItems[i].childNodes[5].firstChild.nodeValue;
                }
                else {
                    img1.src = "../images/spacer.gif";
                }
                obj.appendChild(img1);
                div1.appendChild(obj);
                obj = createObj("div");
                obj.className = "details";

                span = createObj("span");
                span.className = "title2";
                if (objItems[i].childNodes[2] && objItems[i].childNodes[2].firstChild) {
                    span.innerHTML = objItems[i].childNodes[2].firstChild.nodeValue;
                }
                obj.appendChild(span);
                obj.appendChild(createObj("br"));

                if (objItems[i].childNodes[9] && objItems[i].childNodes[9].firstChild) {
                    rating = parseFloat(objItems[i].childNodes[9].firstChild.nodeValue);
                    for (j = 0; j < Math.floor(rating); j++) {
                        obj.appendChild(getOneStar());
                    }
                    if (rating > Math.floor(rating)) {
                        obj.appendChild(getHalfStar());
                    }
                }

                /*div2 = createObj("div");
                div2.className = "space5";
                obj.appendChild(div2);*/
                //span = createObj("span");
                
                if (objItems[i].childNodes[3] && objItems[i].childNodes[3].firstChild) {
                    span = createObj("span");
                    span.innerHTML = objItems[i].childNodes[3].firstChild.nodeValue;
                    obj.appendChild(span);
                    //obj.appendChild(createObj("br"));
                }
                
                if (objItems[i].childNodes[4] && objItems[i].childNodes[4].firstChild) {
                    a = createObj("a");
                    a.href = objItems[i].childNodes[4].firstChild.nodeValue;
                    a.innerHTML = "View Location Map";
                    a.target = "_blank";
                    obj.appendChild(a);
                    obj.appendChild(createObj("br"));
                }
                /*div2 = createObj("div");
                div2.className = "space10";
                obj.appendChild(div2);*/

                table = createObj("table");
                tbody = createObj("tbody");
                tr = createObj("tr");
                td = createObj("td");
                td.vAlign = "middle";
                img1 = createObj("img");
                img1.src = "../images/buttons/select.png";
                img1.width = "62";
                img1.height = "20";
                img1.style.cursor = "pointer";
                td.appendChild(img1);
                tr.appendChild(td);

                // more information
                td = createObj("td");
                td.vAlign = "middle";
                td.innerHTML = "&nbsp;&nbsp;";
                tr.appendChild(td);
                td = createObj("td");
                td.vAlign = "middle";
                a = createObj("a");
                //a.href = sFrontSiteUrl + "StaySeeDetail.aspx?hid=" + encodeURIComponent(objItems[i].childNodes[10].firstChild.nodeValue);
                a.href = "javascript:NewWindow('PopupMoreInfo.aspx?hid=" + objItems[i].childNodes[1].firstChild.nodeValue + "','MoreInfo',660,600,'yes')";
                //a.target = "_blank";
                a.innerHTML = "More Information";
                td.appendChild(a);
                tr.appendChild(td);
                tbody.appendChild(tr);
                table.appendChild(tbody);
                obj.appendChild(table);

                div1.appendChild(obj);
                div2 = createObj("div");
                div2.className = "clear";
                div1.appendChild(div2);
                objContainer.appendChild(div1);
            }
            div2 = createObj("div");
            div2.className = "clear";
            objContainer.appendChild(div2);

            blnOk = true;
            Hotel.IsMandatory = blnHotelOption;

            if (sSelectedHotel != "") {
                var objSelected = MM_findObj(sSelectedHotel);
                if (objSelected) {
                    if (objSelected.click) {
                        objSelected.click();
                    }
                    if (objSelected.dispatchEvent) {
                        var clickevent = document.createEvent("MouseEvents")
                        clickevent.initEvent("click", true, true)
                        objSelected.dispatchEvent(clickevent)
                    }
                }
            }
            else {
                if (intHotel != 0) {
                    //setDivVisibility("divHotelShowError", true);
                    switchDivVisibility("divHotelShowError", "divStaySeeInstruction", true);
                }
            }
        }
        else {
            Hotel.IsMandatory = false;
            skipStaySee();
        }
    }
    if (!blnOk) {
        showContainerMsg(objContainer, gStrNoAvailHotel, gStrClassEmpty);
    }
    else {
        //Hotel completed
        arrDivs[arrDivs.length] = 1; // Display Ticket info
        
        if (optionOrder == 0 || optionOrder == 1) { // 1. Hotel, 2. Restaurant, 3. Attraction
            //do nothing
        }
        else if (optionOrder == 2) { // 1. Restaurant, 2. Hotel, 3. Attraction
            if (Restaurant.IsSubmitted) {
                arrDivs[arrDivs.length] = 4; // Display Restaurant info
            }
        }
        else if (optionOrder == 3) { // 1. Attraction, 2. Hotel, 3. Restaurant
            if (Attraction.IsSubmitted) {
                arrDivs[arrDivs.length] = 13; // Display Attraction info
            }
        }

        if (intHotel == 0) {
            arrDivs[arrDivs.length] = 5; //Hotel Option
        }
        else {
            arrDivs[arrDivs.length] = 6; //Hotel Selection
        }
        
        toggleDIVs(arrDivs);
    }
}

//Attraction ****************************************************************************
//***************************************************************************************
function submitAttraction() {
    var tblSelectedAttraction = MM_findObj("tblSelectedAttraction");
    var divTotalAttractionPrice = MM_findObj("divTotalAttractionPrice");
    var spanAttractionTotalPrice = MM_findObj("spanAttractionTotalPrice");
    var tblSelectedAttractionCheckIn = MM_findObj("tblSelectedAttractionCheckIn");
    var objSelect;
    var tr, td;
    var i;

    var sID = "", sQty = "";
    //    var btnReserve = MM_findObj("btnAttractionSubmit");

    Attraction.IsSubmitted = false;
    SelectedItems.New();

    clearTable(tblSelectedAttraction, false, false, false);
    clearTable(tblSelectedAttractionCheckIn, false, false, false);
    tblSelectedAttraction = tblSelectedAttraction.tBodies[0];
    tblSelectedAttractionCheckIn = tblSelectedAttractionCheckIn.tBodies[0];
    
    for (i = 0; i < Attraction.Items.length; i++) {
        objSelect = MM_findObj("idAttractionQty" + i);
        if (objSelect) {
            if (objSelect.value != "0") {
                if (sQty != "") sQty += ",";
                sQty += objSelect.value;

                if (sID != "") sID += ",";
                sID += Attraction.Items[i].ID;
                
                SelectedItems.Add(Attraction.Items[i].ID, objSelect.value);
                tr = createObj("tr");

                // Quantity
                td = createObj("td");
                td.innerHTML = objSelect.value;
                td.vAlign = "top";
                tr.appendChild(td);

                // For
                td = createObj("td");
                td.innerHTML = Attraction.Items[i].Type;
                td.vAlign = "top";
                tr.appendChild(td);

                // Description
                td = createObj("td");
                td.innerHTML = Attraction.Items[i].Description;
                td.vAlign = "top";
                tr.appendChild(td);

                tblSelectedAttraction.appendChild(tr);

                tr = createObj("tr");

                td = createObj("td");
                td.innerHTML = Attraction.Items[i].Date + ", " + Attraction.Items[i].Time;
                td.vAlign = "top";
                tr.appendChild(td);

                tblSelectedAttractionCheckIn.appendChild(tr);
                //new Attraction code **************************************************
                //*****************************************************************
//                Attraction.RoomsSelected = true;
                //*****************************************************************
                //*****************************************************************
            }
        }
    }

    if (Attraction.Items.length > 0) {
        if (sQty == "") {
            alert("Please choose the number of guests for Attraction Option.");
        }
        else {
            setButtonStatus2("btnAttractionSubmit", Buttons.btnAddReservationGrey, true);
            var strPost = "id=" + encodeURI(sID) + "&qty=" + sQty;
            //gSitePath +
            $.post("deepEventPrices.aspx?type=4", { id: sID, qty: sQty }, submitAttractionCompleted, "xml");
            setTotalPrice("spanAttractionTotalPrice", Attraction);
            divTotalAttractionPrice.innerHTML = spanAttractionTotalPrice.innerHTML;
        }
    }
    else {
        alert("Please ensure you have selected an attraction, the date and the quantity of people");
    }
}

function submitAttraction_old() {
    var tblSelectedAttraction = MM_findObj("tblSelectedAttraction");
    var divTotalAttractionPrice = MM_findObj("divTotalAttractionPrice");
    var spanAttractionTotalPrice = MM_findObj("spanAttractionTotalPrice");
    var tblSelectedAttractionCheckIn = MM_findObj("tblSelectedAttractionCheckIn");
    var objSelect;
    var tr, td;
    var i;

    //new Attraction code **************************************************
    //*****************************************************************
    var j, strPost = "", sQty = "", sDSID = "";

    if (!validateDates("attraction")) {
        return void (0);
    }
    //*****************************************************************
    //*****************************************************************

    Attraction.IsSubmitted = false;
    SelectedItems.New();

    clearTable(tblSelectedAttraction, false, false, false);
    clearTable(tblSelectedAttractionCheckIn, false, false, false);
    tblSelectedAttraction = tblSelectedAttraction.tBodies[0];
    tblSelectedAttractionCheckIn = tblSelectedAttractionCheckIn.tBodies[0];

    for (i = 0; i < Attraction.Items.length; i++) {
        objSelect = MM_findObj("idAttractionQty" + i);
        if (objSelect) {
            if (objSelect.value != "0") {
                SelectedItems.Add(Attraction.Items[i].ID, objSelect.value);
                tr = createObj("tr");

                // Quantity
                td = createObj("td");
                td.innerHTML = objSelect.value;
                td.vAlign = "top";
                tr.appendChild(td);

                // For
                td = createObj("td");
                td.innerHTML = Attraction.Items[i].Type;
                td.vAlign = "top";
                tr.appendChild(td);

                // Description
                td = createObj("td");
                td.innerHTML = Attraction.Items[i].Description;
                td.vAlign = "top";
                tr.appendChild(td);

                tblSelectedAttraction.appendChild(tr);

                tr = createObj("tr");

                td = createObj("td");
                td.innerHTML = Attraction.Items[i].Date;
                td.vAlign = "top";
                tr.appendChild(td);

                /*td = createObj("td");
                td.innerHTML = Attraction.Items[i].CheckoutDate;
                td.vAlign = "top";
                tr.appendChild(td);*/

                tblSelectedAttractionCheckIn.appendChild(tr);
                //new Attraction code **************************************************
                //*****************************************************************
                Attraction.RoomsSelected = true;
                //*****************************************************************
                //*****************************************************************
            }
        }
    }

    //new Attraction code **************************************************
    //*****************************************************************
    //if (Attraction.Items.length > 0 && Attraction.BookedDates.length > 0) {
    if (Attraction.Items.length > 0 && Attraction.Days > 0) {
        if (Attraction.RoomsSelected === false) {
            alert("Please choose the number of guests for Attraction Option.");
        }
        else {
            //Concat room IDs and Qty
            for (i = 0; i < Attraction.Items.length; i++) {
                if (parseInt(Attraction.Items[i].Qty) > 0) {
                    sQty += '' + parseInt(Attraction.Items[i].Qty) + ',';
                    sDSID += Attraction.Items[i].ID + ',';
                }
            }

            sQty = sQty.substr(0, sQty.lastIndexOf(','));
            sDSID = sDSID.substr(0, sDSID.lastIndexOf(','));

            setButtonStatus2("btnAttractionSubmit", Buttons.btnAddReservationGrey, true);
            if (parseInt(sQty) > 0) {
                for (i = 0; i < Attraction.BookedDates.length; i++) {
                    strPost += Attraction.BookedDates[i].iPerIdx + ',';
                }

                strPost = (strPost.charAt(strPost.length - 1, 1) == ",") ? strPost.substring(0, strPost.length - 1) : strPost;
                fnPushAttractionDates(strPost, sQty, sDSID);
            }

            setTotalPrice("spanAttractionTotalPrice", Attraction);
            divTotalAttractionPrice.innerHTML = spanAttractionTotalPrice.innerHTML;
        }
    }
    else {
        alert("Please choose an attraction from the list.");
    }
}

//END Attraction ************************************************************************
//***************************************************************************************

/*
function calculateDinnerTotal()	{
	var objTotal = MM_findObj("spanRestaurantTotalPrice");
	var objQty = new Array();
	var objType = new Array();
	var sngTotal = 0;
	var i;
	
	for (i = 0; i < gIntMaxRestaurantTypes; i++)	{
		objQty[i] = MM_findObj("DinnerShowOption_ddlDinnerQty_" + i);
		objType[i] = MM_findObj("DinnerShowOption_ddlDinnerType_" + i);
		
		if (objQty[i] && objType[i])	{
			sngTotal += parseInt(objQty[i].value, 10) * Restaurant.Items[objType[i].selectedIndex].Price;
		}
	}

	objTotal.innerHTML = formatCurrency(sngTotal, objCurrency.Symbol) + " " + objCurrency.Text;
	calculateGrandTotal();
}

function calculateStayTotal()	{
	var objTotal = MM_findObj("spanHotelTotalPrice");
	var objQty = new Array();
	var objType = new Array();
	var sngTotal = 0;
	var i;
	
	for (i = 0; i < gIntMaxHotelTypes; i++)	{
		objQty[i] = MM_findObj("StaySeeOption_ddlStayQty_" + i);
		objType[i] = MM_findObj("StaySeeOption_ddlHotelType_" + i);
		
		if (objQty[i] && objType[i])	{
			sngTotal += parseInt(objQty[i].value, 10) * Hotel.Items[objType[i].selectedIndex].Price;
		}
	}
	objTotal.innerHTML = formatCurrency(sngTotal, objCurrency.Symbol) + " " + objCurrency.Text;
	calculateGrandTotal();
}
*/

function lockTickets()	{
	var objSelect
	var i;
	
	for (i = 0; i < Tickets.Items.length; i++)	{
		objSelect = MM_findObj("idQty" + i);
		if (objSelect)	{
			objSelect.disabled = true;
		}
	}
}

function reloadPage()	{
	window.location.reload(true);
}

//function fnShowInsurDetails(sPrice, sLimit) {
//  var sDollarPrice = "$" + sPrice + " SGD";
//	$("#divTotalInsurancePrice").text(sDollarPrice);
//	$("#divInsuranceDetails").text("Insurance Purchased");
//	Insurance.Total = sPrice;
//}

function getTotalTicketQuantity() {
	var i;
	var iTotalTicket = 0;
	
	for (i = 0; i < Tickets.Items.length; i++) {
		iTotalTicket += parseInt(Tickets.Items[i].Quantity, 10);
	}
	return iTotalTicket;
}

function setAmount(obj, obj2, objObject) {
	var sngTotal = 0;
	
	if (!objObject.IsSubmitted)	{
		if (obj.innerHTML != "")	{
			if (obj2)	{
				obj2.innerHTML = obj.innerHTML;
			}
			sngTotal = unformatCurrency(obj.innerHTML, objCurrency.Symbol, objCurrency.Text);
		}
		else	{
			obj.innerHTML = formatCurrency(0, objCurrency.Symbol) + " " + objCurrency.Text;
			if (obj2)	{
				obj2.innerHTML = obj.innerHTML;
			}
		}
	}
	else	{
		sngTotal = objObject.Total;
	}
	return parseFloat(sngTotal);
}

function setTotalPrice (strObj, objTotal) {
	var obj = MM_findObj(strObj);
	
	if (obj)	{
		if (obj.innerHTML != "") {
			objTotal.Total = unformatCurrency(obj.innerHTML, objCurrency.Symbol, objCurrency.Text);
		}
	}
}

function setButtonStatus(sID, sClass, bDisabled) {
	var objButton = MM_findObj(sID);
	
	if (objButton)	{
		objButton.className = sClass;
		objButton.disabled = bDisabled;
	}
}

function setButtonStatus2(sID, sImgPath, bDisabled)	{
	var objButton = MM_findObj(sID);
	var objImg;
	
	if (objButton) {
	    var objType = objButton.type;
	    if (objType == '') {
	        //this works for html "a & img" objects
	        objButton.childNodes[0].src = sImgPath;

	        var href;
	        if (bDisabled) {
	            href = objButton.getAttribute("href");
	            objButton.setAttribute("href_bak", href);
	            objButton.removeAttribute("href");
	        }
	        else {
	            href = objButton.getAttribute("href_bak");
	            if (href && href != "") {
	                objButton.setAttribute("href", href);
	                objButton.removeAttribute("href_bak");
	            }
	        }
	        
	    } else if (objType == 'image') {
		    //this works for asp.net "ImageButton"
	        objButton.src = sImgPath;

	        var onclick;
	        if (bDisabled) {
	            onclick = objButton.getAttribute("onclick");
	            objButton.setAttribute("onclick_bak", onclick);
	            objButton.removeAttribute("onclick");
	        }
	        else {
	            onclick = objButton.getAttribute("onclick_bak");
	            if (onclick && onclick != "") {
	                objButton.setAttribute("onclick", onclick);
	                objButton.removeAttribute("onclick_bak");
	            }
	        }
		}
	}
}

function setDivVisibility(sID, bVisible, sText, sClass)	{
	var objDiv = MM_findObj(sID);
	
	if (objDiv)	{
		objDiv.style.display = (bVisible) ? "block" : "none";
		if (sText != null)	{
			objDiv.innerHTML = sText;
		}
		if (sClass != null)	{
			objDiv.className = sClass;
		}
	}
}

function switchDivVisibility(sIDFirst, sIDSecond, bVisible)	{
	var objDivFirst = MM_findObj(sIDFirst);
	var objDivSecond = MM_findObj(sIDSecond);
	
	if (objDivFirst && objDivSecond)	{
		objDivFirst.style.display = (bVisible) ? "block" : "none";
		objDivSecond.style.display = (bVisible) ? "none" : "block";
	}
}

function appendAsterisk(sText, sSearchFor) {
    // The symbols (*, ** and #) are added here so they display only when the user is prompted to select the option
    // This way for all the rest of the booking process no symbol is displayed
    
    /*var searchForArray = sSearchFor.split(",");
    var re
    for (var i = 0; i < searchForArray.length; i++) {
        re = new RegExp(searchForArray[i]);
        if (sText.match(re))	{
            sText += "*";
		    break;
	    }
	}*/
    
    var re1 = new RegExp("Box Office");
    if (sText.match(re1)) {
        sText += "**";
        return sText;
    }
    
    var re2 = new RegExp("Standard Mail");
    if (sText.match(re2)) {
        sText += "*";
        return sText;
    }
    
    var re3 = new RegExp("Registered Mail");
    if (sText.match(re3)) {
        sText += "*#";
        return sText;
    }
    
    var re4 = new RegExp("Courier");
    if (sText.match(re4)) {
        sText += "*#";
        return sText;
    }
	
    return sText;
}

