/*directory.js*/

var map,ol_wms,markers,district_layer,poi_layer;var totalZoomLevel=5;var time_out=null;var img_src="-";var size_default=new OpenLayers.Size(24,24);var offset_default=new OpenLayers.Pixel(-(size_default.w/2),-size_default.h);var default_symbol=new OpenLayers.Icon('img/tag_blank.png',size_default,offset_default);var size_camera=new OpenLayers.Size(35,34);var offset_camera=new OpenLayers.Pixel(-(size_camera.w/2),-size_camera.h);var camera_symbol=new OpenLayers.Icon('img/camera.png',size_camera,offset_camera);OpenLayers.IMAGE_RELOAD_ATTEMPTS=5;var rdblk=false;function init(){AutoSizeFramedCloud=OpenLayers.Class(OpenLayers.Popup.FramedCloud,{'autoSize':true});AutoSizeAnchored=OpenLayers.Class(OpenLayers.Popup.Anchored,{'autoSize':true});if(zoom>-1){var options_val={'numZoomLevels':totalZoomLevel,'maxResolution':0.0006866455078125,'resolutions':[0.0006866455078125,4.291534423828125e-005,1.0728836059570313e-005,5.3644180297851563e-006,2.6822090148925781e-06],controls:[new OpenLayers.Control.Attribution(),new OpenLayers.Control.Navigation({'zoomWheelEnabled':false})],eventListeners:{"zoomend":mapZoomEvent,"moveend":mapMoveEvent}}}else{var options_val={'numZoomLevels':totalZoomLevel,'maxResolution':0.0006866455078125,'resolutions':[0.0006866455078125,4.291534423828125e-005,1.0728836059570313e-005,5.3644180297851563e-006,2.6822090148925781e-06],controls:[new OpenLayers.Control.PanZoomBar(),new OpenLayers.Control.Attribution(),new OpenLayers.Control.Navigation({'zoomWheelEnabled':false})],eventListeners:{"zoomend":mapZoomEvent,"moveend":mapMoveEvent}}}map=new OpenLayers.Map('map',options_val);SPH_Layers=new OpenLayers.Layer.WMS("V3SPH",tileIp+"/tilecache.py?",{layers:'V3SPH'},{'buffer':0,'displayInLayerSwitcher':false,'attribution':''});map.addLayer(SPH_Layers);var set_zoom=3;if(zoom>-1&&zoom<=4){set_zoom=zoom}if(lat!=0&&lon!=0){map.setCenter(new OpenLayers.LonLat(lon,lat),set_zoom);if(tooltip_info!="-"){markers=new OpenLayers.Layer.Markers("Markers");map.addLayer(markers);var mrkrlonLat=new OpenLayers.LonLat(lon,lat);addLocateMarker(mrkrlonLat,tooltip_info,img_src,true)}}else{addDistrict();map.setCenter(new OpenLayers.LonLat(103.878937,1.354229),0)}}function addDistrict(){district_layer=new OpenLayers.Layer.GML("KML","kml/SPH_DISTRICT2.kml",{format:OpenLayers.Format.KML,formatOptions:{extractStyles:true,extractAttributes:true}});map.addLayer(district_layer)}function recordLog(oldx,oldy,newx,newy,action,zoom_val){document.getElementById("recLogPanel").src="http://map.sphsearch.com/mapguide/Map_Logging/record_log.php?rec_log_stat=1&oldX="+oldx+"&oldY="+oldy+"&newX="+newx+"&newY="+newy+"&action="+action+"&value1="+zoom_val+"&value2=map_directory&ruid="+ruid}function mapMoveEvent(event){if(map.getZoom()<2){if(district_layer!=null){district_layer.setVisibility(true)}if(poi_layer!=null){map.removeLayer(poi_layer)}if(map.popups.length>0){for(var i=0;i<map.popups.length;i++){if(map.popups[i].type=="kml"){map.removePopup(map.popups[i])}}}poi_layer=null;return false}else{if(district_layer!=null){district_layer.setVisibility(false)}time_out=setTimeout("setPOI()",5000)}}function mapZoomEvent(event){return}function addLocateMarker(lonLat,fullname,image,closeBox,overflow){popupClass=AutoSizeFramedCloud;var feature;var maptip_info=fullname.replace(/&lt;br&gt;/g,"<br/>");popupContentHTML="<table cellpadding='0' cellspacing='0' border='0' width='200'><tr><td width='200'>";if(image!="-"){popupContentHTML+=maptip_info+"<br/>"+"<br/> <img src="+image+" >";feature=new OpenLayers.Feature(markers,lonLat,{icon:camera_symbol})}else{popupContentHTML+=maptip_info;feature=new OpenLayers.Feature(markers,lonLat,{icon:default_symbol})}popupContentHTML+="</td></tr></table>";feature.closeBox=closeBox;feature.popupClass=popupClass;feature.data.popupContentHTML=popupContentHTML;feature.data.overflow=(overflow)?"auto":"hidden";var marker=feature.createMarker();var markerClick=function(evt){document.getElementById("map").style.cursor="default";if(this.popup==null){this.popup=this.createPopup(this.closeBox);map.addPopup(this.popup);this.popup.show()}else{this.popup.toggle()}currentPopup=this.popup;OpenLayers.Event.stop(evt)};var markerOut=function(evt){document.getElementById("map").style.cursor="url(openhand.Cur),default";this.popup.toggle()};marker.events.register("mouseover",feature,markerClick);marker.events.register("mouseout",feature,markerOut);markers.addMarker(marker)}function setPOI(){if(poi_layer!=null){map.removeLayer(poi_layer)}if(map.popups.length>0){for(var i=0;i<map.popups.length;i++){if(map.popups[i].type=="kml"){map.removePopup(map.popups[i])}}}poi_layer=null;var mapBounds=new OpenLayers.Bounds();mapBounds=map.getExtent();var min_x=mapBounds.left;var min_y=mapBounds.bottom;var max_x=mapBounds.right;var max_y=mapBounds.top;var poilist="-";poi_layer=new OpenLayers.Layer.GML("KML","get_poi.php?max_x="+max_x+"&max_y="+max_y+"&min_x="+min_x+"&min_y="+min_y+"&poi_list="+poilist+"&zoom="+map.getZoom()+"&dummy="+new Date().getTime()+"&road_blk="+rdblk,{format:OpenLayers.Format.KML,formatOptions:{extractStyles:true,extractAttributes:true}});map.addLayer(poi_layer);selectControl=new OpenLayers.Control.SelectFeature(poi_layer,{hover:true,onSelect:onFeatureSelect,onUnselect:onFeatureUnselect});poi_layer.preFeatureInsert=myStyle;map.addControl(selectControl);selectControl.activate();map.setLayerZIndex(markers,1000)}function onPopupClose(evt){selectControl.unselect(selectedFeature)}function onFeatureSelect(feature){map.setLayerZIndex(markers,0);document.getElementById("map").style.cursor="default";selectedFeature=feature;var poi_tp=feature.attributes.type;var content="<table cellpadding='0' cellspacing='0' border='0'><tr><td>";switch(poi_tp){case"MRT":content+=feature.attributes.name;content+="</td></tr></table>";break;case"TAXI":content+="-";content+="</td></tr></table>";break;case"ERP":content="<iframe src ='ERP_DATA.php?gantry_no="+feature.attributes.description+"&gantry_name="+feature.attributes.name+"' width='400px' height='250px'></iframe><br><font face='tahoma' size='1' color='red'><sup>*</sup> Note: <br>HGV = Heavy Goods Vehicle<br>VHGV = Very Heavy Goods Vehicle</font>";break;case"PETROL":content+="<b>"+feature.attributes.name+"</b><br>"+feature.attributes.description;content+="</td></tr></table>";break;case"RB":content=trim(feature.attributes.description);break;case"F1Track":content+="<table cellpadding='0' cellspacing='0' border='0' width='358'><tr><td>"+trim(feature.attributes.name)+"</td></tr></table></td></tr></table>";break;case"F1":content+=trim(feature.attributes.name)+"</td></tr></table>";break;case"news":content+="<table cellpadding='0' cellspacing='0' border='0' width='358'><tr><td>"+trim(feature.attributes.description)+"</td></tr></table></td></tr></table>";break;default:content+="<b>"+feature.attributes.name+"</b><br>"+feature.attributes.description+"<br>S "+feature.attributes.postalcode;content+="</td></tr></table>";break}feature.type=poi_tp;if(poi_tp!="TAXI"&&poi_tp!="ndpline"){if(content.search("<script")!=-1){content="Content contained Javascript! Escaped content below.<br />"+content.replace(/></g,"&lt;")}if(!IsNumeric(content)){popup=new OpenLayers.Popup.FramedCloud("chicken",feature.geometry.getBounds().getCenterLonLat(),new OpenLayers.Size(100,100),content,null,true,onPopupClose);feature.popup=popup;popup.type="kml";map.addPopup(popup)}}}function onFeatureUnselect(feature){if(feature.type=="news"){var map_coord_old=map.getCenter();var old_lon=map_coord_old.lon;var old_lat=map_coord_old.lat;recordLog(old_lon,old_lat,old_lon,old_lat,"news-click",map.getZoom())}map.setLayerZIndex(markers,1000);document.getElementById("map").style.cursor="url(openhand.Cur),default";if(feature.popup!=null){map.removePopup(feature.popup);feature.popup.destroy();feature.popup=null}}function myStyle(feature){feature.style.cursor='pointer'}function trim(passedVal){var i,j;for(i=0;i<passedVal.length;i++){if(passedVal.charAt(i)!=" ")break}for(j=passedVal.length-1;j>=0;j--){if(passedVal.charAt(j)!=" ")break}if(i>j)passedVal="";else passedVal=passedVal.substring(i,j+1);return(passedVal)}function IsNumeric(sText){var ValidChars="0123456789.";var IsNumber=true;var Char;for(i=0;i<sText.length&&IsNumber==true;i++){Char=sText.charAt(i);if(ValidChars.indexOf(Char)==-1){IsNumber=false}}return IsNumber}