function MapManager(){var A=(new OpenLayers.Format.WKT());var B="POLYGON((-18804731.947988 11778561.768568, -18178559.812363 1621764.1188529, -5576845.5829102 3044630.2228499, -7690176.5406445 12307443.484842, -7611905.0236914 12307443.484842, -18804731.947988 11778561.768568))";var C=A.read(B).geometry.getBounds();this.map=new OpenLayers.Map("map_canvas",{projection:"EPSG:900913",units:"m",maxExtent:C,restrictedExtent:C,controls:[new OpenLayers.Control.Navigation(),new OpenLayers.Control.ArgParser(),new OpenLayers.Control.Attribution(),new OpenLayers.Control.PanPanel(),new OpenLayers.Control.ZoomPanel()],onMapResize:function(){var D=this}});this.baseLayers=[new OpenLayers.Layer.Google("Google Streets",{sphericalMercator:true,displayInLayerSwitcher:false,minZoomLevel:3})];this.wmsOverlays=[new OpenLayers.Layer.WMS("philadelphia_ward_boundaries",MapServerUrl+"/wms",{srs:"EPSG:2272",width:"800",styles:"",height:"641",layers:"c70:philadelphia_ward_boundaries",format:"image/png",tiled:"true",transparent:true},{isBaseLayer:false,visibility:false,buffer:0,opacity:0.5})];this.init=function(){OpenLayers.IMAGE_RELOAD_ATTEMPTS=3;OpenLayers.Util.onImageLoadErrorColor="transparent";this.map.addControl(new OpenLayers.Control.PanPanel());this.map.addControl(new OpenLayers.Control.ZoomPanel());this.map.addLayers(this.baseLayers);this.map.addLayers(this.wmsOverlays);var D="POLYGON((-8475486.660086 4825543.934026, -8317956.399611 4825543.934026, -8317956.399611 4954773.292784, -8475486.660086 4954773.292784))";var E=A.read(D).geometry.getBounds();this.map.zoomToExtent(E,true);this.streetview=new GStreetviewPanorama(document.getElementById("streetview"));GEvent.addListener(this.streetview,"error",this.StreetViewError)};this.StreetViewError=function(D){}}var mapManager=null;$(document).ready(function(){$("#mapButton").toggle(function(){mapViewState("streetview")},function(){mapViewState("map")}).hide();$("#loadingIcon").hide();$("#btnSearch").click(function(){submitSearch()});$("#searchbox").keydown(function(B){var A=(B.keyCode?B.keyCode:(B.which?B.which:B.charCode));if(A==13){submitSearch()}});$("#btnJson").click(function(){var A=$("#searchbox").val();getJson(A)});$("#tabPollingInfo").click(function(){$("#pollInfo-wrapper").slideToggle("slow")});if($("#preResults").is(":visible")){$(".tab,#splashContainer .close").click(function(){var B=$("#searchbox").css("background-color");var A=$("#searchbox").css("color");$("#searchbox").animate({backgroundColor:"#ff9000",color:"#fff"},1).delay(500).animate({backgroundColor:B,color:A},1000)})}$("#searchbox").focus(function(B){var A=$(this);if(A.val()==A.attr("cac:defaultText")){A.val("")}});$("#searchbox").blur(function(){var A=$(this);if(A.val()==""){A.val(A.attr("cac:defaultText"))}});$("#searchbox").blur();$.extend($.tools.tooltip.conf,{tip:"#tooltipText",position:"bottom center",effect:"fade"});$("a#tabPollingInfo[title]").tooltip({position:"top left",offset:[10,40]});$("a[title]").tooltip();splashApi=$("#buttonResources").overlay({expose:{color:"#666",loadSpeed:200,opacity:0.5},api:true,oneInstance:false,top:"center"});splashApi.load();makeMap()});var map;var loadingElements=0;var searchResultPoint;function checkLoading(){if(loadingElements==0){$("#loadingIcon").hide()}else{$("#loadingIcon").hide()}}function submitSearch(){var A=$("#searchbox").val();if(A!=""&&A!=$("#searchbox").attr("cac:defaultText")){$("#loadingIcon").show();resetView();showAddress(A)}}function makeMap(){mapManager=new MapManager();mapManager.init();mapViewState("map")}function mapViewState(A){if(A==="streetview"){$("#streetview").show();$("#mapButton").removeClass("buttonStreetView").addClass("buttonMapView");mapManager.streetview.setContainer(document.getElementById("streetview"));$("#panoflash1").append('<param name="wmode" value="opaque">');$("#map_canvas").hide();_gaq.push(["_trackEvent","onlinecitizensguide","view","streetview"])}else{mapManager.streetview.hide();$("#mapButton").removeClass("buttonMapView").addClass("buttonStreetView");$("#streetview").hide();$("#map_canvas").show()}}function showAddress(A){var C=new GClientGeocoder();var B=new GLatLngBounds(new GLatLng(39.91658293581713,-75.22167205810547),new GLatLng(40.041809241441,-75.00778198242188));C.setViewport(B);C.getLocations(A,function(E){if(!E){alert(A+" not found; geocoder not responding");$("#loadingIcon").hide()}else{if(E.Status.code==200){if(E.Placemark.length>1){showDisambiguation(E.Placemark);$("#loadingIcon").hide()}else{$("#searchbox").val(E.Placemark[0].address);_gaq.push(["_trackEvent","onlinecitizensguide","search_address",E.Placemark[0].address+";"+E.Placemark[0].Point.coordinates[1]+","+E.Placemark[0].Point.coordinates[0]]);var D=E.Placemark[0].Point;searchResultPoint=D;loadAllOfficials(D);showGeocodeMarker(D);showPollingLocation(D)}}else{$("searchNoResults").text("Sorry, no results for the requested address");_gaq.push(["_trackEvent","onlinecitizensguide","search_error",$("#searchbox").val()]);$("#loadingIcon").hide()}}})}function showInfo(A){$(document).append($(A.Text))}function showGeocodeMarker(I){var H=new OpenLayers.LonLat(I.coordinates[0],I.coordinates[1]);var A=new OpenLayers.Projection("EPSG:4326");var G=new OpenLayers.Projection("EPSG:900913");H.transform(A,G);var B=new OpenLayers.Layer.Markers("Geocoded");var C=new OpenLayers.Pixel(0,-19);var J=new OpenLayers.Size(40,38);var F=new OpenLayers.Icon("content/images/marker-home.png",J,C);B.addMarker(new OpenLayers.Marker(H,F,{display:true}));var E=mapManager.map.getLayersByName("Geocoded");for(var D in E){mapManager.map.removeLayer(E[D],false)}mapManager.map.addLayer(B);$("#map_canvas").data("geocoded",H)}function showPollingLocation(A){loadingElements+=1;$("#loadingIcon").show();$.ajax({url:PollByCoordsUrl,type:"post",data:{yLat:A.coordinates[1],xLon:A.coordinates[0]},success:pollingLocationSuccess,error:pollingLocationError})}function pollingLocationSuccess(I,E,O){if(I.success==false){var J=mapManager.map.getLayersByName("PollingPlace");for(var K in J){mapManager.map.removeLayer(J[K],false)}$("#pollInfo").empty();$("#pollInfo").append($('<div>Sorry, we weren\'t able to find a polling place for your location. Please try looking up your polling place at <a href="http://www.votespa.com/portal/server.pt/community/where_to_vote/" target="_blank">Votes PA.</a></div>'));$("#mapButton").hide();mapManager.map.setCenter($("#map_canvas").data("geocoded"),14,false,true);loadingElements-=1;checkLoading();return }var N=new OpenLayers.LonLat(I.Location.XLong,I.Location.YLat);var C=new OpenLayers.Projection("EPSG:4326");var M=new OpenLayers.Projection("EPSG:900913");N.transform(C,M);var H=new OpenLayers.Layer.Markers("PollingPlace");var P=new OpenLayers.Size(40,38);var G=new OpenLayers.Pixel(0,-19);var L=new OpenLayers.Icon("content/images/marker-vote.png",P,G);H.addMarker(new OpenLayers.Marker(N,L,{display:true}));var J=mapManager.map.getLayersByName("PollingPlace");for(var K in J){mapManager.map.removeLayer(J[K],false)}mapManager.map.addLayer(H);var B=new GLatLng(I.Location.YLat,I.Location.XLong);mapManager.streetview.setLocationAndPOV(B);var F='<div><span class="pollInfoHeader">Voting District:</span><br>'+I.VtdName+"</div>";_gaq.push(["_trackEvent","onlinecitizensguide","search_poll",I.VtdName]);if(I.Ward&&I.Division){F+='<div><span class="pollInfoHeader">Ward:</span> '+I.Ward+' <span class="pollInfoHeader">Division:</span> '+I.Division+"</div>"}else{F+='<div><span class="pollInfoHeader">Precinct:</span> '+I.Precinct+"</div>"}F+='<div><span class="pollInfoHeader">Polling Place:</span><br>'+I.Description+"</div>";F+='<div><span class="pollInfoHeader">Address:</span><br>'+I.Address+"<br>";F+=I.City+", "+I.State+"  "+I.Zip+"</div>";$("#pollInfo").empty();$("#pollInfo").append($(F));$("#mapButton").show();var D=$("#map_canvas").data("geocoded");var A=new OpenLayers.Bounds(D.lon,D.lat,D.lon,D.lat);A.extend(N);mapManager.map.zoomToExtent(A);loadingElements-=1;checkLoading()}function pollingLocationError(A,C,B){$("#pollInfo").empty();$("#pollInfo").append($("<div>Sorry, we weren't able to find a polling place for your location.</div>"));loadingElements-=1;checkLoading()}function loadAllOfficials(A){loadingElements+=1;$("#infoContainerList").load(ShowAllUrl,{latitude:A.coordinates[1],longitude:A.coordinates[0]},showAllSuccess)}function getJson(A){var B=new GClientGeocoder();B.getLatLng(A,function(C){if(!C){alert(A+" not found")}else{$.ajax({url:ShowAllUrl,type:"post",data:{latitude:C.y,longitude:C.x,method:"json"},success:createTabsFromJSON});map.setCenter(C,13);var D=new GMarker(C);map.addOverlay(D);D.openInfoWindowHtml(A)}})}function showAllSuccess(E,C,H){$("#buttonPrint").removeClass("printGrayOut");$("#buttonPrint").click(function(){_gaq.push(["_trackEvent","onlinecitizensguide","view","print"]);window.print()});$("#localOfficials").show();$("#stateOfficials").show();$("#nationalOfficials").show();$(".resultsHeader").show();$("#buttonPrint").attr("title","Click here to print the results of your search.");$("#buttonPrint[title]").tooltip();$("a.helpButton[title]").tooltip({position:"bottom right"});$("a.buttonCSV[title]").tooltip({position:"top center",offset:[-10,0]});$(".buttonCSV").attr("href",GetCsvUrl+"?latitude="+searchResultPoint.coordinates[1]+"&longitude="+searchResultPoint.coordinates[0]);$(".buttonCSV").click(function(){_gaq.push(["_trackEvent","onlinecitizensguide","view","csv"])});var F=$("#tabOfficials").tabs();F.bind("tabsselect",function(J,K){$("#infoContainerSingle").hide();$(this).find("ul").show()});var B=$(".LocalContainer");if(B.length==0){$("#localOfficials").append($('<div id="noOfficials" class="officialEntry" >Sorry, Cicero does not have local elected officials for your area.</div>'));$("#tabOfficials").tabs("select",1)}else{$("#localOfficials").append($("<ul></ul>"));B.appendTo($("#localOfficials").find("ul"));var G=$("#localOfficials li[cac\\:repcity='PHILADELPHIA'][cac\\:districtid*='District']");if(G.length>0){var A=$(G[0]).attr("cac:districtid");_gaq.push(["_trackEvent","onlinecitizensguide","search_philly",A])}}var I=$(".StateContainer");if(I.length==0){$("#stateOfficials").append($('<div id="noOfficials" class="officialEntry" >Sorry, Cicero does not have state elected officials for your area.</div>'));$("#tabOfficials").tabs("select",2)}else{$("#stateOfficials").append($("<ul></ul>"));I.appendTo($("#stateOfficials").find("ul"))}var D=$(".NationalContainer");if(D.length==0){$("#nationalOfficials").append($('<div id="noOfficials" class="officialEntry" >Sorry, Cicero does not have national elected officials for your area.</div>'));$("#tabOfficials").tabs("select",0)}else{$("#nationalOfficials").append($("<ul></ul>"));D.appendTo($("#nationalOfficials").find("ul"))}$("#tabOfficials div li").each(function(K,J){$(this).click(function(){mapViewState("map");loadOfficialInfo(this);getOfficialMap(this)})});loadingElements-=1;checkLoading()}function loadOfficialInfo(B){var A=$("#officialInfo");$("#officialInfoDetails").empty();$official=$(B);$("#officialInfoDetails").append($('<div id="officialInfoPrintLeftCol"></div>'));$("#officialInfoPrintLeftCol").append($('<div class="officialName">'+$official.attr("cac:fullname")+"</div>"));if($official.attr("cac:title").indexOf("Commissioner")>-1||$official.attr("cac:title").indexOf("Controller")>-1||$official.attr("cac:title").indexOf("District Attorney")>-1){$("#officialInfoPrintLeftCol").append($('<div class="officialTitle">'+$official.attr("cac:title")+"</div>"))}else{$("#officialInfoPrintLeftCol").append($('<div class="officialTitle">'+$official.attr("cac:title")+", "+$official.attr("cac:districtid")+"</div>"))}$("#officialInfoPrintLeftCol").append($("<hr>"));if($official.attr("cac:party")!=""&&$official.attr("cac:districttype")=="LOCAL_WARD"){$("#officialInfoPrintLeftCol").append($('<div><span class="sectionHeader">Party</span><br />'+$official.attr("cac:party")+"</div>"));$("#officialInfoPrintLeftCol").append($("<hr>"))}if($official.attr("cac:email")!=""){$("#officialInfoPrintLeftCol").append($('<div><span class="sectionHeader">Email Address</span><br><a href="mailto:'+$official.attr("cac:email")+'">'+$official.attr("cac:email")+"</a></div>"));$("#officialInfoPrintLeftCol").append($("<hr>"))}if($official.attr("cac:phone")!=""){$("#officialInfoPrintLeftCol").append($('<div><span class="sectionHeader">Phone</span><br>'+$official.attr("cac:phone")+"</div>"));$("#officialInfoPrintLeftCol").append($("<hr>"))}if($official.attr("cac:fax")!=""){$("#officialInfoPrintLeftCol").append($('<div><span class="sectionHeader">Fax</span><br>'+$official.attr("cac:fax")+"</div>"));$("#officialInfoPrintLeftCol").append($("<hr>"))}$("#officialInfoDetails").append($('<div id="officialInfoPrintRightCol"></div>'));if($official.attr("cac:city")!=""){var C='<div><span class="sectionHeader">Address</span><br />'+$official.attr("cac:address1");if($official.attr("cac:address2")!=undefined){C+="<br />"+$official.attr("cac:address2")}C+="</div>";$("#officialInfoPrintRightCol").append($(C));$("#officialInfoPrintRightCol").append($("<div>"+$official.attr("cac:city")+", "+$official.attr("cac:state")+"  "+$official.attr("cac:zip")+"</div>"));$("#officialInfoPrintRightCol").append($("<hr>"))}if($official.attr("cac:url")!=""){$("#officialInfoPrintRightCol").append($('<div><span class="sectionHeader">Website URL</span><br><a target="_blank" href="'+$official.attr("cac:url")+'">'+$official.attr("cac:url")+"</a></div>"));$("#officialInfoPrintRightCol").append($("<hr>"))}A.attr("class",$official.parent().parent().attr("id"));$("#infoContainerSingle").show();$official.parent().hide();$("#buttonList").click(function(){$("#infoContainerSingle").hide();$official.parent().show()});$("#navNext").unbind().click(function(){showNext(B)});$("#navPrev").unbind().click(function(){showPrevious(B)})}function showNext(B){var A=$(B).next("#resultsOfficials li");if(A.length!=1){A=$(B).siblings().first()}loadOfficialInfo(A);getOfficialMap(A)}function showPrevious(B){var A=$(B).prev("#resultsOfficials li");if(A.length!=1){A=$(B).siblings().last()}loadOfficialInfo(A);getOfficialMap(A)}function getOfficialMap(C){var D={};var A=$(C);D.districtID=A.attr("cac:DistrictID");D.city=A.attr("cac:RepCity");D.state=A.attr("cac:RepState");D.districtType=A.attr("cac:DistrictType");D.type=A.attr("cac:Source");if(D.type=="Cicero"){$.ajax({url:GetMapUrl,type:"post",data:D,success:showOfficialMap})}else{var B=/\d+/;var E=B.exec(D.districtID)[0];$.post(BoundingBoxUrl,{ward:E,projection:"EPSG:900913"},showWardMap,"json")}}function showWardMap(C,D,A){var B=mapManager.map.getLayersByName("philadelphia_ward_boundaries");params={};params.cql_filter="ward_num = '"+C.ward+"'";B[0].mergeNewParams(params);clearDistrictOverlays();B[0].setVisibility(true);zoom=new OpenLayers.Bounds();zoom.extend(new OpenLayers.LonLat(C.left,C.bottom));zoom.extend(new OpenLayers.LonLat(C.right,C.top));mapManager.map.zoomToExtent(zoom)}function showOfficialMap(E,G,D){var B=E.MapExtent;var A=E.MapUrl;var C=new OpenLayers.Bounds(parseFloat(B.MinXMeters),parseFloat(B.MinYMeters),parseFloat(B.MaxXMeters),parseFloat(B.MaxYMeters));mapManager.overlay=new OpenLayers.Layer.Image("districtOverlay",A,C,new OpenLayers.Size(200,200),{numZoomLevels:16,isBaseLayer:false,alwaysInRange:true,projection:new OpenLayers.Projection("EPSG:900913"),units:"m",maxResolution:156543.0339});clearDistrictOverlays();mapManager.map.addLayer(mapManager.overlay);mapManager.map.raiseLayer(mapManager.overlay,-2);var F=C.scale(1.1);if(mapManager.map.maxExtent.containsBounds(F)){mapManager.map.zoomToExtent(F)}else{mapManager.map.zoomToMaxExtent()}}function createTabsFromJSON(C,D,B){var A=$.parseJSON(C)}function clearDistrictOverlays(){var C=mapManager.map.getLayersByName("districtOverlay");for(var A in C){mapManager.map.removeLayer(C[A],false)}var B=mapManager.map.getLayersByName("philadelphia_ward_boundaries");if(B.length==1){B[0].setVisibility(false)}}function clearMarkers(){var B=mapManager.map.getLayersByName("Geocoded");for(var A in B){mapManager.map.removeLayer(B[A],false)}B=mapManager.map.getLayersByName("PollingPlace");for(var A in B){mapManager.map.removeLayer(B[A],false)}}function showDisambiguation(B){var C=$('<select id="searchDisambiguationSelector"></select>');C.append($("<option>Choose an address...</option>"));for(var A in B){$option=$("<option>"+B[A].address+"</option>");$option.data("point",B[A].Point);C.append($option)}C.change(function(){var E=$(this).find("option:selected");$("#searchbox").val(E.val());var D=E.data("point");searchResultPoint=D;_gaq.push(["_trackEvent","onlinecitizensguide","search_address",$("#searchbox").val(E.val())+";"+D.coordinates[1]+","+D.coordinates[0]]);loadAllOfficials(D);showGeocodeMarker(D);showPollingLocation(D);disambiguationApi.close();$("#searchDisambiguationSelector").remove()});$("#searchDisambiguation").append(C);if(typeof (disambiguationApi)=="undefined"){disambiguationApi=$("#searchDisambiguation").overlay({expose:{color:"#666",loadSpeed:200,opacity:0.5},target:"#searchDisambiguation",api:true,top:"center",onClose:function(){$("#searchDisambiguationSelector").remove()},oneInstance:false})}disambiguationApi.load()}function resetView(){clearDistrictOverlays();clearMarkers();mapViewState("map");$("#infoContainerSingle").hide();$("#infoContainerList").show()};
