var months = new Array();
months[0] = 'Jan';
months[1] = 'Feb';
months[2] = 'Mar';
months[3] = 'Apr';
months[4] = 'May';
months[5] = 'Jun';
months[6] = 'Jul';
months[7] = 'Aug';
months[8] = 'Sep';
months[9] = 'Oct';
months[10] = 'Nov';
months[11] = 'Dec';
function convert_currencies(currency) {
	$$("span.currency-to-convert").each(function(s) {
		var converted = (s.readAttribute('rate') / currencies[s.readAttribute('currency')]) * currencies[currency];
		converted = converted.toFixed(2);
		s.up().next('p').down('span').update(currency + ' ' + converted);
	});
	$$("span.currency-to-convert-totals").each(function(s) {
		var converted = (s.readAttribute('rate') / currencies[s.readAttribute('currency')]) * currencies[currency];
		converted = converted.toFixed(2);
		s.previous('span').update(currency + ' ' + converted);
	});
}

function set_currency_fields(currency){
	$$('.user_currency').each(function(el){
		el.setValue(currency);
	})
}

function complete(){
	loader(false);
}
function starting(){
	loader(true);
}
function loader(show){
	if (true === show){
		$('spinner').show();
	}else{
		$('spinner').hide();
	}
}

function update_room_list(){

	starting();
	
	var params = {};
	params.date_from = $F('date_from');
	params.date_to = $F('date_to');
	params.nights = $F('nights');
	params.adults = $F('adults');
	params.currency = $$('#currency-select select')[0].value;
	params.ajax = 1;

	var opt = {};
	opt.method = 'post';
	opt.onSuccess = function(){ complete(); }
	opt.parameters = params;
	
	new Ajax.Updater('room-list-container', url, opt);

}



function get_rooms_for_offer(elem){
        var params = {};
        params.offer_id = elem.identify();
        params.date_from = $F('date_from');
    	params.date_to = $F('date_to');
    	params.nights = $F('nights');
    	params.adults = $F('adults');
    	params.currency = $$('#currency-select select')[0].value;
    	params.ajax = 'odetail';
    	
    	var opt = {};
    	opt.method = 'post';
    	//opt.onSuccess = function(){ complete(); }
    	opt.parameters = params;
    	
    	new Ajax.Updater('offer-rooms-' + params.offer_id, url, opt);

}

function submit_code(type, code, span){
	
	var codeUrl = url + '/step-2';
	
	var params = {};
	params.code = code;
	params.ajax = type;
	
	var opt = {};
	opt.method = 'post';
	opt.evalScripts = true;
	opt.onComplete = function() { setupVoucherPromo(); };
	opt.parameters = params;
	
	new Ajax.Updater(span, codeUrl, opt);
}

// From o'reilly javascript cookbook
function daysBetween(date1, date2) {
    var DSTAdjust = 0;
    oneMinute = 1000 * 60;
    var oneDay = oneMinute * 60 * 24;
    date1.setHours(0);
    date1.setMinutes(0);
    date1.setSeconds(0);
    date2.setHours(0);
    date2.setMinutes(0);
    date2.setSeconds(0);
    if (date2 > date1) {
        DSTAdjust = 
            (date2.getTimezoneOffset() - date1.getTimezoneOffset()) * oneMinute;
    } else {
        DSTAdjust = 
            (date1.getTimezoneOffset() - date2.getTimezoneOffset()) * oneMinute;    
    }
    var diff = Math.abs(date2.getTime() - date1.getTime()) - DSTAdjust;
    return Math.ceil(diff/oneDay);
}

function getDateField(id){
	date = new Date();
	f = $F(id).split('-');
	date.setFullYear(f[0], (f[1] - 1), f[2], 0, 0, 0);
	return date;
}

function setDateField(id,date){
	var year = date.getFullYear();
	var month = (date.getMonth() + 1).toPaddedString(2);
	var day = (date.getDate()).toPaddedString(2);
	$(id).setValue(year + '-' + month + '-' + day);
}

function setNights(){
	from = getDateField('date_from');
	to = getDateField('date_to');
	
	if (to <= from){
		$('nights').setValue(1);
		setDateTo();
	}else{
		$('nights').setValue(daysBetween(from, to));
	}
	//setRightcolDetails();
}

function setDateTo(){
	df = getDateField('date_from');
	n = parseInt($F('nights'));
	df.setDate(df.getDate() + n);
	setDateField('date_to', df);
	//setRightcolDetails();
}

