var W3CDOM = (document.createElement && document.getElementsByTagName);

document.getElementsByClassName = function(className, container){
   var data = tags = [];
   var obj = document.getElementById("wrapperContent");
   var node = aux = null;
	var strClassName = className.replace(/\-/g, "\\-");
    var pattern = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	if(container) node = (typeof(container) == "object") ? container : document.getElementById(container);
	else node = (obj) ? obj : document;
	aux = node.getElementsByTagName("*");
	tags = (document.all) ? node.all : aux;
   for(var i=0;i<tags.length;i++) { if(pattern.test(tags[i].className)) data.push(tags[i]);}
   return data;
}

var e = {
	addEvent : function(obj, evType, fn, useCapture){
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, useCapture);
			return true;
		}else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		}else {
			return false;
		}
	}
}

var fixes={
	setLayout:function(){
		var main = document.getElementById("wrapperContent");
		var content = document.getElementById("content");
		var image = document.getElementById("image");
		main.style.height = document.getElementById("header").offsetHeight + content.offsetHeight + image.offsetHeight - image.offsetTop + 20  + "px";


	}

}


var carruseles = {	
	album:{
		init:function(){						
		    $("#related ul").jcarousel({
	    	    scroll: 1	        			        
	    	});
		}		
	}
}

var curves={

	createInputCurves:function(obj){
		// buscar primera imagen
		var firstElement = obj.firstChild;
		// crear elementos
		var curveInputTL = curves.createElementsCurves("curveInputTL");
		var curveInputTR = curves.createElementsCurves("curveInputTR");
		var curveInputBL = curves.createElementsCurves("curveInputBL");
		var curveInputBR = curves.createElementsCurves("curveInputBR");
		// insertar curvas arriba
		obj.insertBefore(curveInputTR, firstElement);
		obj.insertBefore(curveInputTL, curveInputTR);
		// insertar curvas abajo
		obj.appendChild(curveInputBL);
		obj.appendChild(curveInputBR);
	},
	createFormCurves:function(obj){
		var spanCurves = document.getElementsByClassName("curves", obj);
		var firstElement = curveInputTL = curveInputTR = curveInputBL = curveInputBR = null;
		// crear elementos
		for(var i = 0; i < spanCurves.length; i++){
			firstElement = spanCurves[i].firstChild;
			curveInputTL = curves.createElementsCurves("curveInputTL");
			curveInputTR = curves.createElementsCurves("curveInputTR");
			curveInputBL = curves.createElementsCurves("curveInputBL");
			curveInputBR = curves.createElementsCurves("curveInputBR");
			// insertar curvas arriba
			spanCurves[i].insertBefore(curveInputTR, firstElement);
			spanCurves[i].insertBefore(curveInputTL, curveInputTR);
			// insertar curvas abajo
			spanCurves[i].appendChild(curveInputBL);
			spanCurves[i].appendChild(curveInputBR);
			firstElement = curveInputTL = curveInputTR = curveInputBL = curveInputBR = null;
		}
	},
	createElementsCurves:function(style){
		var element = document.createElement("span");
		element.className = style;
		element.appendChild(document.createTextNode(" "));
		return element;
	}

}


var googleMaps = {
	map:function() {
		if (GBrowserIsCompatible())
          var startPoint = new GLatLng(40.45751137595289,-3.687586784362793);{
          var map = new GMap2(document.getElementById("map"));
          map.setCenter(new GLatLng(40.45751137595289, -3.687586784362793), 14);
          map.addControl(new GSmallMapControl());
          map.addOverlay(new GMarker(startPoint));
        }
	}
}

var behaviours = {
	resetTerm:function(){
		var obj = document.getElementById("termino");
		obj.onfocus = function(){
			obj.value = "";
		}
	}
}




