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

// devuelve un array con todos los objetos que tengan la clase que se le pase como parametro (className)
// y esten contenidos dentro del contenedor especificado (container) que puede ser un literal o el propio objeto. Si no se le pasa este parametro, buscara dentro del contenedor "wrapper"
document.getElementsByClassName = function(className, container){
   var data = tags = [];
   var obj = document.getElementById("wrapper");
   var node = aux = null;
	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(tags[i].className == className || tags[i].className.indexOf(className) != -1) data[data.length]=tags[i];}
   return data;
}

// elimina los espacios en blanco de dentro de una cadena
String.prototype.trim = function() { return this.split(" ").join("");}
String.prototype.numOfCharacters = function(character){
	var rep = 0;
	for(var i=0; i<=this.length-1;i++) if(this.charAt(i) == character) rep++;
	return rep;
}



/* ----------------------------------------------------------------
$()

Función "recolectora de elementos". Normalmente se usa como
sustituto de escritura rápida para document.getElementById().
Se le pueden pasar los parámetros que se quieran, pudiendo
ser estos cadenas u objetos.

Ejemplos de uso:
	- Obtenemos el elemento con "id" igual "foobar".
	  var foobar = $("foobar");
	- Obtenemos en un array los elementos con "id" igual a
	  "foo" y "bar"
	  var foobar = $("foo", "bar");
---------------------------------------------------------------- */
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == "string") element = document.getElementById(element);
		if (arguments.length == 1) return element;
		elements.push(element);
	}
	return elements;
}

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 ticker={
	widthContent:0,
	time:0,
	obj:null,
	init:function(){
		var objTicker = $("ticker");
		var contentTicker = objTicker.getElementsByTagName("li");
		ticker.obj = objTicker.getElementsByTagName("div")[1];
		ticker.obj.style.left = "0px";
		for(var i = 0; i < contentTicker.length; i++){
			ticker.widthContent += parseInt(contentTicker[i].offsetWidth);
			contentTicker[i].getElementsByTagName("a")[0].onmouseover = ticker.stop;
			contentTicker[i].getElementsByTagName("a")[0].onmouseout = ticker.move;
		}
		ticker.time = setTimeout("ticker.move()",1);
	},
	move:function(){
		if(parseInt(ticker.obj.style.left) > -(ticker.widthContent)){
			ticker.obj.style.left = (parseInt(ticker.obj.style.left) - 1) + "px";
			ticker.time = setTimeout("ticker.move()",90);
		}else{
			ticker.obj.style.left = ticker.widthContent + "px";
			clearTimeout(ticker.time);
			ticker.time = setTimeout("ticker.move()",1);
		}
	},
	stop:function() { clearTimeout(ticker.time) },
	getClipDimensions:function(clipString){
		var clipValue = clipString.replace(/rect\((.*)\)/,"$1");
		var clipDimensions = (/ , /.test(clipValue)) ? clipValue.split(",") : clipValue.split(" ");
		for(var i = 0; i < clipDimensions.length; i++) clipDimensions[i] = parseInt(clipDimensions[i]);
		return clipDimensions;
	}
}*/


