// JavaScript Document

var NO_SAVED_PROPERTIES = 'No ha guardado la propiedad.';
var NO_RECENT_PROPERTIES = 'No ha visto propiedades recientemente.';
var NO_SAVED_SEARCHES = 'No tiene búsquedas guardadas.';
var NO_RECENT_SEARCHES = 'No tiene b?squedas recientes.';
var SEARCH_SAVED = 'B?squeda guardada.';
var SEARCH_DELETED = 'B?squeda borrada.';
var PROPERTY_SAVED = 'Propiedad guardada.';
var PROPERTY_DELETED = 'Propiedad borrada.';
var ALERT_UPDATED = 'Alerta email actualizada.';
var SETTING_UPDATED = 'Valor actualizados.';
var SETTINGS_UPDATED = 'Valores actualizados.';
var SETTING_ERROR = 'Ocurrió un error. No se a producido el cambio.';
var SETTING_NO_CHANGE = 'No se a producido el cambio.';
var SETTING_EMAIL_UNAVAILABLE = 'Este email no est? disponible. No se han producido cambios.';
var SETTING_BAD_EMAIL = 'Please enter a valid email address, such as name@domain.com.';
var SETTING_BAD_PASSWORD = 'Su contrase?a debe tener entre 5 y 11 caracteres de largo.';
var SETTING_EASY_PASSWORD = 'Su contrase?a es muy f?sil de adivinar.';
var ALERT_DELETED = 'Alerta borrada.';
var ALERTS_DELETED = 'Alertas borradas.';
var ALERT_SAVED = 'Alerta guardada.';
var ALERT_UPDATED = 'Alert actualizada.';
var ALER_FILTERS = '<p style="color:#777777;"><strong>Aviso!</strong><br /><br />Los filtros avanzados se aplican a Casas o Apartamentos, para activarlos seleccione una de estas categor&iacute;as desde el selector de tipos de inmuebles.</p>'

function contactos(idDelFormulario){
	var result = valid.validate();
	if(result == true){ enviarPorAjax(); return false; }
	else{ return false; }
}

function enviarPorAjax(){
	var datos = Form.serialize($('ajaxformulario'), true);
	Form.disable('ajaxformulario');
			
	$('ajaxformulario').request({
		parameters : datos,
		onSuccess : function(resp) {
			Effect.Fade('ajaxformulario');
			window.setTimeout('Effect.Appear(\'ajaxFormularioOK\')',1000);
			window.setTimeout('new Effect.Highlight(\'ajaxFormularioOK\', { startcolor:\'#ffff99\',endcolor:\'#E4EDF9\' })',2000);
			window.setTimeout('Effect.Fade(\'facebox\')',3000);
		},
		onFailure : function(resp) {
			Form.enable('ajaxformulario');
			Effect.Appear('ajaxFormularioNOK');
		}
	});
}

//## misc utility functions ###
function changeTabs(event) {
	Event.stop(event);
	$('sale').className = 'off'; $('rent').className = 'off'; $('short-term').className = 'off';
	var element = Event.element(event);
	element.className = 'on';
	ventaOAlquiler();
}

//para los post
function textCounter(elem,cntfield,maxlimit)
{
	if (elem.value.length > maxlimit) // if too long...trim it!
		elem.value = elem.value.substring(0, maxlimit);
		// otherwise, update 'characters left' counter
	else
	{
		if(xb_get_element(cntfield))
			xb_get_element(cntfield).innerHTML = maxlimit - elem.value.length
	}
}

function casaOApartamento(event) {
	Event.stop(event);
	var valor = $('inmueble').value;
	switch(valor){
		case("2"):
			filtros("apto");
			break;
		case("1"):
			filtros("casa");
			break;
		default:
			filtros("none");
	}
}

function ventaOAlquiler(event) {
	//Event.stop(event);
	var tipoTransaccion = $('tipoTransaccion').value;
	var moneda = $('moneda').value;
	rangosPrecio(tipoTransaccion, moneda);
}

