// Ajuntament de Barcelona
// www.bcn.cat | www.bcn.es


$(document).ready ( function() {
	// Comportament dels controls de formulari (<input> i <select>) de les cerques.
	// ---------------------------------------------------------------------------------------------------------------------
	$("input || select").each ( function() {
		$(this).focus ( function() {
			// Treiem a tots els <p> del <fieldset> la classe 'selected'.
			$(this).parent("fieldset").find("p").each ( function() {
				$(this).removeClass("selected");
			});
			// I marquem el <p> del <input> que rep el focus com a seleccionat (selected).
			$(this).parent("p").addClass("selected");
			// Mirem tots els <p> del <fieldset> que tenen marcat d'error. Treiem tots els error
			// menys el del <p> que rep el focus.
			$(this).parent("fieldset").find("p.error-dades").each ( function() {
				if ($(this).attr("class").indexOf("selected")==-1) {
					$(this).removeClass("error-dades");
					$(this).find("em.error-missatge").remove();
				}
			});
		});
	});
	
	// S'inicialitza la seleccio dinmica de data, en els controls de formulari destinats
	// a dates, sempre i quan es carregui el plugin Date Picker de JQuery
	// ---------------------------------------------------------------------------------------------------------------------
	if (jQuery.datePicker) {
		$('input#del, input#al2, input#dia').datePicker({firstDayOfWeek:1});
	}
});


function validacioCerca() {
	// Definici  de variables de la cerca
	// ---------------------------------------------------------------------------------------------------------------------
	var opcio_on;
	var opcio_quan;
	var txt = '';
	var stat = true;
	
	// Missatges d'error
	// ---------------------------------------------------------------------------------------------------------------------
	var errorsTxt = new Array();
	errorsTxt[0] = new Array('Indique el nombre de la calle.','You have to apply some kind of filter.','Indiqui el nom del carrer.');
	errorsTxt[1] = new Array('Indique un espacio.','You have to apply some kind of filter.','Indiqui un espai.');
	errorsTxt[2] = new Array('Indique el intervalo de fechas con un formato correcto.','Data format error.','Indiqui l\'interval de dates amb format correcte.');
	errorsTxt[3] = new Array('Indique la fecha con un formato correcto.','Data format error.','Indiqui la data amb format correcte.');
	
	// Criteris de la cerca
	// ---------------------------------------------------------------------------------------------------------------------
	opcio_on 	= getRadio(document.getElementsByName('radiob_lloc'));
	opcio_quan 	= getRadio(document.getElementsByName('opcio2'));
	
	// Neteja dels controls de formulari marcats com a errors
	// ---------------------------------------------------------------------------------------------------------------------
	$("form p.error-dades").each ( function() {
		$(this).removeClass("error-dades");
		$(this).find("em.error-missatge").remove();
	});

	// Validacio dels controls de formulari d'on i quan
	// ---------------------------------------------------------------------------------------------------------------------
	switch(parseInt(opcio_on)) {
		case 1: break;
		case 2: break;
		case 3:
			if ($("#nom_carrer").val()=='') {
				if (idioma=='es') 		txt = errorsTxt[0][0];
				else if (idioma=='en') 	txt = errorsTxt[0][1];
				else 					txt = errorsTxt[0][2];
				$("#nom_carrer").parent("p").addClass("error-dades"); 
				$("#nom_carrer").parent("p").append('<em class="error-missatge"><strong>'+txt+'</strong></em>');
				stat = false;
			}
			break;
		case 4:
			if ($("#lloc").val()=='') {
				if (idioma=='es') 		txt = errorsTxt[1][0];
				else if (idioma=='en') 	txt = errorsTxt[1][1];
				else 					txt = errorsTxt[1][2];
				$("#lloc").parent("p").addClass("error-dades");
				$("#lloc").parent("p").append('<em class="error-missatge"><strong>'+txt+'</strong></em>');
				stat = false;
			}
			break;
		default:
			break;
	}
	switch(parseInt(opcio_quan)) {
		case 1: break;
		case 2:
			if (!verifyFormatData($("#del").val()) || !verifyFormatData($("#al2").val())) {
				if (idioma=='es') 		txt = errorsTxt[2][0];
				else if (idioma=='en') 	txt = errorsTxt[2][1];
				else 					txt = errorsTxt[2][2];
				$("#del").parent("span").parent("p").find("error").remove();
				$("#del").parent("span").parent("p").addClass("error-dades");
				$("#del").parent("span").parent("p").append('<em class="error-missatge"><strong>'+txt+'</strong></em>');
				stat = false;
			}
			break;
		case 3:
			if (!verifyFormatData($("#dia").val())) {
				if (idioma=='es') 		txt = errorsTxt[3][0];
				else if (idioma=='en') 	txt = errorsTxt[3][1];
				else 					txt = errorsTxt[3][2];
				$("#dia").parent("span").parent("p").find("error").remove();
				$("#dia").parent("span").parent("p").addClass("error-dades");
				$("#dia").parent("span").parent("p").append('<em class="error-missatge"><strong>'+txt+'</strong></em>');
				stat = false;
			}
			break;
		default:
			break;
	}
	return(stat);
}

// Retorna el valor del checkbox activat
// ---------------------------------------------------------------------------------------------------------------------
function getRadio(radioObj) {
	var valor_radio = '';
	
	if (radioObj) {
		for(var i=0; i<radioObj.length; i++) {
			if (radioObj[i].checked) valor_radio = radioObj[i].value;
		}
	}
	return(valor_radio);
}

// Retorna si una data te un format correcte, o no
// ---------------------------------------------------------------------------------------------------------------------
function verifyFormatData(strData) {
	var state = false;
	
	if (strData!='' && strData.indexOf('/')!=-1) {
		var dataTemp = strData.split('/');
		
		if (dataTemp[1].substring(0,1)==0) dataTemp[1] = dataTemp[1].substring(1, 2);
		if ((parseInt(dataTemp[0])>0 && parseInt(dataTemp[0])<32) &&
			(parseInt(dataTemp[1])>0 && parseInt(dataTemp[1])<13) &&
			(parseInt(dataTemp[2])>1900 && parseInt(dataTemp[2])<3000)) {
			state = true;
		}
	}
	return(state);
}

