// last modified: 7/1/2010
var xhl;
var divID = "";
var nbspace = " ";
var SearchWidget = function(_widgetObject, _searchDivID) {
	//SearchWidget.prototype.RANDOM_ID = "_" + Math.round(Math.random() * 999999);
    //var RAND = this.RANDOM_ID;
	this.RAND = '_side';
	this.RANDOM_ID = this.RAND;
	SearchWidget.prototype.SHOW_SIDE_SEARCH = true;
	SearchWidget.prototype.TODAYS_DATE = new Date();
    SearchWidget.prototype.FORM_SUBMISSION_URL = "";
	SearchWidget.prototype.SINGLE_HOTEL_ID = "";
	SearchWidget.prototype.HOTEL_PAGE_SEARCH = false;
	var HotelPageSearch = this.HOTEL_PAGE_SEARCH;
	var SingleHotelId = this.SINGLE_HOTEL_ID;
	SearchWidget.prototype.STAR_RATING_ENABLED = false;
	var StarRatingEnabled = this.STAR_RATING_ENABLED;
	SearchWidget.prototype.HOTEL_NAME_ENABLED = true;
	var HotelNameEnabled = this.HOTEL_NAME_ENABLED;
	SearchWidget.prototype.OPEN_RESULTS_IN_NEW_WINDOW = false;
	var OpenResultsInNewWindow = this.OPEN_RESULTS_IN_NEW_WINDOW;
	SearchWidget.prototype.call = null;
    var call = this.call;
	SearchWidget.prototype.calendarIsShown = false;
    var calenderShown = this.calendarIsShown;
    SearchWidget.prototype.CALENDAR_EVENT_OBJECT = null;
	var CalendarEventObject = this.CALENDAR_EVENT_OBJECT;
    SearchWidget.prototype.UseDoubleCalendar = true;
	var UseDoubleCalendar = this.UseDoubleCalendar;

	if (isEspanol()) {
		if(ShowSearch == true) {
			SearchWidget.prototype.CheckInCalendarMessage = "Selecciona la fecha inicial de tu b" + String.fromCharCode(250) + "squeda";
		} else {
			SearchWidget.prototype.CheckInCalendarMessage = "Selecciona tu fecha de entrada abajo";
		}
	} else {
		if(ShowSearch == true) {
			SearchWidget.prototype.CheckInCalendarMessage = "Choose your show start date below";
		} else if(this.AIR_HOTEL_PACKAGE == true) {
			SearchWidget.prototype.CheckInCalendarMessage = "Choose your Departure date below";
		} else {
			SearchWidget.prototype.CheckInCalendarMessage = "Choose your check-in date below";
		}
	}

	var CheckInCalendarMessage = this.CheckInCalendarMessage;
	if (isEspanol()) {
		if(ShowSearch == true) {
			SearchWidget.prototype.CheckOutCalendarMessage = "Selecciona la fecha final de tu b" + String.fromCharCode(250) + "squeda";
		} else {
			SearchWidget.prototype.CheckOutCalendarMessage = "Selecciona tu fecha de salida abajo";
		}
	} else {
		if(ShowSearch == true) {
			SearchWidget.prototype.CheckOutCalendarMessage = "Choose your show end date below";
		} else if(AirHotelPackage == true) {
			SearchWidget.prototype.CheckOutCalendarMessage = "Choose your Return date below";
		} else {
			SearchWidget.prototype.CheckOutCalendarMessage = "Choose your check-out date below";
		}
	}

	var CheckOutCalendarMessage = this.CheckOutCalendarMessage;

    SearchWidget.prototype.CHECK_IN_DATE = formatDate(new Date(cmxReadCookie("CHECKINDATE")));

	bIsAutomationDomain = false;
    if (unescape(location.search).toLowerCase().indexOf("automation=true") > -1) {
		bIsAutomationDomain = true;
	}

	function formatDate(_date) {
		if ((_date != null) && (YAHOO.widget.DateMath.before(new Date(_date), new Date()) == false)) {
			_date = _date;
		} else {
			_date = new Date();
		}

		var _month = "" + (_date.getMonth() + 1);
		var _day = "" + _date.getDate();

		if (_month.length == 1) { _month = "0" + _month;}
		if (_day.length == 1) { _day = "0" + _day; }
		_date = _month + "/" + _day + "/" + _date.getFullYear();

		return _date;
	};
    SearchWidget.prototype.getSearchWidgetID = function() {
        return "HotelSearchForm" + this.RAND;
    };

	SearchWidget.prototype.enableHotelName = function(_BooleanValue) {
		this.HOTEL_NAME_ENABLED = _BooleanValue;
		HotelNameEnabled = _BooleanValue;
	};

	SearchWidget.prototype.enableStarRating = function() {
		this.STAR_RATING_ENABLED = true;
		StarRatingEnabled = true;
	};

	this.openResultsInNewWindow = function(_BooleanValue) {
		this.OPEN_RESULTS_IN_NEW_WINDOW = _BooleanValue;
		OpenResultsInNewWindow = _BooleanValue;
	};

	SearchWidget.prototype.setSingleHotelSearch = function(_RCM_ID) {
		this.SINGLE_HOTEL_ID = _RCM_ID;
		SingleHotelId = _RCM_ID;
	};

    this.setGolfProductID = function(_golfID) {
    	this.GOLF_PROD_ID = _golfID;
		GolfProdId = _golfID;
	};

	this.enableAirPackage = function(_value) {
        if (_value == true) {
            this.MAX_NUMBER_OF_ROOMS = 2;
			MaxNumberOfRooms = 2;
            this.AIR_HOTEL_PACKAGE = true;
			AirHotelPackage = true;
			this.SHOW_SEARCH = false;

			ShowSearch = false;
			this.HOTEL_SEARCH = false;
			HotelSearch = false;
			var CheckInMessage = "Choose your Departure date below";
			var CheckOutMessage = "Choose your Return date below";
			this.CheckInCalendarMessage = CheckInMessage;
			CheckInCalendarMessage = CheckInMessage;
			this.CheckOutCalendarMessage = CheckOutMessage;
			CheckOutCalendarMessage = CheckOutMessage;
        } else {
            this.MAX_NUMBER_OF_ROOMS = 4;
			MaxNumberOfRooms = 4;
            this.AIR_HOTEL_PACKAGE = false;
			ShowAirPackage = false;
			this.HOTEL_SEARCH = false;
			HotelSearch = false;
        }
    };

    this.enableGolfSearch = function(_value) {
        if (_value == true) {
            this.MAX_NUMBER_OF_ROOMS = 2;
			MaxNumberOfRooms = 2;
            this.AIR_HOTEL_PACKAGE = false;
			AirHotelPackage = false;
			this.SHOW_SEARCH = false;
			ShowSearch = false;
			this.HOTEL_SEARCH = false;
			HotelSearch = false;
			this.GOLF_SEARCH = true;
			GolfSearch = true;
        } else {
            this.MAX_NUMBER_OF_ROOMS = 4;
			MaxNumberOfRooms = 4;
            this.AIR_HOTEL_PACKAGE = false;
			ShowAirPackage = false;
			this.HOTEL_SEARCH = false;
			HotelSearch = false;
        }
    };


    SearchWidget.prototype.setCheckOutInputTitle = function(_newTitle) {
        this.CHECK_OUT_INPUTFIELD_MESSAGE = _newTitle;
        if (getElem("inpCheckOutTitle" + this.RAND) != null) {
            getElem("inpCheckOutTitle" + this.RAND).innerHTML = _newTitle;
        }
    };

    SearchWidget.prototype.setCheckInInputTitle = function(_newTitle) {
        this.CHECK_IN_INPUTFIELD_MESSAGE = _newTitle;
        if (getElem("inpCheckInTitle" + this.RAND) != null) {
            getElem("inpCheckInTitle" + this.RAND).innerHTML = _newTitle;
        }
    };

    SearchWidget.prototype.CHECK_OUT_DATE = formatDate(new Date(cmxReadCookie("CHECKOUTDATE")));

	 var CHECK_IN_DATE = cmxReadCookie("CHECKINDATE");
   if ((CHECK_IN_DATE != null) && (YAHOO.widget.DateMath.before(new Date(CHECK_IN_DATE), new Date()) == false)) {
	  this.CHECK_IN_DATE = CHECK_IN_DATE;
      }
   else {
	  this.CHECK_IN_DATE = (this.TODAYS_DATE.getMonth() + 1) + "/" + this.TODAYS_DATE.getDate() + "/" + this.TODAYS_DATE.getFullYear();
   }
   var CHECK_OUT_DATE = cmxReadCookie("CHECKOUTDATE");
   if ((CHECK_OUT_DATE != null) && (YAHOO.widget.DateMath.before(new Date(CHECK_OUT_DATE), new Date()) == false)) {
      this.CHECK_OUT_DATE = cmxReadCookie("CHECKOUTDATE");
      }
   else {
      var _coDate = YAHOO.widget.DateMath.add(new Date(this.CHECK_IN_DATE), YAHOO.widget.DateMath.DAY, 2);
      this.CHECK_OUT_DATE = (_coDate.getMonth() + 1) + "/" + _coDate.getDate() + "/" + _coDate.getFullYear();
      }

    SearchWidget.prototype.CHECK_IN_INPUTFIELD_MESSAGE = "";
    SearchWidget.prototype.CHECK_OUT_INPUTFIELD_MESSAGE = "";

    SearchWidget.prototype.MAX_NUMBER_OF_ROOMS = 4;
	var MaxNumberOfRooms = this.MAX_NUMBER_OF_ROOMS;
    SearchWidget.prototype.NUM_OF_ROOMS = 1;
    SearchWidget.prototype.NUM_OF_NIGHTS = 2;

    SearchWidget.prototype.DEPARTURE_CITY_HEADER = "Departing From:";
    SearchWidget.prototype.DEPARTURE_CLASS_HEADER = "Class of Service:";
    SearchWidget.prototype.DEPARTURE_SEARCH_BY_HEADER = "Search By:";

	SearchWidget.prototype.HOTEL_SEARCH = true;
	var HotelSearch = this.HOTEL_SEARCH;
    SearchWidget.prototype.AIR_HOTEL_PACKAGE = false;
	var AirHotelPackage = this.AIR_HOTEL_PACKAGE;
	SearchWidget.prototype.SHOW_SEARCH = false;
	var ShowSearch = this.SHOW_SEARCH;
	SearchWidget.prototype.SIDE_SEARCH = false;
    var SideSearch = this.SIDE_SEARCH;
	SearchWidget.prototype.GOLF_SEARCH = false;
	var GolfSearch = this.GOLF_SEARCH;
	SearchWidget.prototype.GOLF_PROD_ID = "";
	GolfProdId = this.GOLF_PROD_ID;

	SearchWidget.prototype.renderWidget = function() {
		 var _errorDiv = newElem("div");
            addAttrib(_errorDiv, "id", "divHotelSearchErrorDiv" + this.RAND);
            addAttrib(_errorDiv, "class", "clsHotelSearchErrorDiv");
        getElem(_searchDivID).appendChild(_errorDiv);
        getElem("divHotelSearchErrorDiv" + this.RAND).style.display = "none";

        var _widget = newElem("form");
            addAttrib(_widget, "id", "HotelSearchForm" + this.RAND);
            addAttrib(_widget, "name", "HotelSearchForm" + this.RAND);
            addAttrib(_widget, "class", "HotelSearchForm");
			if (OpenResultsInNewWindow == true) {
				addAttrib(_widget, "target", "_new");
			}
            addAttrib(_widget, "action", this.FORM_SUBMISSION_URL);
            addAttrib(_widget, "method", "get");
        if(AirHotelPackage != true) {
            this.buildFormInputs(_widget);
		} else {
			this.buildAirHotelFormInputs(_widget);
		}
        var _widgetTable = newElem("table");
                addAttrib(_widgetTable, "class", "clsHotelSearchFields");
				if(this.HOTEL_PAGE_SEARCH == true) {
					addAttrib(_widgetTable, "width", "460px");
				}
            _widgetTable.appendChild(this.buildWidgetHeader());

		if (HotelSearch == true || GolfSearch == true) {
			_widgetTable.appendChild(this.buildHotelWidgetBody());
		} else if (ShowSearch == true) {
			_widgetTable.appendChild(this.buildShowWidgetBody());
		} else if (AirHotelPackage == true) {
			_widgetTable.appendChild(this.buildAirHotelWidget());

		}

		if (GolfSearch == true) {
			_widgetTable.appendChild(this.buildGolfWidgetBody());
		}
        _widget.appendChild(_widgetTable);

        if (AirHotelPackage != true) {

			if (ShowSearch != true && GolfSearch != true && SideSearch != true && this.HOTEL_PAGE_SEARCH != true) {

			 	var _widgetTable = newElem("table");
						addAttrib(_widgetTable, "class", "clsHotelSearchWidgetShell");
						addAttrib(_widgetTable, "id", "tblRoomSelector" + this.RAND);
					_widgetTable.appendChild(this.buildWidgetRoomSelectorArea());
			 	_widget.appendChild(_widgetTable);

			 	var _widgetTable = newElem("table");
					addAttrib(_widgetTable, "class", "clsHotelSearchChildrenShell");
					_widgetTable.appendChild(this.buildWidgetChildrenHeader());
					_widgetTable.appendChild(this.buildWidgetChildSelectorArea());
				_widget.appendChild(_widgetTable);
			}

			if (SideSearch == true) {
				var _widgetTable = newElem("table");
					_widgetTable.appendChild(this.buildSideWidgetBody());
				_widget.appendChild(_widgetTable);

			 	var _widgetTable = newElem("table");
			 	 	addAttrib(_widgetTable, "class", "clsTblRoomTable");
					_widgetTable.appendChild(this.buildSideWidgetRoomSelectorArea());
				_widget.appendChild(_widgetTable);

			 	var _widgetTable = newElem("table");
					_widgetTable.appendChild(this.buildWidgetChildrenHeader());
					_widgetTable.appendChild(this.buildSideWidgetChildSelectorArea());
				_widget.appendChild(_widgetTable);

				var _widgetTable = newElem("table");
					_widgetTable.appendChild(this.buildHotelStar());
				_widget.appendChild(_widgetTable);
			}
		} else {
			_widget.appendChild(this.buildWidgetAirSearchBy());
		}

        if(this.HOTEL_PAGE_SEARCH != true) {
        	var _widgetTable = newElem("table");
				if(this.AIR_HOTEL_PACKAGE == true) {
					addAttrib(_widgetTable, "class", "clsAirHotelSearchButtonShell");
				} else {
					addAttrib(_widgetTable, "class", "clsHotelSearchButtonShell");
				}
				_widgetTable.appendChild(this.buildWidgetSearchButton());
        	_widget.appendChild(_widgetTable);
		}
        getElem(_searchDivID).appendChild(_widget);
        if(SideSearch == true  && HotelNameEnabled == true && this.AIR_HOTEL_PACKAGE == false) {
			loadHotelListXML("/incl/HotelSearchList.xml", "selHotelSearchList" + this.RAND);
		} else if(this.AIR_HOTEL_PACKAGE == true) {
			loadHotelListXML("/javascript/widgets/searchwidget/AirHotelSearchDepartureList.xml", "depCity" + this.RAND);
			this.setDepartureCity("PHX");
		}
        this.reloadFormValues();
		getElem("inpCheckInDate" + this.RAND).value = formatDate(reformatDateField(getElem("inpCheckInDate" + this.RAND)));
		getElem("inpCheckOutDate" + this.RAND).value = formatDate(reformatDateField(getElem("inpCheckOutDate" + this.RAND)));

		// GW: added this to prevent form submission
		addAnEvent(_widget, 'submit', function (e) {
			if (e.preventDefault) e.preventDefault();
			return false;
		});

		// GW: added this to process the new stuff
		VDCtoTL.tlProcessNode(_widget.parentElement || _widget.parentNode);

		window.widgetInstances = this;
	};

	SearchWidget.prototype.buildAirHotelFormInputs = function(_formObject) {
		var _inputField = newElem("input");
			 addAttrib(_inputField, "id", "nights" + this.RAND);
			 addAttrib(_inputField, "type", "hidden");
			 _formObject.appendChild(_inputField);
		return _formObject;
	};

	SearchWidget.prototype.buildAirHotelWidget = function() {
		var _widgetTBody = newElem("tbody");

		var _tableRow = newElem("tr");
			 _widgetTBody.appendChild(_tableRow);

		var _tableData = newElem("td");
			addAttrib(_tableData, "class", "clsCheckInTitle");
			_tableRow.appendChild(_tableData);

		var _CheckInInputText = document.createTextNode(this.CHECK_IN_INPUTFIELD_MESSAGE);
		var _titleSpan = newElem("div");
			addAttrib(_titleSpan, "id", "inpCheckInTitle" + this.RAND);
			addAttrib(_titleSpan, "class", "txt_12");
			_titleSpan.appendChild(_CheckInInputText);
			_tableData.appendChild(_titleSpan);

		if(this.SIDE_SEARCH == true) {
			var _tableRow = newElem("tr");
			 _widgetTBody.appendChild(_tableRow);

			var _tableData = newElem("td");
				 addAttrib(_tableData, "class", "clsCheckInTitle");
				_tableRow.appendChild(_tableData);

			var _input = newElem("input");
				 addAttrib(_input, "type", "text");
				 addAttrib(_input, "width", "72");
				 addAttrib(_input, "class", "clsCalendarInput");
				 addAttrib(_input, "id", "inpCheckInDate" + this.RAND);
				 addAttrib(_input, "value", this.CHECK_IN_DATE);
                 addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
				 addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
				_tableData.appendChild(_input);

			var _anchor = newElem("a");
				addAttrib(_anchor, "href", "javascript:void(0);");
				addAttrib(_anchor, "id", "anchorCheckInDate" + this.RAND);
				addAttrib(_anchor, "class", "clsCalendarImgButton");
				addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

				var _image = newElem("img");
						addAttrib(_image, "id", "imgCheckInDate" + this.RAND);
						addAttrib(_image, "src", "/images/calendar_search.gif");
						addAttrib(_image, "class", "clsCalendarImage");
						addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
					_anchor.appendChild(_image);
					_tableData.appendChild(_anchor);

			var _tableRow = newElem("tr");
			 _widgetTBody.appendChild(_tableRow);

			var _tableData = newElem("td");
				addAttrib(_tableData, "class", "clsCheckOutTitle");
			 	_tableRow.appendChild(_tableData);

			var _CheckOutInputText = document.createTextNode(this.CHECK_OUT_INPUTFIELD_MESSAGE);
			var _titleSpan = newElem("div");
				addAttrib(_titleSpan, "id", "inpCheckOutTitle" + this.RAND);
				addAttrib(_titleSpan, "class", "txt_12");
				_titleSpan.appendChild(_CheckOutInputText);
				_tableData.appendChild(_titleSpan);

			var _tableRow = newElem("tr");
			 _widgetTBody.appendChild(_tableRow);

			var _tableData = newElem("td");
			addAttrib(_tableData, "class", "clsCheckInTitle");
			_tableRow.appendChild(_tableData);

			var _input = newElem("input");
				addAttrib(_input, "type", "text");
				addAttrib(_input, "width", "72");
				addAttrib(_input, "class", "clsCalendarInput");
				addAttrib(_input, "id", "inpCheckOutDate" + this.RAND);
				addAttrib(_input, "value", this.CHECK_OUT_DATE);
                addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
				addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
			_tableData.appendChild(_input);

			var _anchor = newElem("a");
				addAttrib(_anchor, "href", "javascript:void(0);");
				addAttrib(_anchor, "id", "anchorCheckOutDate" + this.RAND);
				addAttrib(_anchor, "class", "clsCalendarImgButton");
				addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

				var _image = newElem("img");
						addAttrib(_image, "id", "imgCheckOutDate" + this.RAND);
						addAttrib(_image, "src", "/images/calendar_search.gif");
						addAttrib(_image, "class", "clsCalendarImage");
						addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
					_anchor.appendChild(_image);
					_tableData.appendChild(_anchor);
		} else {

			var _tableData = newElem("td");
				addAttrib(_tableData, "class", "clsCheckOutTitle");
			 	_tableRow.appendChild(_tableData);

			var _CheckOutInputText = document.createTextNode(this.CHECK_OUT_INPUTFIELD_MESSAGE);
			var _titleSpan = newElem("div");
				addAttrib(_titleSpan, "id", "inpCheckOutTitle" + this.RAND);
				addAttrib(_titleSpan, "class", "txt_12");
				_titleSpan.appendChild(_CheckOutInputText);
				_tableData.appendChild(_titleSpan);



			var _tableRow = newElem("tr");
				 _widgetTBody.appendChild(_tableRow);

			var _tableData = newElem("td");
				addAttrib(_tableData, "class", "clsCheckInTitle");
				_tableRow.appendChild(_tableData);

			var _input = newElem("input");
				addAttrib(_input, "type", "text");
				addAttrib(_input, "width", "72");
				addAttrib(_input, "class", "clsCalendarInput");
				addAttrib(_input, "id", "inpCheckInDate" + this.RAND);
				addAttrib(_input, "value", this.CHECK_IN_DATE);
                addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
				addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
			_tableData.appendChild(_input);

			var _anchor = newElem("a");
				addAttrib(_anchor, "href", "javascript:void(0);");
				addAttrib(_anchor, "id", "anchorCheckInDate" + this.RAND);
				addAttrib(_anchor, "class", "clsCalendarImgButton");
				addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

				var _image = newElem("img");
						addAttrib(_image, "id", "imgCheckInDate" + this.RAND);
						addAttrib(_image, "src", "/images/calendar_search.gif");
						addAttrib(_image, "class", "clsCalendarImage");
						addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
					_anchor.appendChild(_image);
					_tableData.appendChild(_anchor);

			var _tableData = newElem("td");
				addAttrib(_tableData, "class", "clsCheckInTitle");
				_tableRow.appendChild(_tableData);

			var _input = newElem("input");
				addAttrib(_input, "type", "text");
				addAttrib(_input, "width", "72");
				addAttrib(_input, "class", "clsCalendarInput");
				addAttrib(_input, "id", "inpCheckOutDate" + this.RAND);
				addAttrib(_input, "value", this.CHECK_OUT_DATE);
                addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
				addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
			_tableData.appendChild(_input);

			var _anchor = newElem("a");
				addAttrib(_anchor, "href", "javascript:void(0);");
				addAttrib(_anchor, "id", "anchorCheckOutDate" + this.RAND);
				addAttrib(_anchor, "class", "clsCalendarImgButton");
				addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

				var _image = newElem("img");
						addAttrib(_image, "id", "imgCheckOutDate" + this.RAND);
						addAttrib(_image, "src", "/images/calendar_search.gif");
						addAttrib(_image, "class", "clsCalendarImage");
						addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
					_anchor.appendChild(_image);
					_tableData.appendChild(_anchor);
		}
			_widgetTBody.appendChild(this.buildWidgetDepartureCityHeader());
			_widgetTBody.appendChild(this.buildWidgetDepartureCity());

		var _tableRow = newElem("tr");
		    _widgetTBody.appendChild(_tableRow);

		var _tableData = newElem("td");
			 addAttrib(_tableData, "colspan", "2");
			_tableRow.appendChild(_tableData);
		var _tableTable = newElem("table");
			 if(this.SIDE_SEARCH == true) {
				addAttrib(_tableTable, "width", "205px");
			 } else {
			 	addAttrib(_tableTable, "width", "100%");
			 }
			 _tableData.appendChild(_tableTable);
			_tableTable.appendChild(this.buildAirWidgetRoomSelectorArea());
			if(this.SIDE_SEARCH == true) {
				var _tableRow = newElem("tr");
		    		_widgetTBody.appendChild(_tableRow);

				_tableRow.appendChild(this.buildWidgetAirClassHeader());

				var _tableRow = newElem("tr");
		    		_widgetTBody.appendChild(_tableRow);

				_tableRow.appendChild(this.buildWidgetAirClass());

				var _tableRow = newElem("tr");
		    		_widgetTBody.appendChild(_tableRow);

				_tableRow.appendChild(this.buildWidgetPromoCodeHeader());

				var _tableRow = newElem("tr");
		    		_widgetTBody.appendChild(_tableRow);

				_tableRow.appendChild(this.buildWidgetPromoCode());
			} else {
				var _tableRow = newElem("tr");
		    		_widgetTBody.appendChild(_tableRow);

				_tableRow.appendChild(this.buildWidgetAirClassHeader());
				_tableRow.appendChild(this.buildWidgetPromoCodeHeader());
				var _tableRow = newElem("tr");
		    		_widgetTBody.appendChild(_tableRow);

				_tableRow.appendChild(this.buildWidgetAirClass());
				_tableRow.appendChild(this.buildWidgetPromoCode());

			}

		return _widgetTBody;
	};

	SearchWidget.prototype.buildWidgetPromoCodeHeader = function() {

        var _tblCell = newElem("td");
			 addAttrib(_tblCell, "colspan", "2");
			 addAttrib(_tblCell, "class", "bold txt_12");

        var _toggleDivText = document.createTextNode("Promo Code: ");
            _tblCell.appendChild(_toggleDivText);

		return _tblCell;
	};

    SearchWidget.prototype.buildWidgetPromoCode = function() {

		var _tblCell = newElem("td");
			 addAttrib(_tblCell, "colspan", "2");

        var _PromoInput = newElem("input");
            addAttrib(_PromoInput, "id", "inpPromoCode" + this.RAND);
            addAttrib(_PromoInput, "type", "text");
			addAttrib(_PromoInput, "size", "12");
            _tblCell.appendChild(_PromoInput);
            //_div.appendChild(_toggleDiv);

            //_tblCell.appendChild(_toggleDiv);
        return _tblCell;
    };

	SearchWidget.prototype.buildWidgetAirClassHeader = function() {

        var _tblCell = newElem("td");

        var _divHeader = newElem("div");
			 addAttrib(_divHeader, "class", "bold txt_12");
        var _tblHeaderText = document.createTextNode(this.DEPARTURE_CLASS_HEADER);
            _divHeader.appendChild(_tblHeaderText);
            _tblCell.appendChild(_divHeader);

		return _tblCell;
	};

    SearchWidget.prototype.buildWidgetAirClass = function() {
		var _tblCell = newElem("td");

        var _inpDeparture = newElem("select");
            addAttrib(_inpDeparture, "id", "wClassCode" + this.RAND);

        var _inpOpt = newElem("option");
        var _optText = document.createTextNode("Coach");
            addAttrib(_inpOpt, "value", "Y");
            _inpOpt.appendChild(_optText);
            _inpDeparture.appendChild(_inpOpt);

        var _inpOpt = newElem("option");
        var _optText = document.createTextNode("First Class");
            addAttrib(_inpOpt, "value", "F");
            _inpOpt.appendChild(_optText);
            _inpDeparture.appendChild(_inpOpt);

            _tblCell.appendChild(_inpDeparture);

        return _tblCell;
    };

    SearchWidget.prototype.enableShowSearch = function(_value) {
        if (_value == true) {
            this.SHOW_SEARCH = true;
			ShowSearch = true;
			this.HOTEL_SEARCH = false;
			HotelSearch = false;
			if(isEspanol()) {
				var CheckInMessage = "Selecciona la fecha inicial de tu b" + String.fromCharCode(250) + "squeda";
				var CheckOutMessage = "Selecciona la fecha final de tu b" + String.fromCharCode(250) + "squeda";
			} else {
				var CheckInMessage = "Choose your show start date below";
				 var CheckOutMessage = "Choose your show end date below";
			}
			this.CheckInCalendarMessage = CheckInMessage;
			CheckInCalendarMessage = CheckInMessage;
			this.CheckOutCalendarMessage = CheckOutMessage;
			CheckOutCalendarMessage = CheckOutMessage;

			// GW - due to the way some page does NOT set as side search, need to default as true
			this.RAND = "_show";
			this.RANDOM_ID = this.RAND;
        } else {
            this.SHOW_SEARCH = false;
			ShowSearch = false;
			this.HOTEL_SEARCH = false;
			HotelSearch = false;
        }
    };

	SearchWidget.prototype.buildWidgetDepartureCityHeader = function() {
		var _tblRow = newElem("tr");

        var _tblCell = newElem("td");
			 addAttrib(_tblCell, "colspan", "2");
            _tblRow.appendChild(_tblCell);

        var _divHeader = newElem("div");
			 addAttrib(_divHeader, "class", "bold txt_12");
        var _tblHeaderText = document.createTextNode(this.DEPARTURE_CITY_HEADER);
            _divHeader.appendChild(_tblHeaderText);
            _tblCell.appendChild(_divHeader);

		return _tblRow;
	};

    SearchWidget.prototype.buildWidgetDepartureCity = function() {
        var _tblRow = newElem("tr");

		var _tblCell = newElem("td");
			 addAttrib(_tblCell, "colspan", "2");
            _tblRow.appendChild(_tblCell);

        _selObj = newElem("select");
			addAttrib(_selObj, "id", "depCity" + this.RAND);

        _tblCell.appendChild(_selObj);

        return _tblRow;
    };

    SearchWidget.prototype.buildWidgetAirSearchBy = function() {
		var _table123 = newElem("table");

		var _formObject = newElem("tbody");
			_table123.appendChild(_formObject);

		var _tblRow = newElem("tr");
			_formObject.appendChild(_tblRow);

        var _tblCell = newElem("td");
            _tblRow.appendChild(_tblCell);

        var _divHeader = newElem("span");
			 addAttrib(_divHeader, "class", "txt_12 bold");
        var _tblHeaderText = document.createTextNode(this.DEPARTURE_SEARCH_BY_HEADER);
            _divHeader.appendChild(_tblHeaderText);
            _tblCell.appendChild(_divHeader);

		var _tblRow = newElem("tr");
			_formObject.appendChild(_tblRow);

        var _tblCell = newElem("td");
            _tblRow.appendChild(_tblCell);

		var _inpDeparture = newElem("select");
            addAttrib(_inpDeparture, "id", "wBookingType" + this.RAND);
			addAttrib(_inpDeparture, "class", "wBookingType");

        var _inpOpt = newElem("option");
        var _optText = document.createTextNode("Low Price Finder (Flexible Dates)");
            addAttrib(_inpOpt, "value", "LFF");
            _inpOpt.appendChild(_optText);
            _inpDeparture.appendChild(_inpOpt);

        var _inpOpt = newElem("option");
        var _optText = document.createTextNode("Schedule (Set Dates)");
            addAttrib(_inpOpt, "value", "SBS");
            _inpOpt.appendChild(_optText);
            _inpDeparture.appendChild(_inpOpt);

			_tblCell.appendChild(_inpDeparture);

		        return _table123;
    };

    this.enableSideSearch = function(_value) {
        if (_value == true) {
            this.SIDE_SEARCH = true;
			SideSearch = true;
			this.HOTEL_SEARCH = false;
			HotelSearch = false;
			this.RAND = "_side";
			this.RANDOM_ID = this.RAND;
        } else {
            this.SIDE_SEARCH = false;
			SideSearch = false;
			this.RAND = "_btm";
			this.RANDOM_ID = this.RAND;
        }
    };

	this.buildHotelStar = function() {
		var _widgetTBody = newElem("tbody");

		if (this.HOTEL_NAME_ENABLED == true) {
			var _tableRow = newElem("tr");
				 _widgetTBody.appendChild(_tableRow);

			var _tableData = newElem("td");
				 addAttrib(_tableData, "class", "clsCheckInCell");
				_tableRow.appendChild(_tableData);

			if (isEspanol() == true) {
				var _CheckInInputText = document.createTextNode("Selecciona hotel:");
			} else {
				var _CheckInInputText = document.createTextNode("Select Hotel:");
			}
			var _titleSpan = newElem("div");
				addAttrib(_titleSpan, "class", "clsInputTitle");
				_titleSpan.appendChild(_CheckInInputText);
				_tableData.appendChild(_titleSpan);



			_selObj = newElem("select");
				addAttrib(_selObj, "id", "selHotelSearchList" + this.RAND);
				addAttrib(_selObj, "class", "clsSelHotelSearchListInputField");



			_tableData.appendChild(_selObj);

		}

		if (this.STAR_RATING_ENABLED == true) {
			var _tableRow = newElem("tr");
				 _widgetTBody.appendChild(_tableRow);

			var _tableData = newElem("td");
				 addAttrib(_tableData, "class", "clsCheckInCell");
				_tableRow.appendChild(_tableData);
			if (isEspanol() == true) {
				var _CheckInInputText = document.createTextNode("Categor" + String.fromCharCode(237) + "a por estrellas:");
			} else {
				var _CheckInInputText = document.createTextNode("Select Star Rating:");
			}

			var _titleSpan = newElem("div");
				addAttrib(_titleSpan, "class", "clsInputTitle");
				_titleSpan.appendChild(_CheckInInputText);
				_tableData.appendChild(_titleSpan);

			 _selObj = newElem("select");
				addAttrib(_selObj, "id", "hotelRating" + this.RAND);
				addAttrib(_selObj, "name", "hotelRating" + this.RAND);
				addAttrib(_selObj, "class", "clsInputField clsStarRating");
			var _starValue = 0;

			_starValue = ((i * 10) + 5);
			_optObj = newElem("option");

			if (isEspanol() == true) {
				_textObj = document.createTextNode("Todas las categor" + String.fromCharCode(237) + "as");
			} else {
				_textObj = document.createTextNode("Show all ratings");
			}
				addAttrib(_optObj, "value", "-1");
				_optObj.appendChild(_textObj);
				_selObj.appendChild(_optObj);

			for (var i = 5; i > 0; i--) {

				if (i < 5) {
					_starValue = ((i * 10) + 5);
					_optObj = newElem("option");

					if (isEspanol() == true) {
						if (i == 1) {
							_textObj = document.createTextNode(i + ".5 estrella");
						} else {
							_textObj = document.createTextNode(i + ".5 estrellas");
						}
					} else {
						if (i == 1) {
							_textObj = document.createTextNode(i + ".5 star");
						} else {
							_textObj = document.createTextNode(i + ".5 stars");
						}
					}
						addAttrib(_optObj, "value", _starValue);
						_optObj.appendChild(_textObj);
						_selObj.appendChild(_optObj);
				}

				_starValue = (i * 10);
				_optObj = newElem("option");
				if (isEspanol() == true) {
					if (i == 1) {
						_textObj = document.createTextNode(i + " estrella");
					} else {
						_textObj = document.createTextNode(i + " estrellas");
					}
				} else {
					if (i == 1) {
						_textObj = document.createTextNode(i + " star");
					} else {
						_textObj = document.createTextNode(i + " stars");
					}
				}

					addAttrib(_optObj, "value", _starValue);
					_optObj.appendChild(_textObj);
					_selObj.appendChild(_optObj);

			}
			_tableData.appendChild(_selObj);

		}

        return _widgetTBody;
	};

    this.buildSideWidgetBody = function() {
        var _widgetTBody = newElem("tbody");
             addAttrib(_widgetTBody, "class", "clsTblDateInputs");


        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);
             addAttrib(_tableRow, "align", "left");

        var _tableData = newElem("td");
             addAttrib(_tableData, "class", "clsCheckInCell");
            _tableRow.appendChild(_tableData);

        var _CheckInInputText = document.createTextNode(this.CHECK_IN_INPUTFIELD_MESSAGE);
        var _titleSpan = newElem("span");
            addAttrib(_titleSpan, "id", "inpCheckInTitle" + this.RAND);
            addAttrib(_titleSpan, "class", "clsInputTitle");
            _titleSpan.appendChild(_CheckInInputText);
            _tableData.appendChild(_titleSpan);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);
             addAttrib(_tableRow, "align", "left");

        var _tableData = newElem("td");
             addAttrib(_tableData, "class", "clsCheckInCell");
            _tableRow.appendChild(_tableData);

        var _input = newElem("input");
                addAttrib(_input, "type", "text");
                addAttrib(_input, "width", "72");
                addAttrib(_input, "class", "clsCalendarInput");
                addAttrib(_input, "id", "inpCheckInDate" + this.RAND);
                addAttrib(_input, "value", this.CHECK_IN_DATE);
                addAttrib(_input, "title", "Click to choose a check-in date.");

                addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
                addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
            _tableData.appendChild(_input);

        var _anchor = newElem("a");
                addAttrib(_anchor, "href", "javascript:void(0);");
                addAttrib(_anchor, "id", "anchorCheckInDate" + this.RAND);
                addAttrib(_anchor, "class", "clsCalendarImgButton");
                addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

                var _image = newElem("img");
                        addAttrib(_image, "id", "imgCheckInDate" + this.RAND);
                        addAttrib(_image, "src", "/images/calendar_search.gif");
                        addAttrib(_image, "class", "clsCalendarImage");
                		addAttrib(_image, "alt", "Click to choose a check-in date.");
                        addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
                    _anchor.appendChild(_image);
                    _tableData.appendChild(_anchor);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);
             addAttrib(_tableRow, "align", "left");

        var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

        var _CheckOutInputText = document.createTextNode(this.CHECK_OUT_INPUTFIELD_MESSAGE);
        var _titleSpan = newElem("span");
            addAttrib(_titleSpan, "id", "inpCheckOutTitle" + this.RAND);
            addAttrib(_titleSpan, "class", "clsInputTitle");
            _titleSpan.appendChild(_CheckOutInputText);
            _tableData.appendChild(_titleSpan);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);
             addAttrib(_tableRow, "align", "left");

        var _tableData = newElem("td");
             addAttrib(_tableData, "class", "clsCheckInCell");
            _tableRow.appendChild(_tableData);

        var _input = newElem("input");
                addAttrib(_input, "type", "text");
                addAttrib(_input, "width", "72");
                addAttrib(_input, "class", "clsCalendarInput");
                addAttrib(_input, "id", "inpCheckOutDate" + this.RAND);
                addAttrib(_input, "value", this.CHECK_OUT_DATE);
                addAttrib(_input, "title", "Click to choose a check-out date.");
                addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
                addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
            _tableData.appendChild(_input);

        var _anchor = newElem("a");
                addAttrib(_anchor, "href", "javascript:void(0);");
                addAttrib(_anchor, "id", "anchorCheckOutDate" + this.RAND);
                addAttrib(_anchor, "class", "clsCalendarImgButton");
                addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

                var _image = newElem("img");
                        addAttrib(_image, "id", "imgCheckOutDate" + this.RAND);
                        addAttrib(_image, "src", "/images/calendar_search.gif");
                        addAttrib(_image, "class", "clsCalendarImage");
                		addAttrib(_image, "alt", "Click to choose a check-out date.");
                        addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
                    _anchor.appendChild(_image);
                    _tableData.appendChild(_anchor);

		return _widgetTBody;
    };
	SearchWidget.prototype.sideShowSearch = function(position) {
		this.SHOW_SIDE_SEARCH = position;
		var ShowSideSearch = this.SHOW_SIDE_SEARCH;
		this.RAND = '_showbtm';
		this.RANDOM_ID = this.RAND;
	};

	SearchWidget.prototype.hotelSearchPage = function(pos) {
		this.HOTEL_PAGE_SEARCH = pos;
		var HotelPageSearch = this.HOTEL_PAGE_SEARCH;
	};
    SearchWidget.prototype.buildShowWidgetBody = function() {

		if(this.SHOW_SIDE_SEARCH == true) {
		var _widgetTBody = newElem("tbody");

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
            _tableRow.appendChild(_tableData);

        var _CheckInInputText = document.createTextNode(this.CHECK_IN_INPUTFIELD_MESSAGE);
        var _titleSpan = newElem("span");
            addAttrib(_titleSpan, "id", "inpCheckInTitle" + this.RAND);
				addAttrib(_titleSpan, "class", "clsInputTitle");
            _titleSpan.appendChild(_CheckInInputText);
            _tableData.appendChild(_titleSpan);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

        var _input = newElem("input");
                addAttrib(_input, "type", "text");
                addAttrib(_input, "width", "72");
                addAttrib(_input, "class", "clsCalendarInput");
                addAttrib(_input, "id", "inpCheckInDate" + this.RAND);
                addAttrib(_input, "value", this.CHECK_IN_DATE);
                addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
                addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
            _tableData.appendChild(_input);

        var _anchor = newElem("a");
                addAttrib(_anchor, "href", "javascript:void(0);");
                addAttrib(_anchor, "id", "anchorCheckInDate" + this.RAND);
                addAttrib(_anchor, "class", "clsCalendarImgButton");
                addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

                var _image = newElem("img");
                        addAttrib(_image, "id", "imgCheckInDate" + this.RAND);
                        addAttrib(_image, "src", "/images/calendar_search.gif");
                        addAttrib(_image, "class", "clsCalendarImage");
                        addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
                    _anchor.appendChild(_image);
                    _tableData.appendChild(_anchor);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

        var _CheckOutInputText = document.createTextNode(this.CHECK_OUT_INPUTFIELD_MESSAGE);
        var _titleSpan = newElem("span");
            addAttrib(_titleSpan, "id", "inpCheckOutTitle" + this.RAND);
				addAttrib(_titleSpan, "class", "clsInputTitle");
            _titleSpan.appendChild(_CheckOutInputText);
            _tableData.appendChild(_titleSpan);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

        var _input = newElem("input");
                addAttrib(_input, "type", "text");
                addAttrib(_input, "width", "72");
                addAttrib(_input, "class", "clsCalendarInput");
                addAttrib(_input, "id", "inpCheckOutDate" + this.RAND);
                addAttrib(_input, "value", this.CHECK_OUT_DATE);
                addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
                addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
            _tableData.appendChild(_input);

        var _anchor = newElem("a");
                addAttrib(_anchor, "href", "javascript:void(0);");
                addAttrib(_anchor, "id", "anchorCheckOutDate" + this.RAND);
                addAttrib(_anchor, "class", "clsCalendarImgButton");
                addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

                var _image = newElem("img");
                        addAttrib(_image, "id", "imgCheckOutDate" + this.RAND);
                        addAttrib(_image, "src", "/images/calendar_search.gif");
                        addAttrib(_image, "class", "clsCalendarImage");
                        addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
                    _anchor.appendChild(_image);
                    _tableData.appendChild(_anchor);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

		if (isEspanol()) {
			var _CheckInInputText = document.createTextNode("Categor" + String.fromCharCode(237).toLowerCase() + "a:");
		} else {
			var _CheckInInputText = document.createTextNode("Category:");
		}

		addAttrib(_tableData, "class", "clsInputTitle");
		_tableData.appendChild(_CheckInInputText);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

		var _selOpt = newElem("select");
            addAttrib(_selOpt, "id", "categories");
            addAttrib(_selOpt, "name", "categories");
        var _inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Todas las categor" + String.fromCharCode(237).toLowerCase() + "as");
			} else {
				var _optText = document.createTextNode("All Categories");
			}
            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "ALLCATS");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Estrellas");
			} else {
				var _optText = document.createTextNode("Headliners");
			}
            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "HEADLINER");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Producciones estelares");
			} else {
				var _optText = document.createTextNode("Production");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "SHOWS");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Comedia");
			} else {
				var _optText = document.createTextNode("Comedy");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "COMEDY");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Para adultos");
			} else {
				var _optText = document.createTextNode("Adult");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "ADULT");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Hipnosis");
			} else {
				var _optText = document.createTextNode("Hypnotist");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "HYPNOTISTS");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Tributo");
			} else {
				var _optText = document.createTextNode("Tribute");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "TRIBUTE");
			_selOpt.appendChild(_inpOpt);


		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Magia");
			} else {
				var _optText = document.createTextNode("Magic");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "MAGIC");
			_selOpt.appendChild(_inpOpt);
			_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Deportes");
			} else {
				var _optText = document.createTextNode("Sports");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "SPORTS");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Imitadores");
			} else {
				var _optText = document.createTextNode("Impressionist");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "IMPRESSIONIST");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Gratis");
			} else {
				var _optText = document.createTextNode("Free");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "FREE");
			_selOpt.appendChild(_inpOpt);

		_tableData.appendChild(_selOpt);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
			addAttrib(_tableData, "class", "clsInputTitle");
             _tableRow.appendChild(_tableData);

		if (isEspanol()) {
			var _CheckInInputText = document.createTextNode("o");
		} else {
			var _CheckInInputText = document.createTextNode("or");
		}

		_tableData.appendChild(_CheckInInputText);

		var _br = newElem("br");
		_tableData.appendChild(_br);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);


		if (isEspanol() == true) {
			var _CheckInInputText = document.createTextNode("Show o Artista:");
		} else {
			var _CheckInInputText = document.createTextNode("Show or Entertainer:");
		}
				addAttrib(_tableData, "class", "clsInputTitle");
			_tableData.appendChild(_CheckInInputText);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

        var _input = newElem("input");
            addAttrib(_input, "name", "name" + this.RAND);
            addAttrib(_input, "id", "name" + this.RAND);
			addAttrib(_input, "type", "text");
            addAttrib(_input, "width", "146");
        	_tableData.appendChild(_input);

        return _widgetTBody;
		} else {
		/* make wide show search widget for body */
		this.SHOW_SEARCH = true;
		var _widgetTBody = newElem("tbody");

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
            _tableRow.appendChild(_tableData);

        var _CheckInInputText = document.createTextNode(this.CHECK_IN_INPUTFIELD_MESSAGE);
        var _titleSpan = newElem("span");
            addAttrib(_titleSpan, "id", "inpCheckInTitle" + this.RAND);
				addAttrib(_titleSpan, "class", "clsInputTitle");
            _titleSpan.appendChild(_CheckInInputText);
            _tableData.appendChild(_titleSpan);

		 var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

		var _CheckOutInputText = document.createTextNode(this.CHECK_OUT_INPUTFIELD_MESSAGE);
		var _titleSpan1 = newElem("span");
            addAttrib(_titleSpan1, "id", "inpCheckOutTitle" + this.RAND);
				addAttrib(_titleSpan1, "class", "clsInputTitle");
            _titleSpan1.appendChild(_CheckOutInputText);
            _tableData.appendChild(_titleSpan1);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

        var _input = newElem("input");
                addAttrib(_input, "type", "text");
                addAttrib(_input, "width", "72");
                addAttrib(_input, "class", "clsCalendarInput");
                addAttrib(_input, "id", "inpCheckInDate" + this.RAND);
                addAttrib(_input, "value", this.CHECK_IN_DATE);
                addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
                addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
            _tableData.appendChild(_input);

        var _anchor = newElem("a");
                addAttrib(_anchor, "href", "javascript:void(0);");
                addAttrib(_anchor, "id", "anchorCheckInDate" + this.RAND);
                addAttrib(_anchor, "class", "clsCalendarImgButton");
                addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

                var _image = newElem("img");
                        addAttrib(_image, "id", "imgCheckInDate" + this.RAND);
                        addAttrib(_image, "src", "/images/calendar_search.gif");
                        addAttrib(_image, "class", "clsCalendarImage");
                        addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
                    _anchor.appendChild(_image);
                    _tableData.appendChild(_anchor);

		var _tableData = newElem("td");
             _tableRow.appendChild(_tableData);

        var _input = newElem("input");

                addAttrib(_input, "type", "text");
                addAttrib(_input, "width", "72");
                addAttrib(_input, "class", "clsCalendarInput");
                addAttrib(_input, "id", "inpCheckOutDate" + this.RAND);
                addAttrib(_input, "value", this.CHECK_OUT_DATE);
                addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
                addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
            _tableData.appendChild(_input);

        var _anchor = newElem("a");
                addAttrib(_anchor, "href", "javascript:void(0);");
                addAttrib(_anchor, "id", "anchorCheckOutDate" + this.RAND);
                addAttrib(_anchor, "class", "clsCalendarImgButton");
                addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

                var _image = newElem("img");
                        addAttrib(_image, "id", "imgCheckOutDate" + this.RAND);
                        addAttrib(_image, "src", "/images/calendar_search.gif");
                        addAttrib(_image, "class", "clsCalendarImage");
                        addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
                    _anchor.appendChild(_image);
                    _tableData.appendChild(_anchor);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
				addAttrib(_tableData, "colspan", "2");
             _tableRow.appendChild(_tableData);

		if (isEspanol()) {
			var _CheckInInputText = document.createTextNode("Categor" + String.fromCharCode(237).toLowerCase() + "a:");
		} else {
			var _CheckInInputText = document.createTextNode("Category:");
		}

		addAttrib(_tableData, "class", "clsInputTitle");
		_tableData.appendChild(_CheckInInputText);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
				addAttrib(_tableData, "colspan", "2");
             _tableRow.appendChild(_tableData);

		var _selOpt = newElem("select");
            addAttrib(_selOpt, "id", "categories1");
            addAttrib(_selOpt, "name", "categories");
        var _inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Todas las categor" + String.fromCharCode(237).toLowerCase() + "as");
			} else {
				var _optText = document.createTextNode("All Categories");
			}
            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "ALLCATS");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Estrellas");
			} else {
				var _optText = document.createTextNode("Headliners");
			}
            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "HEADLINER");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Producciones estelares");
			} else {
				var _optText = document.createTextNode("Production");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "SHOWS");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Comedia");
			} else {
				var _optText = document.createTextNode("Comedy");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "COMEDY");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Para adultos");
			} else {
				var _optText = document.createTextNode("Adult");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "ADULT");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");


			if (isEspanol()) {
				var _optText = document.createTextNode("Hipnosis");
			} else {
				var _optText = document.createTextNode("Hypnotist");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "HYPNOTISTS");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Tributo");
			} else {
				var _optText = document.createTextNode("Tribute");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "TRIBUTE");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Magia");
			} else {
				var _optText = document.createTextNode("Magic");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "MAGIC");
			_selOpt.appendChild(_inpOpt);

			_inpOpt = newElem("option");
			if (isEspanol()) {

				var _optText = document.createTextNode("Deportes");
			} else {
				var _optText = document.createTextNode("Sports");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "SPORTS");
			_selOpt.appendChild(_inpOpt);
			_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Imitadores");
			} else {
				var _optText = document.createTextNode("Impressionist");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "IMPRESSIONIST");
			_selOpt.appendChild(_inpOpt);

		_inpOpt = newElem("option");
			if (isEspanol()) {
				var _optText = document.createTextNode("Gratis");
			} else {
				var _optText = document.createTextNode("Free");
			}

            _inpOpt.appendChild(_optText);
            addAttrib(_inpOpt, "value", "FREE");
			_selOpt.appendChild(_inpOpt);

		_tableData.appendChild(_selOpt);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
			 addAttrib(_tableData, "class", "clsInputTitle");
			 _tableRow.appendChild(_tableData);

		if (isEspanol()) {
			var _CheckInInputText = document.createTextNode("o");
		} else {
			var _CheckInInputText = document.createTextNode("or");
		}

		_tableData.appendChild(_CheckInInputText);

		var _br = newElem("br");
		_tableData.appendChild(_br);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
				addAttrib(_tableData, "colspan", "2");
             _tableRow.appendChild(_tableData);


		if (isEspanol() == true) {
			var _CheckInInputText = document.createTextNode("Show o Artista:");

		} else {
			var _CheckInInputText = document.createTextNode("Show or Entertainer:");
		}
				addAttrib(_tableData, "class", "clsInputTitle");
			_tableData.appendChild(_CheckInInputText);

        var _tableRow = newElem("tr");
             _widgetTBody.appendChild(_tableRow);

        var _tableData = newElem("td");
				addAttrib(_tableData, "colspan", "2");
             _tableRow.appendChild(_tableData);

        var _input = newElem("input");
            addAttrib(_input, "name", "name" + this.RAND);
            addAttrib(_input, "id", "name" + this.RAND);
			addAttrib(_input, "type", "text");
            addAttrib(_input, "width", "146");
        	_tableData.appendChild(_input);

        return _widgetTBody
		}
    };

	function validateUSDate(strValue){
	   var objRegExp = new RegExp(/^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/);
      if(!objRegExp.test(strValue)) {
         return false;
         }
      else {
         var strSeparator = strValue.substring(2, 3);
         var arrayDate = strValue.split(strSeparator);
         var arrayLookup = {
            '01':31, '03':31, '04':30, '05':31, '06':30, '07':31, '08':31, '09':30, '10':31, '11':30, '12':31}
         ;
         var intDay = parseInt(arrayDate[1], 10);
         if(arrayLookup[arrayDate[0]] != null) {
            if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0) {
               return true;
               }
            }
         var intMonth = parseInt(arrayDate[0], 10);
         if(intMonth == 2) {
            var intYear = parseInt(arrayDate[2]);
            if(intDay > 0 && intDay < 29) {
               return true;
               }
            else if(intDay == 29) {
               if((intYear % 4 == 0) && (intYear % 100 != 0) || (intYear % 400 == 0)) {
                  return true;
                  }
               }
            }
         }
      return false;
	};

    this.getCalenderShown = function() {
        return calenderShown;
    };

    SearchWidget.prototype.setNumOfRooms = function(_newNumOfRooms) {
		if (_newNumOfRooms > 4) {
			_newNumOfRooms = 4;
		}

		this.NUM_OF_ROOMS = _newNumOfRooms;
		getElem("selRoomSelector" + this.RAND).selectedIndex = (this.NUM_OF_ROOMS - 1);
		this.toggleRoomRows();
    };

    SearchWidget.prototype.setNumOfAdults = function(_roomNum, _numOfAdults) {
			getElem(_roomNum + "selAdultSelector" + this.RAND).selectedIndex = (_numOfAdults - 1);
    };

    SearchWidget.prototype.setNumOfChildrenInRoom = function(_roomNumber, _NumOfChildren){
			if (_roomNumber > 4) { _roomNumber = 4; }

			if (_NumOfChildren > 3) { _NumOfChildren = 3; }

			var _boolFoundChildren = false;
			var _childrenRowElement = getElem("tr_children_" + (_roomNumber - 1) + this.RAND);

			getElem(_roomNumber + "selChildrenSelector" + this.RAND).selectedIndex = _NumOfChildren;

			for (c = 1; c < (this.MAX_NUMBER_OF_ROOMS + 1); c++) {
				if (getElem(c + "selChildrenSelector" + this.RAND).selectedIndex > 0) {
					_boolFoundChildren = true;
				}
			}
			if (_boolFoundChildren == true) {
				getElem("childAgesHeaderRow" + this.RAND).className = "clsHotelSearchWidgetChildrenHeaderShown txt_12 nowrap";
			} else {
				getElem("childAgesHeaderRow" + this.RAND).className = "clsHotelSearchWidgetChildrenHeaderHidden";
			}

			if (_NumOfChildren == 0) {
				_childrenRowElement.className = "clsChildrenSelectorRowHidden";
			} else {
				_childrenRowElement.className = "clsChildrenSelectorRowShown";
			}

			for (c = (_NumOfChildren + 1); c < 4; c++) {
				getElem("TDroom" + _roomNumber + "ChildAge" + (c + 1) + this.RAND).className = "clsChildAgeSelectorCellHidden";
			}

			for (c = 1; c < _NumOfChildren + 1; c++) {
				getElem("TDroom" + _roomNumber + "ChildAge" + (c + 1) + this.RAND).className = "clsChildAgeSelectorCellShown";
			}
    };

    SearchWidget.prototype.setAgeOfChildInRoom = function(_roomNumber, _childNumber, _childAge){
			if (_roomNumber > 4) {_roomNumber = 4;}
			if (_childNumber > 3) {_childNumber = 3;}
			if (_childAge > 17) {_childAge = 17;}
			if (_childAge == 0) {_childAge = 1;}
			if (_childAge == -1) {_childAge = 0;}
			getElem("selRoom" + (_roomNumber) + "ChildNum" + _childNumber + "Age" + this.RAND).selectedIndex = _childAge;
    };

		SearchWidget.prototype.getEventObject = function () {
			return CALENDAR_EVENT_OBJECT;
		};

    SearchWidget.prototype.reloadFormValues = function() {
			var _roomsToReload = 1;
			getElem("inpCheckInDate" + this.RAND).value = this.CHECK_IN_DATE;
			getElem("inpCheckOutDate" + this.RAND).value = this.CHECK_OUT_DATE;

			if (this.HOTEL_SEARCH == true || this.SIDE_SEARCH == true && this.AIR_HOTEL_PACKAGE != true) {
				if (cmxReadCookie("numRooms") != null) {
					this.setNumOfRooms(cmxReadCookie("numRooms"));
					_roomsToReload = parseInt(cmxReadCookie("numRooms"));
				}

				if (HotelNameEnabled == true && this.AIR_HOTEL_PACKAGE == false) {
					if (cmxReadCookie("searchList") != null) {
						getElem("selHotelSearchList" + this.RAND).value = cmxReadCookie("searchList");
					}
				}

				if (StarRatingEnabled == true) {
					if (cmxReadCookie("searchList") == null && cmxReadCookie("hotelRating") != null) {
						getElem("hotelRating" + this.RAND).value = cmxReadCookie("hotelRating");
					}
				}

				if (this.SHOW_SEARCH != true) {
					if (cmxReadCookie("numAdults") != null) {
						var _numAdults = cmxReadCookie("numAdults").replace("\"", "").split(",");
						for (a = 1; a < (_roomsToReload + 1); a++) {
							this.setNumOfAdults(parseInt(a), parseInt(_numAdults[a - 1]));
						}
					}

					if (cmxReadCookie("numChildren") != null) {
						var _numChildren = cmxReadCookie("numChildren").replace("\"", "").split(",");
						for (a = 1; a < (_roomsToReload + 1); a++) {
							this.setNumOfChildrenInRoom(parseInt(a), parseInt(_numChildren[a - 1]));
						}
					}

					if (cmxReadCookie("ChildrenAgesRoom1") != null) {
						var _childAges = cmxReadCookie("ChildrenAgesRoom1").replace("\"", "").split(",");
						if (_roomsToReload > 0) {
							for (a = 1; a < 4; a++) {
								this.setAgeOfChildInRoom(1, a, (parseInt(_childAges[a - 1])));
							}
						}
					}

					if (cmxReadCookie("ChildrenAgesRoom2") != null) {
						var _childAges = cmxReadCookie("ChildrenAgesRoom2").replace("\"", "").split(",");
						if (_roomsToReload > 1) {
							for (a = 1; a < 4; a++) {
								this.setAgeOfChildInRoom(2, a, (parseInt(_childAges[a - 1])));
							}
						}
					}

					if (cmxReadCookie("ChildrenAgesRoom3") != null) {
						var _childAges = cmxReadCookie("ChildrenAgesRoom3").replace("\"", "").split(",");
						if (_roomsToReload > 2) {
							for (a = 1; a < 4; a++) {
								this.setAgeOfChildInRoom(3, a, (parseInt(_childAges[a - 1])));
							}
						}
					}

					if (cmxReadCookie("ChildrenAgesRoom4") != null) {
						var _childAges = cmxReadCookie("ChildrenAgesRoom4").replace("\"", "").split(",");
						if (_roomsToReload > 3) {
							for (a = 1; a < 4; a++) {
								this.setAgeOfChildInRoom(4, a, (parseInt(_childAges[a - 1])));
							}
						}
					}
				}
			} else if(this.AIR_HOTEL_PACKAGE == true) {
				if (cmxReadCookie("CHECKINDATE") == null) {
					var t = new Date();
					var today = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 8);
					getElem("inpCheckInDate" + this.RAND).value = (today.getMonth() + 1) + "/" + today.getDate() + "/" + today.getFullYear();
					var _coDate = YAHOO.widget.DateMath.add(new Date(getElem("inpCheckInDate" + this.RAND).value), YAHOO.widget.DateMath.DAY, 2);
					getElem("inpCheckOutDate" + this.RAND).value = (_coDate.getMonth() + 1) + "/" + _coDate.getDate() + "/" + _coDate.getFullYear();
				}
				if (cmxReadCookie("numRooms") != null) {
					if(cmxReadCookie("numRooms") > 2) {
						this.setNumOfRooms(2);
						_roomsToReload = 2;
					} else {
						this.setNumOfRooms(cmxReadCookie("numRooms"));
						_roomsToReload = parseInt(cmxReadCookie("numRooms"));
					}
				}
				if (cmxReadCookie("numAdults") != null) {
					var _numAdults = cmxReadCookie("numAdults").split(",");
					for (a = 1; a < (_roomsToReload + 1); a++) {
						this.setNumOfAdults(parseInt(a), parseInt(_numAdults[a - 1]));
					}
				}

				if (cmxReadCookie("numChildren") != null) {
					var _numChildren = cmxReadCookie("numChildren").split(",");
					for (a = 1; a < (_roomsToReload + 1); a++) {
						this.setNumOfChildrenInRoom(parseInt(a), parseInt(_numChildren[a - 1]));
					}
				}

				if (cmxReadCookie("ChildrenAgesRoom1") != null) {
					var _childAges = cmxReadCookie("ChildrenAgesRoom1").split(",");
					if (_roomsToReload > 0) {
						for (a = 1; a < 4; a++) {
							this.setAgeOfChildInRoom(1, a, (parseInt(_childAges[a - 1])));
						}
					}
				}

				if (cmxReadCookie("ChildrenAgesRoom2") != null) {
					var _childAges = cmxReadCookie("ChildrenAgesRoom2").split(",");
					if (_roomsToReload > 1) {
						for (a = 1; a < 4; a++) {
							this.setAgeOfChildInRoom(2, a, (parseInt(_childAges[a - 1])));
						}
					}
				} //Cookie for AIRHOTEL is set up coma delimited, and is in the order of wClassCode, wBookingType, DepartureCity
				if (cmxReadCookie("AIRHOTEL") != null) {
					var _airHotel = cmxReadCookie("AIRHOTEL").split(",");
					this.setBookingType(_airHotel[1]);
					this.setClassOfService(_airHotel[0]);
					this.setDepartureCity(_airHotel[2]);
				}
			}
    };

		SearchWidget.prototype.setClassOfService = function(ty) {
			for(i = 0; i < getElem("wClassCode" + this.RAND).length; i++) {
				if(getElem("wClassCode" + this.RAND).options[i].value == ty) {
					getElem("wClassCode" + this.RAND).selectedIndex = i;
					break;
				}
			}
		};

		SearchWidget.prototype.setBookingType = function(ty) {
			for(i = 0; i < getElem("wBookingType" + this.RAND).length; i++) {
				if(getElem("wBookingType" + this.RAND).options[i].value == ty) {
					getElem("wBookingType" + this.RAND).selectedIndex = i;
					break;
				}
			}
		};
		SearchWidget.prototype.setDepartureCity = function(dep) {
				for(i = 0; i < getElem("depCity" + this.RAND).length; i++) {
					if(getElem("depCity" + this.RAND).options[i].value == dep) {
						getElem("depCity" + this.RAND).selectedIndex = i;
						break;
					}
				}
		};

    SearchWidget.prototype.buildFormInputs = function(_formObject) {
			if(this.SHOW_SEARCH != true || this.AIR_HOTEL_PACKAGE != true) {
				var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "availableOnline");
				addAttrib(_oElem, "value", "on");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "action");
					addAttrib(_oElem, "value", "search_action_new");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "id", "numEventsOnPage");
					addAttrib(_oElem, "name", "numEventsOnPage");
					addAttrib(_oElem, "value", "10");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "id", "resultsToShow");
					addAttrib(_oElem, "name", "resultsToShow");
					addAttrib(_oElem, "value", "10");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "orderBy");
					addAttrib(_oElem, "value", "WEIGHT");
				_formObject.appendChild(_oElem);

				if (CURRENT_DOMAIN.indexOf("espanol") > -1) {

					var _oElem = newElem("input");
						addAttrib(_oElem, "type", "hidden");
						addAttrib(_oElem, "name", "lang");
						addAttrib(_oElem, "value", "es");
					_formObject.appendChild(_oElem);

				}

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "searchType");
					addAttrib(_oElem, "value", "S");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "lang");
				if (CURRENT_DOMAIN.indexOf("espanol") > -1) {
					addAttrib(_oElem, "value", "es");
				}
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "id", "searchList");
					addAttrib(_oElem, "name", "searchList");

					if (this.SINGLE_HOTEL_ID.length > 0) {
						addAttrib(_oElem, "value", this.SINGLE_HOTEL_ID);
					} else {
						addAttrib(_oElem, "value", "A");
					}
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "id", "hotelRating");
					addAttrib(_oElem, "name", "hotelRating");
					addAttrib(_oElem, "value", "-1");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "homegobutton");
					addAttrib(_oElem, "value", "gobuttonclicked");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "beds");
					addAttrib(_oElem, "value", "1");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "nights" + this.RAND);
					addAttrib(_oElem, "id", "nights" + this.RAND);
					addAttrib(_oElem, "value", "2");
				_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "inMonth" + this.RAND);
				addAttrib(_oElem, "id", "inMonth" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "inDay" + this.RAND);
				addAttrib(_oElem, "id", "inDay" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "inYear" + this.RAND);
				addAttrib(_oElem, "id", "inYear" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "startDate" + this.RAND);
				addAttrib(_oElem, "id", "startDate" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "endDate" + this.RAND);
				addAttrib(_oElem, "id", "endDate" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "numRooms" + this.RAND);
				addAttrib(_oElem, "id", "numRooms" + this.RAND);
				addAttrib(_oElem, "value", "1");
			_formObject.appendChild(_oElem);

			for (r = 1; r < 5; r++) {
				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "room" + r + "NumAdults" + this.RAND);
					addAttrib(_oElem, "id", "room" + r + "NumAdults" + this.RAND);

					if (r == 1) {
						addAttrib(_oElem, "value", "2");
					} else {
						addAttrib(_oElem, "value", "1");
					}
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "room" + r + "NumChildren" + this.RAND);
					addAttrib(_oElem, "id", "room" + r + "NumChildren" + this.RAND);
					addAttrib(_oElem, "value", "");
				_formObject.appendChild(_oElem);

				for (c = 1; c < 4; c++) {
					var _oElem = newElem("input");
						addAttrib(_oElem, "type", "hidden");
						addAttrib(_oElem, "name", "room" + r + "ChildAge" + c + "" + this.RAND);
						addAttrib(_oElem, "id", "room" + r + "ChildAge" + c + "" + this.RAND);
						addAttrib(_oElem, "value", "0");
					_formObject.appendChild(_oElem);
				}
			}

		var _oElem = newElem("input");
			addAttrib(_oElem, "type", "hidden");
			addAttrib(_oElem, "name", "month");
			addAttrib(_oElem, "id", "month");
			addAttrib(_oElem, "value", "");
		_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "date");
				addAttrib(_oElem, "id", "date");
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "year");
				addAttrib(_oElem, "id", "year");
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "product_id");
				addAttrib(_oElem, "id", "product_id");
				addAttrib(_oElem, "value", this.GOLF_PROD_ID);
			_formObject.appendChild(_oElem);
		} else if(this.SHOW_SEARCH == true) { //START SHOW BUILD//////////////////////////////////////////////////////////////////////////////////////////////////
				var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "id", "numEventsOnPage");
				addAttrib(_oElem, "name", "numEventsOnPage");
				addAttrib(_oElem, "value", "10");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "id", "resultsToShow");
				addAttrib(_oElem, "name", "resultsToShow");
				addAttrib(_oElem, "value", "10");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "orderBy");
				addAttrib(_oElem, "value", "WEIGHT");
			_formObject.appendChild(_oElem);

			if (CURRENT_DOMAIN.indexOf("espanol") > -1) {

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "name", "lang");
					addAttrib(_oElem, "value", "es");
				_formObject.appendChild(_oElem);

			}
			if (CURRENT_DOMAIN.indexOf("espanol") > -1) {
				addAttrib(_oElem, "value", "es");
			}
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "nights" + this.RAND);
				addAttrib(_oElem, "id", "nights" + this.RAND);
				addAttrib(_oElem, "value", "2");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "inMonth" + this.RAND);
				addAttrib(_oElem, "id", "inMonth" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "inDay" + this.RAND);
				addAttrib(_oElem, "id", "inDay" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "inYear" + this.RAND);
				addAttrib(_oElem, "id", "inYear" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "startDate" + this.RAND);
				addAttrib(_oElem, "id", "startDate" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);

			var _oElem = newElem("input");
				addAttrib(_oElem, "type", "hidden");
				addAttrib(_oElem, "name", "endDate" + this.RAND);
				addAttrib(_oElem, "id", "endDate" + this.RAND);
				addAttrib(_oElem, "value", "");
			_formObject.appendChild(_oElem);
			} else if (this.AIR_HOTEL_PACKAGE == true) {
				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "id", "autoSearch");
					addAttrib(_oElem, "name", "AutoSubmit");
					addAttrib(_oElem, "value", "1");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("input");
					addAttrib(_oElem, "type", "hidden");
					addAttrib(_oElem, "id", "wAirHotel");
					addAttrib(_oElem, "name", "wAirHotel");
					addAttrib(_oElem, "value", "A");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("div");
					addAttrib(_oElem, "id", "room1ChildHiddenDiv");
				_formObject.appendChild(_oElem);

				var _oElem = newElem("div");
					addAttrib(_oElem, "id", "room2ChildHiddenDiv");
				_formObject.appendChild(_oElem);
			}
    };

    SearchWidget.prototype.buildGolfWidgetBody = function() {
			var _tblHeader = newElem("tbody");
			var _tblRow = newElem("tr");
				_tblHeader.appendChild(_tblRow);
			var _tblCell = newElem("td");

					var _div = newElem("div");

			if (isEspanol() == true) {
				var _tblHeaderText = document.createTextNode("Selecciona tu tee time:");
			} else {
				var _tblHeaderText = document.createTextNode("Select your tee time:");
			}

				_div.appendChild(_tblHeaderText);

			var _brTag = newElem("br");
				_div.appendChild(_brTag);

			_selObj = newElem("select");
			addAttrib(_selObj, "name", "time");
			addAttrib(_selObj, "id", "time");
			for (var m = 6; m < 13; m++) {
							_optObj = newElem("option");

				if (m != 12) {
					_sTime = m + " AM";
				} else {
					_sTime = m + " PM";
				}

				if (m < 10) {
					_mTime = "0" + m + "00";
				} else {
					_mTime = m + "00";
				}

							_textObj = document.createTextNode(_sTime);
									addAttrib(_optObj, "value", _mTime);
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
			}

			for (var m = 1; m < 9; m++) {
							_optObj = newElem("option");

							_textObj = document.createTextNode(m + " PM");
									addAttrib(_optObj, "value", ((m * 100) + 1200));
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
			}

					_div.appendChild(_selObj);
				_tblCell.appendChild(_div);
					_tblRow.appendChild(_tblCell);
				addAttrib(_tblCell, "class", "clsInputField");

			_brTag = newElem("br");
				_tblCell.appendChild(_brTag);

			if (isEspanol() == true) {
				_tblHeaderText = document.createTextNode("N" + String.fromCharCode(218).toLowerCase() + "mero de Golfers:");
			} else {
				_tblHeaderText = document.createTextNode("Number of golfers:");
			}
				_tblCell.appendChild(_tblHeaderText);

			_brTag = newElem("br");
				_tblCell.appendChild(_brTag);

				_selObj = newElem("select");
				addAttrib(_selObj, "name", "order_item_qty");
				addAttrib(_selObj, "id", "order_item_qty");
				for (g = 2; g < 5; g++) {
					_optObj = newElem("option");
					_textObj = document.createTextNode(g.toString());
						addAttrib(_optObj, "value", g.toString());
						if (g == 2) {
							addAttrib(_optObj, "selected", "true");
						}
						_optObj.appendChild(_textObj);
						_selObj.appendChild(_optObj);
				}

						_tblCell.appendChild(_selObj);
				_tblRow.appendChild(_tblCell);

			return _tblHeader;
    };

    SearchWidget.prototype.buildWidgetHeader = function() {
			var _tblHeader = newElem("thead");
			var _tblRow = newElem("tr");
				_tblHeader.appendChild(_tblRow);
			var _tblCell = newElem("td");
					addAttrib(_tblCell, "class", "clsHotelSearchWidgetHeader");
				_tblRow.appendChild(_tblCell);
			var _tblHeaderText = document.createTextNode("");
				_tblCell.appendChild(_tblHeaderText);

			return _tblHeader;
    };

    SearchWidget.prototype.buildHotelWidgetBody = function() {
			var _widgetTBody = newElem("tbody");

			var _tableRow = newElem("tr");
				 _widgetTBody.appendChild(_tableRow);

			var _tableData = newElem("td");
				addAttrib(_tableData, "class", "clsCheckInTitle");
			if(this.HOTEL_PAGE_SEARCH == true) {
				addAttrib(_tableData, "valign", "top");
			}
				_tableRow.appendChild(_tableData);

			var _CheckInInputText = document.createTextNode(this.CHECK_IN_INPUTFIELD_MESSAGE);
			var _titleSpan = newElem("div");
				addAttrib(_titleSpan, "id", "inpCheckInTitle" + this.RAND);
				_titleSpan.appendChild(_CheckInInputText);
				_tableData.appendChild(_titleSpan);

			var _lineBreak = newElem("br");
				_titleSpan.appendChild(_lineBreak);

			var _input = newElem("input");
					addAttrib(_input, "type", "text");
					addAttrib(_input, "width", "72");
					addAttrib(_input, "class", "clsCalendarInput");
					addAttrib(_input, "id", "inpCheckInDate" + this.RAND);
					addAttrib(_input, "value", this.CHECK_IN_DATE);
					addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
					addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
				_titleSpan.appendChild(_input);

			var _anchor = newElem("a");
					addAttrib(_anchor, "href", "javascript:void(0);");
					addAttrib(_anchor, "id", "anchorCheckInDate" + this.RAND);
					addAttrib(_anchor, "class", "clsCalendarImgButton");
					addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

					var _image = newElem("img");
							addAttrib(_image, "id", "imgCheckInDate" + this.RAND);
							addAttrib(_image, "src", "/images/calendar_search.gif");
							addAttrib(_image, "class", "clsCalendarImage");
							addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
						_anchor.appendChild(_image);
						_titleSpan.appendChild(_anchor);

			var _tableData = newElem("td");
				addAttrib(_tableData, "class", "clsCheckInTitle");
				_tableRow.appendChild(_tableData);

			if (this.SIDE_SEARCH == true || this.AIR_HOTEL_PACKAGE == true) {
				var _tableRow = newElem("tr");
					 _widgetTBody.appendChild(_tableRow);
			}

			var _tableData = newElem("td");
				addAttrib(_tableData, "class", "clsCheckOutTitle");
			if(this.HOTEL_PAGE_SEARCH == true) {
				addAttrib(_tableData, "valign", "top");
			}
				 _tableRow.appendChild(_tableData);

			var _CheckOutInputText = document.createTextNode(this.CHECK_OUT_INPUTFIELD_MESSAGE);
			var _titleSpan = newElem("div");
				addAttrib(_titleSpan, "id", "inpCheckOutTitle" + this.RAND);

			if (this.GOLF_SEARCH == true) {
				addAttrib(_tableData, "class", "clsHidden");
			}
				_titleSpan.appendChild(_CheckOutInputText);
				_tableData.appendChild(_titleSpan);

			var _lineBreak = newElem("br");
				_titleSpan.appendChild(_lineBreak);

			var _input = newElem("input");
					addAttrib(_input, "type", "text");
					addAttrib(_input, "width", "72");
					addAttrib(_input, "class", "clsCalendarInput");
					addAttrib(_input, "id", "inpCheckOutDate" + this.RAND);
					addAttrib(_input, "value", this.CHECK_OUT_DATE);
					addAnEvent(_input, "keypress", bind(this, this.hideSearchCalendar));
					addAnEvent(_input, "click", bind(this, this.displayHotelSearchCalendar));
				_titleSpan.appendChild(_input);

			var _anchor = newElem("a");
					addAttrib(_anchor, "href", "javascript:void(0);");
					addAttrib(_anchor, "id", "anchorCheckOutDate" + this.RAND);
					addAttrib(_anchor, "class", "clsCalendarImgButton");
					addAnEvent(_anchor, "click", bind(this, this.chainImageClickEvent));

					var _image = newElem("img");
						addAttrib(_image, "id", "imgCheckOutDate" + this.RAND);
						addAttrib(_image, "src", "/images/calendar_search.gif");
						addAttrib(_image, "class", "clsCalendarImage");
						addAnEvent(_image, "click", bind(this, this.displayHotelSearchCalendar));
						_anchor.appendChild(_image);
						_titleSpan.appendChild(_anchor);
			if(this.HOTEL_PAGE_SEARCH != true) {

				var _tableRow = newElem("tr");
					_widgetTBody.appendChild(_tableRow);

				var _tableData = newElem("td");
				 _tableRow.appendChild(_tableData);


				var _tableData = newElem("td");
				 _tableRow.appendChild(_tableData);
			} else {
				var _tableData = newElem("td");
					addAttrib(_tableData, "rowspan", "2");
					_tableRow.appendChild(_tableData);
				var _widgetTable = newElem("table");
						addAttrib(_widgetTable, "class", "clsHotelSearchWidgetShell");
						addAttrib(_widgetTable, "id", "tblRoomSelector" + this.RAND);
						addAttrib(_widgetTable, "width", "100%");
					_widgetTable.appendChild(this.buildWidgetRoomSelectorArea());
				 _tableData.appendChild(_widgetTable);
					var _tableRow = newElem("tr");
					_widgetTBody.appendChild(_tableRow);

				var _tableData = newElem("td");
					addAttrib(_tableData, "colspan", "3");
				 _tableRow.appendChild(_tableData);

				var _tableRow = newElem("tr");
					_widgetTBody.appendChild(_tableRow);

				var _tableData = newElem("td");
					addAttrib(_tableData, "colspan", "3");
				 _tableRow.appendChild(_tableData);

				var _tableData = newElem("td");
				 _tableRow.appendChild(_tableData);

				 var _widgetTable = newElem("table");
					addAttrib(_widgetTable, "class", "clsHotelSearchChildrenShell");
					addAttrib(_widgetTable, "width", "100%");
					_widgetTable.appendChild(this.buildWidgetChildrenHeader());
					_widgetTable.appendChild(this.buildWidgetChildSelectorArea());
				_tableData.appendChild(_widgetTable);

				var _widgetTable = newElem("table");
					addAttrib(_widgetTable, "class", "clsHotelSearchButtonShell");
					addAttrib(_widgetTable, "width", "100%");
					_widgetTable.appendChild(this.buildWidgetSearchButton());
						_tableData.appendChild(_widgetTable);


			}
			return _widgetTBody;
    };

    SearchWidget.prototype.chainImageClickEvent = function(ev) {
			var e = ev || window.event;
			//var eventElement = e.srcElement || e.srcElement || e.target;
			//if (document.all) {
			//eventElement = event.srcElement.parentElement.id.replace("anchor", "inp");
			//} else {
			//	eventElement = this.id.replace("anchor", "inp");
			//}
			//var eventElId = eventElement.parentNode.id.replace('anchor', 'inp');
			// GW - 3/31/2010 not triggering click.  instead, we call the correct method.
			//getElem(eventElId).click();
			this.displayHotelSearchCalendar(e);
    };

    SearchWidget.prototype.displayHotelSearchCalendar = function(ev) {
			var _currentCheckinDate = getElem("inpCheckInDate" + this.RAND).value;
			var _currentCheckoutDate = getElem("inpCheckOutDate" + this.RAND).value;
			var srcEventElement;

			var _tmpCheckinDateObj = new Date(_currentCheckinDate);
			var _tmpCheckoutDateObj = new Date(_currentCheckoutDate);

			if (_tmpCheckinDateObj == "NaN" || _tmpCheckinDateObj == "Invalid Date") {
				_tmpCheckinDateObj = new Date();
					var _day, _month;
					var indate = new Date();
					_month = (indate.getMonth() + 1) + "";
					if (_month.length == 1) {
					 _month = "0" + _month;
					 }
					_day = indate.getDate() + "";
					if (_day.length == 1) {
					 _day = "0" + _day;
					 }
				getElem("inpCheckInDate" + this.RAND).value = _month + "/" + _day + "/" + indate.getFullYear();
					_currentCheckinDate = getElem("inpCheckInDate" + this.RAND).value;
			}
			_2digitYear = _tmpCheckinDateObj.getFullYear();
			if (_tmpCheckinDateObj.getFullYear() < 2000) {

				getElem("inpCheckInDate" + this.RAND).value = (_tmpCheckinDateObj.getMonth() + 1) + "/" + _tmpCheckinDateObj.getDate() + "/" + (_2digitYear + 100);
				_currentCheckinDate = getElem("inpCheckInDate" + this.RAND).value;
				_tmpCheckinDateObj = new Date(_currentCheckinDate);
			}

			if (_tmpCheckoutDateObj == "NaN" || _tmpCheckoutDateObj == "Invalid Date") {
				_tmpCheckoutDateObj = YAHOO.widget.DateMath.add(_tmpCheckinDateObj, YAHOO.widget.DateMath.DAY, 2);
				var _day, _month;
				indate = YAHOO.widget.DateMath.add(_tmpCheckinDateObj, YAHOO.widget.DateMath.DAY, 2);
				_month = (indate.getMonth() + 1) + "";

				if (_month.length == 1) {
					_month = "0" + _month;
				}
				_day = indate.getDate() + "";

				if (_day.length == 1) {
					_day = "0" + _day;
				}

				getElem("inpCheckOutDate" + this.RAND).value = _month + "/" + _day + "/" + indate.getFullYear();
				_currentCheckoutDate = getElem("inpCheckOutDate" + this.RAND).value;
			}
			_2digitYear = _tmpCheckoutDateObj.getFullYear();
			if (_tmpCheckoutDateObj.getFullYear() < 2000) {

				getElem("inpCheckOutDate" + this.RAND).value = (_tmpCheckoutDateObj.getMonth() + 1) + "/" + _tmpCheckoutDateObj.getDate() + "/" + (_2digitYear + 100);
				_currentCheckoutDate = getElem("inpCheckOutDate" + this.RAND).value;

				_tmpCheckoutDateObj = new Date(_currentCheckoutDate);
			}

			if (!ev)
				ev = window.event;
			//if (document.all) {
				srcEventElement =  ev.srcElement || ev.target;
			//} else {
				//srcEventElement = this;
				if (srcEventElement.id.indexOf("img") > - 1) {
					var _oldID = srcEventElement.id.replace("img", "inp");
					_oldID = _oldID.replace("anchor", "inp");
					srcEventElement = getElem(_oldID);
				}
			//}

			CALENDAR_EVENT_OBJECT = srcEventElement;
			call = null;
			this.call = null;
			getElem("callContainerControls").style.display = "none";
			getElem("callContainer").innerHTML = "";

      if (this.call == null) {
         if (this.UseDoubleCalendar == true) {
            call = new YAHOO.widget.Calendar2up("call", "callContainer");
			this.call = call; // must set this!!!
            call.wireEvent("onSelect", bind(this, this.hotelSearchDateSelected));

            if (srcEventElement.id.toLowerCase().indexOf("checkin") > - 1) {
	               call.pages[0].addRenderer(_currentCheckinDate, call.pages[0].renderCellStyleSelected);
	               call.pages[1].addRenderer(_currentCheckinDate, call.pages[1].renderCellStyleSelected);
	               call.pages[0].minDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
	               call.pages[1].minDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
	               getElem("calendarTitle").innerHTML = CheckInCalendarMessage;
				   call.setMonth(_tmpCheckinDateObj.getMonth());
				   call.setYear(_tmpCheckinDateObj.getFullYear());
               } else {
	               call.pages[0].addRenderer(_currentCheckoutDate, call.pages[0].renderCellStyleSelected);
	               call.pages[1].addRenderer(_currentCheckoutDate, call.pages[1].renderCellStyleSelected);
	               call.pages[0].minDate = YAHOO.widget.DateMath.add(new Date(_currentCheckinDate), YAHOO.widget.DateMath.DAY, 1);
	               call.pages[1].minDate = YAHOO.widget.DateMath.add(new Date(_currentCheckinDate), YAHOO.widget.DateMath.DAY, 1);
				   call.setMonth(_tmpCheckoutDateObj.getMonth());
				   call.setYear(_tmpCheckoutDateObj.getFullYear());

	               getElem("calendarTitle").innerHTML = CheckOutCalendarMessage;
               }
            }

	         call.render();
	         hideSearchElements();
	         getElem("callContainerControls").style.display = "";
	         getElem("callContainerControls").style.position = "absolute";
	         call.eventSourceElement = srcEventElement.id;

         }

			_eventXPos = findXPos(srcEventElement);
			_eventYPos = findYPos(srcEventElement);
			_callendarWidth = getElem("callContainerControls").style.width;
			_callendarHeight = getElem("callContainerControls").style.height;
			_maxScreenWidth = document.body.offsetWidth;
			_maxScreenHeight = document.body.clientHeight;

			if ((_eventXPos + parseInt(_callendarWidth)) > _maxScreenWidth) {
				_eventXPos = _maxScreenWidth - parseInt(_callendarWidth);
			}
			if ((_eventYPos + parseInt(_callendarHeight)) > _maxScreenHeight) {
				_eventYPos = _maxScreenHeight - parseInt(_callendarHeight);
			}

			if (document.all) {
				getElem("callContainerControls").style.top = _eventYPos + 19;
				getElem("callContainerControls").style.left = _eventXPos;
			} else {
				getElem("callContainerControls").style.top = (_eventYPos + 18) + "px";
				getElem("callContainerControls").style.left = _eventXPos + "px";
			}

			mouseoverSearch();
			setCalenderShown(true);

			// required to have TL know about new widget
			VDCtoTL.tlProcessNode(getElem('callContainer'));
    };

    this.hideSearchCalendar = function() {
        call = null;
        getElem("callContainerControls").style.display = "none";
        getElem("callContainer").innerHTML = "";
        var elementsToHide = document.getElementsByTagName("select");

        for (x = 0; x < elementsToHide.length; x++) {
            elementsToHide[x].style.visibility = "";
        }
    };
    function setCalenderShown(_value) {
        calenderShown = _value;
    };
   function checkForO(_SearchString) {
		if(_SearchString.toLowerCase() == 'o') {
			_SearchString = '\"O\"';
		}
		return _SearchString;
	};
   this.setRandomIDStatic = function (_value) {
      //RAND = "_" + _value;
      //if (getElem("HotelSearchForm" + RAND) != null) {
      //   RAND = "_" + _value + Math.round(Math.random() * 999999);
      //   }
      };
    this.showSearchElements = function(){
        var elementsToHide = document.getElementsByTagName("select");

        for (x = 0; x < elementsToHide.length; x++) {
            elementsToHide[x].style.visibility = "";
        }
    };
	// used to be a global
    SearchWidget.prototype.hotelSearchDateSelected = function(e) {
		// GW - 4/1/2010
		VDCtoTL.tlAddEvent(e);
		call = this.call;
        var dateParts = call.selectedDates[0].toString().split(",");
	      var _day = dateParts[2], _month = dateParts[1], _year = dateParts[0];
	      var _dateSetType = "inpCheckInDate" + this.RAND;
	      if (call.eventSourceElement.toLowerCase().indexOf("checkin") > - 1) {
	         _dateSetType = "inpCheckInDate" + this.RAND;
	      }
	      if (call.eventSourceElement.toLowerCase().indexOf("checkout") > - 1) {
	         _dateSetType = "inpCheckOutDate" + this.RAND;
		  }
	      var _inputField = getElem(_dateSetType);
	      if (_month.length == 1) {
	         _month = "0" + _month;
	      }
	      if (_day.length == 1) {
	         _day = "0" + _day;
	      }
	      _inputField.value = _month + "/" + _day + "/" + _year;

	      var _currentCheckinDate = new Date(getElem("inpCheckInDate" + this.RAND).value);
	      var _currentCheckoutDate = new Date(getElem("inpCheckOutDate" + this.RAND).value);
	      if (YAHOO.widget.DateMath.before(_currentCheckoutDate, _currentCheckinDate) == false && YAHOO.widget.DateMath.before(_currentCheckinDate, _currentCheckoutDate) == false) {
	         var newOverrideDate = YAHOO.widget.DateMath.add(_currentCheckinDate, YAHOO.widget.DateMath.DAY, 2);
	         cmxCreateCookie("CHECKOUTDATE", (newOverrideDate.getMonth() + 1) + "/" + newOverrideDate.getDate() + "/" + newOverrideDate.getFullYear(), 14);
	         getElem("nights" + this.RAND).value = 2;
	         getElem("inpCheckOutDate" + this.RAND).value = (newOverrideDate.getMonth() + 1) + "/" + newOverrideDate.getDate() + "/" + newOverrideDate.getFullYear();
	         }
	      if (YAHOO.widget.DateMath.before(_currentCheckoutDate, _currentCheckinDate) == true) {
	         var newOverrideDate = YAHOO.widget.DateMath.add(_currentCheckinDate, YAHOO.widget.DateMath.DAY, 2);
	         cmxCreateCookie("CHECKOUTDATE", (newOverrideDate.getMonth() + 1) + "/" + newOverrideDate.getDate() + "/" + newOverrideDate.getFullYear(), 14);
	         getElem("nights" + this.RAND).value = 2;
	         getElem("inpCheckOutDate" + this.RAND).value = (newOverrideDate.getMonth() + 1) + "/" + newOverrideDate.getDate() + "/" + newOverrideDate.getFullYear();
	         }
	      var elementsToShow = document.getElementsByTagName("select");
	      for (x = 0; x < elementsToShow.length; x++) {
	         elementsToShow[x].style.visibility = "";
	         }
	      getElem("callContainerControls").style.display = "none";
	      //GW - removed this line since it seems like extra work.  This was causing a click event to not get propagated properly!
		  //getElem("callContainer").innerHTML = "";
		  // GW - 4/1/2010 - process dom change
		  //VDCtoTL.tlProcessNode(getElem("callContainer"));
	      call = null;
    };
    // should probably not keep this as a global and put this method as part of the SearchWidget prototype.
    function hideSearchElements() {
        var elementsToHide = document.getElementsByTagName("select");

        for (x = 0; x < elementsToHide.length; x++) {
            elementsToHide[x].style.visibility = "hidden";
        }
    };



    SearchWidget.prototype.buildSideWidgetRoomSelectorArea = function() {
			var _widgetTBody = newElem("tbody");
				addAttrib(_widgetTBody, "class", "clsTblRoomSelectors");

			var _rowObj = newElem("tr");
				_widgetTBody.appendChild(_rowObj);
							 addAttrib(_rowObj, "align", "left");

			var _colObj = newElem("td");
				addAttrib(_colObj, "colspan", "4");
				_rowObj.appendChild(_colObj);

				if (isEspanol() == true) {
					var _textObj = document.createTextNode("Cuarto:");
				} else {
					var _textObj = document.createTextNode("Rooms:");
				}

				_colObj.appendChild(_textObj);
				addAttrib(_colObj, "class", "clsLblRoomSelectors");

			var _selObj = newElem("select");
				addAttrib(_selObj, "id", "selRoomSelector" + this.RAND);
				addAttrib(_selObj, "class", "clsInputField");
				addAnEvent(_selObj, "change", bind(this, this.toggleRoomRows));

			for (r = 0; r < this.MAX_NUMBER_OF_ROOMS; r++) {
				var _optObj = newElem("option");
				var _textObj = document.createTextNode(r + 1);
					_optObj.appendChild(_textObj);
					_selObj.appendChild(_optObj);
					_colObj.appendChild(_selObj);
			}

			for (_rowNum = 0; _rowNum < (this.MAX_NUMBER_OF_ROOMS + 1); _rowNum++) {

				var _rowObj = newElem("tr");
					_widgetTBody.appendChild(_rowObj);
								addAttrib(_rowObj, "align", "left");

				addAttrib(_rowObj, "id", "tr_room_" + _rowNum + "" + this.RAND);

				if (_rowNum > 1) {
					addAttrib(_rowObj, "class", "clsRoomSelectorRowHidden");
				} else {
					addAttrib(_rowObj, "class", "clsRoomSelectorRowShown");
				}

				for (_colNum = 1; _colNum < 4; _colNum++) {
					var _colObj = newElem("td");
						_rowObj.appendChild(_colObj);
						addAttrib(_colObj, "class", "clsRoomSelectorCell");


					if (_colNum == 1) {
						if (_rowNum > 0) {
							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Cuarto"+ nbspace + "" + (parseInt(_rowNum)) + ":");
							} else {
								var _textObj = document.createTextNode("Room" + nbspace + "" + (parseInt(_rowNum)) + ":");
							}
								_colObj.appendChild(_textObj);
								addAttrib(_colObj, "class", "clsInputField");
						}
					}

					if (_colNum == 2) {
						var _selObj = newElem("select");
							addAttrib(_selObj, "id", _rowNum + "selAdultSelector" + this.RAND);
						if (_rowNum == 0) {
								if (isEspanol() == true) {
									var _textObj = document.createTextNode("Adultos:");
								} else {
									var _textObj = document.createTextNode("Adults:");
								}
								_colObj.appendChild(_textObj);
								addAttrib(_colObj, "class", "clsInputTitle");
						} else {
							for (r = 0; r < 4; r++) {
								var _optObj = newElem("option");
								var _textObj = document.createTextNode(r + 1);

								if (_rowNum == 1 && r == 1) {
									addAttrib(_optObj, "selected", "true");
								}
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
									_colObj.appendChild(_selObj);
							}
						}
					}

					if (_colNum == 3) {
						var _selObj = newElem("select");
							addAnEvent(_selObj, "change", bind(this, this.setNumOfChildren));
							addAttrib(_selObj, "id", _rowNum + "selChildrenSelector" + this.RAND);
						if (_rowNum == 0) {
							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Ni" + String.fromCharCode(209).toLowerCase() + "os:");
							} else {
								var _textObj = document.createTextNode("Children:");
							}
								addAttrib(_colObj, "class", "clsInputTitle");
								_colObj.appendChild(_textObj);
						} else {
							for (r = 0; r < 4; r++) {
								var _optObj = newElem("option");
								var _textObj = document.createTextNode(r);
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
									_colObj.appendChild(_selObj);
							}
						}
					}
				}
			}

			return _widgetTBody;
    };

    SearchWidget.prototype.buildWidgetRoomSelectorArea = function() {
			var _widgetTBody = newElem("tbody");

			for (_rowNum = 0; _rowNum < (this.MAX_NUMBER_OF_ROOMS + 1); _rowNum++) {
				var _rowObj = newElem("tr");
					_widgetTBody.appendChild(_rowObj);

				addAttrib(_rowObj, "id", "tr_room_" + _rowNum + "" + this.RAND);

				if (_rowNum > 1) {
					addAttrib(_rowObj, "class", "clsRoomSelectorRowHidden");
				} else {
					addAttrib(_rowObj, "class", "clsRoomSelectorRowShown");
				}

				for (_colNum = 0; _colNum < 4; _colNum++) {
					var _colObj = newElem("td");
						_rowObj.appendChild(_colObj);
						if(_colNum == 1) {
							addAttrib(_colObj, "class", "clsRoomSelectorCellLabel");
						} else {
							addAttrib(_colObj, "class", "clsRoomSelectorCell");
						}

					if (_colNum == 0) {
						if (_rowNum == 0) {

							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Cuarto:");
							} else {
								var _textObj = document.createTextNode("Rooms:");
							}

							_colObj.appendChild(_textObj);
						}

						if (_rowNum == 1) {
							var _selObj = newElem("select");
							addAttrib(_selObj, "id", "selRoomSelector" + this.RAND);
							addAnEvent(_selObj, "change", bind(this, this.toggleRoomRows));

							for (r = 0; r < this.MAX_NUMBER_OF_ROOMS; r++) {
								var _optObj = newElem("option");
								var _textObj = document.createTextNode(r + 1);
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
									_colObj.appendChild(_selObj);
							}
						}
					}

					if (_colNum == 1) {
						if (_rowNum > 0) {
							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Cuarto"+ nbspace + "" + (parseInt(_rowNum)) + ":");
							} else {
								var _textObj = document.createTextNode("Room"+ nbspace + "" + (parseInt(_rowNum)) + ":");
							}

							_colObj.appendChild(_textObj);
						}
					}

					if (_colNum == 2) {
						var _selObj = newElem("select");
							addAttrib(_selObj, "id", _rowNum + "selAdultSelector" + this.RAND);

						if (_rowNum == 0) {

							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Adultos:");
							} else {
								var _textObj = document.createTextNode("Adults:");
							}


								_colObj.appendChild(_textObj);
						} else {
							for (r = 0; r < 4; r++) {
								var _optObj = newElem("option");
								var _textObj = document.createTextNode(r + 1);

								if (_rowNum == 1 && r == 1) {
									addAttrib(_optObj, "selected", "true");
								}
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
									_colObj.appendChild(_selObj);
							}
						}
					}

					if (_colNum == 3) {
						var _selObj = newElem("select");
							addAnEvent(_selObj, "change", bind(this, this.setNumOfChildren));
							addAttrib(_selObj, "id", _rowNum + "selChildrenSelector" + this.RAND);

						if (_rowNum == 0) {

							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Ni" + String.fromCharCode(209).toLowerCase().toLowerCase() + "os:");
							} else {
								var _textObj = document.createTextNode("Children:");
							}

								_colObj.appendChild(_textObj);
						} else {
							for (r = 0; r < 4; r++) {
								var _optObj = newElem("option");
								var _textObj = document.createTextNode(r);
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
									_colObj.appendChild(_selObj);
							}
						 }
					}
				}
			}

			return _widgetTBody;
    };

	SearchWidget.prototype.buildAirWidgetRoomSelectorArea = function() {
		var _widgetTBody = newElem("tbody");
		if(this.SIDE_SEARCH == true) {
			var _rowObj = newElem("tr");
				_widgetTBody.appendChild(_rowObj);

			var _colObj = newElem("td");
				addAttrib(_colObj, "class", "clsRoomSelectorCell bold");
				_rowObj.appendChild(_colObj);


			if (isEspanol() == true) {
				var _textObj = document.createTextNode("Cuarto:");
			} else {
				var _textObj = document.createTextNode("Rooms:");
			}

			_colObj.appendChild(_textObj);

			var _colObj = newElem("td");
				addAttrib(_colObj, "class", "clsRoomSelectorCellLabel");
				_rowObj.appendChild(_colObj);

			var _selObj = newElem("select");
				addAttrib(_selObj, "id", "selRoomSelector" + this.RAND);
				addAnEvent(_selObj, "change", bind(this, this.toggleRoomRows));

			for (r = 0; r < this.MAX_NUMBER_OF_ROOMS; r++) {
				var _optObj = newElem("option");
				var _textObj = document.createTextNode(r + 1);
					_optObj.appendChild(_textObj);
					_selObj.appendChild(_optObj);
				_colObj.appendChild(_selObj);
			}

		}

		for (_rowNum = 0; _rowNum < (this.MAX_NUMBER_OF_ROOMS + 1); _rowNum++) {
			var _rowObj = newElem("tr");
				_widgetTBody.appendChild(_rowObj);

			addAttrib(_rowObj, "id", "tr_room_" + _rowNum + "" + this.RAND);

			if (_rowNum > 1) {
				addAttrib(_rowObj, "class", "clsRoomSelectorRowHidden");
			} else {
				addAttrib(_rowObj, "class", "clsRoomSelectorRowShown");
			}

			for (_colNum = 0; _colNum < 4; _colNum++) {
				if(this.SIDE_SEARCH == true && _colNum == 0) {
				} else {
					var _colObj = newElem("td");
						_rowObj.appendChild(_colObj);
				}
				if(_colNum == 1) {
					if(this.SIDE_SEARCH == true && _colNum == 0) {
					} else {
						addAttrib(_colObj, "class", "clsRoomSelectorCellLabel");
					}
				} else {
						addAttrib(_colObj, "class", "clsRoomSelectorCell");
				}
				if(this.SIDE_SEARCH == false) {


					if (_colNum == 0) {
						if (_rowNum == 0) {

							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Cuarto:");
							} else {
								var _textObj = document.createTextNode("Rooms:");
							}

							_colObj.appendChild(_textObj);
						}

						if (_rowNum == 1) {
							var _selObj = newElem("select");
								addAttrib(_selObj, "id", "selRoomSelector" + this.RAND);
								addAnEvent(_selObj, "change", bind(this, this.toggleRoomRows));

							for (r = 0; r < this.MAX_NUMBER_OF_ROOMS; r++) {
								var _optObj = newElem("option");
								var _textObj = document.createTextNode(r + 1);
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
									_colObj.appendChild(_selObj);
							}
						}
					}
				}
				if (_colNum == 1) {
					if (_rowNum > 0) {
							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Cuarto"+ nbspace + "" + (parseInt(_rowNum)) + ":");
							} else {
								var _textObj = document.createTextNode("Room"+ nbspace + "" + (parseInt(_rowNum)) + ":");
							}

								_colObj.appendChild(_textObj);
						}
					}

					if (_colNum == 2) {
						var _selObj = newElem("select");
						addAttrib(_selObj, "id", _rowNum + "selAdultSelector" + this.RAND);

						if (_rowNum == 0) {
							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Adultos:");
							} else {
								var _textObj = document.createTextNode("Adults:");
							}
								_colObj.appendChild(_textObj);
						} else {
							for (r = 0; r < 4; r++) {
								var _optObj = newElem("option");
								var _textObj = document.createTextNode(r + 1);

								if (_rowNum == 1 && r == 1) {
									addAttrib(_optObj, "selected", "true");
								}
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
									_colObj.appendChild(_selObj);
							}
						}
					}

					if (_colNum == 3) {
						var _selObj = newElem("select");
							addAnEvent(_selObj, "change", bind(this, this.setNumOfChildren));
							addAttrib(_selObj, "id", _rowNum + "selChildrenSelector" + this.RAND);

						if (_rowNum == 0) {

							if (isEspanol() == true) {
								var _textObj = document.createTextNode("Ni" + String.fromCharCode(209).toLowerCase().toLowerCase() + "os:");
							} else {
								var _textObj = document.createTextNode("Children:");
							}

							_colObj.appendChild(_textObj);
						} else {
							for (r = 0; r < 4; r++) {
								var _optObj = newElem("option");
								var _textObj = document.createTextNode(r);
									_optObj.appendChild(_textObj);
									_selObj.appendChild(_optObj);
									_colObj.appendChild(_selObj);
							}
				  	}
					}
				}
			}
			_widgetTBody.appendChild(this.buildAirHotelWidgetChildrenHeader());
			if(this.SIDE_SEARCH == true) {
				this.buildSideAirHotelWidgetChildSelectorArea(_widgetTBody);
			} else {
				this.buildAirHotelWidgetChildSelectorArea(_widgetTBody);
			}
			return _widgetTBody;
    };

	// this used to be part of global... need to make this part of the class
	SearchWidget.prototype.changeRoomsRemoveChildHeader = function() {
			var numRooms = parseInt(getElem("selRoomSelector" + this.RAND).selectedIndex + 1);
			var childrenFound = false;
			for(i = 0; i < numRooms; i++) {
				if(parseInt(getElem((i + 1) + "selChildrenSelector" + this.RAND).selectedIndex) >= 1) {
					childrenFound = true;
					break;
				}
			}
			if(childrenFound == false) {
				getElem("childAgesHeaderRow" + this.RAND).className = "clsHotelSearchWidgetChildrenHeaderHidden";
			} else {
				getElem("childAgesHeaderRow" + this.RAND).className = "clsHotelSearchWidgetChildrenHeaderShown txt_12 nowrap";
			}
		};

    SearchWidget.prototype.toggleRoomRows = function() {
		var _numOfRooms = getElem("selRoomSelector" + this.RAND).selectedIndex + 1;

		for (r = 1; r < (_numOfRooms); r++) {
          try {
              getElem("tr_room_" + (r + 1) + this.RAND).className = "clsRoomSelectorRowShown";
          } catch (Exception) {
          }
		}
		for (r = 4; r > _numOfRooms; r--) {
			try {
			getElem("tr_room_" + r + this.RAND).className = "clsRoomSelectorRowHidden";
					document.getElementById("tr_children_" + (r - 1) + this.RAND).className = "clsChildrenSelectorRowHidden";
					getElem((r) + "selChildrenSelector" + this.RAND).selectedIndex = 0;
			} catch (Exception) {
			}
		}
		this.changeRoomsRemoveChildHeader();
    };

    SearchWidget.prototype.setNumOfChildren = function(event) {
			var _srcElement = null;
			var _roomRowElement = null;
			var _roomNumber = null;
			var _childrenRowElement = null;
			var _NumOfChildren = 0;
			var _elementRandom = this.RAND;

			if (event == null) event = window.event;
			_srcElement = event.srcElement || event.target;
			_srcElement = getElem(_srcElement.id);

			if (_srcElement.parentElement)
				_roomRowElement = _srcElement.parentElement.parentElement.id;
			else
				_roomRowElement = _srcElement.parentNode.parentNode.id;

			_roomNumber = _roomRowElement.replace(this.RAND, '').split('_').reverse()[0];
			_childrenRowElement = getElem("tr_children_" + (_roomNumber - 1) + _elementRandom);

			_NumOfChildren = (event.srcElement || event.target).selectedIndex;

			/*if (document.all) {
				_srcElement = event.srcElement.id;
				_srcElement = getElem(_srcElement);
				_roomRowElement = _srcElement.parentElement.parentElement.id;
				_roomNumber = _roomRowElement.substring(_roomRowElement.indexOf("tr_room_") + 8, _roomRowElement.lastIndexOf("_"));
				_childrenRowElement = getElem("tr_children_" + (_roomNumber - 1) + _elementRandom);

				 _NumOfChildren = event.srcElement.selectedIndex;

			} else {
				_srcElement = this.id;
				_srcElement = getElem(_srcElement);
				_roomRowElement = _srcElement.parentNode.parentNode.id;
				_roomNumber = _roomRowElement.substring(_roomRowElement.indexOf("tr_room_") + 8, _roomRowElement.lastIndexOf("_"));
				_childrenRowElement = getElem("tr_children_" + (_roomNumber - 1) + _elementRandom);

				_NumOfChildren = this.selectedIndex;
			}*/

			var _boolFoundChildren = false;
			for (c = 1; c < 4; c++) {
				if (getElem(c + "selChildrenSelector" + _elementRandom)) {
					if (getElem(c + "selChildrenSelector" + _elementRandom).selectedIndex > 0) {
						_boolFoundChildren = true;
					}
				}
			}

			if (_boolFoundChildren == true) {
				getElem("childAgesHeaderRow" + _elementRandom).className = "clsHotelSearchWidgetChildrenHeaderShown txt_12 nowrap";
			} else {
				getElem("childAgesHeaderRow" + _elementRandom).className = "clsHotelSearchWidgetChildrenHeaderHidden";
			}

			if (_NumOfChildren == 0) {
				_childrenRowElement.className = "clsChildrenSelectorRowHidden";
			} else {
				_childrenRowElement.className = "clsChildrenSelectorRowShown";
			}

			for (c = (_NumOfChildren + 1); c < 4; c++) {
				getElem("TDroom" + _roomNumber + "ChildAge" + (c + 1) + _elementRandom).className = "clsChildAgeSelectorCellHidden";
			}

			for (c = 1; c < _NumOfChildren + 1; c++) {
				getElem("TDroom" + _roomNumber + "ChildAge" + (c + 1) + _elementRandom).className = "clsChildAgeSelectorCellShown";
			}
    };

	SearchWidget.prototype.buildAirHotelWidgetChildrenHeader = function() {
		var _tblRow = newElem("tr");;
		var _tblCell = newElem("td");
				addAttrib(_tblCell, "class", "clsHotelSearchWidgetChildrenHeaderHidden");
				addAttrib(_tblCell, "colspan", "4");
				addAttrib(_tblCell, "id", "childAgesHeaderRow" + this.RAND);
			_tblRow.appendChild(_tblCell);
		if (isEspanol() == true) {
			var _tblHeaderText = document.createTextNode("*Especif" + String.fromCharCode(237).toLowerCase() + "que por favor las edades de ni" + String.fromCharCode(209).toLowerCase() + "os.");
		} else {
			var _tblHeaderText = document.createTextNode("Child Ages at time of travel:");
		}
			_tblCell.appendChild(_tblHeaderText);

		return _tblRow;
    };

    SearchWidget.prototype.buildWidgetChildrenHeader = function() {
		var _tblHeader = newElem("thead");
		var _tblRow = newElem("tr");
			_tblHeader.appendChild(_tblRow);
		var _tblCell = newElem("td");
				addAttrib(_tblCell, "class", "clsHotelSearchWidgetChildrenHeaderHidden");
				addAttrib(_tblCell, "colspan", "4");
				addAttrib(_tblCell, "id", "childAgesHeaderRow" + this.RAND);
			_tblRow.appendChild(_tblCell);
		if (isEspanol() == true) {
			var _tblHeaderText = document.createTextNode("*Especif" + String.fromCharCode(237).toLowerCase() + "que por favor las edades de ni" + String.fromCharCode(209).toLowerCase() + "os.");
		} else {
			var _tblHeaderText = document.createTextNode("Child Ages at time of travel:");
		}
			_tblCell.appendChild(_tblHeaderText);

		return _tblHeader;
    };

	SearchWidget.prototype.buildSideWidgetChildSelectorArea = function() {
		var _widgetTBody = newElem("tbody");

		for (_rowNum = 0; _rowNum < 4; _rowNum++) {
			var _rowObj = newElem("tr");
				addAttrib(_rowObj, "align", "center");
				addAttrib(_rowObj, "id", "tr_children_" + _rowNum + "" + this.RAND);
				_widgetTBody.appendChild(_rowObj);

			if (_rowNum > -1) {
				addAttrib(_rowObj, "class", "clsChildrenSelectorRowHidden");
			} else {
				addAttrib(_rowObj, "class", "clsChildrenSelectorRowShown");
			}

				var _colObj = newElem("td");
				_rowObj.appendChild(_colObj);

			for (_colNum = 1; _colNum < 4; _colNum++) {

				var _colObj = newElem("td");
					addAttrib(_colObj, "class", "clsTDChildAge");
					addAttrib(_colObj, "valign", "bottom");
					addAttrib(_colObj, "id", "TDroom" + (_rowNum + 1) + "ChildAge" + (_colNum + 1) + this.RAND);

				if (_colNum == 1) {


					if (isEspanol() == true) {

						var _textObj = document.createTextNode("Cuarto " + (parseInt(_rowNum) + 1) + ":   ");
					} else {

						var _textObj = document.createTextNode("Room " + (parseInt(_rowNum) + 1) + ":   ");

					}

					var _div = newElem("nobr");
						_div.appendChild(_textObj);
						_colObj.appendChild(_div);

					if (_colNum > 0) {
						addAttrib(_colObj, "class", "clsChildAgeSelectorCellHidden");
					}
				}

				_rowObj.appendChild(_colObj);
				var _selObj = newElem("select");
					addAttrib(_selObj, "id", "selRoom" + (_rowNum + 1) + "ChildNum" + _colNum + "Age" + this.RAND);

				for (r = 0; r < 18; r++) {
						if(r == 0) {
							var _optObj = newElem("option");
							var _textObj = document.createTextNode("--");
							addAttrib(_optObj, "selected", "true");
						} else {
							var _optObj = newElem("option");
							var _textObj = document.createTextNode(r);
						}
							_optObj.appendChild(_textObj);
							_selObj.appendChild(_optObj);
							_colObj.appendChild(_selObj);
					}
			}
		}

		return _widgetTBody;
	};

	SearchWidget.prototype.buildSideAirHotelWidgetChildSelectorArea = function(_widgetTBody) {

		for (_rowNum = 0; _rowNum < 4; _rowNum++) {
			var _rowObj = newElem("tr");
				addAttrib(_rowObj, "align", "center");
				addAttrib(_rowObj, "id", "tr_children_" + _rowNum + "" + this.RAND);
				_widgetTBody.appendChild(_rowObj);

			if (_rowNum > -1) {
				addAttrib(_rowObj, "class", "clsChildrenSelectorRowHidden");
			} else {
				addAttrib(_rowObj, "class", "clsChildrenSelectorRowShown");
			}

			for (_colNum = 1; _colNum < 4; _colNum++) {

				var _colObj = newElem("td");
					addAttrib(_colObj, "class", "clsTDChildAge");
					addAttrib(_colObj, "valign", "bottom");
					addAttrib(_colObj, "id", "TDroom" + (_rowNum + 1) + "ChildAge" + (_colNum + 1) + this.RAND);

				if (_colNum == 1) {


					if (isEspanol() == true) {

						var _textObj = document.createTextNode("Cuarto " + (parseInt(_rowNum) + 1) + ":   ");
					} else {

						var _textObj = document.createTextNode("Room " + (parseInt(_rowNum) + 1) + ":   ");

					}

					var _div = newElem("nobr");
						_div.appendChild(_textObj);
						_colObj.appendChild(_div);

					if (_colNum > 0) {
						addAttrib(_colObj, "class", "clsChildAgeSelectorCellHidden");
					}
				}

				_rowObj.appendChild(_colObj);
				var _selObj = newElem("select");
					addAttrib(_selObj, "id", "selRoom" + (_rowNum + 1) + "ChildNum" + _colNum + "Age" + this.RAND);

				for (r = 0; r < 18; r++) {
						if(r == 0) {
							var _optObj = newElem("option");
							var _textObj = document.createTextNode("--");
							addAttrib(_optObj, "selected", "true");
						} else {
							var _optObj = newElem("option");
							var _textObj = document.createTextNode(r);
						}
							_optObj.appendChild(_textObj);
							_selObj.appendChild(_optObj);
							_colObj.appendChild(_selObj);
					}
					if(_colNum == 3) {
					var _colObj = newElem("td");
						_rowObj.appendChild(_colObj);
					}
			}
		}

		return _widgetTBody;
    };

	SearchWidget.prototype.buildAirHotelWidgetChildSelectorArea = function(_widgetTBody) {

		for (_rowNum = 0; _rowNum < 4; _rowNum++) {
			var _rowObj = newElem("tr");
				addAttrib(_rowObj, "id", "tr_children_" + _rowNum + "" + this.RAND);
				_widgetTBody.appendChild(_rowObj);

			if (_rowNum > -1) {
				addAttrib(_rowObj, "class", "clsChildrenSelectorRowHidden");
			} else {
				addAttrib(_rowObj, "class", "clsChildrenSelectorRowShown");
			}

			for (_colNum = 0; _colNum < 4; _colNum++) {
				var _colObj = newElem("td");
					addAttrib(_colObj, "id", "TDroom" + (_rowNum + 1) + "ChildAge" + (_colNum + 1) + this.RAND);

					if (_colNum > 0) {
						addAttrib(_colObj, "class", "clsChildAgeSelectorCellHidden");
					} else {
						addAttrib(_colObj, "class", "clsChildAgeSelectorCellLabel");
					}
					_rowObj.appendChild(_colObj);

				if (_colNum == 0) {
					if (isEspanol() == true) {
						var _textObj = document.createTextNode("Cuarto " + (parseInt(_rowNum) + 1));
					} else {
						var _textObj = document.createTextNode("Room " + (parseInt(_rowNum) + 1));
					}
					_colObj.appendChild(_textObj);
				} else {

					var _selObj = newElem("select");
						addAttrib(_selObj, "id", "selRoom" + (_rowNum + 1) + "ChildNum" + _colNum + "Age" + this.RAND);

					for (r = 0; r < 18; r++) {
						if(r == 0) {
							var _optObj = newElem("option");
							var _textObj = document.createTextNode("--");
							addAttrib(_optObj, "selected", "true");
						} else {
							var _optObj = newElem("option");
							var _textObj = document.createTextNode(r);
						}
							_optObj.appendChild(_textObj);
							_selObj.appendChild(_optObj);
							_colObj.appendChild(_selObj);
					}
				}
			}
		}

		return _widgetTBody;
    };

    SearchWidget.prototype.buildWidgetChildSelectorArea = function() {
		var _widgetTBody = newElem("tbody");

		for (_rowNum = 0; _rowNum < 4; _rowNum++) {
			var _rowObj = newElem("tr");
				addAttrib(_rowObj, "id", "tr_children_" + _rowNum + "" + this.RAND);
				_widgetTBody.appendChild(_rowObj);

			if (_rowNum > -1) {
				addAttrib(_rowObj, "class", "clsChildrenSelectorRowHidden");
			} else {
				addAttrib(_rowObj, "class", "clsChildrenSelectorRowShown");
			}

			for (_colNum = 0; _colNum < 4; _colNum++) {
				var _colObj = newElem("td");
					addAttrib(_colObj, "id", "TDroom" + (_rowNum + 1) + "ChildAge" + (_colNum + 1) + this.RAND);

					if (_colNum > 0) {
						addAttrib(_colObj, "class", "clsChildAgeSelectorCellHidden");
					} else {
						addAttrib(_colObj, "class", "clsChildAgeSelectorCellLabel");
					}
					_rowObj.appendChild(_colObj);

				if (_colNum == 0) {
					if (isEspanol() == true) {
						var _textObj = document.createTextNode("Cuarto " + (parseInt(_rowNum) + 1));
					} else {
						var _textObj = document.createTextNode("Room " + (parseInt(_rowNum) + 1));
					}
					_colObj.appendChild(_textObj);
				} else {

					var _selObj = newElem("select");
						addAttrib(_selObj, "id", "selRoom" + (_rowNum + 1) + "ChildNum" + _colNum + "Age" + this.RAND);

					for (r = 0; r < 18; r++) {
						if(r == 0) {
							var _optObj = newElem("option");
							var _textObj = document.createTextNode("--");
							addAttrib(_optObj, "selected", "true");
						} else {
							var _optObj = newElem("option");
							var _textObj = document.createTextNode(r);
						}
							_optObj.appendChild(_textObj);
							_selObj.appendChild(_optObj);
							_colObj.appendChild(_selObj);
					}
				}
			}
		}

		return _widgetTBody;
    };

    SearchWidget.prototype.buildWidgetSearchButton = function() {
		var _widgetTBody = newElem("tbody");

		var _tblRow = newElem("tr");
			_widgetTBody.appendChild(_tblRow);
			addAttrib(_tblRow, "align", "center");
		var _tblCell = newElem("td");
			_tblRow.appendChild(_tblCell);

		var _button = newElem("input");
		//var _button = newElem("button");

			addAttrib(_button, "type", "submit");
			addAttrib(_button, "id", "btnSearchHotels");
			if(this.AIR_HOTEL_PACKAGE == true) {
				addAttrib(_button, "class", "clsAirHotelSearchButton");
			} else {
				addAttrib(_button, "class", "clsHotelSearchButton");
			}

			if (this.AIR_HOTEL_PACKAGE == true) {
				if (isEspanol() == true) {
					addAttrib(_button, "value", "Buscar desde tu ciuda");
				} else {
					addAttrib(_button, "value", "Price Your Travel Package");
				}
			} else if (this.SHOW_SEARCH == true) {
				if (isEspanol() == true) {
					//_button.innerHTML = "Buscar Shows";
					//addAttrib(_button, "value", "Buscar Shows");
				} else {
					//_button.innerHTML = "Search Shows";
					addAttrib(_button, "value", "Search Shows");
				}
			} else if (this.GOLF_SEARCH == true) {
				//_button.innerHTML = "Search Course";
				addAttrib(_button, "value", "Search Course");
			} else if (this.HOTEL_SEARCH == true || this.SIDE_SEARCH == true) {
				if (isEspanol() == true) {
					//_button.innerHTML = "Buscar Hoteles";
					addAttrib(_button, "value", "Buscar Hoteles");
				} else {
					//_button.innerHTML = "Search Hotels";
					addAttrib(_button, "value", "Search Hotels");
				}
			} else {
				if (isEspanol() == true) {
					//_button.innerHTML = "Buscar";
					addAttrib(_button, "value", "Buscar");
				} else {
					//_button.innserHTML = "Search";
					addAttrib(_button, "value", "Search");
				}
			}

		if (this.AIR_HOTEL_PACKAGE == true) {
			addAnEvent(_button, "click", bind(this, this.getAirHotelQueryString));
		} else if (this.GOLF_SEARCH == true) {
			addAnEvent(_button, "click", bind(this, this.getGolfQueryString));
		} else {
			addAnEvent(_button, "click", bind(this, this.populateHiddenInputs));
		}

		var divElem = newElem("div");
		if (document.all) {
			addAttrib(divElem, "class", "clsIEButtonBorder");
		} else {
			addAttrib(divElem, "class", "clsFFButtonBorder");
		}
			divElem.appendChild(_button);
		_tblCell.appendChild(divElem);

		return _widgetTBody;
    };

	SearchWidget.prototype.getGolfQueryString = function() {

		getElem("inpCheckInDate" + this.RAND).value = formatDate(reformatDateField(getElem("inpCheckInDate" + this.RAND)));
		getElem("inpCheckOutDate" + this.RAND).value = formatDate(reformatDateField(getElem("inpCheckOutDate" + this.RAND)));

		var currentQString = convertURLToShopDomain("http://" + document.domain + "/golf/date.jsp?");


		var dt = new Date(getElem("inpCheckInDate"+ this.RAND).value);
		getElem("HotelSearchForm"+ this.RAND).date.value=dt.getDate();
		getElem("HotelSearchForm"+ this.RAND).month.value=dt.getMonth()+1;
		getElem("HotelSearchForm"+ this.RAND).year.value=dt.getFullYear();

		if (isEspanol() == true) {
			currentQString = currentQString.replace("espanol.", "shop.");
		}
		var form = getElem('HotelSearchForm' + this.RAND);
		form.setAttribute('action', currentQString);
		form.submit();
	};

    SearchWidget.prototype.getAirHotelQueryString = function(e) {
		var currentQString = "http://vegas.usairwaysvacations.com/bookingengine/etd.aspx";
		var form = getElem("HotelSearchForm" + this.RAND);
		form.getAttribute('action', currentQString);

		var inputNames = new Array("autoSubmit","wAirHotel","wPackage","wDepCity","DepartDate","ReturnDate","wPromoCode","wBookingType","wClassCode","wAdults","Room1ChildAges","wAdults2","Room2ChildAges");
		var inputValues = new Array(13);

		inputValues[0] = "1"; //AutoSubmit form on USAV side.
		inputValues[1] = "A"; //A = Air + Hotel; H = Hotel Only
		inputValues[2] = "41"; //41 = Las Vegas Packages

		getElem("inpCheckInDate" + this.RAND).value = formatDate(reformatDateField(getElem("inpCheckInDate" + this.RAND)));
		getElem("inpCheckOutDate" + this.RAND).value = formatDate(reformatDateField(getElem("inpCheckOutDate" + this.RAND)));

		inputValues[3] = getElem("depCity" + this.RAND).options[getElem("depCity" + this.RAND).selectedIndex].value; //Get the IATA Code for Departure City
		inputValues[4] = getElem("inpCheckInDate" + this.RAND).value; //Departure Date in MM/DD/YYYY Format
		inputValues[5] = getElem("inpCheckOutDate" + this.RAND).value; //Return Date in MM/DD/YYYY Format
		inputValues[6] = getElem("inpPromoCode" + this.RAND).value;
		inputValues[7] = getElem("wBookingType" + this.RAND).value;
		inputValues[8] = getElem("wClassCode" + this.RAND).value; // Get Class Type
		inputValues[9] = (getElem("1selAdultSelector" + this.RAND).selectedIndex + 1); //Get Number of adults in room 1
		if((parseInt(getElem("selRoomSelector" + this.RAND).selectedIndex) + 1) == 2)
		{
			inputValues[11] = (getElem("2selAdultSelector" + this.RAND).selectedIndex + 1)
		} else {
			inputValues[11] = null
		}

		var iNumOfChildrenInRoom_1 = getElem("1selChildrenSelector" + this.RAND).selectedIndex;
		var iNumOfChildrenInRoom_2 = getElem("2selChildrenSelector" + this.RAND).selectedIndex;

		var sRoom1ChildAges = "";
		var sRoom2ChildAges = "";

			for (c = 1; c <= iNumOfChildrenInRoom_1; c++) {
				sRoom1ChildAges += (getElem("selRoom1ChildNum" + c + "Age" + this.RAND).selectedIndex + 1) + ",";
			}

				if (sRoom1ChildAges.substring(sRoom1ChildAges.length - 1) == ",") {
					sRoom1ChildAges = sRoom1ChildAges.substring(0, sRoom1ChildAges.length - 1);
				}

			for (c = 1; c <= iNumOfChildrenInRoom_2; c++) {
				sRoom2ChildAges += (getElem("selRoom2ChildNum" + c + "Age" + this.RAND).selectedIndex + 1) + ",";
			}

				if (sRoom2ChildAges.substring(sRoom2ChildAges.length - 1) == ",") {
					sRoom2ChildAges = sRoom2ChildAges.substring(0, sRoom2ChildAges.length - 1);
				}


		if(iNumOfChildrenInRoom_1 > 0) {
			inputValues[10] = sRoom1ChildAges;
		} else {
			inputValues[10] = null;
		}
		if(iNumOfChildrenInRoom_2 > 0) {
			inputValues[12] = sRoom2ChildAges;
		} else {
			inputValues[12] = null;
		}


		var _validateSearchDates = airHotelSearchDateVerification(getElem("inpCheckInDate" + this.RAND));
		if (_validateSearchDates == true) {
			if (e && e.preventDefault) {
			    e.preventDefault();
			}

			return false;
		}

			var _validateRoomOccupancy = verifyRoomOccupancy();
			if (_validateRoomOccupancy == true) {
				if (e && e.preventDefault) {
					e.preventDefault();
				}

				return false;
			}

		for(i = 0; i < 13; i++) {
			if(inputValues[i] != null) {
				var _Input = newElem("input");
            		 addAttrib(_Input, "name", inputNames[i]);
					 addAttrib(_Input, "id", inputNames[i] + this.RAND);
            		 addAttrib(_Input, "type", "hidden");
					 addAttrib(_Input, "value", inputValues[i]);
            		form.appendChild(_Input);
			}
		}

		if(_validateSearchDates == false && _validateRoomOccupancy == false) {
			cmxCreateCookie("CHECKINDATE", getElem("DepartDate" + this.RAND).value, 30);
			cmxCreateCookie("CHECKOUTDATE", getElem("ReturnDate" + this.RAND).value, 30);
			cmxCreateCookie("numRooms", getElem("selRoomSelector" + this.RAND).selectedIndex + 1, 30);

			var _cookieString = "";
			_cookieString += (getElem("1selAdultSelector" + this.RAND).selectedIndex + 1) + ",";
			_cookieString += (getElem("2selAdultSelector" + this.RAND).selectedIndex + 1);
			cmxCreateCookie("numAdults", _cookieString, 30);

			_cookieString = "";
			_cookieString += (getElem("1selChildrenSelector" + this.RAND).selectedIndex) + ",";
			_cookieString += (getElem("2selChildrenSelector" + this.RAND).selectedIndex);
			cmxCreateCookie("numChildren", _cookieString, 30);

			_cookieString = "";
			_cookieString += (getElem("selRoom1ChildNum1Age" + this.RAND).selectedIndex + 1) + ",";
			_cookieString += (getElem("selRoom1ChildNum2Age" + this.RAND).selectedIndex + 1) + ",";
			_cookieString += (getElem("selRoom1ChildNum3Age" + this.RAND).selectedIndex + 1);
			cmxCreateCookie("ChildrenAgesRoom1", _cookieString, 30);

			_cookieString = "";
			_cookieString += (getElem("selRoom2ChildNum1Age" + this.RAND).selectedIndex + 1) + ",";
			_cookieString += (getElem("selRoom2ChildNum2Age" + this.RAND).selectedIndex + 1) + ",";
			_cookieString += (getElem("selRoom2ChildNum3Age" + this.RAND).selectedIndex + 1);
			cmxCreateCookie("ChildrenAgesRoom2", _cookieString, 30);

			_cookieString = "";
			_cookieString += getElem("wClassCode" + this.RAND).value + ",";
			_cookieString += getElem("wBookingType" + this.RAND).value + ",";
			_cookieString += getElem("depCity" + this.RAND).value;
			cmxCreateCookie("AIRHOTEL", _cookieString, 30);

			cmCreateConversionEventTag('USAV_Price_Vacation_Click', '2', 'USAV_Widget', '0');

			return true;

		} else {
			if (e && e.preventDefault) {
			    e.preventDefault();
			}
			return false;
		}
    };

	SearchWidget.prototype.toggleSearchBy = function(e) {
		var trigger;
		if(document.all) {
			trigger = event.srcEvent;
		} else {
			trigger = e.target;
		}

		if(trigger.value == "LFF") {
			getElem("radioFirstClass" + this.RAND).checked = false;
		} else {
			getElem("radioCoach" + this.RAND).checked = false;
		}
	};
  SearchWidget.prototype.populateHiddenInputs = function(e) {
		getElem("inpCheckInDate" + this.RAND).value = formatDate(reformatDateField(getElem("inpCheckInDate" + this.RAND)));
		getElem("inpCheckOutDate" + this.RAND).value = formatDate(reformatDateField(getElem("inpCheckOutDate" + this.RAND)));

		var _day, _month;
		var indate = new Date(getElem("inpCheckInDate" + this.RAND).value);
		_month = (indate.getMonth() + 1) + "";
		if (_month.length == 1) {
			_month = "0" + _month;
		}
		_day = indate.getDate() + "";
		if (_day.length == 1) {
			_day = "0" + _day;
		}
		var isValid = validateUSDate(_month + "/" + _day + "/" + indate.getFullYear());

		if (isValid == false) {
			if (isEspanol() == true) {
				this.renderError("<strong>Lo sentimos.</strong><br /> La fecha de entrada que seleccionaste no es v" + String.fromCharCode(225) + "lida. Favor de usar el formato de mm/dd/aaaa.");
			} else {
				this.renderError("Your check-in date does not appear to be valid. Please use the mm/dd/yyyy format.");
			}
			getElem("inpCheckInDate" + this.RAND).click();
			if (e && e.preventDefault) {
				e.preventDefault();
			}
			  return false;
		}

		getElem("inDay" + this.RAND).value = indate.getDate();
		getElem("inYear" + this.RAND).value = indate.getFullYear();
		getElem("inMonth" + this.RAND).value = indate.getMonth();
		getElem("inDay" + this.RAND).name = "inDay";
		getElem("inYear" + this.RAND).name = "inYear";
		getElem("inMonth" + this.RAND).name = "inMonth";

		if (ShowSearch == true) {
			getElem("name" + this.RAND).value = checkForO(getElem("name" + this.RAND).value);
			getElem("startDate" + this.RAND).value = getElem("inpCheckInDate" + this.RAND).value;
			getElem("name" + this.RAND).name = "name";
		}

		var outdate = new Date(getElem("inpCheckOutDate" + this.RAND).value);

		_month = (outdate.getMonth() + 1) + "";
		if (_month.length == 1) { _month = "0" + _month; }
		_day = outdate.getDate() + "";
		if (_day.length == 1) { _day = "0" + _day; }

		var isValid = validateUSDate(_month + "/" + _day + "/" + outdate.getFullYear());
		if (isValid == false) {
			if (isEspanol() == true) {
				var _message = '<strong>Lo sentimos.</strong><br /> La fecha de entrada que seleccionaste no es v' + String.fromCharCode(225) + 'lida. Favor de usar el formato de mm/dd/aaaa.<br />';
					  _message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';
			} else {
				var _message = '<strong>We\'re Sorry,</strong><br />The current check-out date does not appear to be valid. ';
					  _message += 'Please use the mm/dd/yyyy format.<br />';
					  _message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
			}
			this.renderError(_message);
			getElem("inpCheckOutDate" + this.RAND).click();
			if (e && e.preventDefault) {
				e.preventDefault();
			}
			return false;
		}

		if (ShowSearch == true || this.SHOW_SIDE_SEARCH == false) {
			getElem("endDate" + this.RAND).value = _month + "/" + _day + "/" + outdate.getFullYear();

			if (YAHOO.widget.DateMath.before(new Date(getElem("endDate" + this.RAND).value), new Date(getElem("startDate" + this.RAND).value)) == true) {

				if (isEspanol() == true) {
					var _message = 'Tu fecha de llegada es despu' + String.fromCharCode(233) + "s " +
						'de tu fecha de salida.  Por favor recisa tus fechas e int' + String.fromCharCode(233) +
						'ntalo de nuevo.<br />';
						_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';

				} else {
					var _message = 'The current start date occurs AFTER the current end date. <br />';
						_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
				}

				this.renderError(_message);

				if (e && e.preventDefault) {
				    e.preventDefault();
				}
				  return false;
			} else {
				cmxCreateCookie("CHECKINDATE", getElem("startDate" + this.RAND).value, 30);
				cmxCreateCookie("CHECKOUTDATE", getElem("endDate" + this.RAND).value, 30);
			}
		}
		if(ShowSearch == true) {
			getElem("startDate" + this.RAND).name = "startDate";
			getElem("endDate" + this.RAND).name = "endDate";
		}
		var _oneDay = 1000*60*60*24;
			this.NUM_OF_NIGHTS = parseInt(Math.round((outdate.getTime() - indate.getTime()) / (_oneDay)));
			getElem("nights" + this.RAND).value = (this.NUM_OF_NIGHTS);
			cmxCreateCookie("NUM_OF_NIGHTS", this.NUM_OF_NIGHTS, 30);
			getElem("nights" + this.RAND).name = "nights";
		if (HotelSearch == true || SideSearch == true) {

			var _validateSearchDates = this.hotelSearchDateVerification(getElem("inpCheckInDate" + this.RAND), e);
			if (_validateSearchDates == true) {
				if (e && e.preventDefault) {
				    e.preventDefault();
				}
				return false;
			}

			var _validateRoomOccupancy = this.verifyRoomOccupancy();
			if (_validateRoomOccupancy == true) {
				if (e && e.preventDefault) {
				    e.preventDefault();
				}
				  return false;
			}
			getElem("numRooms" + this.RAND).value = getElem("selRoomSelector" + this.RAND).selectedIndex + 1;
			cmxCreateCookie("numRooms", getElem("selRoomSelector" + this.RAND).selectedIndex + 1, 30);
			getElem("numRooms" + this.RAND).name = "numRooms";
			//Number of Adults per room
			var _cookieString = "";
			for(i = 1; i < 5; i++) {
				getElem("room" + i + "NumAdults" + this.RAND).value = getElem(i + "selAdultSelector" + this.RAND).selectedIndex + 1;
				_cookieString += (getElem(i + "selAdultSelector" + this.RAND).selectedIndex + 1);
				if(i != 4) {
					_cookieString += ",";
				}
			}
			cmxCreateCookie("numAdults", _cookieString, 30);
			//Number of Children per room
			var _cookieString = "";
			for(i = 1; i < 5; i++) {
				getElem("room" + i + "NumChildren" + this.RAND).value = getElem(i + "selChildrenSelector" + this.RAND).selectedIndex;
				_cookieString += (getElem(i + "selChildrenSelector" + this.RAND).selectedIndex);
				if(i != 4) {
					_cookieString += ",";
				}
			}
			cmxCreateCookie("numChildren", _cookieString, 30);

			//Child Ages per Child per Room
			for(i = 1; i < 5; i++) {
				var _cookieString = "";
				var numChild = getElem(i + "selChildrenSelector" + this.RAND).selectedIndex;
				if(numChild != 0) {
					for(j = 1; j < numChild + 1; j++) {
						getElem("room" + i + "ChildAge" + j + "" + this.RAND).value = getElem("selRoom"+ i + "ChildNum" + j + "Age" + this.RAND).selectedIndex;
						_cookieString += (getElem("selRoom" + i + "ChildNum" + j + "Age" + this.RAND).selectedIndex);
						if(j != numChild) {
							_cookieString += ",";
						}
					}
					cmxCreateCookie("ChildrenAgesRoom" + i, _cookieString, 30);
				} else {
					cmxEraseCookie("ChildrenAgesRoom" + i);
				}
			}

			getElem("room1NumAdults" + this.RAND).name = "room1NumAdults";
			getElem("room2NumAdults" + this.RAND).name = "room2NumAdults";
			getElem("room3NumAdults" + this.RAND).name = "room3NumAdults";
			getElem("room4NumAdults" + this.RAND).name = "room4NumAdults";

			getElem("room1NumChildren" + this.RAND).name = "room1NumChildren";
			getElem("room2NumChildren" + this.RAND).name = "room2NumChildren";
			getElem("room3NumChildren" + this.RAND).name = "room3NumChildren";
			getElem("room4NumChildren" + this.RAND).name = "room4NumChildren";

			for(i = 1; i < 5; i++) {
				for(j = 1; j < 4; j++) {
					getElem("room" + i + "ChildAge" + j + "" + this.RAND).name = "room" + i + "ChildAge" + j;
				}
			}

			if (this.SINGLE_HOTEL_ID != "") {
				cmxEraseCookie("hotelRating");
			}
			if (StarRatingEnabled == true) {
				getElem("HotelSearchForm" + this.RAND).hotelRating.value = getElem("hotelRating" + this.RAND).value;
				cmxCreateCookie("hotelRating", getElem("hotelRating" + this.RAND).value, 30);
				if (isEspanol() == true) {
					getElem("HotelSearchForm" + this.RAND).setAttribute('action', "/bookingagent-es/hotel/VEGAScomHotelSearch.do");
				} else {
					getElem("HotelSearchForm" + this.RAND).setAttribute('action', "/bookingagent/hotel/VEGAScomHotelSearch.do");
				}
			} else {
				cmxEraseCookie("hotelRating");
			}

			if (HotelNameEnabled == true) {
				if (getElem("selHotelSearchList" + this.RAND).value != "A") {
					getElem("HotelSearchForm" + this.RAND).searchList.value = getElem("selHotelSearchList" + this.RAND).value;

					cmxCreateCookie("searchList", getElem("selHotelSearchList" + this.RAND).value, 30);

					if (isEspanol() == true) {
						getElem("HotelSearchForm" + this.RAND).setAttribute('action', "/bookingagent-es/hotel/HotelSingleSearchInProgress.do");
					} else {
						getElem("HotelSearchForm" + this.RAND).setAttribute('action', "/bookingagent/hotel/HotelSingleSearchInProgress.do");
					}
				} else {
					getElem("HotelSearchForm" +this.RAND).searchList.value="A";

					cmxEraseCookie("searchList");

					if (isEspanol() == true) {
						getElem("HotelSearchForm" + this.RAND).setAttribute('action', "/bookingagent-es/hotel/VEGAScomHotelSearch.do");
					} else {
						getElem("HotelSearchForm" + this.RAND).setAttribute('action', "/bookingagent/hotel/VEGAScomHotelSearch.do");
					}
				}
			} else {
				cmxCreateCookie("searchList", SingleHotelId, 30);
			}
			if (_validateSearchDates == false && _validateRoomOccupancy == false) {
				return validateBrowser(e,"HotelSearchForm" + this.RAND);
			}
		} else {
			// for gold and show
			return validateBrowser(e,"HotelSearchForm" + this.RAND);
		}
   };

		function validateBrowser(e,formName) {
			//if((navigator.userAgent).indexOf("Safari") > -1 || (navigator.userAgent).indexOf("Firefox") > -1)
			//{
				var _widgetForm = getElem(formName);
				var _queryString = _widgetForm.getAttribute("action");
				for(var ij = 0; ij < _widgetForm.elements.length; ij++)
				{
					if(ij == 0)
					{
						_queryString += "?"
					}
					if(typeof(_widgetForm.elements[ij]) != "undefined" || typeof(_widgetForm.elements[ij]) != null)
					{
						if(_widgetForm.elements[ij].name.length > 0)
						{
							if (ij < (_widgetForm.elements.length - 1) && ij != 0)
							{
								_queryString += "&";
							}
							_queryString += "" + _widgetForm.elements[ij].name + "=" + _widgetForm.elements[ij].value;
						}
					}
				}
				window.location.href = _queryString;
				if (e && e.preventDefault) {
				    e.preventDefault();
				}
				return false;
			//}
			//else
			//{
//				return true;
			//}
		};

   SearchWidget.prototype.airHotelSearchDateVerification = function(_DateInputUpdated, ev) { // wasn't part of prototype
	   var _currentCheckinField;
		var _currentCheckoutField;
		var _bFoundError = false;
		var _message;

		if (_DateInputUpdated.id.toLowerCase().indexOf("checkin") > -1) {
			_currentCheckinField = getElem(_DateInputUpdated.id);
			var _otherElement = _DateInputUpdated.id.replace("CheckIn", "CheckOut");
			_currentCheckoutField = getElem(_otherElement);
		} else {
			var _otherElement = _DateInputUpdated.id.replace("CheckOut", "CheckIn");
			_currentCheckinField = getElem(_otherElement);
			_currentCheckoutField = getElem(_DateInputUpdated.id);
		}

		var _currentCheckinDate = new Date(_currentCheckinField.value);
			cmxCreateCookie("CHECKINDATE", (_currentCheckinDate.getMonth() + 1) + "/" + _currentCheckinDate.getDate() + "/" + _currentCheckinDate.getFullYear(), 30);
		var _currentCheckoutDate = new Date(_currentCheckoutField.value);
			cmxCreateCookie("CHECKOUTDATE", (_currentCheckoutDate.getMonth() + 1) + "/" + _currentCheckoutDate.getDate() + "/" + _currentCheckoutDate.getFullYear(), 30);

		var calculatedMaximumCheckOutDay = YAHOO.widget.DateMath.add(_currentCheckinDate, YAHOO.widget.DateMath.DAY, 14);

		if (YAHOO.widget.DateMath.before(_currentCheckoutDate, _currentCheckinDate) == true) {
			if (isEspanol() == true) {
				_message = '<strong>Tu fecha de llegada es despu' + String.fromCharCode(233) +
				               's de tu fecha de salida.</strong> Por favor revisa tus fechas e int' + String.fromCharCode(233) +
							   'ntalo de nuevo. <br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';
			} else {
				_message = '<strong>The current Departure date occurs after the current Return date.</strong> ';
					_message += 'Please adjust your dates and try again.<br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
			}

			this.renderError(_message, ev);
			_bFoundError = true;
		}

		if (YAHOO.widget.DateMath.before(new Date(calculatedMaximumCheckOutDay), _currentCheckoutDate) == true) {
			if (isEspanol() == true) {
				_message = '<strong>Tu b' + String.fromCharCode(250) + 'squeda por fecha contiene m' + String.fromCharCode(225) +
					's d' + String.fromCharCode(237) + 'as del m' + String.fromCharCode(225) + 'ximo de 10 d' + String.fromCharCode(237) + 'as.</strong> Por favor ' +
					'cambia tus fechas e int' + String.fromCharCode(233) +'ntalo de nuevo.<br />' +
					'<br /><a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';
			} else {
				_message = '<strong>Your date search is longer than the 14-day maximum.</strong> ';
					_message += 'Please adjust your length of stay and try again.<br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
			}

			this.renderError(_message, ev);
			_bFoundError = true;
		}

		if (YAHOO.widget.DateMath.before(YAHOO.widget.DateMath.subtract(_currentCheckoutDate,YAHOO.widget.DateMath.DAY, 1),_currentCheckinDate) == true && _bFoundError != true) {
			if (isEspanol() == true) {
				_message = '<strong>Has seleccionado el mismo d�a de entrada y de salida.</strong>'  +
							   'Por favor revisa tus fechas e int' + String.fromCharCode(233) + 'ntalo de nuevo. <br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';
			} else {
				_message = '<strong>You\'ve selected the same day to depart and return.</strong> ';
					_message += 'Please adjust your dates and try again.<br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
			}

			this.renderError(_message, ev);
			_bFoundError = true;
		}
		if (_bFoundError == false) { this.clearError(); }
		// GW - 4/7/2010 not adding a tlAddEvent here since air hotel is a separate widget
		return _bFoundError;
    };

    SearchWidget.prototype.hotelSearchDateVerification = function (_DateInputUpdated, ev) { // was not part of prototype
		var _currentCheckinField;
		var _currentCheckoutField;
		var _bFoundError = false;
		var _message;

		if (_DateInputUpdated.id.toLowerCase().indexOf("checkin") > -1) {
			_currentCheckinField = getElem(_DateInputUpdated.id);
			var _otherElement = _DateInputUpdated.id.replace("CheckIn", "CheckOut");
			_currentCheckoutField = getElem(_otherElement);
		} else {
			var _otherElement = _DateInputUpdated.id.replace("CheckOut", "CheckIn");
			_currentCheckinField = getElem(_otherElement);
			_currentCheckoutField = getElem(_DateInputUpdated.id);
		}

		var _currentCheckinDate = new Date(_currentCheckinField.value);
			cmxCreateCookie("CHECKINDATE", (_currentCheckinDate.getMonth() + 1) + "/" + _currentCheckinDate.getDate() + "/" + _currentCheckinDate.getFullYear(), 30);
		var _currentCheckoutDate = new Date(_currentCheckoutField.value);
			cmxCreateCookie("CHECKOUTDATE", (_currentCheckoutDate.getMonth() + 1) + "/" + _currentCheckoutDate.getDate() + "/" + _currentCheckoutDate.getFullYear(), 30);

		var calculatedMaximumCheckOutDay = YAHOO.widget.DateMath.add(_currentCheckinDate, YAHOO.widget.DateMath.DAY, 10);

		if (YAHOO.widget.DateMath.before(_currentCheckoutDate, _currentCheckinDate) == true) {
			if (isEspanol() == true) {
				_message = '<strong>Tu fecha de llegada es despu' + String.fromCharCode(233) +
				               's de tu fecha de salida.</strong> Por favor revisa tus fechas e int' + String.fromCharCode(233) +
							   'ntalo de nuevo. <br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';
			} else {
				_message = '<strong>Your check-in date occurs after the current check-out date.</strong> ';
					_message += 'Please adjust your dates and try again.<br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
			}

			this.renderError(_message, ev);
			_bFoundError = true;
		}

		if (YAHOO.widget.DateMath.before(new Date(calculatedMaximumCheckOutDay), _currentCheckoutDate) == true) {
			if (isEspanol() == true) {
				_message = '<strong>Tu b' + String.fromCharCode(250) + 'squeda por fecha contiene m' + String.fromCharCode(225) +
					's d' + String.fromCharCode(237) + 'as del m' + String.fromCharCode(225) + 'ximo de 10 d' + String.fromCharCode(237) + 'as.</strong> Por favor ' +
					'cambia tus fechas e int' + String.fromCharCode(233) +'ntalo de nuevo.<br />' +
					'<br /><a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';
			} else {
				_message = '<strong>Your date search is longer than the 10-day maximum.</strong> ';
					_message += 'Please adjust your length of stay and try again.<br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
			}

			this.renderError(_message, ev);
			_bFoundError = true;
		}

		if (YAHOO.widget.DateMath.before(YAHOO.widget.DateMath.subtract(_currentCheckoutDate,YAHOO.widget.DateMath.DAY, 1),_currentCheckinDate) == true && _bFoundError != true) {
			if (isEspanol() == true) {
				_message = '<strong>Has seleccionado el mismo d�a de entrada y de salida.</strong>'  +
							   'Por favor revisa tus fechas e int' + String.fromCharCode(233) + 'ntalo de nuevo. <br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';
			} else {
				_message = '<strong>You\'ve selected the same day to check-in and check-out of your hotel.</strong> ';
					_message += 'Please adjust your dates and try again.<br />';
					_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
			}

			this.renderError(_message, ev);
			_bFoundError = true;
		}

		if (_bFoundError == false) { this.clearError(); }

		// GW - 4/7/2010 not adding a add event this the caller to this method will do it

		return _bFoundError;
    };
	// this was not part of prototype
    SearchWidget.prototype.renderError = function(_errMessage, ev) {
		var el = getElem("divHotelSearchErrorDiv" + this.RAND);
		el.innerHTML = _errMessage;
		el.style.display = "";
    };
    // this was not part of prototype
	SearchWidget.prototype.verifyRoomOccupancy = function () {
			var _bFoundError = false;

			var NUM_OF_ADULTS = new Array(4);
				NUM_OF_ADULTS[0] = "2";
				for (a = 1; a < 4; a++) {
					NUM_OF_ADULTS[a] = "0";
				}

			var NUM_OF_CHILDREN = new Array(4);
				for (a = 0; a < 4; a++) {
					NUM_OF_CHILDREN[a] = "0";
				}

			for (r = 0; r < MaxNumberOfRooms; r++) {
				if (getElem("tr_room_" + (r + 1) + this.RAND).className == "clsRoomSelectorRowShown") {
					_numOfAdults = getElem((r + 1) + "selAdultSelector" + this.RAND).selectedIndex + 1;
					NUM_OF_ADULTS[r] = _numOfAdults;
				} else {
					NUM_OF_ADULTS[r] = "0";
				}
			}

			for (r = 0; r < MaxNumberOfRooms; r++) {
				if (getElem("tr_room_" + (r + 1) + this.RAND).className == "clsRoomSelectorRowShown") {
					_numOfChildren = getElem((r + 1) + "selChildrenSelector" + this.RAND).selectedIndex;
					NUM_OF_CHILDREN[r] = _numOfChildren;
				} else {
					NUM_OF_CHILDREN[r] = "0";
				}
			}

			for (r = 0; r < MaxNumberOfRooms; r++) {
				 if ((parseInt(NUM_OF_ADULTS[r]) + parseInt(NUM_OF_CHILDREN[r])) > 4) {
					if (isEspanol() == true) {
						var _message = '<strong>Hay demasiadas personas en la habitaci' + String.fromCharCode(243) + 'n ' + (r + 1) + '</strong><br />' +
							'El cupo m' + String.fromCharCode(225) +
							'ximo por habitaci' + String.fromCharCode(243).toLowerCase() +
							'n. Por favor cambia la cantidad de personas habitaci' + String.fromCharCode(243) + 'n ' + (r + 1) + ' e int' + String.fromCharCode(243) +
							'ntalo du nuevo.<br />';
							_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';
					} else {
						var _message = '<strong>Room ' + (r + 1) + ' contains too many people.</strong> Occupancy is limited to four people per room.';
							_message += ' Please adjust your room occupancy for room ' + (r + 1) + ' and try again.<br />';
							_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
					}


					this.renderError(_message);
					_bFoundError = true;
				}
			}
			var numRoom = getElem("selRoomSelector" + this.RAND).selectedIndex + 1;
			for(i = 1; i < numRoom + 1; i++) {
				var numChild = getElem(i + "selChildrenSelector" + this.RAND).selectedIndex;
				for(j = 1; j < numChild + 1; j++) {
					if(getElem("selRoom" + i + "ChildNum" + j + "Age" + this.RAND).selectedIndex == 0) {
						if(isEspanol() == true) {
							var _message = '<strong>Cuarto ' + (i) + ' Ni' + String.fromCharCode(241) + 'o ' + (j) + ': -- no es una edad v' + String.fromCharCode(225) + 'lida.</strong>';
								_message += ' Haz favor de escoger la edad para Cuarto ' + (i) + ' Ni' + String.fromCharCode(241) + 'o ' + (j) + ' de nuevo.<br />';
								_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">Cerrar mensaje</a>';
								this.renderError(_message);
								_bFoundError = true;
							break;
						} else {
							var _message = '<strong>Room ' + (i) + ' Child ' + (j) + ': -- is not a valid age.</strong>';
								_message += ' Please select an age for Room ' + (i) + ' Child ' + (j) + ' and try again.<br />';
								_message += '<a href="#" onclick="closeHotelErrorMessage(\'' + this.RAND + '\');">close message</a>';
								this.renderError(_message);
								_bFoundError = true;
							break;
						}
					}
				}
			}
			if (_bFoundError == false) { this.clearError(); }
			// GW - 4/7/2010 not adding tlAddEvent since caller will do it
			return _bFoundError;
    };

	SearchWidget.prototype.setFormSubmissionUrl = function(_newURL) {
       this.FORM_SUBMISSION_URL = _newURL;
    };

	// this was not part of prototype
    SearchWidget.prototype.clearError = function() {
			// GW - 4/1/2010 updating dom, calling TL
			var el = getElem("divHotelSearchErrorDiv" + this.RAND);
			el.innerHTML = "";
			el.style.display = "none";
			VDCtoTL.tlProcessNode(el);
    };
};

