/* oppel.js v107 // 2007-2008, icograma.com
	requires: prototype.js
	*/


var annoy=true; function debug(m){if(annoy){annoy=confirm(m);};};

/* --->>> onDOMReady Extension <<<----*/
/* from http://clientside.cnet.com/code-snippets/event-scripting/a-dom-ready-extension-for-prototype/
	Usage:
	Event.onDOMReady(function() { //stuff here! });
	You can call the function repeated times to add more functions to be triggered.
*/

Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (this._timer)  clearInterval(this._timer);
    
    this._readyCallbacks.each(function(f) { f() });
    this._readyCallbacks = null;
},
  onDOMReady : function(f) {
    if (!this._readyCallbacks) {
      var domReady = this._domReady.bind(this);
      
      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);
        
        /*@cc_on @*/
        /*@if (@_win32)
            document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") domReady(); 
            };
        /*@end @*/
        
        if (/WebKit/i.test(navigator.userAgent)) { 
          this._timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) domReady(); 
          }, 10);
        }
        
        Event.observe(window, 'load', domReady);
        Event._readyCallbacks =  [];
    }
    Event._readyCallbacks.push(f);
  }
});

//Cookie prototype extension
//from http://gorondowtl.sourceforge.net/wiki/Cookie
var Cookie = {
  set: function(name, value, daysToExpire) {
    var expire = '';
    if (daysToExpire != undefined) {
      var d = new Date();
      d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
      expire = '; expires=' + d.toGMTString();
    }
    return (document.cookie = escape(name) + '=' + escape(value || '') + expire);
  },
  get: function(name) {
    var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
    return (cookie ? unescape(cookie[2]) : null);
  },
  erase: function(name) {
    var cookie = Cookie.get(name) || true;
    Cookie.set(name, '', -1);
    return cookie;
  },
  accept: function() {
    if (typeof navigator.cookieEnabled == 'boolean') {
      return navigator.cookieEnabled;
    }
    Cookie.set('_test', '1');
    return (Cookie.erase('_test') === '1');
  }
};





getCountTimer = false;
gSearchCount = 1;

//function newCount(){
//	if( getCountTimer ){
//		clearTimeout (getCountTimer);
//	}
//	getCountTimer = setTimeout( 'getCount();', 400 );
//}


function resize_mainhead(){
	var b=$( document.getElementsByTagName("BODY")[0] );
	if( b.hasClassName("home")){
		var y = getWindowSize()[1];
		if(y>=520){
			b.addClassName("homehead");
		}else{
			b.removeClassName("homehead");
		}// end if y
	}//end if b.home
}

//Event.onDOMReady(resize_mainhead);
Event.observe(window,'load',resize_mainhead);
Event.observe(window,'resize',resize_mainhead);




/* home */

function initHome(){

	//anti-FBUC hide mhead before animation
	/*
	$('mainhead_mhead').setStyle({ visibility: 'hidden' });
	$('mainhead_mbody_ctnt').setStyle({ visibility: 'hidden' });
	*/
	new Effect.Opacity( 'mainhead_mhead', {duration:0, from:0, to:0} );
	new Effect.Opacity( 'logo_oppel', { duration:0, from:0, to:0} );
	new Effect.Opacity( 'mainhead_mbody_ctnt', {duration:0.2, from:0, to:0,
		afterFinish:function(){
		
			Element.show('main');
			
			Element.hide('intro');
			Element.hide('buscador');
			Element.hide('barriosHolderSWF');
			
			new Effect.Opacity( 'logo_oppel', { duration:1, from:0, to:1 } )
			/*
			//anti-FBUC fade in logo oppel (aside from mbody_ctnt x IE issues)
			new Effect.Opacity( 'logo_oppel', { duration:0.1, from:0, to:0,
					afterFinish: function(){	
						new Effect.Opacity( 'logo_oppel', { duration:1, from:0, to:1 } )				
					}
				} )
				*/
		
			//fade in mbody_ctnt: lang,mail,address
			new Effect.Opacity( 'mainhead_mbody_ctnt', { duration:1, from:0, to:1,
				afterFinish: function(){
					//anti-FBUC hide mhead: foto
					new Effect.Opacity( 'mainhead_mhead', {duration:0.1, from:0, to:0,
						afterFinish: function(){
							//fade in mhead: foto
							//$('mainhead_mhead').setStyle({ visibility: 'visible' });
							new Effect.Opacity( 'mainhead_mhead', {duration:0.5, from:0, to:1,
								afterFinish: function (){
									//slide down buscador
									new Effect.SlideDown('buscador', {
										afterFinish: function(){
											Element.show( 'barriosHolderSWF' )
											}//end afterfinish buscador blinddown
										}
									); //end buscador blinddown
									}//end afterfinish mainhead_mhead
							
							} )//end opacity mainhead_mhead
							
						}//end after Opacity mainhead_mhead
					} )//end Opacity mainhead_mhead
				
				}//end after opacity mainhead_mbody_ctnt
			} ) // end opacity mainhead_mbody_ctnt
					
		}
	} );


}//end initHome()

function resetHome(){
	Element.show('intro');
	Element.hide('main');
}

function showHome(){
	Element.show('main');
	Element.show('buscador');
	Element.show('barriosHolderSWF');
}





