var raizSitio = "/";
//var raizSitio = "/cecilia/";
//var raizSitio = "/porcelana/";

var $idiomas = {
	INGLES: 'en',
	ESPANIOL: 'es',
	DEFAULT: 'es'
}

var $idioma = $idiomas.ESPANIOL;

$mensajeValidacionFormulario = {
	es: "Por favor, complete al menos el mensaje a enviar. Gracias.",
	en: "Please, enter the message you would like to send. Thank You"
}

// Librería AjaxLib v 1.0
// @autor Maximiliano R. Firtman firt@itmaster.es
// Agregados y modificaciones por Carla Griggio carla.griggio@gmail.com

//tipoRespuesta

var $tipo = {
	XML:0,
	TEXTO:1,
	JSON:2
}

//método

var $metodo = {
	GET: "GET",
	POST: "POST"
}

/*
* Realiza un nuevo requerimiento AJAX a la url especificada con las opciones definidas
* @param { String } url La URL donde realizar las peticiones
* @param { Object } opciones Un objeto JSON con los atributos opcionales que queremos definirle.
*/
function $Ajax(url,opciones) {
	//cache
	if(__$P(opciones,"cache",true)==false) {
		//se agrega un parámetro random a la url
		//Ponemos ? o & según la presencia de parámetros anteriores.
		var character="?";
		if(url.indexOf("?")>0) character="&";
		url += character+Math.random();
	}
	var metodo = __$P(opciones,"metodo",$metodo.GET);
	var parametros = __$P(opciones,"parametros");
	
	//Genera JSON de propiedades necesarias para Prototype
	//En un futuro puede ser reemplazado por otra libreria
	
	var protoOpc = {
		method:metodo,
		onSuccess:__$AjaxRecibir.bind(this,opciones),
		onException:__$AjaxError.bind(this,opciones),
		onFailure:__$AjaxError.bind(this,opciones)
	}
	//si se definieron los parámetros los agregamos
	
	if(parametros!=undefined){
		protoOpc.parameters = parametros;	
	}
	
	//Genera la nueva petición vía Prototype
	var peticion = new Ajax.Request(url,protoOpc);
	
	//Prende el cartel de Cargando, si existiera
	if(__$P(opciones,"avisoCargando")!=undefined) {
		__$AjaxCargando(opciones.avisoCargando,true);
	}
}
		
/*Funcón interna que se encarga de recibir la petición lista 
desde Prototype y ejecutar el evento onfinish de la petición*/
function __$AjaxRecibir(opciones,xhr) {
	//Si se ejecuta este método estamos seguros de que 
	//readyState==4 y status==200
	
	//Apagamos el carel de Cargando si existiera
	if(__$P(opciones,"avisoCargando")!=undefined) {
		__$AjaxCargando(opciones.avisoCargando,false);	
	}
	
	//Traemos la función onfinish si fue definida
	var funcionRetorno = __$P(opciones,"onfinish");
	//Traemos el identificador de la petición si fue definido
	var id = __$P(opciones,"id");
	
	if(funcionRetorno!=undefined) {
		//Si el usuario indicó que quire recibir la respuesta
		//Suponemos TEXTO como tipo por defecto
		var tipoRespuesta = __$P(opciones,"tipoRespuesta",$tipo.TEXTO);
		switch(tipoRespuesta) {
			case $tipo.TEXTO:
				funcionRetorno(xhr.responseText,id); break;
			case $tipo.XML:
				funcionRetorno(xhr.responseXML,id); break;
			case $tipo.JSON:
				try {
					objeto = xhr.responseText.evalJSON();
				} catch (e) {
						__$AjaxError(opciones,xhr, {code:-1,message:"JSON No válido"});
						return;
				}
				funcionRetorno(objeto,id);		
		}
	}
}
/* Función interna que se encarga de prender o apagar el cartel de Cargando si existiera*/
function __$AjaxCargando(cartel,prender) {
	//alert(cartel)
	if(prender) {
		$(cartel).show();
	} else {
		$(cartel).hide();
	}
}

/*Funcion interna que se encarga de recibir la ejecucón cuando se
produzca algún error en la petición desde Prototype */

function __$AjaxError(opciones,xhr,excepcion) {
		//Apagamos cartel de Cargando si existiera
		if(__$P(opciones, "avisoCargando")!=undefined) {
			__$AjaxCargando(opciones.avisoCargando,false);
		}
		
		//Cuando se trata de un error de servidor, no hay excepcion
		if(excepcion==undefined) {
			//Supongo que error de HTTP, genero mensaje propio
			excepcion = {code:xhr.status,message:"Error del servidor"}
		}
		//Consulto si estabad definido el evento onerror
		var funcionError = __$P(opciones, "onerror");
		if(funcionError!=undefined) {
			funcionError(excepcion,__$P(opciones, "id"));
		}
}

