var MAXZOOMLEVEL=15;var INFOWINDOWMAXWIDTH=400;var AIRPORT={DE:"FLUGHAFEN"};var MAINSTATION={DE:"HAUPTBAHNHOF"};var resourceBundleBooking={de:"BUCHEN",en:"BOOKING"};var adress;var myPos;var airportPos;var response;var markers=null;var distances=null;var map=null;var gLatLngBounds;var geocoder=new GClientGeocoder();var toCityCenter;var toAirport;var toMainStation;var cityMarker=null;var canvasId="";var distanceId="";var geoData=null;var mapIndicator=-1;var count=0;function gMap_init(canvas){ty_log("Begin with ty_initialize()");var o_size=new GSize(jQuery("#gmapView").width()-2,330);ty_log("Initialize map canvas with "+o_size.toString());if(map==null){map=new GMap2(document.getElementById(canvas),{size:o_size});map.setUIToDefault();map.setCenter(new GLatLng(0,0),0);map.enableContinuousZoom();map.disableScrollWheelZoom();map.addControl(new GOverviewMapControl())}markers=new Array();geoData=new Array();distances=new Array();geocoder=new GClientGeocoder();geocoderDistance=new GClientGeocoder();gLatLngBounds=new GLatLngBounds();ty_log("End with ty_initialize()")}function ty_clearMarkers(){ty_log("Begin with ty_clearMarkers()");map.clearOverlays();if(markers&&markers.length!=0){ty_log(markers.length+" are moved.");markers=new Array();ty_log("New markers array created.");distances=new Array()}geoData=new Array();gLatLngBounds=new GLatLngBounds();ty_log("End with ty_clearMarkers()")}function ty_getTyMarkerOptions(index,name){var hotelIcon=new GIcon(G_DEFAULT_ICON);hotelIcon.image="http://cdn.trustyou.com/site/map/"+(index+1)+".png";ty_log("Hotel image: "+hotelIcon.image);markerOptions={icon:hotelIcon,title:name};return markerOptions}function ty_getStarImg(stars){strbuf="";starImg="<img src='http://cdn.trustyou.com/site/v30/star-b.gif' />";for(i=0;i<stars;i++){strbuf+=starImg}return strbuf}function ty_openToolTip(index,name,stars,addr,seal){ty_log("Marker at "+index+"-"+markers.length);var myHtml="<table><tr><td><b>"+name+"</b></td><td><img src='"+seal+"' /></td></tr><tr>"+addr+"</tr><tr>"+ty_getStarImg(stars)+"</tr></table>";if(markers[index]!=null){markers[index].openInfoWindowHtml(myHtml,{maxWidth:INFOWINDOWMAXWIDTH})}}function ty_closeToolTip(index){if(markers[index]!=null){markers[index].closeInfoWindow()}}function ty_centerMapOnPlace(index){map.setZoom((map.getZoom()+3)>MAXZOOMLEVEL?MAXZOOMLEVEL:(map.getZoom()+3));map.panTo(markers[index].getPoint())}function ty_renderMap(data,canvas,n,lang){ty_log("Enter ty_renderMap");if(!data||jQuery("#gmapCvs").height()==0){ty_log("Empty data or map canvas doesn't exist.");blendMap();return null}blendMap();gMap_init(canvas);ty_clearMarkers();ty_log("Spawn map data fetched from server, length = "+data.length);ty_log("data[0] is: "+data[0]);ty_log("data[1] is: "+data[1]);for(var i=0;i<data[0].length;i++){geoData[i]=data[0][i];ty_log("geoData["+i+"]"+geoData[i])}for(var i=0;i<(geoData.length/2);i++){if((geoData[2*i]!=0)&&(geoData[2*i+1]!=0)){ty_log("Verified geo code, create latlng with: "+geoData[2*i]+" | "+geoData[2*i+1]);latlng=new GLatLng(geoData[2*i],geoData[2*i+1]);ty_log("Latlng ["+i+"] created, extending bounds...");gLatLngBounds.extend(latlng);ty_log("Bounds center moved to: "+gLatLngBounds.getCenter()+", zoom level set to: "+map.getBoundsZoomLevel(gLatLngBounds));ty_log("Bounds extended. Creating marker...");var marker=new GMarker(latlng,ty_getTyMarkerOptions(i,data[1][i].name));ty_log("Marker "+marker.getTitle()+" created.");ty_log("seal: ");ty_log("score="+data[1][i].stats.reviewsTotal);ty_log("reviewsTotal="+data[1][i].stats.reviewsTotal);ty_log("sourcesTotal="+data[1][i].stats.sourcesTotal);ty_log("Pos="+data[1][i].stats.reviewsPos);ty_log("Neu="+data[1][i].stats.reviewsNeu);ty_log("Neg="+data[1][i].stats.reviewsNeg);ty_log("Lang="+lang);var sealHtml=generateSeal(data[1][i].stats.score,data[1][i].stats.reviewsTotal,data[1][i].stats.sourcesTotal,data[1][i].stats.reviewsPos,data[1][i].stats.reviewsNeu,data[1][i].stats.reviewsNeg,lang);var detailHtml="<a href='#h"+i+"' style='float: right; margin:5px' onclick='flashLight("+i+")'>Details...</a>";var bookingButton='<div style="background: transparent url(http://cdn.trustyou.com/site/v30/b_blank2.gif) no-repeat scroll 0 0; width: 117px; height: 32px; border: none; color: #ffffff; font-size: 14px; text-align: left; padding: 8px 0 0 8px;">'+resourceBundleBooking[lang]+"</div>";myHtml=sealHtml+'<div style="margin-left: 90px; padding-right:10px"><b>'+data[1][i].name+"</b>  "+ty_getStarImg(data[1][i].stars)+"<br/>"+data[1][i].location.street+"&nbsp;"+data[1][i].location.city+"&nbsp;"+data[1][i].location.country+'<br/></div><div style="clear:both; float: right; width: 117px;"/><a class="unlink ctrlText emphasize" href="#h'+i+'" onclick="flashLight('+i+");jQuery('#row-"+i+" .booking.emphasize.ctrlText').click();ga('/booking')\">"+bookingButton+"</a>"+detailHtml;ty_log("Html: "+myHtml);ty_log("Loc: "+latlng);marker.bindInfoWindowHtml(myHtml,{maxWidth:INFOWINDOWMAXWIDTH});ty_log("Listener added. Pushing marker to array...");markers.push({mk:marker,cx:i});ty_log("Marker pushed.")}else{ty_log("The "+(i+1)+" address is not encoded!");markers.push({mk:marker,cx:false})}}var zoom=map.getBoundsZoomLevel(gLatLngBounds);ty_log("Zoom level: "+zoom);showMap();map.checkResize();map.setCenter(gLatLngBounds.getCenter(),zoom);for(var i=0;i<markers.length;i++){ty_log("Add marker: "+i);if(!isEmpty(markers[i].mk)){map.addOverlay(markers[i].mk)}if(markers[i].cx===false){ty_log("Remove indicator "+i+": "+markers[i].mk+" - "+markers[i].cx);jQuery(".maptips a img").eq(i).css("display","none")}}if(n!=-1){if(markers[n].cx){GEvent.trigger(markers[markers[n].cx].mk,"click");mapIndicator=-1}}for(var i=0;i<data[1].length;i++){for(var prop in data[1][i]){}}}function locateInMap(n){ty_log(":::Enter locateInMap()...");if(count>10){ty_log("May count problem, stop indicate marker.");return}if(markers==null||markers.length==0){ty_log("Waiting for markers... : "+(++count));setTimeout("locateInMap("+n+")","1000")}else{ty_log("Markers found, indicating...");if(jQuery("#gmapCvs").height()==0){mapIndicator=n;ty_log("toggle gmap...");jQuery("#gmapView").toggle("fast",renderMap(),destroyMap())}else{count=0;if(markers[n].cx||markers[n].cx==0){GEvent.trigger(markers[markers[n].cx].mk,"click")}else{ty_log("The geocode of this entity is not validate.")}}}ty_log(":::Leave locateInMap().")}function destroyMap(){ty_log(":::Enter destroy map function");jQuery("#gmapCvs").hide();ty_log('Map display set to "none"');jQuery("#gmapCvsHover").show();ty_log('May cover display set to "block"');jQuery(".maptips").hide();GUnload();ty_log(":::Leave destroy map function")}function generateSeal(score,reviews,sources,pos,neu,neg,lang){ty_log("Generate seal img src string...");var src="http://analytics.trustyou.com:8080/analytics/SealGeneratorServlet?score="+score+"&reviews="+reviews+"&sources="+sources+"&pos="+pos+"&neu="+neu+"&neg="+neg+"&size=small&lang="+lang;ty_log("src:"+src);return"<div style='height:80px; float:left'><img src='"+src+"'/></div>"}function flashLight(i){for(var j=0;j<10;j++){jQuery("#h"+j).css({backgroundColor:"#ebf1fb",color:"#333333"})}jQuery("#h"+i).animate({backgroundColor:"orange",color:"white"},{duration:250})}function blendMap(){ty_log(":::Enter blend map function");jQuery("#gmapCvsHover").show();jQuery("#gmapCvs").hide();jQuery("#loading").show();ty_log(":::Leave blend map function")}function showMap(){ty_log(":::Enter show map function");jQuery(".maptips").show();jQuery("#gmapCvs").show();jQuery("#gmapCvsHover").hide();jQuery("#loading").hide();ty_log(":::Leave show map function")}function ty_showDistanceInfo(){ty_log("Begin of ty_showDistanceInfo()");geocoder.getLocations(adress,addToMap);ty_log("End of ty_showDistanceInfo()")}function addToMap(response){ty_log("addToMap()");if(GBrowserIsCompatible()){place=response.Placemark[0];var country=place.AddressDetails.Country.CountryNameCode;var city=place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;var cityCenter=city+", "+country;ty_log(cityCenter);var airport=AIRPORT[country]+", "+cityCenter;ty_log(airport);var mainStation=MAINSTATION[country]+", "+cityCenter;ty_log(mainStation);var blueIcon=new GIcon();blueIcon.image="http://cdn.trustyou.com/site/v30/hotel.png";blueIcon.shadow="http://www.google.com/mapfiles/shadow50.png";blueIcon.iconSize=new GSize(24,35);blueIcon.shadowSize=new GSize(37,34);blueIcon.iconAnchor=new GPoint(9,34);blueIcon.infoWindowAnchor=new GPoint(9,2);blueIcon.infoShadowAnchor=new GPoint(18,25);blueIcon.transparent="http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";point=new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);ty_log("point: "+point);writeDistances(cityCenter,airport,mainStation)}}function writeDistances(cc,air,ms){ty_log("writing distance...");if(cc){geocoder.getLatLng(cc,function(point1){if(point1){distance=point.distanceFrom(point1)/1000;distance=Math.round(distance*10)/10;toCityCenter=distance;document.getElementById(distanceId).innerHTML="<label>Entfernungen:</label><br /><label style='margin-left: 6px;'>Innenstadt: "+distance+" km</label>";distance=0}})}if(air){geocoder.getLatLng(air,function(point1){if(point1){distance=point.distanceFrom(point1)/1000;distance=Math.round(distance*10)/10;toAirport=distance;document.getElementById(distanceId).innerHTML+="<br /><label style='margin-left: 6px;'>Flughafen: "+distance+" km</label>";distance=0}})}if(ms){geocoder.getLatLng(ms,function(point1){if(point1){distance=point.distanceFrom(point1)/1000;distance=Math.round(distance*10)/10;toMainStation=distance;document.getElementById(distanceId).innerHTML+="<br /><label style='margin-left: 6px;'>Hauptbahnhof: "+distance+" km</label>";distance=0}})}ty_log("end of writing distance")};
