var postalCodePanelGoButton='<a class="btn" href="javascript:postalCodePanel.validateZipCode();"><span>GO</span></a>';
var checkinPanelCalendar;

var checkinPanelAnim = null;

function submitCheckinForm(showPostalPanel, checkAvailability) {
	
	if (!validateRequiredFormField('checkinForm', 'checkin_date', 'Check-in date')) {
		return;
	}
	
	if (!validateDateFormField('checkinForm', 'checkin_date', 'Check-in date')) {
		return;
	}
	
	var url = '/GetMicroPackageDetails.event';
	if (!checkAvailability) {
		submitThisFormEvent('checkinForm', url);
		return;
	}
	
	var params = new SOAPClientParameters();
	params.add('packageRecordId', document.checkinForm.pid.value);
	params.add('checkinDate', new Date(document.checkinForm.checkin_date.value));
	params.add('webRecordId', document.checkinForm.wid.value);
	params.add('numAdults', document.checkinForm.num_adults.value);
	params.add('numChildren', document.checkinForm.num_children.value);
	params.add('numNights', document.checkinForm.num_nights.value);
	params.add('promoCode', document.checkinForm.promo_code.value);
	SOAPClient.invoke(gObeService, "checkBooking", params, true, function(result, xmlResult) {
		if (result.success == 'true') {
			if (showPostalPanel) {
				postalThenSubmit(url, 'checkinForm');
			} else {
				submitThisFormEvent('checkinForm', url);
			}
		} else {
			infoPanel.showPlainMessage(result.message, 325, 280);
		}
	});
}

function checkinShowDropdown() {
	if (checkinPanelAnim == null) {
		checkinPanelAnim = new YAHOO.util.Anim('checkinPanel');
		checkinPanelAnim.attributes.top = {to: -175};
		checkinPanelAnim.duration = 0.4;
		checkinPanelAnim.method = YAHOO.util.Easing.easeIn;
		checkinPanelAnim.onStart.subscribe(function() {
			if (checkinPanelAnim.attributes.top.to == 0) {
				YAHOO.util.Dom.setStyle('checkinPanelMask', 'display', 'block');
			}
		}, checkinPanelAnim);
		checkinPanelAnim.onComplete.subscribe(function() {
			if (checkinPanelAnim.attributes.top.to < 0) {
				YAHOO.util.Dom.setStyle('checkinPanelMask', 'display', 'none');
			}
		}, checkinPanelAnim);
	}
	if (checkinPanelAnim.isAnimated()) {
		return;
	}
	var isOpened = checkinPanelAnim.attributes.top.to == 0; 
	checkinPanelAnim.attributes.top.to = isOpened ? -175 : 0; 
    checkinPanelAnim.animate();
}

function checkinPackageChanged(pid) {
		var params = new SOAPClientParameters();
		params.add('packageRecordId', pid);
		params.add('webRecordId', document.checkinForm.wid.value);
		SOAPClient.invoke(gObeService, "getAttendanceRanges", params, true, function(result, xmlResult) {
			setSelectOptions(document.checkinForm.num_adults, parseIntArray(result.adultsOptions), result.adultsOptions.split(','));
			setSelectOptions(document.checkinForm.num_children, parseIntArray(result.childrenOptions), result.childrenOptions.split(','));
			setSelectIntRangeOptions(document.checkinForm.num_nights, parseInt(result.minNights), parseInt(result.maxNights));
//			checkinPanelCalendar.cfg.setProperty('mindate', result.fromDate);
//			checkinPanelCalendar.cfg.setProperty('maxdate', result.toDate);
			checkinPanelCalendar.cfg.setProperty('disabledWeekDays', parseIntArray(result.disabledWeekDays));
			checkinPanelCalendar.cfg.setProperty('blackoutDates', parseStringDateArray(result.blackoutDates));
			checkinPanelCalendar.cfg.setProperty('unavailableDates', parseStringDateArray(result.unavailableDates));
		});
}

function parseIntArray(str) {
	var result = new Array();
	if (str == null || str == undefined) {
		return result;
	}
	var elements = str.split(',');
	for (var i = 0; i < elements.length; i++) {
		result[result.length] = parseInt(elements[i]);
	}
	return result;
}

function parseStringDateArray(str) {
	if (str == null || str == undefined) {
		return new Array();
	}
	return elements = str.split(',');
}

function setSelectOptions(sel, values, options) {
	while (sel.length != 0) {
		sel.options[sel.length - 1] = null;
	}
	for (var i = 0; i < values.length; i++) {
		sel.options[sel.length] = new Option(options[i], values[i]);
	}
}

