﻿function todayStr() {
var today=new Date()
return today.getMonth()+1+"/"+today.getDate()+"/"+(today.getYear() + 1900)
}
	(function() {
	 
		/**
		* IntervalCalendar is an extension of the CalendarGroup designed specifically
		* for the selection of an interval of dates.
		*
		* @namespace YAHOO.example.calendar
		* @module calendar
		* @since 2.5.2
		* @requires yahoo, dom, event, calendar
		*/
	 
		/**
		* IntervalCalendar is an extension of the CalendarGroup designed specifically
		* for the selection of an interval of dates, as opposed to a single date or
		* an arbitrary collection of dates.
		* <p> 
		* <b>Note:</b> When using IntervalCalendar, dates should not be selected or
		* deselected using the 'selected' configuration property or any of the
		* CalendarGroup select/deselect methods. Doing so will corrupt the internal
		* state of the control. Instead, use the provided methods setInterval and
		* resetInterval.
		* </p> 
		* <p> 
		* Similarly, when handling select/deselect/etc. events, do not use the
		* dates passed in the arguments to attempt to keep track of the currently
		* selected interval. Instead, use getInterval.
		* </p> 
		*
		* @namespace YAHOO.example.calendar
		* @class IntervalCalendar
		* @extends YAHOO.widget.CalendarGroup
		* @constructor
		* @param {String | HTMLElement} container The id of, or reference to, an HTML DIV element which will contain the control.
		* @param {Object} cfg optional The initial configuration options for the control.
		*/
		function IntervalCalendar(container, cfg) {
			/**
			* The interval state, which counts the number of interval endpoints that have
			* been selected (0 to 2).
			* 
			* @private
			* @type Number
			*/
			this._iState = 0;
	 
			// Must be a multi-select CalendarGroup
			cfg = cfg || {};
			cfg.multi_select = true;
	 
			// Call parent constructor
			IntervalCalendar.superclass.constructor.call(this, container, cfg);
	 
			// Subscribe internal event handlers
			this.beforeSelectEvent.subscribe(this._intervalOnBeforeSelect, this, true);
			this.selectEvent.subscribe(this._intervalOnSelect, this, true);
			this.beforeDeselectEvent.subscribe(this._intervalOnBeforeDeselect, this, true);
			this.deselectEvent.subscribe(this._intervalOnDeselect, this, true);
		}
	 
		/**
		* Default configuration parameters.
		* 
		* @property IntervalCalendar._DEFAULT_CONFIG
		* @final
		* @static
		* @private
		* @type Object
		*/
		IntervalCalendar._DEFAULT_CONFIG = YAHOO.widget.CalendarGroup._DEFAULT_CONFIG;
	 
		YAHOO.lang.extend(IntervalCalendar, YAHOO.widget.CalendarGroup, {
	 
			/**
			* Returns a string representation of a date which takes into account
			* relevant localization settings and is suitable for use with
			* YAHOO.widget.CalendarGroup and YAHOO.widget.Calendar methods.
			* 
			* @method _dateString
			* @private
			* @param {Date} d The JavaScript Date object of which to obtain a string representation.
			* @return {String} The string representation of the JavaScript Date object.
			*/
			_dateString : function(d) {
				var a = [];
				a[this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.MDY_MONTH_POSITION.key)-1] = (d.getMonth() + 1);
				a[this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.MDY_DAY_POSITION.key)-1] = d.getDate();
				a[this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.MDY_YEAR_POSITION.key)-1] = d.getFullYear();
				var s = this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.DATE_FIELD_DELIMITER.key);
				return a.join(s);
			},
	 
			/**
			* Given a lower and upper date, returns a string representing the interval
			* of dates between and including them, which takes into account relevant
			* localization settings and is suitable for use with
			* YAHOO.widget.CalendarGroup and YAHOO.widget.Calendar methods.
			* <p> 
			* <b>Note:</b> No internal checking is done to ensure that the lower date
			* is in fact less than or equal to the upper date.
			* </p> 
			* 
			* @method _dateIntervalString
			* @private
			* @param {Date} l The lower date of the interval, as a JavaScript Date object.
			* @param {Date} u The upper date of the interval, as a JavaScript Date object.
			* @return {String} The string representing the interval of dates between and
			*                   including the lower and upper dates.
			*/
			_dateIntervalString : function(l, u) {
				var s = this.cfg.getProperty(IntervalCalendar._DEFAULT_CONFIG.DATE_RANGE_DELIMITER.key);
				return (this._dateString(l)
						+ s + this._dateString(u));
			},
	 
			/**
			* Returns the lower and upper dates of the currently selected interval, if an
			* interval is selected.
			* 
			* @method getInterval
			* @return {Array} An empty array if no interval is selected; otherwise an array
			*                 consisting of two JavaScript Date objects, the first being the
			*                 lower date of the interval and the second being the upper date.
			*/
			getInterval : function() {
				// Get selected dates
				var dates = this.getSelectedDates();
				if(dates.length > 0) {
					// Return lower and upper date in array
					var l = dates[0];
					var u = dates[dates.length - 1];
					return [l, u];
				}
				else {
					// No dates selected, return empty array
					return [];
				}
			},
	 
			/**
			* Sets the currently selected interval by specifying the lower and upper
			* dates of the interval (in either order).
			* <p> 
			* <b>Note:</b> The render method must be called after setting the interval
			* for any changes to be seen.
			* </p> 
			* 
			* @method setInterval
			* @param {Date} d1 A JavaScript Date object.
			* @param {Date} d2 A JavaScript Date object.
			*/
			setInterval : function(d1, d2) {
				// Determine lower and upper dates
				var b = (d1 <= d2);
				var l = b ? d1 : d2;
				var u = b ? d2 : d1;
				// Update configuration
				this.cfg.setProperty('selected', this._dateIntervalString(l, u), false);
				this._iState = 2;
			},
	 
			/**
			* Resets the currently selected interval.
			* <p> 
			* <b>Note:</b> The render method must be called after resetting the interval
			* for any changes to be seen.
			* </p> 
			* 
			* @method resetInterval
			*/
			resetInterval : function() {
				// Update configuration
				this.cfg.setProperty('selected', [], false);
				this._iState = 0;
			},
	 
			/**
			* Handles beforeSelect event.
			* 
			* @method _intervalOnBeforeSelect
			* @private
			*/
			_intervalOnBeforeSelect : function(t,a,o) {
				// Update interval state
				this._iState = (this._iState + 1) % 3;
				if(this._iState == 0) {
					// If starting over with upcoming selection, first deselect all
					this.deselectAll();
					this._iState++;
				}
			},
	 
			/**
			* Handles selectEvent event.
			* 
			* @method _intervalOnSelect
			* @private
			*/
			_intervalOnSelect : function(t,a,o) {
				// Get selected dates
				var dates = this.getSelectedDates();
				if(dates.length > 1) {
					/* If more than one date is selected, ensure that the entire interval
						between and including them is selected */
					var l = dates[0];
					var u = dates[dates.length - 1];
					this.cfg.setProperty('selected', this._dateIntervalString(l, u), false);
					this.hide();
				}
				// Render changes
				this.render();
			},
	 
			/**
			* Handles beforeDeselect event.
			* 
			* @method _intervalOnBeforeDeselect
			* @private
			*/
			_intervalOnBeforeDeselect : function(t,a,o) {
				if(this._iState != 0) {
					/* If part of an interval is already selected, then swallow up
						this event because it is superfluous (see _intervalOnDeselect) */
					return false;
				}
			},
	 
			/**
			* Handles deselectEvent event.
			*
			* @method _intervalOnDeselect
			* @private
			*/
			_intervalOnDeselect : function(t,a,o) {
				if(this._iState != 0) {
					// If part of an interval is already selected, then first deselect all
					this._iState = 0;
					this.deselectAll();
	 
					// Get individual date deselected and page containing it
					var d = a[0];
					var date = YAHOO.widget.DateMath.getDate(d[0], d[1] - 1, d[2]);
					var page = this.getCalendarPage(date);
					if(page) {
						// Now (re)select the individual date
						page.beforeSelectEvent.fire();
						this.cfg.setProperty('selected', this._dateString(date), false);
						page.selectEvent.fire([d]);
					}
					// Swallow up since we called deselectAll above
					return false;
				}
			}
		});
	 
		YAHOO.namespace("widget.calendar");
		YAHOO.widget.calendar.IntervalCalendar = IntervalCalendar;
	})();
	 
	YAHOO.util.Event.onDOMReady(function() {
	 
		var inTxt = YAHOO.util.Dom.get("in"),
			outTxt = YAHOO.util.Dom.get("out"),
			todaysdate = todayStr(),
			inDate, outDate, interval;
		inTxt.value = "";
		outTxt.value = "";

		var cal = new YAHOO.widget.calendar.IntervalCalendar("cal1Container", {pages:2, close:true, title:"Please Select a Date Range:", mindate:"12/01/2009"});
	 
		cal.selectEvent.subscribe(function() {
			interval = this.getInterval();
	 
			if (interval.length == 2) {
				inDate = interval[0];
				inTxt.value = (inDate.getMonth() + 1) + "/" + inDate.getDate() + "/" + inDate.getFullYear();
	 
				if (interval[0].getTime() != interval[1].getTime()) {
					outDate = interval[1];
					outTxt.value = (outDate.getMonth() + 1) + "/" + outDate.getDate() + "/" + outDate.getFullYear();
				} else {
					outTxt.value = "";
				}
			}
		}, cal, true);
		
		// dialog = new YAHOO.widget.Dialog("container", {
			// 	context:["show", "tl", "bl"],
			// 	buttons:[ {text:"Select", isDefault:true, handler: okHandler}, 
			// 			  {text:"Cancel", handler: cancelHandler}],
			// 	width:"16em",  // Sam Skin dialog needs to have a width defined (7*2em + 2*1em = 16em).
			// 	draggable:false,
			// 	close:true
			// });

		cal.render();
		
		// dialog.render();
		// dialog.hide();
						
		YAHOO.util.Event.addListener("in", "click", cal.show, cal, true);
		YAHOO.util.Event.addListener("out", "click", cal.show, cal, true);
		YAHOO.util.Event.addListener("inBut", "click", cal.show, cal, true);
		YAHOO.util.Event.addListener("outBut", "click", cal.show, cal, true);
	});