function togglePageElement(elementIdToToggle, toggleType) {
    if (toggleType.toLowerCase() == "show" || toggleType.toLowerCase() == "hide") {
        if (toggleType.toLowerCase() == "show") {
			getElem(elementIdToToggle).style.display = "";
		}
		if (toggleType.toLowerCase() == "hide") {
			getElem(elementIdToToggle).style.display = "none";
		}
    } else {
        if (getElem(elementIdToToggle).style.display == "none") {
            getElem(elementIdToToggle).style.display = "";
        } else {
            getElem(elementIdToToggle).style.display = "none";
        }
    }
};

function loadHotelListXML(_xmlDocPath, did) {
	divID = did;
	url=_xmlDocPath;
	xhl=GetXmlHttpObject(stateChanged1);
    xhl.open("GET", url, false);
    xhl.send(null);


};
function stateChanged1() {
	if(xhl.readyState==4 || xhl.readyState=="complete")
    {
		var xml1 = returnXMLDoc(xhl.responseText);
		writeHotelList(xml1,divID);
    }

};
function writeHotelList(xml, dID) {
	for (var i = 0; i < xml.length; i++) {
		var anOp = document.createElement("option");
		anOp.text = xml[i].childNodes[0].nodeValue.toString();
		anOp.value = xml[i].getAttribute('value');
		document.getElementById(dID).options.add(anOp);
	}
};
function returnXMLDoc(_xmlDocPath) {
	var xmlDoc;
    try {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async=false;
        xmlDoc.loadXML(_xmlDocPath);
    }
    catch(e) {
        try {
			var parser = new DOMParser();
        	xmlDoc=parser.parseFromString(_xmlDocPath, "text/xml");
    	} catch(e) {
    	}
	}
    return xmlDoc.getElementsByTagName('option');
};
function loadDepartureXML(_xmlDocPath) {
    var xmlDoc;
    if (window.ActiveXObject) {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async=false;
        xmlDoc.load(_xmlDocPath);
    }
    else if (document.implementation && document.implementation.createDocument) {
        xmlDoc=document.implementation.createDocument("","",null);
        xmlDoc.async=false;
        xmlDoc.load(_xmlDocPath);
    } else {
    }

    return xmlDoc.getElementsByTagName('option');
};

