var g_realtime=null;var g_map=null;var g_map_ready_callback=null;var g_disable_realtime=false;OpenLayers.Control.WazePermalink=OpenLayers.Class(OpenLayers.Control.Permalink,{initialize:function(element,base,options){OpenLayers.Control.Permalink.prototype.initialize.apply(this,arguments);},createParams:function(center,zoom,layers){var obj=OpenLayers.Control.Permalink.prototype.createParams.apply(this,arguments);if(g_route_from.location&&g_route_to.location){obj.from_lon=g_route_from.location.lon;obj.from_lat=g_route_from.location.lat;obj.from_seg=g_route_from.seg_id;obj.to_lon=g_route_to.location.lon;obj.to_lat=g_route_to.location.lat;obj.to_seg=g_route_to.seg_id;}
return obj;},CLASS_NAME:"OpenLayers.Control.WazePermalink"});$().ready(function(){$(".panel").fadeTo(0,0.85);$(".panel").click(function(){return false;});var link_id_to_type={'toggle_events':['POLICEMAN','ACCIDENT','JAM','OTHER','MISC','WEATHERHAZARD'],'toggle_users':['user'],'toggle_traffic':function(){var traffic_layer=g_map.getLayersByName("traffic")[0];traffic_layer.setVisibility(!traffic_layer.getVisibility());},'toggle_pictures':function(){}};$(".panel a").click(function(e){var type=link_id_to_type[this.id];if(typeof type=="function")
type();else
g_realtime.toggleDisplayFilter(type);$("#"+this.id).toggleClass('checked');return false;});$.getJSON(url="/WAS/map_info",callback=function(map_info){var wms_servers=map_info.wms_servers;var wfs_server=map_info.wfs_server;init(map_info);});});var init=function(map_info){var cookie_map_info=null;var extent=null;if(hasMapCookie()){cookie_map_info=getMapPositionFromCookie();extent=new OpenLayers.Bounds();extent.extend(new OpenLayers.LonLat(cookie_map_info.left,cookie_map_info.top));extent.extend(new OpenLayers.LonLat(cookie_map_info.right,cookie_map_info.bottom));if(map_info.base_layer_type=="OSM")
extent.transform(new OpenLayers.Projection("EPSG:4326"),new OpenLayers.Projection("EPSG:900913"));}else if(hasCountryCookie()){country=readCountryCookie();$.getJSON(url="/WAS/country_map_info",data={"country":country},callback=function(json){var bounds=new OpenLayers.Bounds();if(map_info.base_layer_type=="OSM"){bounds.extend(OpenLayers.Layer.SphericalMercator.forwardMercator(json.left,json.top));bounds.extend(OpenLayers.Layer.SphericalMercator.forwardMercator(json.right,json.bottom));}else{bounds.extend(new OpenLayers.LonLat(json.left,json.top));bounds.extend(new OpenLayers.LonLat(json.right,json.bottom));}
g_map.zoomToExtent(bounds,true);});}
else{$.getJSON(url="/WAS/country_by_ip",data={},callback=function(json){if(json!=""){var bounds=new OpenLayers.Bounds();if(map_info.base_layer_type=="OSM"){bounds.extend(OpenLayers.Layer.SphericalMercator.forwardMercator(json.left,json.top));bounds.extend(OpenLayers.Layer.SphericalMercator.forwardMercator(json.right,json.bottom));}else{bounds.extend(new OpenLayers.LonLat(json.left,json.top));bounds.extend(new OpenLayers.LonLat(json.right,json.bottom));}
g_map.zoomToExtent(bounds,true);}});}
var view_map=new ViewMap(map_info);view_map.writeCookie();g_map=view_map.map;g_map.map_info=map_info;if(g_map_ready_callback)
g_map_ready_callback();$("#map").slideDown("slow");view_map.wfs_server=map_info.wfs_server;g_map_on_this_page=view_map.map;if(document.URL.indexOf("lat=")==-1&&document.URL.indexOf("lon=")==-1&&document.URL.indexOf("zoom=")==-1){if(extent)
view_map.map.zoomToExtent(extent,true);else{var lonlat=new OpenLayers.LonLat(lon=map_info.default_center.lon,lat=map_info.default_center.lat);if(map_info.base_layer_type=="OSM")
lonlat.transform(new OpenLayers.Projection("EPSG:4326"),new OpenLayers.Projection("EPSG:900913"));view_map.map.setCenter(lonlat=lonlat,zoom=9);view_map.writeCookie();}}
var params=OpenLayers.Util.getParameters();if(params.marker=="true"){view_map.map.markersLayer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(params.lon,params.lat)));}
if(g_disable_realtime)
return;if(document.URL.indexOf('rt=true')==-1){$('#loginBox').hide();g_realtime.start();return;}
$("#toggle_users").show().addClass("checked");g_realtime.toggleDisplayFilter("user");g_realtime.georss_client.server_url="/rtserver/management/ExtendedGeoRSS";$('#user_id_field').focus();if(document.URL.indexOf('showcase=true')>-1){g_realtime.georss_client.showcase=true;g_realtime.georss_client._getExtent=function(){return this.map.getMaxExtent();};g_realtime.renderer.type_filter_map={};$("#alertsPanel").hide();}
if(document.URL.indexOf('sf=')>-1){var extractParam=function(param){url_params=document.location.search;if(url_params.indexOf(param)<0)
return"";var start_idx=url_params.indexOf(param+"=")+(param.length+1);var end_idx=url_params.indexOf("&",start_idx);var value="";if(end_idx>=0)
value=decodeURIComponent(url_params.substring(start_idx,end_idx));else
value=decodeURIComponent(url_params.substring(start_idx));return value;}
g_realtime.georss_client.base_params["sf"]=extractParam("sf");}
var extractParam=function(param){url_params=document.location.search;if(url_params.indexOf(param)<0)
return"";var start_idx=url_params.indexOf(param+"=")+(param.length+1);var end_idx=url_params.indexOf("&",start_idx);var value="";if(end_idx>=0)
value=url_params.substring(start_idx,end_idx);else
value=url_params.substring(start_idx);return value;}
if(document.URL.indexOf('mu=')>-1)
g_realtime.georss_client.base_params["mu"]=extractParam("mu");if(document.URL.indexOf('ma=')>-1)
g_realtime.georss_client.base_params["ma"]=extractParam("ma");g_realtime.start();if(document.URL.indexOf('showcase=true')>-1)
g_realtime.startShowcase();}
function ViewMap(map_info){this.map_info=map_info;var objRef=this;OpenLayers.IMAGE_RELOAD_ATTEMPTS=3;var bounds=new OpenLayers.Bounds();bounds.extend(new OpenLayers.LonLat(map_info.left,map_info.top));bounds.extend(new OpenLayers.LonLat(map_info.right,map_info.bottom));this.map=new OpenLayers.Map('map',{controls:[new OpenLayers.Control.Navigation(),new OpenLayers.Control.WazePanZoomBar(),new OpenLayers.Control.Scale(),new OpenLayers.Control.WazePermalink(),new OpenLayers.Control.MousePosition()],maxResolution:.010986328125,maxExtent:bounds,numZoomLevels:10,displayProjection:new OpenLayers.Projection("EPSG:4326"),zoom:5});if(map_info.base_layer_type=="WMS"){var layer=new OpenLayers.Layer.WMS("Base Layer",map_info.map_servers,{layers:'base',format:'image/png'},{transitionEffect:"resize",buffer:1});this.map.addLayer(layer);}
if(map_info.base_layer_type=="OSM"){var layer=new OpenLayers.Layer.OSM.Mapnik("Base Layer",{displayOutsideMaxExtent:true,wrapDateLine:true});this.map.addLayer(layer);}
this.trafficLayer=new OpenLayers.Layer.TrafficLayer("traffic",map_info);this.map.addLayer(this.trafficLayer);this.nav_layer=new OpenLayers.Layer.Vector("routes");this.map.addLayer(this.nav_layer);this.map.markersLayer=new OpenLayers.Layer.Markers("Markers");this.map.addLayer(this.map.markersLayer);g_realtime=new Realtime(this.map,this.map_info);this.trafficControl=new OpenLayers.Control.TrafficControl([this.trafficLayer,this.nav_layer]);this.map.addControl(this.trafficControl);if(document.URL.indexOf('debug=true')>-1)
this.trafficControl.deactivate();else
this.trafficControl.activate();this.map.events.register("click",this.map,this.handleClick.bind(this));this.map.events.register("mouseover",this,function(e){var lonlat=this.map.getLonLatFromViewPortPx(e.xy);this.map.lastMouseLonlat=lonlat;});this.map.events.register("moveend",this,function(e){this.writeCookie();});if(!this.map.getCenter())this.map.zoomToMaxExtent();this.updateReport=function(lonlat){$('#updatePopup').jqm({overlay:0}).jqmShow();if(window.UpdateForm==undefined){$.getScript("/js/update_form.js",function(){new UpdateForm($('#update'),lonlat);});return false;}
new UpdateForm($('#update'),lonlat);return false;}
params=OpenLayers.Util.getParameters();var mistake=params.mistake?params.mistake:"false";if(mistake=="true"){oldHref=this.map.getControlsByClass("OpenLayers.Control.Permalink")[0].element.href;newHref=oldHref.replace(/mistake=true&{0,1}/,"");this.map.getControlsByClass("OpenLayers.Control.Permalink")[0].element.href=newHref;var popupWidth=200;var popupHeight=110;var pixel=this.map.getPixelFromLonLat(this.map.getCenter());pixel.x-=popupWidth;pixel.y-=popupHeight;var popupLocation=(this.map.getLonLatFromPixel(pixel));var message="אנא עדכן אותנו!"+"<br/>"+"לחץ על הנקודה במפה אותה יש לתקן ומלא את פרטי הבעיה.";mistakePopup=new OpenLayers.Popup("mistake",popupLocation,new OpenLayers.Size(popupWidth,popupHeight),"<div class='hebrew' style='font-family:arial'><h2>מצאת טעות?</h2><h3>"+message+"</h3></div>",true);mistakePopup.setBackgroundColor("#c9d7ec");mistakePopup.setOpacity(0.95);this.map.addPopup(mistakePopup,false);}
$(".olControlWazePermalink").css("top","4px");$(".olControlWazePermalink").css("right","0px");$(".olControlWazePermalink").css("left","auto");$(".olControlWazePermalink").css("bottom","auto");$(".olControlWazePermalink a").css("background-image","url(/images/transparent_logo.png)");$(".olControlWazePermalink a").css("width","104px");$(".olControlWazePermalink a").css("height","33px");$(".olControlWazePermalink a").css("display","block");$(".olControlWazePermalink a").text("");$(".olControlWazePermalink a").attr("target","_blank");}
var getMapPositionFromCookie=function(){var json=readMapCookie();if(!json.map)
json.map={left:null,right:null,top:null,bottom:null};return json.map;}
ViewMap.prototype.writeCookie=function(){var cookie_contents=readMapCookie();var extent=this.map.getExtent();if(!extent)
extent={left:null,right:null,top:null,bottom:null}
if(this.map.getProjection()=="EPSG:900913")
extent.transform(this.map.getProjectionObject(),new OpenLayers.Projection("EPSG:4326"));if(!cookie_contents.map)
cookie_contents.map={};cookie_contents.map.left=extent.left;cookie_contents.map.right=extent.right;cookie_contents.map.top=extent.top;cookie_contents.map.bottom=extent.bottom;cookie_contents.map.type=this.map_info.base_layer_type;writeMapCookie(cookie_contents);}
ViewMap.prototype.writeUpdateRequestCookie=function(name,email){var cookie_contents={name:encodeURI(name),email:email};document.cookie="update_request_user="+$.toJSON(cookie_contents)+";max-age="+(60*60*24*365)+";path=/";}
ViewMap.prototype.readUpdateRequestCookie=function(){var cookies=document.cookie;var pos=cookies.indexOf("update_request_user");if(pos==-1)
return{};var start=pos+"update_request_user".length+1;var end=cookies.indexOf(";",start);end=(end==-1)?cookies.length:end;var value=cookies.substring(start,end);var json=eval("("+value+")");return json;}
ViewMap.prototype.handleClick=function(e){var lonlat=this.map.getLonLatFromViewPortPx(e.xy);if(e.ctrlKey){window.open("/rtserver/management/QueryStreet?lon="+lonlat.lon+"&lat="+lonlat.lat);return;}
var service=this.wfs_server+"?";var bounds,minXY,maxXY;var tolerance=5;this.queryPoint=this.map.getLonLatFromPixel(new OpenLayers.Pixel(e.xy.x,e.xy.y));if(this.map_info.base_layer_type=="OSM"){tmpminXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(e.xy.x-tolerance,e.xy.y+tolerance));tmpmaxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(e.xy.x+tolerance,e.xy.y-tolerance));minXY=OpenLayers.Layer.SphericalMercator.projectInverse(new OpenLayers.Geometry.Point(tmpminXY.lon,tmpminXY.lat));maxXY=OpenLayers.Layer.SphericalMercator.projectInverse(new OpenLayers.Geometry.Point(tmpmaxXY.lon,tmpmaxXY.lat));bounds=new OpenLayers.Bounds(minXY.x,minXY.y,maxXY.x,maxXY.y);}
else{minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(e.xy.x-tolerance,e.xy.y+tolerance));maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(e.xy.x+tolerance,e.xy.y-tolerance));bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);}
var url=service+OpenLayers.Util.getParameterString({SERVICE:"WFS",VERSION:"1.0.0",REQUEST:"GetFeature",TYPENAME:'speed_cams,roads',MAXFEATURES:1,BBOX:bounds.toBBOX()});if(!this.queryInd){var img=new Image();img.src='/images/common/indicator2.gif';this.queryInd=$(img);this.queryInd.css("display","none");this.queryInd.css("position","absolute");this.queryInd.css("zIndex",5000);$(this.map.viewPortDiv).append(this.queryInd);}
this.queryInd.css("left",(e.xy.x-5)+'px');this.queryInd.css("top",(e.xy.y-5)+'px');this.queryInd.show('fast');OpenLayers.loadURL(url,null,this,this.lookupSuccess,this.lookupFailure);}
ViewMap.prototype.lookupSuccess=function(request){var doc=request.responseXML;if(!doc||request.fileType!="XML"){doc=request.responseText;}
var gml=new OpenLayers.Format.GML();var features=gml.read(doc);if(!this.vectorLayer){var style=new Object();style.strokeColor="#0000FF";style.strokeOpacity=0.8;style.strokeWidth=3;this.vectorLayer=new OpenLayers.Layer.Vector("marks",{style:style});this.map.addLayer(this.vectorLayer);this.map.setLayerIndex(this.vectorLayer,this.map.layers.length-2);}else{this.vectorLayer.removeFeatures(this.selectedFeatures);}
this.selectedFeatures=features;var info=$("<div></div>");info.html("<div class='infoFrameContents'><div class='infoFrameInnerContents'></div></div>");if(features.length==0)
$(".infoFrameInnerContents",info).append($("#wfs_no_feature_response").html());else{var feature=features[0];if(feature.fid.startsWith("roads.")){$(".infoFrameInnerContents",info).append($("#wfs_road_response").html());if(feature.attributes['street_name'])
$(".street_name",info).text(feature.attributes['street_name']);if(feature.attributes['city_name'])
$(".city_name",info).text(", "+feature.attributes['city_name']);if(feature.attributes['road_speed']){var measurement_system=$(".measurement_system").text();var base_speed_in_meters=feature.attributes['from_cross_time'];if(base_speed_in_meters&&base_speed_in_meters=="0")
$(".average_speed .number",info).text("0");else
if(measurement_system=="metric")
$(".average_speed .number",info).text(Math.round(parseInt(feature.attributes['road_length'])/parseInt(base_speed_in_meters)*3.6));else
$(".average_speed .number",info).text(Math.round(parseInt(feature.attributes['road_length'])/parseInt(base_speed_in_meters)*(3600/1609.344)));$(".average_speed .speed_unit",info).text($("."+measurement_system+"_speed").text());$(".average_speed",info).show();}
if(feature.attributes['direction']==1)
$(".two_way",info).show();else
$(".one_way",info).show();}
else{$(".infoFrameInnerContents",info).append($("#wfs_speed_cam_response").html());if(feature.fid.startsWith("speed_cam")){if(feature.attributes['cam_type']){if(feature.attributes['cam_type']==2)
$(".speeding",info).show();else
$(".fake",info).show();}
if(feature.attributes['cam_street_name']){$(".street_name",info).text(feature.attributes['cam_street_name']);$(".street_name",info).show();}
if(feature.attributes['cam_city_name']){$(".city_name",info).text(", "+feature.attributes['cam_city_name']);$(".city_name",info).show();}
if(feature.attributes['cam_speed']){$(".max_speed .number",info).text(feature.attributes['cam_speed']);$(".max_speed",info).show();}
var name=feature.attributes['user_name'];if(name.length>20)
name=name.substr(1,20);if(name.substr(0,5)!='anon_'){$(".user_link",info).text(name);$(".user_link",info).attr("href","/forum/profile.php?mode=viewprofile&u=' + feature.attributes['user_name'] + '");}
$(".user_rank",info).text("("+feature.attributes['user_rank']+")");}}}
popup=new OpenLayers.Popup.FramedCloud(id="query",lonlat=this.queryPoint,contentSize=null,contentHTML=$(info).html(),anchor=null,closeBox=true);var query_lonlat=this.queryPoint;popup.panMapIfOutOfView=true;popup.isAlphaImage=true;this.map.addPopup(popup,true);popup.autoSize=false;var adjustedHeight=adjustedHeight=$("#query_contentDiv").height();popup.setSize(new OpenLayers.Size(200,adjustedHeight));var top=parseInt($("#query_close").css("top").replace("px",""))+5;$("#query_close").css("top",top+"px");var right=parseInt($("#query_close").css("right").replace("px",""))+5;$("#query_close").css("right",right+"px");var vm=this;$("a.updateLink").click(function(e){var form=$("<form id='update_form'></form>");$(form).html($("#update_form_mold").html());$.modal(form);var update_request_user=vm.readUpdateRequestCookie();if(update_request_user.name)
$("#update_form input[name=user_name]").val(decodeURI(update_request_user.name));if(update_request_user.email)
$("#update_form input[name=user_email]").val(update_request_user.email);var lonlat=query_lonlat;if(g_map.map_info.base_layer_type=="OSM")
lonlat=OpenLayers.Layer.SphericalMercator.inverseMercator(lonlat.lon,lonlat.lat);$("#update_form input[name=lonlat]").val(lonlat.lon+","+lonlat.lat);});$("a.from_link").click(function(e){$(".find_tab#tab_route").click();g_map.removePopup(popup);var address=features[0].attributes.street_name+", "+(features[0].attributes.city_name?features[0].attributes.city_name:"");$(".input_fill[name=from]").val(address).select();g_route_from={seg_id:features[0].attributes.id,st_id:features[0].attributes.street_id,location:{lon:query_lonlat.lon,lat:query_lonlat.lat},name:address,is_from_click:true};if(g_map.map_info.base_layer_type=="OSM")
g_route_from.location=OpenLayers.Layer.SphericalMercator.inverseMercator(g_route_from.location.lon,g_route_from.location.lat);return false;});$("a.to_link").click(function(e){$(".find_tab#tab_route").click();g_map.removePopup(popup);var address=features[0].attributes.street_name+", "+(features[0].attributes.city_name?features[0].attributes.city_name:"");$(".input_fill[name=to]").val(address).select();g_route_to={seg_id:features[0].attributes.id,st_id:features[0].attributes.street_id,location:{lon:query_lonlat.lon,lat:query_lonlat.lat},name:address,is_from_click:true};if(g_map.map_info.base_layer_type=="OSM")
g_route_to.location=OpenLayers.Layer.SphericalMercator.inverseMercator(g_route_to.location.lon,g_route_to.location.lat);if($(".input_fill[name=from]").val().length>0)
navigate();return false;});this.queryInd.hide('fast');}
ViewMap.prototype.lookupFailure=function(request){this.queryInd.hide('fast');}
var submitUpdateRequest=function(){$("#update_form .error").hide();$("#update_form .success").hide();if(!$("#update_form input[name=user_name]").val()){$("#update_form .missing_name").show();return;}
email_exp=/^.+@.+\..+$/;email=$("#update_form input[name=user_email]").val();if(!email||!email.indexOf(email_exp)!=0){$("#update_form .missing_email").show();return;}
if($("#update_form input[name=type]").fieldValue()==''){$("#update_form .missing_type").show();return;}
if(!$("#update_form textarea[name=user_update]").val()){$("#update_form .missing_description").show();return;}
var q=$("#update_form").serialize();var btn=$("#update_form a.button");var prev_text=btn.text();btn.text("").append("<div class='processing'></div>");$.getJSON(url="/WAS/send_update_request",data=q+"&stam="+(new Date()).getTime(),function(json){btn.empty().text(prev_text);if(json.successful){$('#update_form .success').show();btn.hide();ViewMap.prototype.writeUpdateRequestCookie($("#update_form input[name=user_name]").val(),$("#update_form input[name=user_email]").val());}
else{$('#update_form .server').text(json.reply.message);$('#update_form .server').show();}});}