function createFormElement(element,type,name,id,value,parent){var e=document.createElement(element);e.setAttribute("name",name);if(type!=null)e.setAttribute("type",type);e.setAttribute("id",id);if(value!=null)e.setAttribute("value",value);if(parent!=null)
parent.appendChild(e);else
return e;}

function addSelectOption(select,value,text,selected){var option=document.createElement("option");if(selected)
option.setAttribute("selected","selected");option.setAttribute("value",value);option.appendChild(document.createTextNode(text))
select.appendChild(option);}

//Muestra y oculta los combos para la seleccion de edades de los ni?os
function updateMinors(){
  var ageminor1 = YAHOO.util.Dom.get("tdMinorAge1");
  var ageminor2 = YAHOO.util.Dom.get("tdMinorAge2");
  var ageminor3 = YAHOO.util.Dom.get("tdMinorAge3");
  var ageminor4 = YAHOO.util.Dom.get("tdMinorAge4");
  var ageminor5 = YAHOO.util.Dom.get("tdMinorAge5");
  var ageminor6 = YAHOO.util.Dom.get("tdMinorAge6");

  ageminor1.innerHTML = "";
  ageminor2.innerHTML = "";
  ageminor3.innerHTML = "";
  ageminor4.innerHTML = "";
  ageminor5.innerHTML = "";
  ageminor6.innerHTML = "";
 
  YAHOO.util.Dom.get("tdMinorAgeTitle1").innerHTML = "";
  YAHOO.util.Dom.get("tdMinorAgeTitle2").innerHTML = "";
  YAHOO.util.Dom.get("tdMinorAgeTitle3").innerHTML = "";
  YAHOO.util.Dom.get("tdMinorAgeTitle4").innerHTML = "";
  YAHOO.util.Dom.get("tdMinorAgeTitle5").innerHTML = "";
  YAHOO.util.Dom.get("tdMinorAgeTitle6").innerHTML = "";
 
  var minors = YAHOO.util.Dom.get("select_children1").value;

  if(minors>0){
 
	 YAHOO.util.Dom.get("containerMinorsAges").style.visibility ="visible";
	 YAHOO.util.Dom.get("containerMinorsAges").style.display ="block";
	 
	 var select;

	 for(var i=1; i<=minors; i++){
		
		YAHOO.util.Dom.get("tdMinorAgeTitle" + i).innerHTML = '<span class="small"><b>' + 'Child&nbsp;' + i + '</b></span>';
		 
		select = createFormElement('select', null, 'select_age_children1x' + i, 'select_age_children1x' + i);
		select.tabIndex = i+5;
		addSelectOption(select, -1,"-?-",true);
		addSelectOption(select,0, "<1");
		
		for(var j=1; j<=17; j++){
		   addSelectOption(select, j, j);
		}

		YAHOO.util.Dom.get("tdMinorAge" + i).appendChild(select);
		YAHOO.util.Dom.get("tdMinorAge" + i).innerHTML = YAHOO.util.Dom.get("tdMinorAge" + i).innerHTML + '<span id="rqfMinor' + i + '" class="required" style="display: none;">*</span>';
		YAHOO.util.Dom.get('select_age_children1x' + i).onchange=changeHidens;
	 }
	 
	 SetEarlyValues(minors)
 }
 else{
	 YAHOO.util.Dom.get("containerMinorsAges").style.display ="none";
 }
}