function newElem(_newElem) {
    return document.createElement(_newElem);
};

function getElem(_elemID) {
    return document.getElementById(_elemID);
};

function addAttrib(_element, _attrib, _value) {
    var _newAttrib = document.createAttribute(_attrib);
        _newAttrib.nodeValue = _value;
        _element.setAttributeNode(_newAttrib);
};

var iRetryAttempt = 0;
var iMaxAttachRetry = 3;
function addAnEvent(_obj, _eventName, _functionName) {
   if (_obj != null && _obj != "undefined") {
      if (window.addEventListener) {
         _obj.addEventListener(_eventName, _functionName, false);
         }
      else {
         _obj.attachEvent("on" + _eventName, _functionName);
         }
      iRetryAttempt = 0;
      }
   else {
      if (iRetryAttempt < iMaxAttachRetry) {
         try {
            iRetryAttempt++;
            window.setTimeout(addAnEvent(_obj, _eventName, _functionName), 1000);
            }
         catch(Exceptions) {

			return;
            }
         }
      }
   };

function findXPos(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (1) {
            curleft+=obj.offsetLeft;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.x) {
        curleft+=obj.x;
    }
    return curleft;
};

function findYPos(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (1) {
            curtop+=obj.offsetTop;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.y) {
        curtop+=obj.y;

    }
    return curtop;
};

function cmxCreateCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else {
        var expires = "";
    }

    value += "";  // make sure value is a string
    if (value.indexOf(",") >= 0) {
    	value = "\"" + value + "\"";  // Quote cookie value if it contains a comma.
    }

    var cmxCurrentCookieDomain = document.domain.split(".");
    var cmxBuiltCookieDomain = "." + cmxCurrentCookieDomain[cmxCurrentCookieDomain.length - 2] + "." + cmxCurrentCookieDomain[cmxCurrentCookieDomain.length - 1];

    document.cookie = name + "=" + value + expires + "; path=/; domain=" + cmxBuiltCookieDomain;
};

function cmxReadCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1,c.length);
        }

        if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length,c.length);
        }
    }
    return null;
};

function cmxEraseCookie(name) {
    cmxCreateCookie(name,"",-1);
};

function closeHotelErrorMessage(_MessageID) {
	getElem("divHotelSearchErrorDiv" + _MessageID).style.display = "none";
};
function mouseoverSearch() { contenthover = true; };
function mouseoutSearch() { contenthover = false; };
function convertURLToShopDomain(sUrl) {
	return sUrl.replace("www.", "shop.");
};
var CURRENT_DOMAIN = document.domain.toLowerCase();
var CURRENT_URL = "" + window.location;
function isEspanol() {

	var CURRENT_DOMAIN = document.domain.toLowerCase();
	var CURRENT_URL = "" + window.location;
	if (CURRENT_DOMAIN.indexOf("espanol") > -1 || CURRENT_URL.indexOf("lang=es") > -1) {
		return true;
	} else {
		return false;
	}
};