/* Funcion interna que se encarga de entregar un parámetro opcional
desde una colección tipo JSON, con un valor por defecto*/

function __$P(coleccion,parametro,defecto) {
	if(coleccion==undefined) {
		return defecto;
	} else {
		if(coleccion[parametro]==undefined) {
			return defecto;
		} else {
			return coleccion[parametro];
		}
	}
}

window.dhtmlHistory.create({
	toJSON: function(o) {
		return Object.toJSON(o);
	},
	fromJSON: function(s) {
		return s.evalJSON();
	}
});
var seccion;
var precargadas = new Array();

window.onload = function() {
	_uacct = "UA-3272165-2";
	try {
		urchinTracker();
	} catch(e) {
		//no cargó las estadísticas
	}
	var flor = new Image();
	flor.src=raizSitio + "images/florOver.jpg";
	dhtmlHistory.initialize();
    dhtmlHistory.addListener(cambiarHistorial);
	idioma_seccion = dhtmlHistory.getCurrentLocation();
	if(idioma_seccion!="" && idioma_seccion!=null) {
		$idioma = idioma_seccion.substr(0,2);
		seccion = idioma_seccion.substr(5);
		//mostrarSeccion(seccion);
	}
	else seccion=$('seccion').value;
    

	crearLinks();
}

function crearLinksMenu() {
	var opciones = $$("#menu h3");
	opciones.each(
		function(opcion) {
			preloadSeccion(convertirNombreSeccion(opcion.id));
			setTexto(opcion);
			opcion.onmousedown = function(e) {
				/*if(e.button==0)*/ mostrarSeccion(opcion.id);
				//if(e.button==1) window.open("index.html#"+convertirNombreSeccion(opcion.id)); //Middle click: abre nueva ventana
				seccion = opcion.id;
			}
			opcion.onmouseover = function(e) {
				$('container').style.backgroundImage="url(images/florOver.jpg)";
				opcion.style.backgroundImage="url(images/florcita2.jpg)";
			}
			opcion.onmouseout = function(e) {
				$('container').style.backgroundImage="url(images/florOut.jpg)";
				opcion.style.backgroundImage="";
			}
		}
	);
	var links = $$("#secciones a");
	links.each(
	   function(unLink) {
		   unLink.onmouseover = function(e) {
			   $('container').style.backgroundImage="url(images/florOver.jpg)";
			   unLink.style.backgroundImage="url(images/florcita2.jpg)";
		   }
		   unLink.onmouseout = function(e) {
			   $('container').style.backgroundImage="url(images/florOut.jpg)";
			   unLink.style.backgroundImage="";
		   }
	   }
	)
}

function crearLinks() {
	crearLinksMenu();
	var opcionesIdiomas = $$("#menu h4");
	opcionesIdiomas.each(
		function(idioma) {
			if($idiomas[idioma.id] != $idioma) preloadSeccion($idiomas[idioma.id] + "/s_" + seccion);
			idioma.onmousedown = function(e) {
				var idiomaID = idioma.id;
				$idioma = $idiomas[idiomaID];
				crearLinksMenu();
				mostrarSeccion(seccion);
				traducir();
			}
		}
	)
}

//traduce los links de foro y chat, y el texto de la subscripción
function traducir() {
	var links = $$("#menu #secciones a");
	links.each(
		function(unLink) {
			setTexto(unLink);
		}
	)
	$('links').href="links.php#"+$idioma+"/s_links";
	setTexto($('subscripcion'));
}
function setTexto(opcion) {
	if($idioma != $idiomas.DEFAULT && opcion.attributes["name"]!=null) {
		opcion.textoOriginal = opcion.innerHTML;
		opcion.innerHTML = opcion.attributes["name"].value;	
	} else {
		if(opcion.textoOriginal!=null) opcion.innerHTML = opcion.textoOriginal;
	}
}
function mostrarSeccion(nombre,parametros) {
	if(nombre.indexOf("/s_")>0) {
		idioma_seccion = nombre;
		$idioma = idioma_seccion.substr(0,2);
		nombre = idioma_seccion.substr(5);
	}
	if(noEstaPrecargada(convertirNombreSeccion(nombre)) || (parametros!=undefined && parametros!=null)) {
		//alert(nombre + ".html");
		if(parametros!=undefined) params = parametros; else params ="";
		$Ajax(raizSitio+convertirNombreSeccion(nombre) + ".php"+params, {
			  cache:true,
			  metodo:$metodo.GET,
			  onfinish:function(html) {
				  $("mainContent").innerHTML = html;
				  precargadas[convertirNombreSeccion(nombre)] = html;
			  },
			  avisoCargando:"cartelCargando"			  
			}
		)
		
	} else {
		$("mainContent").innerHTML = precargadas[convertirNombreSeccion(nombre)];
	}
	dhtmlHistory.add(convertirNombreSeccion(nombre));
}
function noEstaPrecargada(nombre) {
	return precargadas[nombre] == undefined;
}
function preloadSeccion(nombre) {
	if(nombre!=convertirNombreSeccion(seccion)) {
		$Ajax(raizSitio+nombre + ".php", {
			  cache:true,
			  onfinish:function(html) {
				preloadImages(html);
				if(noEstaPrecargada(nombre)) precargadas[nombre] = html;
			  },
			  metodo:$metodo.POST
		}
		)
	}
}

