// Aggiorno la data di fine soggiorno
var CERCA_PRENOTA_MAX_ROOMS = 1;
/*
 * FERATEL 1 ROOM
 *
var CERCA_PRENOTA_MAX_ROOMS = 5;
*/
var CERCA_PRENOTA_MAX_CHILDREN = 4;

function cercaPrenota_getValueOrDefault(id, defaultValue) {
	var element = document.getElementById(id);
	
	if (element) {
		return element.value;
	} else {
		return defaultValue;
	}
}

function cercaPrenota_right_dateChanged() {
	cercaPrenota_dateChanged('right');
}

function cercaPrenota_tematica_dateChanged() {
	cercaPrenota_dateChanged('tematica');
}

function cercaPrenota_struttura_dateChanged() {
	cercaPrenota_dateChanged('struttura');
}

function cercaPrenota_offertaCamera_dateChanged() {
	cercaPrenota_dateChanged('offertaCamera');
}

function cercaPrenota_dateChanged(context) {
	// Ottengo la data di inizio soggiorno
	var startDate = $j121('#cercaPrenota_' + context + '_dateFrom').attr('value');

	// Separo giorno, mese, anno
	var el = startDate.split('/');
	
	// Costruisco un oggetto data
	if (context === 'right') {
		var d = new Date((el[2] - 0) + 2000, el[1] - 1, el[0]);
	} else {
		var d = new Date(el[2], el[1] - 1, el[0]);
	}

	// Ottengo il numero delle notti
	var nights = $j121('#cercaPrenota_' + context + '_numberOfNights').attr('value');
	
	// Calcolo la data di fine soggiorno
	d.setDate(d.getDate() + parseInt(nights));

	// Aggiorno la data di fine soggiorno						      		
	$j121('#cercaPrenota_'  + context + '_endDate').html((d.getDate() > 9 ? d.getDate() : '0' + d.getDate()) + '/' + ((d.getMonth() + 1) > 9 ? (d.getMonth() + 1) : '0' + (d.getMonth() + 1)) + '/' + d.getFullYear());
}

// mostro i dati per le camere
function cercaPrenota_showRooms(rooms, context) {
	var prefix = 'cercaPrenota_' + context + '_room_row_';
	
	for (var i = 1; i <= CERCA_PRENOTA_MAX_ROOMS; i++) {
		var room = document.getElementById(prefix + i);
		
		if (room) {
			if (i <= rooms) {
				room.style.display = '';

				var children = document.getElementById('cercaPrenota_' + context + '_room' + i + '_children').value;
				cercaPrenota_showChildrenAge(i, children, context);
			} else {
				room.style.display = 'none';
				cercaPrenota_showChildrenAge(i, 0, context);
			}
		}
	}
}


// mostro i figli per una data camera
function cercaPrenota_showChildrenAge(room, children, context) {
	var prefix = 'cercaPrenota_' + context + '_child_row_';
	
	for (var i = 1; i <= CERCA_PRENOTA_MAX_CHILDREN; i++) {
		var child = document.getElementById(prefix + room + '_' + i);
		
		if (child) {
			if (i <= children) {
				child.style.display = '';
			} else {
				child.style.display = 'none';
			}
		}
	}
}


