/**
 * Project:     VisitAruba Plus
 * File:        cm.plusjoin.js
 *
 * @link http://www.visitaruba.com/plus
 * @copyright 2008 CaribMedia
 * @author Michiel van der Blonk <michiel@caribmedia.com>
 * @package JoinForm
 */

window.onload = function() {
	if ($('frmOrder'))
	{
		if ($('btnBirthDate'))
			$('btnBirthDate').style.display = 'inline';
		if ($('btnArrivalDate'))
			$('btnArrivalDate').style.display = 'inline';
	}
};

// page is just a wrapper for various functions
var page = {
	price:
	{
		total : 0,
		baseRenewal : 12,
		base : 13.95,
		shipping: 3.95,
		international: 1,
		shortNotice: 2
	},
	cardNumberLost : function(target) {
		if (!target.form)
			return;
		var fld = target.form.Membership;
		if (fld.value=='' && target.checked)
			fld.value = '11000000000000';
	},
	updatePrice: function(target) {
		if (!target.form)
			return;
		var frm = target.form;
		if (frm.formaction.value.toLowerCase() == 'new')
			this.price.total = this.price.base;
		else
			this.price.total = this.price.baseRenewal;

		// get target field
		var name = target.name.toLowerCase();
		var value = target.value.toLowerCase();
		this.price.total += this.price.shipping;
		// international only applies for postal mail
		if ($('optPostalMail').selected)
		{
			var country = frm.Country.value.toLowerCase();
			var isUSorCanada = country =='us' || country=='ca';
			if (!isUSorCanada)
				this.price.total += this.price.international;
		}

		if ($('Arrival_Date').value!='')
		{
			var d = new Date($('Arrival_Date').value);
			var today = new Date();
			var diff = today.workdays(d);
			if (diff < 5)
				this.price.total += this.price.shortNotice;
			// postal mail not within 6 weeks (6*5 workdays)
			if (diff < 30)
			{
				if ($('optPostalMail').selected)
					$('optHotelResort').selected = true;
				$('optPostalMail').disabled = true;
				$('optPostalMail').className = 'disabled';
				// refresh select box
				page.toggleAddressField($('Delivery_Method'));
			}
			else
			{
				$('optPostalMail').disabled = false;
				$('optPostalMail').className = '';
			}
		}

		$('priceText').innerHTML = 'My credit card will be charged the amount of <span> US $' + this.price.total + '</span>';
		$('priceInfo').style.display = 'block';
	},
	checkHotel: function() {
		if ($('optHotelResort').selected)
		{
			if ($('optHolidayInn').selected)
				$('at-own-risk').style.display = 'block';
			else
				$('at-own-risk').style.display = 'none';
		}
	},
	calendars: [],
	nextSeason : function() {
		var seasonMonth = 10; // november
		var seasonDay = 1; // last day
		var today = new Date();
		var seasonStart = new Date(today.getFullYear(), seasonMonth, seasonDay);
		if (today.getTime() > seasonStart.getTime())
			return new Date(today.getFullYear() + 1, seasonMonth, seasonDay);
		else
			return seasonStart.navigate(7); // 1 week extra
	},
	options:
		{
			// Arrival_Date: { title:"Choose a date:", close:true, navigator:true, mindate: new Date().navigate(-30).format(), init: function () {this.maxDate = page.nextSeason()}},

			Arrival_Date: { title:"Choose a date:", close:true, navigator:true, mindate: new Date().navigate(-30).format(), init: function () {this.maxDate = 0}},
			Birth_Date: { title:"Choose a date:", close:true, navigator:true, pagedate: Date.yearsAgo(38).format('month'), maxdate:Date.yearsAgo(17)}
		}
	,
	popup: function(href, opt)
	{
		var options = 'width=200,height=200,resizable=1';
		if (typeof opt == "string")
			options = opt;
		window.open('cvv.html', 'new_window', options);

		return false;
	},
	showCal: function(id)
	{
		if (!page.calendars[id])
		{
			if (this.options[id].init)
				this.options[id].init();
			page.calendars[id] = new YAHOO.widget.Calendar(id + "_Container", this.options[id]);
			page.calendars[id].selectEvent.subscribe(page.handleSelect, page.calendars[id], true);
			page.calendars[id].render();
		}
		else
			page.calendars[id].show();
		return false;
	},
	handleSelect: function(type,args,obj) {
		var dates = args[0];
		var date = dates[0];
		var year = date[0], month = date[1], day = date[2];

		var id = obj.containerId.replace('_Container','');
		var $d = new Date(year, month-1, day);
		$(id).value = $d.format();
		// call onchange to update price if it's available
		if ($(id).onchange)
			$(id).onchange();
		obj.hide();
	},
	toggleReservationName: function(target) {
		var frm = $('frmOrder');
		if (target.checked) {
			if (frm.Middle_Initial.value=='')
				frm.reservation_name.value = frm.Salutation.value + " " + frm.First_name.value + " " + frm.Last_name.value;
			else
				frm.reservation_name.value = frm.Salutation.value + " " + frm.First_name.value + " " + frm.Middle_Initial.value + " " + frm.Last_name.value;
		}
		else
			frm.reservation_name.value = '';
	},
	toggleAddressField: function(target) {
		$('deliveryHotelResort').style.display = 'none';
		$('deliveryAddressField').style.display = 'none';
		switch(target.value) {
			case 'Delivered To a Specified Address':
				$('deliveryAddressField').style.display = 'block';break;
			case 'Delivered To My Hotel/Resort':
				$('deliveryHotelResort').style.display = 'block';break;
		}
	}
};

