Type.registerNamespace("SearchBrowse");SearchBrowse.GmDispatcher=function(){this.accoData=[];this.gmLister=null;this.gmMap=null};SearchBrowse.GmDispatcher.prototype={initialize:function(){if(this.gmLister){this.gmLister.initialize();this.accoData=[];if(this.gmLister.accoData){for(var a=0;a<this.gmLister.accoData.length;a++){if(this.gmLister.accoData[a]&&this.gmLister.accoData[a].hasCoords){this.accoData.push(this.gmLister.accoData[a])}}}}if(this.gmMap){this.gmMap.Init(this.accoData,"gmapMapContainer")}},registerLister:function(a){this.gmLister=a||new SearchBrowse.GmLister();this.gmLister.registerDispatcher(this)},registerMapComponent:function(a){this.gmMap=a||new SearchBrowse.GmMapMock();this.gmMap.registerDispatcher(this)},MouseOver:function(b,a){var c=SearchBrowse.GmDispatcher.getParams(b,a);switch(c.component){case"lister":if(this.gmMap){this.gmMap.MouseOver(c.id)}break;case"map":if(this.gmLister){this.gmLister.highlightItem(c)}break;default:Sys.Debug.trace("unknown component: "+c.component);break}},MouseOut:function(b,a){var c=SearchBrowse.GmDispatcher.getParams(b,a);switch(c.component){case"lister":if(this.gmMap){this.gmMap.MouseOut(c.id)}break;case"map":if(this.gmLister){this.gmLister.unhighlightItem(c)}break;default:Sys.Debug.trace("unknown component: "+c.component);break}},Click:function(b,a){var c=SearchBrowse.GmDispatcher.getParams(b,a);switch(c.component){case"lister":if(this.gmMap){this.gmMap.Click(c.id)}break;case"map":if(this.gmLister){this.gmLister.selectItem(jQuery.extend(c,{context:this.gmLister}))}break;default:Sys.Debug.trace("unknown component: "+c.component);break}}};SearchBrowse.GmDispatcher.getParams=function(a,c){if(!a&&!c){return}var b={elementId:"",component:"",id:"",context:""};jQuery.extend(b,a.data);jQuery.extend(b,c);if(!b.elementId){b.elementId=(a.target&&a.target.id)||"gmapListerItem_"+b.id}return b};SearchBrowse.GmDispatcher.registerClass("SearchBrowse.GmDispatcher");var gmDispatcher=null;SearchBrowse.GmLister=function(){this.accoData=null;this.gmDispatcher=null};SearchBrowse.GmLister.prototype={initialize:function(){var a=this;this.accoData=[];jQuery("#gmapListerContainer div.lister-item").each(function(){var d=jQuery(this);d.bind("mouseenter",{context:a},a.onMouseEnter);d.bind("mouseleave",{context:a},a.onMouseLeave);d.bind("click",{context:a},a.onClick);var b=SearchBrowse.Updater.buildDetailPageURL({element:this});d.find("a.lister-action-button, a.gmap-info-action").each(function(){this.href=b.detailUrl});var c=SearchBrowse.GmLister.getAccoData(this);a.accoData.push(c);d.find("h3.lister-item-title").each(function(){var g=jQuery(this);var e=0;g.find("img").each(function(){e+=jQuery(this).width()});var f=g.width()-e;g.find("strong.lister-item-display-name.meta-text-truncate").truncatePx({width:f,tail:4})})})},registerDispatcher:function(a){this.gmDispatcher=a},canBePassedToDispatcher:function(a){return(this.gmDispatcher&&a&&a.getAttribute("gmaps.hascoords")==="True")},onMouseEnter:function(b){var a=b.data.context;if(a){var c=SearchBrowse.GmLister.createParams(this,a);a.highlightItem(c);if(a.canBePassedToDispatcher(this)){a.gmDispatcher.MouseOver(b,c)}}},onMouseLeave:function(b){var a=b.data.context;if(a){var c=SearchBrowse.GmLister.createParams(this,a);a.unhighlightItem(c);if(a.canBePassedToDispatcher(this)){a.gmDispatcher.MouseOut(b,c)}}},onClick:function(b){var a=b.data.context;if(a){var c=SearchBrowse.GmLister.createParams(this,a);if(a.canBePassedToDispatcher(this)){a.gmDispatcher.Click(b,c)}a.selectItem(c)}},highlightItem:function(a){if(!a||!a.id){return}jQuery("#gmapListerItem_"+a.id).addClass("lister-selected-item");if(a.component==="map"){this.scrollInToView("gmapListerItem_"+a.id)}},unhighlightItem:function(a){if(!a||!a.id){return}jQuery("#gmapListerItem_"+a.id).removeClass("lister-selected-item")},selectItem:function(a){if(!a||!a.id||!a.elementId){return}this.highlightItem(a)},scrollInToView:function(d){var a=jQuery("#"+d+":parent");var c=jQuery("#gmapListerContainer");var b=10;a.prevAll("div.lister-item").each(function(){b+=this.clientHeight+2});c.stop();c.animate({scrollTop:b})}};SearchBrowse.GmLister.createParams=function(b,a){return{elementId:b.id,id:SearchBrowse.GmLister.getAccoId(b),component:"lister",context:a}};SearchBrowse.GmLister.getAccoId=function(a){return(a&&a.getAttribute("gmaps.id"))||""};SearchBrowse.GmLister.getAccoData=function(a){if(!a){return}return{elementId:a.id,id:a.getAttribute("gmaps.id")||"",rank:a.getAttribute("gmaps.rank")||"",htmlContent:jQuery("div.gmap-lister-item-data",a).html(),hasCoords:Boolean.parse(a.getAttribute("gmaps.hascoords")||"")||false,geoCoord:{latitude:a.getAttribute("gmaps.latitude")||"",longitude:a.getAttribute("gmaps.longitude")||""}}};SearchBrowse.GmLister.registerClass("SearchBrowse.GmLister");SearchBrowse.GmMapMock=function(){this.placeHolder="";this.accoData=[];this.gmDispatcher=null};SearchBrowse.GmMapMock.prototype={Init:function(b,a){},registerDispatcher:function(a){this.gmDispatcher=a},MouseOver:function(a){},MouseOut:function(a){},Click:function(a){}};function MapComponent(){this.map=null;this.inMarkers=[];this.gmDispatcher=null;this.currentMarker=null;this.placeHolder="";this.accoData=[];return true}MapComponent.prototype.registerDispatcher=function(a){this.gmDispatcher=a};MapComponent.prototype.Init=function(b,d){this.placeHolder=jQuery("#"+d);this.placeHolder.css("width","743px");this.placeHolder.css("height","350px");this.accoData=b;this.placeHolder.html("");var g={mapTypeIds:[google.maps.MapTypeId.ROADMAP,google.maps.MapTypeId.HYBRID,google.maps.MapTypeId.SATELLITE],style:google.maps.MapTypeControlStyle.HORIZONTAL_BAR};var j={zoom:13,streetViewControl:false,mapTypeControlOptions:g,scrollwheel:false,center:new google.maps.LatLng(37.4419,-122.1419),mapTypeId:google.maps.MapTypeId.ROADMAP};this.map=new google.maps.Map(this.placeHolder.get(0),j);var a=jQuery.proxy(function(){this.HideCurrentMarker()},this);google.maps.event.addListener(this.map,"zoom_changed",a);for(var c=0;c<this.accoData.length;c++){var h=this.accoData[c];var e=h.id;var f=new MarkerComponent();f.longitude=parseFloat(h.geoCoord["longitude"]);f.latitude=parseFloat(h.geoCoord["latitude"]);f.Map=this.map;f.inGmDispatcher=this.gmDispatcher;f.htmlContent=h.htmlContent;f.rank=h.rank;f.parent=this;f.init(e,c);this.addInMarker(f)}this.FitMapToMarkers()};MapComponent.prototype.MouseOver=function(b){var a=this.getMarkerById(b);a.doMouseOverAction(true)};MapComponent.prototype.MouseOut=function(b){var a=this.getMarkerById(b);a.doMouseOutAction()};MapComponent.prototype.Click=function(b){var a=this.getMarkerById(b);a.doMouseClickAction()};MapComponent.prototype.HideCurrentMarker=function(){if(this.currentMarker!=null){this.currentMarker.overlay.hide()}};MapComponent.prototype.SetCurrentMarker=function(a){this.currentMarker=a};MapComponent.prototype.addInMarker=function(a){this.inMarkers.push(a)};MapComponent.prototype.FitMapToMarkers=function(){if(this.map!=null){var b=this.inMarkers.length-1;var c=new google.maps.LatLngBounds();while(b>=0){var a=this.inMarkers[b];c.extend(new google.maps.LatLng(a.latitude,a.longitude));b--}this.map.fitBounds(c)}};MapComponent.prototype.getMarkerById=function(b){var a=this.inMarkers.length-1;while(a>=0){if(b==this.inMarkers[a].component_id){return this.inMarkers[a]}a--}return false};function MarkerComponent(){this.point=null;this.longitude="";this.latitude="";this.iconType=null;this.icon=null;this.component_id=null;this.Map=null;this.htmlContent=null;this.parent=null;this.inGmDispatcher=null;this.oInfoWindowOptions={maxWidth:300};this.oldZoom=null;this.rank=null;this.marker=null;this.defaultZIndex=null}MarkerComponent.prototype.init=function(b,a){this.point=new google.maps.LatLng(parseFloat(this.latitude),parseFloat(this.longitude));this.marker=this.createMarker(false,this.point,a);this.component_id=b;this.defaultZIndex=a;this.setBehaviours()};MarkerComponent.prototype.createMarker=function(b,a,c){return new google.maps.Marker({position:a,icon:this.getIcon(b),shadow:this.getShadowImage(),map:this.Map,zIndex:c})};MarkerComponent.prototype.getIcon=function(a){var b=new google.maps.MarkerImage();if(a){b.url="/App/Upload/Css/Images/SearchBrowse/gmaps/marker-active-"+this.rank+".png"}else{b.url="/App/Upload/Css/Images/SearchBrowse/gmaps/marker-inactive-"+this.rank+".png"}b.size=new google.maps.Size(30,30);b.anchor=new google.maps.Point(6,30);return b};MarkerComponent.prototype.getShadowImage=function(){var a=new google.maps.MarkerImage();a.url="/App/Upload/Css/Images/SearchBrowse/gmaps/marker-shadow.png";a.size=new google.maps.Size(43,30);a.anchor=new google.maps.Point(6,30);return a};MarkerComponent.prototype.setBehaviours=function(){this.marker.parent=this;google.maps.event.addListener(this.marker,"click",function(){this.parent.doMouseClickAction();this.parent.inGmDispatcher.Click(this.parent.getEventData())});google.maps.event.addListener(this.marker,"mouseover",function(){this.parent.doMouseOverAction(false);this.parent.inGmDispatcher.MouseOver(this.parent.getEventData())});google.maps.event.addListener(this.marker,"mouseout",function(){this.parent.doMouseOutAction();this.parent.inGmDispatcher.MouseOut(this.parent.getEventData())})};MarkerComponent.prototype.getEventData=function(){var a=[];a.data=[];a.data["id"]=this.component_id;a.data["component"]="map";a.data["context"]=this.parent;return a};MarkerComponent.prototype.setNormalMarkerImportance=function(){this.marker.setZIndex(this.defaultZIndex)};MarkerComponent.prototype.setHighMarkerImportance=function(){this.marker.setZIndex(this.defaultZIndex+10000000000)};MarkerComponent.prototype.doMouseOverAction=function(a){this.marker.setIcon("/App/Upload/Css/Images/SearchBrowse/gmaps/marker-active-"+this.rank+".png");this.setHighMarkerImportance()};MarkerComponent.prototype.doMouseOutAction=function(){this.marker.setIcon("/App/Upload/Css/Images/SearchBrowse/gmaps/marker-inactive-"+this.rank+".png");this.setNormalMarkerImportance()};MarkerComponent.prototype.doMouseClickAction=function(){this.showInfoWindow()};MarkerComponent.prototype.showInfoWindow=function(){if(typeof CustomPopupOverlay!=="undefined"){this.parent.HideCurrentMarker();if(!this.overlay){this.overlay=new CustomPopupOverlay(this.marker,this.htmlContent,this.Map,this.parent)}else{this.overlay.show()}this.parent.SetCurrentMarker(this)}};CustomPopupOverlay=function(a,b,d,c){this.marker=a;this.html=b;this.mapComponent=c;this._div=null;this.setMap(d)};CustomPopupOverlay.prototype=new google.maps.OverlayView();CustomPopupOverlay.prototype.onAdd=function(){var c=document.createElement("div");c.className="gmap-info-container";c.style.position="absolute";c.innerHTML=this.html;this._div=c;var b=this.getPanes();b.floatPane.appendChild(c);this.show();var a=jQuery.proxy(function(){this.mapComponent.HideCurrentMarker();return false},this);jQuery(".gmap-info-closebutton").bind("click",a)};CustomPopupOverlay.prototype.hide=function(){this._div.style.visibility="hidden"};CustomPopupOverlay.prototype.show=function(){this._div.style.visibility="visible";var a=this.getProjection();var c=a.fromLatLngToDivPixel(this.marker.getPosition());var b=a.fromDivPixelToLatLng(new google.maps.Point(c.x+50,c.y));this.map.panTo(b)};CustomPopupOverlay.prototype.draw=function(){var b=this.getProjection();var a=370;var d=81;var c=this._div;c.style.top=(b.fromLatLngToDivPixel(this.marker.getPosition()).y-d)+"px";c.style.left=(b.fromLatLngToDivPixel(this.marker.getPosition()).x+30)+"px"};