var fixes={
	stretchColumns:function(){
		var leftColumn = document.getElementsByClassName("columnDirs","content")[0];
		var rightColumn = document.getElementsByClassName("columnDirsType2","content")[0];
		var heightLeftColumn = parseInt(leftColumn.offsetHeight) - 2;
		var heightRightColumn = parseInt(rightColumn.offsetHeight) - 2;
		if(heightLeftColumn > heightRightColumn) rightColumn.style.height = heightLeftColumn + "px";
		else leftColumn.style.height = heightRightColumn + "px";
	},

	stretchColumnsHome:function(){
		var leftColumn = document.getElementsByClassName("col01","mainContent")[0];
		var leftColumn2;
		var rightColumn = document.getElementsByClassName("col02","mainContent")[0];
		var heightLeftColumn = parseInt(leftColumn.offsetHeight) - 2;
		var heightRightColumn = parseInt(rightColumn.offsetHeight) - 2;

		var heightLeftColumnFistBlock;

		var nblock=0;

		for(var i=0; i < rightColumn.childNodes.length; i++){
				if(rightColumn.childNodes[i].className=="block") rightColumn=rightColumn.childNodes[i];
			}


		for(var i=0; i < rightColumn.childNodes.length; i++){
				if(rightColumn.childNodes[i].className=="blockContent") rightColumn=rightColumn.childNodes[i];
			}


		if(heightLeftColumn > heightRightColumn) rightColumn.style.height = heightLeftColumn-89 + "px";
		else {
				for(var i=0; i < leftColumn.childNodes.length; i++){

					if(leftColumn.childNodes[i].className=="block" && nblock==1) {
						leftColumn=leftColumn.childNodes[i];
						nblock=0;
					}

					if(leftColumn.childNodes[i].className=="block") {
						nblock=1;
						leftColumn2=leftColumn.childNodes[i];
						for(var x=0; x < leftColumn2.childNodes.length; x++){
							if(leftColumn2.childNodes[x].className=="blockContent") {
								leftColumn2=leftColumn2.childNodes[x];
								heightLeftColumnFistBlock = parseInt(leftColumn2.offsetHeight) - 2;
							}
						}
					}
				}

			for(var i=0; i < leftColumn.childNodes.length; i++){
				if(leftColumn.childNodes[i].className=="blockContent blockContentType2") leftColumn=leftColumn.childNodes[i];
			}
			leftColumn.style.height = heightRightColumn-heightLeftColumnFistBlock-121 + "px";
		}
	}
}

