$(document).ready(function() {

	// preu per congressista i estudiant
	var preu_congressista = 225;
	var preu_estudiant = 50;

	// només permetem seleccionar el sopar de gala si hi ha un o més congressistes inscrits
	var init = parseInt($('#num_congressistes').val());
	var s3_label = $('#servei3_label');
	var s3 = $('#servei3');
	if(isNaN(init) || init <= 0) {
		s3_label.addClass('gray');
		s3.attr('disabled', true);
	}
	else {
		s3_label.parent().removeClass('gray');
		s3.attr('disabled', false);
	}

	// multipliquem el nombre de congressistes o estudiants pel preu corresponent i renovem els càlculs
	$('#num_congressistes').keyup(function() {

  	// només permetem introduïr números
		if(isNaN(parseInt($(this).val()))) $(this).val('0');

		var congressistes = $(this).val();
		var val_congressistes = preu_congressista * parseInt(congressistes);
		$('#total_congressistes').text(val_congressistes.toFixed(2));

		// si s'ha seleccionat un o més congressistes permetem seleccionar el sopar de gala
		if(isNaN(congressistes) || parseInt(congressistes) <= 0) {
			s3_label.addClass('gray');
			s3.attr('disabled', true);
		}
		else {
			s3_label.removeClass('gray');
			s3.attr('disabled', false);
		}

		var val_estudiants = $('#total_estudiants').text();

		var suma_inscripcio = parseInt(val_estudiants) + parseInt(val_congressistes);

		var iva_inscripcio = suma_inscripcio * 0.16;
		$('#iva_inscripcio').text(iva_inscripcio.toFixed(2));

		var total_inscripcio = suma_inscripcio + iva_inscripcio;
		$('#total_inscripcio').text(total_inscripcio.toFixed(2));

		var total_allotjament = $('#total_allotjament').text();

		var grantotal = total_inscripcio + parseInt(total_allotjament);
		$('#grantotal').text(grantotal.toFixed(2));

	});
	$('#num_estudiants').keyup(function() {

		// només permetem introduïr números
		if(isNaN(parseInt($(this).val()))) $(this).val('0');

		var estudiants = $(this).val();
		var val_estudiants = preu_estudiant * parseInt(estudiants);
		$('#total_estudiants').text(val_estudiants.toFixed(2));

		var val_congressistes = $('#total_congressistes').text();

		var suma_inscripcio = parseInt(val_estudiants) + parseInt(val_congressistes);

		var iva_inscripcio = suma_inscripcio * 0.16;
		$('#iva_inscripcio').text(iva_inscripcio.toFixed(2));

		var total_inscripcio = suma_inscripcio + iva_inscripcio;
		$('#total_inscripcio').text(total_inscripcio.toFixed(2));

		var total_allotjament = $('#total_allotjament').text();

		var grantotal = total_inscripcio + parseInt(total_allotjament);
		$('#grantotal').text(grantotal.toFixed(2));

	});

	// preus hotel port aventura
	preu_individual = 92.80;
	preu_doble = 116;
	// calculem el cost del nombre d'individuals i dobles, el multipliquem pel nombre de nits i renovem els càlculs
	$('#individuals').keyup(function() {

		// només permetem introduïr números
		if(isNaN(parseInt($(this).val()))) $(this).val('0');

		var individuals = $(this).val();
		var val_individuals = preu_individual * parseInt(individuals);

		var dobles = $('#dobles').val();
		var val_dobles = preu_doble * parseInt(dobles);

		var nits = parseInt($('#nits').text());

		var total_allotjament = (val_individuals + val_dobles) * nits;
		$('#total_allotjament').text(total_allotjament.toFixed(2));

		var total_inscripcio = $('#total_inscripcio').text();

		var grantotal = total_allotjament + parseInt(total_inscripcio);
		$('#grantotal').text(grantotal.toFixed(2));

	});
	$('#dobles').keyup(function() {

		// només permetem introduïr números
		if(isNaN(parseInt($(this).val()))) $(this).val('0');

		var dobles = $(this).val();
		var val_dobles = preu_doble * parseInt(dobles);

		var individuals = $('#individuals').val();
		var val_individuals = preu_individual * parseInt(individuals);

		var nits = parseInt($('#nits').text());

		var total_allotjament = (val_individuals + val_dobles) * nits;
		$('#total_allotjament').text(total_allotjament.toFixed(2));

		var total_inscripcio = $('#total_inscripcio').text();

		var grantotal = total_allotjament + parseInt(total_inscripcio);
		$('#grantotal').text(grantotal.toFixed(2));

	});

	// calcular dies entre dos dates
	function calcular_dies(range) {
		var pre = range.split('-');
		if(pre.length == 2) {

			// trims
			var entrada = pre[0].replace(/^\s+|\s+$/g, '');
			var sortida = pre[1].replace(/^\s+|\s+$/g, '');
			var pre_ent = entrada.split('/');
			var pre_sort = sortida.split('/');

			var entrada = new Date();
			var sortida = new Date();

			entrada.setSeconds(0); entrada.setMinutes(0); entrada.setHours(0);
			entrada.setDate(pre_ent[0]);
			entrada.setMonth(pre_ent[1]);
			entrada.setFullYear(pre_ent[2]);
			stamp_entrada = entrada.getTime();

			sortida.setSeconds(0); sortida.setMinutes(0); sortida.setHours(0);
			sortida.setDate(pre_sort[0]);
			sortida.setMonth(pre_sort[1]);
			sortida.setFullYear(pre_sort[2]);
			stamp_sortida = sortida.getTime();

			var segons_diff = (stamp_sortida - stamp_entrada) / 1000;
			var dies_diff = segons_diff / (60 * 60 * 24);
			return dies_diff;

		}
		else return 0;
	}

	// selector de dates
	$('input#entrada').datepicker({
		hideIfNoPrevNext: true,
		yearRange: '+0:+0',
		minDate: new Date(2008, 11 - 1, 26),
		maxDate: new Date(2008, 11 - 1, 28),
		showOn: 'both',
		buttonImage: '/media/comu/icona_calendari.gif',
		buttonImageOnly: true,
		constrainInput: true,
		rangeSelect: true,
		onClose: function(rang) {

			var nits = calcular_dies(rang);
			$('#nits').text(nits);

			var individuals = $('#individuals').val();
			var val_individuals = preu_individual * parseInt(individuals);

			var dobles = $('#dobles').val();
			var val_dobles = preu_doble * parseInt(dobles);

			var total_allotjament = (val_individuals + val_dobles) * nits;
			$('#total_allotjament').text(total_allotjament.toFixed(2));

			var total_inscripcio = $('#total_inscripcio').text();

			var grantotal = total_allotjament + parseInt(total_inscripcio);
			$('#grantotal').text(grantotal.toFixed(2));

		}
	});

	// validació formulari
	$('#inscripcio').validate({
		rules: {
			// dades personals
			nom: 'required',
			cognoms: 'required',
			dni: 'required',
			telefon: {
				required: true,
				number: true,
				minlength: 9
			},
			fax: {
				number: true,
				minlength: 9
			},
			mobil: {
				number: true,
				minlength: 9
			},
			email: {
				required: true,
				email: true
			},
			// dades fiscals
			nom_fiscal: 'required',
			nif: 'required',
			adreca: 'required',
			cp: 'required',
			ciutat: 'required',
			telefon_fiscal: {
				number: true,
				minlength: 9
			},
			fax_fiscal: {
				number: true,
				minlength: 9
			}
		},
		messages: {
			// dades personals
			nom: '&nbsp;',
			cognoms: '&nbsp;',
			dni: '&nbsp;',
			telefon: {
				required: '&nbsp;',
				number: '&nbsp;',
				minlength: '&nbsp;'
			},
			fax: {
				number: '&nbsp;',
				minlength: '&nbsp;'
			},
			mobil: {
				number: '&nbsp;',
				minlength: '&nbsp;'
			},
			email: {
				required: '&nbsp;',
				email: '&nbsp;'
			},
			// dades fiscals
			nom_fiscal: '&nbsp;',
			nif: '&nbsp;',
			adreca: '&nbsp;',
			cp: '&nbsp;',
			ciutat: '&nbsp;',
			telefon_fiscal: {
				number: '&nbsp;',
				minlength: '&nbsp;'
			},
			fax_fiscal: {
				number: '&nbsp;',
				minlength: '&nbsp;'
			}
		},
		errorElement: 'span',
		errorPlacement: function(error, element) {
			error.appendTo( element.parent() );
			error.removeClass('success');
		},
		success: function(label) {
			label.html('&nbsp;').addClass('success');
		}
	})

});
