// JavaScript Document

function showContacto() {
	Effect.Appear('panelContacto');
	window.setTimeout('Effect.ScrollTo(\'panelContacto\')',100);
	//window.setTimeout('new Effect.Highlight(\'panelContacto\',{startcolor:\'#ffffff\',endcolor:\'#E4EDF9\',restorecolor:\'#E4EDF9\'})',200);
}

/*Efectos de Destacados */
function highlightDestacados(event) {
	Event.stop(event);
	var element = $(Event.findElement(event, 'a'));
	if(element != null)
	new Effect.Highlight(element.parentNode.parentNode, { startcolor:'#ffff99',endcolor:'#ffffff',restorecolor:'#ffffff' });
}

/*Efectos ListadoLinks [en lista de propiedades] */
function highlightListadoLinks(event) {
	Event.stop(event);
	var element = $(Event.findElement(event, 'a'));
	new Effect.Highlight(element.parentNode, { startcolor:'#ffff99',endcolor:'#ffffff',restorecolor:'#ffffff' });
}

/*Efectos de los filtros */
function casaOApartamento() {
	var valor = $('inmueble').value;
	switch(valor){
		case("2"):
			filtros("apto");
			break;
		case("1"):
			filtros("casa");
			break;
		default:
			filtros("none");
	}
}
/****************************************************************/
function ventaOAlquiler() {
	var tipoTransaccion = $('ventaAlquiler').value;
	setupMonedas(tipoTransaccion);
	var moneda = $('moneda').value;
	rangosPrecio(tipoTransaccion, moneda);
}

function setupMonedas(tipoTransaccion)
{
	if('venta'==tipoTransaccion){
		removeSelectOption('moneda', 'pesos');
	}else if('alquiler' == tipoTransaccion){
		addSelectOption('moneda', 'pesos', '$U');
	}
}

function rangosPrecio(tipoTransaccion, moneda)
{
	clearSelect('rangosPrecio');
	if('venta'==tipoTransaccion){
		var valores = new Array('0-25000', '20000-45000', '30000-65000', '50000-95000', '70000-125000', '90000-145000', '120000-165000', '130000-195000', '150000-205000', '200000-255000', '250000-305000', '300000-355000', '350000-405000', '400000-750000', '750000-10000000');
		var etiquetas = new Array('Hasta 25.000', '20.000 a 45.000', '30.000 a 65.000', '50.000 a 95.000', '70.000 a 125.000', '90.000 a 145.000', '120.000 a 165.000', '130.000 a 195.000', '150.000 a 205.000', '200.000 a 255.000', '250.000 a 305.000', '300.000 a 355.000', '350.000 a 405.000', '400.000 a 750.000', 'Mas de 750.000');
	}else if('alquiler'==tipoTransaccion){
		if('dolares' == moneda){
			var valores = new Array('0-200', '150-300','200-400', '300-500', '400-800', '700-1200', '700-1200', '1500-2000', '1800-2500', '1800-2500', '2800-4500', '4000-99999999'); 
			var etiquetas = new Array('Hasta 200', '150 a 300', '200 a 400', '300 a 500', '400 a 800', '700 a 1.200', '1.000 a 1.600', '1.500 a 2.000', '1.800 a 2.500', '2.300 a 3.000', '2.800 a 4.500', 'Mas de 4.000');
		}else if('pesos'==moneda){
			var valores = new Array("0-4000", "3000-5000", "4000-7000", "6000-10000", "8000-14000", "10000-20000", "15000-30000", "20000-50000", "30000-70000", "70000-99999999");
			var etiquetas = new Array('Hasta 4.000', '3.000 a 5.000', '4.000 a 7.000','6.000 a 10.000','8.000 a 14.000','10.000 a 20.000', '15.000 a 30.000','20.000 a 50.000','30.000 a 70.000', 'Mas de 70.000');       
		}
	}
	addSelectOption('rangosPrecio', 'indistinto', 'Indistinto');
	for(var i=0; i< valores.length; i++){
		addSelectOption('rangosPrecio', valores[i], etiquetas[i]);
	}
}
function clearSelect(selectId)
{
	var select = document.getElementById(selectId);
	while(select.childNodes.length > 0)
	{
		select.removeChild(select.childNodes[0]);
	}
}

function addSelectOption(selectId, value, display) {
	if(optionPosition(selectId, value)==false){
		if (display == null) {
			display = value;
		}
		var anOption = document.createElement('option');
		anOption.value = value;
		anOption.innerHTML = display;
		document.getElementById(selectId).appendChild(anOption);
		return anOption;
	}
	return false;
}

function optionPosition(selectId, value)
{
	var select = document.getElementById(selectId);
	for(var i=0;i<select.childNodes.length; i++){
		if(select.childNodes[i].value == value){
			return i;
		}
	}
	return false;
}