function reformatDateField(el) {
	var now = new Date();
	var date = parseDate(el.value);
	if(el.value=='' || isNaN(date)) date = now;
	el.value=formatDate(date);
	return date;
};


function dateDiff(date1, date2) {
	return Math.round((date2.getTime()-date1.getTime())/(1000*60*60*24));
};

function addDays(date, days) {
	return new Date(date.getTime()+(days*(1000*60*60*24)));
};

function pad(value) {
	if(value<10) value="0"+(value*1);
	return value;
};

function fixYear(year) {
	if(year<100) year+=2000;
	if(year<2000) year+=1900;
	return year;
};

function parseDate(dateStr) {
	var reg = new RegExp("[a-zA-Z]");
	while(dateStr.match(reg)) {
		dateStr = dateStr.replace(reg, "");
	}

	var d = dateStr.split(/[^\d]+/);
	var now = new Date();
	var dt = new Date(dateStr);
	if(d.length<2) return now;
	if(d[0].length==0 || d[0]>12) return now;
	if(d[1].length==0 || d[1]>31) return now;
	if(d[2].length<3) d[2]=fixYear(dt.getYear());
	return new Date( d[2] , d[0]-1 , d[1]);
};

function formatDate(date) {
	if(isNaN(date)) return "";
	return pad(date.getMonth()+1)+"/"+pad(date.getDate())+"/"+fixYear(date.getYear(date));
};