function changeHidens() {
}
function SetEarlyValues() {
}

function submitFormSearch() {
	
	frm = document.getElementById("frmSearch");

	type = document.getElementById("searchTypeSel");
	
	if (type.value == 'hot') {
		frm.action = 'http://www.hotelzone.com/core5/core.php';
		frm.method = 'get';
		ds = document.getElementById("dates");
		de = document.getElementById("datee");
		ch = document.getElementById("NumChild");
		ch.value = document.getElementById("select_children1").value;
		
		if (ch.value >= 1) {
			a1 = document.getElementById("select_age_children11");
			a1.value = document.getElementById("select_age_children1x1").value;
		}
		if (ch.value >= 2) {
			a2 = document.getElementById("select_age_children12");
			a2.value = document.getElementById("select_age_children1x2").value;
		}
		if (ch.value >= 3) {
			a3 = document.getElementById("select_age_children13");
			a3.value = document.getElementById("select_age_children1x3").value;
		}
		if (ch.value >= 4) {
			a4 = document.getElementById("select_age_children14");
			a4.value = document.getElementById("select_age_children1x4").value;
		}
		if (ch.value >= 5) {
			a5 = document.getElementById("select_age_children15");
			a5.value = document.getElementById("select_age_children1x5").value;
		}
		
		ds.value = document.getElementById("in").value;
		de.value = document.getElementById("out").value;

        pageTracker._trackPageview('/outgoing/hotelzone.com/rooms');

		frm.submit();	

		}
	
	if (type.value == 'pkt') {
		
		fr = document.getElementById("dcty");	
		ds = document.getElementById("fromdate");
		de = document.getElementById("todate");
		ad = document.getElementById("numadult");
		ch = document.getElementById("NumChild");
		ds.value = document.getElementById("in").value;
		de.value = document.getElementById("out").value;
		ad.value = document.getElementById("select_adults1").value;
		ch.value = document.getElementById("select_children1").value;
		
		if (ch.value >= 1) {
			a1 = document.getElementById("age11");
			a1.value = document.getElementById("select_age_children1x1").value;
		}
		if (ch.value >= 2) {
			a2 = document.getElementById("age12");
			a2.value = document.getElementById("select_age_children1x2").value;
		}
		if (ch.value >= 3) {
			a3 = document.getElementById("age13");
			a3.value = document.getElementById("select_age_children1x3").value;
		}
		if (ch.value >= 4) {
			a4 = document.getElementById("age14");
			a4.value = document.getElementById("select_age_children1x4").value;
		}
		if (ch.value >= 5) {
			a5 = document.getElementById("age15");
			a5.value = document.getElementById("select_age_children1x5").value;
		}

        pageTracker._trackPageview('/outgoing/wwte.com');

		window.open('http://travel.wwte1.com/pubspec/scripts/eap.asp?GOTO=PKGLAUNCH&eapid=45108-30001&destid=180016&destids=180016&numroom=1&packagetype=2'+'&fromdate='+ds.value+'&todate='+de.value+'&frairport='+fr.value+'&numadult='+ad.value+'&numchild='+ch.value);
        YAHOO.util.Event.stopEvent(frm);
        //frm.action = 'http://travel.wwte1.com/pubspec/scripts/eap.asp?GOTO=PKGLAUNCH&eapid=45108-30001&destid=180016&destids=180016&numroom=1&packagetype=2'+'&fromdate='+ds.value+'&todate='+de.value+'&frairport='+fr.value+'&numadult='+ad.value+'&numchild='+ch.value+'&age1='+a1.value+'&age2='+a2.value;
        //frm.method = 'get';
        //frm.action = actionurl;
        //frm.submit();
	}

	if (type.value == 'cht') {

		fr = document.getElementById("airportHidden");
		ds = document.getElementById("fromdate");
		de = document.getElementById("todate");
		ad = document.getElementById("numadult");
		ch = document.getElementById("NumChild");
		ds.value = document.getElementById("in").value;
		de.value = document.getElementById("out").value;
		ad.value = document.getElementById("select_adults1").value;
		ch.value = document.getElementById("select_children1").value;

        var ch1 = "";
        var ch2 = "";
        var ch3 = "";
        var ch4 = "";
        var ch5 = "";

        //alert('ch1:'+ch1);

		if (ch.value >= 1) {
			a1 = document.getElementById("age11");
			a1.value = document.getElementById("select_age_children1x1").value;
            ch1 = a1.value;
            //alert(a1.value);
            //alert('ch1:'+ch1);

		}
		if (ch.value >= 2) {
			a2 = document.getElementById("age12");
			a2.value = document.getElementById("select_age_children1x2").value;
            ch2 = a2.value;
		}
		if (ch.value >= 3) {
			a3 = document.getElementById("age13");
			a3.value = document.getElementById("select_age_children1x3").value;
            ch3 = a3.value;
		}
		if (ch.value >= 4) {
			a4 = document.getElementById("age14");
			a4.value = document.getElementById("select_age_children1x4").value;
            ch4 = a4.value;
		}
		if (ch.value >= 5) {
			a5 = document.getElementById("age15");
			a5.value = document.getElementById("select_age_children1x5").value;
            ch5 = a5.value;
		}

        pageTracker._trackPageview('/outgoing/trisept');

        // http://res.beta.globalbookingsolutions.com/search/ExternalFormPost.aspx?gsVendor=MRL&gsVacationType=AH01&gsOrigin=ORD&gsDestination=PVR&
        // gsDepartureDate=04/15/09&gsLenghtOfStay=4&gsReturnDate=04/19/09&gsNumberOfTravelers=2&gsAge1=&gsAge2=&gsAge3=&gsAge4=&plCode=GBMARIVAL

        window.open('http://res.globalbookingsolutions.com/search/ExternalFormPost.aspx?gsVendor=MRL&gsVacationType=AH01&gsDestination=PVR&plCode=gbmarres&gsOrigin='+fr.value+'&gsDepartureDate='+ds.value+'&gsReturnDate='+de.value+'&gsNumberOfTravelers='+ad.value+'&gsAge1='+ch1+'&gsAge2='+ch2+'&gsAge3='+ch3+'&gsAge4='+ch4+'&gsAge5='+ch5);
        //alert('http://res.globalbookingsolutions.com/search/ExternalFormPost.aspx?gsVendor=MRL&gsVacationType=AH01&gsDestination=PVR&plCode=GBMARIVAL&gsOrigin='+fr.value+'&gsDepartureDate='+ds.value+'&gsReturnDate='+de.value+'&gsNumberOfTravelers='+ad.value+'&gsAge1='+ch1+'&gsAge2='+ch2+'&gsAge3='+ch3+'&gsAge4='+ch4+'&gsAge5='+ch5);
        YAHOO.util.Event.stopEvent(frm);
        //frm.action = 'http://travel.wwte1.com/pubspec/scripts/eap.asp?GOTO=PKGLAUNCH&eapid=45108-30001&destid=180016&destids=180016&numroom=1&packagetype=2'+'&fromdate='+ds.value+'&todate='+de.value+'&frairport='+fr.value+'&numadult='+ad.value+'&numchild='+ch.value+'&age1='+a1.value+'&age2='+a2.value;
        //frm.method = 'get';
        //frm.action = actionurl;
        //frm.submit();
	}


//frm.submit();
}

