var curves={
	setNavBar:function(){
		var lis = $("#navBar li li");
		var tl = tr = bl = br = null
		lis.each(function(){						  
			$(this).append(curves.createElementsCurves("tl"));
			$(this).append(curves.createElementsCurves("tr"));
			$(this).append(curves.createElementsCurves("bl"));
			$(this).append(curves.createElementsCurves("br"));
		})
	},
	createElementsCurves:function(style){
		var element = $("<div class='sp " + style + "'>&nbsp;</div>");	
		return element;
	}
}

/* validaciones de formularios */
var formsValidations = {
	setMsgError:function(txt, form){
		var parentForm = form.parent();
		var msgError = parentForm.find(".msgError");
		var divElement = (msgError.length != 0) ? msgError.eq(0) : document.createElement("div");		
		var ulElement = document.createElement("ul");
		var liElement = null;		
		var errors = txt.split("|");				
		jQuery(divElement).attr("class", "msgError");
		if(jQuery(divElement).find("ul").length != 0) jQuery(divElement).empty();
		for(var i = 0; i < errors.length - 1; i++){
			liElement = document.createElement("li");
			liElement.appendChild(document.createTextNode(errors[i]));
			ulElement.appendChild(liElement);
		}
		jQuery(divElement).append(ulElement);		
		if(msgError.length == 0) form.before(jQuery(divElement));
	},
	validaCommentForm:function(obj){
		var errorTxt = "";
		var f = jQuery(obj);
		if(!f.find("input[@name='nombre']").attr("value")) errorTxt += literal["comment"][0];
		if(!f.find("input[@name='apellidos']").attr("value")) errorTxt += literal["comment"][1];		
		if(!f.find("input[@name='email']").attr("value")) errorTxt += literal["comment"][2];
		else{
			if(!regularExpressions.isValidEmail(f.find("input[@name='email']").attr("value")))  errorTxt += literal["comment"][3];
		}		
		if(f.find("select[@name='ccaa']").attr("value") == 0) errorTxt += literal["comment"][4];		
		if(!f.find("textarea[@name='motivo']").val()) errorTxt += literal["comment"][5];
		else{
			if(f.find("textarea[@name='motivo']").val().length > 250) errorTxt += literal["comment"][6]; 
		}	
		if(errorTxt != ""){	
			formsValidations.setMsgError(errorTxt, f);
			return false;
		}else return true;
	},
	validaLoginForm:function(obj){
		var errorTxt = "";
		var f = jQuery(obj);
		if(!f.find("input[@name='nick']").attr("value")) errorTxt += literal["login"][0];
		if(!f.find("input[@name='password']").attr("value")) errorTxt += literal["login"][1];		
					
		if(errorTxt != ""){	
			formsValidations.setMsgError(errorTxt, f);
			return false;
		}else return true;
	}
}

/* expresiones regulares para validar formularios */
var regularExpressions = {	
	isValidEmail:function (str){
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		return (filter.test(str));
	},
	esCadena:function(c) { return /^[0-9A-Za-z-\/Ññ?É?ÓÚáéíóúÜüÄäËë?ïÖö´,'/\\t\n\r\s]+$/.test(c); },
	esAlfabetico:function(c){return /^([a-zA-Z])+$/.test(c);},
	esNumero:function(c){return /^[0-9]+$/.test(c);},
	esTelefono:function(c){return /^[0-9\s\+\-)(]+$/.test(c)}	
}

var movilidad = {	
	flag:false,
	initDataForm:function(obj){
		obj.find(":text").bind('change', function() {
			  movilidad.flag=true;
		});
	},
	validateData:function(obj){
		var hayFallo = false;
		obj.bind('submit', function(event) {
			hayFallo = false;
			$.each(obj.find(":text"), function(index, input) {
				input = jQuery(input);
				input.removeClass("err");
				if (input.val() != '' && !regularExpressions.esNumero(input.val())) {
					input.addClass("err");
					hayFallo = true;
				}
			});
			if (hayFallo) {
				event.preventDefault();
				document.location.href = '#'
				msg_error = 'Se han producido errores de validación<br/>Por favor, compruebe los campos en rojo';

				if (jQuery(".msgko").length != 0) {
					jQuery(".msgko").html(msg_error);
				} else if (jQuery(".msgok").length != 0) {
					jQuery(".msgok").html(msg_error);
					jQuery(".msgok").addClass('msgko').removeClass('msgok');
				} else {
					jQuery("#form_date_selector").after('<p class="msgko">' + msg_error + '</p>');
				}
			}
		});
	},
	checkModified:function(obj){
		obj.bind('submit', function(event) {
			 if (movilidad.flag) {
				 res = confirm('Los datos han sido modificados. ¿Desea cambiar de mes?\nSe perderán todos los cambios');
				 if (!res) {
					 event.preventDefault();
				 }
			 }
		});
	},
	sumValuesFunction:function(fila){
		cajas = fila.find(':text');
		caja1 = cajas.eq(0);
		if (cajas.length > 1) {
		    caja2 = cajas.eq(1);
		    
		    if (!isNaN(caja1.val()) && caja1.val().length > 0 && !isNaN(caja2.val()) && caja2.val().length > 0) {
		    	suma = parseInt(caja1.val()) + parseInt(caja2.val());
		    } else if (!isNaN(caja1.val()) && caja1.val().length > 0) {
		    	suma = caja1.val();
		    } else if (!isNaN(caja2.val()) && caja2.val().length > 0) {
		    	suma = caja2.val();
		    } else {
		    	suma = '';
		    }

		    total = fila.find('td').eq(2);
		    total.html(''+suma);
		} else {
			if (!isNaN(caja1.val()) && caja1.val().length > 0) {
				valor = caja1.val();
			} else {
				valor = '';
			}
		
			total = fila.find('td').eq(1);
			total.html(valor);
		}
	},
	sumValues:function(obj){
		obj.find(":text").bind('blur', function(event) {
			fila = $(this).parent().parent();
			movilidad.sumValuesFunction(fila);
		});
	},
	sumValuesAtStart:function(obj){
		cajas_1a_columna = obj.find("tr td.mov :text");
		for (i=0; i<cajas_1a_columna.length; i++) {
			fila = cajas_1a_columna.eq(i).parent().parent();
			movilidad.sumValuesFunction(fila);
		}
	}
}
	
jQuery(document).ready(function() {	
	curves.setNavBar();
	if (jQuery("#formContacto").length != 0)  jQuery("#formContacto").submit(function(){
		return formsValidations.validaCommentForm( jQuery(this))});

	if (jQuery("#formLogin").length != 0)  jQuery("#formLogin").submit(function(){
		return formsValidations.validaLoginForm( jQuery(this))});

	if (jQuery("#form_mov_datos").length != 0) {
		movilidad.initDataForm(jQuery("#form_mov_datos"));
		movilidad.sumValuesAtStart(jQuery("#form_mov_datos"));
		movilidad.sumValues(jQuery("#form_mov_datos"));
		movilidad.validateData(jQuery("#form_mov_datos"));
	}

	if (jQuery("#form_date_selector").length != 0) {
		movilidad.checkModified(jQuery("#form_date_selector"));
	}

	if (jQuery("#form_mov_datos.coord").length != 0) {
		jQuery('#form_mov_datos.coord :text').attr("readonly","readonly");
	}

})
