/**
 * @author Krister
 */
var vprop= new verpropiedad();

function verpropiedad() {
	
	control.modules.vpropiedades = {
		T : '<div id="divListGeneral"><p class="titulobuscarpropiedades">&nbsp;</p><form id="form_filter_vproperties" action="ajax-verpropiedades" method="post"><input type="hidden" name="func" value="do_search"><p class="subtitulocarga">Seleccione las opciones de búsqueda:</p><table width="562" border="0" align="center" cellpadding="3" cellspacing="0" class="subtitulocarga">          <tr>            <td width="146" bgcolor="#F8F8F8"><label for="inmo_id">Inmobiliaria: </label> </td>            <td width="410"><select class="config" name="inmo_id"></select></td>          </tr>          <tr>            <td bgcolor="#F8F8F8"><label for="prop_type">Tipo de propiedad: </label></td>            <td><select name="prop_type"><option value="0">Todas</option><option value="1">Casa</option><option value="2">Departamento</option><option value="3">Local comercial</option><option value="4">Oficina</option><option value="5">Terreno</option><option value="6">Campo</option><option value="7">Chacra</option><option value="8">Depósito</option><option value="9">Edificio</option><option value="10">Dúplex</option><option value="11">Tríplex</option><option value="12">Loft</option><option value="13">Loteo</option><option value="14">Galpón</option><option value="15">Forestación</option><option value="16">Hotel</option><option value="17">Fondo de comercio</option></select></td>          </tr>          <tr>            <td bgcolor="#F8F8F8"><label for="s_country">País:</label></td><td><select class="config" name="s_country">              <option value="0">Todos</option>            </select></td>          </tr>          <tr>            <td bgcolor="#F8F8F8"><label for="s_province">Provincia:</label></td><td><select class="config" name="s_province">              <option value="0">Todas</option>            </select></td>          </tr>          <tr>            <td bgcolor="#F8F8F8"><label for="s_city">Ciudad:</label></td><td><select class="config" name="s_city">              <option value="0">Todas</option>            </select></td>          </tr>          <tr>            <td bgcolor="#F8F8F8"><label for="price_from">Precio desde:</label></td>      <td><select name="price_from"><option value="0">Cualquiera</option><option value="500">500</option><option value="1000">1.000</option><option value="1500">1.500</option><option value="2000">2.000</option><option value="2500">2.500</option><option value="3000">3.000</option><option value="5000">5.000</option><option value="10000">10.000</option><option value="30000">30.000</option><option value="50000">50.000</option><option value="75000">75.000</option><option value="100000">100.000</option><option value="150000">150.000</option><option value="200000">200.000</option><option value="250000">250.000</option><option value="400000">400.000</option>                </select> hasta <select name="price_to"><option value="0">Cualquiera</option><option value="500">500</option><option value="1000">1.000</option><option value="1500">1.500</option><option value="2000">2.000</option><option value="2500">2.500</option><option value="3000">3.000</option><option value="5000">5.000</option><option value="10000">10.000</option><option value="30000">30.000</option><option value="50000">50.000</option><option value="75000">75.000</option><option value="100000">100.000</option><option value="150000">150.000</option><option value="200000">200.000</option><option value="250000">250.000</option><option value="400000">400.000</option></select>            </td>          </tr>          <tr>            <td valign="top" bgcolor="#F8F8F8"><label for="show_highlights">Mostrar: </label></td>            <td><input type="radio" name="show_highlights" value="1"/> Sólo propiedades destacadas<br /> <input type="radio" name="show_highlights" value="0"/> Sólo propiedades no destacadas<br /> <input type="radio" name="show_highlights" value="-1" checked/> Ambas </td>          </tr>          <tr>            <td bgcolor="#F8F8F8"><label for="operation_type">Tipo de operación:</label></td>            <td><select name="operation_type"><option value="0">Todas</option><option value="1">Alquiler</option><option value="2">Venta</option><option value="3">Alquiler temporal</option><option value="4">Permuta</option></select></td>          </tr>          <tr>            <td bgcolor="#F8F8F8"><label for="order_by">Ordenar por :</label></td>            <td><select name="order_by"><option value="1">Publicación</option><option value="2">Precio</option><option value="3">Visitas</option></select> de <select name="order"><option value="1">Mayor a menor</option><option value="2">Menor a mayor</option></select><input type="submit" value="BUSCAR" class="botonbuscador"/></td>          </tr>        </table>        <p>        </form><div class="properties_pager"><p class="total_properties"></p><span class="pager_txt"></span> <a href="#" name="first">Primera</a> | <a href="#" name="prev">Anterior</a> | <a href="#" name="next">Siguiente</a> | <a href="#" name="last">Última</a></div></div><div style="width : 1000px;"><div id="properties_observe"></div><div id="show_properties"><div id="props_map"></div></div></div>',
		onLoad : function() {
			vprop.pagePos=0;
			gmap.init('props_map');
		}
	};
	
	this.pagePos=0;
	this.totalPages=0;
	this.total=0;
	this.template='<div class="prop_observe_elem"><input type="hidden" name="code" /><input type="hidden" name="operation_type" /><input type="hidden" name="lat" /><input type="hidden" name="lngt" /><div class="vprop_list1">        <p class="prop_icons"></p><p><a href="javascript:void(0);"><img src="" /></a></div><div class="vprop_list2"><p><a name="prop_title" href="javascript:void(0);"></a></p><p name="prop_price"></p><p name="prop_optype"></p></div></div>';
	this.bigTemplate='<div class="bigprop"><div class="bigprop_title"><p name="bigprop_title" style="font-size:14px;color:#990000"></p><span class="bigprop_logo" name="inmologo"><img/></span></div><div class="bigpropl"><a class="pagerLeft" href="javascript:;" name="imgPageL"></a><img /><a class="pagerRight" href="javascript:;" name="imgPageR"></a></div><div class="bigpropr"><p><span class="subtituloslistado">Precio:</span> <span name="price" class="preciofichamapa"></span></p><p><span class="subtituloslistado">Dirección:</span> <span name="location" class="direccionenmapa"></span></p></div><div class="bigprop_foot"><p class="viewProplegend" name="legend"></p>    <p class="viewPropActs"><a href="javascript:;" target="_blank" name="viewImpression">Ver Ficha para Imprimir</a> | <a href="javascript:;" class="open_form_contact">Contactar</a></p></div></div>';
	this.formContactTemplate='<div class="opener"><div class=""><p>Contactar con inmobiliaria <a name="close_form" href="javascript:;">X</a></p><div id="error_form_property_contact" class="div_error"></div><form id="form_property_contact" action="ajax-verpropiedades" method="post"><input type="hidden" name="func" value="doContact" /><input type="hidden" name="prop_id" /><p><label for="name">Nombre: </label> <input type="text" name="name" /></p><p><label for="phone">Teléfono: </label> <input type="text" name="phone" /></p><p><label for="email">Email: </label> <input type="text" name="email" /></p><p><label for="msg">Mensaje: </label> <input type="text" name="msg" /></p><input type="submit" value="Enviar" /></form></div></div>';
	this.searchParams='';
	this.imgOb=[];
	this.imgPos= 0;
	
	control.save_forms.form_filter_vproperties = {
		func : 'vprop.serializeSearchParams',
		responseFunc : function(data) {
			vprop.pagePos=0;
			vprop.getSearchResult(data);
		}
	};
	control.save_forms.form_property_contact = {
		v : {
			name : 'range(3)(40),alphanumeric(0)',
			msg : 'range(5)(1000)',
			email : 'exp(0)'
		},
		responseFunc : function(data) { 
			if(data.result == "valid") {
				var v=$(".opener");
				v.animate({height : '30px'},300,function() {
					v.html("El contacto ha sido enviado");
					setTimeout(function() {
						vprop.hideFormContact();
					},2000);
				});
			} else {
				alert("El contacto no ha podido ser enviado. Por favor comprueba los datos.")
			}
		}
	};
	
	this.serializeSearchParams=function() {
		vprop.searchParams=$("#form_filter_vproperties").serialize();
		return "do_request";
	};
	
	this.getSearchResult = function (data) { 
	
		gmap.center = false;
		vprop.serializeSearchParams();
		$("#properties_observe").html("");
		vprop.totalPages=data.properties.total;
		vprop.total=data.properties.total_results;
		vprop.disposeListPager();
		pos=0;
		while(data.properties[pos] != null) {
			var Ob=data.properties[pos];
			var html=$(vprop.template);
			html.attr("name",Ob.id);
			html.find("input[name='code']").val(Ob.id);
			html.find("input[name='operation_type']").val(Ob.opType);
			html.find("input[name='lat']").val(Ob.map.lat);
			html.find("input[name='lngt']").val(Ob.map.lngt);
			html.find("img").attr("src",control.parseImg(Ob.img,50));
			html.find("a[name='prop_title']").text((Ob.name.length > 20) ? Ob.name.substring(0,17)+'...' : Ob.name);
			html.find("p[name='prop_price']").text(Ob.price);
			html.find("p[name='prop_optype']").text(Ob.opName);
			
			html.bind('click',function(){
				vprop.openProperty($(this).attr("name"));
			});
			
			if (Ob.map.lat != "nomap" && Ob.map.lngt != "nomap") {
				html.find("p.prop_icons").append('<img src="img/globe16.png" alt="Mapa" title="Mapa"/>');
			}
			if(Ob.video == 1) {
				html.find("p.prop_icons").append('<img src="img/video32.png" alt="Video" title="Video"/>');
			}
			
			$("#properties_observe").append(html);
			
			if(Ob.map.lat != "nomap" && Ob.map.lngt != "nomap") {
				
				if(!gmap.center){
					gmap.center = [Ob.map.lat,Ob.map.lngt];
				}
				
				gmap.newMarker({
					id : Ob.id,
					lat : Ob.map.lat,
					lngt : Ob.map.lngt,
					opType : Ob.opType ,
					propType : Ob.propType
				});
			}
			
			pos=pos+1;
		}
		
		gmap.setCenter();
		gmap.compose();
		
		$("#properties_observe , .show_properties").css({ visibility : "visible"});
	};
	
	this.openProperty = function(id) { 
		ajax.request('ajax-verpropiedades/openProperty',"POST",'target='+id,function(data){
			vprop.parseBigProperty(data.property);
		});
	};
	
	this.disposeListPager = function() {
		var total=vprop.totalPages;
		$(".pager_txt").html("");
		$(".properties_pager a").unbind();
		if(total > 0) {

			var pgtxt=''+(vprop.pagePos+1)+' de '+total;
			$(".pager_txt").html(pgtxt);
			$(".total_properties").html('<span id="total_results_q">'+vprop.total+"</span> resultados encontrados.")
			var pgOb=$(".properties_pager");
			pgOb.find("a[name='first']").bind('click',{mode : 'first'},vprop.pagerProperties);
			pgOb.find("a[name='prev']").bind('click',{mode : 'prev'},vprop.pagerProperties);
			pgOb.find("a[name='next']").bind('click',{mode : 'next'},vprop.pagerProperties);
			pgOb.find("a[name='last']").bind('click',{mode : 'last'},vprop.pagerProperties);
			
		} else {
			$(".pager_txt").html("<p>No se han encontrado resultados para esta búsqueda</p>");
			$(".total_properties").html('');
		}
	};
	
	this.pagerProperties = function (e) { 
		var mode=e.data.mode;
		var total=vprop.totalPages;
		var pos=vprop.pagePos;
		var ins=1;
		if(total > 1) {
			if(mode == "first" && pos != 0) {
				vprop.pagePos=0;
			} else if(mode == "prev") {
				if(pos == 0) {
					vprop.pagePos=total-1;
				} else {
					vprop.pagePos--;
				}
			} else if(mode == "next") {
				if(pos == total-1) {
					vprop.pagePos=0;
				} else {
					vprop.pagePos++;
				}
			} else if(mode == "last" && pos != total-1) {
				vprop.pagePos=total-1;
			} else {
				ins=0;
			}
		} else {
			ins=0;
		}

		if(ins == 1) {
			ajax.request('ajax-verpropiedades','POST',vprop.searchParams+'&pos='+vprop.pagePos+'&reqid=form_filter_vproperties',function(data){
				gmap.clear();
				vprop.getSearchResult(data);
			});
		}
	};
	
	this.parseBigProperty = function(Ob) {
		
		var html=$(vprop.bigTemplate);
		
		$("#overlayDiv").remove();
		vprop.imgOb=Ob.img;
		html.find("p[name='bigprop_title']").attr("id","bigp"+Ob.id);
		html.find("p[name='bigprop_title']").text(Ob.name);
		html.find(".bigpropl img").eq(0).attr("src",control.parseImg(Ob.img[0],150)).hover(vprop.lightImg);
		html.find("span[name='price']").text(Ob.price);
		html.find("span[name='location']").text(Ob.street);
		html.find("span[name='inmologo'] img").attr({
			src : "fotos/inmo/"+Ob.inmoId+".jpg",
			title : Ob.inmoName,
			alt : Ob.inmoName
		});
		if(Ob.video != 0) {
			html.find(".bigpropl").append('<object width="200" height="165"><param name="movie" value="http://www.youtube.com/v/'+Ob.video+'&hl=es_ES&fs=1&color1=0xe1600f&color2=0xfebd01"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'+Ob.video+'&hl=es_ES&fs=1&color1=0xe1600f&color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="200" height="165"></embed></object>');
		}
		
		pos=0;
		while(Ob.sType[pos] != null) {
			
			if(Ob.sType[pos].val != '' && Ob.sType[pos].val != 0 && Ob.sType[pos].val != null) {
				html.find(".bigpropr").append('<p><b class="t_label">'+Ob.sType[pos].label+'</b> <span class="t_detail">'+Ob.sType[pos].val+'</span></p>');
			}
			pos++;
		}
		
		if(Ob.detail.length > 1) {
			html.find(".bigpropr").append('<p><b class="t_label">Detalle: </b></p><p class="t_detail">'+Ob.detail+'</p>');
		}
		
		html.find("a[name='viewImpression']").attr("href",control.host+'impression/view/target='+Ob.id);
		html.find(".open_form_contact").attr("name",Ob.id).attr('onClick','vprop.displayFormContact(this)');
		
		if(Ob.img.length < 2) {
			html.find("a[name='imgPageR']").remove();
			html.find("a[name='imgPageL']").remove();
		} else {
			html.find("a[name='imgPageL']").attr('onClick',"vprop.pagerImages('prev',this);");
			html.find("a[name='imgPageR']").attr('onClick',"vprop.pagerImages('next',this);");
		}
		
		if(Ob.map.lat == "nomap" || Ob.map.lngt == "nomap") {
			var mpos=$("#props_map").offset();
			$('<div id="overlayDiv"></div>').css({position : 'absolute' , 
				background : '#FFFFFF',
				left: mpos.left ,
				top : mpos.top ,
				width : $("#props_map").width(),
				height : $("#props_map").height()})
			.appendTo("#content");
			html.find("p[name='legend']").text(" ");
			html.addClass("nomapProp");
			html.css({position : 'absolute' , 
				background : '#FFFFFF',
				left: mpos.left ,
				top : mpos.top ,
				width : $("#props_map").width()});
			$(".bigprop").remove();
			$("body").append(html);
		} else {
			html.find("span[name='legend']").remove();
			var pt=new GLatLng(Ob.map.lat,Ob.map.lngt);
			gmap.map.panTo(pt);
			$(".bigprop").remove();
			gmap.map.openInfoWindowHtml(pt,'<div id="onmapProp">'+html.html()+'</div>');
			setTimeout(function(){
				$("#onmapProp").html("").append(html);
			},100);
		}
		
	};
		
	this.pagerImages= function(mode,ob) { 
		
		var total=vprop.imgOb.length;
		if(mode == 'prev') {
			if(vprop.imgPos == 0) {
				vprop.imgPos = total-1;
			} else {
				vprop.imgPos--;
			}
		} else if(mode == 'next') {
			if(vprop.imgPos == total-1) {
				vprop.imgPos=0;
			} else {
				vprop.imgPos++;
			}
		}
		
		$(ob).parent().find("img").attr("src",control.parseImg(vprop.imgOb[vprop.imgPos],150));
		
	};
	
	this.hideFormContact = function() {
		$(".opener").slideUp(300,function() {
			$(this).remove();
		});
	};
	
	this.displayFormContact = function(ob) {
		var pos = $(ob).offset();
		var form=$(vprop.formContactTemplate);
		form.find("input[name='prop_id']").val($(ob).attr("name"));
		form.find("a[name='close_form']").bind('click',vprop.hideFormContact);
		form.css({ zIndex : '1000' , top: pos.top+'px' , left: (pos.left-100)+'px' });
		form.slideUp(1);
		$("body").append(form);
		ajax.forms(".opener");
		form.slideDown(300);
	};
	
	this.lightImg=function(){
		var img=$(this);
		var pos=$(this).offset();
		var dim = {
			w : parseInt(img.width()) , 
			h : parseInt(img.height())
		};
		var srcP=new String(img.attr("src")).replace('/150/','/500/');
		
		
		//lImg=$('<img id="lightImg" width="'+(dim.w*2)+'px" height="'+(dim.h*2)+'px" src="'+img.attr("src")+'">')
		lImg=$('<img id="lightImg" src="'+srcP+'">')
		.attr("class","lightImg")
		.css({ 
			position : "absolute" , 
			zIndex : 1000,
			left: pos.left-parseInt(dim.w/2),
			top : pos.top-parseInt(dim.h/2),
			opacity : '0.0'
		}).bind('mouseout',function(){
			$(this).animate({opacity : "0.0"},350,function(){
				$(this).remove();
				img.parents(".bigprop").eq(0).find("object").css({ visibility : "visible"});
			});
		});
		
		img.parents(".bigprop").eq(0).find("object").css({ visibility : "hidden"});
		lImg.prependTo("body").animate({opacity : "1.0"},450);
		
		
	};
}