function setSelectIntRangeOptions(sel, start, end) {
	while (sel.length != 0) {
		sel.options[sel.length - 1] = null;
	}
	for (var i = start; i <= end; i++) {
		sel.options[sel.length] = new Option(i, i);
	}
}

function formatCheckinDate(date) {
	if (date == null || date == undefined) {
		return "";
	}
	var day = date.getDate();
	var month = date.getMonth();
	var year = date.getFullYear();
	var checkinDateStr = "";
	month++;
	if (month < 10) {
		checkinDateStr += '0';
	}
	checkinDateStr += month;
	checkinDateStr += '/';
	if (day < 10) {
		checkinDateStr += '0';
	}
	checkinDateStr += day;
	checkinDateStr += '/';
	checkinDateStr += year;
	return checkinDateStr;
}

var doContentScroll = false;
function contentScroll() {
	var top = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	if (top < 150) window.scrollBy(0, 350);
}

YAHOO.widget.Calendar.prototype.buildWeekdays = function(html) {
	var defCfg = YAHOO.widget.Calendar._DEFAULT_CONFIG;
	html[html.length] = '<tr class="' + this.Style.CSS_WEEKDAY_ROW + '">';
	if (this.cfg.getProperty(defCfg.SHOW_WEEK_HEADER.key)) {
		html[html.length] = '<th>&#160;</th>';
	}
	for(var i=0;i<this.Locale.LOCALE_WEEKDAYS.length;++i) {
		html[html.length] = '<th class="calweekdaycell'
				+ (i == 0 ? ' calweekdaycellleft' : i == this.Locale.LOCALE_WEEKDAYS.length - 1 ? ' calweekdaycellright' : '')
				+ '">' + this.Locale.LOCALE_WEEKDAYS[i] + '</th>';
	}
	if (this.cfg.getProperty(defCfg.SHOW_WEEK_FOOTER.key)) {
		html[html.length] = '<th>&#160;</th>';
	}
	html[html.length] = '</tr>';
	return html;
};

YAHOO.widget.Calendar.prototype.buildMonthLabel = function() {
	var pageDate = this.cfg.getProperty(YAHOO.widget.Calendar._DEFAULT_CONFIG.PAGEDATE.key);
	return this.Locale.LOCALE_MONTHS[pageDate.getMonth()] + ' ' + String(pageDate.getFullYear()).substring(2);
};


YAHOO.util.Event.onContentReady('checkinCalendarContainer', function() {
	
	checkinPanelCalendar = new IntervalCalendar('checkinCalendar','checkinCalendarContainer', {
					LOCALE_WEEKDAYS: '1char',
					pages: 1,
//					mindate: checkinFromDate,
//					maxdate: checkinToDate,
					disabledWeekDays: checkinDisabledWeekDays,
					blackoutDates: checkinBlackoutDates,
					unavailableDates: checkinUnavailableDates,
					allowedNightsCount: [1],
					close: false
		});
	var checkinDate = document.checkinForm.checkin_date.value;
	if (checkinDate.length > 0 && checkinDate.match(/^\d{1,2}\/\d{1,2}\/\d{4}$/)) {
		checkinDate = new Date(checkinDate);
		checkinPanelCalendar.setInterval(checkinDate, checkinDate);
	}
	
	checkinPanelCalendar.intervalChangedEvent.subscribe(function (type,args,obj) {
		var startDate = obj.startDate;
		if (startDate != null) {
	        document.checkinForm.checkin_date.value = formatCheckinDate(startDate);
			document.checkinForm.day.value = startDate.getDate();
			document.checkinForm.month.value = startDate.getMonth();
			document.checkinForm.year.value = startDate.getFullYear();
		}
	}, checkinPanelCalendar, true);
	checkinPanelCalendar.render();
});

YAHOO.util.Event.onDOMReady(function() {
	var leftContainer = document.getElementById('containerleft');
	var rightContainer = document.getElementById('containerright');
	if (leftContainer != null && rightContainer != null) {
		if (parseInt(leftContainer.clientHeight) < parseInt(rightContainer.clientHeight)) {
			leftContainer.style.height = rightContainer.clientHeight + 'px';
		}
		if (parseInt(rightContainer.clientHeight) < parseInt(leftContainer.clientHeight)) {
			rightContainer.style.height = leftContainer.clientHeight + 'px';
		}
	}
	
	if (doContentScroll) {
		contentScroll();
	}
});