// *******************************************************************
// Ripristino il valore di default. Serve per IE e il back del browser
// che sovrascrive l'impostazione iniziale
// *******************************************************************
function cercaPrenota_restore_default_values(context) {
	// preparo gli oggetti
	var numberOfNights = document.getElementById("cercaPrenota_" + context + "_numberOfNights");
	var default_numberOfNights = document.getElementById("cercaPrenota_" + context + "_default_numberOfNights");
	
/*	
 * FERATEL 1 ROOM
 * 
	var rooms = document.getElementById("cercaPrenota_" + context + "_rooms");
	var default_rooms = document.getElementById("cercaPrenota_" + context + "_default_rooms");
*/
	
	var club = document.getElementById("cercaPrenota_" + context + "_club");
	var default_club = document.getElementById("cercaPrenota_" + context + "_default_club");

	var productTypes = new Array();
	var productTypesDefault = new Array()
	var adults = new Array();
	var adultsDefault = new Array();
	var children = new Array();
	var childrenDefault = new Array();
	var childrenAges = new Array();
	var childrenAgesDefault = new Array();
	for (var i = 1; i <= CERCA_PRENOTA_MAX_ROOMS; i++) {
		productTypes[i] = document.getElementById("cercaPrenota_" + context + "_room" + i + "_product_type");
		productTypesDefault[i] = document.getElementById("cercaPrenota_" + context + "_default_room" + i + "_product_type");
		
		adults[i] = document.getElementById("cercaPrenota_" + context + "_room" + i + "_adults");
		adultsDefault[i] = document.getElementById("cercaPrenota_" + context + "_default_room" + i + "_adults");
		
		children[i] = document.getElementById("cercaPrenota_" + context + "_room" + i + "_children");
		childrenDefault[i] = document.getElementById("cercaPrenota_" + context + "_default_room" + i + "_children");
		
		childrenAges[i] = new Array();
		childrenAgesDefault[i] = new Array();
		for (var j = 1; j <= CERCA_PRENOTA_MAX_CHILDREN; j++) {
			childrenAges[i][j] = document.getElementById("cercaPrenota_" + context + "_room" + i + "_age" + j);
			childrenAgesDefault[i][j] = document.getElementById("cercaPrenota_" + context + "_default_room" + i + "_age" + j);
		}
	}
	
	// aggiorno i valori
	numberOfNights.value = default_numberOfNights.value;

/*	
 * FERATEL 1 ROOM
 * 
	rooms.value = default_rooms.value;
	if (club && default_club) {
		club.value = default_club.value;
	}
*/
	
	for (var i = 1; i <= CERCA_PRENOTA_MAX_ROOMS; i++) {
		if (productTypesDefault[i] && productTypesDefault[i].value) {
			productTypes[i].value = productTypesDefault[i].value;
		}
		adults[i].value = adultsDefault[i].value;
		children[i].value = childrenDefault[i].value;
		
		for (var j = 1; j <= CERCA_PRENOTA_MAX_CHILDREN; j++) {
			childrenAges[i][j].value = childrenAgesDefault[i][j].value;
		}
	}
	
	// Inizializza la data inizio soggiorno
	var dateFrom = document.getElementById('cercaPrenota_' + context + '_default_dateFrom').value;
	var dateFromEl = document.getElementById('cercaPrenota_' + context + '_dateFrom')

	if (context === 'right') {
		dateFromEl.value = dateFrom.substr(0, 6) + dateFrom.substr(8, 2);
//		var calendar_format = '%d/%m/%y';
		var calendar_format = 'dd/mm/y';
//		var calendar_format = 'd/m/y';
	} else {
		dateFromEl.value = dateFrom;
//		var calendar_format = '%d/%m/%Y';
		var calendar_format = 'dd/mm/yy';
//		var calendar_format = 'd/m/Y';
	}
	
	
	
	// Inizializza il calendario 
    var calendarLang = document.getElementById('cercaPrenota_' + context + '_lang').value;
    
	if (calendarLang == 'en' ) {
    	$j121.datepicker.setDefaults($j121.extend({showMonthAfterYear: false}, $j121.datepicker.regional['']));
    } else {
        $j121.datepicker.setDefaults($j121.extend({showMonthAfterYear: false}, $j121.datepicker.regional[calendarLang]));
    }
	
    
	$j121('#cercaPrenota_' + context + '_dateFrom').datepicker({
		duration: 'fast', 
		dateFormat: calendar_format, 
		showOn: 'button', 
		buttonImage: 'http://www.stradedelvinodeltrentino.it/images/booking_calendario.gif', 
		buttonImageOnly: true,
		buttonText: document.getElementById('cercaPrenota_' + context + '_date_tooltip').value,
		showButtonPanel: false,
		minDate: 0,
		yearRange: '-00:+01',
		hideIfNoPrevNext: true,
		defaultDate: 0,
		mandatory: true,
		defaultDate: 0,
		showOtherMonths: true,
		selectOtherMonths: true,
//		onSelect: context == 'right' ? cercaPrenota_right_dateChanged : (context == 'tematica' ? cercaPrenota_tematica_dateChanged : cercaPrenota_struttura_dateChanged)
		onSelect: window['cercaPrenota_' + context + '_dateChanged']
	});
//	$j121('#cercaPrenota_' + context + '_dateFrom').datepicker($j121.datepicker.regional[calendarLang]);

/*	
	Calendar.setup({
		inputField     :    'cercaPrenota_' + context + '_dateFrom',    		// id of the input field
		ifFormat       :    calendar_format,                   					// format of the input field
		showsTime      :    false,                          					// will display a time selector
		button         :    'cercaPrenota_' + context + '_dateFrom_trigger',  	// trigger for the calendar (button ID)
		align          :    'Bl',                           					// top and right margin of the calendar aligned to the bottom and right margin of the element
		singleClick    :    true,                           					// false double-click mode
		step           :    1,                               					// show all years in drop-down boxes (instead of every other year as default)
		firstDay	   :    1,
		cache          :    false,
		showOthers     :    true,
//		onUpdate       :    context == 'right' ? cercaPrenota_right_dateChanged : (context == 'tematica' ? cercaPrenota_tematica_dateChanged : (context == 'struttura' ? cercaPrenota_struttura_dateChanged : cercaPrenota_offertaCamera_dateChanged ))
		onUpdate       :    window['cercaPrenota_' + context + '_dateChanged']
	});
*/
/*
	new DatePicker(
			'#cercaPrenota_' + context + '_dateFrom', 
			{ 
				pickerClass: 'datepicker_jqui', 
				positionOffset: { x: -118, y: 5 }, 
				toggleElements: '#cercaPrenota_' + context + '_dateFrom_trigger',
				minDate: { date: dateFromEl.value, format: calendar_format },
				format: calendar_format,
				inputOutputFormat: calendar_format,
				days: ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'],
				months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre']
			}
		);
*/
}

function cercaPrenota_init(context) {
	var contentBox = document.getElementById('cercaPrenota-' + context + '-content-box');
	if (contentBox) {

		// Apre chiude il box con un click sul titolo
		$j121(function() {
			$j121('#cercaPrenota-' + context + '-title').click(function() {
				$j121("> :eq(0)", $j121('#cercaPrenota-' + context + '-content-box')).toggle("blind");
			});
		});

		// se necessario chiudo il box
		if (($j121('#cercaPrenota_' + context + '_open').size() > 0) && ($j121('#cercaPrenota_' + context + '_open').attr('value')) == 'false') {
			$j121("> :eq(0)", $j121('#cercaPrenota-' + context + '-content-box')).toggle("blind");
		}
		
		cercaPrenota_restore_default_values(context);

		// nascondo i campi non necessari
		var rooms = parseInt(document.getElementById('cercaPrenota_' + context + '_default_rooms').value);
		cercaPrenota_showRooms(rooms, context);

		// inizializza la data di fine soggiorno
		cercaPrenota_dateChanged(context);
	}
}