/* validaciones de formularios */
var formsValidations = {
	setMsgError:function(txt, form){
		var main = (form.parentNode.className == "form") ? document.getElementById("moduleContact")  : document.getElementById("main");
		var msgError = document.getElementsByClassName("msgError", main);
		var divElement = (msgError.length != 0) ? msgError[0] : document.createElement("div");
		var ulElement = document.createElement("ul");
		var liElement = null;
		var parentForm = form.parentNode;
		var errors = txt.split("|");
		divElement.className = "msgError"
		if(divElement.getElementsByTagName("ul").length != 0) divElement.removeChild(divElement.getElementsByTagName("ul")[0])
		for(var i = 0; i < errors.length - 1; i++){
			liElement = document.createElement("li");
			liElement.appendChild(document.createTextNode(errors[i]));
			ulElement.appendChild(liElement);
		}
		divElement.appendChild(ulElement);
		divElement.tabIndex = -1;
		if(msgError.length == 0) main.insertBefore(divElement,parentForm);
		divElement.focus();
	},
	validaFormCv:function() {
		var f = document.forms.formCv;
		var ok = true;
		var errorTxt = "";
		if (f.nombre.value == "" || f.apellidos.value == "" || f.emailTrabajo.value == "" || f.archive.value == ""){
			errorTxt += "(!) Todos los campos son obligatorios|";
		}
		if(!regularExpressions.isValidEmail(f.emailTrabajo.value)) errorTxt += "(!) Tu email tiene que tener un formato válido|";

		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formCv"));
			return false;
		}
	},
	validaFormNewsletterSign:function(){
		var f = document.forms.formNewsletterSign;
		var ok = true;
		var errorTxt = "";
		if (f.nombre.value == "" || f.empresa.value == "" || f.emailApuntarme.value == "" || f.sector.selectedIndex == 0){
			errorTxt += "(!) Todos los campos son obligatorios|";
		}
		if(!regularExpressions.isValidEmail(f.emailApuntarme.value)) errorTxt += "(!) Tu email tiene que tener un formato válido|";

		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formNewsletterSign"));
			return false;
		}
	},
	validaFormNewsletterDel:function(){
		var f = document.forms.formNewsletterDel;
		var ok = true;
		var errorTxt = "";
		if (f.emailBaja.value == ""){
			errorTxt += "(!) Debe introducir la dirección de correo para darse de baja|";
		}
		if(!regularExpressions.isValidEmail(f.emailBaja.value)) errorTxt += "(!) Tu email tiene que tener un formato válido|";

		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formNewsletterDel"));
			return false;
		}
	},
	validaFormComment:function(){
		var f = document.forms.formComment;
		var ok = true;
		var errorTxt = "";
		if (f.authorNameField.value == "") errorTxt += "(!) Debe introducir su nombre|";
		if (f.commentField.value == "")  errorTxt += "(!) Debe indicar su comentario|";
		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formComment"));
			return false;
		}
	},
	validaFormContact:function(){
		var f = document.forms.formContact;
		var ok = true;
		var errorTxt = "";
		if (f.comentario.value == "" || f.emailContact.value == ""){
			errorTxt += "(!) Debe introducir un comentario y un email|";
		}
		if(!regularExpressions.isValidEmail(f.emailContact.value)) errorTxt += "(!) Tu email tiene que tener un formato válido|";
		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formContact"));
			return false;
		}
	},
	validaFormHistoryNews:function(){
		var f = document.forms.formHistoryNews;
		var errorTxt = "";
		var dayFrom = parseInt(f.dia[f.dia.selectedIndex].value);
		var monthFrom = parseInt(f.mes[f.mes.selectedIndex].value);
		var yearFrom =  parseInt(f.anyo[f.anyo.selectedIndex].value);
		var dayTo = parseInt(f.dia2[f.dia2.selectedIndex].value);
		var monthTo = parseInt(f.mes2[f.mes2.selectedIndex].value);
		var yearTo =  parseInt(f.anyo2[f.anyo2.selectedIndex].value);

		if ((((monthFrom == monthTo) && (dayFrom > dayTo)) || ((monthFrom > monthTo) && (yearFrom == yearTo)))){
			errorTxt += "(!) La fecha 'desde' no puede ser superior a la fecha 'hasta'|";
		}
		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formHistoryNews"));
			return false;
		}
	}
}

/* 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-Z/\\t\n\r\s]+$/.test(c); },
	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)}

}

/* Funciones de noticias */
var noticias = {
	ActivaNoFollow:function (){
		$("#detalle_noticia a").attr({ rel: "nofollow"});
	}

}


var load={
	existeId:function(cid){
		if(document.getElementById(cid)) return true;
		return false;
	},
	setEvents:function(){
		fixes.setLayout();
		if(load.existeId("moduleGoogleMaps")) googleMaps.map();
		if(load.existeId("searchModule")) curves.createInputCurves(document.getElementById("searchModule").getElementsByTagName("span")[0]);
		//if(load.existeId("sideBar")) curves.createInputCurves(document.getElementsByClassName("curves", document.getElementById("sideBar"))[0]);
		if(load.existeId("moduleBlog")) curves.createInputCurves(document.getElementsByClassName("curves", document.getElementById("moduleBlog"))[0]);
		if(load.existeId("formComment")) curves.createFormCurves(document.getElementById("formComment"));
		if(load.existeId("formNewsletterSign")) curves.createFormCurves(document.getElementById("formNewsletterSign"));
		if(load.existeId("formNewsletterDel")) curves.createFormCurves(document.getElementById("formNewsletterDel"));
		if(load.existeId("formCv")) curves.createFormCurves(document.getElementById("formCv"));
		if(load.existeId("moduleContact")) curves.createInputCurves(document.getElementsByClassName("curves", document.getElementById("moduleContact"))[0]);
		if(load.existeId("wrapperSearchs")) curves.createInputCurves(document.getElementsByClassName("curves", document.getElementById("wrapperSearchs"))[0]);
		if(load.existeId("formCv")) document.getElementById("formCv").onsubmit = formsValidations.validaFormCv;
		if(load.existeId("formNewsletterSign")) document.getElementById("formNewsletterSign").onsubmit = formsValidations.validaFormNewsletterSign;
		if(load.existeId("formNewsletterDel")) document.getElementById("formNewsletterDel").onsubmit = formsValidations.validaFormNewsletterDel;
		if(load.existeId("formComment")) document.getElementById("formComment").onsubmit = formsValidations.validaFormComment;
		if(load.existeId("formContact")) document.getElementById("formContact").onsubmit = formsValidations.validaFormContact;
		if(load.existeId("formHistoryNews")) document.getElementById("formHistoryNews").onsubmit = formsValidations.validaFormHistoryNews;
		if(load.existeId("termino")) behaviours.resetTerm();
		if(load.existeId("related")) carruseles.album.init();
;		if(load.existeId("detalle_noticia")) noticias.ActivaNoFollow();
;

	}
}

if(W3CDOM) e.addEvent(window, "load", load.setEvents, false);
if(W3CDOM && document.getElementById("contacto")) e.addEvent(window, "unload", GUnload, false);