function cambiarHistorial(seccion,metadatos) {
	mostrarSeccion(seccion,null);
}

function convertirNombreSeccion(nombre) {
	return $idioma + "/" + "s_" + nombre;
}

function preloadImages(html) {
	posicionTag = html.indexOf('<img src="');
	//if(posicionTag>0) alert(posicionTag);
	posicionCierre = html.indexOf('.jpg"');
	//if(posicionCierre>0) alert(posicionCierre);
	if(posicionTag>0 && posicionCierre>0 && (posicionCierre-posicionTag)>0) { 
		imagen=html.substring(posicionTag+10,posicionCierre+4);
		//alert(imagen);
		preload = new Image();
		preload.src=imagen;
		preloadImages(html.substr(posicionCierre+4));
	}
}

function mostrarImagen(url,nombre) {
	$('cartelCargando').show();
	if(!Prototype.Browser.IE) {
		$('cuadroImagen').style.width="500px";
		$('cuadroImagen').style.height="300px"; 
	}
	img = new Image();
	img.onload = function() {
		if($('cuadroImagen').style.display == "none"){
			$('imagen').src = this.src;
			new Effect.Grow('cuadroImagen',{afterFinish: function() {
																  if(Prototype.Browser.IE) {
																	  $('cuadroImagen').style.height="300px"; 
																	  $('cuadroImagen').width="500px";
																  }
																  }});
			
		} else {
			if(Prototype.Browser.IE) $('imagen').src = ruta;
			else new Effect.Fade('imagen',{afterFinish: function(){$('imagen').src = ruta; new Effect.Appear('imagen')}});
		}
		$('linkImagen').href=raizSitio + url;
		$('cartelCargando').hide();
		$('nombreImagen').innerHTML=nombre;
	}
	ruta = "phpThumb/phpThumb.php?src="+raizSitio +  url+"&h=300&w=500";
	img.src= ruta;
	
}

function makePOSTRequest(url, parameters,handler) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
		// set type accordingly to anticipated content type
		//http_request.overrideMimeType('text/xml');
		http_request.overrideMimeType('text/html');
	 }
  } else if (window.ActiveXObject) { // IE
	 try {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
		   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	 }
  }
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
  

  http_request.onreadystatechange = handler;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}

function get(obj,donde,handler) {
  if($('mensaje').value!="") {
  var poststr = "";
  //para juntar todos los elementos del formulario que van a ser posteados, junto en un array a todos los inputs, selects y textareas
  var elementosForm= $$('#'+obj.id+ ' input, #'+obj.id+' textarea');
  //elementosForm.push($('mensaje'));
  //para tener un value polimórfico entre los inputs y selects
  //definirFuncionValor(obj);
  for(i=0;i<elementosForm.length;i++) {
  //alert(elementosForm[i]);
	//if(elementosForm[i].type!="button" && elementosForm[i].type!="submit" && elementosForm[i].type!="checkbox" || (elementosForm[i].type=="checkbox" && elementosForm[i].checked)) {
	if(elementosForm[i].type=="text" || elementosForm[i].type=="textarea")
		poststr+="&"+elementosForm[i].name+"="+encodeURI(elementosForm[i].value);
		
//	}
  }
  //obj.reset();
  makePOSTRequest(donde, poststr,handler);
  } else {
	  alert($mensajeValidacionFormulario[$idioma]);
  }
}

function confirmarEnvioContacto() {
		mostrarSeccion("confirmacion_contacto");
}

/*function confirmarSubscripcion() {
		mostrarSeccion("confirmacion_subscripcion");
}*/

function subscribirNewsletter() {
	$Ajax(raizSitio+"subscribe.php", {
			  cache:true,
			  metodo:$metodo.POST,
			  parametros:"&email="+encodeURI($('email_news').value),
			  onfinish:function(html) {
				 $('subscribir_newsletter').innerHTML="<p>La subscripción al newsletter ha sido exitosa.</p>";
			  },
			  avisoCargando:"cartelCargando"			  
			}
		)
}