function getString(_str) {
	return _str;
};

function setDefault(loc, divid) {
	for(i = 0; i < getElem(divid).length; i++) {
		if(getElem(divid).options[0].value == loc) {
			getElem(divid).selectedIndex = i;
			break;
		}
	}
};
function GetXmlHttpObject(handler)
{
	var objXmlHttp=null;
    if (navigator.userAgent.indexOf("MSIE")>=0)
    {
    	var strName="Msxml2.XMLHTTP";
        if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
        {
        	strName="Microsoft.XMLHTTP";
        }
        try
        {
          objXmlHttp=new ActiveXObject(strName);
          objXmlHttp.onreadystatechange=handler;
          return objXmlHttp;
        }
        catch(e)
        {
          return ;
        }
      }
      if (navigator.userAgent.indexOf("Mozilla")>=0 || navigator.userAgent.indexOf("Opera")>=8)
      {
        objXmlHttp=new XMLHttpRequest();
        objXmlHttp.onload=handler;
        objXmlHttp.onerror=handler;
        return objXmlHttp;
      }
};
function bind(obj, fn) {
	return function () {
		return fn.apply(obj, arguments);
	};
};

// GW - 3/31/2010 modified facade to take in a parameter for the event object
//TeaLeaf facade
window.VDCtoTL = function () {

	var TLexists = function () {
		return window.TeaLeaf != null && window.TeaLeaf != 'undefined' && window.TeaLeaf != undefined;
	};

	return {
		tlQueueKey : function (e) {
			if (!e) e = window.event;
			if (TLexists() && TeaLeaf.Client && TeaLeaf.Client.tlQueueKey)
				TeaLeaf.Client.tlQueueKey(e);
		},

		tlAddEvent : function (e) {
			if (!e) e = window.event;
			if (TLexists() && TeaLeaf.Client && TeaLeaf.Client.tlAddEvent)
				TeaLeaf.Client.tlAddEvent(e);
		},

		tlProcessNode : function (el) {
			if (TLexists() && TeaLeaf.Client && TeaLeaf.Client.tlProcessNode)
				TeaLeaf.Client.tlProcessNode(el);
		}
	};
}();