function formatDate(date){
	var m = months[date.getMonth()];
	var d = date.getDate();
	var y = date.getFullYear();
	return d + '-' + m + '-' + y;
}

function setRightcolDetails(){
	return true;
	df = getDateField('date_from');
	dt = getDateField('date_to');
	$('right-date-from').update(formatDate(df));
	$('right-date-to').update(formatDate(dt));
	$('right-nights').update($F('nights') + ' Nights');
	$('right-adults').update($F('adults') + ' Adults');
}

function submitDetailsForm(){
	if ($('gift-voucher-code') && '' != $F('gift-voucher-code')){
		submit_code('gift', $F('gift-voucher-code'), 'gift-voucher-span');
	}
	if ($('promo-code') && '' != $F('promo-code')){
		submit_code('promo', $F('promo-code'), 'promo-code-span');
	}
	if ($('vault-points') && '' != $F('vault-points')){
		submit_code('vault', $F('vault-points'), 'vault-points-span');
	}
	
	if ($('gift-voucher-error') && 1 == $F('gift-voucher-error')){
		return false;
	}
	if ($('promo-code-error') && 1 == $F('promo-code-error')){
		return false;
	}
	if ($('vault-points-error') && 1 == $F('vault-points-error')){
		return false;
	}
	return true;
}

function setupVoucherPromo(){
	
	if ($('add-gift-voucher'))
	{
		$('add-gift-voucher').observe('click', function(evt){
			if ($F('gift-voucher-code') != ''){
				$('gift-voucher-code').disable();
				$('add-gift-voucher').hide();
				$('gift-voucher-spinner').show();
				submit_code('gift', $F('gift-voucher-code'), 'gift-voucher-span');
			}
			Event.stop(evt);
		});
	}
	
	if ($('add-promo-code'))
	{
		$('add-promo-code').observe('click', function(evt){
			if ($F('promo-code') != ''){
				$('promo-code').disable();
				$('add-promo-code').hide();
				$('promo-spinner').show();
				submit_code('promo', $F('promo-code'), 'promo-code-span');
			}
			Event.stop(evt);
		});
	}
	
	if ($('add-vault-points'))
	{
		$('add-vault-points').observe('click', function(evt){
			if ($F('vault-points') != ''){
				$('vault-points').disable();
				$('add-vault-points').hide();
				$('vault-spinner').show();
				submit_code('vault', $F('vault-points'), 'vault-points-span');
			}
			Event.stop(evt);
		});
	}
}

Event.observe(window, 'load', function(){
	
	if ($('nights')){
		$('nights').observe('change', function(evt){
			setDateTo();
		});
	}
	if ($('adults')){
		$('adults').observe('change', function(evt){
			//setRightcolDetails();
		});
	}
	if ($('submit-new-dates')){
		$('submit-new-dates').observe('click', function(evt){
			update_room_list();
			Event.stop(evt);
		});
	}
	if ($$('#offers-list .book-button')){
		$$('#offers-list .book-button').each(function(el){
				$(el).observe('click', function(evt){
					get_rooms_for_offer(this);
					Event.stop(evt);
				});
		});
		
	}
	if ($$('#currency-select select')[0]){
		$$('#currency-select select')[0].observe('change', function() {
			convert_currencies(this.value);
			set_currency_fields(this.value);
		});
	}
	//~ if ($('summary-panel')){
		//~ $('summary-panel').down('a.open').observe('click', function(evt){
			//~ $('summary-panel').addClassName('open').down('a.close').up('span.action').show();
			//~ $(this).up('span.action').hide();
		//~ });
		//~ $('summary-panel').down('a.close').observe('click', function(evt){
			//~ $('summary-panel').removeClassName('open').down('a.open').up('span.action').show();
			//~ $(this).up('span.action').hide();
		//~ });
	//~ }
	if ($$('.expander')){
		$$('.expander').each(function(el){
			if ($(el).down('a.more')){
				$(el).down('a.more').observe('click', function(evt){
					Event.stop(evt);
					$(el).down('span').show();
					$(this).hide();
				});
			}
			if ($(el).down('a.close')){
				$(el).down('a.close').observe('click', function(evt){
					Event.stop(evt);
					$(el).down('span').hide();
					$(el).down('a.more').show();
				});
			}
		});
	}

	setupVoucherPromo();
	
});

