YAHOO.namespace('hubi');

YAHOO.hubi.Rates = function() {
	function init() {
		reset();
		YAHOO.util.Event.on('wrap', 'click', function(e) {
	        var target = YAHOO.util.Event.getTarget(e);
	        if (YAHOO.util.Dom.hasClass(target, 'RoomPrice')) {
	        	var roomSelect = YAHOO.util.Selector.query('select#roomType', 'CurrencyConverterForm', true);
	        	roomSelect.value = target.id;
	        	updateConversionAmount();
	        }
	    });
		YAHOO.util.Event.on('CurrencyConverterForm', 'click', handleConverterFormUpdate);
		YAHOO.util.Event.on('CurrencyConverterForm', 'change', handleConverterFormUpdate);
		YAHOO.util.Event.on('numberOfNights', 'keyup', handleConverterFormUpdate);
		
	}
	function reset() {
		updateConversionAmount();
	}
	function handleConverterFormUpdate(e) {
		var target = YAHOO.util.Event.getTarget(e);
		if (YAHOO.util.Dom.hasClass(target, 'UpdateConversion')) {
			updateConversionAmount();
		}
	}
	function updateConversionAmount() {
		var roomType = YAHOO.util.Selector.query('select#roomType', 'CurrencyConverterForm', true).value;
		var roomLink = YAHOO.util.Selector.query('a#' + roomType, 'wrap', true);
		var roomRate = roomLink.getAttribute('price');
		var numberOfPersons = roomLink.getAttribute('persons'); 
		
		var includeBreakfast = YAHOO.util.Selector.query('input#includeBreakfast', 'CurrencyConverterForm', true).checked ? true : false;
		var breakfastRate = includeBreakfast ? YAHOO.util.Selector.query('span#BreakfastContainer', 'wrap', true).getAttribute('price') : 0;
		var numberNights = YAHOO.util.Selector.query('input#numberOfNights', 'wrap', true).value || 1;
		
		if (YAHOO.lang.isString(roomRate)) {
			roomRate = parseInt(roomRate);
		}
		if (YAHOO.lang.isString(breakfastRate)) {
			breakfastRate = parseInt(breakfastRate);
		}
		if (YAHOO.lang.isString(numberOfPersons)) {
			numberOfPersons = parseInt(numberOfPersons);
		}
		if (YAHOO.lang.isString(numberNights)) {
			numberNights = parseInt(numberNights);
		}
		
		var amount = (roomRate + (breakfastRate * numberOfPersons)) * numberNights;
		YAHOO.util.Selector.query('input#Amount', 'wrap', true).value = amount;
	}
	return {
		init: init
	}
}();

YAHOO.util.Event.onDOMReady(YAHOO.hubi.Rates.init); 
