var W3CDOM = (document.createElement && document.getElementsByTagName);

document.getElementsByClassName = function(className, container){
   var data = tags = [];
   var obj = document.getElementById("wrapper");
   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 layout={
	finalHeight:0,
	resize:function(){
		var wrapper = document.getElementById("wrapper");
		var sideBar = document.getElementById("sideBar");
		var main = document.getElementById("content");
		var hMain = main.offsetHeight + 6;
		var hSideBar = sideBar.offsetHeight - 20;
		var divElement = document.createElement("div");
		var size = layout.getViewportSize();
		divElement.className = "fixLayout";
		divElement.appendChild(document.createTextNode(""));
		divElement.style.width = (size[0] - wrapper.offsetWidth - wrapper.offsetLeft) + "px";
		divElement.style.height = (parseInt(hMain) > parseInt(hSideBar)) ? hMain + "px" : hSideBar + "px"
		wrapper.appendChild(divElement);
	},
	getViewportSize:function(){
		var size = [0,0];
		if(typeof window.innerWidth != 'undefined'){
			size = [window.innerWidth-17,window.innerHeight-17];
		}else if(typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined'
				 && document.documentElement.clientWidth != 0){
			size = [document.documentElement.clientWidth,document.documentElement.clientHeight];
		}else size = [document.getElementsByTagName("body")[0].clientWidth,document.getElementsByTagName("body")[0].clientHeight];
		return size;
	}
}

var behaviours = {
	resetInput:function(){
		var obj = document.getElementById("mail");
		obj.onfocus = function(){
			obj.value = "";
		}

	}
}

var formsValidations = {
	setMsgError:function(txt, form){
		var parentForm = form.parentNode;
		var msgError = document.getElementsByClassName("msgError", parentForm);
		var divElement = (msgError.length != 0) ? msgError[0] : document.createElement("div");
		var ulElement = document.createElement("ul");
		var liElement = null;
		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) parentForm.insertBefore(divElement,form);
		divElement.focus();
	},
	validaContactForm:function() {
		var f = document.forms.formContact;
		var errorTxt = "";
		if (f.nombre.value == "") errorTxt += "(!) El campo 'Nombre' es obligatorio|";
		if (f.telefono.value == "") errorTxt += "(!) El campo 'Teléfono' es obligatorio|";
		if (f.mail.value == "") errorTxt += "(!) El campo 'Correo electrónico' es obligatorio|";
		if(f.mail.value != "" && !regularExpressions.isValidEmail(f.mail.value)) errorTxt += "(!) El formato del campo 'Correo electrónico' no es correcto|";
		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formContact"));
			return false;
		}
	}
}

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); }
}


var googleMaps = {
	map:function() {
		if (GBrowserIsCompatible()){
        	var map = new GMap2(document.getElementById("map"));
        	var icon = new GIcon();
			icon.image = "/design/plain_site/images/icLogoTanta.png";
			icon.iconSize = new GSize(20, 28);
			icon.iconAnchor = new GPoint(6, 20);
			icon.infoWindowAnchor = new GPoint(5, 1);
			map.addControl(new GMapTypeControl());
        	map.setCenter(new GLatLng(40.434911185912, -3.6270976066589355), 15);
        	map.addControl(new GSmallMapControl());
        	map.addOverlay(new GMarker(new GLatLng(40.434911185912,-3.6270976066589155), icon));
        }
	}
}


var load={
	existeId:function(cid){
		if(document.getElementById(cid)) return true;
		return false;
	},
	setEvents: function(){
		layout.resize();
		if (load.existeId("formContact")) {
			document.getElementById("formContact").onsubmit = formsValidations.validaContactForm;
			behaviours.resetInput();
		}
		if(load.existeId("map")) googleMaps.map();
	}
}

if(W3CDOM) e.addEvent(window, "load", load.setEvents, false);
if(W3CDOM && document.getElementById("map")) e.addEvent(window, "unload", GUnload, false);