function checkLocs(ids,v){
	ids = ids.split(",");
	for (var i = 0; i<ids.length; i++){
		if( $("loc_"+ids[i]) ){ $("loc_"+ids[i]).checked = v; }
	}
//	newCount();
}

function cssCheck(what){
	if(what.type=="radio"){
		var rs = ( what.form[what.name] )
		for( var r = 0; r < rs.length; r ++ ){
			cssCheckP( rs[r], rs[r] == what );
		}
	}else{
		cssCheckP(what,what.checked)
	}
//	newCount();
}

//function getCount(){
//	$('buscador_count').innerHTML = (Lang == 'es'?"buscando...":"searching...");
//	if($('buscador')){
//		new Ajax.Request('search_count.php', {
//			method: 'get',
//			parameters: $('buscador_form').serialize(true),
//			onSuccess: function(transport){
//				var response = transport.responseText || "";

//				$('buscador_count').innerHTML = gSearchCount = roundResponse(response);
//				if(Lang == 'es'){
//					$('buscador_submit').src = gSearchCount != 0 ? "/images/btn_buscar.gif":"/images/btn_buscar-off.gif";
//				}else{
//					$('buscador_submit').src = gSearchCount != 0 ? "/images/btn_search.gif":"/images/btn_search-off.gif";
//				}
//			}
//		});
//	}
//}
function roundResponse(response){
	var rounded = (Lang=="es"?"menos de ":"less than ");
	if(response == 0){
		rounded = "0";
	}else if(response<10){
		rounded += 10;
	}else if(response<20){
		rounded += 20;
	}else if(response<50){
		rounded += 50;
	}else if(response<100){
		rounded += 100;
	}else{
		rounded = (Lang=="es"?"m&aacute;s de 100":"more than 100");
	}
	return rounded;
}
function validateSearch(f){
	if( (gSearchCount) == 0 ){ return false; }
return true;
}

lastCalleBuscador = ''; lastCodigoBuscador = 0;

function cssCheckP(what,v){
	var pId = what.id;
	var p = $path( what, "<P" ); if(!p){ p = $path( what, "<LI" ) }
	if(p){ if(v){ $(p).addClassName("checked"); }else{ $(p).removeClassName("checked"); }; }
	
	if(pId.indexOf("tipo")==0){ //change 3rd col
	
		var pChk = 0;
		for(var i = 1; i<10; i++){
			if( $("tipo_"+i) && $("tipo_"+i).checked){
				if( pChk == 0){ pChk = i; }else{ pChk= -1; }
				}//end checked
			}//end for i in tipos

		if( pChk == 0 ){
			Element.show("buscador_avanzada");
			
			$("calle").selectedIndex = lastCalleBuscador ;
			$("codigo").value = lastCodigoBuscador;
			
		}else{
			Element.hide("buscador_avanzada");
			lastCalleBuscador = $("calle").selectedIndex;
			lastCodigoBuscador = $("codigo").value;
			
			$("calle").selectedIndex = 0;
			$("codigo").value = "";
		}
		
		if( pChk == -1 ){ //more than 1 selected 
			pChk = 0;
			}
		for(var i = 0; i<10; i++){
			var pDivId = "ambientes_propiedad_tipo_"+i;
			if( $(pDivId) ){
				if( i == pChk ){
					Element.show(pDivId);
					}else{
					Element.hide(pDivId);
					}//end if i == pChk
				}//end if pDivId
			}//end for i in divs
		
		}//end change 3rd col
}


function resize_panes(){
	var mainbody_Y = ( findPos("mainbody")[1] );
	var wSize = getWindowSize();
	
	// ajustamos paneles izq
	var y = Math.max(60, wSize[1] - ( mainbody_Y + 68 ) );
	var divs = new Array ( "qList", "fLogin", "fList" )
	for(var i=0;i<divs.length;i++){
		if( $(divs[i]) ){
			$(divs[i]).style.height = y + "px";
			}
		}

	// ajustamos paneles der
	y -=48;
	var divs = new Array ( "mainctnt_imagenes", "mainctnt_ubicacion",  "mainctnt_planta", "mainctnt_detalles" )
	for(var i=0;i<divs.length;i++){
		if( $(divs[i]) ){
			$(divs[i]).style.height = y + "px";
			}
		}

	// ajustamos imgs
	y -= 9; //36;
	var bigY = y - 20 ;
	var bigX = y/3*4 ;
	var bigXmax = wSize[0] - 478 - 8 - 12;
	
	if(bigX > bigXmax){ //escalamos sobre el ancho, no el alto disponible
		bigX = bigXmax;
		bigY = bigX / 4 * 3;
	}
	
	//tamaño final imagen y planta grandes
	$("mainctnt_imagenes_bigimg").height =
		$("mainctnt_imagenes_bignoimg").height =
		$("mainctnt_mapa_bignoimg").height =
		$("mainctnt_plan_bigimg").height =
		$("mainctnt_plan_bignoimg").height =
		$("mainctnt_mapa_bigimg").height = bigY ;
		
		$("mainctnt_imagenes_bigimg_holder").style.height = 
		$("mainctnt_imagenes_smimgs").style.height = y+"px";

	$("mainctnt_imagenes_bigimg").width =
		$("mainctnt_imagenes_bignoimg").width =
		$("mainctnt_mapa_bignoimg").width =
		$("mainctnt_plan_bigimg").width = 
		$("mainctnt_plan_bignoimg").width = 
		$("mainctnt_mapa_bigimg").width = bigX ;
		
		$("mainctnt_imagenes_bigimg_holder").style.width = bigX+"px";
	
};