var valida = {
	setErrorBlock:function(id, txt, errorType){
		var obj = (!errorType) ? $(id).parentNode.parentNode : $(id).parentNode;
		var errors = obj.getElementsByTagName("span");
		var spanErrorElement = null;
		var spanElement = [];
		if(txt!=""){
			spanErrorElement = document.createElement("span");
			spanErrorElement.className = (!errorType) ?  "error" : "errorType2";
			if(errors.length != 0) errors[0].innerHTML = txt;
			else{
				spanErrorElement.appendChild(document.createTextNode(txt));
				obj.insertBefore(spanErrorElement,obj.getElementsByTagName("label")[0]);
			}
		}else
			if(errors.length != 0) obj.removeChild(errors[0]);
	},

	clearErrors:function (obj) {
		//alert(obj);
		var spanElements = document.getElementsByClassName("error",obj);
		for(var i = 0; i < spanElements.length; i++) obj.removeChild(spanElements[i]);
	},

	setErrorBlockType2:function(id, txt, errorType){
		var obj = (!errorType) ? $(id).parentNode.parentNode : $(id).parentNode;
		var errors = obj.getElementsByTagName("div");
		var spanErrorElement = null;
		var spanElement = [];
		if(txt!=""){

			spanErrorElement = document.createElement("span");
			spanErrorElement.className = (!errorType) ?  "error" : "errorType2";

			spanErrorElement.appendChild(document.createTextNode(txt));
			obj.insertBefore(spanErrorElement,obj.getElementsByTagName("label")[0]);
		}
	},
	formRecomendar:function(){
		var formu = document.recomendar;
		var ok = true;
		var ok = okMailsAmigo = true;
		var mailsAmigo = [];
		var rep=0;
		var rep2=0;
		/*if (formu.name.value==""){
			valida.setErrorBlock("name","Este campo es requerido");
			ok=false;
		}else valida.setErrorBlock("name","");*/


		if (formu.email.value==""){
			valida.setErrorBlock("email","Este campo es requerido");
			ok=false;
		}else{
			valida.setErrorBlock("email","");
			if(!regularExpressions.esMail(formu.email.value)){
				valida.setErrorBlock("email","Dirección de email no válida");
				ok=false;
			}
		}

		if (formu.friend.value==""){
			valida.setErrorBlock("friend","Este campo es requerido");
			ok=false;
		}else{
			valida.setErrorBlock("friend","");

			mailsAmigo = formu.friend.value.trim().split(",");
			for(i = 0; i < mailsAmigo.length && okMailsAmigo; i++) okMailsAmigo = regularExpressions.esMail(mailsAmigo[i]);
			if(!okMailsAmigo) {

			valida.setErrorBlock("friend","Dirección de email no válida");
			ok=false;

			rep=formu.friend.value.numOfCharacters("@");
			rep2=formu.friend.value.numOfCharacters(",");
			if (rep-1!=rep2 && rep-1>rep2){
						valida.setErrorBlock("friend","Debes separar los emails de tus amigos con comas");
						ok=false;
				}

			}else valida.setErrorBlock("friend","");

		}

		if(ok){
			document.getElementById('enviar').disabled=true;
		}else{
			return false;
		}
	},
	formQueBuscas:function(){
		var formu = document.queBuscas;
		var ok = true;
		if (formu.donde.selectedIndex==0){
			valida.setErrorBlock("donde","Este campo es requerido");
			ok=false;
		}else valida.setErrorBlock("donde","");
		if (formu.tipo.selectedIndex==0){
			valida.setErrorBlock("tipo","Este campo es requerido");
			ok=false;
		}else valida.setErrorBlock("tipo","");
		if (formu.dormitorios.selectedIndex==0){
			valida.setErrorBlock("dormitorios2","Este campo es requerido");
			ok=false;
		}else valida.setErrorBlock("dormitorios2","");
		if (formu.nombreyapellidos.value==""){
			valida.setErrorBlock("nombreyapellidos","Este campo es requerido");
			ok=false;
		}else valida.setErrorBlock("nombreyapellidos","");
		if (formu.email.value==""){
			valida.setErrorBlock("email","Este campo es requerido");
			ok=false;
		}else{
			valida.setErrorBlock("email","");
			if(!regularExpressions.esMail(formu.email.value)){
				valida.setErrorBlock("email","Dirección de email no válida");
				ok=false;
			}
		}
		if (formu.telefono.value==""){
			valida.setErrorBlock("telefono","Este campo es requerido");
			ok=false;
		}else{
			valida.setErrorBlock("telefono","");
			if (formu.telefono.value.length!=9){
				valida.setErrorBlock("telefono","La longitud debe ser de 9 caracteres");
				ok=false;
			}else{
				valida.setErrorBlock("telefono","");
				if(!regularExpressions.esTelefono(formu.telefono.value)){
					valida.setErrorBlock("telefono","Teléfono no válido");
					ok=false;
				}
			}
		}
		if(ok){
			document.getElementById('enviar').disabled=true;
		}else{
			return false;
		}
	},
	formSoliciContact:function(typeForm){
		var formu = document.soliciContact;
		var ok = true;
		if(typeForm == "type2"){
			if (formu.conquien.value==""){
				valida.setErrorBlock("conquien","Este campo es requerido", "errorType2");
				ok=false;
			}else valida.setErrorBlock("conquien","", "errorType2");
		}
		if (formu.nombre.value==""){
			valida.setErrorBlock("nombre","Este campo es requerido", "errorType2");
			ok=false;
		}else valida.setErrorBlock("nombre","", "errorType2");
		if (formu.email.value==""){
			valida.setErrorBlock("email","Este campo es requerido", "errorType2");
			ok=false;
		}else{
			valida.setErrorBlock("email","", "errorType2");
			if(!regularExpressions.esMail(formu.email.value)){
				valida.setErrorBlock("email","Dirección de email no válida", "errorType2");
				ok=false;
			}
		}

		if (formu.comentarios.value==""){
			valida.setErrorBlock("comentarios","Este campo es requerido", "errorType2");
			ok=false;
		}else valida.setErrorBlock("comentarios","", "errorType2");

		if (formu.telefono.value==""){
			valida.setErrorBlock("telefono","Este campo es requerido", "errorType2");
			ok=false;
		}else{
			valida.setErrorBlock("telefono","", "errorType2");
			if(!regularExpressions.esTelefono(formu.telefono.value)){
				valida.setErrorBlock("telefono","Teléfono no válido", "errorType2");
				ok=false;
			}

			if (formu.telefono.value.length!=9){
				valida.setErrorBlock("telefono","La longitud debe ser de 9 caracteres", "errorType2");
				ok=false;
			}
		}
		if(typeForm == "type2"){
			if (formu.ciudad.value==""){
				valida.setErrorBlock("ciudad","Este campo es requerido", "errorType2");
				ok=false;
			}else valida.setErrorBlock("ciudad","", "errorType2");
			if (formu.empresa.value==""){
				valida.setErrorBlock("empresa","Este campo es requerido", "errorType2");
				ok=false;
			}else valida.setErrorBlock("empresa","", "errorType2");
			if (formu.pais.value==""){
				valida.setErrorBlock("pais","Este campo es requerido", "errorType2");
				ok=false;
			}else valida.setErrorBlock("pais","", "errorType2");
			if (formu.comentarios.value==""){
				valida.setErrorBlock("comentarios","Este campo es requerido", "errorType2");
				ok=false;
			}else valida.setErrorBlock("comentarios","", "errorType2");
		}

		if(ok){
			document.getElementById('enviar').disabled=true;

			var myargs = new Array();
			myargs['conquien'] = formu.conquien.value;
			myargs['nombre'] = formu.nombre.value;
			myargs['email'] = formu.email.value;
			myargs['telefono'] = formu.telefono.value;
			myargs['comentarios'] = formu.comentarios.value;

			if(typeForm == "type2"){
				myargs['ciudad'] = formu.ciudad.value;
				myargs['empresa'] = formu.empresa.value;
				myargs['pais'] = formu.pais.value;

				form_id = 'soliciContactType2'
			}else{
				form_id = 'soliciContact'
			}

			function callB(x){
				$(form_id).innerHTML = '<div>'+x+'</div>';
			}

			bajax.bajax_request_type = "POST";
			bajax.call('/index.php/ajax/envia_solicitud_info', callB, myargs);
			return false;

		}else{
			return false;
		}
	},
	formQuieroVender:function(){
		var formu = document.quieroVender;
		var ok = true;

		valida.clearErrors($("tipoVia").parentNode.parentNode);
		valida.clearErrors($("numero").parentNode.parentNode);
		valida.clearErrors($("cp").parentNode.parentNode);

	if (formu.tipoVia.selectedIndex==0){
			valida.setErrorBlockType2("tipoVia","El tipo de vía es requerido");
			ok=false;
		}else valida.setErrorBlockType2("tipoVia","");

		if (formu.nombreVia.value==""){
			valida.setErrorBlockType2("nombreVia","El nombre de la vía es requerido");
			ok=false;
		}else valida.setErrorBlockType2("nombreVia","");

	if (formu.numero.value=="" && formu.sn.checked ==false){
			valida.setErrorBlockType2("numero","El número es requerido");
			ok=false;
		}else valida.setErrorBlockType2("numero","");
		/*
		if (formu.piso.value==""){
			valida.setErrorBlockType2("piso","El piso es requerido");
			ok=false;
		}else valida.setErrorBlockType2("piso","");
		*/

		if (formu.cp.value==""){
			valida.setErrorBlockType2("cp","El C.P. es requerido");
			ok=false;
		}else valida.setErrorBlockType2("cp","");

		if (formu.cp.value.length != 5 && formu.cp.value!=""){
			valida.setErrorBlockType2("cp","C.P. incorrecto");
			ok=false;
		}else valida.setErrorBlockType2("cp","");


		if (formu.poblacion.value==""){
			valida.setErrorBlockType2("poblacion","La población es requerido");
			ok=false;
		}else valida.setErrorBlockType2("poblacion","");


		if (formu.provincia.selectedIndex==0){
			valida.setErrorBlockType2("provincia","La provincia es requerida");
			ok=false;
		}else valida.setErrorBlockType2("provincia","");

		if (formu.tipoViv.selectedIndex==0){
			valida.setErrorBlock("tipoViv","Este campo es requerido");
			ok=false;
		}else valida.setErrorBlock("tipoViv","");

		if (formu.dormitorios.selectedIndex==0){
			valida.setErrorBlock("dormitorios","Este campo es requerido");
			ok=false;
		}else valida.setErrorBlock("dormitorios","");
		if (formu.superficie.value==""){
			valida.setErrorBlock("superficie","Este campo es requerido");
			ok=false;
		}else valida.setErrorBlock("superficie","");

		if (formu.nombreyapellidos.value==""){
			valida.setErrorBlock("nombreyapellidos","Este campo es requerido");
			ok=false;
		}else valida.setErrorBlock("nombreyapellidos","");
		if (formu.email.value==""){
			valida.setErrorBlock("email","Este campo es requerido");
			ok=false;
		}else{
			valida.setErrorBlock("email","");
			if(!regularExpressions.esMail(formu.email.value)){
				valida.setErrorBlock("email","Dirección de email no válida");
				ok=false;
			}
		}
		if (formu.telefono.value==""){
			valida.setErrorBlock("telefono","Este campo es requerido");
			ok=false;
		}else{
			valida.setErrorBlock("telefono","");
			if (formu.telefono.value.length!=9){
				valida.setErrorBlock("telefono","La longitud debe ser de 9 caracteres");
				ok=false;
			}else{
				valida.setErrorBlock("telefono","");
				if(!regularExpressions.esTelefono(formu.telefono.value)){
					valida.setErrorBlock("telefono","Teléfono no válido");
					ok=false;
				}
			}
		}
		if(ok){
			document.getElementById('enviar').disabled=true;
		}else{
			return false;
		}
	}

}

