﻿var map;var xmlObj;var areaType;var browser=navigator.appName;var urlParams=location.search.substring(1).split("&");var lat=36;var lng=-86;var zoom=7;var maptype=0;var camStatus="false";var signStatus="false";var incidentStatus="false";var constStatus="false";var rdcondStatus="false";var speedStatus="false";var constToggle=1;var camToggle=1;var signToggle=1;var signToggle=1;var speedSensorToggle=1;var roadWeatherToggle=1;var tooltip=document.createElement("div");var markerGroups={"Incident":[],"Construction":[],"Camera":[],"Sign":[],"RoadWeather":[],"SpeedSensor":[],"Boundary":[]};var infoWindow;var cookiename="mapinfo";var expiredays=7;function load(){if(GBrowserIsCompatible()){var city=startCity(urlParams);if(document.cookie.length>0){cookieStart=document.cookie.indexOf(cookiename+"=");if(cookieStart!=-1){cookieStart+=cookiename.length+1;cookieEnd=document.cookie.indexOf(";",cookieStart);if(cookieEnd==-1){cookieEnd=document.cookie.length}cookietext=document.cookie.substring(cookieStart,cookieEnd);bits=cookietext.split("|");if(!city){lat=parseFloat(bits[0]);lng=parseFloat(bits[1]);zoom=parseInt(bits[2])}maptype=parseInt(bits[3]);camStatus=bits[4];signStatus=bits[5];incidentStatus=bits[6];constStatus=bits[7];rdcondStatus=bits[8];speedStatus=bits[9];if ((areaType=="Region1")||(areaType=="Region2")||(areaType=="Region3")||(areaType=="Region4")){constStatus ="true";rdcondStatus ="true";}}}map=new GMap2(document.getElementById("map"));map.setCenter(new GLatLng(lat,lng),zoom,map.getMapTypes()[maptype]);map.addControl(new GSmallMapControl(),new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(180,10)));map.addControl(new GScaleControl(),new GControlPosition(G_ANCHOR_BOTTOM_LEFT,new GSize(10,50)));map.addMapType(G_PHYSICAL_MAP);var mapControl=new GHierarchicalMapTypeControl();mapControl.clearRelationships();mapControl.addRelationship(G_SATELLITE_MAP,G_HYBRID_MAP,"Labels",true);map.addControl(mapControl,new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(10,15)));map.enableScrollWheelZoom();document.getElementById("map").appendChild(tooltip);tooltip.style.visibility="hidden";loadIncOrConst('GeoRSS/TDOTIncidentGeoRSS.xml','Image/incident.gif','Image/incident_shadow.png','Incident');if(camStatus=="true"){document.getElementById("cameraChkbox").checked="checked";loadCamOrSign('GeoRSS/TDOTCameraGeorss.xml','Image/camera.gif','Image/camera_shadow.png','Camera');camToggle=2}if(signStatus=="true"){document.getElementById("signChkbox").checked="checked";loadCamOrSign('GeoRSS/TDOTMessageGeorss.xml','Image/messagesign.gif','Image/message_shadow.png','Sign');signToggle=2}if(constStatus=="true"){document.getElementById("contructionChkbox").checked="checked";loadIncOrConst('GeoRSS/TDOTConstructionGeorss.xml','Image/roadwork.gif','Image/roadwork_shadow.png','Construction');constToggle=2}if(rdcondStatus=="true"){document.getElementById("rdCondChkbox").checked="checked";document.getElementById("RoadCon").style.display="block";loadWeatherCondition('GeoRSS/TDOTWeatherGeorss.xml','RoadWeather');loadCountyBoundary('GeoRSS/TDOTCWAGeorss.xml','RoadWeather');roadWeatherToggle=2}if(speedStatus=="true"){document.getElementById("speedChkbox").checked="checked";document.getElementById("TrafficFlo").style.display="block";loadSpeedSensor('GeoRSS/TDOTKnoxSpeedGeorss.xml','SpeedSensor');loadSpeedSensor('GeoRSS/TDOTNashSpeedGeorss.xml','SpeedSensor');loadSpeedSensor('GeoRSS/TDOTMempSpeedGeorss.xml','SpeedSensor');speedSensorToggle=2}}}function startCity(params){var response=false;for(i=0;i<params.length;i++){param=params[i].split("=");if(param[0]==="city"){switch(param[1]){case"Nashville":lat=36.166982;lng=-86.780663;zoom=12;return response=true;case"Knoxville":lat=35.99023;lng=-83.922157;zoom=12;return response=true;case"Chattanooga":lat=35.051922;lng=-85.237427;zoom=12;return response=true;case"Memphis":lat=35.129456;lng=-89.965668;zoom=11;return response=true;default:return response}}if(param[0] ==="region"){switch (param[1]){case"Region1":lat=36.19347;lng=-83.27510;zoom=9;areaType=param[1];return response=true;case"Region2":lat=35.88367;lng=-84.89254;zoom=8;areaType=param[1];return response=true;case"Region3":lat=35.91428;lng=-86.95112;zoom=8;areaType=param[1];return response=true;case"Region4":lat=35.75338;lng=-88.85706;zoom=8;areaType=param[1];return response=true;default:return response}}}return response}function loadIncOrConst(filename,image,shadow,type){var Icon=new GIcon();Icon.image=image;Icon.shadow=shadow;Icon.iconSize=new GSize(22,20);Icon.shadowSize=new GSize(50,20);Icon.iconAnchor=new GPoint(6,20);Icon.infoWindowAnchor=new GPoint(5,1);GDownloadUrl(filename+rndNumParam(),function(data,responseCode){var xmlDoc=GXml.parse(data);var firstTier=xmlDoc.documentElement.getElementsByTagName("channel");var secondtier=firstTier[0].getElementsByTagName("item");for(var i=0;i<secondtier.length;i++){var coordinates=secondtier[i].getElementsByTagName("marker")[0].firstChild.nodeValue;var ordinate=coordinates.split(" ");var point=new GLatLng(ordinate[0],ordinate[1]);var info={"point":point,"icon":Icon,"link":"","description":secondtier[i].getElementsByTagName("description")[0].firstChild.nodeValue,"img_url":"","type":type,"curr_act":""};if(type=="Construction"){info.curr_act=secondtier[i].getElementsByTagName("curract")[0].firstChild.nodeValue;map.addOverlay(createMarker(info))}if(type=="Incident"){map.addOverlay(createMarker(info))}}})}function loadCamOrSign(filename,image,shadow,type){var Icon=new GIcon();Icon.image=image;Icon.shadow=shadow;Icon.iconSize=new GSize(22,20);Icon.shadowSize=new GSize(50,20);Icon.iconAnchor=new GPoint(6,20);Icon.infoWindowAnchor=new GPoint(5,1);GDownloadUrl(filename+rndNumParam(),function(data,responseCode){var xmlDoc=GXml.parse(data);var secondtier=xmlDoc.documentElement.getElementsByTagName("entry");for(var i=0;i<secondtier.length;i++){var coordinates=secondtier[i].getElementsByTagName("marker")[0].firstChild.nodeValue;var ordinate=coordinates.split(" ");var point=new GLatLng(ordinate[0],ordinate[1]);var info={"point":point,"icon":Icon,"link":secondtier[i].getElementsByTagName("link")[0].firstChild.nodeValue,"description":secondtier[i].getElementsByTagName("summary")[0].firstChild.nodeValue,"img_url":"","type":type,"curr_act":""};if(type=="Camera"){info.img_url=secondtier[i].getElementsByTagName("imageurl")[0].firstChild.nodeValue;map.addOverlay(createMarker(info))}if(type=="Sign"){map.addOverlay(createMarker(info))}}})}function loadSpeedSensor(filename,type){GDownloadUrl(filename+rndNumParam(),function(data,responseCode){var xmlDoc=GXml.parse(data);var firstTier=xmlDoc.documentElement.getElementsByTagName("item");for(var i=0;i<firstTier.length;i++){var info={"coords":firstTier[i].getElementsByTagName("marker")[0].firstChild.nodeValue,"event_type":firstTier[i].getElementsByTagName("AverageSpeed")[0].firstChild.nodeValue,"link":"","description":firstTier[i].getElementsByTagName("title")[0].firstChild.nodeValue,"width":6,"opacity":0.7,"type":"SpeedSensor"};map.addOverlay(createPolyline(info))}})}function loadWeatherCondition(filename,type){GDownloadUrl(filename+rndNumParam(),function(data,responseCode){var xmlDoc=GXml.parse(data);var firstTier=xmlDoc.documentElement.getElementsByTagName("channel");var secondtier=firstTier[0].getElementsByTagName("item");for(var i=0;i<secondtier.length;i++){if(secondtier[i].getElementsByTagName("description")[0].firstChild.nodeValue.search(/extremely hazardous/i)!=-1){var weathertype="Extremely hazardous - red"}if(secondtier[i].getElementsByTagName("description")[0].firstChild.nodeValue.search(/patches of snow and ice/i)!=-1){var weathertype="Patches of snow and ice - yellow"}if(secondtier[i].getElementsByTagName("description")[0].firstChild.nodeValue.search(/flooded/i)!=-1){var weathertype="Flooded road"}var info={"coords":secondtier[i].getElementsByTagName("marker")[0].firstChild.nodeValue,"event_type":weathertype,"link":"","description":secondtier[i].getElementsByTagName("description")[0].firstChild.nodeValue,"width":6,"opacity":0.7,"type":type};map.addOverlay(createPolyline(info))}})}function loadCountyBoundary(filename,type){GDownloadUrl(filename+rndNumParam(),function(data,responseCode){var xmlDoc=GXml.parse(data);var firstTier=xmlDoc.documentElement.getElementsByTagName("channel");var secondtier=firstTier[0].getElementsByTagName("item");for(var i=0;i<secondtier.length;i++){if(secondtier[i].getElementsByTagName("description")[0].firstChild.nodeValue.search(/extremely hazardous/i)!=-1){var weathertype="Extremely hazardous - red"}if(secondtier[i].getElementsByTagName("description")[0].firstChild.nodeValue.search(/patches of snow and ice/i)!=-1){var weathertype="Patches of snow and ice - yellow"}if(secondtier[i].getElementsByTagName("description")[0].firstChild.nodeValue.search(/flooded/i)!=-1){var weathertype="Flooded road"}var info={"coords":secondtier[i].getElementsByTagName("marker")[0].firstChild.nodeValue,"event_type":weathertype,"link":"","description":secondtier[i].getElementsByTagName("description")[0].firstChild.nodeValue,"width":1,"opacity":0.2,"type":type};map.addOverlay(createPolygon(info))}})}function createPolyline(info){var pts=[];var ordinate=info.coords.split(" ");var headercolor="#999900";var color="";switch(info.type){case"RoadWeather":switch(info.event_type){case"Flooded road":var color="#0000ff";break;case"Extremely hazardous - red":var color="#ff0000";break;case"Patches of snow and ice - yellow":var color="#ffff00";break;default:break}break;case"SpeedSensor":if((info.event_type>0)&&(info.event_type<21)){var color="#ff0000";}else if((info.event_type>20)&&(info.event_type<36)){var color="#ffa500";}else if((info.event_type>35)&&(info.event_type<51)){var color="#ffff00";}else if(info.event_type=="NA"){info.opacity=0;}else{var color="#00ff00";}break;default:break}for(var i=0;i<ordinate.length-1;i=i+2){pts[i]=new GLatLng(parseFloat(ordinate[i]),parseFloat(ordinate[i+1]))}var polyline=new GPolyline(pts,color,info.width,info.opacity);if(info.type!="SpeedSensor"){GEvent.addListener(polyline,'click',function(para){map.openInfoWindowHtml(para,"<div style='width: 25em;'><table align='center'><tr align='center' BGCOLOR='"+headercolor+"'><td><font size='2' color='#000000'><b>"+info.type.toUpperCase()+"</b></font></td></tr><tr><td><font size='2' color='#000000'><b>"+info.description+"</b></font></td></table></div>")})}markerGroups[info.type].push(polyline);return polyline}function createPolygon(info){var pts=[];coordinates=rightTrim(info.coords);var ordinate=coordinates.split(" ");if((info.event_type=="Flooded road")&&(info.type=="RoadWeather")){var color="#0000ff";var title="CountyWide"+"  "+info.type}if((info.event_type=="Extremely hazardous - red")&&(info.type=="RoadWeather")){var color="#ff0000";var title="CountyWide"+"  "+info.type}if((info.event_type=="Patches of snow and ice - yellow")&&(info.type=="RoadWeather")){var color="#ffff00";var title="CountyWide"+"  "+info.type}var check='';for(var i=0;i<ordinate.length;i=i+2){pts[i]=new GLatLng(parseFloat(ordinate[i]),parseFloat(ordinate[i+1]))}var headercolor="#999900";var polygon=new GPolygon(pts,"#FF0000",info.width,0.8,color,info.opacity);GEvent.addListener(polygon,'click',function(para){map.openInfoWindowHtml(para,"<div style='width: 20em;'><table align='center'><tr align='center' BGCOLOR='"+headercolor+"'><td><font size='2' color='#000000'><b>"+title.toUpperCase()+"</b></font></td></tr><tr><td><font size='2' color='#000000'><b>"+info.description+"</b></font></td></table></div>")});markerGroups[info.type].push(polygon);return polygon}function rightTrim(sString){while(sString.substring(sString.length-1,sString.length)==' '){sString=sString.substring(0,sString.length-1)}return sString}function returnMarkerZ(){return 2}function returnMarker_lZ(){return 1}function createMarker(info){markerOptions={icon:info.icon,zIndexProcess:returnMarkerZ};markerOptions_l={icon:info.icon,zIndexProcess:returnMarker_lZ};var headercolor="#FDEEF4";var height="";var info_curract="";switch(info.type){case"Incident":headercolor="#FFFF00";info_curract=info.description;break;case"Construction":headercolor="#FBB117";info_curract=info.description+"</b></font></br><font size='2' color='#FF0000'>"+"<b>CURRENT ACTIVITIES:</b></Br>"+info.curr_act;break;case"Camera":headercolor="#3BB9FF";height=" height: 15em";info_curract=info.description+"<BR><img src='"+info.img_url+"' style='width: 15em; height: 15em;'/><BR>Click for larger image";break;case"Sign":headercolor="#E9CFEC";height=" height: 15em";info_curract="<A HREF='"+info.link+"'target='_blank'>"+info.description+"</A><BR><iframe src='"+info.link+"' style='width: 25em; height: 15em;'/>";break;default:break}var marker=new GMarker(info.point,markerOptions);var marker_l=new GMarker(info.point,markerOptions_l);marker.tooltip="<div style='width: 25em;"+height+"'><table align='center' border = '1'><tr align='center' BGCOLOR='"+headercolor+"'><td><font size='2' color='#000000'><b>"+info.type.toUpperCase()+"</b></font></td></tr><tr><td  BGCOLOR='#fffafa'><font size='2' color='#000000'><b>"+info_curract+"</b></font></td></table></div>";GEvent.addListener(marker,"mouseover",function(){showTooltip(marker,marker_l)});GEvent.addListener(marker,"mouseout",function(){marker_l.hide();tooltip.style.visibility="hidden"});if(info.type=="Camera"){GEvent.addListener(marker,"click",function(){if(window['infoWindow']!=undefined)infoWindow.close();infoWindow=window.open(info.link,'','width=650,height=600')})}else{GEvent.addListener(marker,"click",function(){marker.openInfoWindowHtml("<div style='width: 25em;"+height+"'><table align='center'><tr align='center' BGCOLOR='"+headercolor+"'><td><font size='2' color='#000000'><b>"+info.type.toUpperCase()+"</b></font></td></tr><tr><td><font size='2' color='#000000'><b>"+info_curract+"</b></font></td></table></div>")})}markerGroups[info.type].push(marker);return marker}function showTooltip(marker,marker_l){marker_l.getIcon().image='Image/target.png';marker_l.getIcon().iconSize=new GSize(30,30);marker_l.getIcon().iconAnchor=new GPoint(10.5,23);map.addOverlay(marker_l);tooltip.innerHTML=marker.tooltip;var theProjection=map.getCurrentMapType().getProjection();var point=theProjection.fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());var offset=theProjection.fromLatLngToPixel(marker.getPoint(),map.getZoom());var anchor=marker.getIcon().iconAnchor;var width=marker.getIcon().iconSize.width;var posAnchor=G_ANCHOR_BOTTOM_LEFT;var offsetWidth=offset.x-point.x-anchor.x+width;var offsetHeight=-offset.y+point.y+anchor.y;var mapSize=map.getSize();var totalHeight=offsetHeight+240;var totalWidth=offsetWidth+400;if((totalWidth>mapSize.width)&&(totalHeight>mapSize.height)){var pos=new GControlPosition(posAnchor,new GSize(offsetWidth+anchor.x-width-400,offsetHeight-(totalHeight-mapSize.height)-9))}else if(totalWidth>mapSize.width){var pos=new GControlPosition(posAnchor,new GSize(offsetWidth+anchor.x-width-400,offsetHeight))}else if(totalHeight>mapSize.height){var pos=new GControlPosition(posAnchor,new GSize(offsetWidth,offsetHeight-(totalHeight-mapSize.height)-9))}else{var pos=new GControlPosition(posAnchor,new GSize(offsetWidth,offsetHeight))}pos.apply(tooltip);tooltip.style.visibility="visible"}function mymouseout(){tooltip.style.visibility="hidden"}function myclick(i){gmarkers[i].openInfoWindowHtml(htmls[i])}function toggleGroup(type,cb){for(var i=0;i<markerGroups[type].length;i++){var marker=markerGroups[type][i];if(marker.isHidden()&&cb.checked){marker.show()}else{marker.hide()}}}function CheckBox1Clicked(cb){toggleGroup('Incident',cb)}function CheckBox2Clicked(cb){if(constToggle==1){loadIncOrConst('GeoRSS/TDOTConstructionGeorss.xml','Image/roadwork.gif','Image/roadwork_shadow.png','Construction');constToggle=2}else{toggleGroup('Construction',cb)}}function CheckBox3Clicked(cb){if(roadWeatherToggle==1){loadWeatherCondition('GeoRSS/TDOTWeatherGeorss.xml','RoadWeather');loadCountyBoundary('GeoRSS/TDOTCWAGeorss.xml','RoadWeather');roadWeatherToggle=2}else{toggleGroup('RoadWeather',cb)}}function CheckBox4Clicked(cb){if(camToggle==1){loadCamOrSign('GeoRSS/TDOTCameraGeorss.xml','Image/camera.gif','Image/camera_shadow.png','Camera');camToggle=2}else{toggleGroup('Camera',cb)}}function CheckBox5Clicked(cb){if(signToggle==1){loadCamOrSign('GeoRSS/TDOTMessageGeorss.xml','Image/messagesign.gif','Image/message_shadow.png','Sign');signToggle=2}else{toggleGroup('Sign',cb)}}function CheckBox6Clicked(cb){if(speedSensorToggle==1){loadSpeedSensor('GeoRSS/TDOTKnoxSpeedGeorss.xml','SpeedSensor');loadSpeedSensor('GeoRSS/TDOTNashSpeedGeorss.xml','SpeedSensor');loadSpeedSensor('GeoRSS/TDOTMempSpeedGeorss.xml','SpeedSensor');speedSensorToggle=2}else{toggleGroup('SpeedSensor',cb)}}function recenterMap(cb){var center=cb.split(" ");var Y=center[0];var X=center[1];var Zoom=center[2];if(Zoom!=-1){map.setCenter(new GLatLng(Y,X),parseFloat(Zoom));document.getElementById("Select").selectedIndex=0}}function rndNumParam(){var numParam='?rn='+Math.round(Math.random()*1001);return numParam}function setCookie(){maptype=0;var camChk=document.getElementById("cameraChkbox").checked;var signChk=document.getElementById("signChkbox").checked;var incidentChk=document.getElementById("incidentChkbox").checked;var contructionChk=document.getElementById("contructionChkbox").checked;var rdCondChk=document.getElementById("rdCondChkbox").checked;var speedChk=document.getElementById("speedChkbox").checked;for(var i=0;i<map.getMapTypes().length;i++){if(map.getCurrentMapType()==map.getMapTypes()[i]){maptype=i}}var cookietext=cookiename+"="+map.getCenter().lat()+"|"+map.getCenter().lng()+"|"+map.getZoom()+"|"+maptype+"|"+camChk+"|"+signChk+"|"+incidentChk+"|"+contructionChk+"|"+rdCondChk+"|"+speedChk;if(expiredays){var exdate=new Date();exdate.setDate(exdate.getDate()+expiredays);cookietext+=";expires="+exdate.toGMTString()}document.cookie=cookietext;document.getElementById("incidentChkbox").checked="checked";GUnload()}