function rangosPrecio(tipoTransaccion, moneda)
{
	clearSelect('rangosPrecio');
	if('venta'==tipoTransaccion){
		var valores = new Array('1-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('1-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("1-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', '', 'Todos');
	for(var i=0; i< valores.length; i++){
		addSelectOption('rangosPrecio', valores[i], etiquetas[i]);
	}
	$("rangosPrecio").value = $('rangoPrecioDefault').value;
}

function clearSelect(selectId)
{
	var select = $(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;
		$(selectId).appendChild(anOption);
		return anOption;
	}
	return false;
}

function optionPosition(selectId, value)
{
	var select = $(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 = optionPocition(selectId, value);
	if(pos!=false){
		var select = $(selectId);
		select.removeChild(select.childNodes[pos]);
	}
}

function filtroBarriosPorCiudad(event) {
	Event.stop(event);
	var idCiudad = $('loc_c').value;
	new Ajax.Request("/inmuebles/barrios/", {
		parameters: {ciudad: idCiudad},
		requestHeaders: {Accept: 'application/json'},
		onSuccess : function(resp) {
			//cargo el combo con los barrios
			clearSelect('loc_b');
			addSelectOption('loc_b', "", "Barrios Todos");
			resp.responseText.evalJSON(true).each(function(barrio){
				addSelectOption('loc_b', barrio.idbarrios, barrio.nombre);
			});
		},
		onFailure : function(resp) {
			//do nothing
		} 
	});
}

//### Filtros ###
function filtros(tipo) {
	if(tipo == "Apartamento"){
		Effect.Fade('panelFiltrosCasa');
		Effect.Appear('panelFiltrosApto');
	}
	else if(tipo == "Casa"){
		Effect.Fade('panelFiltrosApto');
		Effect.Appear('panelFiltrosCasa');
	}
	else {
		Effect.Fade('panelFiltrosApto');
		Effect.Fade('panelFiltrosCasa');
	}
}

/*Link avanzada*/
function linkAvanzada(event) {
	Event.stop(event);
	if(Element.getStyle('avanzada', 'display') == "none") {
		$('lnkAvanzada').update('Menos filtros');
		$('more-less').src='images/less.gif';
		var indice = $('loc_t').selectedIndex;
		var tipo = $('loc_t').options[indice].text;
		filtros(tipo);
		Effect.Appear('avanzada');

		facebox.reveal(ALER_FILTERS, null);
	    new Effect.Appear(facebox.facebox, {duration: .3});
		//window.setTimeout('Effect.Fade(\'facebox\')',2000);
	}
	else {
		Effect.Fade('avanzada');
		Effect.Fade('panelFiltrosApto');
		Effect.Fade('panelFiltrosCasa');
		$('lnkAvanzada').update('M&aacute;s filtros');
		$('more-less').src='images/more.gif';
	}
}

/* Update text link avanzada onLoad*/
function updateTextLinkAvanzada(event) {
	Event.stop(event);
	if(esAvanzada == true) {
		$('lnkAvanzada').update('Menos filtros');
		$('more-less').src='images/less.gif';
	}
}

// ## Loading area ##
function showLoader() {
	$('loading-area').show();
	if ( $('loading-area').currentStyle && $('loading-area').currentStyle.position == 'absolute' ) 
  	{
		$('loading-area').setStyle({ top:getScrollTop() });
		Event.observe(window, 'scroll', scrollHandler);
	}
}
function hideLoader() {
	$('loading-area').hide();
	Event.stopObserving(window, 'scroll', scrollHandler);
}
function getScrollTop() {
	if ( document.documentElement.scrollTop )
	return document.documentElement.scrollTop;
	return document.body.scrollTop;
}
function scrollHandler() {
	$('loading-area').setStyle({ top:getScrollTop() });
}

function closeAlertNotice(data) {
	Effect.Fade("alert_notice");
	new Ajax.Request("/inmuebles/alertavista/", {parameters: {idalertas: data} });
	return false;
}

/* Eventos */
Event.observe(window, 'load', ventaOAlquiler);
document.observe("dom:loaded", function() {
		Event.observe("moneda", "change", ventaOAlquiler);
});
document.observe("dom:loaded", function() {
		$("lnkAvanzada").observe("click", linkAvanzada);
		
		Event.observe("loc_t", "change", function(event){
			var indice = $('loc_t').selectedIndex;
			var tipo = $('loc_t').options[indice].text;
			filtros(tipo);
		});
});
Ajax.Responders.register({
		onCreate : showLoader,
		onComplete : hideLoader
});
document.observe("dom:loaded", function() {
		$("sale").observe("click", changeTabs);
		$("rent").observe("click", changeTabs);
		$("short-term").observe("click", changeTabs);
});
document.observe("dom:loaded", function() {
	//Filtro los links de nofollow, facebox, lightbox, los de las alertas y el de MásFiltros
	var links = $$('a:not([rel=nofollow]):not([rel=facebox]):not([rel^=lightbox]):not([id^=alert_]):not([id=lnkAvanzada])');
	
	var alllinks = links.findAll(function(link){
		link.observe('click', function(Event){
				Effect.Appear('loading-area');
			});
	});
});

Event.observe(window, 'load', function() {
	Effect.Fade('loading-area');
});
document.observe("dom:loaded", function(){
	Effect.Appear('loading-area');
});

// Búsqueda por Ref.
document.observe("dom:loaded", function() {
		$('ref')
			.observe('focus', function() {if (this.value == 'Ref.') this.value = ''})
			.observe('blur', function() {if (this.value == '') this.value = 'Ref.'});
});

// Filtro por barrios
document.observe("dom:loaded", function() {
	Event.observe("loc_c", "change", filtroBarriosPorCiudad);
});

// Update text link avanzada
document.observe("dom:loaded", updateTextLinkAvanzada);

