(function(){

	var dstTbl = 'dst-tbl',
		ajaxId = "ajax-act",
		frm;

	function cleanup() {
		frm=null;
	}

	function dstChange(e) {
		ajax.queue(dstSet, ajaxId);
		ajax.loadXML("htl/dst-tbl.cfm?rooms="+this.value, ajaxId, "Loading guest selection fields.");
	}
	function dstSet() {
		Event.removeListener($$('select', dstTbl), 'change', calendar.avl);
		$(dstTbl).innerHTML = dom.xmlText(ajax.getXML(ajaxId));
		Event.on($$('select', dstTbl), 'change', calendar.avl);
		calendar.avl();
	}
	function monthChange() {
		if ( parseInt(frm.cal_year.value, 10) == app.today.getFullYear() ) {
			if ( parseInt(frm.cal_month.value, 10)-1 < app.today.getMonth() ) {
				frm.cal_month.value = app.today.getMonth()+1;
			}
		}
		calendar.setMonth(parseInt(frm.cal_month.value, 10)-1, parseInt(frm.cal_year.value, 10));
		calendar.avl();
	}

	Queue.add(function(){
		frm = document.forms.avlFrm;
		frm.rooms.value = 1;

		Event.on(window, "unload", cleanup);
		Event.on(frm.rooms, 'change', dstChange);
		Event.on([frm.cal_month,frm.cal_year], 'change', monthChange);
		Event.on(frm.rm_type, 'change', calendar.avl);
		Event.on($$('select', dstTbl), 'change', calendar.avl);

		calendar.setMonth(app.today.getMonth(), app.today.getFullYear());
		calendar.avl();
	});

	function calcPriceHnd() {
		var result = ajax.getJSON(ajaxId),
			status = result.status,
			price = result.price,
			downpayment = result.downpayment,
			statObj = $('sum_status');

		if ( status == 'AV' ) {
			status = 'AVL';
		}

		frm.status.value = status;
		switch ( frm.status.value ) {
		case 'AVL':
			statObj.innerHTML = lang.common.available;
			statObj.style.color = "green";
			break;
		case 'OR':
			statObj.innerHTML = lang.common.or;
			statObj.style.color = "orange";
			break;
		case 'NA':
			statObj.innerHTML = lang.common.not_available;
			statObj.style.color = "red";
			break;
		}

		$('sum_rm_type').innerHTML = frm.rooms.value + ' &times; ' + (frm.rm_type_name ? frm.rm_type_name.value : dom.selectText(frm.rm_type));

		if ( price.toString() == lang.common.na ) {
			frm.price.value = '0.0';
			$('sum_price').innerHTML = (0).currencyFormat() + " &euro;";
			$('sum_downpay').innerHTML = downpayment;
			$('sum_advance').innerHTML = (100).currencyFormat() + "%";
		} else {
			frm.price.value = price;
			frm.downpayment.value = downpayment;
			$('sum_price').innerHTML = price.currencyFormat() + " &euro;";
			$('sum_downpay').innerHTML = (price*downpayment/100.00).currencyFormat() + " &euro;";
			$('sum_advance').innerHTML = downpayment.currencyFormat() + "%";
		}
	}

	function bkHnd() {
		if ( ajax.checkXMLResult(ajaxId, true) ) {
			nav("cart.cfm");
		} else {
			ajax.checkXMLResult(ajaxId);
		}
	}

	page = {
	
		step: function(id) {
			dom.fadeInOut('step-'+id, 'step-' + (id == 1 ? '2' : '1'));
		},

		selectDates: function() {
			if ( !calendar.validate() ) {
				return;
			}

			var totals = [0,0,0,0],
				pers_proom = frm.pers_proom.value.split('^');

			pers_proom.pop();

			for ( var i=0, len=pers_proom.length; i < len; i=i+4 ) {
				totals[0] += parseInt(pers_proom[i], 10);
				//totals[1] += parseInt(pers_proom[i+1], 10);
				totals[2] += parseInt(pers_proom[i+2], 10);
				//totals[3] += parseInt(pers_proom[i+3], 10);
			}
			$('sum_adults').innerHTML = totals[0];
			$('sum_children').innerHTML = totals[2];

			page.step(2);
			passengers.list(frm, true);

			ajax.post(frm);
			ajax.queue(calcPriceHnd.callback(frm), ajaxId);
			ajax.loadJSON("htl/htl_bk.cfm?action=price", ajaxId, "Calculating price.");
		},

		addService: function() {
			if ( !passengers.validate(frm, true) ) {
				return;
			}

			ajax.queue(bkHnd, ajaxId);
			ajax.post(frm);
			ajax.loadXML("bookings/add_service.cfm", ajaxId, "Adding service to shopping cart.");
		}

	};

})();