// 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_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++) {
		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';
	} else {
		dateFromEl.value = dateFrom;
		var calendar_format = '%d/%m/%Y';
	}
	
	// Inizializza il calendario 
	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          :    'Br',                           					// 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 : cercaPrenota_struttura_dateChanged)
	});
}

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);
	}
}