function getWindowSize(){
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}
	return new Array( x, y )
}


function findPos(obj) {
	var obj = $(obj);
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}



function sendToPrn(what){ window.print(); return false; }

function sendByMail(what){ return false; }

function showFoto(what){
	var img = $path( what, "IMG" )
	var imgsrc = img.src.replace( /.*\/foto[^/]*\//gi, "" )
	fadeLoadImg( "mainctnt_imagenes_bigimg", "images/fotoBig/"+imgsrc )
	return false;
}
function showPlan(what){
	var img = $path( what, "IMG" )
	var imgsrc = img.src.replace( /.*\/foto[^/]*\//gi, "" )
	fadeLoadImg("mainctnt_plan_bigimg","images/fotoBig/"+imgsrc);
	return false;
}


function fadeLoadImg (what, newSrc) {
	var what = $(what);

	what.show();
	what.style.filter = "alpha(opacity=30)"; what.style.opacity = "0.3";
	what.src = newSrc;
	what.onload = imgLoaded;
	
	if( what.id ){ //fallback for loaded events not firing
		bigImgTimeout = setTimeout( 'imgLoadedID("'+what.id+'")', 8000 )
	}
}

function imgLoaded(){
	this.style.filter = "alpha(opacity=100)"; this.style.opacity = "1";
	this.style.display="";
}
function imgLoadedID( what ){
	var what = $(what)
	what.style.filter = "alpha(opacity=100)"; what.style.opacity = "1";
}





function get_g(what){

	if( $(what).hasClassName("item")){
		var divItem = what;
	}else{
		var divItem = $path( what, "<.item");
	}



	var divItems = $path( divItem, "<.items");
	var rel = String(divItem.getAttribute('rel')) .split(";");

	var relID = rel[0];



	//Contabilizamos la vista como una estadistica si se hizo click en una propiedad de la pestaña de Resultados de Busqueda, no la de Favoritos

	if(/prop_/i.test(divItem.id)){
	
	
		if( ultima_prop_selec!=0 && relID != ultima_prop_selec ){/*Si ultima_prop_selec es igual a 0, quiere decir que es la primera vez que se llama a esta funcion, la primera vez se llama sola 
														cuando carga la pagina y muestra el primer elemento, ese evento no deberia ser contabilizado como una visita. Si 
														ultima_prop_selec es igual al relID, quiere decir que estoy llamando 2 veces seguidas a la misma propiedad y no deberia registrarlo*/

			new Ajax.Request('estadisticas.php?propiedad='+relID, {
				method: 'get'
				});		
				
		}
		
		ultima_prop_selec = 	relID;//Por si despues hace click en la pestaña detalles, saber de que propiedad viene para registrar las visitas de ese evento.
		props_tab_selected = true;//Para saber que se hizo un click desde una propiedad en la pestaña de Resultados de Busqueda
	}else if(/propf_/i.test(divItem.id)){
		props_tab_selected = false;//Para saber que se hizo un click desde una propiedad en la pestaña de Favoritos
		ultima_propf_selec = 	relID;

	}




	var relFotos = rel[1].split(",");
	var relPlans = rel[2].split(",");
	var relMaps = rel[3].split(",");
	
	$('mainctnt_dfoot_cod').innerHTML = "cod. " + relID;

	//cargamos detalles
	var query= 'action=detalles&imb_pk='+relID ; 
	new Ajax.Updater('mainctnt_detalles', 'detalle'+( Lang == 'es' ? '' : '.en')+'.php?'+query,
		{	asynchronous:true }
	);

	if(relFotos[0]!=""){ //hay fotos/s
		//cargar foto: big
		fadeLoadImg ( "mainctnt_imagenes_bigimg","images/fotoBig/"+relFotos[0] )
		//cargar+cache fotos: sm
		var h = "";
		for(var i = 0; i< relFotos.length; i++){
			h+='<p><samp><a href="#" onclick="return showFoto(this);"><img src="images/foto72/' + relFotos[i] + '" width="72" height="54" id="mainctnt_imagenes_smimg' + i + '" /></a></samp></p>';
			cache( 'images/foto72/' + relFotos[i] );
		}
		$("mainctnt_imagenes_bigimg_none").hide();
		$('mainctnt_imagenes_smimgs').update( h );
	}else{
		$("mainctnt_imagenes_bigimg").hide()
		$("mainctnt_imagenes_bigimg_none").show()
		$('mainctnt_imagenes_smimgs').update();
	}
	
	if(relPlans[0]!=""){ //hay plano/s
		//cargar plano: big
		fadeLoadImg ( "mainctnt_plan_bigimg","images/fotoBig/"+relPlans[0] )
		//cargar+cache fotos: sm
		var h = "";
		for(var i = 0; i< relPlans.length; i++){
			h+='<p><samp><a href="#" onclick="return showPlan(this);"><img src="images/foto72/' + relPlans[i] + '" width="72" height="54" id="mainctnt_plan_smimg' + i + '" /></a></samp></p>';
			cache( 'images/foto72/' + relPlans[i] );
		}
		$("mainctnt_plan_bigimg_none").hide()
		$('mainctnt_plan_smimgs').update( h );
	}else{
		$("mainctnt_plan_bigimg").hide()
		$("mainctnt_plan_bigimg_none").show()
		$('mainctnt_plan_smimgs').update();
	}
	
	if(relMaps[0]!=""){ //hay mapa
		//cargar mapa: big
		fadeLoadImg ( "mainctnt_mapa_bigimg","images/fotoBig/"+relMaps[0] )
		$("mainctnt_mapa_bigimg").show()
		$("mainctnt_mapa_bigimg_none").hide()
	}else{
		$("mainctnt_mapa_bigimg").hide()
		$("mainctnt_mapa_bigimg_none").show()
	}
	
	
	//reset tab: "imagenes"
	$("mainctnt_tabber").tabber.tabShow(0);
		
	//desmarcamos old .here
	if(!divItems.lastHere){//find .here
		divItems.lastHere = getElementsWithClasses( "item here", "DIV", divItems)[0];
	}
	$( divItems.lastHere ).removeClassName( "here" );
	
	//marcamos .here
	$( divItem ).addClassName( "here" );
	divItems.lastHere = divItem;

	return false; 
}



/* --- FORMS & DOM ---- */

function checkForm(f){
if(!document.getElementById){return;}
var oktosend=true;var fs=f.elements

for(var i=0;i<fs.length;i++){
	if(fs[i].type&&fs[i].name){

	//get field value
	var ftype=fs[i].type;var efilter=false
	if(ftype=="text"||ftype=="textarea"){
		v=fs[i].value
		}else if(ftype=="select-one"||ftype=="select-multiple"){
		v=fs[i][fs[i].selectedIndex].value
		}else if(ftype=="checkbox"){
		v=fs[i].checked
		//alert(v)
		}else{
		v="!"//other types, don't check
		}
		var isfilled=isvalid=(v!="");
	
	//special fields:
		if(fs[i].name&&fs[i].name.indexOf("mail")>-1){ftype="email";efilter=true;}
		if(efilter){isvalid=isValidField(v,ftype);}
	
	//is required, or need to check if filled?
	var reqelm=FindClassUp(fs[i],"required","form")
	if(!reqelm&&efilter&&isfilled){
		reqelm=FindClassUp(fs[i],"field","form");
		if(!reqelm){reqelm=fs[i];}
		}
	
	if(!isvalid&&reqelm){
		if(oktosend&&(ftype.indexOf("mail")>-1||ftype.indexOf("text")>-1||ftype.indexOf("select")>-1) ){fs[i].select();}
		oktosend=false
		fs[i].onclick=rmErrorClass;/*fs[i].onfocus=rmErrorClass;*/ fs[i].onkeydown=rmErrorClass;
		$(reqelm).addClassName("error");
	}
	}//end filter fs
}//end for i in fs
return oktosend;
}

function rmErrorClass(event){
var elm=this;var etag=FindClassUp(elm,"error","form");if(!etag){etag=FindClassUp(elm,"field","form");};if(!etag){etag=elm}
if(etag){$(etag).removeClassName("error");elm.onclick=null;elm.onfocus=null;elm.onkeyup=null}
}

function isValidField(t,k){
if(k=="email"){
	if( t.indexOf("@example.com")>-1){return false;};
	var emailFilter=/^.+@.+\..{2,}$/;
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if(!(emailFilter.test(t))||t.match(illegalChars)){return(false);}else{return (true);}
	return false
	}//end email
}


function FindClassUp(p,classname,limit){
if(!limit){limit="html";}else{limit=limit.toLowerCase();}
while(true){
	p=p.parentNode;if(!p.tagName||p.tagName.toLowerCase()==limit){return false;}
	if( $(p).hasClassName(classname) ){ return p; };
	}
}

function rmHelpValue(t){var v=t.value;if(v.indexOf("@example.com")>-1){t.value="";};}





//supporting functions

function isDefined( variable){
    return (typeof(window[variable]) != "undefined");
}

function isArray(testObject) {
    return testObject && !(testObject.propertyIsEnumerable('length')) && typeof testObject === 'object' && typeof testObject.length === 'number';
}

cachedImgs=new Array();
function cache(x){if(document.images){cachedImgs[cachedImgs.length]=new Image();cachedImgs[cachedImgs.length-1].src=x;};}
function cacheImgs(){var a=arguments;for(var i=0;i<a.length;i++){cache(a[i]);};}
function setState(i,s){if(document.images){
if(typeof(i)=="string"){i=document.images[i];}
var xa=i.src.substring(0,i.src.lastIndexOf("-"))
var xz=i.src.substring(i.src.lastIndexOf("."))
i.src=xa +"-"+s+xz;};}


function getElementsWithClasses(classNames, tag, elm){
	var classNames = classNames.split(" ")
	//var testClass = new RegExp("(^|\s)" + className + "(\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		var hasClasses = true;
		current = elements[i];
		for(var j=0;j<classNames.length; j++){
			if( !$(current).hasClassName(classNames[j]) ){
			//if(testClass.test(current.className)){returnElements.push(current);
				hasClasses = false; break;
			}//end if
		}//end j
		if( hasClasses ) { returnElements.push(current); }
	}//end i
	return returnElements;
}


function $path(e,c){
var e=$(e);
c=c.split(" ");

for(var i=0;i<c.length;i++){
	var cis = c[i].split(":")
	var num = cis[1]?cis[1]:"0"
	var ci=cis[0]

	if(ci=="<"){
		e=e.parentNode;
	}else if(ci.charAt(0)=="#"){
		e=document.getElementById( ci.substring(1) );
		if(!e){return false;};
	}else if(ci.charAt(0)=="."){
	var a=e.childNodes;var t=ci.substring(1);var d=false;
		for(var b=0;b<a.length;b++){
		if( $(a[b]).nodeType == 1 && $(a[b]).hasClassName(t) ) {d=a[b];break;};
		};
		if(d){e=d;}else{return false;};
	}else if(ci.charAt(0)=="<"){
		e=FindTagClassUp(e.parentNode,ci.substring(1),"BODY");
		if(!e){return false;};
	}else{
	var a = e.getElementsByTagName( ci.toLowerCase() );
		if(a.length>0){
			if(num=="0"){e=a[0];
			}else if(num=="last"||num>a.length){
			e=a[a.length-1]
			}else{
			e=a[num]
			}
		}else{
			var a = document.getElementsByName(ci);
			if( a[0] ){ e=a[0]; }else{return false;};
		};
	};
	};
	return e;
};

function FindTagClassUp(elm,tcsearch,tclimit){

var tc=(tcsearch+".").split(".");tc[0]=tc[0].toUpperCase();
if(!tclimit){tclimit="BODY";};
var tz=(tclimit+".").split(".");tz[0]=tz[0].toUpperCase();
	while(n=elm.nodeName){
		if(tc[0]==""||n==tc[0]){
			if(tc[1]==""||$(elm).hasClassName(tc[1])){return elm;};};
		if(tz[0]==""||n==tz[0]){
			if(tz[1]==""||$(elm).hasClassName(tz[1])){return false;};};
		elm=elm.parentNode;
	};
	debug("No se pudo obtener NODENAME para: ",elm);
	return false;
};






//Variables de Favoritos
var add_fav_txt_es = "Agregar a Favoritos";
var add_fav_txt_en = "Add to Favorites";
var rm_fav_txt_es = "Remover de Favoritos";
var rm_fav_txt_en = "Remove from Favorites";
var rec_emails_txt_es = "Recibir propiedades similares por email semanalmente";
var rec_emails_txt_en = "Get similar properties weekly by email";
var aviso_es = "Usted no dispone a&uacute;n de favoritas, puede agregar algunas desde la pesta&ntilde;a de 'Resultados de B&uacute;squeda'.";
var aviso_en = "Right now you have no favorite properties, you can add some using the 'Search Results' tab.";
var login_txt_es = "Ingresar a Favoritos";
var login_txt_en = "Log In to your Favorites";
var recibe_emails = false;

function login_favoritos(login_type){
	if(!usr_favoritos){
		$('error_mesg_fav').hide();
		//var serform = Form.serialize('favoritos_form');
		var parms = "";
		var parm = "";
		if(login_type=="login"){
			parms += (parms!=""?"&":"")+"log_type=login";
			if($('fLogin_username')){
				parm = $('fLogin_username').value;
				$('fLogin_username').value = "";
			}else{
				parm = "";
			}
			temp_usr_favoritos = parm;
			parms += (parms!=""?"&":"") + "usr=" + parm;
		}else{
			parms += (parms!=""?"&":"")+"log_type=register";
			if($('fRegister_username')){
				parm = $('fRegister_username').value;
				$('fRegister_username').value = "";
			}else{
				parm = "";
			}
			temp_usr_favoritos = parm;
			parms += (parms!=""?"&":"") + "usr=" + parm;
		}
		if(fav_waiting){
			parms += (parms!=""?"&":"")+"add="+fav_waiting;
		}
		parms += (parms!=""?"&":"") + "ls=true";
		AjaxFavoritos(parms,temp_usr_favoritos);
	}
}

function AjaxFavoritos(parms,usuario){
	var old_usr = usr_favoritos;
	usr_favoritos = usuario;//La funcion AjaxFavoritos, ademas de usarse para agregar y eliminar propiedades trambien se usa para setear el usuario actual, por eso siempre recibe como parametro el usuario que tiene que estar logueado actualmente. Con esta instruccion asigno el usuario actual pero tambien me quedo con el anterior en old_usr por si la llamada de ajax tuvo algun error.
	new Ajax.Request('favoritos.php?'+parms, {
		method: 'get',
		onSuccess: function(transport){
			var XML = transport.responseText || "";
			if(didnt_have_errors_f(XML)){
				//usr_favoritos = usuario;
				usr_favs = XML;
				print_list_f(XML);
			}else{
				usr_favoritos = old_usr;
			}
		}
	});
}

function manage_response_f(respuesta){
	var XML = respuesta.responseText || "";
	if(didnt_have_errors_f(XML)){
		usr_favoritos = temp_usr_favoritos;
		usr_favs = XML;
		print_list_f(XML);
	}
}

function didnt_have_errors_f(XML){
	if(/<error>.*<\/error>/im.test(XML)){
		var error = XML.match(/<error>.*<\/error>/i);
		error = String(error);
		error = error.replace(/<error>(.*)<\/error>/i,'$1');
		if(error.length>0){
			var nroError = error.replace(/(\d+)\|.*/i,'$1');
			if(nroError!="0"){
				if(Lang=="es")
					error = error.replace(/.*\|(.*)\|.*/,'$1');
				else
					error = error.replace(/.*\|.*\|(.*)/,'$1');
				$('error_mesg_fav').innerHTML = error;
				$('error_mesg_fav').show();
				return false;
			}
		}
	}
	return true;
}

//Con esta funcion consigo todos los favoritos y los pongo en la pestaña de favoritos
function print_list_f(XML){
	if (/<items>[\s\S]*?<\/items>/i.test(XML)){
		var favs = XML.match(/<items>[\s\S]*?<\/items>/i);
		favs = String(favs);
		favs = favs.replace(/<items>([\s\S]*?)<\/items>/i,'$1');
		$fProps = "";
		if(favs.length>0&&/\w+/i.test(favs)){
			if(/<i>[\s\S]*?<\/i>/i.test(favs)){
				var items = favs.match(/<i>[\s\S]*?<\/i>/ig);	
				var n = items.length;
				var i = 0;
				var propsHTML="";
				var primero = true;
				
				while(i<n){
				//<i>6963|249000|O HIGGINS al 1700|La Pampa y Jose Hernandez|VE|Departamentos|Belgrano|3|117,79|1|;p1.jpg;</i>
					if(/<i>.*?\|.*?\|.*?\|.*?\|.*?\|.*?\|.*?<\/i>/i.test(items[i])){
						var item = items[i].replace(/<i>(.*)<\/i>/i,'$1');
						item = item.split("|");

						var itemHTML = getItemHTML(item,primero);
						if(primero&&ultima_propf_selec==0){//Despues de cargar la lista, voy a cargar el primer item si estoy en el tab de favoritos, entonces guardo la primera propiedad porque es la que tengo que cargar
							ultima_propf_selec = item[0];
						}
						primero = false;
						propsHTML += itemHTML;
						
						//Chequeo las propiedades de Resultados de Busqueda para ver cuales estan en favoritos y cambiarles la imagen
						if($('prop_'+item[0])){
							var kbd = $path($('prop_'+item[0]),"KBD");
							if(kbd){
								if($path(kbd,"IMG")){
									var fotoProp = $path(kbd,"IMG");
									fotoProp.src= "/images/fvadd_"+Lang+"-1.gif";
									fotoProp.alt = Lang=="es"?rm_fav_txt_es:rm_fav_txt_en;
									fotoProp.title= fotoProp.alt;								
								
								}
							}
						}
					}
					i++;
				}
				$('fList').innerHTML = "<div class=\"items\">"+propsHTML+"</div>";
			}	
		}else{
			$('fList').innerHTML = "<h3>"+(Lang=="es"?aviso_es:aviso_en)+"</h3>";	
		}

		$('fList').show();
		var mainusrctnt	 = (Lang=="es"?"Bienvenido ":"Welcome ");
		mainusrctnt		+= "<strong>"+usr_favoritos+"</strong>";
		mainusrctnt		+= ". <a href=\"javascript:logFavOut();void 0;\">"+(Lang=="es"?"Salir":"Logout")+"</a>";
		$('mainuser').innerHTML = mainusrctnt;
		$('mainuser').show();
		new Effect.Opacity($('mainuser'),{
			duration: 0.0, 
			transition: Effect.Transitions.linear, 
			from: 0.0, to: 1.0 ,
			beforeStart: function(obj){
				obj.element.show();
			}
		});
		$('fLogin').hide();
		if(/<recibe_emails>.+<\/recibe_emails>/i.test(XML)){
			recibe_emails = String(XML.match(/<recibe_emails>.+<\/recibe_emails>/i));
			recibe_emails = recibe_emails.replace(/<recibe_emails>(.+)<\/recibe_emails>/i,'$1');
			recibe_emails = recibe_emails=="1"?true:false;
		}
		var favHeaderLabel = Lang=="es"?rec_emails_txt_es:rec_emails_txt_en;
		var favHeaderCheckbox = "<input type=\"checkbox\" id=\"gets_emails\" "+(recibe_emails?"checked":"")+" onClick=\"getEmails(this)\">";
		$('favheader').innerHTML="<div id=\"checkbox_emails\"><label for=\"gets_emails\">"+favHeaderLabel+"</label>"+favHeaderCheckbox+"</div>";
/*		alert('propf_'+ultima_propf_selec);
		if(!props_tab_selected){//Si estoy en la pestaña de favoritos cargo el ultimo elemento seleccionado
			get_g($('propf_'+ultima_propf_selec));
		}*/
	}
}

function getEmails(checkbox){
	var parm;
	if(checkbox.checked){
		parm = "get_emails=true";
		new Effect.Opacity($('checkbox_emails'), {duration:1.0, from:0.5, to:1.0});
	}else{
		parm = "get_emails=false";
		new Effect.Opacity($('checkbox_emails'), {duration:1.0, from:0.5, to:1.0, transition:Effect.Transitions.wobble});
	}
	AjaxFavoritos(parm,usr_favoritos);
}

function getItemHTML(item,primero){
	var codigo 		= item[0];
	var precio 		= item[1];
	var direccion 	= item[2];
	var entre_calles= item[3];
	var operacion 	= Lang=="es"?(item[4]=="VE"?"Venta":"Alquiler"):(item[4]=="VE"?"Sale":"Rent");
	var producto 	= item[5];
	var barrio 		= item[6];
	var ambientes 	= item[7];
	var sup 		= item[8];
	var moneda 		= item[9];
	var fotos 		= item[10];
	var rel 		= getRel(codigo, fotos);
	if(primero){
		var clase= "item here";
	}else
		var clase= "item";
	var foto = getFotos(fotos);
	//Seteo como foto la que primero encuentre, primero me fijo si hay fotos de tipo 'foto'(foto[0]), despues si hay de tipo 'plano'(foto[1]) y por ultimo de tipo mapa(foto[2])
	if(isArray(foto[0])&&foto[0].length>0){
		foto = "images/foto128/"+codigo+"_"+foto[0][0];
	}else if(isArray(foto[1])&&foto[1].length>0){
		foto = "images/foto128/"+codigo+"_"+foto[1][0];
	}else if(isArray(foto[2])&&foto[2].length>0){
		foto = "images/foto128/"+codigo+"_"+foto[2][0];
	}else{
		foto = "/images/NoDispCh.gif";
	}
	var favText = Lang=="es"?rm_fav_txt_es:rm_fav_txt_en;

	var itemHTML = "<div id=\"propf_"+codigo+"\" class=\""+clase+"\" rel=\""+rel+"\">";
	itemHTML += "<div class=\"ifoto\"><a href=\"q.php?codigo="+codigo+"\" onclick=\"return get_g(this);\">"; // fixme, should be <a href=\"q.php?codigo="+codigo+"\"
	itemHTML += "<img src=\""+foto+"\" alt=\"\" width=\"128\" height=\"96\" \/><\/a>";
	itemHTML += "<\/div>";
	itemHTML += "<div class=\"idata\">";
	itemHTML += "<h4><a href=\"q.php?codigo="+codigo+"\" onclick=\"return get_g(this);\">"+direccion+"<br\/><small>"+(Lang=="es"?"Entre ":"Between ")+entre_calles+"<\/small><\/a><\/h4>";
	itemHTML += "<h5>"+producto+(Lang=="es"?" en ":" for ")+operacion+(barrio!=""?", "+barrio:"")+"<\/h5>"+(ambientes!=""?"<p>"+ambientes+(Lang=="es"?" ambientes. ":" rooms. ")+sup+" m<sup>2<\/sup><\/p>":"");
	itemHTML += "<h6><var>"+(precio>=0?(moneda==1?"US$ ":"$")+precio:"")+"<br\/><small>Codigo: "+codigo+"<\/small><\/var>";
	itemHTML += "<kbd><img alt=\""+favText+"\" title=\""+favText+"\" src=\"/images\/fvadd_"+Lang+"-1.gif\" onClick=\"changeFavorita(this)\"><\/kbd>";
	itemHTML += "<\/div><div class=\"cleaner\"><\/div><\/div>";
	return itemHTML;
}

//Se fija si en Resultados de Busqueda hay una con el codigo que le paso a esta funcion, si la hay devuelvo el objeto de la imagen de favoritos de esa propiedad
function getPropFoto(codigo){
	if($('prop_'+codigo)){
		var kbd = $path($('prop_'+codigo),"KBD");
		if(kbd){
			if($path(kbd,"IMG"))
				return $path(kbd,"IMG");
		}
	}
	return false;
}

function getRel(codigo, imagenes){
	var newfotos, newplanos, newmapas;
	newfotos = newplanos = newmapas = "";
	if(/[^;]*;[^;]*;[^;]*/.test(imagenes)){
		fotos 	= imagenes.replace(/([^;]*);[^;]*;[^;]*/,'$1');
		planos 	= imagenes.replace(/[^;]*;([^;]*);[^;]*/,'$1');
		mapas 	= imagenes.replace(/[^;]*;[^;]*;([^;]*)/,'$1');
	
		fotos	= fotos.match(/[^,]+/g);
		planos	= planos.match(/[^,]+/g);
		mapas	= mapas.match(/[^,]+/g);

		newfotos = getFotosRel(codigo, fotos);
		newplanos= getFotosRel(codigo, planos);
		newmapas = getFotosRel(codigo, mapas);
	}
	return codigo+";"+newfotos+";"+newplanos+";"+newmapas;
}

function getFotos(imagenes){
		fotos 	= imagenes.replace(/([^;]*);[^;]*;[^;]*/,'$1');
		planos 	= imagenes.replace(/[^;]*;([^;]*);[^;]*/,'$1');
		mapas 	= imagenes.replace(/[^;]*;[^;]*;([^;]*)/,'$1');
	
		fotos	= fotos.match(/[^,]+/g);
		planos	= planos.match(/[^,]+/g);
		mapas	= mapas.match(/[^,]+/g);
		var fotosTodas = new Array(fotos, planos, mapas);
		return fotosTodas;
}

function getFotosRel(codigo, fotosArray){
	var fotosRel = "";
	var i=0;
	while(isArray(fotosArray)&&i<fotosArray.length&&fotosArray[i]!=""){
		var foto = codigo + "_" + fotosArray[i];
		fotosRel += foto + (i!=fotosArray.length-1?",":""); 
		i++;
	}
	return fotosRel;
}

function checkFavoritos(){
	if(usr_favoritos&&!favoritos_clicked){
		print_list_f(usr_favs);
		favoritos_clicked = true;
	}
}



function changeFavorita(what){
	var divIdata = $path(what,"<DIV");
	var encontrado = false;
	var codigo = false;
	if(divIdata){
		var divPadre = $path(divIdata,"<DIV");
		if(divPadre&&/prop(f?)_\d+/i.test(divPadre.id)){
			var codigo = divPadre.id.replace(/prop(f?)_(\d+)/i,'$2');
			//var encontrado = true;
		}
	}
	if(codigo&&!usr_favoritos){
		fav_waiting = codigo;//Registrar la propiedad en la variable fav_waiting, para que despues cuando se loguee en sus favoritos esta propiedad le sea agregada
		document.getElementById('tabberTabs').tabber.tabShow(1);
		/*//registrar 3 visitas, porque quiere agregar el inmueble a favoritos y cuenta por mas
		new Ajax.Request('estadisticas.php?propiedad='+codigo+'&cantAAgregar=3', {
			method: 'get'
		});*/
		return;
	}
	if(codigo&&/.*fvadd_(es|en)-(1|0).gif/i.test(what.src)){
	var estado = what.src.replace(/.*fvadd_(es|en)-(1|0).gif/i,'$2');
		if(estado==0){//No está en favoritos y fue clickeada, agregarla
			AjaxFavoritos("add="+codigo+"&ls=true",usr_favoritos);
			new Effect.Highlight( divPadre );
			/*//registrar 3 visitas, porque lo agregó a favoritos y cuenta por mas
			new Ajax.Request('estadisticas.php?propiedad='+codigo+'&cantAAgregar=3', {
				method: 'get'
			});*/
		}else{//Está en favoritos y fue clickeada, sacarla
		
			//estamos en resultados o en favoritos?
			if(divPadre.id.indexOf("propf")==0){ //estamos sobre favoritos
				new Ajax.Request('favoritos.php?'+"rm="+codigo, {
				method: 'get',
				onSuccess: function(){
					new Effect.Fade( divPadre )
					}
				});
	
			}else{ //estamos sobre resultados
				AjaxFavoritos("rm="+codigo+"&ls=true",usr_favoritos);
				//new Effect.Appear( divPadre );
				
				new Effect.Opacity(divPadre,
					{ duration: 2.0, 
					transition: Effect.Transitions.linear, 
					from: 0.5, to: 1.0 });
			}			
			if(ultima_propf_selec==codigo){
				ultima_propf_selec = 0;
			}
			
			var fotoProp = getPropFoto(codigo);
			if(fotoProp){
				fotoProp.src= "/images/fvadd_"+Lang+"-0.gif";/*Esto no lo tengo que hacer con el estado anterior
																		porque se encarga print_list_f*/
				fotoProp.alt = Lang=="es"?add_fav_txt_es:add_fav_txt_en;
				fotoProp.title = fotoProp.alt
				}
		}
	}	
}

function logFavOut(){
	if (isDefined('usr_favs')&&/<items>[\s\S]*?<\/items>/i.test(usr_favs)){
	var favs = usr_favs.match(/<items>[\s\S]*?<\/items>/i);
		favs = String(favs);
		favs = favs.replace(/<items>([\s\S]*?)<\/items>/i,'$1');
		$fProps = "";
		if(favs.length>0&&/<i>[\s\S]*?<\/i>/i.test(favs)){
			var items = favs.match(/<i>[\s\S]*?<\/i>/ig);
			var n = items.length;
			var i = 0;
			while(i<n){
				var item = items[i];
				item = item.replace(/<i>([\s\S]*?)<\/i>/i,'$1');
				item = item.split("|");
				var codigo = item[0];
				var fotoProp = getPropFoto(codigo);
				if(fotoProp)
					fotoProp.src= "/images/fvadd_"+Lang+"-0.gif";
				i++;
			}
		}
	}
	AjaxFavoritos("logout=true",false);
	if( isDefined('usr_favoritos')&&isDefined('fav_waiting')&&$('fList')&&$('fLogin')&&$('tabberTabs')&&$('favheader') ){
		fav_waiting = false;
		$('fList').hide();
		$('fLogin').show();
		$('tabberTabs').tabber.tabShow(0);
		$('favheader').innerHTML = Lang=="es"?login_txt_es:login_txt_en;
		$('error_mesg_fav').hide();
	}
	new Effect.Opacity($('mainuser'),{
			duration: 2.0, 
			transition: Effect.Transitions.linear, 
			from: 1.0, to: 0.0 ,
			afterFinish: function(obj){
				obj.element.hide();
			}
		});
}