function removeSelectOption(selectId, value) {
	var pos = optionPosition(selectId, value);
	if(pos!=false){
		var select = document.getElementById(selectId);
		select.removeChild(select.childNodes[pos]);
	}
}

/************************************************************************/

function filtros(tipo) {
	if(tipo == "apto"){
		Effect.Fade('panelFiltrosCasa');
		window.setTimeout('Effect.Appear(\'panelFiltrosApto\')',1000);
		if(Element.getStyle('avanzada', 'display') != "none")
			window.setTimeout('Effect.ScrollTo(\'panelFiltrosApto\',{offset:-350})',1300);
	}
	else if(tipo == "casa"){
		Effect.Fade('panelFiltrosApto');
		window.setTimeout('Effect.Appear(\'panelFiltrosCasa\')',1000);
		if(Element.getStyle('avanzada', 'display') != "none")
			window.setTimeout('Effect.ScrollTo(\'panelFiltrosCasa\',{offset:-350})',1300);
	}
	else {
		Effect.Fade('panelFiltrosApto');
		Effect.Fade('panelFiltrosCasa');
	}
}

/*Link avanzada*/
function linkAvanzada(event) {
	Event.stop(event);
	if(Element.getStyle('avanzada', 'display') == "none") {
		$('lnkAvanzada').update('- Filtros');
		Effect.Appear('avanzada');
		window.setTimeout('Effect.ScrollTo(\'lnkAvanzada\',{offset:-400})',100);
	}
	else {
		Effect.Fade('avanzada');
		$('lnkAvanzada').update('+ Filtros');
	}
}

/*Llamada a contacto por Ajax */
function contacto(event) {
	Event.stop(event);
	var datos = Form.serialize($('contactoForm'), true);
	Form.disable('contactoForm');
	
	new Ajax.Request("/inmuebles/contacto/", {
	onSuccess : function(resp) {
		//gracias por contactarnos
		Effect.Fade('contactoForm');
		window.setTimeout('Effect.Appear(\'contactoGracias\')',1000);
		window.setTimeout('new Effect.Highlight(\'contactoGracias\', { startcolor:\'#ffff99\',endcolor:\'#E4EDF9\' })',2000);
		window.setTimeout('Effect.Fade(\'panelContacto\')',5000);
	},
	onFailure : function(resp) {
		//se produjo un error
		Form.enable('contactoForm');
		$('contactoError').update("Disculpenos, se ha producido un error al intentar contactarse: "+resp);
		Effect.Appear('contactoError');
	},
	parameters : datos
	});
}

function showLoader() {
	$('loader').show();
}
function hideLoader() {
	$('loader').hide();
}

var valid;
/*Activo la validaci�n*/
document.observe('dom:loaded', function() {
		valid = new Validation('contactoForm', {immediate : true, onSubmit : false, stopOnFirst : true});
		Validation.addAllThese([
			['required', 'Este campo es requerido.', function(v) {
			   return !Validation.get('IsEmpty').test(v) & v != 'Nombre' & v != 'Email' & v != 'Mensaje';
			}],
			['validate-email', 'Ingrese un email v&aacute;lido. Por ejemplo: nombre@dominio.com.', function (v) {
				return Validation.get('IsEmpty').test(v) || /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v)
			}]
		]);
});

/*Eventos */
document.observe("dom:loaded", function() {
		casaOApartamento();
		Event.observe("inmueble", "change", casaOApartamento);
		ventaOAlquiler();
		Event.observe("ventaAlquiler", "change", ventaOAlquiler);
		Event.observe("moneda", "change", ventaOAlquiler);
		$('rangosPrecio').value = $('rangoPrecioDefecto').value;
});
document.observe("dom:loaded", function() {
		Event.observe("lnkAvanzada", "click", linkAvanzada);
});
document.observe("dom:loaded", function() {
		$$('.destacados div').invoke('observe', "mouseover", highlightDestacados);
});
document.observe("dom:loaded", function() {
		Event.observe("contactoForm", "submit", function(event) {
			Event.stop(event);
			var result = valid.validate();
			if(result == true) contacto(event);
		});
});
Ajax.Responders.register({
		onCreate : showLoader,
		onComplete : hideLoader
});
document.observe("dom:loaded", function() {
		Event.observe("contactoReset", "click", function(event) {
			Event.stop(event);
			Form.reset('contactoForm');
			valid.reset();
			$('contactoError').hide();
		});
});
document.observe("dom:loaded", function() {
		$$('.listadoLinks li').invoke('observe', "mouseover", highlightListadoLinks);
});
document.observe("dom:loaded", function() {
		Event.observe("lnkAvanzada", "mouseover", function(event) {
			Event.stop(event);
			new Tooltip("lnkAvanzada", {backgroundColor: "#333", borderColor: "#333", textColor: "#FFF", textShadowColor: "#000"});
		});
});
