/*!
 *  Copyright 2010 Mott MacDonald. All rights reserved
 */
MOTTMAC.mapAreas=[];
MOTTMAC.map=function(u){var n="/map/wms",s,x,m,y=new OpenLayers.Projection("EPSG:900913"),D=new OpenLayers.Projection("EPSG:4326"),b=function(){return new Date().getTime()
},i=new OpenLayers.Bounds(-379568,7530040,-332959,7562144),A=new OpenLayers.Map(u,{controls:[],projection:y,displayProjection:D,units:"m",maxExtent:i}),e=new OpenLayers.Layer.OSM("OpenStreetMaps"),c=new OpenLayers.Layer.WMS("ANPR Links",n,{layers:"mm_cdmf:ANPRLinks_polyline",transparent:true,format:"image/png",tiled:true,counter:b()},{isBaseLayer:false,visibility:false,buffer:0}),C=new OpenLayers.Layer.WMS("Cycle Routes",n,{layers:"mm_cdmf:Cycle_Routes_polyline",transparent:true,format:"image/png",tiled:true,counter:b()},{isBaseLayer:false,visibility:false,buffer:0}),d=new OpenLayers.Layer.WMS("Airlink",n,{layers:"mm_cdmf:Airlink_polyline",transparent:true,format:"image/png",tiled:true,counter:b()},{isBaseLayer:false,visibility:false,buffer:0}),k=new OpenLayers.Layer.WMS("CP Areas",n,{layers:"mm_cdmf:CPAreas_region",transparent:true,format:"image/png",tiled:true,counter:b()},{isBaseLayer:false,visibility:false,buffer:0}),B=function(F,N,L){var K=function(Q){return Q.data.icon
},J=function(Q){return Q.data.label
},O=function(Q){return Q.data.isCluster?32:24
},I=function(Q){return Q.data.isCluster?-16:-12
},E=new OpenLayers.Style({externalGraphic:"${getIcon}",graphicHeight:"${getIconSize}",graphicWidth:"${getIconSize}",graphicXOffset:"${getOffset}",graphicYOffset:"${getOffset}",graphicTitle:"${getIconTitle}"},{context:{getIcon:K,getIconTitle:J,getIconSize:O,getOffset:I}}),P=new OpenLayers.StyleMap({"default":E,select:E}),M=new OpenLayers.Layer.Vector(F,{styleMap:P,visibility:L}),G=null,H=function(V){M.destroyFeatures(G);
if(V){var S=V.length;
G=new Array(S);
for(var R=0;
R<S;
R++){var U=V[R];
var Q=new OpenLayers.LonLat(U.x,U.y);
var T=Q.transform(D,y);
G[R]=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(T.lon,T.lat),N(U))
}M.addFeatures(G)
}};
return{getLayer:function(){return M
},addData:H}
},r=function(E){var F={x:E.x,y:E.y,isCluster:(E.cluster),url:null,html:"<p>Retrieving latest information.</p>",icon:null,label:null};
if(F.isCluster){F.icon="/public/images/staticinformation/info_cluster.png";
F.label="There are "+E.size+" items in this area. Zoom in for more information.";
F.counts=E.counts
}return F
},h=function(G,F){var E=function(H){var J=H.freeSpaces||"";
var I;
if((J==="No live data")||(J==="")||(J===null)){I="/public/images/carparks/car_park_"+H.type+"_unknown.png";
J="No live data"
}else{if((J==="CLOSED")||(J==="FULL")){I="/public/images/carparks/car_park_"+H.type+"_fullclosed.png";
J=H.freeSpaces
}else{I="/public/images/carparks/car_park_"+H.type+".png";
J=H.freeSpaces
}}return{icon:I,status:J}
};
return B(G,function(H){var I=r(H);
if(I.isCluster){I.icon="/public/images/carparks/car_park_cluster_"+F+".png"
}else{var J=H.item;
var K=E(J);
I.url="/public/carparks/popup.htm?id="+J.systemCodeNumber;
I.label=J.name+" - "+J.locationDescription+" - "+K.status;
I.icon=K.icon
}return I
},true)
},l=h("Car Parks","OTHER"),q=h("Park and Ride","PARK_AND_RIDE"),g=(function(){return B("Disruptions",function(E){var F=r(E);
if(F.isCluster){F.icon="/public/images/disruptionicons/disruption_cluster.png"
}else{var G=E.item;
F.url="/public/disruptions/popup.htm?id="+G.systemCodeNumber;
F.label=(G.roadNumber||"")+" "+(G.roadName||"")+" - "+G.typeDescription+" - "+G.severity+" severity";
F.icon="/public/images/disruptionicons/disruption_"+G.type+".png"
}return F
},true)
}()),z=(function(){return B("VMS",function(E){var F=r(E);
if(F.isCluster){F.icon="/public/images/vms/vms_cluster.png"
}else{var G=E.item;
F.url="/public/routeguidance/vms/popup.htm?id="+G.systemCodeNumber;
F.label="Electronic message sign - "+G.locationDescription;
F.icon=G.message=="No live data"?"/public/images/vms/vms_grey.png":"/public/images/vms/vms.png"
}return F
},true)
}()),o=(function(){return B("Static Information",function(E){var F=r(E);
if(!F.isCluster){var G=E.item;
if(G.type==="BUS_STOP"){F.url="/public/busstop/popup.htm?id="+G.id;
F.icon="/public/images/bus/bus.png";
F.label=(G.name||"Bus stop")
}else{if(G.type=="ON_STREET_PARKING"){F.url="/public/onstreet/popup.htm?id="+G.id;
F.icon="/public/images/staticinformation/info_ON_STREET_PARKING.png";
F.label=(G.name||"")
}else{F.url="/public/staticTravelInformation/popup.htm?id="+G.id;
F.icon="/public/images/staticinformation/info_"+G.type+".png";
F.label=G.description+" "+(G.roadName||"")
}}}return F
},true)
}()),a=(function(){var F=null,G=function(){if(F){A.removePopup(F);
F.destroy();
F=null
}},E=function(I,H){G();
F=new OpenLayers.Popup.FramedCloud("data",I,null,H,null,true,null);
A.addPopup(F)
};
return{show:E,hide:G}
}()),f=function(G){var E=G.feature;
var I=E.attributes;
if(I.url){a.show(E.geometry.getBounds().getCenterLonLat(),I.html);
jQuery.get(I.url,{},function(M){a.show(E.geometry.getBounds().getCenterLonLat(),M)
})
}else{if(I.isCluster){var L='<div class="popup"><p>In this area there are:</p>';
var F=[];
F.PARK_AND_RIDE={icon:"/public/images/carparks/car_park_PARK_AND_RIDE.png",desc:"Park and rides"};
F.PAY_AND_DISPLAY={icon:"/public/images/carparks/car_park_PAY_AND_DISPLAY.png",desc:"car parks"};
F.INCIDENT={icon:"/public/images/disruptionicons/disruption_INCIDENT.png",desc:"incidents"};
F.ROADWORK={icon:"/public/images/disruptionicons/disruption_ROADWORK.png",desc:"roadworks"};
F.SPECIAL_EVENT={icon:"/public/images/disruptionicons/disruption_SPECIAL_EVENT.png",desc:"road closures for special events"};
F.AIRPORT={icon:"/public/images/staticinformation/info_AIRPORT.png",desc:"airport"};
F.BLUE_BADGE={icon:"/public/images/staticinformation/info_BLUE_BADGE.png",desc:"disabled parking bays"};
F.CITY_CAR_CLUB={icon:"/public/images/staticinformation/info_CITY_CAR_CLUB.png",desc:"city car club bays"};
F.CYCLE_PARKING_AREA={icon:"/public/images/staticinformation/info_CYCLE_PARKING_AREA.png",desc:"cycle parking areas"};
F.MOTOR_CYCLE_BAY={icon:"/public/images/staticinformation/info_MOTOR_CYCLE_BAY.png",desc:"motor cycle bays"};
F.ON_STREET_PARKING={icon:"/public/images/staticinformation/info_ON_STREET_PARKING.png",desc:"on street parking locations"};
F.TAXI={icon:"/public/images/staticinformation/info_TAXI.png",desc:"taxi ranks"};
F.TRAIN_STATION={icon:"/public/images/staticinformation/info_TRAIN_STATION.png",desc:"train stations"};
F.BUS_STOP={icon:"/public/images/bus/bus.png",desc:"bus stops"};
F.VMS={icon:"/public/images/vms/vms.png",desc:"electronic message signs"};
for(var H in I.counts){L+='<p><img src="'+F[H].icon+'"></img> x '+I.counts[H]+" "+F[H].desc+"</p>"
}var J=E.geometry.getBounds().getCenterLonLat();
var K=A.getZoom()+1;
if(K>17){K=17
}L+='<p><a href="javascript:MOTTMAC.mapInstance.moveTo('+J.lon+","+J.lat+", "+K+');">Zoom in</a> for more information.</p>';
L+="</div>";
a.show(J,L)
}else{if(I.html){a.show(E.geometry.getBounds().getCenterLonLat(),I.html)
}}}},p=function(){var H=[],G;
var E=window.location.href.slice(window.location.href.indexOf("?")+1).split("&");
for(var F=0;
F<E.length;
F++){G=E[F].split("=");
H.push(G[0]);
H[G[0]]=G[1]
}return H
},w=function(E){return p()[E]
},v=function(G,I,H,F){a.hide();
var E=new OpenLayers.LonLat(G,I);
if(F){E=E.transform(new OpenLayers.Projection("EPSG:4326"),A.getProjectionObject())
}if(H){A.moveTo(E,H,true,true)
}else{A.moveTo(E,15,true,true)
}},j=function(){var I=A.getCenter();
var E={lat:I.lat,lng:I.lon,zoom:A.getZoom()};
var H=new Date();
var G=new Date(H.getFullYear(),H.getMonth(),H.getDate()+30);
var F={path:"/",expiresAt:G};
jQuery.cookies.set("mapPosition",E,F);
if(s){s()
}},t=function(){var I=[o.getLayer(),l.getLayer(),q.getLayer(),z.getLayer(),g.getLayer()];
A.addLayer(e);
A.addLayers(I);
A.addLayer(C);
A.addLayer(c);
A.addLayer(d);
A.addLayer(k);
for(var E=0;
E<I.length;
E++){I[E].events.register("featureselected",A,f)
}m=new OpenLayers.Control.WmsFeatureInfo(a);
A.addControl(m);
m.activate();
A.addControl(new OpenLayers.Control.Navigation());
A.addControl(new OpenLayers.Control.PanZoomBar());
A.addControl(new OpenLayers.Control.ZoomBox());
A.addControl(new OpenLayers.Control.MousePosition());
A.addControl(new OpenLayers.Control.Scale());
x=new OpenLayers.Control.SelectFeature(I,{hover:false,toggle:true,multiple:false,single:true});
A.addControl(x);
x.activate();
var J=w("lat");
var G=w("lng");
var H=w("zoom");
if(J&&G){v(G,J,H,true)
}else{A.zoomToExtent(i);
var F=jQuery.cookies.get("mapPosition");
if(F){v(F.lng,F.lat,F.zoom,false)
}}A.events.register("moveend",this,j)
};
t();
return{registerRefreshFn:function(E){s=E
},getZoom:function(){return A.getZoom()
},getBounds:function(){var E=A.getExtent().toArray();
var I=new OpenLayers.LonLat(E[0],E[1]);
var G=I.transform(A.getProjectionObject(),new OpenLayers.Projection("EPSG:4326"));
var H=new OpenLayers.LonLat(E[2],E[3]);
var F=H.transform(A.getProjectionObject(),new OpenLayers.Projection("EPSG:4326"));
return[G.lon,G.lat,F.lon,F.lat]
},moveTo:function(E,G,F){v(E,G,F,true)
},refresh:function(E){l.addData(E.carParks);
q.addData(E.parkAndRide);
g.addData(E.disruptions);
z.addData(E.vms);
o.addData(E.staticInfo);
c.setVisibility(E.anpr);
d.setVisibility(E.airlinkRoute);
C.setVisibility(E.cycleRoute);
k.setVisibility(E.cpareas);
c.mergeNewParams({counter:b()});
c.redraw(true)
}}
};
jQuery(document).ready(function(){var c=MOTTMAC.mapInstance=MOTTMAC.map("map"),a=function(){var e=c.getBounds();
var d=c.getZoom();
jQuery("#searchFormZoomField").val(d);
jQuery("#searchFormLeft").val(e[0]);
jQuery("#searchFormBottom").val(e[1]);
jQuery("#searchFormRight").val(e[2]);
jQuery("#searchFormTop").val(e[3]);
jQuery.post("/public/map/data.json",jQuery("#searchForm").serialize(),c.refresh,"json")
},b=function(){var d=MOTTMAC.mapAreas[jQuery("#mapArea").val()];
if(d){c.moveTo(d.x,d.y,d.z);
jQuery("#mapArea").val(-1)
}};
showParkingKey=function(){if(jQuery("#onStreetParking").is(":checked")){jQuery("#parkingAreaKey").show()
}else{jQuery("#parkingAreaKey").hide()
}};
jQuery("#moreButton").toggle(function(){jQuery("#moreButton").attr("value","Hide options");
jQuery("#mapOptional").show()
},function(){jQuery("#moreButton").attr("value","More options");
jQuery("#mapOptional").hide()
});
jQuery("#incidents").button({icons:{primary:"ui-incident-chk-box"},text:false});
jQuery("#roadworks").button({icons:{primary:"ui-roadwork-chk-box"},text:false});
jQuery("#specialEvents").button({icons:{primary:"ui-special-event-chk-box"},text:false});
jQuery("#carParks").button({icons:{primary:"ui-car-park-chk-box"},text:false});
jQuery("#parkAndRide").button({icons:{primary:"ui-park-and-ride-chk-box"},text:false});
jQuery("#ccc").button({icons:{primary:"ui-ccc-chk-box"},text:false});
jQuery("#vms").button({icons:{primary:"ui-vms-chk-box"},text:false});
jQuery("#buses").button({icons:{primary:"ui-bus-chk-box"},text:false});
jQuery("#trains").button({icons:{primary:"ui-train-chk-box"},text:false});
jQuery("#airport").button({icons:{primary:"ui-airport-chk-box"},text:false});
jQuery("#bluebadge").button({icons:{primary:"ui-bluebadge-chk-box"},text:false});
jQuery("#taxi").button({icons:{primary:"ui-taxi-chk-box"},text:false});
jQuery("#onStreetParking").button({icons:{primary:"ui-on-street-parking-chk-box"},text:false});
jQuery("#cycling").button({icons:{primary:"ui-cycling-chk-box"},text:false});
jQuery("#motorcycle").button({icons:{primary:"ui-motorcycle-chk-box"},text:false});
jQuery("#journeyTimes").button({icons:{primary:"ui-journey-times-chk-box"},text:false});
jQuery("#searchForm select").change(a);
jQuery("#searchForm input").click(a);
jQuery("#mapArea").change(b);
jQuery("#onStreetParking").click(showParkingKey);
jQuery(".legal a").click(function(f){f.preventDefault();
var d=window.open(jQuery(f.target).attr("href"),"key","width=670,height=600,toolbar=0,resizable=0,scrollbars=1");
d.focus()
});
if(jQuery.browser.msie&&(jQuery.browser.version<7)){jQuery("#ieWarning").show().delay(30000).fadeOut(2000)
}showParkingKey();
a();
c.registerRefreshFn(a)
});