function formChange(type) {
	var tHot = document.getElementById("typeHot");
	var tCht = document.getElementById("typeCht");
	var tPkt = document.getElementById("typePkt");
	var tSel = document.getElementById("searchTypeSel");
	var dcty = document.getElementById("dcty");
	var dctl = document.getElementById("dctyLbl");
    var airp = document.getElementById("airportsAutoComplete");

	if (type == 'hot') {
		tHot.style.backgroundColor = "#EFEEE8";
		//tHot.style.color = "#014B68";
		
		//tPkt.style.backgroundColor = "transparent";
		////tPkt.style.border = "0px";
		////tPkt.style.color = "#E2E1DE";
		tCht.style.backgroundColor = "transparent";
		//tCht.style.border = "0px";
		//tCht.style.color = "#E2E1DE";
		
		tSel.value = 'hot'
		dcty.style.display = 'none';
		dctl.style.display = 'none';
        airp.style.display = 'none';
	}

	if (type == 'pkt') {
		tHot.style.backgroundColor = "transparent";
		//tHot.style.border = "0px";
		//tHot.style.color = "#fff";
		tCht.style.backgroundColor = "transparent";
		//tCht.style.border = "0px";
		//tCht.style.color = "#fff";
		
		tPkt.style.backgroundColor = "#EFEEE8";
		//tPkt.style.color = "#014B68";


		tSel.value = 'pkt'
		dcty.style.display = '';
		dctl.style.display = '';
        airp.style.display = 'none';
	}

	if (type == 'cht') {
		tHot.style.backgroundColor = "transparent";
		//tHot.style.border = "0px";
		//tHot.style.color = "#fff";
		//tPkt.style.backgroundColor = "transparent";
		////tPkt.style.border = "0px";
		////tPkt.style.color = "#fff";

		tCht.style.backgroundColor = "#EFEEE8";
		//tCht.style.color = "#014B68";

		tSel.value = 'cht'
		dcty.style.display = 'none';
		dctl.style.display = '';
        airp.style.display = '';
	}

	}
// END FUNCTION



function showHide(elemento) {
        var x = document.getElementById(elemento);
        if (x.style.display == "none") {
                x.style.display="block";
        } else {
                x.style.display="none";
        }
}