var regularExpressions = {
	esMail:function(c){return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(c)},
	esTelefono:function(c){return /^[0-9\s\+\-)(]+$/.test(c)}
}

/* ASIGNACION DE EVENTOS */
var load={
	existeId:function(cid){
		if(document.getElementById(cid)) return true;
		return false;
	},
	existeClass:function(className){
		var content = document.getElementById("mainContent");
		var existsClass = false;
		if(content){
			for(var i=0; i < content.childNodes.length; i++){
				if(content.childNodes[i].className.indexOf(className) != -1) existsClass = true;
			}
		}
		return existsClass;

	},
	setEvents:function(){
		//if(load.existeId("ticker")) ticker.init();
		if(document.getElementsByClassName("columnDirs","content").length != 0) fixes.stretchColumns();

		if(document.getElementsByClassName("blocks", "mainContent")!="") fixes.stretchColumnsHome();;
		// validaciones de formularios
		if(load.existeId("recomendar")) $("recomendar").onsubmit = valida.formRecomendar;
		if(load.existeId("queBuscas")) $("queBuscas").onsubmit = valida.formQueBuscas;
		if(load.existeId("soliciContact")) $("soliciContact").onsubmit = function() { valida.formSoliciContact("type1"); return false };
		if(load.existeId("quieroVender")) $("quieroVender").onsubmit = valida.formQuieroVender;
		if(load.existeId("soliciContactType2")) $("soliciContactType2").onsubmit = function() { valida.formSoliciContact("type2"); return false };




	}
}


if(W3CDOM) e.addEvent(window, "load", load.setEvents, false);
