(function(){var a=Chai.Lang;Chai.HotspotTree=Chai.Class.extend({init:function(b){this._super();b=a.applyDefaultProperties(b,{enabled:true,name:null});this.enabled=b.enabled;this.name=b.name;this.maKdHotSpots=[]},mrectHotSpots:{min:[-1000000,-1000000],max:[1000000,1000000]},clear:function(){this.maKdHotSpots=[]},getHotSpotAtIndex:function(b){return this.maKdHotSpots[b]},addWithChildren:function(b,g,f,e,c,d){this.maKdHotSpots[this.maKdHotSpots.length]=[b,g,f,e,c,d]},add:function(b,f,d,e){var c=this.findHotSpotLeaf([b,f],0,0);c.aLeaf[c.uChild]=this.maKdHotSpots.length;this.addWithChildren(b,f,0,0,d,e)},findNearestHotSpot:function(c,b){return this.nearestHotSpot(c,0,0,b,this.mrectHotSpots)},nearestHotSpot:function(h,t,k,n,c){var j=this.maKdHotSpots[t];var l={min:c.min.concat(),max:c.max.concat()};l.max[k]=j[k];var g={min:c.min.concat(),max:c.max.concat()};g.min[k]=j[k];var m,b;var e,f;if(n[k]<=j[k]){m=j[2];e=l;b=j[3];f=g}else{m=j[3];e=g;b=j[2];f=l}var d=(k+1)&1;var r=-1;if(0!=m){var u=this.nearestHotSpot(h,m,d,n,e);if(u.iPoint>=0){r=u.iPoint;h=u.dDistSqd}}var s=0;for(var q=0;q<2;q+=1){if(n[q]<=f.min[q]){s+=(n[q]-f.min[q])*(n[q]-f.min[q])}else{if(n[q]>=f.max[q]){s+=(n[q]-f.max[q])*(n[q]-f.max[q])}}}if(s<h){var p=(j[0]-n[0])*(j[0]-n[0])+(j[1]-n[1])*(j[1]-n[1]);if(p<h){r=t;h=p}if(0!=b){var o=this.nearestHotSpot(h,b,d,n,f);if(o.iPoint>=0){r=o.iPoint;h=o.dDistSqd}}}return{iPoint:r,dDistSqd:h}},findHotSpotLeaf:function(f,d,e){var c=this.maKdHotSpots[d];var b=f[e]<=c[e]?2:3;return 0==c[b]?{aLeaf:c,uChild:b}:this.findHotSpotLeaf(f,c[b],(e+1)&1)}})}());(function(){var f=Chai.Lang,i=Chai.EventPublisher.EventInfo,j={};function e(k){k.src.detachAllAfter("load");k.src.detachAllAfter("failure")}var c=Chai.defineModule("Chai.Image",{load:function(l,k){k=f.applyDefaultProperties(k,{retries:0,success:null,failure:null,context:null});var m=j[l];if(typeof(m)==="undefined"){m=new c.Image();m.after("complete",e);j[l]=m}if(m.get("loaded")){if(f.isFunction(k.success)){k.success.call(k.context,new i("load",m,null))}}else{if(m.get("loading")){if(f.isFunction(k.success)){m.after("load",k.success,k.context)}if(f.isFunction(k.failure)){m.after("failure",k.failure,k.context)}if(f.isNumber(k.retries)){m.set("retries",k.retries)}}else{if(f.isFunction(k.success)){m.after("load",k.success,k.context)}if(f.isFunction(k.failure)){m.after("failure",k.failure,k.context)}if(f.isNumber(k.retries)){m.set("retries",k.retries)}m.set("url","");m.set("url",l)}}},abort:function(l,k){var m=j[l];if(typeof(m)!=="undefined"){if(f.isFunction(k.success)){m.detachAfter("load",k.success,k.context)}if(f.isFunction(k.failure)){m.detachAfter("failure",k.failure,k.context)}}}});function g(){if(this.img!==null){this.img.onload=null;this.img.onerror=null;this.img.src=null}this.img=null}function a(){this.set("loading",true);this.img=new Image();this.img.onload=f.bind(h,this);this.img.onerror=f.bind(b,this);this.img.src=this.get("url")}function d(){this.set("loading",false);this.fire("complete")}function h(){this.fire("load",null,function(){this.set("width",this.img.width);this.set("height",this.img.height);this.set("loaded",true);g.call(this)});d.call(this)}function b(){if(this.retryAttempts<this.get("retries")){this.retryAttempts+=1;a.call(this)}else{this.fire("failure",null,function(){g.call(this)});d.call(this)}}c.Image=Chai.Class.extend({init:function(){this._super();this.addAttributes({width:{value:0,validator:f.isNumber},height:{value:0,validator:f.isNumber},url:{value:"",validator:f.isString},retries:{value:0,validator:f.isNumber},loaded:{value:false,validator:f.isBoolean},loading:{value:false,validator:f.isBoolean}});this.img=null;this.retryAttempts=0},destruct:function(){g.call(this);this._super()},urlChanged:function(k){g.call(this);if(k!==""){this.retryAttempts=0;a.call(this)}}})}());(function(){var b=null;function a(){var e=null;try{try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");try{e.AllowScriptAccess="always"}catch(d){if(e!==null){return"6.0.0"}}}catch(d){}return new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1].replace(/,/g,".")}catch(d){try{if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){return(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1].replace(/,/g,".")}}catch(d){}}return"0.0.0"}var c=Chai.defineModule("Chai.Flash",{getVersion:function(){if(b===null){b=a()}return b},atLeastVersion:function(d,h,f){var e=c.getVersion().split("."),g=parseInt(e[0],10),j=parseInt(e[1],10),i=parseInt(e[2],10);if(d===g){if(h===j){return f<=i}return h<j}return d<g}})}());(function(){var e=Chai.use("Chai.Lang"),d=Chai.use("Chai.Dom");function c(g){this.get("host").set("mouseOver",true);this.get("host").fire("mousein",{event:g})}function a(g){this.get("host").set("mouseOver",false);this.get("host").fire("mouseout",{event:g})}function b(g){this.get("host").fire("mouseup",{event:g})}function f(g){this.get("host").fire("click",{event:g})}Chai.Widget.MouseEventsPlugin=Chai.Widget.WidgetPlugin.extend({init:function(h,g){this._super(h,g);this.attachAttribute("mouseOver",{value:false,validator:e.isBoolean})},destruct:function(){var g=this.get("host");if(g.boundingNode){d.unsubscribe(g.boundingNode,"mouseup",b,this);d.unsubscribe(g.boundingNode,"click",f,this)}this._super()},afterWidgetRendered:function(){this._super();var g=this.get("host");d.mouseIn(g.boundingNode,c,null,this);d.mouseOut(g.boundingNode,a,null,this);d.subscribe(g.boundingNode,"mouseup",b,null,this);d.subscribe(g.boundingNode,"click",f,null,this)}});Chai.Widget.MouseEventsPlugin.PluginNamespace="Chai.Widget.MouseEventsPlugin"}());(function(){var b=Chai.use("Chai.Dom");function a(c){b.stopPropagation(c)}Chai.Widget.MouseCapturePlugin=Chai.Widget.WidgetPlugin.extend({destruct:function(){var c=this.get("host");if(c.boundingNode){b.unsubscribe(c.boundingNode,"mousedown",a,this);b.unsubscribe(c.boundingNode,"mouseup",a,this);b.unsubscribe(c.boundingNode,"mouseout",a,this);b.unsubscribe(c.boundingNode,"mouseover",a,this);b.unsubscribe(c.boundingNode,"dblclick",a,this);b.unsubscribe(c.boundingNode,"mousemove",a,this);b.unsubscribe(c.boundingNode,"click",a,this)}this._super()},afterWidgetRendered:function(){this._super();var c=this.get("host");b.subscribe(c.boundingNode,"mousedown",a,null,this);b.subscribe(c.boundingNode,"mouseup",a,null,this);b.subscribe(c.boundingNode,"mouseout",a,null,this);b.subscribe(c.boundingNode,"mouseover",a,null,this);b.subscribe(c.boundingNode,"dblclick",a,null,this);b.subscribe(c.boundingNode,"mousemove",a,null,this);b.subscribe(c.boundingNode,"click",a,null,this)}});Chai.Widget.MouseCapturePlugin.PluginNamespace="Chai.Widget.MouseCapturePlugin"}());(function(){var j=Chai.Lang,m=Chai.String,b=Chai.Math,i=Chai.Dom,l=Chai.Widget;var e=l.Canvas=l.extend({init:function(p,r,o,q){this._super(p);this.addAttribute("ready",{value:false,validator:j.isBoolean});if(q){i.setCSS(this.boundingNode,q.styles)}},className:"canvas",drawRect:function(p,s,r,o,q){},clearPath:function(o,q,p){j.assert(q.length===o.length*2,"Canvas.clearPath - There must be two numbers (a point) for every command.")},clear:function(){}});function d(){var o=i.make("canvas");return Boolean(o.getContext&&o.getContext("2d"))}if(d()){e.renderMethod="canvas";e.augment({init:function(p,r,o,q){this._original(p,r,o,q);this.canvas=i.make("canvas");this.canvas.setAttribute("width",r);this.canvas.setAttribute("height",o);this.contentNode.appendChild(this.canvas);this.set("ready",true)},clear:function(){var o=this.canvas.getContext("2d");o.clearRect(0,0,this.canvas.width,this.canvas.height)},drawRect:function(p,t,s,o,r){this._original(p,t,s,o,r);var q=this.canvas.getContext("2d");q.save();if(r){if(j.isString(r.fill)){q.fillStyle=r.fill}if(j.isNumber(r.opacity)){q.fillStyle=b.hexToRgba(q.fillStyle,r.opacity)}}q.fillRect(p,t,s,o);q.restore()},clearPath:function(o,r,q){this._original(o,r,q);var p=this.canvas.getContext("2d");p.save();p.globalCompositeOperation="destination-out";p.strokeStyle="rgba(1,1,1,1)";if(q){if(j.isNumber(q.lineWidth)){p.lineWidth=q.lineWidth}if(j.isString(q.lineCap)){p.lineCap=q.lineCap}if(j.isString(q.lineJoin)){p.lineJoin=q.lineJoin}}p.beginPath();for(var u=0,t=0,s=o.length;u<s;u+=1,t+=2){switch(o[u].toLowerCase()){case"m":p.moveTo(r[t],r[t+1]);break;case"l":p.lineTo(r[t],r[t+1]);break}}p.stroke();p.restore()}})}else{var g="\u001C";e.renderMethod="flash";e.augment({init:function(r,o,u,p){this._original(r,o,u,p);this.addAttribute("enableRightClick",{value:Boolean(p.enableRightClick),validator:j.isBoolean});var v=window.location.protocol;if(v.charAt(v.length-1)==":"){v=v.substring(0,v.length-1)}var t=i.generateId("canvas"),w=i.generateId("canvas-embed"),s=m.urlEncode({id:t}),q='<object id="'+t+'" name="'+w+'" class="canvas-flash" width="'+o+'px" height="'+u+'px" type="application/x-shockwave-flash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"><param name="allowScriptAccess" value="always"></param><param name="quality" value="high"></param><param name="wmode" value="transparent"></param><param name="movie" value="/Chai/Widget/Canvas.swf"></param><param name="FlashVars" value="'+s+'"></param></object>';e.registerFlashReady(this,t);this.contentNode.innerHTML=q;i.create("div").setClass("canvas-flash-overlay").css({width:o+"px",height:u+"px"}).appendTo(this.contentNode)},destruct:function(){k(this.flash);this.flash=null;this._original()},clear:function(){this.flash.clear()},drawRect:function(p,u,t,o,s){this._original(p,u,t,o,s);var r=p+g+u+g+t+g+o,q=m.urlEncode(s);if(q!==""){r+=g+q}this.flash.drawRect(r)},clearPath:function(o,s,r){this._original(o,s,r);var q=o.join(",")+g+s.join(","),p=m.urlEncode(r);if(p!==""){q+=g+p}this.flash.clearPath(q)}});function k(o){if(o.readyState===4){for(var p in o){if(typeof(o[p])==="function"){o[p]=null}}}else{j.later(10,k,o)}}function f(o){if(o.button!==0){i.stopEvent(o);if(o.target===this.flash&&this.rightClickCache===this.flash){}this.rightClickCache=o.target}}function n(){this.contentNode.releaseCapture()}function a(o){if(o.button>1){if(o.srcElement===this.flash&&this.rightClickCache===this.flash){}this.contentNode.setCapture();if(o.srcElement){this.rightClickCache=o.srcElement}}}function c(o){if(o.srcElement===this.flash){return false}else{this.rightClickCache=null}}function h(o){this.flash=this.contentNode.firstChild;if(this.get("enableRightClick")){if(window.addEventListener){i.subscribe(window,"mousedown",f,null,this,true)}else{i.subscribe(this.contentNode,"mouseup",n,null,this);i.subscribe(document,"contextmenu",c,null,this);i.subscribe(this.contentNode,"mousedown",a,null,this)}}this.set("ready",true)}e.flashCanvases={};Chai.defineModule("Chai.Widget.Canvas",{registerFlashReady:function(o,p){e.flashCanvases[p]=o},onFlashReady:function(p){var o=e.flashCanvases[p];if(o){delete e.flashCanvases[p];h.call(o,p)}}})}}());(function(){var d=Chai.Lang,b=Chai.Dom,c=Chai.Widget;function a(){return this.get("index")===0}c.ListItem=c.extend({init:function(e){this._super(e);this.addAttributes({index:{value:-1,validator:d.isNumber},selected:{value:false,validator:d.isBoolean},first:{readonly:true,getter:d.bind(a,this)},last:{value:false,validator:d.isBoolean},list:{value:null,validator:d.isObjectOrNull}})},className:"list-item",boundingTag:"li",indexChanged:function(e){if(this.boundingNode){if(e===0){b.addClass(this.boundingNode,this.getClassNames("first"))}else{b.removeClass(this.boundingNode,this.getClassNames("first"))}}},selectedChanged:function(e){if(this.boundingNode){if(e){b.addClass(this.boundingNode,this.getClassNames("selected"))}else{b.removeClass(this.boundingNode,this.getClassNames("selected"))}}},lastChanged:function(e){if(this.boundingNode){if(e){b.addClass(this.boundingNode,this.getClassNames("last"))}else{b.removeClass(this.boundingNode,this.getClassNames("last"))}}},renderUI:function(){this._super();if(this.get("first")){b.addClass(this.boundingNode,this.getClassNames("first"))}if(this.get("last")){b.addClass(this.boundingNode,this.getClassNames("last"))}if(this.get("selected")){b.addClass(this.boundingNode,this.getClassNames("selected"))}}})}());(function(){var d=Chai.Lang,e=Chai.Array,c=Chai.Dom,h=Chai.Widget;function i(j){return d.isNumber(j)&&j>=-1&&j<this.get("items").length}function f(j){return d.isNumber(j)&&j===this.get("items").length-1}function b(){return this.get("items").length}function a(){return this.get("items").length===0}function g(){if(this.boundingNode){if(this.get("empty")){c.addClass(this.boundingNode,this.getClassNames("empty"))}else{c.removeClass(this.boundingNode,this.getClassNames("empty"));this.set("last",this.get("count")-1)}}}h.List=h.extend({init:function(j){this._super(j);this.addAttributes({items:{value:[],validator:d.isArray},selected:{value:-1,validator:d.bind(i,this)},last:{value:-1,validator:d.bind(f,this)},count:{readonly:true,getter:d.bind(b,this)},empty:{readonly:true,getter:d.bind(a,this)}})},destruct:function(){this.removeAll();this._super()},className:"list",contentTag:"ul",itemsChanged:function(j){this.set("selected",-1);for(var k=0,l=j.length;k<l;k+=1){j[k].set("index",k)}g.call(this)},selectedChanged:function(k,l){var j=this.get("items");if(l>=0&&l<j.length){j[l].set("selected",false)}if(k!==-1){j[k].set("selected",true)}},lastChanged:function(k,l){var j=this.get("items");if(l>=0&&l<j.length){j[l].set("last",false)}if(k!==-1){j[k].set("last",true)}},renderUI:function(){this._super();if(this.get("empty")){c.addClass(this.boundingNode,this.getClassNames("empty"))}for(var k=0,j=this.get("items"),l=j.length;k<l;k+=1){j[k].render(this.contentNode)}},each:function(k,j){d.forEach(this.get("items"),k,j)},item:function(j){return this.get("items")[j]},addItem:function(j){this.get("items").push(j);j.set("list",this);j.set("index",this.get("count")-1);if(j.get("selected")){this.set("selected",j.get("index"))}if(this.contentNode){j.render(this.contentNode)}g.call(this);return j},addItems:function(j){for(var k=0,l=j.length;k<l;k+=1){this.addItem(j[k])}},insertItem:function(m,k){e.insert(this.get("items"),m,k);m.set("list",this);var j=this.get("items"),n=j.length;for(var l=k;l<n;l+=1){j[l].set("index",l)}if(m.get("selected")){this.set("selected",k)}if(this.contentNode){if(k<n-1){m.render(this.contentNode,k)}else{m.render(this.contentNode)}}g.call(this);return m},removeItem:function(j){this.removeItemAt(e.indexOf(this.get("items"),j))},removeItemAt:function(k){var j=this.get("items");if(k===this.get("selected")){this.set("selected",-1)}j[k].destroy();e.removeAt(j,k);for(var l=k,j=this.get("items"),m=j.length;l<m;l+=1){j[l].set("index",l)}g.call(this)},removeAll:function(){for(var k=0,j=this.get("items"),l=j.length;k<l;k+=1){j[k].destroy()}this.set("items",[])}})}());(function(){var b=Chai.Lang,a=Chai.Dom,c=Chai.Widget.ListItem;Chai.Widget.MenuItem=c.extend({init:function(d){this.labelNode=null;this._super(d);this.addAttributes({text:{value:"",validator:b.isString},name:{value:"",validator:b.isString},isSeparator:{value:false,validator:b.isBoolean}})},className:"menu-item",indexChanged:function(d,e){this._super(d,e);if(this.boundingNode){a.setData(this.boundingNode,"index",d)}},textChanged:function(d){if(this.labelNode){this.labelNode.innerHTML=d}},isSeparator:function(d){if(d){if(this.labelNode){this.contentNode.removeChild(this.labelNode);this.labelNode=null}if(this.boundingNode){a.addClass(this.boundingNode,"menu-item-separator")}}else{this.labelNode=a.create("span").setClass("menu-item-label").setHtml(this.get("text")).appendTo(this.contentNode);if(this.boundingNode){a.removeClass(this.boundingNode,"menu-item-separator")}}},renderUI:function(){this._super();if(this.get("isSeparator")){a.addClass(this.boundingNode,"menu-item-separator")}else{this.labelNode=a.create("span").setClass("menu-item-label").setHtml(this.get("text")).appendTo(this.contentNode)}a.setData(this.boundingNode,"index",this.get("index"))}})}());(function(){var d=Chai.Lang,c=Chai.Dom,g=Chai.Widget.ListItem,h=Chai.Widget.MenuItem,i=Chai.Widget.List;function e(j){var k=parseInt(c.getData(j,"index"),10);if(!this.item(k).get("isSeparator")){this.fire("itemClick",{index:k},function(l){if(l.info.index>=0&&l.info.index<this.get("count")){this.item(l.info.index).fire("click");this.hide();this.set("selected",-1)}})}}function f(j){if(!this.item(parseInt(c.getData(j,"index"),10)).get("isSeparator")){this.set("selected",parseInt(c.getData(j,"index"),10))}}function a(j){this.set("selected",-1)}function b(j){c.stopEvent(j)}Chai.Widget.Menu=i.extend({className:"menu",bindUI:function(){this._super();c.delegate(this.contentNode,"click",".menu-item",d.bind(e,this));c.delegate(this.contentNode,"mousein",".menu-item",d.bind(f,this));c.delegate(this.contentNode,"mouseout",".menu-item",d.bind(a,this));c.delegate(this.contentNode,"mousedown",b,null,this)},addItem:function(k){if(k instanceof g){return this._super(k)}else{var j=new h();j.set("text",k.text);j.set("name",k.name);j.set("data",k.data);j.set("isSeparator",k.isSeparator);return this._super(j)}},insertItem:function(l,j){if(l instanceof g){return this._super(l,j)}else{var k=new h();k.set("text",l.text);k.set("name",l.name);return this._super(k,j)}},addSeparator:function(){var j=new h();j.set("isSeparator",true);return this.addItem(j)},insertSeparator:function(j){var k=new h();k.set("isSeparator",true);return this.insertItem(k,j)}})}());(function(){var b=Chai.Dom,c=Chai.Widget.Menu;function a(g){var f=g.target||g.srcElement,d=document.body;while(f&&f!==d){if(f===this.contentNode){return}f=f.parentNode}this.hide();this.set("selected",-1)}Chai.Widget.PopUpMenu=c.extend({destruct:function(){b.unsubscribe(document.body,"mousedown",a,this);this._super()},className:"popup-menu",bindUI:function(){this._super();b.subscribe(document.body,"mousedown",a,null,this)}})}());(function(){var d=Chai.Dom,c=Chai.DomSize,b=Chai.Widget.PopUpMenu,a=Chai.Widget.OverlayPlugin;function e(f){d.stopEvent(f)}Chai.Widget.ContextMenu=b.extend({init:function(f){this._super(f);this.plug(a);this.hide()},destruct:function(){d.unsubscribe(this.boundingNode,"contextmenu",e,this);this._super()},className:"context-menu",visibleChanged:function(i,h){if(i){var f=d.getViewport(),g=c.measure(this.boundingNode).box;if(g.get("right")>f.get("right")){this.set("x",g.get("left")-g.get("width"))}if(g.get("bottom")>f.get("bottom")){this.set("y",g.get("top")-g.get("height"))}}this._super(i,h)},bindUI:function(){this._super();d.subscribe(this.boundingNode,"contextmenu",e,null,this)}})}());Sigalert.namespace("common");Sigalert.common.cacheImage=function(b){var a=new Image();a.src=b};Sigalert.namespace("FormHelpers");Sigalert.FormHelpers={SelectTab:function(b,a){if(b&&"undefined"!=a){b.set("activeIndex",a)}},IsNumeric:function(b,a,e,c){var d=a.value;if(!isNaN(d)&&d.indexOf(".")==-1){return true}Sigalert.FormHelpers.SelectTab(e,c);a.focus();a.select();alert("The '"+b+"' entry ("+d+") needs to be a number.");return false},StripWhiteSpace:function(b){var a="";var c;b+="";for(i=0;i<b.length;i++){c=b.charAt(i);if(" "!=c){a+=c}}return a},ValidateNotBlank:function(b,a,d,c){if(""==Sigalert.FormHelpers.StripWhiteSpace(a.value)){Sigalert.FormHelpers.SelectTab(d,c);a.focus();a.select();alert("The '"+b+"' entry cannot be blank.");return false}return true},ValidateRange:function(c,b,a,e,g,d){var f=parseInt(b.value);if((f<a)||(f>e)){Sigalert.FormHelpers.SelectTab(g,d);b.focus();b.select();alert("The '"+c+"' entry ("+b.value+") needs to be between "+a+" and "+e+".");return false}return true},ValidateDayMask:function(b,e,d){var a=0;for(var c=0;c<b.length;c++){if(b[c].checked){a+=parseInt(b[c].value)}}if(0==a){Sigalert.FormHelpers.SelectTab(e,d);alert("At least one day of week must be checked");return false}return true},Get24HourHour:function(a,b){if("AM"==b&&12==a){return 0}if("PM"==b&&a<12){return a+12}else{return a}},ValidateDeviceFields:function(c,b,a,e,d){if(c[1].checked){if(b.checked){return true}for(i=0;i<b.length;i++){if(b[i].checked){return true}}Sigalert.FormHelpers.SelectTab(e,d);alert("At least one email address, phone, or pager must be selected "+a+".");return false}else{return true}},WritePVData:function(){document.write('<form name="PVForm">');document.write('<input type=hidden name="StartTime" value='+new Date().getTime()+">");document.write("</form>")},IsPasswordVerified:function(e){var d=new Date(parseInt(document.PVForm.StartTime.value));var f=60;if(d>new Date().getTime()-f*60000){return true}else{var c="<p><strong>To ensure your security, your password needs to be verified before you can make this change.</strong></p><p>A new window should open to allow you to verify your password. If you don't see this new window, please check your popup blocker and try again.</p><p>This message will automatically close once your password has been verified.</p>";Sigalert.common.showDialog("Password Verification",c,{width:"500px"});var g,b;g="/VerifyPasswordPopup.asp?sf="+escape(e);b="height=250,";b+="width=600,";b+="toolbar=no,";b+="location=no,";b+="directories=no,";b+="status=no,";b+="menubar=no,";b+="scrollbars=yes,";b+="resizable=yes";var a=window.open(g,"_JaytuPswdVerifyWin",b);a.focus();return false}},DoDelete:function(e,a,d,b,c){if("undefined"==typeof(c)){c=true}if(c){if(!Sigalert.FormHelpers.IsPasswordVerified("Sigalert.FormHelpers.DoDelete("+e+", '"+a+"', "+d+", '"+b+"', "+(c?"true":"false")+")")){return}}bGoForIt=confirm("Are you sure you want to delete this "+a+"?");if(bGoForIt){Sigalert.common.GotoPage("/Delete.asp","DelId="+e+"&Type="+d+"&Dest="+escape(b))}}};(function(){var j=Chai.use("Chai.Lang"),g=Chai.use("Chai.Dom"),c=Chai.use("Chai.Image"),m=Chai.use("Chai.Widget");function d(p){return p==="center"||p==="left"||p==="right"||(j.isString(p)&&p.match(/^\d+(\.\d+)?%$/i))}function o(p){return p==="center"||p==="bottom"||p==="top"||(j.isString(p)&&p.match(/^\d+(\.\d+)?%$/i))}function i(p){return j.isString(p)||j.isArray(p)}function n(p){c.load(p.url,{success:p.onComplete,context:this})}function h(p){c.abort(p.url,{success:p.onComplete,context:this})}function f(q,p,s){var r={url:q,index:p,width:0,height:0,onComplete:function(t){r.width=t.src.get("width");r.height=t.src.get("height");if(p===this.get("layer").getZoom()||(p===s-1&&this.get("layer").getZoom()>p)){l.call(this,this.get("layer").getZoom())}r.onComplete=null}};return r}function b(p){if(j.isArray(this.icons)){return this.icons[Math.min(p,this.icons.length-1)].width}return 0}function e(p){if(j.isArray(this.icons)){return this.icons[Math.min(p,this.icons.length-1)].height}return 0}function l(q){this.set("ready",true);if(this.contentNode){if(j.isArray(this.icons)){var p=this.icons[Math.min(q,this.icons.length-1)];this.contentNode.src=p.url;g.setStyle(this.contentNode,"width",p.width+"px");g.setStyle(this.contentNode,"height",p.height+"px");k.call(this);a.call(this)}}}function k(){if(this.contentNode){var p=this.get("verticalAlignment");switch(p){case"bottom":g.setStyle(this.contentNode,"top",(this.get("y")-e.call(this,this.get("layer").getZoom()))+"px");break;case"top":g.setStyle(this.contentNode,"top",this.get("y")+"px");break;case"center":g.setStyle(this.contentNode,"top",(this.get("y")-e.call(this,this.get("layer").getZoom())/2)+"px");break;default:g.setStyle(this.contentNode,"top",(this.get("y")-e.call(this,this.get("layer").getZoom())*parseFloat(p)/100)+"px");break}}}function a(){if(this.contentNode){var p=this.get("horizontalAlignment");switch(p){case"left":g.setStyle(this.contentNode,"left",this.get("x")+"px");break;case"right":g.setStyle(this.contentNode,"left",(this.get("x")-b.call(this,this.get("layer").getZoom()))+"px");break;case"center":g.setStyle(this.contentNode,"left",(this.get("x")-b.call(this,this.get("layer").getZoom())/2)+"px");break;default:g.setStyle(this.contentNode,"left",(this.get("x")-b.call(this,this.get("layer").getZoom())*parseFloat(p)/100)+"px");break}}}m.MapPushpin=m.extend({init:function(p){this._super(p);this.addAttributes({layer:{value:null,validator:j.isObjectOrNull},map:{value:null,validator:j.isObjectOrNull},id:{value:"",validator:j.isString},lat:{value:0,validator:j.isNumber},lon:{value:0,validator:j.isNumber},x:{value:0,validator:j.isNumber},y:{value:0,validator:j.isNumber},verticalAlignment:{value:"center",validator:o},horizontalAlignment:{value:"center",validator:d},tooltip:{value:"",validator:j.isString},iconUrl:{value:"",validator:i},ready:{value:false,validator:j.isBoolean}});this.icons=null},destruct:function(){j.forEach(this.icons,function(p){h.call(this,p)},this);this.icons=null;this._super()},className:"map-pushpin",renderMode:"simple",boundingTag:"img",renderUI:function(){this._super();g.addClass(this.contentNode,"fixpng")},syncUI:function(){this._super();if(this.contentNode===null){return}this.contentNode.title=this.get("tooltip");l.call(this,this.get("layer").getZoom());a.call(this);k.call(this)},latChanged:function(p){this.set("y",this.get("layer").latLonToXY(p,0)[1])},lonChanged:function(p){this.set("x",this.get("layer").latLonToXY(0,p)[0])},xChanged:function(p){a.call(this)},yChanged:function(p){k.call(this)},verticalAlignmentChanged:function(){k.call(this)},horizontalAlignmentChanged:function(){a.call(this)},tooltipChanged:function(p){if(this.contentNode){this.contentNode.title=p}},iconUrlChanged:function(p){j.forEach(this.icons,function(q){h.call(this,q)},this);this.icons=[];if(j.isString(p)){this.icons.push(f.call(this,p,0,1))}else{if(j.isArray(p)){j.forEach(p,function(r,q,s){this.icons.push(f.call(this,r,q,s))},this)}}j.forEach(this.icons,function(q){n.call(this,q)},this)},updateIcon:function(){var p=this.get("layer").latLonToXY(this.get("lat"),this.get("lon"));this.set("x",p[0]);this.set("y",p[1]);l.call(this,this.get("layer").getZoom())},removeFromLayer:function(){this.get("layer").removePushpin(this.get("id"))}})}());(function(){var d=Chai.use("Chai.Lang"),b=null;function a(j){return d.isString(j)||d.isObject(j)||d.isFunction(j)}function c(){if(b){b.set("data",null);b.hide()}}function f(){var k=this.get("host"),j=k.get("popUpBody");if(d.isFunction(j)){j=j(k)}if(!b){b=new Chai.Widget.PopUp();b.plug(Chai.Widget.MouseCapturePlugin);b.set("showAd",k.get("showAd"));b.set("target",k.boundingNode);b.set("body",j);k.get("map").addPopUp(b)}else{b.set("showAd",k.get("showAd"));b.set("target",k.boundingNode);b.set("body",j);b.show()}b.set("data",k)}function e(j){if(j.info.oldValue){j.info.oldValue.onMapZoomChanged.remove(h,this)}if(j.info.newValue){j.info.newValue.onMapZoomChanged.subscribe(h,this,this)}}function g(j){if(j.info.oldValue){j.info.oldValue.detachAfter("visibleChanged",i,this)}if(j.info.newValue){j.info.newValue.after("visibleChanged",i,this)}else{if(b&&b.get("data")===this.get("host")){c.call(this)}}}function h(){c.call(this)}function i(){c.call(this)}Chai.Widget.MapPushpinPopUpPlugin=Chai.Widget.WidgetPlugin.extend({init:function(l,j){this._super(l,j);this.attachAttributes({showAd:{value:false,validator:d.isBoolean},popUpBody:{value:"",validator:a}});l.addClassName("map-clickable-pushpin");l.after("click",f,this);l.after("mapChanged",e,this);l.after("layerChanged",g,this);var m=l.get("map");if(m){m.onMapZoomChanged.subscribe(h,this,this)}var k=l.get("layer");if(k){k.after("visibleChanged",i,this)}},destruct:function(){var l=this.get("host");l.detachAfter("click",f,this);l.removeClassName("map-clickable-pushpin");var j=l.get("layer");if(j){j.detachAfter("visibleChanged",i,this)}var k=l.get("map");if(k){k.onMapZoomChanged.remove(h,this)}this._super()}});Chai.Widget.MapPushpinPopUpPlugin.PluginNamespace="Chai.Widget.MapPushpinPopUpPlugin"}());(function(){var c=Chai.use("Chai.Lang");function a(d){return c.isString(d)||c.isObject(d)||c.isFunction(d)}function b(){var f=this.get("host"),e=f.get("dialogTitle"),d=f.get("dialogBody");if(c.isFunction(e)){e=e(f)}if(c.isFunction(d)){d=d(f)}Sigalert.common.showDialog(e,d,{width:"37em"})}Chai.Widget.MapPushpinDialogPlugin=Chai.Widget.WidgetPlugin.extend({init:function(e,d){this._super(e,d);this.attachAttributes({dialogTitle:{value:"",validator:a},dialogBody:{value:"",validator:a}});e.addClassName("map-clickable-pushpin");e.after("click",b,this)},destruct:function(){var d=this.get("host");d.detachAfter("click",b,this);d.removeClassName("map-clickable-pushpin");this._super()}});Chai.Widget.MapPushpinDialogPlugin.PluginNamespace="Chai.Widget.MapPushpinDialogPlugin"}());(function(){var b=Chai.use("Chai.Lang");function a(){window.open(this.get("host").get("windowUrl"))}Chai.Widget.MapPushpinWindowPlugin=Chai.Widget.WidgetPlugin.extend({init:function(d,c){this._super(d,c);this.attachAttribute("windowUrl",{value:"",validator:b.isString});d.addClassName("map-clickable-pushpin");d.after("click",a,this)},destruct:function(){var c=this.get("host");c.detachAfter("click",a,this);c.removeClassName("map-clickable-pushpin");this._super()}});Chai.Widget.MapPushpinWindowPlugin.PluginNamespace="Chai.Widget.MapPushpinWindowPlugin"}());(function(){var f=Chai.use("Chai.Lang"),b=Chai.use("Chai.Dom"),e=Chai.use("Chai.Widget");function d(g){if(!this.isTiled){b.setStyle(this.contentNode,"left",g.left+"px");b.setStyle(this.contentNode,"top",g.top+"px")}f.forEach(this.pushpins,function(h){h.updateIcon()})}function c(h,g,i){h.load()}var a=e.MapLayer=e.extend({init:function(i,n,k,j){this._super(i);this.map=n;this.name=k;this.isTiled=Boolean(j.isTiled);this.userData=j.userData||null;if(f.isString(j.className)&&j.className!==""){b.addClass(this.boundingNode,j.className)}if(this.isTiled){this.onCreateTile=j.onCreateTile;this.onLoadTile=j.onLoadTile;this.context=j.context;this.tileWidth=n.tileInfo.tileWidth;this.tileHeight=n.tileInfo.tileHeight;this.tileContainer=this.contentNode}else{var h=n._getMapPosition(),g=n.getMapXY(),m=-g[0]-h[0],l=-g[1]-h[1];b.setStyle(this.contentNode,"left",m+"px");b.setStyle(this.contentNode,"top",l+"px");this.pushpins={};n.onTilesCreated.subscribe(d,null,this)}this.count=0},className:"map-layer",renderMode:"simple",destruct:function(){this.removeAllPushpins();this.pushpins=null;this._super()},getZoom:function(){return this.map.getZoom()},latLonToXY:function(h,i,g){return this.map.latLonToXY(h,i,g)},xyToLatLon:function(g,i,h){return this.map.xyToLatLon(g,i,h)},getUserData:function(){return this.userData},setUserData:function(g){this.userData=g},addPushpin:function(k,h,i,g){var j=new e.MapPushpin();j.plug(e.MouseCapturePlugin);j.set("layer",this);j.set("map",this.map);j.set("id",k);j.set("lat",h);j.set("lon",i);j.after("readyChanged",function(){f.later(0,function(){if(!j.get("destroyed")){j.render(this.contentNode)}},null,this)},this);f.forEach(g,function(m,l){j.set(l,m)});this.pushpins[k]=j;return j},removePushpin:function(h){var g=this.pushpins[h];if(typeof(g)!=="undefined"){g.set("layer",null);g.destroy();delete this.pushpins[h]}},removeAllPushpins:function(g){f.forEach(this.pushpins,function(h){h.set("layer",null);h.destroy()});this.pushpins={}},getPushpin:function(g){return this.pushpins[g]||null},setPushpinLatLon:function(j,g,h){var i=this.pushpins[j];if(typeof(i)!=="undefined"){i.set("lat",g);i.set("lon",h)}},pushpinExists:function(g){return typeof(this.pushpins[g])!=="undefined"},forEachPushpin:function(i,g,h){f.forEach(this.pushpins,function(j){i.call(g,j,h)},this)},loadTiles:function(){var l=null,h=0,n=0,m=this.map.tileInfo.tileRect,p=this.map.tileInfo.horizontalTileOffset,o=this.map.tileInfo.verticalTileOffset;for(var k=m.left;k<m.right;k+=1){for(var g=m.top;g<m.bottom;g+=1){h=p+k;n=o+g;l=this.tiles[k+","+g];c.call(this,l,h,n)}}},reloadTiles:function(){var l=null,o=0,m=0,n=this.map.tileInfo.tileRect,p=this.map.tileInfo.horizontalTileOffset,g=this.map.tileInfo.verticalTileOffset,q=[],r=0;f.forEach(this.tiles,function(i){q.push(i)});this.tiles={};for(var k=n.left;k<n.right;k+=1){for(var h=n.top;h<n.bottom;h+=1){o=p+k;m=g+h;l=q[r];r+=1;l.column=o;l.row=m;b.setStyle(l.element,"left",(k*this.tileWidth)+"px");b.setStyle(l.element,"top",(h*this.tileHeight)+"px");c.call(this,l,o,m);this.tiles[k+","+h]=l}}},createTiles:function(){var l=null,h=0,n=0,m=this.map.tileInfo.tileRect,p=this.map.tileInfo.horizontalTileOffset,o=this.map.tileInfo.verticalTileOffset;f.forEach(this.tiles,function(i){i.destroy()});this.tiles={};this.tileContainer.innerHTML="";for(var k=m.left;k<m.right;k+=1){for(var g=m.top;g<m.bottom;g+=1){h=p+k;n=o+g;l=this.onCreateTile.call(this.context,{col:h,row:n,width:this.tileWidth,height:this.tileHeight,layerData:this.userData});l.column=h;l.row=n;l.width=this.tileWidth;l.height=this.tileHeight;l.map=this.map;l.layer=this;b.addClass(l.element,"map-tile");b.setStyle(l.element,"width",this.tileWidth+"px");b.setStyle(l.element,"height",this.tileHeight+"px");b.setStyle(l.element,"left",(k*this.tileWidth)+"px");b.setStyle(l.element,"top",(g*this.tileHeight)+"px");if(l.loadPreDomInsertion){c.call(this,l,h,n);this.tileContainer.appendChild(l.element)}else{this.tileContainer.appendChild(l.element);c.call(this,l,h,n)}this.tiles[k+","+g]=l}}}});a.Tile=Chai.Class.extend({init:function(){this._super();this.loadPreDomInsertion=true;this.element=null;this.column=0;this.row=0;this.width=0;this.height=0;this.map=null;this.layer=null;this.needsToBePainted=false},destruct:function(){this.element=null;this.map=null;this.layer=null;this._super()},load:f.noop})}());(function(){var c=Chai.use("Chai.Lang"),a=Chai.use("Chai.Dom"),b=Chai.use("Chai.Widget");b.MapLogo=b.extend({init:function(d){this._super(d);this.addAttributes({cover:{value:null,validator:c.isObjectOrNull},map:{value:null,validator:c.isObjectOrNull},id:{value:"",validator:c.isString},iconUrl:{value:"",validator:c.isString}})},className:"map-logo",renderUI:function(){var d=this.get("iconUrl");if(d!==""){this.boundingTag="img";this.renderMode="simple"}this._super();if(d!==""){a.addClass(this.contentNode,"fixpng");this.contentNode.src=d}},iconUrlChanged:function(d){if(this.contentNode&&this.boundingTag==="img"){this.contentNode.src=d}}})}());(function(){var c=Chai.use("Chai.Lang"),a=Chai.use("Chai.Dom"),b=Chai.use("Chai.Widget");b.MapCover=b.extend({init:function(d,g,f,e){this.logos={};this._super(d);this.map=g;this.name=f;if(c.isString(e.className)&&e.className!==""){a.addClass(this.boundingNode,e.className)}},destruct:function(){this.removeAllLogos();this.logos=null;this._super()},className:"map-cover",getElement:function(){return this.contentNode},append:function(d){this.contentNode.appendChild(d)},remove:function(d){this.contentNode.removeChild(d)},addLogo:function(f,d){var e=new b.MapLogo();e.set("cover",this);e.set("map",this.map);e.set("id",f);c.forEach(d,function(h,g){e.set(g,h)});e.render(this.contentNode);this.logos[f]=e;return e},removeLogo:function(e){var d=this.logos[e];if(typeof(d)!=="undefined"){d.set("cover",null);d.destroy();delete this.logos[e]}},removeAllLogos:function(d){c.forEach(this.logos,function(e){e.set("cover",null);e.destroy()});this.logos={}}})}());(function(){var j=Chai.Lang,r=Chai.Array,c=Chai.Dom,k=Chai.Event,q=Chai.Math,e=Chai.Widget,m=Sigalert.data.Manager;Chai.namespace("Sigalert.Widget");function i(v,t,w,u){v._loadAttempts=0;if(!v._imgLoader){v._imgLoader=new Image()}v._imgLoader.onload=function(){v._imgLoader.onload=null;v._imgLoader.onerror=null;j.later(1,function(){v.src=v._imgLoader.src})};v._imgLoader.onerror=function(){v._loadAttempts+=1;if(v._loadAttempts<3){setTimeout(function(){v._imgLoader.src=t+(u?"&":"?")+"n="+v._loadAttempts},w*1.5)}else{if(v._loadAttempts<4){setTimeout(function(){v._imgLoader.src=t+(u?"&":"?")+"n="+v._loadAttempts},3000)}else{v._imgLoader.onload=null;v._imgLoader.onerror=null;v.src=GstrImageDir+"/DotClear.gif"}}};v._imgLoader.src=t;if(YAHOO.env.ua.webkit>0&&v._imgLoader.complete){j.later(1,function(){v.src=v._imgLoader.src;v._imgLoader.onload=null;v._imgLoader.onerror=null})}}function n(t){if(t.src.name===f.StrCameraLayerName){Sigalert.common.WriteCookie("ShowMapCams",t.src.get("visible")?1:0,1825);this.onCameraLayerVisibilityChanged.fire({map:this,isVisible:t.src.get("visible")})}}function a(t){return new p()}function o(t){return new g()}function d(){var t=this.moConfig.getProperty("region");Sigalert.RegionData.getZoomLevels(t,function(u){this.maZoomLevels=u;this.miCurrentZoomLevel=this.moConfig.getProperty("zoom");this.moCurrentZoomLevel=this.maZoomLevels[this.miCurrentZoomLevel];var v=m[t];v.onDataRefreshStart.subscribe(this.onTrafficDataRefreshStart,null,this);v.onDataRefreshEnd.subscribe(this.onTrafficDataRefreshEnd,null,this);v.onDataUpdated.subscribe(this.onTrafficDataUpdated,null,this);h.call(this);this.makeLayer(f.StrBackgroundLayerName,{className:"background-layer",isTiled:true,onCreateTile:a,context:this}).createTiles();this.makeLayer(f.StrTrafficLayerName,{className:"traffic-layer",isTiled:true,onCreateTile:o,context:this});this._onReady();v.getDataPath(function(x){var w=v.trafficData;this.mstrDataPath=w.get("path");this.miDataCachBuster=w.get("cacheBuster");this.layers[f.StrTrafficLayerName].loadTiles();v.trafficData.after("pathChanged",this.onTrafficDataPathUpdated,this)},null,this)},null,this,this.moConfig.getProperty("regionselectorsenabled"))}function h(){this.miViewportWidthPixels=this.mViewport.offsetWidth;this.miViewportHeightPixels=this.mViewport.offsetHeight;var y=this.moConfig.getProperty("lat"),t=this.moConfig.getProperty("lon"),B=this.moCurrentZoomLevel.tileWidthPixels,A=this.moCurrentZoomLevel.tileHeightPixels,w=0,u=0,z=this.latLonToXY(y,t,this.miCurrentZoomLevel);if(this.moCurrentZoomLevel._widthPixels<this.miViewportWidthPixels){z[0]=this.miViewportWidthPixels/2;w=((this.miViewportWidthPixels-this.moCurrentZoomLevel._widthPixels)/2)}else{if(z[0]<this.miViewportWidthPixels/2){z[0]=this.miViewportWidthPixels/2}else{if(z[0]>this.moCurrentZoomLevel._widthPixels-this.miViewportWidthPixels/2){z[0]=this.moCurrentZoomLevel._widthPixels-this.miViewportWidthPixels/2}}}if(this.moCurrentZoomLevel._heightPixels<this.miViewportHeightPixels){z[1]=this.miViewportHeightPixels/2;u=((this.miViewportHeightPixels-this.moCurrentZoomLevel._heightPixels)/2)}else{if(z[1]<this.miViewportHeightPixels/2){z[1]=this.miViewportHeightPixels/2}else{if(z[1]>this.moCurrentZoomLevel._heightPixels-this.miViewportHeightPixels/2){z[1]=this.moCurrentZoomLevel._heightPixels-this.miViewportHeightPixels/2}}}var x=B-(z[0]%B||B),v=A-(z[1]%A||A);c.setStyle(this.mLayers,"marginLeft",w+"px");c.setStyle(this.mLayers,"marginTop",u+"px");this._setMapPosition(x,v);this.mOrigin={x:z[0],y:z[1],elX:x,elY:v,marginX:w,marginY:u};this.tileInfo={tileRect:this._getTileRect(),tileWidth:B,tileHeight:A,horizontalTileOffset:Math.ceil(z[0]/B),verticalTileOffset:Math.ceil(z[1]/A)}}function l(t){j.forEach(this.layers,function(u){if(u.isTiled){if(t){u.reloadTiles()}else{u.createTiles()}}},this);this._onTilesCreated({iMapElX:this.mOrigin.elX,iMapElY:this.mOrigin.elY,iMapX:this.mOrigin.x,iMapY:this.mOrigin.y});this.onTilesCreated.fire({map:this,left:-this.mOrigin.x-this.mOrigin.elX,top:-this.mOrigin.y-this.mOrigin.elY});this.fire("tilesCreated",{left:-this.mOrigin.x-this.mOrigin.elX,top:-this.mOrigin.y-this.mOrigin.elY})}Sigalert.Widget.StaticMap=e.extend({init:function(t,u){this._super(t);this.mElement=null;this.mViewport=null;this.mLayers=null;this.mCovers=null;this.moConfig=null;this.layers={};this.covers={};this.maZoomLevels=null;this.miCurrentZoomLevel=0;this.moCurrentZoomLevel=null;this.miViewportWidthPixels=0;this.miViewportHeightPixels=0;this.mOrigin=null;this.mMapPos={x:0,y:0};this.tileInfo=null;this.mstrDataPath="";this.miDataCachBuster=0;this.miMapId=0;this.mbCamerasAreLoaded=false;this.onReadyForIcons=new k("readyforicons",true);this.onCamerasUpdated=new k("camerasupdated");this.onTilesCreated=new k("tilescreated");this.onCameraLayerVisibilityChanged=new k("cameralayervisibilitychanged");this.initConfig();this.moConfig.loadConfig(u);this.moConfig.setProperty("lat",this.moConfig.getProperty("lat").toFixed(5));this.moConfig.setProperty("lon",this.moConfig.getProperty("lon").toFixed(5));this.msgWidget=null;this.msgTimeoutId=null;var v=this.moConfig.getProperty("onCamerasUpdated");if(v){this.onCamerasUpdated.subscribe(v)}this.miMapId=c.generateId("MapControl");this.constructMarkup();this.contentNode.appendChild(this.mElement);d.call(this)},destruct:function(){if(this.msgWidget){this.msgWidget.destroy()}this.msgWidget=null;this._super()},className:"map",showMessage:function(u,t){if(this.msgTimeoutId!==null){clearTimeout(this.msgTimeoutId);this.msgTimeoutId=null}if(u!==""){if(!this.msgWidget){var v=this.makeCover(f.StrWidgetCoverName,{className:"widget-cover"});this.msgWidget=new Chai.Widget();this.msgWidget.plug(Chai.Widget.OverlayPlugin);this.msgWidget.set("horizontalAlign","center");this.msgWidget.set("offsetYFrom","top");this.msgWidget.set("x",0);this.msgWidget.set("y",0);this.msgWidget.addClassName("map-route-message");this.msgWidget.render(v.getElement())}this.msgWidget.contentNode.innerHTML=u;this.msgWidget.center();this.msgWidget.show();this.msgDisplayStartTime=new Date().getTime();if(j.isNumber(t)){this.msgTimeoutId=j.later(t,this.hideMessage,null,this)}}else{this.hideMessage(t)}},hideMessage:function(v){if(this.msgTimeoutId!==null){clearTimeout(this.msgTimeoutId);this.msgTimeoutId=null}if(this.msgWidget){var u=new Date().getTime(),t=u-this.msgDisplayStartTime;if(t<v){this.msgTimeoutId=j.later(v-t,this.hideMessage,null,this)}else{this.msgWidget.hide()}}},buildMapForZoomLevel:function(){h.call(this);l.call(this,false)},reloadMapForZoomLevel:function(){h.call(this);l.call(this,true)},_onReady:function(){var u=this.moConfig.getProperty("region");this.isReadyForIcons=true;if(this.moConfig.getProperty("mapiconscriptsenabled")){var v=s[u];if(v){v.fire({map:this})}}var t=m[u].trafficData.get("cameras");if(!this.mbCamerasAreLoaded&&t){this.loadCameras(t,null,this.moConfig.getProperty("showcamerasonload"));this.mbCamerasAreLoaded=true}b.fire({map:this,region:u});this.onReadyForIcons.fire({map:this,region:u});f.onInitComplete.fire(this);this.fire("ready")},constructMarkup:function(){this.mElement=c.create("div").setClass("MapControl").setStyle("height",this.moConfig.getProperty("height")+"px").get();this.mViewport=c.create("div").setClass("map-viewport").appendTo(this.mElement).get();this.mLayers=c.create("div").setClass("map-layers").appendTo(this.mViewport).get();this.mCovers=c.create("div").setClass("map-covers").appendTo(this.mViewport).get()},initConfig:function(){this.moConfig=new Sigalert.controls.Config();this.moConfig.setProperty("tilepath","");this.moConfig.setProperty("region","");this.moConfig.setProperty("mapbasename","");this.moConfig.setProperty("zoom",1);this.moConfig.setProperty("lat",0);this.moConfig.setProperty("lon",0);this.moConfig.setProperty("height",1);this.moConfig.setProperty("retryimgloading",true);this.moConfig.setProperty("regionselectorsenabled",true);this.moConfig.setProperty("mapiconscriptsenabled",true);if(Sigalert.common.ReadCookie){this.moConfig.setProperty("showcamerasonload",j.stringToBoolean(Sigalert.common.ReadCookie("ShowMapCams"),true))}else{this.moConfig.setProperty("showcamerasonload",true)}},_parseCoord:function(u){var t=parseInt(u);return isNaN(t)?0:t},_setMapPosition:function(t,u){c.setStyle(this.mLayers,"left",(t+this.miViewportWidthPixels/2)+"px");c.setStyle(this.mLayers,"top",(u+this.miViewportHeightPixels/2)+"px");this.mMapPos.x=t;this.mMapPos.y=u},_getTileRect:function(){var C=this.moCurrentZoomLevel.tileWidthPixels,B=this.moCurrentZoomLevel.tileHeightPixels,u=Math.ceil(this.miViewportWidthPixels/C),z=Math.ceil(this.miViewportHeightPixels/B),y=this._getMapPosition();var A=this.miViewportWidthPixels/2+y[0],v=this.miViewportWidthPixels/2-y[0];u=Math.ceil(A/C)+Math.ceil(v/C);var x=this.miViewportHeightPixels/2+y[1],t=this.miViewportHeightPixels/2-y[1];z=Math.ceil(x/B)+Math.ceil(t/B);var w={left:-Math.ceil(A/C),right:Math.ceil(v/C),width:Math.ceil(v/C)+Math.ceil(A/C),top:-Math.ceil(x/B),bottom:Math.ceil(t/B),height:Math.ceil(x/B)+Math.ceil(t/B)};return w},repaintBg:function(){this.layers[f.StrBackgroundLayerName].loadTiles()},_onTilesCreated:function(t){},latLonToXY:function(z,t,B){if(typeof(B)==="undefined"){B=this.miCurrentZoomLevel}var x=this.maZoomLevels[B],v=z*0.01745329252,y=Math.sin(v),u=0.08181919131087181,A=Math.pow(((1-u*y)/(1+u*y)),(u*0.5)),w=3779.5296/x.scale;return[Math.round((t*111319.4907932736*w)-x.origin.x),Math.round((-Math.log(Math.tan(Math.PI*0.25+v*0.5)*A)*6378137*w)-x.origin.y)]},xyToLatLon:function(t,A,v){if(typeof(v)==="undefined"){v=this.miCurrentZoomLevel}var z=this.maZoomLevels[v],u=24106357584.3552/z.scale,w=Math.PI*0.5-2*Math.atan(1/Math.exp((A+z.origin.y)/u));return[parseFloat((-57.2957795131*(w+0.003356551507*Math.sin(2*w)+0.000006571872862*Math.sin(4*w)+1.764564399e-8*Math.sin(6*w)+5.328478689e-11*Math.sin(8*w))).toFixed(5)),parseFloat(((t+z.origin.x)/u*57.2957795131).toFixed(5))]},mapXyToElXy:function(w,v){var u=this.getMapXY(),t=this._getMapPosition();return[w-u[0]-t[0],v-u[1]-t[1]]},elXyToMapXy:function(w,v){var u=this.getMapXY(),t=this._getMapPosition();return[w+t[0]]},clientXyToMapXy:function(w,u){var v=this.getMapXY(),t=YAHOO.util.Dom.getXY(this.mViewport);return[(w-this.mOrigin.marginX+YAHOO.util.Dom.getDocumentScrollLeft()-t[0]+v[0]-this.miViewportWidthPixels/2),(u-this.mOrigin.marginY+YAHOO.util.Dom.getDocumentScrollTop()-t[1]+v[1]-this.miViewportHeightPixels/2)]},mapXyToTile:function(t,w,v){if(typeof(v)==="undefined"){v=this.miCurrentZoomLevel}var u={column:Math.floor(t/this.tileInfo.tileWidth),row:Math.floor(w/this.tileInfo.tileHeight)};u.x=u.column*this.tileInfo.tileWidth;u.y=u.row*this.tileInfo.tileHeight;return u},getMapViewportRect:function(){var t=this.getMapXY();return new q.Rect(t[0]-this.miViewportWidthPixels/2,t[1]-this.miViewportHeightPixels/2,this.miViewportWidthPixels,this.miViewportHeightPixels)},getMapXY:function(){if(!this.mOrigin){return null}return[this.mOrigin.x-this.mMapPos.x+this.mOrigin.elX,this.mOrigin.y-this.mMapPos.y+this.mOrigin.elY]},getWidth:function(){return this.miViewportWidthPixels},getHeight:function(){return this.miViewportHeightPixels},getMapWidth:function(t){if(typeof(t)==="undefined"){t=this.miCurrentZoomLevel}return this.maZoomLevels[t]._widthPixels},getMapHeight:function(t){if(typeof(t)==="undefined"){t=this.miCurrentZoomLevel}return this.maZoomLevels[t]._heightPixels},getZoomLevelCount:function(){return this.maZoomLevels.length},getMaxZoom:function(){return this.maZoomLevels.length-1},isZoomedOutAllTheWay:function(){return this.miCurrentZoomLevel===(this.maZoomLevels.length-1)},isZoomedInAllTheWay:function(){return this.miCurrentZoomLevel===0},getZoom:function(){return this.miCurrentZoomLevel},getStripeWidths:function(t){if(typeof(t)==="undefined"){t=this.miCurrentZoomLevel}return this.maZoomLevels[t].stripeWidths},_getMapPosition:function(){return[this.mMapPos.x,this.mMapPos.y]},getMapLatLon:function(){var t=this.getMapXY();if(t===null){return null}return this.xyToLatLon(t[0],t[1],this.miCurrentZoomLevel)},xScaleAtZoomLevel:function(t){return this.maZoomLevels[0].widthTiles/this.maZoomLevels[t].widthTiles},yScaleAtZoomLevel:function(t){return this.maZoomLevels[0].heightTiles/this.maZoomLevels[t].heightTiles},xScale:function(){return this.maZoomLevels[0].widthTiles/this.moCurrentZoomLevel.widthTiles},yScale:function(){return this.maZoomLevels[0].heightTiles/this.moCurrentZoomLevel.heightTiles},getWidthInTiles:function(t){if(typeof(t)==="undefined"){t=this.miCurrentZoomLevel}return this.maZoomLevels[t].widthTiles},getHeightInTiles:function(t){if(typeof(t)==="undefined"){t=this.miCurrentZoomLevel}return this.maZoomLevels[t].heightTiles},onTrafficDataRefreshStart:function(){},onTrafficDataRefreshEnd:function(){},onTrafficDataUpdated:function(t){if(t.cameraChanges){this.loadCameras(t.cameraChanges.added,t.cameraChanges.removed)}},onTrafficDataPathUpdated:function(u){var t=u.src;this.mstrDataPath=t.get("path");this.miDataCachBuster=t.get("cacheBuster");this.layers[f.StrTrafficLayerName].loadTiles()},loadCameras:function(y,x,u){var w=this.makeLayer(f.StrCameraLayerName,{className:"camera-layer"});r.doWork(y,function(z){var A=this.xyToLatLon(z.x,z.y,0);w.addPushpin(z.id+"",A[0],A[1],{iconUrl:f.ZoomLevelCameraIcon})},{scope:this});j.forEach(x,function(z){w.removePushpin(z.id+"")},this);var t=!this.mbCamerasAreLoaded;if(!u&&t){w.hide()}var v=m[this.moConfig.getProperty("region")].trafficData.get("cameras");this.onCamerasUpdated.fire({src:this,firsTime:t,hasCameras:j.isArray(v)&&v.length>0,showingCameras:w.get("visible")})},makeCover:function(u,t){if(this.coverExists(u)){return this.covers[u]}var v=new e.MapCover(this.mCovers,this,u,t);this.covers[u]=v;return v},coverExists:function(t){return typeof(this.covers[t])!=="undefined"},getCover:function(t){return this.covers[t]},isCoverHidden:function(t){if(!this.coverExists(t)){return false}return !this.covers[t].get("visible")},hideCover:function(t){if(!this.coverExists(t)){return}this.covers[t].hide()},showCover:function(t){if(!this.coverExists(t)){return}this.covers[t].show()},removeLogo:function(t,u){if(!this.coverExists(t)){return}this.covers[t].removeLogo(u)},removeAllLogos:function(t,u){if(!this.coverExists(t)){return}this.covers[t].removeAllLogos(u)},addLogo:function(u,w,t){var v=this.makeCover(u,{className:"logo-cover"});return v.addLogo(w,t)},makeLayer:function(u,t){if(this.layerExists(u)){return this.layers[u]}var v=new e.MapLayer(this.mLayers,this,u,t);this.layers[u]=v;if(u===f.StrCameraLayerName){v.after("visibleChanged",n,this)}if(v.isTiled){v.createTiles()}return v},removeLayer:function(t){if(this.layerExists(t)){this.layers[t].destroy();delete this.layers[t]}},layerExists:function(t){return typeof(this.layers[t])!=="undefined"},getLayer:function(t){return this.layers[t]},isLayerHidden:function(t){if(!this.layerExists(t)){return false}return !this.layers[t].get("visible")},hideLayer:function(t){if(!this.layerExists(t)){return}this.layers[t].hide()},showLayer:function(t){if(!this.layerExists(t)){return}this.layers[t].show()},toggleLayerVisibility:function(t){if(!this.layerExists(t)){return false}return this.layers[t].toggleVisibility()},removePushpin:function(t,v,u){if(!this.layerExists(t)){return}this.layers[t].removePushpin(v,u)},removeAllPushpins:function(t,v,u){if(!this.layerExists(t)){return}this.layers[t].removeAllPushpins(v,u)},addPushpin:function(u,y,w,x,t){var v=this.makeLayer(u,{className:"pushpin-layer"});return v.addPushpin(y,w,x,t)},setPushpinLatLon:function(v,x,t,u,w){if(!this.layerExists(v)){return}this.layers[v].setPushpinLatLon(x,t,u,w)},pushpinExists:function(t,v,u){if(!this.layerExists(t)){return false}return this.layers[t].pushpinExists(v,u)}});var f=Sigalert.Widget.StaticMap;var s={};f.onMapReadyForIcons=function(v,t,x,u){var w=s[v];if(!w){w=new k("loadmapicons",true);s[v]=w}w.subscribe(t,x,u)};Sigalert.namespace("Sigalert.controls.StaticMapControl");Sigalert.controls.StaticMapControl.onMapReadyForIcons=f.onMapReadyForIcons;Sigalert.controls.MapControl=Sigalert.controls.StaticMapControl;var b=new k("mapcontrolreadyforicons",true);f.onMapControlReadyForIcons=function(t,v,u){b.subscribe(t,v,u)};f.onInitComplete=new YAHOO.util.CustomEvent("initcompleted",null,false,YAHOO.util.CustomEvent.FLAT);f.ZoomLevelCameraIcon=[GstrImageDir+"/Themes/Common/MapCameraPushpin0.png",GstrImageDir+"/Themes/Common/MapCameraPushpin1.png",GstrImageDir+"/Themes/Common/MapCameraPushpin2.png",GstrImageDir+"/Themes/Common/MapCameraPushpin3.png"];f.StrBackgroundLayerName="Background";f.StrTrafficLayerName="Traffic";f.StrCameraLayerName="Cameras";f.StrWidgetCoverName="widgets";f.StrLogoCoverName="logos";var p=e.MapLayer.Tile.extend({init:function(){this._super();this.element=c.make("img");if(YAHOO.env.ua.ie>0&&YAHOO.env.ua.ie<7){this.element.galleryImg="no"}},load:function(){this.element.src=GstrImageDir+"/DotClear.gif";if(this.column>=0&&this.row>=0&&this.column<this.map.getWidthInTiles()&&this.row<this.map.getHeightInTiles()){i.call(this,this.element,this.map.moConfig.getProperty("tilepath")+"/"+this.map.moCurrentZoomLevel.map+"/"+this.map.moCurrentZoomLevel.map+"-x"+this.column+"y"+this.row+".png",1,false)}}});var g=e.MapLayer.Tile.extend({init:function(){this._super();this.element=c.make("img");if(YAHOO.env.ua.ie>0&&YAHOO.env.ua.ie<7){this.element.galleryImg="no"}},load:function(){this.element.src=GstrImageDir+"/DotClear.gif";if(this.map.mstrDataPath!==""&&this.column>=0&&this.row>=0&&this.column<this.map.getWidthInTiles()&&this.row<this.map.getHeightInTiles()){i.call(this,this.element,Sigalert.common.Host.dynamicDataHost+"/"+this.map.mstrDataPath+"/"+this.map.moCurrentZoomLevel.map+(YAHOO.env.ua.ie>0&&YAHOO.env.ua.ie<7?"/ie/":"/")+"x"+this.column+"y"+this.row+".png?cb="+this.map.miDataCachBuster,1,true)}}})}());(function(){var c=Chai.Lang,b=Chai.Dom,e=Chai.Event;var d=Chai.namespace("Sigalert.Widget"),a=d.StaticMap;d.DynamicMap=a.extend({init:function(f,g){this.miLastMouseWheelTimeMs=0;this.moSlideMapAnim=null;this.onMapSlideComplete=new e("mapslidecomplete");this.onMapPositionChanged=new e("mappositionchanged");this.onMapZoomChanged=new e("mapzoomchanged");this.onUserAction=new e("useraction");this._super(f,g)},className:"dynamic-map",_getNewMapPos:function(i,h){var g=this._getMapPosition(),m=g[0],k=g[1],f=this.getMapXY(),l=i,j=h;if(f[0]-i<this.miViewportWidthPixels/2){l=f[0]-this.miViewportWidthPixels/2}else{if(f[0]-i+this.miViewportWidthPixels/2>this.moCurrentZoomLevel._widthPixels){l=f[0]-this.moCurrentZoomLevel._widthPixels+this.miViewportWidthPixels/2}}if(f[1]-h<this.miViewportHeightPixels/2){j=f[1]-this.miViewportHeightPixels/2}else{if(f[1]-h+this.miViewportHeightPixels/2>this.moCurrentZoomLevel._heightPixels){j=f[1]-this.moCurrentZoomLevel._heightPixels+this.miViewportHeightPixels/2}}if(this.moCurrentZoomLevel._widthPixels<this.miViewportWidthPixels){l=0}if(this.moCurrentZoomLevel._heightPixels<this.miViewportHeightPixels){j=0}m+=l;k+=j;return[m,k]},slideMap:function(o,n,g,f){var i=this._getMapPosition(),j=this._getNewMapPos(o,n);if(i[0]!==j[0]||i[1]!==j[1]){var h=function(){this.mMapPos.x=this._parseCoord(this.mLayers.style.left)-this.miViewportWidthPixels/2;this.mMapPos.y=this._parseCoord(this.mLayers.style.top)-this.miViewportHeightPixels/2};var m=function(){this.mMapPos.x=this._parseCoord(this.mLayers.style.left)-this.miViewportWidthPixels/2;this.mMapPos.y=this._parseCoord(this.mLayers.style.top)-this.miViewportHeightPixels/2;this._checkTiles();if(typeof(g)!=="undefined"){g.call(f)}var p=this.getMapLatLon();this.onMapSlideComplete.fire({map:this,lat:p[0],lon:p[1],zoom:this.miCurrentZoomLevel})};var l=j[0]+this.miViewportWidthPixels/2,k=j[1]+this.miViewportHeightPixels/2;this.moSlideMapAnim=new YAHOO.util.Anim(this.mLayers,{left:{to:l},top:{to:k}},0.5,YAHOO.util.Easing.easeOut);this.moSlideMapAnim.onTween.subscribe(h,null,this);this.moSlideMapAnim.onComplete.subscribe(m,null,this);this.moSlideMapAnim.animate();return true}return false},moveMap:function(g,f){var i=this._getMapPosition(),h=this._getNewMapPos(g,f);if(i[0]!==h[0]||i[1]!==h[1]){this._setMapPosition(h[0],h[1]);this._checkTiles()}},_setMapPosition:function(f,g){this._super(f,g);this._onMapPositionChanged()},setHeight:function(n){if(YAHOO.util.Dom.getAncestorBy(this.mElement,function(q){return YAHOO.util.Dom.getStyle(q,"display")==="none"})){return}this.moConfig.setProperty("height",n);this.mElement.style.height=n+"px";if(!this.moCurrentZoomLevel){return}var p=this.mViewport.offsetWidth-this.miViewportWidthPixels,o=this.mViewport.offsetHeight-this.miViewportHeightPixels;this.miViewportWidthPixels=this.mViewport.offsetWidth;this.miViewportHeightPixels=this.mViewport.offsetHeight;this.mMapPos.x=this._parseCoord(this.mLayers.style.left)-this.miViewportWidthPixels/2;this.mMapPos.y=this._parseCoord(this.mLayers.style.top)-this.miViewportHeightPixels/2;var k=this.getMapXY(),m=k[0],j=k[1];iMapMarginX=0,iMapMarginY=0;if(this.moCurrentZoomLevel._widthPixels<this.miViewportWidthPixels){k[0]=this.miViewportWidthPixels/2;iMapMarginX=((this.miViewportWidthPixels-this.moCurrentZoomLevel._widthPixels)/2)}else{if(k[0]<this.miViewportWidthPixels/2){k[0]=this.miViewportWidthPixels/2}else{if(k[0]>this.moCurrentZoomLevel._widthPixels-this.miViewportWidthPixels/2){k[0]=this.moCurrentZoomLevel._widthPixels-this.miViewportWidthPixels/2}}}if(this.moCurrentZoomLevel._heightPixels<this.miViewportHeightPixels){k[1]=this.miViewportHeightPixels/2;iMapMarginY=((this.miViewportHeightPixels-this.moCurrentZoomLevel._heightPixels)/2)}else{if(k[1]<this.miViewportHeightPixels/2){k[1]=this.miViewportHeightPixels/2}else{if(k[1]>this.moCurrentZoomLevel._heightPixels-this.miViewportHeightPixels/2){k[1]=this.moCurrentZoomLevel._heightPixels-this.miViewportHeightPixels/2}}}this.mOrigin.marginX=iMapMarginX;this.mOrigin.marginY=iMapMarginY;this.mLayers.style.marginLeft=iMapMarginX+"px";this.mLayers.style.marginTop=iMapMarginY+"px";var l=k[0]-m,i=k[1]-j;if(l!==0||i!==0){var h=this._getMapPosition();h[0]-=l;h[1]-=i;this._setMapPosition(h[0],h[1])}var f=this._getTileRect();if(f.width!==this.tileInfo.tileRect.width||f.height!==this.tileInfo.tileRect.height){var g=this.getMapLatLon();this.moConfig.setProperty("lat",g[0]);this.moConfig.setProperty("lon",g[1]);this.buildMapForZoomLevel()}else{this._checkTiles()}},_getTileRect:function(){var h=this._super(),g=Math.ceil(this.miViewportWidthPixels/this.moCurrentZoomLevel.tileWidthPixels),f=Math.ceil(this.miViewportHeightPixels/this.moCurrentZoomLevel.tileHeightPixels);if(g===h.width){h.left-=1;h.width+=1}if(f===h.height){h.top-=1;h.height+=1}return h},_checkTiles:function(){var n=[];c.forEach(this.layers,function(i){if(i.isTiled){n.push(i)}},this);var r=this.layers[a.StrBackgroundLayerName];var f=this.moCurrentZoomLevel.tileWidthPixels,q=this.moCurrentZoomLevel.tileHeightPixels,z=this.tileInfo.tileRect,k=this._getMapPosition(),v=this.getMapXY(),y=10,s=null,g=0;var m=r.tiles[(z.left)+","+(z.top)],h=r.tiles[(z.right-1)+","+(z.bottom-1)];var w={left:v[0]-this.miViewportWidthPixels/2,right:v[0]+this.miViewportWidthPixels/2,top:v[1]-this.miViewportHeightPixels/2,bottom:v[1]+this.miViewportHeightPixels/2};var l={left:v[0]+this._parseCoord(m.element.style.left)+k[0],right:v[0]+this._parseCoord(h.element.style.left)+f+k[0],top:v[1]+this._parseCoord(m.element.style.top)+k[1],bottom:v[1]+this._parseCoord(h.element.style.top)+q+k[1]};var p={left:w.left-l.left,right:l.right-w.right,top:w.top-l.top,bottom:l.bottom-w.bottom};var x={left:m.column,right:h.column,top:m.row,bottom:h.row};if(p.left<0){g=Math.ceil(-p.left/f);for(var u=z.left-1,o=1;o<=g;u-=1,o+=1){for(var t=z.top;t<z.bottom;t+=1){c.forEach(n,function(i){var j=i.tiles[(z.right-o)+","+t];j.column=x.left-o;b.setStyle(j.element,"left",(u*f)+"px");j.needsToBePainted=true;i.tiles[u+","+t]=j;delete i.tiles[(z.right-o)+","+t]},this)}}z.left-=g;z.right-=g}else{if(p.right<0){g=Math.ceil(-p.right/f);for(var u=z.right,o=1;o<=g;u+=1,o+=1){for(var t=z.top;t<z.bottom;t+=1){c.forEach(n,function(i){var j=i.tiles[(z.left-1+o)+","+t];j.column=x.right+o;b.setStyle(j.element,"left",(u*f)+"px");j.needsToBePainted=true;i.tiles[u+","+t]=j;delete i.tiles[(z.left-1+o)+","+t]},this)}}z.left+=g;z.right+=g}}if(p.top<0){g=Math.ceil(-p.top/q);for(var u=z.top-1,o=1;o<=g;u-=1,o+=1){for(var t=z.left;t<z.right;t+=1){c.forEach(n,function(i){var j=i.tiles[t+","+(z.bottom-o)];j.row=x.top-o;b.setStyle(j.element,"top",(u*q)+"px");j.needsToBePainted=true;i.tiles[t+","+u]=j;delete i.tiles[t+","+(z.bottom-o)]},this)}}z.top-=g;z.bottom-=g}else{if(p.bottom<0){g=Math.ceil(-p.bottom/q);for(var u=z.bottom,o=1;o<=g;u+=1,o+=1){for(var t=z.left;t<z.right;t+=1){c.forEach(n,function(i){var j=i.tiles[t+","+(z.top-1+o)];j.row=x.bottom+o;b.setStyle(j.element,"top",(u*q)+"px");j.needsToBePainted=true;i.tiles[t+","+u]=j;delete i.tiles[t+","+(z.top-1+o)]},this)}}z.top+=g;z.bottom+=g}}for(var u=z.left;u<z.right;u+=1){for(var t=z.top;t<z.bottom;t+=1){c.forEach(n,function(i){var j=i.tiles[u+","+t];if(j.needsToBePainted){j.load();j.needsToBePainted=false}},this)}}this.tileInfo.tileRect=z},zoomIn:function(){return this.setZoom(this.miCurrentZoomLevel-1)},zoomOut:function(){return this.setZoom(this.miCurrentZoomLevel+1)},setZoom:function(f){var g=this.getMapLatLon();return this.setLatLonZoom(g[0],g[1],f)},setLatLonZoom:function(f,g,h){if(h<0){h=0}else{if(h>=this.maZoomLevels.length){h=this.maZoomLevels.length-1}}if(h===this.miCurrentZoomLevel){return false}this.moConfig.setProperty("lat",f);this.moConfig.setProperty("lon",g);this.moConfig.setProperty("zoom",h);this.miCurrentZoomLevel=h;this.moCurrentZoomLevel=this.maZoomLevels[this.miCurrentZoomLevel];this.reloadMapForZoomLevel();this._onZoomChanged(h);return true},_onReady:function(){this._super();this._onZoomChanged(this.miCurrentZoomLevel)},getRegionAtClientXy:function(h,g){var f=this.clientXyToMapXy(h,g),i=this.xyToLatLon(f[0],f[1]);return Sigalert.RegionData.getRegionFromLatLon(i[0],i[1])},_onZoomChanged:function(f){var g=this.getMapLatLon();this.onMapZoomChanged.fire({map:this,lat:g[0],lon:g[1],zoom:f});this.fire("mapZoomChanged")},_onMapPositionChanged:function(){if(this.mOrigin){var f=this.getMapLatLon();this.onMapPositionChanged.fire({map:this,lat:f[0],lon:f[1],zoom:this.miCurrentZoomLevel})}},_onUserDidAction:function(){if(this.mOrigin){var f=this.getMapLatLon();this.onUserAction.fire({map:this,lat:f[0],lon:f[1],zoom:this.miCurrentZoomLevel})}}})}());(function(){var f=Chai.Lang,t=Chai.Math,c=Chai.Dom,g=Chai.Event,l=Chai.Date,b=Chai.HotspotTree,j=Sigalert.data.Manager,o=Chai.namespace("Sigalert.Widget"),d=o.StaticMap,r="pointer",i="url(/Images/Cursors/HMove.cur), move",e="Hover over a freeway to view its speeds.",w="Details",s=GstrImageDir+"/LoadingImage.png",v=50,u=v*v,h=100*100,n=7,k={left:60,right:16,top:50,bottom:56},q=1000;function a(x){this.setHotSpotsAreEnabled(d.StrCameraLayerName,x.isVisible);this.updateCameraButton(x.isVisible)}o.HotspotMap=o.DynamicMap.extend({init:function(y,B){this.mdictNamedKdHotspots={};this.highlightLayer=null;this.miHotSpotIncId=-1;this.mdivControls=null;this.mdivBtnContainer=null;this.mdivOptionsBtn=null;this.mdivTrafficContainer=null;this.mdivTrafficBlindContainer=null;this.mdivTrafficBlindContent=null;this.mdivTrafficBlindClosedBtn=null;this.mdivTrafficBlindOpenBtn=null;this.mdivBlindTrafficCam=null;this.mimgTrafficCam=null;this.mdivTrafficCamCaption=null;this.mdivTrafficBtn=null;this.miBlindTrafficHeight=0;this.miBlindOptionsHeight=0;this.mstrCurrentBlind="";this.mradUsePopUps=null;this.mradUseBlinds=null;this.mradUseNoDetails=null;this.mbStartBlindOpen=true;this.miButtonNum=0;this.moHelpBlind={maBlindDimen:[0,0],maClosedBlindContainerDimen:[0,0],miBlindContainerHeight:0};this.moOptionsBlind={maBlindDimen:[0,0],maClosedBlindContainerDimen:[0,0],miBlindContainerHeight:0};this.moTrafficBlind={small:{maBlindDimen:[0,0],maClosedBlindContainerDimen:[0,0],miBlindContainerHeight:0,miBlindSummaryHeight:0},large:{maBlindDimen:[0,0],maClosedBlindContainerDimen:[0,0],miBlindContainerHeight:0,miBlindSummaryHeight:0},current:this.small};this.mdivHelpBlindContentContainer=null;this.mdivOptionsBlindContentContainer=null;this.mtblTest=null;this.mcellTest=null;this.moBlindCamera=null;this.mAnimBlind=null;this.mAnimOptionsBlind=null;this.mbAnimOptionsBlindShowing=false;this.mAnimHelpBlind=null;this.mbAnimHelpBlindShowing=false;this.mAnimBtns=null;this.mbAnimBtnsClosed=false;this.mAnimTrafficBtn=false;this.mbAnimTrafficBtnVisible=false;this.mbAnimTrafficBlindShowing=false;this.mdivHelpBtn=null;this.mdivRefreshBtn=null;this.mdivCameraBtn=null;this.mdivTimeStamp=null;this.mPopUpDetails=null;this.miPopUpX=0;this.miPopUpY=0;this.moPopUpDataItem=null;this.miIncDetailsLoadCount=0;this.moIncDetailsData=null;this.miPopUpId=-1;this.mstrPopUpType="";this.mstrCamIncFangPopUpBodyOverflow="";this.mdivTest=null;this.mbTrafficBlindClosedForFangPopUp=false;this.mFangPopUpSpeedDetails=null;this.mFangRoadSummary=null;this.mdivFangRoadSummary=null;this.miFangPopUpSpeedId=-1;this.miFangPopUpSpeedX=0;this.miFangPopUpSpeedY=0;this.mstrFangPopUpSpeedDetailsBodyOverflow="";this.mpnlCamPopUp=null;this.mspnCameraHeader=null;this.mpnlSummaryPopUp=null;this.mspnSummaryHeader=null;this.mDivPopupSummary=null;this.mRoadSummary=null;this.mCurrentHotSpotX=0;this.mCurrentHotSpotY=0;this.mbCheckMouseDistance=false;this.miExtraFloatingPopUpWidth=0;this.miExtraFloatingPopUpHeight=0;this.miFloatingPopUpCamId=-1;this.mtmrFloatingPopUp=null;this.mdivBlindSummary=null;this.mBlindRoadSummaryCtrl=null;this.onFontSizeChanged=new g("fontsizechanged");this.onShowHideCamerasButtonClicked=new g("showhidecamerasbuttonclicked");this._super(y,B);this.onCameraLayerVisibilityChanged.subscribe(a,null,this);if(this.onMapDragStartedWithMouse&&this.onMapDragFinishedWithMouse){this.onMapDragStartedWithMouse.subscribe(this.onStartDrag,null,this);this.onMapDragFinishedWithMouse.subscribe(this.onEndDrag,null,this)}YAHOO.util.Dom.setStyle(this.mdivHelpBlindContentContainer,"display","none");YAHOO.util.Event.on(this.mLayers,"mousemove",this.onMapLayersMouseMove,null,this);var A=this.moConfig.getProperty("summaryposition");this.moConfig.setProperty("summaryposition","");var z=function(){switch(this.moConfig.getProperty("startblind")){case"details":this.setSummaryPosition(A);break;case"help":this.setSummaryPosition(A,this.slideHelpBlind);break;case"options":this.setSummaryPosition(A);break;default:this.setSummaryPosition(A);break}};if(this.moConfig.getProperty("showoptionsbutton")){YAHOO.util.Event.onAvailable(this.mradUseNoDetails.id,z,null,this);var x=this.moConfig.getProperty("fontsize");YAHOO.util.Event.onAvailable(this.mradUseNoDetails.id,function(){switch(x){case"small":this.mradSmallFont.checked=true;break;case"large":this.mradLargeFont.checked=true;break}},null,this)}else{z.call(this)}Sigalert.common.cacheImage(GstrImageDir+"/Cursors/HMove.cur");Sigalert.common.cacheImage(GstrImageDir+"/Cursors/Hwe.cur");Sigalert.common.cacheImage(s)},className:"hotspot-map",initConfig:function(){this._super();this.moConfig.setProperty("enabledetails",true);this.moConfig.setProperty("enablehotspotclicking",true);this.moConfig.setProperty("summaryposition","popup");this.moConfig.setProperty("startblind","");this.moConfig.setProperty("showhelpbutton",true);this.moConfig.setProperty("showrefreshbutton",true);this.moConfig.setProperty("showoptionsbutton",true);this.moConfig.setProperty("showcamerabutton",true);this.moConfig.setProperty("showupdatetime",true);this.moConfig.setProperty("showlogo",true);this.moConfig.setProperty("popupwidth",235);this.moConfig.setProperty("summarywidth",300);this.moConfig.setProperty("sidebarinsert","");this.moConfig.setProperty("fontsize","small");this.moConfig.setProperty("closestartblindonaction",false);this.moConfig.setProperty("maxpopuprows",n);this.moConfig.setProperty("hidepopuptimeoutseconds",-1);this.moConfig.setProperty("floatingcampopupmaxwidth",-1)},constructMarkup:function(){this._super();var G=this.makeCover(d.StrWidgetCoverName,{className:"widget-cover"});this.mdivTest=c.make("div");YAHOO.util.Dom.setStyle(this.mdivTest,"position","absolute");YAHOO.util.Dom.setStyle(this.mdivTest,"visibility","hidden");document.body.appendChild(this.mdivTest);if(this.moConfig.getProperty("enabledetails")){YAHOO.util.Event.on(this.mLayers,"mousemove",this.onHotSpotMouseOver,null,this);if(this.moConfig.getProperty("enablehotspotclicking")){YAHOO.util.Event.on(this.mLayers,"click",this.onHotSpotMouseClick,null,this)}}if(this.moConfig.getProperty("showrefreshbutton")||this.moConfig.getProperty("showoptionsbutton")||this.moConfig.getProperty("showhelpbutton")||this.moConfig.getProperty("showcamerabutton")){this.mdivControls=c.make("div");YAHOO.util.Dom.addClass(this.mdivControls,"map-blind-controls");this.mdivBtnContainer=c.make("div");YAHOO.util.Dom.addClass(this.mdivBtnContainer,"map-image-buttons");this.mdivControls.appendChild(this.mdivBtnContainer);this.miButtonNum=1;this.mtblTest=c.make("table");YAHOO.util.Dom.setStyle(this.mtblTest,"position","absolute");YAHOO.util.Dom.setStyle(this.mtblTest,"visibility","hidden");this.mcellTest=this.mtblTest.insertRow(-1).insertCell(-1);document.body.appendChild(this.mtblTest);if(this.moConfig.getProperty("showhelpbutton")){this.mdivHelpBtn=c.make("div");YAHOO.util.Dom.addClass(this.mdivHelpBtn,"map-icon");YAHOO.util.Dom.addClass(this.mdivHelpBtn,"MapHelpIcon");YAHOO.util.Dom.addClass(this.mdivHelpBtn,"fixpng");YAHOO.util.Dom.addClass(this.mdivHelpBtn,"map-icon"+this.miButtonNum);this.mdivHelpBtn.title="Help";YAHOO.util.Event.on(this.mdivHelpBtn,"click",this.onHelpClicked,null,this);this.mdivBtnContainer.appendChild(this.mdivHelpBtn);this.mdivHelpBlindContainer=c.make("div");YAHOO.util.Dom.addClass(this.mdivHelpBlindContainer,"map-blind-container");YAHOO.util.Dom.addClass(this.mdivHelpBlindContainer,"map-blind-container-help");YAHOO.util.Dom.addClass(this.mdivHelpBlindContainer,"map-icon"+this.miButtonNum);this.mdivHelpBlind=c.make("div");YAHOO.util.Dom.addClass(this.mdivHelpBlind,"map-blind");YAHOO.util.Dom.addClass(this.mdivHelpBlind,"map-blind-help");this.mdivHelpBlindContainer.appendChild(this.mdivHelpBlind);this.mdivHelpBlindContentContainer=c.make("div");YAHOO.util.Dom.addClass(this.mdivHelpBlindContentContainer,"map-blind-content-container-help");YAHOO.util.Dom.addClass(this.mdivHelpBlindContentContainer,"MapHelpBoxBorder");YAHOO.util.Dom.addClass(this.mdivHelpBlindContentContainer,"MapBlindBackground");this.mdivHelpBlind.appendChild(this.mdivHelpBlindContentContainer);var E=c.make("div");YAHOO.util.Dom.addClass(E,"map-blind-bar-help");YAHOO.util.Dom.addClass(E,"MapHelpBoxHeader");this.mdivHelpBlindContentContainer.appendChild(E);this.mdivHelpBlindContent=c.make("div");YAHOO.util.Dom.addClass(this.mdivHelpBlindContent,"map-blind-content-help");this.mdivHelpBlindContentContainer.appendChild(this.mdivHelpBlindContent);this.mdivHelp=c.make("div");YAHOO.util.Dom.addClass(this.mdivHelp,"map-help MapBlindContent");this.mdivHelpBlindContent.appendChild(this.mdivHelp);this.mdivHelp.innerHTML="<div class='MapLegend'><h1>Map Help</h1><div style='margin-bottom: 3px'>Drag the map with your mouse to see different areas.</div><div>Zoom in and out with the slider or by double-clicking your mouse.</div><div class='ContentContainerDivider'></div><h1>Speeds (MPH)</h1><div class='MapLegendSpeeds fixpng'></div><div style='float:left'>Slow</div><div style='float:right'>Fast</div><p class='clear' /><h1>Incidents</h1><div class='MapLegendIncidents'><div class='MapLegendIncident MapLegendSevereIncident fixpng'></div><div class='MapLegendIncident MapLegendModerateIncident fixpng'></div><div class='MapLegendIncident MapLegendMinorIncident fixpng'></div></div><div>Severe&nbsp&nbsp&nbsp Moderate&nbsp&nbsp&nbsp Minor</div></div>";this.mdivHelpBlindBtn=c.make("div");YAHOO.util.Dom.addClass(this.mdivHelpBlindBtn,"map-blind-button MapBlindHelpButton MapBlindButtonClosed");YAHOO.util.Event.on(this.mdivHelpBlindBtn,"click",this.onHelpClicked,null,this);this.mdivHelpBlind.appendChild(this.mdivHelpBlindBtn);this.mcellTest.appendChild(this.mdivHelpBlindContainer);this.moHelpBlind.maBlindDimen=[Sigalert.common.element.getWidth(this.mdivHelpBlind),Sigalert.common.element.getHeight(this.mdivHelpBlind)];this.moHelpBlind.maClosedBlindContainerDimen[1]=Sigalert.common.element.getDimension(this.mdivHelpBlindBtn,"height");this.moHelpBlind.miBlindContainerHeight=this.moHelpBlind.maBlindDimen[1]+this.moHelpBlind.maClosedBlindContainerDimen[1]-1;this.mdivHelpBlindContainer=this.mcellTest.removeChild(this.mdivHelpBlindContainer);this.mdivBtnContainer.appendChild(this.mdivHelpBlindContainer);var A=this.mdivHelpBtn.cloneNode(false);YAHOO.util.Dom.setStyle(A,"position","absolute");YAHOO.util.Dom.setStyle(A,"visibility","hidden");document.body.appendChild(A);this.moHelpBlind.maClosedBlindContainerDimen[0]=Sigalert.common.element.getDimension(A,"width");document.body.removeChild(A);YAHOO.util.Dom.setStyle(this.mdivHelpBlind,"position","absolute");YAHOO.util.Dom.setStyle(this.mdivHelpBlind,"width",this.moHelpBlind.maBlindDimen[0]+"px");YAHOO.util.Dom.setStyle(this.mdivHelpBlind,"height",this.moHelpBlind.maBlindDimen[1]+"px");YAHOO.util.Dom.setStyle(this.mdivHelpBlindContainer,"position","absolute");YAHOO.util.Dom.setStyle(this.mdivHelpBlindContainer,"width",this.moHelpBlind.maClosedBlindContainerDimen[0]+"px");YAHOO.util.Dom.setStyle(this.mdivHelpBlindContainer,"height",this.moHelpBlind.maClosedBlindContainerDimen[1]+"px");YAHOO.util.Event.on(this.mdivHelpBlind,"mouseover",this._onMapMouseOut,null,this);this.miButtonNum+=1}if(this.moConfig.getProperty("showoptionsbutton")){this.mdivOptionsBtn=c.make("div");YAHOO.util.Dom.addClass(this.mdivOptionsBtn,"map-icon");YAHOO.util.Dom.addClass(this.mdivOptionsBtn,"map-options-icon");YAHOO.util.Dom.addClass(this.mdivOptionsBtn,"MapOptionsIcon");YAHOO.util.Dom.addClass(this.mdivOptionsBtn,"fixpng");YAHOO.util.Dom.addClass(this.mdivOptionsBtn,"map-icon"+this.miButtonNum);this.mdivOptionsBtn.title="Options";YAHOO.util.Event.on(this.mdivOptionsBtn,"click",this.onOptionsClicked,null,this);this.mdivBtnContainer.appendChild(this.mdivOptionsBtn);this.mdivOptionsBlindContainer=c.make("div");YAHOO.util.Dom.addClass(this.mdivOptionsBlindContainer,"map-blind-container");YAHOO.util.Dom.addClass(this.mdivOptionsBlindContainer,"map-blind-container-options");YAHOO.util.Dom.addClass(this.mdivOptionsBlindContainer,"map-icon"+this.miButtonNum);this.mdivOptionsBlind=c.make("div");YAHOO.util.Dom.addClass(this.mdivOptionsBlind,"map-blind");YAHOO.util.Dom.addClass(this.mdivOptionsBlind,"map-blind-options");this.mdivOptionsBlindContainer.appendChild(this.mdivOptionsBlind);this.mdivOptionsBlindContentContainer=c.make("div");YAHOO.util.Dom.addClass(this.mdivOptionsBlindContentContainer,"map-blind-content-container-options");YAHOO.util.Dom.addClass(this.mdivOptionsBlindContentContainer,"MapOptionsBoxBorder");YAHOO.util.Dom.addClass(this.mdivOptionsBlindContentContainer,"MapBlindBackground");this.mdivOptionsBlind.appendChild(this.mdivOptionsBlindContentContainer);var F=c.make("div");YAHOO.util.Dom.addClass(F,"map-blind-bar-options");YAHOO.util.Dom.addClass(F,"MapOptionsBoxHeader");this.mdivOptionsBlindContentContainer.appendChild(F);this.mdivOptionsBlindContent=c.make("div");YAHOO.util.Dom.addClass(this.mdivOptionsBlindContent,"map-blind-content-options");this.mdivOptionsBlindContentContainer.appendChild(this.mdivOptionsBlindContent);this.mdivOptions=c.make("div");YAHOO.util.Dom.addClass(this.mdivOptions,"map-options");YAHOO.util.Dom.addClass(this.mdivOptions,"MapBlindContent");this.mdivOptionsBlindContent.appendChild(this.mdivOptions);var y=YAHOO.util.Dom.generateId(null,"radUsePopUps"),C=YAHOO.util.Dom.generateId(null,"radUseBlinds"),x=YAHOO.util.Dom.generateId(null,"radUseNoDetails"),H=YAHOO.util.Dom.generateId(null,this.miMapId+"_radSmallFont"),z=YAHOO.util.Dom.generateId(null,this.miMapId+"_radLargeFont");this.mdivOptions.innerHTML="<span><b>Show Traffic Details:</b></span><br><input type='radio' id='"+y+"' name='details' value='0' /><label for='"+y+"'>Near Mouse</label><br><input type='radio' id='"+C+"' name='details' value='1' /><label for='"+C+"'>Upper-Right Corner</label><br><input type='radio' id='"+x+"' name='details' value='2' checked=true /><label for='"+x+"'>None</label><br><br><span><b>Font Size:</b></span><br><input type='radio' id='"+H+"' name='fontsize' value='1' /><label for='"+H+"'>Small Font</label><br><input type='radio' id='"+z+"' name='fontsize' value='0' /><label for='"+z+"'>Large Font</label>";this.mradUsePopUps=YAHOO.util.Dom.getFirstChildBy(this.mdivOptions,function(I){return I.id===y});this.mradUseBlinds=YAHOO.util.Dom.getFirstChildBy(this.mdivOptions,function(I){return I.id===C});this.mradUseNoDetails=YAHOO.util.Dom.getFirstChildBy(this.mdivOptions,function(I){return I.id===x});this.mradSmallFont=YAHOO.util.Dom.getFirstChildBy(this.mdivOptions,function(I){return I.id===H});this.mradLargeFont=YAHOO.util.Dom.getFirstChildBy(this.mdivOptions,function(I){return I.id===z});YAHOO.util.Event.on(this.mradUsePopUps,"click",this.onUsePopUpsChanged,null,this);YAHOO.util.Event.on(this.mradUseBlinds,"click",this.onUseBlindsChanged,null,this);YAHOO.util.Event.on(this.mradUseNoDetails,"click",this.onUseNoDetailsChanged,null,this);YAHOO.util.Event.on(this.mradSmallFont,"click",this.onUseSmallFontChanged,null,this);YAHOO.util.Event.on(this.mradLargeFont,"click",this.onUseLargeFontChanged,null,this);this.mdivOptionsBlindBtn=c.make("div");YAHOO.util.Dom.addClass(this.mdivOptionsBlindBtn,"map-blind-button MapBlindOptionsButton MapBlindButtonClosed");YAHOO.util.Event.on(this.mdivOptionsBlindBtn,"click",this.onOptionsClicked,null,this);this.mdivOptionsBlind.appendChild(this.mdivOptionsBlindBtn);this.mcellTest.appendChild(this.mdivOptionsBlindContainer);this.moOptionsBlind.maBlindDimen=[Sigalert.common.element.getWidth(this.mdivOptionsBlind),Sigalert.common.element.getHeight(this.mdivOptionsBlind)];this.moOptionsBlind.maClosedBlindContainerDimen[1]=Sigalert.common.element.getDimension(this.mdivOptionsBlindBtn,"height");this.moOptionsBlind.miBlindContainerHeight=this.moOptionsBlind.maBlindDimen[1]+this.moOptionsBlind.maClosedBlindContainerDimen[1]-1;this.mdivOptionsBlindContainer=this.mcellTest.removeChild(this.mdivOptionsBlindContainer);this.mdivBtnContainer.appendChild(this.mdivOptionsBlindContainer);var A=this.mdivOptionsBtn.cloneNode(false);YAHOO.util.Dom.setStyle(A,"position","absolute");YAHOO.util.Dom.setStyle(A,"visibility","hidden");document.body.appendChild(A);this.moOptionsBlind.maClosedBlindContainerDimen[0]=Sigalert.common.element.getDimension(A,"width");document.body.removeChild(A);YAHOO.util.Dom.setStyle(this.mdivOptionsBlind,"position","absolute");YAHOO.util.Dom.setStyle(this.mdivOptionsBlind,"width",this.moOptionsBlind.maBlindDimen[0]+"px");YAHOO.util.Dom.setStyle(this.mdivOptionsBlind,"height",this.moOptionsBlind.maBlindDimen[1]+"px");YAHOO.util.Dom.setStyle(this.mdivOptionsBlindContainer,"position","absolute");YAHOO.util.Dom.setStyle(this.mdivOptionsBlindContainer,"width",this.moOptionsBlind.maClosedBlindContainerDimen[0]+"px");YAHOO.util.Dom.setStyle(this.mdivOptionsBlindContainer,"height",this.moOptionsBlind.maClosedBlindContainerDimen[1]+"px");YAHOO.util.Dom.setStyle(this.mdivOptionsBlindContentContainer,"display","none");YAHOO.util.Event.on(this.mdivOptionsBlind,"mouseover",this._onMapMouseOut,null,this);this.miButtonNum+=1}if(this.moConfig.getProperty("showrefreshbutton")){this.mdivRefreshBtn=c.make("div");YAHOO.util.Dom.addClass(this.mdivRefreshBtn,"map-icon");YAHOO.util.Dom.addClass(this.mdivRefreshBtn,"map-refresh-icon");YAHOO.util.Dom.addClass(this.mdivRefreshBtn,"MapRefreshIcon");YAHOO.util.Dom.addClass(this.mdivRefreshBtn,"map-icon"+this.miButtonNum);this.mdivRefreshBtn.title="Refresh";YAHOO.util.Event.on(this.mdivRefreshBtn,"click",this.onRefreshClicked,null,this);this.mdivBtnContainer.appendChild(this.mdivRefreshBtn);this.miButtonNum+=1}this.mdivTrafficContainer=c.make("div");YAHOO.util.Dom.addClass(this.mdivTrafficContainer,"map-traffic-container");this.mdivControls.appendChild(this.mdivTrafficContainer);this.mdivTrafficHolder=c.make("div");YAHOO.util.Dom.setStyle(this.mdivTrafficHolder,"opacity",0);YAHOO.util.Dom.setStyle(this.mdivTrafficHolder,"visibility","hidden");this.mdivTrafficContainer.appendChild(this.mdivTrafficHolder);this.mdivTrafficBtn=c.make("div");YAHOO.util.Dom.addClass(this.mdivTrafficBtn,"MapPopUpTitle map-traffic-button MapTrafficButton");this.mdivTrafficBtn.innerHTML=w;YAHOO.util.Event.on(this.mdivTrafficBtn,"click",this.onTrafficBlindClicked,null,this);this.mdivTrafficHolder.appendChild(this.mdivTrafficBtn);this.mdivTrafficBlindContainer=c.make("div");YAHOO.util.Dom.addClass(this.mdivTrafficBlindContainer,"map-blind-container map-blind-container-traffic");this.mdivTrafficBlind=c.make("div");YAHOO.util.Dom.addClass(this.mdivTrafficBlind,"map-blind map-blind-traffic");this.mdivTrafficBlindContainer.appendChild(this.mdivTrafficBlind);this.mdivTrafficBlindContentContainer=c.make("div");YAHOO.util.Dom.addClass(this.mdivTrafficBlindContentContainer,"map-blind-content-container-traffic MapTrafficBlindContainer MapBlindBackground");this.mdivTrafficBlind.appendChild(this.mdivTrafficBlindContentContainer);var B=c.make("div");YAHOO.util.Dom.addClass(B,"map-blind-bar-traffic MapTrafficButton");this.mdivTrafficBlindContentContainer.appendChild(B);this.mdivTrafficBlindContent=c.make("div");YAHOO.util.Dom.addClass(this.mdivTrafficBlindContent,"map-blind-content-traffic");this.mdivTrafficBlindContentContainer.appendChild(this.mdivTrafficBlindContent);this.mdivTrafficBlindClosedBtn=c.make("div");YAHOO.util.Dom.addClass(this.mdivTrafficBlindClosedBtn,"MapBlindTrafficButton MapTrafficBlindButtonClosed "+Sigalert.common.CssFixPng);YAHOO.util.Event.on(this.mdivTrafficBlindClosedBtn,"click",this.onTrafficBlindClicked,null,this);this.mdivTrafficBlind.appendChild(this.mdivTrafficBlindClosedBtn);this.mdivTrafficBlindOpenBtn=c.make("div");YAHOO.util.Dom.addClass(this.mdivTrafficBlindOpenBtn,"MapBlindTrafficButton MapTrafficBlindButtonOpen "+Sigalert.common.CssFixPng);YAHOO.util.Event.on(this.mdivTrafficBlindOpenBtn,"click",this.onTrafficBlindClicked,null,this);this.mdivTrafficBlind.appendChild(this.mdivTrafficBlindOpenBtn);this.mdivBlindSummary=c.make("div");YAHOO.util.Dom.addClass(this.mdivBlindSummary,"map-traffic MapTrafficBlindEmptySummary");this.mBlindRoadSummaryCtrl=new Sigalert.controls.RoadSummaryControl({showheader:true,disablepopups:true,region:this.moConfig.getProperty("region")});this.mBlindRoadSummaryCtrl.hideCameras();this.mBlindRoadSummaryCtrl.render(this.mdivBlindSummary);this.mdivTrafficBlindContent.appendChild(this.mdivBlindSummary);this.mBlindRoadSummaryCtrl.setEmptyRow(e,"MapTrafficDetailsDescription");this.mdivBlindTrafficCam=c.make("div");YAHOO.util.Dom.addClass(this.mdivBlindTrafficCam,"map-traffic-cam");this.mdivTrafficBlindContent.appendChild(this.mdivBlindTrafficCam);this.mdivTrafficBlindContent.appendChild(Sigalert.common.createClear());YAHOO.util.Dom.setStyle(this.mdivBlindSummary,"display","block");YAHOO.util.Dom.setStyle(this.mdivBlindTrafficCam,"display","none");var D=this.moConfig.getProperty("fontsize");this.setFontSize("large");this._calcTrafficBlindSize();this.setFontSize("small");this._calcTrafficBlindSize();if(YAHOO.env.ua.ie){this.moTrafficBlind.large.maBlindDimen[0]+=1;this.moTrafficBlind.large.maBlindDimen[1]+=1}this.setFontSize(D);YAHOO.util.Event.on(this.mdivTrafficBlind,"mouseover",this._onMapMouseOut,null,this);G.append(this.mdivControls)}if(this.moConfig.getProperty("showlogo")){this.addLogo(d.StrLogoCoverName,"sigalert").addClassName("MapLogo")}if(this.moConfig.getProperty("showupdatetime")){this.mdivTimeStamp=c.create("div").setClass("MapTimeStamp").appendTo(G.getElement()).get()}},_onReady:function(){this.highlightLayer=this.makeLayer(m.StrHighlightLayerName,{className:"highlight-layer"});var x=this.getMapLatLon();this.highlightLayer.addPushpin("speed-outline",x[0],x[1],{visible:false,iconUrl:m.ZoomLevelSpeedOutlineIcon}).unplug(Chai.Widget.MouseCapturePlugin);this.highlightLayer.addPushpin("speed-highlight",x[0],x[1],{visible:false,iconUrl:m.ZoomLevelSpeedHighlightIcon}).unplug(Chai.Widget.MouseCapturePlugin);this.highlightLayer.addPushpin("incident-outline",x[0],x[1],{visible:false,iconUrl:m.ZoomLevelIncidentOutlineIcon}).unplug(Chai.Widget.MouseCapturePlugin);this.highlightLayer.addPushpin("incident-highlight",x[0],x[1],{visible:false,iconUrl:m.ZoomLevelIncidentHighlightIcon}).unplug(Chai.Widget.MouseCapturePlugin);this.highlightLayer.addPushpin("camera-outline",x[0],x[1],{visible:false,iconUrl:m.ZoomLevelCameraOutlineIcon}).unplug(Chai.Widget.MouseCapturePlugin);this.highlightLayer.addPushpin("camera-highlight",x[0],x[1],{visible:false,iconUrl:m.ZoomLevelCameraHighlightIcon}).unplug(Chai.Widget.MouseCapturePlugin);this._super();if(this.mRoadSummary){this.mRoadSummary.resetData();this.mRoadSummary.moConfig.setProperty("region",this.moConfig.getProperty("region"))}if(this.mBlindRoadSummaryCtrl){this.mBlindRoadSummaryCtrl.resetData();this.mBlindRoadSummaryCtrl.moConfig.setProperty("region",this.moConfig.getProperty("region"))}if(this.mFangRoadSummary){this.mFangRoadSummary.resetData();this.mFangRoadSummary.moConfig.setProperty("region",this.moConfig.getProperty("region"))}this._processDynamicData()},removeAllHotSpots:function(x){if(typeof(this.mdictNamedKdHotspots[x])!=="undefined"){this.mdictNamedKdHotspots[x].clear()}},getHotSpotsAreEnabled:function(x){if(typeof(this.mdictNamedKdHotspots[x])!=="undefined"){return this.mdictNamedKdHotspots[x].enabled}return false},setHotSpotsAreEnabled:function(x,y){if(typeof(this.mdictNamedKdHotspots[x])!=="undefined"){this.mdictNamedKdHotspots[x].enabled=y}},toggleHotSpotsAreEnabled:function(x){if(typeof(this.mdictNamedKdHotspots[x])!=="undefined"){var y=this.mdictNamedKdHotspots[x];y.enabled=!y.enabled;return y.enabled}return false},makeHotSpot:function(x,y,A){var C=this.mdictNamedKdHotspots[x];if(typeof(C)==="undefined"){C=new b({name:x,enabled:false});this.mdictNamedKdHotspots[x]=C}var B=A.childrenPosition==A.arrayIndex||A.childrenPosition>A.arrayIndex+1?A.arrayIndex+1:0,z=A.childrenPosition>A.arrayIndex?A.childrenPosition:0;C.addWithChildren(A.x,A.y,B,z,y,A)},_processDynamicData:function(){var B=this.moConfig.getProperty("region"),y=j[B],x=Sigalert.TrafficData[B],C=Sigalert.TrafficData.Index,A=new b({name:"DynamicData",enabled:true});if(this.mdivTimeStamp){var z=y.trafficData.get("updateTime");if(z!==null){this.mdivTimeStamp.innerHTML=l.format(z,"Data from: %h:%MM %TT")}else{this.mdivTimeStamp.innerHTML="No Data"}}f.forEach(x.SensorPositions,function(F,E){var D=F[C.CompressedSensorPosChildren];A.addWithChildren(F[C.CompressedSensorPosX],F[C.CompressedSensorPosY],D===E||D>E+1?E+1:0,D>E?D:0,p.Speed,F[C.CompressedSensorPosIndex])});f.forEach(y.trafficData.get("incidents"),function(E,D){A.add(E[C.IncX],E[C.IncY],p.Inc,D)});this.mdictNamedKdHotspots[A.name]=A},loadCameras:function(C,B,z){this._super(C,B,z);var A=j[this.moConfig.getProperty("region")].trafficData.get("cameras"),x=p.Cam,y=d.StrCameraLayerName;this.removeAllHotSpots(y);f.forEach(A,function(D){this.makeHotSpot(y,x,D)},this);if(z){this.setHotSpotsAreEnabled(y,true)}if(f.isArray(A)&&A.length>0){this.updateCameraButton(!this.isLayerHidden(y))}},_findHotSpot:function(B,E){var D=this.xScale(),x=this.yScale(),y=Math.sqrt(h/2);y=(y*D)*(y*D)+(y*x)*(y*x);var C=this.clientXyToMapXy(B,E);C[0]*=D;C[1]*=x;var z=[];f.forEach(this.mdictNamedKdHotspots,function(H){if(H.enabled){var G=H.findNearestHotSpot(y,C);G.name=H.name;z.push(G)}},this);var F=null,A=null;f.forEach(z,function(G){if(F===null||(G.iPoint>=0&&G.dDistSqd<F.dDistSqd)){F=G;A=this.mdictNamedKdHotspots[F.name].getHotSpotAtIndex(F.iPoint)}},this);if(A&&F){return{hotSpot:A,distance:F.dDistSqd}}return null},getClientXYForHotSpot:function(B,A,y,z){var x=this.clientXyToMapXy(y,z);x[0]*=this.xScale();x[1]*=this.yScale();return[y+(B-x[0]),z+(A-x[1])]},_getFontFontSizeAsInt:function(x){x=x||this.moConfig.getProperty("fontsize");switch(x){case"small":return 0.85;case"large":return 1.1}return 0.85},_getFontSize:function(x){x=x||this.moConfig.getProperty("fontsize");switch(x){case"small":return"0.85em";case"large":return"1.1em"}return"0.85em"},setFontSize:function(x){switch(x){case"small":this.moTrafficBlind.current=this.moTrafficBlind.small;break;case"large":this.moTrafficBlind.current=this.moTrafficBlind.large;break;default:return}var y=this._getFontSize(x);if(this.mdivTrafficBlindContent){YAHOO.util.Dom.setStyle(this.mdivTrafficBlindContent,"fontSize",y)}if(this.mDivPopUp){YAHOO.util.Dom.setStyle(this.mDivPopUp,"fontSize",y)}if(this.mPopUpDetails){this.mPopUpDetails.setFontSize(y)}if(this.mFangPopUpSpeedDetails){this.mFangPopUpSpeedDetails.setFontSize(y)}if(this.moTrafficBlind.current.miBlindContainerHeight!==0){this._setTrafficBlindSize()}this.moConfig.setProperty("fontsize",x);this.onFontSizeChanged.fire({map:this,fontsize:x})},setSummaryPosition:function(A,B){if(!this.moConfig.getProperty("enabledetails")){this.moConfig.setProperty("summaryposition",A.toLowerCase());return}var A=A.toLowerCase(),y=this.moConfig.getProperty("summaryposition");if(y!==A){if(y==="blinds"){this.hideBlindsCamera()}switch(A){case"popup":YAHOO.util.Dom.removeClass(this.mViewport,"MapViewportRight");YAHOO.util.Dom.replaceClass(this.mViewport,"MapViewportLeft","MapViewportWide");Sigalert.common.WriteCookie("MPP","p",365);if(this.mbAnimTrafficBtnVisible){this.fadeTrafficButton()}if(this.mradUsePopUps){this.mradUsePopUps.checked=true}if(!this.mpnlSummaryPopUp){this.mpnlSummaryPopUp=new YAHOO.widget.Panel("pnlMapSummaryPopup",{width:this.moConfig.getProperty("popupwidth")+"px",zIndex:10,close:false,underlay:"none",xy:[0,0],visible:false,draggable:false});if(this.moConfig.getProperty("hidepopuptimeoutseconds")!==-1){this.mpnlSummaryPopUp.showEvent.subscribe(function(){if(this.mtmrFloatingPopUp!==null){clearTimeout(this.mtmrFloatingPopUp)}var C=this;this.mtmrFloatingPopUp=setTimeout(function(){C.hideRoadSummaryMapPopup()},this.moConfig.getProperty("hidepopuptimeoutseconds")*1000)},null,this)}this.mDivPopUp=c.make("div","MapPopUpContent");YAHOO.util.Dom.setStyle(this.mDivPopUp,"fontSize",this._getFontSize());this.mDivPopupSummary=c.make("div","MapPopUpSummary SummaryBorder");this.mRoadSummary=new Sigalert.controls.RoadSummaryControl({showheader:true,disablepopups:true,region:this.moConfig.getProperty("region")});this.mRoadSummary.hideCameras();this.mRoadSummary.render(this.mDivPopupSummary);this.mDivPopUp.appendChild(this.mDivPopupSummary);var x=c.make("div");var z=c.make("div");this.mspnSummaryHeader=c.make("span","map-popup-title MapPopUpTitle MapTabBorder MapTabBackground");this.mspnSummaryHeader.innerHTML="Road";z.appendChild(this.mspnSummaryHeader);x.appendChild(z);x.appendChild(c.make("div","MapPopUpHeaderBorder MapTabBorder MapTabBackground"));this.mpnlSummaryPopUp.setHeader(x);this.mpnlSummaryPopUp.setBody(this.mDivPopUp);this.mpnlSummaryPopUp.render(document.body)}if(B){B.call(this)}break;case"blinds":YAHOO.util.Dom.removeClass(this.mViewport,"MapViewportRight");YAHOO.util.Dom.replaceClass(this.mViewport,"MapViewportLeft","MapViewportWide");Sigalert.common.WriteCookie("MPP","f",365);this.hidePopups();if(!this.mbAnimTrafficBtnVisible){this.slideButtons(this.fadeTrafficButton,B)}YAHOO.util.Dom.setStyle(this.mdivBlindSummary,"display","block");this.hideBlindsCamera();if(this.mradUsePopUps){this.mradUseBlinds.checked=true}break;case"none":YAHOO.util.Dom.removeClass(this.mViewport,"MapViewportRight");YAHOO.util.Dom.replaceClass(this.mViewport,"MapViewportLeft","MapViewportWide");Sigalert.common.WriteCookie("MPP","n",365);this.hidePopups();if(this.mbAnimTrafficBtnVisible){this.fadeTrafficButton()}if(this.mradUsePopUps){this.mradUseNoDetails.checked=true}if(B){B.call(this)}break}this.moConfig.setProperty("summaryposition",A)}},_calcTrafficBlindSize:function(){this.mcellTest.appendChild(this.mdivTrafficBlindContainer);YAHOO.util.Dom.addClass(this.mdivBlindSummary,"SummaryBorder");this.mBlindRoadSummaryCtrl.loadFakeSummaryForFocusedItem(n);this.moTrafficBlind.current.maBlindDimen=[Sigalert.common.element.getWidth(this.mdivTrafficBlind),Sigalert.common.element.getHeight(this.mdivTrafficBlindContentContainer)+Sigalert.common.element.getVerticalBorder(this.mdivTrafficBlindContentContainer)];this.moTrafficBlind.current.maClosedBlindContainerDimen[1]=Sigalert.common.element.getDimension(this.mdivTrafficBlindClosedBtn,"height")+Sigalert.common.element.getNonClientHeight(this.mdivTrafficBlindClosedBtn);this.moTrafficBlind.current.miBlindContainerHeight=this.moTrafficBlind.current.maBlindDimen[1]+this.moTrafficBlind.current.maClosedBlindContainerDimen[1];this.moTrafficBlind.current.miBlindSummaryHeight=Sigalert.common.element.getHeight(this.mdivBlindSummary);YAHOO.util.Dom.removeClass(this.mdivBlindSummary,"SummaryBorder");this.mBlindRoadSummaryCtrl.setEmptyRow(e,"MapTrafficDetailsDescription");this.mdivTrafficBlindContainer=this.mcellTest.removeChild(this.mdivTrafficBlindContainer);this.mdivTrafficHolder.appendChild(this.mdivTrafficBlindContainer);var x=this.mdivTrafficBtn.cloneNode(false);YAHOO.util.Dom.setStyle(x,"position","absolute");YAHOO.util.Dom.setStyle(x,"visibility","hidden");document.body.appendChild(x);this.moTrafficBlind.current.maClosedBlindContainerDimen[0]=Sigalert.common.element.getDimension(x,"width")+Sigalert.common.element.getNonClientWidth(x);document.body.removeChild(x)},_setTrafficBlindSize:function(){YAHOO.util.Dom.setStyle(this.mdivBlindSummary,"height",this.moTrafficBlind.current.miBlindSummaryHeight+"px");if(YAHOO.env.ua.gecko!==0){YAHOO.util.Dom.setStyle(this.mdivBlindTrafficCam,"height",(this.moTrafficBlind.current.miBlindSummaryHeight+2)+"px")}else{YAHOO.util.Dom.setStyle(this.mdivBlindTrafficCam,"height",this.moTrafficBlind.current.miBlindSummaryHeight+"px")}YAHOO.util.Dom.setStyle(this.mdivTrafficBlind,"position","absolute");YAHOO.util.Dom.setStyle(this.mdivTrafficBlind,"width",this.moTrafficBlind.current.maBlindDimen[0]+"px");YAHOO.util.Dom.setStyle(this.mdivTrafficBlind,"height",this.moTrafficBlind.current.maBlindDimen[1]+"px");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindContainer,"position","absolute");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindContainer,"width",(this.moTrafficBlind.current.maClosedBlindContainerDimen[0])+"px");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindContainer,"height",this.moTrafficBlind.current.maClosedBlindContainerDimen[1]+"px")},_getFangPopUpConstraints:function(z,y,x,A){function B(){var I=this.getMapXY(),G=this.miViewportWidthPixels/2,C=this.miViewportHeightPixels/2,K={offsets:k};K.region=new YAHOO.util.Region(I[1]-C+K.offsets.top,I[0]+G-K.offsets.right,I[1]+C-K.offsets.bottom,I[0]-G+K.offsets.left);K.width=K.region.right-K.region.left;K.height=K.region.bottom-K.region.top;K.dx=0;K.dy=0;var D=z,O=y,N={width:x.width,height:x.height,constrained:false,dx:0,dy:0,distance:0},M={width:A.width,height:A.height,constrained:false,dx:0,dy:0,distance:0};var J=new YAHOO.util.Region(K.region.top+25,K.region.right-25,K.region.bottom-17,K.region.left+25);if(!J.contains(new YAHOO.util.Point(D,O))){H=O-J.bottom,F=J.top-O,L=D-J.right,E=J.left-D;if(L>0&&E>0){if(L<E){K.dx=-L}else{K.dx=E}}else{if(L>0){K.dx=-L}else{if(E>0){K.dx=E}}}if(H>0&&F>0){if(H<F){K.dy=-H}else{K.dy=F}}else{if(H>0){K.dy=-H}else{if(F>0){K.dy=F}}}D+=K.dx;O+=K.dy}if(K.width<=N.width){N.constrained=true;N.width=K.width}if(K.height<=N.height){N.constrained=true;N.height=K.height}if(K.width<=M.width){M.constrained=true;M.width=K.width}if(K.height<=M.height){M.constrained=true;M.height=K.height}var L=(D+N.width)-K.region.right,E=K.region.left+N.width-D;if(L>0&&E>0){if(L<E){N.dx=-L;N.position="right"}else{N.dx=E;N.position="left"}}else{if(L<E){N.position="right"}else{N.position="left"}}var H=(O+M.height)-K.region.bottom,F=K.region.top+M.height-O;if(H>0&&F>0){if(H<F){M.dy=-H;M.position="below"}else{M.dy=F;M.position="above"}}else{if(H<F){M.position="below"}else{M.position="above"}}if(Math.abs(M.dy)<Math.abs(N.dx)){M.width=K.width;K.dy+=M.dy;K.position=M.position;K.width=M.width;if(K.position==="below"){K.height=K.region.bottom-O+Math.abs(M.dy)}else{K.height=O+Math.abs(M.dy)-K.region.top}K.constrained=M.constrained;K.isHoriz=false;K.isVert=true}else{N.height=K.height;K.dx+=N.dx;K.position=N.position;if(K.position==="right"){K.width=K.region.right-D+Math.abs(N.dx)}else{K.width=D+Math.abs(N.dx)-K.region.left}K.height=N.height;K.constrained=N.constrained;K.isHoriz=true;K.isVert=false}return K}if(this.mbAnimOptionsBlindShowing){this.slideOptionsBlind()}else{if(this.mbAnimHelpBlindShowing){this.slideHelpBlind()}else{if(this.mbAnimTrafficBlindShowing){this.slideTrafficBlind();this.mbTrafficBlindClosedForFangPopUp=true}}}return B.call(this)},_setCamIncFangPopUpBody:function(y,A,z){z=z||this._getFangPopUpConstraints();if(y!==null){this.mPopUpDetails.setBody(y)}var x=function(){var B=this.mapXyToElXy(this.miPopUpX/this.xScale(),this.miPopUpY/this.yScale());this.mPopUpDetails.setCaptureMouseEvents(false);this.mPopUpDetails.show(new YAHOO.util.Region(B[1]-1,B[0]+1,B[1]+1,B[0]-1));var C=this;setTimeout(function(){C.mPopUpDetails.setCaptureMouseEvents(true)},500)};if(!A||!this.slideMap(z.dx,z.dy,x,this)){x.call(this)}},_setupCamIncFangPopUp:function(y,A,z){if(!this.mPopUpDetails){this.mPopUpDetails=new Sigalert.controls.PopUpControl({capturemousevents:true});this.mPopUpDetails.hide();this.mPopUpDetails.render(this.mLayers);this.mPopUpDetails.setFontSize(this._getFontSize());var x=this;this.mPopUpDetails.onHide=function(){if(YAHOO.env.ua.gecko!==0){x.mPopUpDetails.setBodyOverflow("hidden")}x.mPopUpDetails.removeBody();x.miPopUpId=-1;x.miPopUpX=0;x.miPopUpY=0;x.mstrPopUpType="";x.moPopUpConfig=null;x.miIncDetailsLoadCount=0;x.moIncDetailsData=null;if(x.mbTrafficBlindClosedForFangPopUp){x.slideTrafficBlind();x.mbTrafficBlindClosedForFangPopUp=false}};this.mPopUpDetails.onMouseEvent.subscribe(function(){this.hidePopups()},null,this)}this.miPopUpId=y;this.miPopUpX=A;this.miPopUpY=z;this.moPopUpDataItem=null;this.miIncDetailsLoadCount=0;this.moIncDetailsData=null;this.mPopUpDetails.removeBody();this.hidePopups()},showCameraFangPopUp:function(C,D){if(this.mFangPopUpSpeedDetails){this.mFangPopUpSpeedDetails.hide()}var E=this.moConfig.getProperty("region");this._setupCamIncFangPopUp(C.id,C.x,C.y);this.mstrPopUpType="cam";this.moPopUpDataItem=C;var I=Sigalert.controls.PopUpControl,P=this.mPopUpDetails.getNonBodyWidth(),J=this.mPopUpDetails.getNonBodyHeight(),x=this.mPopUpDetails.getLeftAndRightFangWidth(),K=this.mPopUpDetails.getTopAndBottomFangHeight(),F=100,y={width:I.IntAdWidth+P+x,height:F+J},A={width:I.IntAdWidth+P,height:F+J+K},z=this._getFangPopUpConstraints(this.miPopUpX/this.xScale(),this.miPopUpY/this.yScale(),y,A),N=(z.isHoriz?P+x:P),O=(z.isVert?J+K:J),G=I.IntAdWidth,B=z.width-N,L=F,H=z.height-O;this.mPopUpDetails.moConfig.setProperty("minwidth",G);this.mPopUpDetails.moConfig.setProperty("maxwidth",B);this.mPopUpDetails.moConfig.setProperty("minheight",L);this.mPopUpDetails.moConfig.setProperty("maxheight",H);this.mPopUpDetails.moConfig.setProperty("offsets",z.offsets);this.mPopUpDetails.moConfig.setProperty("positioningorder",[z.position]);var M={afterSuccess:function(W){this.mPopUpDetails.setBody(W.bodyElement);var R=Sigalert.common.element.getHeight(W.captionElement),S=H-R;var Q=W.imgLoader.width/W.imgLoader.height,X=Math.min(B,W.imgLoader.width),V=Math.min(S,W.imgLoader.height);var T=X,U=X/Q;if(U>V){U=V;T=V*Q}W.imgElement.width=T;W.imgElement.height=U;B=Math.min(B,T);B=Math.max(B,G);this.mPopUpDetails.moConfig.setProperty("maxwidth",B);H=Math.min(H,U+R);H=Math.max(H,L);this.mPopUpDetails.moConfig.setProperty("maxheight",H);this.mPopUpDetails.resizeSelf();this._setCamIncFangPopUpBody(null,D,z)},onFailure:function(Q){this._setCamIncFangPopUpBody(Q.bodyElement,D,z)},scope:this};Sigalert.common.createCameraDetailsContainer(C,M)},_showIncidentFangPopup:function(D,x,G){try{var J=Sigalert.controls.PopUpControl;var R=this.mPopUpDetails.getNonBodyWidth();var K=this.mPopUpDetails.getNonBodyHeight();var y=this.mPopUpDetails.getLeftAndRightFangWidth();var L=this.mPopUpDetails.getTopAndBottomFangHeight();var I=175;var z={width:J.IntAdWidth+R+y,height:I+K};var E={width:J.IntAdWidth+R,height:I+K+L};var A=this._getFangPopUpConstraints(this.miPopUpX/this.xScale(),this.miPopUpY/this.yScale(),z,E);var P=(A.isHoriz?R+y:R);var Q=(A.isVert?K+L:K);var O=J.IntAdWidth;var N=Math.min(A.width-P,450);var F=-1;var H=A.height-Q;this.mPopUpDetails.moConfig.setProperty("minwidth",O);this.mPopUpDetails.moConfig.setProperty("maxwidth",N);this.mPopUpDetails.moConfig.setProperty("minheight",F);this.mPopUpDetails.moConfig.setProperty("maxheight",H);this.mPopUpDetails.moConfig.setProperty("offsets",A.offsets);this.mPopUpDetails.moConfig.setProperty("positioningorder",[A.position]);this._setCamIncFangPopUpBody(Sigalert.common.createIncidentDetailsWithSummaryContainer(D,x),G,A)}catch(M){var C="[HotspotMap._showIncidentFangPopup "+M.name+": "+M.message+"]";C+=" [this.mPopUpDetails = "+typeof("this.mPopUpDetails")+"]";if(this.mPopUpDetails){if(this.mPopUpDetails.getNonBodyWidth){C+=" [this.mPopUpDetails.getNonBodyWidth = "+this.mPopUpDetails.getNonBodyWidth()+"]"}if(this.mPopUpDetails.getNonBodyHeight){C+=" [this.mPopUpDetails.getNonBodyHeight = "+this.mPopUpDetails.getNonBodyHeight()+"]"}if(this.mPopUpDetails.getLeftAndRightFangWidth){C+=" [this.mPopUpDetails.getLeftAndRightFangWidth = "+this.mPopUpDetails.getLeftAndRightFangWidth()+"]"}if(this.mPopUpDetails.getTopAndBottomFangHeight){C+=" [this.mPopUpDetails.getTopAndBottomFangHeight = "+this.mPopUpDetails.getTopAndBottomFangHeight()+"]"}}if(J){C+=" [PopUpControl.IntAdWidth = "+J.IntAdWidth+"]"}C+=" [iExtraPopUpWidth = "+P+"]";C+=" [iExtraPopUpHeight = "+Q+"]";C+=" [iMinIncWidth = "+O+"]";C+=" [iMaxIncWidth = "+N+"]";C+=" [iMinIncHeight = "+F+"]";C+=" [iMaxIncHeight = "+H+"]";C+=" [oDetails = "+typeof(D)+"]";C+=" [oIncData = "+typeof(x)+"]";var B=new Error(M.name+": "+M.message);B.extra=C;throw B}},_onIncidentSummaryDataRetrieved:function(x,y){if(this.miIncDetailsLoadCount===1&&this.mstrPopUpType==="inc"){this._showIncidentFangPopup(this.moIncDetailsData,x,y)}else{this.moIncDetailsData=x;this.miIncDetailsLoadCount+=1}},_onIncidentDetailsRetrieved:function(y,B){try{if(this.miIncDetailsLoadCount===1&&this.mstrPopUpType==="inc"){this._showIncidentFangPopup(y,this.moIncDetailsData,B)}else{this.moIncDetailsData=y;this.miIncDetailsLoadCount+=1}}catch(x){var A="[HotspotMap._onIncidentDetailsRetrieved "+x.name+": "+x.message+"]";A+=" [this.miIncDetailsLoadCount = "+this.miIncDetailsLoadCount+"]";A+=" [this.mstrPopUpType = "+this.mstrPopUpType+"]";if(x.extra){A+="\n"+x.extra}var z=new Error(x.extra?x.message:x.name+": "+x.message);z.extra=A;throw z}},showIncidentFangPopUp:function(z,y,x,A){if(this.mFangPopUpSpeedDetails){this.mFangPopUpSpeedDetails.hide()}this._setupCamIncFangPopUp(z,y,x);this.mstrPopUpType="inc";Sigalert.data.Incidents.getIncidentDetails(this.moConfig.getProperty("region"),this.miPopUpId,{success:this._onIncidentDetailsRetrieved,scope:this,argument:A});Sigalert.data.RoadSummary.getSummaryForItemById(this.moConfig.getProperty("region"),this._onIncidentSummaryDataRetrieved,A,this,"incident",this.miPopUpId)},showSpeedFangPopUp:function(y,x,B,z){z=f.applyDefaultProperties(z,{slideToHotspot:false,startSpeedId:null,endSpeedId:null,rowCount:31});var A=this.moConfig.getProperty("region");Sigalert.data.Roads.getRoadSectionId(A,function(N){if(this.mPopUpDetails){this.mPopUpDetails.hide()}if(!this.mFangPopUpSpeedDetails){this.mFangPopUpSpeedDetails=new Sigalert.controls.PopUpControl({capturemousevents:true});this.mFangPopUpSpeedDetails.hide();this.mFangPopUpSpeedDetails.render(this.mLayers);this.mFangPopUpSpeedDetails.setFontSize(this._getFontSize());var L=this;this.mFangPopUpSpeedDetails.onHide=function(){if(YAHOO.env.ua.gecko!==0){L.mFangPopUpSpeedDetails.setBodyOverflow("hidden")}L.miFangPopUpSpeedId=-1;L.miFangPopUpSpeedX=0;L.miFangPopUpSpeedY=0;L.mFangRoadSummary.hideDetailsPopUp();if(L.mbTrafficBlindClosedForFangPopUp){L.slideTrafficBlind();L.mbTrafficBlindClosedForFangPopUp=false}};this.mFangPopUpSpeedDetails.onMouseEvent.subscribe(function(){this.hidePopups()},null,this);YAHOO.util.Event.on(this.mFangPopUpSpeedDetails.mdivPopUp,"mouseover",this._onMapMouseOut,null,this);this.mdivFangRoadSummary=c.make("div");YAHOO.util.Dom.addClass(this.mdivFangRoadSummary,"MapFangPopUpRoadSummary");this.mFangRoadSummary=new Sigalert.controls.RoadDetailsControl({region:A,showheader:true,disablepopups:false,showrefreshbutton:false,showspeedsbutton:false,showincidentbutton:false,showcamerabutton:false});this.mFangRoadSummary.setSummaryListOverflow("hidden");this.mFangRoadSummary.removeHeaderPositionStyle();this.mFangRoadSummary.setTrackPopUpPosition(true);this.mFangRoadSummary.removeOuterBorder();this.mFangRoadSummary.render(this.mdivFangRoadSummary);this.mFangPopUpSpeedDetails.setBody(this.mdivFangRoadSummary,"SummaryBorder MapFangPopUpRoadRoadSummaryContainer")}if(YAHOO.env.ua.ie>0&&YAHOO.env.ua.ie<7){var C=(this.miViewportHeightPixels*0.0234)/this._getFontFontSizeAsInt();if(C<z.rowCount){z.rowCount=C}}if(f.isNumber(z.startSpeedId)&&f.isNumber(z.endSpeedId)){this.mFangRoadSummary.loadSummaryForRoadSegment(N,z.startSpeedId,z.endSpeedId,true)}else{this.mFangRoadSummary.loadSummaryForFocusedItem(N,Sigalert.data.Roads.getRoadLongName(A,N),"speed",y,z.rowCount,true)}this.miFangPopUpSpeedId=y;this.miFangPopUpSpeedX=x;this.miFangPopUpSpeedY=B;this.hidePopups();var I=Sigalert.controls.PopUpControl,G=this.mFangPopUpSpeedDetails.getNonBodyWidth(),F=this.mFangPopUpSpeedDetails.getNonBodyHeight(),J=this.mFangPopUpSpeedDetails.getLeftAndRightFangWidth(),H=this.mFangPopUpSpeedDetails.getTopAndBottomFangHeight(),E=200,M={width:I.IntAdWidth+G+J,height:E+F},D={width:I.IntAdWidth+G,height:E+F+H},K=this._getFangPopUpConstraints(this.miFangPopUpSpeedX/this.xScale(),this.miFangPopUpSpeedY/this.yScale(),M,D);iExtraPopUpWidth=(K.isHoriz?G+J:G),iExtraPopUpHeight=(K.isVert?F+H:F),iMinWidth=I.IntAdWidth,iMaxWidth=Math.min(K.width-iExtraPopUpWidth,250),iMinHeight=36,iMaxHeight=K.height-iExtraPopUpHeight;this.mFangPopUpSpeedDetails.moConfig.setProperty("minwidth",iMinWidth);this.mFangPopUpSpeedDetails.moConfig.setProperty("maxwidth",iMaxWidth);this.mFangPopUpSpeedDetails.moConfig.setProperty("minheight",iMinHeight);this.mFangPopUpSpeedDetails.moConfig.setProperty("maxheight",iMaxHeight);this.mFangPopUpSpeedDetails.moConfig.setProperty("offsets",K.offsets);this.mFangPopUpSpeedDetails.moConfig.setProperty("positioningorder",[K.position]);this.mFangPopUpSpeedDetails.resizeSelf();var O=function(){var P=this.mapXyToElXy(this.miFangPopUpSpeedX/this.xScale(),this.miFangPopUpSpeedY/this.yScale());this.mFangPopUpSpeedDetails.setCaptureMouseEvents(false);this.mFangPopUpSpeedDetails.show(new YAHOO.util.Region(P[1]-1,P[0]+1,P[1]+1,P[0]-1));var Q=this;setTimeout(function(){Q.mFangPopUpSpeedDetails.setCaptureMouseEvents(true)},500)};if(!z.slideToHotspot||!this.slideMap(K.dx,K.dy,O,this)){O.call(this)}},null,this,y)},hideSpeedFangPopUp:function(){if(this.mFangPopUpSpeedDetails){this.mFangPopUpSpeedDetails.hide()}},hideCamIncFangPopUp:function(){if(this.mPopUpDetails){this.mPopUpDetails.hide()}},hideFangPopUps:function(){this.hideCamIncFangPopUp();this.hideSpeedFangPopUp()},insurePopUpsAreValid:function(){if(this.miPopUpId!==-1){if(this.mstrPopUpType==="inc"&&Sigalert.data.Incidents.getIncidentExists(this.moConfig.getProperty("region"),this.miPopUpId)){this.showIncidentFangPopUp(this.miPopUpId,this.miPopUpX,this.miPopUpY,false)}else{if(this.mstrPopUpType==="cam"&&!this.moPopUpDataItem.isExtinct){this.showCameraFangPopUp(this.moPopUpDataItem,false)}else{this.miPopUpId=-1;this.moPopUpDataItem=null;this.hideCamIncFangPopUp()}}}},_getConstrainedX:function(y,D){y+=YAHOO.util.Dom.getDocumentScrollLeft();var A=v,z=YAHOO.util.Dom.getX(this.mViewport),B=y+A+D,C=y-A-D;xNew=0;if(B<this.miViewportWidthPixels+z){xNew=y+A}else{if(C>z){xNew=C}else{xNew=z+10}}return xNew},_getConstrainedY:function(E,C){E+=YAHOO.util.Dom.getDocumentScrollTop();var B=v,A=YAHOO.util.Dom.getY(this.mViewport),x=E+B+C,D=E-B-C,z=0;if(x<this.miViewportHeightPixels+A){z=E+B}else{if(D>A){z=D}else{z=A+10}}return z},hideCameraPopup:function(){this.mbCheckMouseDistance=false;if(this.mpnlCamPopUp){this.mpnlCamPopUp.hide()}},hideRoadSummaryMapPopup:function(){this.mbCheckMouseDistance=false;if(this.mpnlSummaryPopUp){this.mpnlSummaryPopUp.hide()}},hidePopups:function(){this.hideCameraPopup();this.hideRoadSummaryMapPopup()},showRoadSummaryPopup:function(y,D,z,C,B,A,x){if(y.ctrlKey){return}this.fire("showRoadItemsListPopUp",{popUp:this.mpnlSummaryPopUp,itemType:z},function(H){var G=true;this.hideCameraPopup();if(D>=0){if(!this.mRoadSummary.isFocusedItemLoaded(D,z,C,this.moConfig.getProperty("maxpopuprows"))){this.mRoadSummary.loadSummaryForFocusedItem(D,x,z,C,this.moConfig.getProperty("maxpopuprows"),true);G=false}}else{if(!this.mRoadSummary.isItemLoaded(z,C)){this.mRoadSummary.loadSummaryForItem(z,C);G=false}}this.mspnSummaryHeader.innerHTML=x;var F=this.getClientXYForHotSpot(B,A,y.clientX,y.clientY);this.mCurrentHotSpotX=F[0];this.mCurrentHotSpotY=F[1];this.mbCheckMouseDistance=true;if(!this.mpnlSummaryPopUp.cfg.getProperty("visible")||!G){var E=this._getConstrainedX(F[0],this.moConfig.getProperty("popupwidth"));var I=this._getConstrainedY(F[1],Sigalert.common.element.getHeight(this.mpnlSummaryPopUp.element));this.mpnlSummaryPopUp.cfg.setProperty("x",E);this.mpnlSummaryPopUp.cfg.setProperty("y",I);this.mpnlSummaryPopUp.show()}})},showCameraPopup:function(G,x,y,K){if(K.ctrlKey){return}this.hideRoadSummaryMapPopup();if(!this.mpnlCamPopUp){this.mpnlCamPopUp=new YAHOO.widget.Panel("pnlMapCameraPopup",{zIndex:10,context:["idViewport","tr","tr"],constraintoviewport:true,close:false,underlay:"none",draggable:false});if(this.moConfig.getProperty("hidepopuptimeoutseconds")!==-1){this.mpnlCamPopUp.showEvent.subscribe(function(){if(this.mtmrFloatingPopUp!==null){clearTimeout(this.mtmrFloatingPopUp)}var N=this;this.mtmrFloatingPopUp=setTimeout(function(){N.hideCameraPopup()},this.moConfig.getProperty("hidepopuptimeoutseconds")*1000)},null,this)}this.mpnlCamPopUp.hideEvent.subscribe(function(){this.miFloatingPopUpCamId=-1;this.mpnlCamPopUp.setBody("")},null,this);var M=c.make("div");var J=c.make("div");this.mspnCameraHeader=c.make("span","map-popup-title MapPopUpTitle MapTabBorder MapTabBackground");this.mspnCameraHeader.innerHTML="Camera";var I=c.make("div","MapPopUpHeaderBorder MapTabBorder MapTabBackground");J.appendChild(this.mspnCameraHeader);M.appendChild(J);M.appendChild(I);this.mpnlCamPopUp.setHeader(M);this.mpnlCamPopUp.setBody("");this.mpnlCamPopUp.render(document.body);this.miExtraFloatingPopUpWidth=Sigalert.common.element.getNonClientWidth(this.mpnlCamPopUp.body);this.miExtraFloatingPopUpHeight=Sigalert.common.element.getHeight(this.mpnlCamPopUp.element)}var F=this.getClientXYForHotSpot(x.x,x.y,K.clientX,K.clientY);this.mCurrentHotSpotX=F[0];this.mCurrentHotSpotY=F[1];this.mbCheckMouseDistance=true;var B=this.miViewportWidthPixels-k.left-k.right-this.miExtraFloatingPopUpWidth,H=this.miViewportHeightPixels-k.top-k.bottom-this.miExtraFloatingPopUpHeight,D=this.getMapXY(),E=this.clientXyToMapXy(F[0],F[1]);function A(X,Q,V,Y,R,Z){function P(ac,ab){return ac.value>ab.value?ac:ab}function O(ah,ab,aj,ai,ae,ac,af,ad,ag){if(ab<aj){aj=ab/ai}else{ab=aj*ai}if(ag){if(N){if(X.x+af+R>V.right){af=V.right-R-X.x}}else{if(X.x-af-R<V.left){af=V.left-X.x}else{af=-R-af}}ad=ac?-Z+ad:ad}else{if(W){if(X.y+ad+Z>V.bottom){ad=V.bottom-Z-X.y}}else{if(X.y-ad-Z<V.top){ad=V.top-X.y}else{ad=-Z-ad}}af=ae?-R+af:af}return{location:ah,value:ab*aj,width:ab,height:aj,offsetX:af,offsetY:ad}}var W=(X.y-V.top<V.bottom-X.y),N=(X.x-V.left<V.right-X.x);var aa=O("left",X.x-V.left-Q,V.bottom-V.top-Q,Y,true,!W,-Q,Q,false),T=O("right",V.right-X.x-Q,V.bottom-V.top-Q,Y,false,!W,Q,Q,false),U=O("top",V.right-V.left-Q,X.y-V.top-Q,Y,!N,true,Q,-Q,true),S=O("bottom",V.right-V.left-Q,V.bottom-X.y-Q,Y,!N,false,Q,Q,true);return P(P(aa,T),P(U,S))}function L(W,X,O,U){var aa=W,Q=X,Y=aa/Q,V=aa+this.miExtraFloatingPopUpWidth,Z=0.4;this.mpnlCamPopUp.cfg.setProperty("width",V+"px");if(V>Z*this.miViewportWidthPixels){V=Z*this.miViewportWidthPixels;aa=V-this.miExtraFloatingPopUpWidth;Q=aa/Y}this.mpnlCamPopUp.cfg.setProperty("width",V+"px");var T=Sigalert.common.element.getWidth(U),R=Math.max(O,Sigalert.common.element.getHeight(U)),P=Q+R+this.miExtraFloatingPopUpHeight,S=V/P,N=A({x:E[0],y:E[1]},v,{left:D[0]-B/2,right:D[0]+B/2,top:D[1]-H/2,bottom:D[1]+H/2},S,V,P);return{offsetX:YAHOO.util.Dom.getDocumentScrollLeft()+F[0]+N.offsetX,offsetY:YAHOO.util.Dom.getDocumentScrollTop()+F[1]+N.offsetY,maxContentWidth:N.width-this.miExtraFloatingPopUpWidth,maxContentHeight:N.height-this.miExtraFloatingPopUpHeight,popupWidth:V,popupHeight:P,contentWidth:V-this.miExtraFloatingPopUpWidth,contentHeight:P-this.miExtraFloatingPopUpHeight,imgWidth:aa,imgHeight:Q,captionWidth:T,captionHeight:R}}var C=null;var z={afterSuccess:function(R){var N=R.imgLoader.width/R.imgLoader.height,S=Math.min(C.maxContentWidth,R.imgLoader.width),Q=Math.min(C.maxContentHeight,R.imgLoader.height),O=S,P=S/N;if(P>Q){P=Q;O=Q*N}var T=L.call(this,O,P,C.captionHeight,R.captionElement);R.imgElement.width=T.imgWidth;R.imgElement.height=T.imgHeight;this.mpnlCamPopUp.cfg.setProperty("x",T.offsetX);this.mpnlCamPopUp.cfg.setProperty("y",T.offsetY);this.mpnlCamPopUp.cfg.setProperty("width",T.popupWidth+"px");YAHOO.util.Dom.setStyle(R.bodyElement,"height",T.contentHeight+"px")},beforeImageLoad:function(N){this.mspnCameraHeader.innerHTML=G;this.mpnlCamPopUp.cfg.setProperty("width",null);this.mpnlCamPopUp.setBody(N.bodyElement);this.mpnlCamPopUp.render();var O=L.call(this,352,240,0,N.captionElement);this.mpnlCamPopUp.cfg.setProperty("x",O.offsetX);this.mpnlCamPopUp.cfg.setProperty("y",O.offsetY);this.mpnlCamPopUp.cfg.setProperty("width",O.popupWidth+"px");YAHOO.util.Dom.setStyle(N.bodyElement,"height",O.contentHeight+"px");C=O;this.mpnlCamPopUp.show();this.mpnlCamPopUp.cfg.setProperty("x",O.offsetX)},scope:this,imgLoadDelayMS:300};Sigalert.common.createCameraDetailsContainer(x,z)},loadBlindsRoadSummary:function(A,y,z,x){YAHOO.util.Dom.setStyle(this.mdivBlindSummary,"display","block");this.hideBlindsCamera();if(this.mbAnimTrafficBlindShowing){YAHOO.util.Dom.removeClass(this.mdivBlindSummary,"MapTrafficBlindEmptySummary");YAHOO.util.Dom.addClass(this.mdivBlindSummary,"SummaryBorder");if(A>=0){if(!this.mBlindRoadSummaryCtrl.isFocusedItemLoaded(A,y,z,n)){this.mdivTrafficBtn.innerHTML=x;this.mBlindRoadSummaryCtrl.loadSummaryForFocusedItem(A,x,y,z,n,true)}}else{if(!this.mBlindRoadSummaryCtrl.isItemLoaded(y,z)){this.mdivTrafficBtn.innerHTML=x;this.mBlindRoadSummaryCtrl.loadSummaryForItem(y,z)}}}},hideBlindsCamera:function(){YAHOO.util.Dom.setStyle(this.mdivBlindTrafficCam,"display","none");this.moBlindCamera=null;this.mdivBlindTrafficCam.innerHTML=""},loadBlindsCamera:function(z){YAHOO.util.Dom.setStyle(this.mdivBlindSummary,"display","none");YAHOO.util.Dom.setStyle(this.mdivBlindTrafficCam,"display","block");if(!this.moBlindCamera||this.moBlindCamera.id!==z.id){this.moBlindCamera=z;this.mdivBlindTrafficCam.innerHTML="";var x=Sigalert.common.element.getHeight(this.mdivBlindTrafficCam);var y={beforeImageLoad:function(A){YAHOO.util.Dom.setStyle(A.bodyElement,"height","100%");this.mdivBlindTrafficCam.appendChild(A.bodyElement);A.imgElement.height=x-Sigalert.common.element.getHeight(A.captionElement)},showDirectionCaption:false,showProvider:false,scope:this};Sigalert.common.createCameraDetailsContainer(z,y)}},showSpeedData:function(A,C,B,z){var D=this.moConfig.getProperty("region"),E=Sigalert.data.Roads,y={ctrlKey:z.ctrlKey,clientX:z.clientX,clientY:z.clientY};var x=function(F){switch(this.moConfig.getProperty("summaryposition")){case"blinds":this.loadBlindsRoadSummary(F,"speed",A,E.getRoadShortName(D,F));break;case"popup":this.showRoadSummaryPopup(y,F,"speed",A,C,B,E.getRoadLongName(D,F));break}};E.getRoadSectionId(D,x,null,this,A)},showIncidentData:function(E,z,x,C){var y=Sigalert.data.Roads,B=this.moConfig.getProperty("region"),F=Sigalert.data.Incidents.getIncidentId(B,E),D={ctrlKey:C.ctrlKey,clientX:C.clientX,clientY:C.clientY};var A=function(G){switch(this.moConfig.getProperty("summaryposition")){case"blinds":this.loadBlindsRoadSummary(G,"incident",F,G>=0?y.getRoadShortName(B,G):"Information");break;case"popup":this.showRoadSummaryPopup(D,G,"incident",F,z,x,G>=0?y.getRoadLongName(B,G):"Information");break}};y.getRoadSectionId(B,A,null,this,Sigalert.data.Incidents.getIncidentSpeedId(B,E))},showCameraData:function(y,x){switch(this.moConfig.getProperty("summaryposition")){case"blinds":this.loadBlindsCamera(y);break;case"popup":if(this.miFloatingPopUpCamId!==y.id&&(this.mstrPopUpType!=="cam"||this.miPopUpId!==y.id)){this.miFloatingPopUpCamId=y.id;this.showCameraPopup(y.road,y,352,x)}break}},getCloseStartBlind:function(){return this.moConfig.getProperty("closestartblindonaction")&&this.mbStartBlindOpen},closeStartBlind:function(){if(this.getCloseStartBlind()){this.mbStartBlindOpen=false;switch(this.moConfig.getProperty("startblind")){case"details":if(this.mbAnimTrafficBlindShowing){this.slideTrafficBlind()}break;case"help":if(this.mbAnimHelpBlindShowing){this.slideHelpBlind()}break;case"options":if(this.mbAnimOptionsBlindShowing){this.slideOptionsBlind()}break}}},onUsePopUpsChanged:function(){if(this.mradUsePopUps.checked){this.slideOptionsBlind(this.setSummaryPosition,"popup")}},onUseBlindsChanged:function(){if(this.mradUseBlinds.checked&&!this.mbAnimTrafficBtnVisible){this.slideOptionsBlind(this.setSummaryPosition,"blinds")}},onUseNoDetailsChanged:function(){if(this.mradUseNoDetails.checked){this.slideOptionsBlind(this.setSummaryPosition,"none")}},onUseSmallFontChanged:function(){if(this.mradSmallFont.checked){this.setFontSize("small");this.slideOptionsBlind(this.moConfig.getProperty("summaryposition")==="blinds"?this.slideTrafficBlind:null)}},onUseLargeFontChanged:function(){if(this.mradLargeFont.checked){this.setFontSize("large");this.slideOptionsBlind(this.moConfig.getProperty("summaryposition")==="blinds"?this.slideTrafficBlind:null)}},fadeTrafficButton:function(y){if(this.mbAnimTrafficBtnVisible){if(this.mAnimTrafficBtn){this.mAnimTrafficBtn.stop()}var x=function(){if(this.mdivTrafficHolder.style.removeAttribute){this.mdivTrafficHolder.style.removeAttribute("filter")}YAHOO.util.Dom.setStyle(this.mdivTrafficHolder,"visibility","hidden");this.mAnimTrafficBtn.onComplete.unsubscribeAll();this.slideButtons()};this.mAnimTrafficBtn=new YAHOO.util.Anim(this.mdivTrafficHolder,{opacity:{to:0}},0.5,YAHOO.util.Easing.easeOut);this.mAnimTrafficBtn.onComplete.subscribe(x,null,this);this.mbAnimTrafficBtnVisible=false;this.mAnimTrafficBtn.animate()}else{if(this.mAnimTrafficBtn){this.mAnimTrafficBtn.stop()}var x=function(){if(this.mdivTrafficHolder.style.removeAttribute){this.mdivTrafficHolder.style.removeAttribute("filter")}this.mAnimTrafficBtn.onComplete.unsubscribeAll();if(y){y.call(this)}else{this.slideTrafficBlind()}};YAHOO.util.Dom.setStyle(this.mdivTrafficHolder,"visibility","visible");this.mAnimTrafficBtn=new YAHOO.util.Anim(this.mdivTrafficHolder,{opacity:{to:1}},0.5,YAHOO.util.Easing.easeOut);this.mAnimTrafficBtn.onComplete.subscribe(x,null,this);this.mbAnimTrafficBtnVisible=true;this.mAnimTrafficBtn.animate()}},slideButtons:function(A,z){var x=Sigalert.common.element.getDimension(this.mdivBtnContainer,"right");if(this.mbAnimBtnsClosed){if(this.mAnimBtns){this.mAnimBtns.stop()}this.mAnimBtns=new YAHOO.util.Anim(this.mdivBtnContainer,{right:{from:x,to:0}},0.5,YAHOO.util.Easing.easeOut);this.mbAnimBtnsClosed=false;this.mAnimBtns.animate()}else{if(this.mAnimBtns){this.mAnimBtns.stop()}var y=function(B,D,C){if(C&&C.func){this.mAnimBtns.onComplete.unsubscribeAll();C.func.call(this,C.arg)}};this.mAnimBtns=new YAHOO.util.Anim(this.mdivBtnContainer,{right:{from:x,to:90}},0.5,YAHOO.util.Easing.easeOut);this.mAnimBtns.onComplete.subscribe(y,{func:A,arg:z},this);this.mbAnimBtnsClosed=true;this.mAnimBtns.animate()}},slideTrafficBlind:function(y){if(this.mbAnimTrafficBlindShowing){if(this.mAnimBlind){this.mAnimBlind.stop()}var x=function(z,B,A){YAHOO.util.Dom.removeClass(this.mdivTrafficBlindOpenBtn,"MapBlindTrafficButtonLargeFont");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindClosedBtn,"display","block");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindOpenBtn,"display","none");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindContainer,"width",this.moTrafficBlind.current.maClosedBlindContainerDimen[0]+"px");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindContentContainer,"display","none");this.mdivTrafficBtn.innerHTML=w;if(A){this.mAnimBlind.onComplete.unsubscribeAll();A.call(this)}};this.mAnimBlind=new YAHOO.util.Anim(this.mdivTrafficBlindContainer,{height:{to:this.moTrafficBlind.current.maClosedBlindContainerDimen[1]}},0.5,YAHOO.util.Easing.easeOut);this.mAnimBlind.onComplete.subscribe(x,y,this);this.mbAnimTrafficBlindShowing=false;this.mAnimBlind.animate()}else{if(this.mAnimBlind){this.mAnimBlind.stop()}if(this.moConfig.getProperty("fontsize")==="large"){YAHOO.util.Dom.addClass(this.mdivTrafficBlindOpenBtn,"MapBlindTrafficButtonLargeFont")}else{YAHOO.util.Dom.removeClass(this.mdivTrafficBlindOpenBtn,"MapBlindTrafficButtonLargeFont")}YAHOO.util.Dom.setStyle(this.mdivTrafficBlindOpenBtn,"display","block");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindClosedBtn,"display","none");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindContentContainer,"display","block");YAHOO.util.Dom.setStyle(this.mdivTrafficBlindContainer,"width",(this.moTrafficBlind.current.maBlindDimen[0]+2)+"px");this.mAnimBlind=new YAHOO.util.Anim(this.mdivTrafficBlindContainer,{height:{to:this.moTrafficBlind.current.miBlindContainerHeight}},0.5,YAHOO.util.Easing.easeOut);this.mbAnimTrafficBlindShowing=true;this.mAnimBlind.animate()}},slideOptionsBlind:function(z,y){if(this.mbAnimOptionsBlindShowing){if(this.mAnimOptionsBlind){this.mAnimOptionsBlind.stop()}var x=function(A,C,B){YAHOO.util.Dom.replaceClass(this.mdivOptionsBlindBtn,"MapBlindButtonOpen","MapBlindButtonClosed");YAHOO.util.Dom.setStyle(this.mdivOptionsBlindContainer,"width",this.moOptionsBlind.maClosedBlindContainerDimen[0]+"px");YAHOO.util.Dom.setStyle(this.mdivOptionsBlindContentContainer,"display","none");if(B&&B.func){this.mAnimOptionsBlind.onComplete.unsubscribeAll();B.func.call(this,B.arg)}};this.mAnimOptionsBlind=new YAHOO.util.Anim(this.mdivOptionsBlindContainer,{height:{to:this.moOptionsBlind.maClosedBlindContainerDimen[1]}},0.5,YAHOO.util.Easing.easeOut);this.mAnimOptionsBlind.onComplete.subscribe(x,{func:z,arg:y},this);this.mbAnimOptionsBlindShowing=false;this.mAnimOptionsBlind.animate()}else{if(this.mAnimOptionsBlind){this.mAnimOptionsBlind.stop()}YAHOO.util.Dom.replaceClass(this.mdivOptionsBlindBtn,"MapBlindButtonClosed","MapBlindButtonOpen");YAHOO.util.Dom.setStyle(this.mdivOptionsBlindContentContainer,"display","block");YAHOO.util.Dom.setStyle(this.mdivOptionsBlindContainer,"width",this.moOptionsBlind.maBlindDimen[0]+"px");this.mAnimOptionsBlind=new YAHOO.util.Anim(this.mdivOptionsBlindContainer,{height:{to:this.moOptionsBlind.miBlindContainerHeight}},0.5,YAHOO.util.Easing.easeOut);this.mbAnimOptionsBlindShowing=true;this.mAnimOptionsBlind.animate()}},slideHelpBlind:function(z,y){if(this.mbAnimHelpBlindShowing){if(this.mAnimHelpBlind){this.mAnimHelpBlind.stop()}var x=function(A,C,B){YAHOO.util.Dom.replaceClass(this.mdivHelpBlindBtn,"MapBlindButtonOpen","MapBlindButtonClosed");YAHOO.util.Dom.setStyle(this.mdivHelpBlindContainer,"width",this.moHelpBlind.maClosedBlindContainerDimen[0]+"px");YAHOO.util.Dom.setStyle(this.mdivHelpBlindContentContainer,"display","none");if(B&&B.func){this.mAnimHelpBlind.onComplete.unsubscribeAll();B.func.call(this,B.arg)}};this.mAnimHelpBlind=new YAHOO.util.Anim(this.mdivHelpBlindContainer,{height:{to:this.moHelpBlind.maClosedBlindContainerDimen[1]}},0.5,YAHOO.util.Easing.easeOut);this.mAnimHelpBlind.onComplete.subscribe(x,{func:z,arg:y},this);this.mbAnimHelpBlindShowing=false;this.mAnimHelpBlind.animate()}else{if(this.mAnimHelpBlind){this.mAnimHelpBlind.stop()}YAHOO.util.Dom.replaceClass(this.mdivHelpBlindBtn,"MapBlindButtonClosed","MapBlindButtonOpen");YAHOO.util.Dom.setStyle(this.mdivHelpBlindContentContainer,"display","block");YAHOO.util.Dom.setStyle(this.mdivHelpBlindContainer,"width",this.moHelpBlind.maBlindDimen[0]+"px");this.mAnimHelpBlind=new YAHOO.util.Anim(this.mdivHelpBlindContainer,{height:{to:this.moHelpBlind.miBlindContainerHeight}},0.5,YAHOO.util.Easing.easeOut);this.mbAnimHelpBlindShowing=true;this.mAnimHelpBlind.animate()}},onTrafficBlindClicked:function(){this.mbStartBlindOpen=false;if(this.mbAnimOptionsBlindShowing){this.slideOptionsBlind(this.slideTrafficBlind)}else{if(this.mbAnimHelpBlindShowing){this.slideHelpBlind(this.slideTrafficBlind)}else{this.slideTrafficBlind()}}},onOptionsClicked:function(){this.mbStartBlindOpen=false;if(this.mbAnimTrafficBlindShowing){this.slideTrafficBlind(this.slideOptionsBlind)}else{if(this.mbAnimHelpBlindShowing){this.slideHelpBlind(this.slideOptionsBlind)}else{this.slideOptionsBlind()}}},onHelpClicked:function(){this.mbStartBlindOpen=false;if(this.mbAnimTrafficBlindShowing){this.slideTrafficBlind(this.slideHelpBlind)}else{if(this.mbAnimOptionsBlindShowing){this.slideOptionsBlind(this.slideHelpBlind)}else{this.slideHelpBlind()}}},onRefreshClicked:function(){Sigalert.data.Manager[this.moConfig.getProperty("region")].forceRefreshData();this._onUserDidAction()},onShowHideCamerasClicked:function(x){this.toggleLayerVisibility(d.StrCameraLayerName);this._onUserDidAction()},makeCameraButton:function(){if(this.mdivCameraBtn===null){this.mdivCameraBtn=c.make("div");YAHOO.util.Dom.addClass(this.mdivCameraBtn,"map-icon map-icon"+this.miButtonNum+" MapCameraIcon");this.mdivCameraBtn.title="Hide and Show Cameras on the Map";YAHOO.util.Event.on(this.mdivCameraBtn,"click",this.onShowHideCamerasClicked,null,this);this.mdivBtnContainer.appendChild(this.mdivCameraBtn);this.miButtonNum+=1}},updateCameraButton:function(x){if(this.moConfig.getProperty("showcamerabutton")){this.makeCameraButton();if(x){c.removeClass(this.mdivCameraBtn,"MapCameraIconDisabled")}else{c.addClass(this.mdivCameraBtn,"MapCameraIconDisabled")}}},hideHotSpotHighlight:function(){this.highlightLayer.forEachPushpin(function(x){x.hide()})},hideHighlights:function(){},showHotSpotHighlight:function(x,z){function y(C){var B=this.xyToLatLon(x[0],x[1],0),A=this.highlightLayer.getPushpin(C);this.hideHotSpotHighlight();A.set("lat",B[0]);A.set("lon",B[1]);A.show()}switch(x[4]){case p.Speed:this.miHotSpotIncId=-1;y.call(this,z?"speed-outline":"speed-highlight");break;case p.Inc:this.miHotSpotIncId=Sigalert.data.Incidents.getIncidentId(this.moConfig.getProperty("region"),x[5]);y.call(this,z?"incident-outline":"incident-highlight");break;case p.Cam:this.miHotSpotIncId=-1;y.call(this,z?"camera-outline":"camera-highlight");break}},onStartDrag:function(){if(YAHOO.env.ua.gecko!==0){if(this.mFangPopUpSpeedDetails){this.mstrFangPopUpSpeedDetailsBodyOverflow=this.mFangPopUpSpeedDetails.getBodyOverflow();this.mFangPopUpSpeedDetails.setBodyOverflow("hidden")}if(this.mPopUpDetails){this.mstrCamIncFangPopUpBodyOverflow=this.mPopUpDetails.getBodyOverflow();this.mPopUpDetails.setBodyOverflow("hidden")}}},onEndDrag:function(){if(YAHOO.env.ua.gecko!==0){if(this.mFangPopUpSpeedDetails){this.mFangPopUpSpeedDetails.setBodyOverflow(this.mstrFangPopUpSpeedDetailsBodyOverflow)}if(this.mPopUpDetails){this.mPopUpDetails.setBodyOverflow(this.mstrCamIncFangPopUpBodyOverflow)}}this.closeStartBlind();Sigalert.data.Manager[this.moConfig.getProperty("region")].refreshData()},_onMouseOverHotspot:function(x){},_onMapMouseOut:function(x){this.hidePopups()},_onZoomChanged:function(x){this._super(x);this.hideHighlights();this.hideHotSpotHighlight();Sigalert.data.Manager[this.moConfig.getProperty("region")].refreshData()},_onTilesCreated:function(x){this._super(x);if(this.miPopUpId!==-1){if(this.mstrPopUpType==="inc"){this.showIncidentFangPopUp(this.miPopUpId,this.miPopUpX,this.miPopUpY,false)}else{if(this.mstrPopUpType==="cam"){this.showCameraFangPopUp(this.moPopUpDataItem,false)}}}if(this.miFangPopUpSpeedId!==-1){this.showSpeedFangPopUp(this.miFangPopUpSpeedId,this.miFangPopUpSpeedX,this.miFangPopUpSpeedY)}this.hideHotSpotHighlight()},onTrafficDataRefreshStart:function(){this._super();if(this.mdivRefreshBtn){this.miTrafficDataUpdateStartMS=new Date().getTime();YAHOO.util.Dom.replaceClass(this.mdivRefreshBtn,"MapRefreshIcon","MapRefreshIconUpdating")}},onTrafficDataRefreshEnd:function(){this._super();if(this.mdivRefreshBtn){f.afterDelay(this.miTrafficDataUpdateStartMS,q,function(){YAHOO.util.Dom.replaceClass(this.mdivRefreshBtn,"MapRefreshIconUpdating","MapRefreshIcon")},null,this)}},onTrafficDataUpdated:function(x){this._super(x);this._processDynamicData();this.insurePopUpsAreValid();if(this.miFangPopUpSpeedId!==-1){this.showSpeedFangPopUp(this.miFangPopUpSpeedId,this.miFangPopUpSpeedX,this.miFangPopUpSpeedY)}if(this.miHotSpotIncId!==-1){if(!Sigalert.data.Incidents.getIncidentExists(this.moConfig.getProperty("region"),this.miHotSpotIncId)){this.hideHotSpotHighlight()}}},onTrafficDataPathUpdated:function(y){this._super(y);if(this.mdivTimeStamp){var x=j[this.moConfig.getProperty("region")].trafficData.get("updateTime");if(x!==null){this.mdivTimeStamp.innerHTML=l.format(x,"Data from: %h:%MM %TT")}else{this.mdivTimeStamp.innerHTML="No Data"}}},onHotClick:function(A,z){if(this.extMouseMap.mbDraggingMap||this.extMouseMap.mbJustDraggedMap){this.extMouseMap.mbJustDraggedMap=false;return false}var x=this._findHotSpot(A,z);if(x){var y=x.hotSpot;if(x.distance<=u){this.fire("hotspotClicked",{type:y[4],data:y[5],x:y[0],y:y[1]},function(){switch(y[4]){case p.Speed:if(this.miFangPopUpSpeedId!==y[5]){this.hideFangPopUps();this.showSpeedFangPopUp(y[5],y[0],y[1],{slideToHotspot:true})}else{this.hideSpeedFangPopUp()}this._onUserDidAction();break;case p.Inc:var B=Sigalert.data.Incidents.getIncidentId(this.moConfig.getProperty("region"),y[5]);if(this.mstrPopUpType!=="inc"||(this.mstrPopUpType==="inc"&&this.miPopUpId!==B)){this.hideFangPopUps();this.showIncidentFangPopUp(B,y[0],y[1],true)}else{this.hideCamIncFangPopUp()}bHotSpotClicked=true;this._onUserDidAction();break;case p.Cam:var C=y[5];if(this.mstrPopUpType!=="cam"||(this.mstrPopUpType==="cam"&&this.miPopUpId!==C.id)){this.hideFangPopUps();this.showCameraFangPopUp(C,true)}else{this.hideCamIncFangPopUp()}this._onUserDidAction();break}})}else{this.hideFangPopUps();this.hidePopups()}}else{this.hideFangPopUps();this.hidePopups()}},onHotSpotMouseClick:function(x){if(!x.ctrlKey){this.onHotClick(x.clientX,x.clientY)}},onHotSpotMouseOver:function(B){if(this.extMouseMap.mbDraggingMap){return}var x=this._findHotSpot(B.clientX,B.clientY),E=false;if(x){var z=x.hotSpot;var D=this.moConfig.getProperty("summaryposition"),y=(D==="blinds"),C=false;E=x.distance<=u;var A={aSpot:z,bShowHighlight:y,bShowOutline:C,bWithinRadius:E};this._onMouseOverHotspot(A);z=A.aSpot;y=A.bShowHighlight;C=A.bShowOutline;E=A.bWithinRadius;if(y||E){this.fire("hotspotHovered",{type:z[4],data:z[5],x:z[0],y:z[1]},function(){switch(z[4]){case p.Speed:this.showHotSpotHighlight(z,C);this.showSpeedData(z[5],z[0],z[1],B);this._onUserDidAction();break;case p.Inc:this.showHotSpotHighlight(z,C);this.showIncidentData(z[5],z[0],z[1],B);this._onUserDidAction();break;case p.Cam:this.showHotSpotHighlight(z,C);this.showCameraData(z[5],B);this._onUserDidAction();break}})}else{this.showHotSpotHighlight(z,true)}}else{this.hideHotSpotHighlight()}if(E){this.setCursor(r)}else{this.setCursor(i)}},onMapLayersMouseMove:function(x){if(this.mbCheckMouseDistance){if(t.distance(this.mCurrentHotSpotX,this.mCurrentHotSpotY,x.clientX,x.clientY)>=v){this.hideRoadSummaryMapPopup();this.hideCameraPopup();this.hideHotSpotHighlight()}}},setZoom:function(x){this.hideFangPopUps();this.hidePopups();return this._super(x)},setCursor:function(x){if(this.mLayers.style.cursor!==x){this.mLayers.style.cursor=x}}});var m=o.HotspotMap,p=m.HotSpotType={Speed:0,Inc:1,Cam:2};m.StrHighlightLayerName="highlights";m.ZoomLevelSpeedOutlineIcon=[GstrImageDir+"/Themes/Common/MapSpeedHotSpotOutline0.png",GstrImageDir+"/Themes/Common/MapSpeedHotSpotOutline1.png",GstrImageDir+"/Themes/Common/MapSpeedHotSpotOutline2.png",GstrImageDir+"/Themes/Common/MapSpeedHotSpotOutline2.png"];m.ZoomLevelSpeedHighlightIcon=[GstrImageDir+"/Themes/Common/MapSpeedHotSpotHighlight0.png",GstrImageDir+"/Themes/Common/MapSpeedHotSpotHighlight1.png",GstrImageDir+"/Themes/Common/MapSpeedHotSpotHighlight2.png",GstrImageDir+"/Themes/Common/MapSpeedHotSpotHighlight2.png"];m.ZoomLevelIncidentOutlineIcon=[GstrImageDir+"/Themes/Common/MapIncidentHotSpotOutline0.png",GstrImageDir+"/Themes/Common/MapIncidentHotSpotOutline1.png",GstrImageDir+"/Themes/Common/MapIncidentHotSpotOutline2.png",GstrImageDir+"/Themes/Common/MapIncidentHotSpotOutline2.png"];m.ZoomLevelIncidentHighlightIcon=[GstrImageDir+"/Themes/Common/MapIncidentHotSpotHighlight0.png",GstrImageDir+"/Themes/Common/MapIncidentHotSpotHighlight1.png",GstrImageDir+"/Themes/Common/MapIncidentHotSpotHighlight2.png",GstrImageDir+"/Themes/Common/MapIncidentHotSpotHighlight2.png"];m.ZoomLevelCameraOutlineIcon=[GstrImageDir+"/Themes/Common/MapCameraHotSpotOutline0.png",GstrImageDir+"/Themes/Common/MapCameraHotSpotOutline1.png",GstrImageDir+"/Themes/Common/MapCameraHotSpotOutline2.png",GstrImageDir+"/Themes/Common/MapCameraHotSpotOutline2.png"];m.ZoomLevelCameraHighlightIcon=[GstrImageDir+"/Themes/Common/MapCameraHotSpotHighlight0.png",GstrImageDir+"/Themes/Common/MapCameraHotSpotHighlight1.png",GstrImageDir+"/Themes/Common/MapCameraHotSpotHighlight2.png",GstrImageDir+"/Themes/Common/MapCameraHotSpotHighlight2.png"]}());(function(){var g=Chai.Dom,p=Chai.Event,o="url(/Images/Cursors/Hwe.cur), move",c="url(/Images/Cursors/HMove.cur), move";function e(v,r){var y=YAHOO.util.Dom.getXY(this.parentNode),A=0,z=0;if(YAHOO.env.ua.gecko>0&&YAHOO.env.ua.gecko<=1.8){A=this.miViewportWidthPixels/2+y[0]-v.screenX;z=this.miViewportHeightPixels/2+y[1]-v.screenY}else{A=this.miViewportWidthPixels/2+y[0]-v.clientX;z=this.miViewportHeightPixels/2+y[1]-v.clientY}var u=this.getMapXY(),t=u[0]-A,s=u[1]-z,x=this.moCurrentZoomLevel.widthTiles/this.maZoomLevels[r].widthTiles,q=this.moCurrentZoomLevel.heightTiles/this.maZoomLevels[r].heightTiles,w=this.xyToLatLon((t/x)+A,(s/q)+z,r);this.setLatLonZoom(w[0],w[1],r)}function n(q){if(this.mLayers.style.cursor!==q){this.mLayers.style.cursor=q}}function f(){n.call(this,o);this.onMapDragStartedWithMouse.fire({map:this})}function i(){n.call(this,c);var q=this.getMapLatLon();this.onMapDragFinishedWithMouse.fire({map:this,lat:q[0],lon:q[1],zoom:this.miCurrentZoomLevel});this._onUserDidAction()}function b(q){if(g.isLeftMouseButton(q)){this.extMouseMap.iMouseDownX=q.clientX;this.extMouseMap.iMouseDownY=q.clientY;this.extMouseMap.bMouseIsDown=true;this.extMouseMap.bMouseMovedWhileDown=false;this.extMouseMap.mbJustDraggedMap=false;g.preventDefault(q)}}function d(q){if(g.isLeftMouseButton(q)){this.extMouseMap.bMouseIsDown=false;if(this.extMouseMap.mbDraggingMap){i.call(this)}}}function k(s){if(g.isLeftMouseButton(s)){this.extMouseMap.mbDraggingMap=this.extMouseMap.bMouseIsDown;if(!this.extMouseMap.mbDraggingMap){return}if(!this.extMouseMap.bMouseMovedWhileDown){this.extMouseMap.bMouseMovedWhileDown=true;f.call(this)}var r=s.clientX-this.extMouseMap.iMouseDownX,q=s.clientY-this.extMouseMap.iMouseDownY;this.extMouseMap.iMouseDownX=s.clientX;this.extMouseMap.iMouseDownY=s.clientY;this.moveMap(r,q);g.preventDefault(s)}}function h(q){if(this.extMouseMap.mbDraggingMap){this.extMouseMap.mbDraggingMap=false;this.extMouseMap.mbJustDraggedMap=true}}function a(r){var s=0;if(r.wheelDelta){s=r.wheelDelta}else{if(r.detail){s=-r.detail}}if(s!==0){g.stopEvent(r);var q=new Date().getTime();if(q-this.extMouseMap.iLastMouseWheelTimeMs>750){this.extMouseMap.iLastMouseWheelTimeMs=q;if(s<0&&!this.isZoomedOutAllTheWay()){e.call(this,r,this.miCurrentZoomLevel+1);this._onUserDidAction()}else{if(s>0&&!this.isZoomedInAllTheWay()){e.call(this,r,this.miCurrentZoomLevel-1);this._onUserDidAction()}}}}}function j(r){var q=r.srcElement||r.target;if(q.nodeName.toLowerCase()==="iframe"){d.call(this,r)}}function m(t){var s=YAHOO.util.Event.getRelatedTarget(t);if(!s){d.call(this,t)}else{try{var r=s.nodeType}catch(q){d.call(this,t)}}}function l(r){if(this.isZoomedInAllTheWay()){var q=YAHOO.util.Dom.getXY(this.parentNode);this.slideMap(this.miViewportWidthPixels/2+q[0]-r.clientX,this.miViewportHeightPixels/2+q[1]-r.clientY)}else{e.call(this,r,this.miCurrentZoomLevel-1)}this._onUserDidAction()}Sigalert.Widget.DynamicMap.augment({init:function(q,r){this._original(q,r);this.extMouseMap={mbDraggingMap:false,mbJustDraggedMap:false,iMouseDownX:0,iMouseDownY:0,bMouseIsDown:false,bMouseMovedWhileDown:false,iLastMouseWheelTimeMs:0,onStartDrag:f,onEndDrag:i,onMapMouseDown:b,onMapMouseUp:d,onMapMouseMove:k,onMapMouseClick:h,onMapDblClick:l,onMapMouseWheel:a};this.onMapDragStartedWithMouse=new p("mapdragstartedwithmouse");this.onMapDragFinishedWithMouse=new p("mapdragfinishedwithmouse");YAHOO.util.Event.on(this.mLayers,"mousedown",b,null,this);YAHOO.util.Event.on(document,"mouseup",d,null,this);YAHOO.util.Event.on(document,"mousemove",k,null,this);YAHOO.util.Event.on(this.mLayers,"click",h,null,this);YAHOO.util.Event.on(this.mLayers,"dblclick",l,null,this);if(this.moConfig.getProperty("zoomwithwheel")){YAHOO.util.Event.on(this.mLayers,"DOMMouseScroll",a,null,this);YAHOO.util.Event.on(this.mLayers,"mousewheel",a,null,this)}if(!YAHOO.util.Event.isIE){YAHOO.util.Event.on(document,"mouseover",j,null,this)}if(Sigalert.common.Partner.isValid()&&(YAHOO.env.ua.gecko>0||YAHOO.util.Event.isIE)){YAHOO.util.Event.on(document.body,"mouseout",m,null,this)}this.onMapDragComplete=this.onMapDragFinishedWithMouse},initConfig:function(){this._original();this.moConfig.setProperty("zoomwithwheel",true)}})}());(function(){var i=Chai.Lang,g=Chai.Dom,m=Chai.Event;function j(){if(this.extTouchMap.mtmrSingleTouchTimer!==null){clearTimeout(this.extTouchMap.mtmrSingleTouchTimer);this.extTouchMap.mtmrSingleTouchTimer=null}}function d(o,n){return Math.sqrt((this.extTouchMap.iLastSingleTouchDownX-o)*(this.extTouchMap.iLastSingleTouchDownX-o)+(this.extTouchMap.iLastSingleTouchDownY-n)*(this.extTouchMap.iLastSingleTouchDownY-n))<=this.extTouchMap.iDoubleClickDistancePixels}function c(n){if(!this.extTouchMap.mbTouchInputEnabled){return}console.log("onGestureChange at "+new Date().getTime());if(n.scale>1){this.zoomIn()}else{if(n.scale<1){this.zoomOut()}}}function f(n){g.preventDefault(n);if(!this.extTouchMap.mbTouchInputEnabled){return}this.extTouchMap.bTouchMovedDuringEventCycle=false;this.extTouchMap.bIsDoubleTouch=(this.extTouchMap.mtmrSingleTouchTimer!==null&&n.touches.length===1&&d.call(this,n.touches[0].pageX,n.touches[0].pageY));j.call(this);if(n.touches.length===1){var o=n.touches[0];this.extTouchMap.iTouchDownX=o.pageX;this.extTouchMap.iTouchDownY=o.pageY;this.extTouchMap.bMovedWhileTouching=false}}function k(n){if(!this.extTouchMap.mbTouchInputEnabled){return}if(this.extTouchMap.bMovedWhileTouching){h.call(this)}else{if(!this.extTouchMap.bTouchMovedDuringEventCycle){if(this.extTouchMap.bIsDoubleTouch){b.call(this,this.extTouchMap.iTouchDownX,this.extTouchMap.iTouchDownY)}else{this.extTouchMap.iLastSingleTouchDownX=this.extTouchMap.iTouchDownX;this.extTouchMap.iLastSingleTouchDownY=this.extTouchMap.iTouchDownY;this.extTouchMap.mtmrSingleTouchTimer=i.later(this.extTouchMap.iDoubleClickSpeedMs,function(){this.extTouchMap.mtmrSingleTouchTimer=null;l.call(this,this.extTouchMap.iTouchDownX,this.extTouchMap.iTouchDownY)},null,this)}}}}function a(p){g.preventDefault(p);if(!this.extTouchMap.mbTouchInputEnabled){return}this.extTouchMap.bTouchMovedDuringEventCycle=true;if(p.touches.length===1){if(!this.extTouchMap.bMovedWhileTouching){this.extTouchMap.bMovedWhileTouching=true;e.call(this)}var q=p.touches[0],o=q.pageX-this.extTouchMap.iTouchDownX,n=q.pageY-this.extTouchMap.iTouchDownY;this.extTouchMap.iTouchDownX=q.pageX;this.extTouchMap.iTouchDownY=q.pageY;this.moveMap(o,n)}}function e(){this.extTouchMap.mbDraggingMap=true;var n=this.getMapLatLon();this.onMapDragStartedWithTouch.fire({map:this,lat:n[0],lon:n[1],zoom:this.miCurrentZoomLevel})}function h(){this.extTouchMap.mbDraggingMap=false;var n=this.getMapLatLon();this.onMapDragFinishedWithTouch.fire({map:this,lat:n[0],lon:n[1],zoom:this.miCurrentZoomLevel});this._onUserDidAction()}function l(q,p){this.extTouchMap.mtmrSingleTouchTimer=null;if(!this.extTouchMap.mbTouchInputEnabled){return}q-=YAHOO.util.Dom.getDocumentScrollLeft();p-=YAHOO.util.Dom.getDocumentScrollTop();var r=this.getMapLatLon(),o=this.clientXyToMapXy(q,p),n=this.xyToLatLon(o[0],o[1]);this.onMapTapped.fire({map:this,lat:r[0],lon:r[1],zoom:this.miCurrentZoomLevel,touchLat:n[0],touchLon:n[1],pageX:q,pageY:p});this._onUserDidAction()}function b(r,q){if(!this.extTouchMap.mbTouchInputEnabled){return}var s=this.getMapLatLon(),p=this.clientXyToMapXy(r,q),o=this.xyToLatLon(p[0],p[1]),n=this.getMapXY();if(this.isZoomedInAllTheWay()){this.slideMap(n[0]-p[0],n[1]-p[1])}else{this.onMapZoomingInWithDoubleTap.fire({map:this,dx:n[0]-p[0],dy:n[1]-p[1]});this.setLatLonZoom(o[0],o[1],this.miCurrentZoomLevel-1)}this.onMapDoubleTapped.fire({map:this,lat:s[0],lon:s[1],zoom:this.miCurrentZoomLevel,touchLat:o[0],touchLon:o[1]});this._onUserDidAction()}Sigalert.Widget.DynamicMap.augment({init:function(n,o){this._original(n,o);this.extTouchMap={mbTouchInputEnabled:true,mbDraggingMap:false,mtmrSingleTouchTimer:null,iTouchDownX:0,iTouchDownY:0,iLastSingleTouchDownX:0,iLastSingleTouchDownY:0,bMovedWhileTouching:false,bTouchMovedDuringEventCycle:false,bIsDoubleTouch:false,iDoubleClickSpeedMs:300,iDoubleClickDistancePixels:45};this.onMapDragStartedWithTouch=new m("mapdragstartedwithtouch");this.onMapDragFinishedWithTouch=new m("mapdragfinishedwithtouch");this.onMapTapped=new m("maptapped");this.onMapDoubleTapped=new m("mapdoubletapped");this.onMapZoomingInWithDoubleTap=new m("mapzoominginwithdoubletap");if(this.moConfig.getProperty("enablemultitouchinput")){g.subscribe(this.mLayers,"gesturechange",i.throttle(c,1000),null,this)}if(this.moConfig.getProperty("enableclicksupportfortouch")){YAHOO.util.Event.on(this.mLayers,"click",function(p){l.call(this,p.pageX,p.pageY)},null,this)}YAHOO.util.Event.on(this.mLayers,"touchstart",f,null,this);YAHOO.util.Event.on(this.mLayers,"touchmove",a,null,this);YAHOO.util.Event.on(this.mLayers,"touchend",k,null,this);YAHOO.util.Event.on(this.mLayers,"touchcancel",k,null,this)},initConfig:function(){this._original();this.moConfig.setProperty("enablemultitouchinput",true);this.moConfig.setProperty("enableclicksupportfortouch",true)},enableTouchInput:function(){this.extTouchMap.mbTouchInputEnabled=true},disableTouchInput:function(){j.call(this);this.extTouchMap.mbTouchInputEnabled=false}})}());(function(){function a(b){this.onHotClick(b.pageX,b.pageY)}Sigalert.Widget.HotspotMap.augment({init:function(b,c){this._original(b,c);this.onMapTapped.subscribe(a,null,this)}})}());(function(){var a=Chai.use("Chai.Lang"),b=Chai.use("Chai.Array");function c(j){this.popUps.push(j);j.set("constraints",this.get("host").getMapViewportRect());j.render(this.layer.contentNode);j.plug(Chai.Widget.MouseEventsPlugin);j.on("reposition",e,this);j.after("bodyChanged",i,this);j.after("mousein",d,this)}function f(j){b.remove(this.popUps,j);j.detach("reposition",e,this);j.detachAfter("bodyChanged",i,this);j.detachAfter("mousein",d,this)}function e(j){j.preventDefault();j.src.set("constraints",this.get("host").getMapViewportRect())}function i(j){j.src.set("constraints",this.get("host").getMapViewportRect())}function d(){this.get("host").hidePopups()}function g(){var j=this.get("host");a.forEach(this.popUps,function(k){if(k.get("visible")){k.set("constraints",j.getMapViewportRect())}},this)}function h(){this.layer=this.get("host").makeLayer("popups",{className:"popup-layer"})}Chai.Widget.MapPopUpPlugin=Chai.Widget.WidgetPlugin.extend({init:function(k,j){this._super(k,j);this.layer=null;this.popUps=[];k.on("ready",h,this);k.onMapZoomChanged.subscribe(g,this,this);this.attachMembers({addPopUp:c,removePopUp:f})},destruct:function(){this.get("host").removeLayer(this.layer);this.get("host").onMapZoomChanged.remove(g,this);this.layer=null;this.popUps=null;this._super()}});Chai.Widget.MapPopUpPlugin.PluginNamespace="Chai.Widget.MapPopUpPlugin"}());(function(){var b=Chai.use("Chai.Lang");function a(){this.contextMenu.hide()}function d(f){if(f.info.newValue){this.get("host").hidePopups()}}function c(f){if(this.contextMenu.get("visible")){f.preventDefault()}}Chai.Widget.MapContextMenuPlugin=Chai.Widget.WidgetPlugin.extend({init:function(f,e){this._super(f,e);this.contextMenu=new Chai.Widget.ContextMenu();this.contextMenu.after("visibleChanged",d,this);this.contextMenu.render(document.body);f.after("mapZoomChanged",a,this);f.on("hotspotHovered",c,this);this.attachAttribute("contextMenu",{value:this.contextMenu,readOnly:true})},destruct:function(){host.detachAfter("mapZoomChanged",a,this);host.detach("hotspotHovered",c,this);this.contextMenu.destroy();this.contextMenu=null;this._super()}});Chai.Widget.MapContextMenuPlugin.PluginNamespace="Chai.Widget.MapContextMenuPlugin"}());(function(){var k=Chai.Lang,D=Chai.Array,y=Chai.Math,d=Chai.Dom,m=Chai.Event,A=Sigalert.Widget.DynamicMap;var v=0;function i(J){return(J?J+"-":"")+"Route-"+v++}var r=Chai.Widget.MapLayer.Tile.extend({init:function(){this._super();this.loadPreDomInsertion=false;this.element=d.make("div");this.canvas=null},destruct:function(){this.canvas.destroy();this.canvas=null;this.element=null;this._super()},load:function(){function J(){this.canvas.clear();var M=this.canvas.drawRect(0,0,this.width,this.height,{fill:"#000000",opacity:0.6});var K=this.layer.getUserData();if(k.isObject(K)){var L=K[this.column+","+this.row];if(k.isObject(L)){k.forEach(L.paths,function(N){this.canvas.clearPath(N.commands,N.points,{lineCap:"butt",lineJoin:"round",lineWidth:this.map.getStripeWidths()[N.width],shape:M})},this)}}}if(this.canvas===null){this.canvas=new Chai.Widget.Canvas(this.element,this.width,this.height,{enableRightClick:true,styles:{position:"absolute",left:"0px",top:"0px"}})}if(this.canvas.get("ready")){J.call(this)}else{this.canvas.after("readyChanged",J,null,this)}}});function w(){var K=this.get("host"),L=K.get("activeRoute"),J=K.get("activeRoutePathIndex");this.routeTiles={};if(L&&J!==-1){k.forEach(L.waypoints,function(M){if(M.hasPaths()){b.call(this,M.getPath(J))}},this)}e.call(this)}function e(){var J=this.get("host");this.routeLayer.setUserData(this.routeTiles);this.routeLayer.loadTiles();if(J.get("activeRoute")&&J.get("activeRoutePathIndex")!==-1){this.routeLayer.show()}else{this.routeLayer.hide()}}function b(Q){var J=this.get("host"),L=this.routeTiles,N=[],R=null,P=null,O=0,S=J.xScale(),K=J.yScale();function M(W,T,Y,V){var X=5,U=X*2>W.length?0:W.length-X*2;while(U<W.length){T.push(T.length===0?"M":"L");Y.push(W[U]/S-V.x,W[U+1]/K-V.y);U+=2}}k.forEach(Q.path,function(T){k.forEach(T.segments,function(aa){var ae=aa.path,Z=null,X=null,V=[],ad=[];for(var Y=0,ac=0,ab=0,W=null,U=ae.length;Y<U;Y+=2){ac=ae[Y]/S;ab=ae[Y+1]/K;W=J.mapXyToTile(ac,ab);if(R&&P){R.commands.push(R.commands.length===0?"M":"L");R.points.push(ac-P.x,ab-P.y);O+=1;if(O>=5){R=null;P=null;O=0}}if(X===null||W.column!==X.column||W.row!==X.row){if(Z){V.push(V.length===0?"M":"L");ad.push(ac-X.x,ab-X.y);P=X;R={id:Q.id,waypointId:Q.waypointId,commands:V,points:ad,width:aa.width};Z.paths.push(R);L[X.column+","+X.row]=Z;V=[];ad=[];M.call(this,N,V,ad,W)}else{M.call(this,N,V,ad,W)}X=W;Z=L[X.column+","+X.row]||{paths:[]}}V.push(V.length===0?"M":"L");ad.push(ac-W.x,ab-W.y);N.push(ae[Y],ae[Y+1])}if(Z){P=X;R={id:Q.id,waypointId:Q.waypointId,commands:V,points:ad,width:aa.width};Z.paths.push(R);L[X.column+","+X.row]=Z}},this)},this)}function z(K){var J=[];k.forEach(this.routeTiles,function(N,L){for(var M=N.paths.length-1;M>=0;M-=1){if(k.isString(K)){if(N.paths[M].waypointId===K){D.removeAt(N.paths,M)}}else{if(N.paths[M].id===K.id){D.removeAt(N.paths,M)}}}if(N.paths.length===0){J.push(L)}});k.forEach(J,function(L){delete this.routeTiles[L]},this)}function I(){this.routeTiles={}}function C(J){z.call(this,J);e.call(this)}function c(J){b.call(this,J);e.call(this)}function o(J,K){z.call(this,J.getId());b.call(this,K.routes[this.get("host").get("activeRoutePathIndex")]);e.call(this)}function h(){var K=this.get("host"),L=K.get("activeRoute"),J=new Sigalert.common.Hash();if(L!==null&&L.getWaypointCount()>1){k.forEach(L.waypoints,function(M,N){Sigalert.common.WriteCookie("mrroad"+N,M.getInitialRoadId(),365);Sigalert.common.WriteCookie("mrroadn"+N,M.getInitialRoadName(),365);Sigalert.common.WriteCookie("mrrampn"+N,M.getInitialRampName(),365);Sigalert.common.WriteCookie("mrlat"+N,M.getInitialLat(),365);Sigalert.common.WriteCookie("mrlon"+N,M.getInitialLon(),365)});Sigalert.common.WriteCookie("mrcount",L.getWaypointCount(),365);Sigalert.common.WriteCookie("mrregion",L.getRegion(),365);J.setPair("route",1)}else{J.setPair("route",0)}J.applyHashToLocation()}function H(){return Sigalert.common.ReadCookie("mrregion")}function n(){return k.isNumber(parseInt(Sigalert.common.ReadCookie("mrcount"),10))}function f(){var K=this.get("host"),O=parseInt(Sigalert.common.ReadCookie("mrcount"),10),Q=Sigalert.common.ReadCookie("mrregion");if(k.isNumber(O)&&Q===K.moConfig.getProperty("region")){for(var N=0,R=0,L=null,M=null,P=0,J=0;N<O;N+=1){R=parseFloat(Sigalert.common.ReadCookie("mrroad"+N));P=parseFloat(Sigalert.common.ReadCookie("mrlat"+N));J=parseFloat(Sigalert.common.ReadCookie("mrlon"+N));L=Sigalert.common.ReadCookie("mrroadn"+N);M=Sigalert.common.ReadCookie("mrrampn"+N);if(N===0){K.startRoute(P,J,R,{roadName:L,rampName:M,zoom:K.getZoom()})}else{K.addWaypointToRoute(P,J,R,{roadName:L,rampName:M,zoom:K.getZoom()})}}K.centerMapOnActiveRoute();return true}return false}function B(M,N,K,J){var L=this.get("host");L.set("activeRoute",new A.RouteConstructor(L.moConfig.getProperty("region"),i(),L));L.addWaypointToRoute(M,N,K,J)}function s(M,N,K,J){var L=this.get("host"),O=L.get("activeRoute");L.fire("waypointAddedToActiveRoute",{route:O},k.bind(function(){O.addWaypoint(M,N,K,J);if(O.getWaypointCount()>1){I.call(this);L.set("activeRoutePathIndex",0)}h.call(this)},this))}function x(){var J=this.get("host").get("activeRoute");if(J){J.reverse()}}function F(){var ab=this.get("host"),T=ab.get("activeRoute");if(T&&T.getWaypointCount()>1){var P=T.getWaypoint(0),S=T.getWaypoint(1);var R=new y.Vector(ab.latLonToXY(P.getLat(),P.getLon())),N=new y.Vector(ab.latLonToXY(S.getLat(),S.getLon())),Q=N.subtract(R),L=90,J=200,aa=null;if(Math.abs(Q.get("x"))<ab.miViewportWidthPixels-2*L&&Math.abs(Q.get("y"))<ab.miViewportHeightPixels-2*L){aa=y.segment(R,N).midpoint()}else{var ac=Q.direction().scale(-1),V={left:R.get("x")-ab.miViewportWidthPixels/2,right:R.get("x")+ab.miViewportWidthPixels/2,top:R.get("y")-ab.miViewportHeightPixels/2,bottom:R.get("y")+ab.miViewportHeightPixels/2},Y=null,X=null;if(ac.get("x")>0){Y=new y.Segment(new y.Vector(V.right,V.top),new y.Vector(V.right,V.bottom))}else{Y=new y.Segment(new y.Vector(V.left,V.top),new y.Vector(V.left,V.bottom))}if(ac.get("y")>0){X=new y.Segment(new y.Vector(V.left,V.bottom),new y.Vector(V.right,V.bottom))}else{X=new y.Segment(new y.Vector(V.left,V.top),new y.Vector(V.right,V.top))}var O=ab.miViewportWidthPixels+ab.miViewportHeightPixels,W=new y.Segment(R,ac.scale(O*O)),U=y.intersects(W,Y)||y.intersects(W,X);if(U!==null){var K=U.add(R.subtract(U).direction().scale(J)),M=R.subtract(K);aa=R.add(M)}}if(aa!==null){var Z=ab.getMapXY();ab.slideMap(Z[0]-aa.get("x"),Z[1]-aa.get("y"))}}}function j(S,Q){var K=this.get("host"),O=this.rampHotspots,R=K.xScale(),L=K.yScale(),M=Math.sqrt(l.RouteSnapToDistanceSqd/2);M=(M*R)*(M*R)+(M*L)*(M*L);S*=R;Q*=L;var N=O.findNearestHotSpot(M,[S,Q]);if(N&&N.iPoint>=0){var J=O.getHotSpotAtIndex(N.iPoint),P=K.xyToLatLon(J[0],J[1],0);return{lat:P[0],lon:P[1],speedId:J[5]}}return null}function G(K){var J=this.get("host").get("activeRoutePathIndex");if(J!==-1){if(K.info.newRouteData===null){I.call(this)}else{if(K.info.oldRouteData){o.call(this,K.info.waypoint,K.info.newRouteData)}else{c.call(this,K.info.newRouteData.routes[J])}}}}function g(M){var L=this.get("host"),J=M.src,K=M.info.path;L.fire("waypointRemovedFromActiveRoute",{route:J,waypoint:M.info.waypoint},k.bind(function(){var N=J.getWaypointCount();switch(N){case 0:L.set("activeRoute",null);break;case 1:L.set("activeRoutePathIndex",-1);w.call(this);break;default:C.call(this,K);e.call(this);break}h.call(this)},this))}function u(J){h.call(this);if(J.src.getWaypointCount()>1){this.get("host").set("activeRoutePathIndex",0)}}function E(){this.get("host").set("activeRoutePathIndex",0)}function t(){this.get("host").showMessage("Finding Routes...")}function p(){this.get("host").hideMessage(1000)}function q(){var N=this.get("host"),L=Sigalert.TrafficData[N.moConfig.getProperty("region")],O=Sigalert.TrafficData.Index,M=this.rampHotspots;k.forEach(L.SensorPositions,function(R,Q){var P=R[O.CompressedSensorPosChildren];M.addWithChildren(R[O.CompressedSensorPosX],R[O.CompressedSensorPosY],P===Q||P>Q+1?Q+1:0,P>Q?P:0,null,R[O.CompressedSensorPosIndex])},this);this.routeLayer=N.makeLayer(l.StrRouteLayerName,{className:"route-layer",isTiled:true,onCreateTile:function(){return new r()}});this.routeLayer.hide();N.makeLayer(l.StrRoutePushpinsLayerName,{className:"route-pushpin-layer"});var K=new Sigalert.common.Hash(),J=new Sigalert.common.QueryString();if((K.exists("route")&&K.getValue("route")==="1")||(!K.exists("route")&&J.getValue("route")==="1")){if(!N.loadRecentRoute()){K.setPair("route",0);K.applyHashToLocation()}else{Sigalert.common.LogPageViewExternally("FindRoutes/Load/Recent")}}}function a(){w.call(this)}var l=Chai.Widget.MapRoutePlugin=Chai.Widget.WidgetPlugin.extend({init:function(K,J){this.routeLayer=null;this.routeTiles=null;this.rampHotspots=new Chai.HotspotTree({name:"RouteRamps",enabled:true});this._super(K,J);this.attachAttributes({activeRoute:{value:null,validator:k.isObjectOrNull},activeRoutePathIndex:{value:-1,validator:k.isNumber}});this.attachMembers({snapXYToRoad:j,startRoute:B,addWaypointToRoute:s,reverseActiveRoute:x,centerMapOnActiveRoute:F,getRecentRouteRegion:H,hasRecentRoute:n,loadRecentRoute:f});K.after("ready",q,this);K.after("tilesCreated",a,this)},destruct:function(){var J=this.get("host");J.set("activeRoute",null);if(this.routeLayer){J.removeLayer(this.routeLayer)}J.detachAfter("ready",q,this);J.detachAfter("tilesCreated",a,this);this.routeLayer=null;this.routeTiles=null;this.rampHotspots=null;this._super()},activeRouteChanged:function(L,J){var K=this.get("host");if(J){J.destroy();I.call(this);K.set("activeRoutePathIndex",-1)}if(L){L.after("waypointDataUpdated",G,this);L.after("waypointRemoved",g,this);L.after("waypointPositionChanged",u,this);L.after("reverse",E,this);L.after("retrievingRoutePath",t,this);L.after("retrievedRoutePath",p,this)}else{K.set("activeRoutePathIndex",-1);w.call(this);h.call(this)}},activeRoutePathIndexChanged:function(M,L){var J=this.get("host"),K=J.get("activeRoute");if(K){if(L!==-1){k.forEach(K.waypoints,function(N){if(N.hasPaths()){z.call(this,N.getPath(L))}},this)}if(M!==-1){k.forEach(K.waypoints,function(N){if(N.hasPaths()){b.call(this,N.getPath(M))}},this)}e.call(this)}}});Chai.Widget.MapRoutePlugin.PluginNamespace="Chai.Widget.MapRoutePlugin";l.StrRouteCoverName="routes";l.StrRouteLayerName="routes";l.StrRoutePushpinsLayerName="routePushpins";l.RouteSnapToDistance=100;l.RouteSnapToDistanceSqd=l.RouteSnapToDistance*l.RouteSnapToDistance;A.StrRouteWaypointIconPrefix="/Themes/Common/MapRouteWaypoint-";A.StrRouteWaypointIconSuffix=".png";A.StrRouteWaypointIcon="/Themes/Common/MapRouteWaypoint.png";A.StrRouteWaypointStartIcon="/Themes/Common/MapRouteWaypoint.png";A.StrRouteWaypointEndIcon="/Themes/Common/MapRouteWaypoint.png"}());(function(){var V=Chai.Lang,W=Chai.Array,M=Chai.Dom,J=Chai.DomSize,l=Chai.Math,q=Chai.Flash,d=Chai.Widget,S=Chai.Widget.MapRoutePlugin;function L(ab,X){var Y=this.get("host"),Z=Y.get("contextMenu"),aa=Y.get("activeRoute");X=X||[];if(aa){if(X.length>0){X.push({isSeparator:true})}X.push({text:"Clear Route",name:"clear",click:R});if(aa.getWaypointCount()>1){X.push({text:"Reverse Route",name:"reverse",click:D});X.push({text:"Report Problem",name:"report",click:g})}}else{if(Y.hasRecentRoute()){if(X.length>0){X.push({isSeparator:true})}X.push({text:"Show Last Found Route",name:"recent",click:h})}}if(X.length>0){X.push({isSeparator:true})}X.push({text:"Zoom and Center Map",name:"center",data:ab,click:P});Z.removeAll();V.forEach(X,function(ad){var ac=Z.addItem({text:ad.text,name:ad.name,data:ad.data,isSeparator:ad.isSeparator});if(ad.click){ac.after("click",ad.click,this)}},this);Z.set("x",ab.x);Z.set("y",ab.y);Z.show()}function B(X){if(!X.altKey){M.stopEvent(X)}}function T(ab){if(ab.altKey){return}if(M.isRightMouseButton(ab)){var aa=this.get("host"),Y=aa.clientXyToMapXy(ab.clientX,ab.clientY),ad=aa.xyToLatLon(Y[0],Y[1]),ac={mapX:Y[0],mapY:Y[1],lat:ad[0],lon:ad[1],x:ab.pageX,y:ab.pageY};var X=aa.snapXYToRoad(Y[0],Y[1]);if(X){var Z=aa.moConfig.getProperty("region");Sigalert.data.Roads.getRoadSectionId(Z,function(ah){var ag=aa.get("activeRoute"),af={lat:X.lat,lon:X.lon,roadId:Sigalert.data.Roads.getRoadId(Z,ah),roadName:Sigalert.data.Roads.getRoadShortName(Z,ah),rampName:Sigalert.data.Roads.getSensorName(Z,X.speedId)};if(ag){if(ag.getWaypointCount()<2){var ae=ag.getWaypoint(0);L.call(this,ac,[{text:"End Route Here",name:"end",data:af,click:u}])}else{L.call(this,ac,[{text:"Change to Start",name:"changeStart",data:af,click:v},{text:"Change to End",name:"changeEnd",data:af,click:i}])}}else{L.call(this,ac,[{text:"Start Route Here",name:"start",data:af,click:F}])}},null,this,X.speedId)}else{L.call(this,ac,null)}}}function R(){this.get("host").set("activeRoute",null)}function D(){this.get("host").reverseActiveRoute();Sigalert.common.LogPageViewExternally("FindRoutes/Menu/Reverse")}function g(){Sigalert.common.ReportRouteProblem.showDialog(this.get("host").get("activeRoute"))}function h(){if(d.Canvas.renderMethod==="flash"&&!q.atLeastVersion(10,0,0)){j.call(this)}else{if(C.call(this,false)){Sigalert.common.LogPageViewExternally("FindRoutes/Menu/Recent")}}}function F(Z){var Y=this.get("host"),X=Z.src.get("data");if(d.Canvas.renderMethod==="flash"&&!q.atLeastVersion(10,0,0)){j.call(this)}else{if(!Y.get("activeRoute")){Y.startRoute(X.lat,X.lon,X.roadId,{roadName:X.roadName,rampName:X.rampName,zoom:Y.getZoom()})}}}function u(Z){var Y=this.get("host"),X=Z.src.get("data"),aa=Y.get("activeRoute");if(aa&&aa.getWaypointCount()<2){Y.addWaypointToRoute(X.lat,X.lon,X.roadId,{roadName:X.roadName,rampName:X.rampName,zoom:Y.getZoom()});Sigalert.common.LogPageViewExternally("FindRoutes/Menu/Create")}}function v(Y){var X=Y.src.get("data");this.get("host").get("activeRoute").setWaypointLatLonAt(0,X.lat,X.lon,X.roadId,{roadName:X.roadName,rampName:X.rampName});Sigalert.common.LogPageViewExternally("FindRoutes/Menu/ChangeStart")}function i(Y){var X=Y.src.get("data");this.get("host").get("activeRoute").setWaypointLatLonAt(1,X.lat,X.lon,X.roadId,{roadName:X.roadName,rampName:X.rampName});Sigalert.common.LogPageViewExternally("FindRoutes/Menu/ChangeEnd")}function P(aa){var Z=this.get("host"),Y=aa.src.get("data");if(Z.isZoomedInAllTheWay()){var X=Z.getMapXY();Z.slideMap(X[0]-Y.mapX,X[1]-Y.mapY)}else{Z.setLatLonZoom(Y.lat,Y.lon,Z.getZoom()-1)}Z._onUserDidAction()}function N(){this.routesLogo.addClassName("routes-logo-selected")}function b(){this.routesLogo.removeClassName("routes-logo-selected")}function C(aa){var Z=this.get("host");if(Z.loadRecentRoute()){return true}if(Z.hasRecentRoute()){var X=M.create("div").template("#mapRouteOtherRegion").get(),Y=M.create("div").template("#mapRouteOtherRegionButtons").get(),ab=null;M.use(".other-route-region-yes",Y).on("click",function(){var ac=new Sigalert.common.QueryString();ac.removePair("lat");ac.removePair("lon");ac.removePair("z");ac.setPair("region",Z.getRecentRouteRegion());ac.setPair("route",1);document.location="/Map.asp"+ac.getQueryString()},null,this);M.use(".other-route-region-no",Y).on("click",function(){ab.hide()},null,this);ab=Sigalert.common.showDialog("Recent Route",X,{width:"24em"},{buttons:Y})}else{if(aa){if(!this.helpFangPopUp){this.helpFangPopUp=new Sigalert.controls.PopUpControl({minwidth:50,maxwidth:352,classname:"route-help-popup",showheaderad:false,constraintoviewport:true,capturemousevents:true,positioningorder:["right"]});this.helpFangPopUp.render(Z.getCover(Sigalert.Widget.StaticMap.StrWidgetCoverName).getElement());YAHOO.util.Event.on(this.helpFangPopUp.mdivPopUp,"mouseover",Z._onMapMouseOut,null,Z);this.helpFangPopUp.setBody(M.create("div").template("#mapRouteHelp").get())}this.helpFangPopUp.show(Sigalert.common.element.getRegion(this.routesLogo.boundingNode))}}}function j(){Sigalert.common.showDialog("Flash Required",M.create("div").template("#mapRouteNoFlash").get(),{width:"35em"})}function K(){var X=this.get("host"),Y=X.get("activeRoute");if(d.Canvas.renderMethod==="flash"&&!q.atLeastVersion(10,0,0)){j.call(this)}else{if(!Y||Y.getWaypointCount()<2){if(C.call(this,true)){Sigalert.common.LogPageViewExternally("FindRoutes/Button/Recent")}}else{if(Y&&Y.getWaypointCount()>1){X.set("activeRoute",null)}}}}function c(){var Z=this.get("host");M.subscribe(Z.mLayers,"mouseup",T,null,this);M.subscribe(Z.mLayers,"contextmenu",B,null,this);var Y=Z.getLayer(S.StrRouteLayerName);if(Y.get("visible")){M.addClass(document.body,"map-routes-drawn")}Y.after("visibleChanged",I,this);this.routesLogo=Z.addLogo(Sigalert.Widget.StaticMap.StrWidgetCoverName,"routes");this.routesLogo.plug(d.MouseEventsPlugin);this.routesLogo.contentNode.innerHTML="<span style='color: #FFBC5A; font-weight: bold;'>NEW!</span> My Routes";this.routesLogo.addClassName("routes-logo");this.routesLogo.addClassName("map-clickable-logo");this.routesLogo.after("mousein",N,this);this.routesLogo.after("mouseout",b,this);this.routesLogo.after("click",K,this);if(typeof(GbIsDev)!=="undefined"){var X=M.create("div").css({position:"absolute",bottom:"20px",left:"8px",padding:"10px",border:"solid 1px #AAA","background-color":"WhiteSmoke"}).appendTo(Z.getCover(Sigalert.Widget.StaticMap.StrWidgetCoverName).getElement()).get();M.create("button").setHtml("Route Info").on("click",e,null,this).appendTo(X)}}function a(aa){var Z=this.get("host"),ac=Z.get("activeRoute"),X=aa.info;if(ac&&ac.getWaypointCount()>1){if(X.type===Sigalert.Widget.HotspotMap.HotSpotType.Speed){var Y=Z.moConfig.getProperty("region"),ab=X.data;Sigalert.data.Roads.getRoadSectionId(Y,function(af){var ae=Sigalert.data.Roads.getRoadId(Y,af),ad=ac.getSegments(Z.get("activeRoutePathIndex"));V.forEach(ad,function(ag){if(ag.id===ae&&ab>=ag.startSpeed&&ab<=ag.endSpeed){Z.showSpeedFangPopUp(ab,X.x,X.y,{startSpeedId:ag.startSpeed,endSpeedId:ag.endSpeed,slideToHotspot:true});aa.preventDefault();return true}},this)},null,this,ab)}}}function r(Z){var Y=M.get(".map-popup-route-instructions",Z.info.popUp.body);if(Z.info.itemType==="speed"){var X="",ab=this.get("host").get("activeRoute");if(ab){switch(ab.getWaypointCount()){case 0:X="Right click to start a route here.";break;case 1:X="Right click to end the route here.";break;case 2:X="Right click to change the route.";break}}else{X="Right click to start a route here."}if(Y){var aa=M.use(".map-popup-route-instructions-text",Y).setHtml(X);M.removeClass(Y,"map-popup-route-instructions-hidden")}else{aa=M.create("span").setClass("map-popup-route-instructions-text").setHtml(X).get();M.create("div").setClass("map-popup-route-instructions").append(aa).insertInto(M.get(".MapPopUpContent",Z.info.popUp.body),0)}}else{if(Y){M.addClass(Y,"map-popup-route-instructions-hidden")}}}function f(){if(this.helpFangPopUp&&this.helpFangPopUp.isOpen()){this.helpFangPopUp.destroy();this.helpFangPopUp=null}}function E(Z){var aa=this.get("host").get("activeRoute"),Y=Z.info.newValue,X=null;s.call(this);if(Y>=0&&aa&&aa.hasPath()){X=A.call(this,Y);X.addClassName("map-route-selected");if(!X.get("visible")){m.call(this,X,Y);y.call(this,X);o.call(this,X)}}}function H(Y){var X=Y.info.oldValue,Z=Y.info.newValue;if(X&&!X.get("destroyed")){X.detachAfter("waypointDataUpdated",x,this);X.detachAfter("waypointRemoved",G,this);X.detachAfter("waypointAdded",k,this);X.detachAfter("waypointRampChanged",p,this)}O.call(this);s.call(this);V.forEach(this.routeWidgets,function(aa){aa.set("segmentsVisible",false)});if(Z){Z.after("waypointDataUpdated",x,this);Z.after("waypointRemoved",G,this);Z.after("waypointAdded",k,this);Z.after("waypointRampChanged",p,this)}}function I(X){if(X.info.newValue){M.addClass(document.body,"map-routes-drawn")}else{M.removeClass(document.body,"map-routes-drawn")}}function n(X){this.fire("itemhovered",{pathIndex:X.src.get("data")},function(Z){var Y=this.get("host");Y.hidePopups();Y.set("activeRoutePathIndex",Z.info.pathIndex)})}function Q(Z){var Y=this.get("host"),aa=Y.get("activeRoute");if(aa&&!Z.info.newValue){var X=false;V.forEach(this.routeWidgets,function(ab){X|=ab.get("visible");if(X){return true}});if(!X){Y.set("activeRoute",null)}}}function z(ag){var X=this.get("host"),ac=X.get("activeRoute"),Z=ac.getPathCountAt(1),af=this.routeWidgets.length,aa=null,Y=0,ad=[],ab=[];ab.push(ag.src);for(var ae=0;ae<Z;ae+=1){aa=A.call(this,ae);if(!aa.get("visible")){m.call(this,aa,ae);aa.set("segmentsVisible",false);ad.push(aa)}else{if(aa!==ag.src){ab.push(aa)}}}V.forEach(ad,function(ah){V.forEach(ab,function(an){var al=this.routeWidgetRect.fit(J.box(an.boundingNode),M.getViewport(),{padding:{left:12,right:12,top:27,bottom:27},verticalAlignment:"top"}),aj=al.positions,am=null;V.forEach(aj,function(ao){if(ao.fills>=1){V.forEach(ab,function(ap){if(ap!==an){var aq=new l.Rect(ao.left,ao.top,this.routeWidgetRect.get("width"),this.routeWidgetRect.get("height"));if(aq.intersect(J.box(ap.boundingNode))){ao.intersects=true;return true}}},this);if(!ao.intersects){am=ao;return true}}},this);if(am){ah.set("x",am.left);ah.set("y",am.top);ah.show();var ak=J.box(an.boundingNode);var ai=J.box(an.contentNode);W.insert(ab,ah,0);return true}},this)},this)}function w(X){X.src.hidePopUps()}function O(){V.forEach(this.routeWidgets,function(X){X.hide()})}function s(){V.forEach(this.routeWidgets,function(X){X.removeClassName("map-route-selected")})}function A(X){if(X<this.routeWidgets.length){return this.routeWidgets[X]}return U.call(this)}function U(){var X=new Sigalert.Widget.Route();X.plug(d.OverlayPlugin);X.plug(d.MouseEventsPlugin);X.plug(d.DragAndDropPlugin);X.addClassName("map-route");X.hide();X.set("dragHandle","contentNode");X.after("mousein",n,this);X.after("visibleChanged",Q,this);X.after("alternateRoutesClicked",z,this);X.after("dragStarted",w,this);X.render(document.body);this.routeWidgets.push(X);return X}function m(Y,X){var Z=this.get("host"),aa=Z.get("activeRoute");switch(X){case 0:Y.set("title","My Route");break;case 1:Y.set("title","1st Alternative");break;case 2:Y.set("title","2nd Alternative");break}Y.set("region",aa.region);Y.set("data",X);Y.set("distance",aa.getDistanceInMiles(X));Y.set("time",aa.getTimeInMinutes(X));Y.set("speedLimitTime",aa.getSpeedLimitTimeInMinutes(X));Y.set("roads",aa.getRoadNames(1,X));Y.set("segments",aa.getSegments(X));if(X===Z.get("activeRoutePathIndex")){Y.addClassName("map-route-selected")}else{Y.removeClassName("map-route-selected")}Y.set("alternateRoutesEnabled",Z.get("activeRoute").getPathCountAt(1)>1)}function y(X,Y){var Z=YAHOO.util.Dom.getXY(this.routesLogo.boundingNode),aa=YAHOO.util.Dom.getRegion(this.routesLogo.boundingNode);X.set("x",Z[0]+aa.right-aa.left+12);X.set("y",Z[1])}function o(X){X.show();if(this.routeWidgetRect===null){this.routeWidgetRect=J.box(X.boundingNode)}}function x(ad){if(ad.info.newRouteData){var ac=this.get("host"),ae=ad.src,Y=ae.getPathCountAt(1),ab=this.routeWidgets.length,X=null;if(this.isFirstDataUpdateForActiveRoute&&Y>0){X=A.call(this,0);X.set("segmentsVisible",false);m.call(this,X,0);y.call(this,X);o.call(this,this.routeWidgets[0]);Y=1}for(var Z=0,aa=Math.min(Y,ab);Z<aa;Z+=1){X=this.routeWidgets[Z];if(X.get("visible")){m.call(this,X,Z)}}while(Z<ab){this.routeWidgets[Z].hide();Z+=1}this.isFirstDataUpdateForActiveRoute=false}}function G(X){if(X.src.getWaypointCount()<2){O.call(this)}}function k(X){if(X.src.getWaypointCount()>1){this.isFirstDataUpdateForActiveRoute=true}}function p(X){this.isFirstDataUpdateForActiveRoute=true}Chai.Widget.MapMouseRoutePlugin=Chai.Widget.WidgetPlugin.extend({init:function(Y,X){this.routesLogo=null;this.helpFangPopUp=null;this.routeWidgets=[];this.routeWidgetRect=null;this.isFirstDataUpdateForActiveRoute=false;this._super(Y,X);Y.after("ready",c,this);Y.after("activeRouteChanged",H,this);Y.after("activeRoutePathIndexChanged",E,this);Y.after("waypointAddedToActiveRoute",f,this);Y.on("hotspotClicked",a,this);Y.on("showRoadItemsListPopUp",r,this);Y.addClassName("mouse-route-map")},destruct:function(){var X=this.get("host");X.removeClassName("mouse-route-map");X.detachAfter("ready",c,this);X.detachAfter("activeRouteChanged",H,this);X.detachAfter("activeRoutePathIndexChanged",E,this);X.detachAfter("waypointAddedToActiveRoute",f,this);X.detach("hotspotClicked",a,this);X.detach("showRoadItemsListPopUp",r,this);M.unsubscribe(X.mLayers,"mouseup",T,this);M.unsubscribe(X.mLayers,"contextmenu",B,this);V.forEach(this.routeWidgets,function(Y){Y.destroy()});if(this.helpFangPopUp){this.helpFangPopUp.destroy()}if(this.routeWidgetRect){this.routeWidgetRect.destroy()}this.routeWidgetRect=null;this.routeWidgets=null;this.helpFangPopUp=null;this._super()}});function e(ab){var aa=this.get("host"),ac=this.get("host").get("activeRoute");if(ac&&ac.getWaypointCount()>1){var X=ac.getWaypoint(0),Y=ac.getWaypoint(1),Z=[];Z.push("<trip>\r\n");Z.push("\t<region>"+aa.moConfig.getProperty("region")+"</region>\r\n");Z.push("\t<maxRoutes>3</maxRoutes>\r\n\r\n");Z.push("\t<start>\r\n");Z.push("\t\t<roadId>"+X.getRoadId()+"</roadId> <!-- "+X.getRoadName()+" -->\r\n");Z.push("\t\t<ramp>"+X.getRampName()+"</ramp>\r\n");Z.push("\t\t<near>\r\n");Z.push("\t\t\t<lat>"+X.getLat()+"</lat>\r\n");Z.push("\t\t\t<lon>"+X.getLon()+"</lon>\r\n");Z.push("\t\t</near>\r\n");Z.push("\t</start>\r\n");Z.push("\t<destination>\r\n");Z.push("\t\t<roadId>"+Y.getRoadId()+"</roadId> <!-- "+Y.getRoadName()+" -->\r\n");Z.push("\t\t<ramp>"+Y.getRampName()+"</ramp>\r\n");Z.push("\t\t<near>\r\n");Z.push("\t\t\t<lat>"+Y.getLat()+"</lat>\r\n");Z.push("\t\t\t<lon>"+Y.getLon()+"</lon>\r\n");Z.push("\t\t</near>\r\n");Z.push("\t</destination>\r\n");Z.push("</trip>\r\n");Sigalert.common.showDialog("Route Info","<code><pre>"+t(Z.join(""))+"</code></pre>",{width:"70em"})}}function t(Y){var Z=M.make("div"),X=document.createTextNode(Y);Z.appendChild(X);return Z.innerHTML}}());(function(){var e=Chai.Lang,d=Chai.Dom,f=Chai.Widget.ListItem;function c(){if(this.titleNode){var g=this.get("roadLongName");if(this.get("first")){g+=" at "+this.get("onRamp")}else{if(this.get("last")){g+=" at "+this.get("offRamp")}}this.titleNode.innerHTML=g}}function a(){if(this.contentNode){var i=this.get("time"),h=this.get("speedLimitTime"),g="SpeedPct";if(isNaN(i)||isNaN(h)){g+="NA"}else{if(i===0){g+="100"}else{g+=Math.min(100*h/i,100).toFixed(0)}}d.setClass(this.timeInfoNode,"route-segment-list-item-time-info "+g)}}function b(){var g=d.get(".route-segment-list-item-details",this.contentNode),h=d.get(".route-segment-list-item-arrow",this.contentNode);if(d.hasClass(g,"route-segment-list-item-details-hidden")){d.removeClass(g,"route-segment-list-item-details-hidden");d.replaceClass(h,"route-segment-list-item-collapsed","route-segment-list-item-expanded");if(!this.roadDetails){this.roadDetails=new Sigalert.controls.RoadSummaryControl({region:this.get("region"),showheader:true})}Sigalert.data.Roads.getRoadSectionId(this.get("region"),function(i){this.roadDetails.render(g);this.roadDetails.loadSummaryForRoadSegment(i,this.get("startSpeed"),this.get("endSpeed"),false)},null,this,this.get("startSpeed"))}else{if(this.roadDetails){this.roadDetails.hideDetailsPopUp()}d.addClass(g,"route-segment-list-item-details-hidden");d.replaceClass(h,"route-segment-list-item-expanded","route-segment-list-item-collapsed")}}Sigalert.Widget.RouteSegmentListItem=f.extend({init:function(g,h){this.distanceNode=null;this.distanceUnitsNode=null;this.timeNode=null;this.timeUnitsNode=null;this.titleNode=null;this.timeInfoNode=null;this.detailsNode=null;this.roadDetails=null;this._super(g);this.addAttributes({region:{value:null,validator:e.isString},distance:{value:0,validator:e.isNumber},time:{value:null},speedLimitTime:{value:0,validator:e.isNumber},onRamp:{value:"",validator:e.isString},offRamp:{value:"",validator:e.isString},roadLongName:{value:"",validator:e.isString},startSpeed:{value:-1,validator:e.isNumber},endSpeed:{value:-1,validator:e.isNumber}})},destruct:function(){if(this.contentNode){d.unsubscribe(d.get(".route-segment-list-item-data",this.contentNode),"click",b,this)}if(this.roadDetails){this.roadDetails.destroy()}this.distanceNode=null;this.distanceUnitsNode=null;this.timeInfoNode=null;this.timeNode=null;this.timeUnitsNode=null;this.titleNode=null;this.detailsNode=null;this.roadDetails=null;this._super()},className:"route-segment-list-item",distanceChanged:function(g){if(this.distanceNode){this.distanceNode.innerHTML=g+"";this.distanceUnitsNode.innerHTML=(g===1?"MILE":" MILES")}},timeChanged:function(g){if(this.timeNode){this.timeNode.innerHTML=g.toFixed(0);this.timeUnitsNode.innerHTML=(Math.round(g)===1?"MIN":" MINS")}a.call(this)},speedLimitTimeChanged:function(){a.call(this)},onRampChanged:function(){c.call(this)},offRampChanged:function(){c.call(this)},roadLongNameChanged:function(){c.call(this)},renderUI:function(){this._super();var g=this.get("time"),h=this.get("distance");d.fragment("#routeSegmentListItem",{distance:h+" ",distanceUnits:h===1?"MILE":"MILES",time:g.toFixed(0),timeUnits:Math.round(g)===1?"MIN":"MINS"}).appendTo(this.contentNode);this.distanceNode=d.get(".route-segment-list-item-distance-text",this.contentNode);this.distanceUnitsNode=d.get(".route-segment-list-item-distance-units",this.contentNode);this.timeInfoNode=d.get(".route-segment-list-item-time-info",this.contentNode);this.timeNode=d.get(".route-segment-list-item-time",this.contentNode);this.timeUnitsNode=d.get(".route-segment-list-item-time-units",this.infoNode);this.titleNode=d.get(".route-segment-list-item-title-text",this.contentNode);this.detailsNode=d.get(".route-segment-list-item-details",this.contentNode);c.call(this);a.call(this)},bindUI:function(){this._super();d.subscribe(d.get(".route-segment-list-item-data",this.contentNode),"click",b,null,this)},hidePopUps:function(){if(this.roadDetails){this.roadDetails.hideDetailsPopUp()}}})}());(function(){var d=Chai.Lang,c=Chai.Dom,a=Chai.Widget.List,b=Sigalert.Widget.RouteSegmentListItem;Sigalert.Widget.RouteSegmentList=a.extend({init:function(e){this._super(e);this.addAttributes({region:{value:null,validator:d.isString},segments:{value:null,validator:d.isArrayOrNull}})},className:"route-segment-list",visibleChanged:function(e){this.each(function(f){f.hidePopUps()});this._super(e)},segmentsChanged:function(e){this.removeAll();d.forEach(e,function(i,f,h){var g=new b();g.set("region",this.get("region"));g.set("distance",i.miles);g.set("time",i.minutes);g.set("speedLimitTime",i.speedLimitTravelMinutes);g.set("onRamp",i.onramp);g.set("offRamp",i.offramp);g.set("roadLongName",i.roadLongName);g.set("startSpeed",i.startSpeed);g.set("endSpeed",i.endSpeed);this.addItem(g)},this)},hidePopUps:function(){this.each(function(e){e.hidePopUps()})}})}());(function(){var g=Chai.Lang,e=Chai.Dom;function j(){this.segmentList=new Sigalert.Widget.RouteSegmentList();this.segmentList.hide();this.segmentList.set("region",this.get("region"));this.segmentList.set("segments",this.get("segments"));this.segmentList.render(e.get(".route-segments",this.contentNode))}function c(){this.fire("blindButtonClicked",null,function(){this.set("segmentsVisible",!this.get("segmentsVisible"))})}function k(){if(this.get("segments")){if(this.segmentList===null){j.call(this)}}if(this.segmentList){var l=this.get("segmentsVisible");this.segmentList.set("visible",l);if(l){e.addClass(this.blindButtonNode,"route-blind-button-open");e.addClass(this.boundingNode,"route-expanded")}else{e.removeClass(this.blindButtonNode,"route-blind-button-open");e.removeClass(this.boundingNode,"route-expanded")}}}function a(){if(this.get("alternateRoutesEnabled")){e.addClass(this.altRoutesNode,"route-alts-selected")}}function h(){if(this.get("alternateRoutesEnabled")){e.removeClass(this.altRoutesNode,"route-alts-selected")}}function d(){if(this.get("alternateRoutesEnabled")){e.addClass(this.hideNode,"route-hide-selected")}}function b(){if(this.get("alternateRoutesEnabled")){e.removeClass(this.hideNode,"route-hide-selected")}}function i(l,m){if(l===this.pinNode){this.set("pinned",!this.get("pinned"))}else{if(e.hasClass(l,"route-hide")){this.hide()}else{if(e.hasClass(l,"route-alts")){this.fire("alternateRoutesClicked")}}}}function f(){if(this.infoNode){var n=this.get("time"),m=this.get("speedLimitTime"),l="SpeedPct";if(isNaN(n)||isNaN(m)){l+="NA"}else{if(n===0){l+="100"}else{l+=Math.min(100*m/n,100).toFixed(0)}}e.setClass(this.infoNode,"route-info "+l)}}Sigalert.Widget.Route=Chai.Widget.extend({init:function(l,m){this.infoNode=null;this.distanceNode=null;this.distanceUnitsNode=null;this.timeNode=null;this.timeUnitsNode=null;this.roadsNode=null;this.titleNode=null;this.blindButtonNode=null;this.pinNode=null;this.hideNode=null;this.altRoutesNode=null;this.segmentList=null;this._super(l);this.addAttributes({region:{value:"",validator:g.isString},title:{value:"",validator:g.isString},distance:{value:0,validator:g.isNumber},time:{value:0,validator:g.isNumber},speedLimitTime:{value:0,validator:g.isNumber},roads:{value:null,validator:g.isArrayOrNull},segments:{value:null,validator:g.isArrayOrNull},pinned:{value:false,validator:g.isBoolean},segmentsVisible:{value:false,validator:g.isBoolean},alternateRoutesEnabled:{value:true,validator:g.isBoolean}})},destruct:function(){if(this.segmentList){this.segmentList.destroy()}this.infoNode=null;this.distanceNode=null;this.distanceUnitsNode=null;this.timeNode=null;this.timeUnitsNode=null;this.roadsNode=null;this.titleNode=null;this.blindButtonNode=null;this.pinNode=null;this.hideNode=null;this.altRoutesNode=null;this.segmentList=null;this._super()},className:"route",regionChanged:function(l){if(this.segmentList){this.segmentList.set("region",l)}},titleChanged:function(l){if(this.titleNode){this.titleNode.innerHTML=l}},distanceChanged:function(l){if(this.distanceNode&&this.distanceUnitsNode){this.distanceNode.innerHTML=l+" ";this.distanceUnitsNode.innerHTML=(l===1?"MILE":"MILES")}},timeChanged:function(l){if(this.timeNode){this.timeNode.innerHTML=l.toFixed(0)+" ";this.timeUnitsNode.innerHTML=(Math.round(l)===1?"MIN":"MINS");f.call(this)}},speedLimitTimeChanged:function(l){f.call(this)},roadsChanged:function(l){if(this.roadsNode){e.fragment("#routeListItemRoads",{roads:l}).replaceIn(this.roadsNode)}},segmentsChanged:function(l){if(this.segmentList){this.segmentList.set("segments",l)}},pinnedChanged:function(l){if(this.pinNode){if(l){e.replaceClass(this.pinNode,"route-pin-out","route-pin-in")}else{e.replaceClass(this.pinNode,"route-pin-in","route-pin-out")}}},segmentsVisibleChanged:function(l){if(this.boundingNode){k.call(this)}},alternateRoutesEnabledChanged:function(l){if(this.altRoutesNode){if(l){this.altRoutesNode.title="Show Alternative Routes"}else{this.altRoutesNode.title="No More Routes";e.removeClass(this.altRoutesNode,"route-alts-selected")}}},renderUI:function(){this._super();var l=this.get("time"),n=this.get("distance");e.fragment("#routeListItem",{time:l.toFixed(0)+" ",timeUnits:Math.round(l)===1?"MIN":"MINS",distance:n+" ",distanceUnits:n===1?"MILE":"MILES",title:this.get("title"),pinned:this.get("pinned")}).appendTo(this.contentNode);this.infoNode=e.get(".route-info",this.contentNode);this.distanceNode=e.get(".route-distance-text",this.infoNode);this.distanceUnitsNode=e.get(".route-distance-units",this.infoNode);this.timeNode=e.get(".route-time-text",this.infoNode);this.timeUnitsNode=e.get(".route-time-units",this.infoNode);this.roadsNode=e.get(".route-roads",this.contentNode);this.titleNode=e.get(".route-title",this.contentNode);this.blindButtonNode=e.get(".route-blind-button",this.contentNode);this.pinNode=e.get(".route-pin",this.contentNode);this.hideNode=e.get(".route-hide",this.contentNode);this.altRoutesNode=e.get(".route-alts",this.contentNode);e.fragment("#routeListItemRoads",{roads:this.get("roads")}).replaceIn(this.roadsNode);var m=this.get("alternateRoutesEnabled");if(!m){this.altRoutesNode.title="No More Routes"}k.call(this)},bindUI:function(){this._super();this.bind(this.blindButtonNode,"click",c,this);this.bind(this.altRoutesNode,"mousein",a,this);this.bind(this.altRoutesNode,"mouseout",h,this);this.bind(this.hideNode,"mousein",d,this);this.bind(this.hideNode,"mouseout",b,this);this.delegate(this.contentNode,"click",".route-button",g.bind(i,this))},hidePopUps:function(){if(this.segmentList){this.segmentList.hidePopUps()}}})}());(function(){var d=Chai.Lang,e=Chai.Array,g=Chai.Date,m=Chai.Event,j=Sigalert.Widget.DynamicMap;var h=0;function k(n){return(n?n+"-":"")+"Waypoint-"+h++}function l(n){d.forEach(this.waypoints,function(o,p){if(p>0){this.loadWaypointPath(this.waypoints[p-1],o,true)}},this)}function i(){d.forEach(this.waypoints,function(n){n.destroy()});this.waypoints=[]}function b(n){this.fire("waypointDataUpdated",{waypoint:n.src,oldRouteData:n.info.oldValue,newRouteData:n.info.newValue});this.onDataUpdated.fire({route:this})}function a(n){this.fire("communicationError",{message:n.info.message,status:n.info.status,type:n.info.type,waypoint:n.src},function(){if(n.info.type==="routePath"){this.removeWaypoint(n.src)}})}function f(n){this.fire("retrievingRoutePath",{waypoint:n.src})}function c(n){this.fire("retrievedRoutePath",{waypoint:n.src})}j.Route=Chai.Class.extend({init:function(o,p,n){this._super();this.id=p;this.waypoints=[];n=d.applyDefaultProperties(n,{waypointConstructor:j.Route.RampWaypoint,autoUpdatePath:true});this.waypointConstructor=n.waypointConstructor;this.autoUpdatePath=n.autoUpdatePath;this.reqReverseRoads=null;this.setRegion(o);this.onDataUpdated=new m("dataupdated")},destruct:function(){this.onDataUpdated.removeAll();this.abortReverseRoadsRequest();if(this.region&&this.autoUpdatePath){Sigalert.data.Manager[this.region].onDataUpdated.unsubscribe(l,this)}i.call(this);this.waypoints=null;this._super()},getRouteData:function(n){return this.waypoints[n].getRouteData()},getPath:function(o,n){return this.waypoints[o].getPath(n)},getEncodedData:function(n){return this.waypoints[n].getEncodedData()},getRoadNames:function(o,n){return this.waypoints[o].getRoadNames(n)},getName:function(o,n){return this.waypoints[o].getPathName(n)},setRegion:function(n){if(this.region!==n){if(this.region&&this.autoUpdatePath){Sigalert.data.Manager[this.region].onDataUpdated.unsubscribe(l,this)}this.region=n;if(this.region&&this.autoUpdatePath){Sigalert.data.Manager[this.region].onDataUpdated.subscribe(l,this,this)}}},getRegion:function(){return this.region},getDistanceInMiles:function(n){var r=0;for(var p=1,o=0,q=this.waypoints.length;p<q;p+=1){var o=this.waypoints[p].getPathDistanceInMiles(n);if(o===null){return null}r+=o}return r},getTimestamp:function(n){var o=this.getTimeInMinutes(n);if(o===null){return null}return g.formatTimespan(o)},getTimeInMinutes:function(n){var r=0;for(var p=1,o=0,q=this.waypoints.length;p<q;p+=1){var s=this.waypoints[p].getPathTimeInMinutes(n);if(s===null){return null}r+=s}return r},getSpeedLimitTimeInMinutes:function(n){var r=0;for(var p=1,o=0,q=this.waypoints.length;p<q;p+=1){var s=this.waypoints[p].getPathSpeedLimitTimeInMinutes(n);if(s===null){return null}r+=s}return r},getSegments:function(n){var p=[];for(var q=1,o=null,r=this.waypoints.length;q<r;q+=1){var o=this.waypoints[q].getSegments(n);if(o===null){return null}p=p.concat(o)}return p},getWaypointCount:function(){return this.waypoints?this.waypoints.length:0},getWaypoint:function(n){return this.waypoints[n]},hasPath:function(){for(var n=0,o=this.waypoints.length;n<o;n+=1){if(this.waypoints[n].hasPaths()){return true}}return false},getPathCountAt:function(n){return n>=0&&n<this.waypoints.length?this.getPathCount(this.waypoints[n]):0},getPathCount:function(n){return n.getPathCount()},clearWaypoints:function(){i.call(this);this.onDataUpdated.fire({route:this})},abortReverseRoadsRequest:function(){if(this.reqReverseRoads&&this.reqReverseRoads.isRequestInProgress()){this.reqReverseRoads.abort()}this.reqReverseRoads=null},reverse:function(){this.abortReverseRoadsRequest();if(this.waypoints.length>1){this.fire("reverse",null,function(){var n=[];d.forEach(this.waypoints,function(o,p){o.abortPathRequest();n.push({roadId:o.getRoadId(),postmile:o.getPostmile(),isOnRamp:p>0})},this);this.abortReverseRoadsRequest();this.reqReverseRoads=Sigalert.data.Ramps.getReverseRamps(this.region,n,{success:function(o){this.waypoints.reverse();o.reverse();d.forEach(this.waypoints,function(p,q,r){p.clearRouteData();p.set("index",q);p.setIsOnRamp(q<r-1);p.setRamp(o[q])},this)},failure:function(q,o,p){this.fire("communicationError",{message:q,status:p})},errorDisplay:Sigalert.Ajax.Config.ErrorDisplay.Alert,scope:this})})}},removeWaypointAt:function(n){this.removeWaypoint(this.waypoints[n])},removeWaypoint:function(n){this.abortReverseRoadsRequest();var p=n.get("index");for(var o=p+1,r=this.waypoints.length;o<r;o+=1){this.waypoints[o].set("index",o-1)}e.removeAt(this.waypoints,p);if(p<this.waypoints.length){var q=this.waypoints[p];if(q.get("index")===0){q.abortPathRequest();q.clearRouteData()}else{if(q.get("index")===this.waypoints.length){}else{this.loadWaypointPath(this.waypoints[q.get("index")-1],q,false)}}}this.fire("waypointRemoved",{waypoint:n,path:n.getRouteData()});n.destroy()},addWaypoint:function(q,r,p,o){var n=null;this.fire("waypointAdded",{lat:q,lon:r,roadId:p,config:o},function(s){this.abortReverseRoadsRequest();o=d.applyDefaultProperties(o,{roadName:null,rampName:null,zoom:null});n=new this.waypointConstructor(this.waypoints.length,this.waypoints.length===0);n.id=k(this.id);n.region=this.region;n.zoom=o.zoom;n.after("routeDataChanged",b,this);n.after("communicationError",a,this);n.on("retrievingRoutePath",f,this);n.after("retrievedRoutePath",c,this);this.waypoints.push(n);n.setRamp({roadName:o.roadName,name:o.rampName,lat:q,lon:r,roadId:p})});return n},setWaypointLatLonAt:function(o,q,r,p,n){this.setWaypointLatLon(this.waypoints[o],q,r,p,n)},setWaypointLatLon:function(n,q,r,p,o){this.abortReverseRoadsRequest();o=d.applyDefaultProperties(o,{roadName:null,rampName:null});n.setRamp({roadName:o.roadName,name:o.rampName,lat:q,lon:r,roadId:p})},updatePathsForWaypoint:function(n){if(n.get("index")===0){if(this.waypoints.length>1){this.loadWaypointPath(n,this.waypoints[1])}}else{if(n.get("index")===this.waypoints.length-1){if(this.waypoints.length>1){this.loadWaypointPath(this.waypoints[n.get("index")-1],n)}}else{this.loadWaypointPath(this.waypoints[n.get("index")-1],n);this.loadWaypointPath(n,this.waypoints[n.get("index")+1])}}},loadWaypointPath:function(n,o){o.updatePath(this.region,n)}});j.Route.mix(Chai.EventPublisher)}());(function(){var d=Chai.Lang,b=Chai.Dom,h=Chai.Event,a=Chai.Widget.MapRoutePlugin,c=Sigalert.Widget.DynamicMap;function e(i){this.loadWaypoint(i.waypoint,!i.isAdjustment);this.onWaypointLatLonChanged(i.waypoint);this.fire("waypointPositionChanged",{waypoint:i.waypoint});this.fire("waypointRampChanged",{waypoint:i.waypoint})}function g(i){this.onWaypointNearbyRampsChanged(i.src);this.fire("waypointRampChanged",{waypoint:i.src})}function f(i){if(d.isObject(i.src.pushpin)){i.src.pushpin.set("iconUrl",GstrImageDir+c.StrRouteWaypointIconPrefix+(i.info.newValue+1)+c.StrRouteWaypointIconSuffix)}}c.MapRoute=c.Route.extend({init:function(k,l,j,i){this._super(k,l,i);this.map=j},destruct:function(){d.forEach(this.waypoints,function(i){if(d.isObject(i.pushpin)){i.pushpin.removeFromLayer()}},this);this.map=null;this._super()},removeWaypoint:function(i){if(d.isObject(i.pushpin)){i.pushpin.removeFromLayer()}this._super(i)},addWaypoint:function(l,m,k,j){var i=this._super(l,m,k,j);i.onLatLonChanged.subscribe(e,null,this);i.after("nearbyrampsloaded",g,this);i.after("indexChanged",f,this);this.loadWaypoint(i,true)},createPushpin:function(i){return this.map.addPushpin(a.StrRoutePushpinsLayerName,b.generateId(i.id+"-"),i.getLat(),i.getLon(),{iconUrl:GstrImageDir+c.StrRouteWaypointIconPrefix+(i.get("index")+1)+c.StrRouteWaypointIconSuffix,verticalAlignment:"bottom",horizontalAlignment:"center",tooltip:i.getRoadName()+" at "+i.getRampName()})},loadWaypoint:function(i,j){if(d.isObject(i.pushpin)){i.pushpin.set("lat",i.getLat());i.pushpin.set("lon",i.getLon());i.pushpin.set("tooltip",i.getRoadName()+" at "+i.getRampName())}else{i.pushpin=this.createPushpin(i)}if(j){this.updatePathsForWaypoint(i)}},onWaypointLatLonChanged:d.noop,onWaypointNearbyRampsChanged:d.noop});c.RouteConstructor=c.MapRoute}());(function(){var h=Chai.Lang,f=Chai.Dom,k=Sigalert.Widget.DynamicMap;function c(o,p){o.changeToNearbyRamp(parseInt(f.getData(p,"road-id"),10),parseFloat(f.getData(p,"ramp-postmile")));o.popUp.hide()}function g(o,p,r){var q=f.toggleClass(p,"map-route-nearby-hidden");if(q){o.popUp.hide()}else{r.setHtml("Cancel");o.popUp.reposition()}}function b(p,o){h.later(0,function(){this.removeWaypoint(o)},null,this)}function m(p,r){var o=f.create("div").template("#routeWaypointPopup",{roadName:p.getRoadName(),rampName:p.getRampName(),nearbyRamps:p.getNearbyRamps(),showNearbyRamps:r}).get();var q=f.use(".map-route-nearby",o).delegate("click",".map-route-nearby-ramp",h.bind(c,this,p)).get(),s=f.use(".map-route-ramp-change",o);s.on("click",h.bind(g,this,p,q,s));f.use(".map-route-remove",o).on("click",b,p,this);if(!p.popUp){p.popUp=new Chai.Widget.PopUp();p.popUp.plug(Chai.Widget.MouseCapturePlugin);p.popUp.addClassName("route-waypoint-popup");p.popUp.set("showAd",false);p.popUp.set("target",p.pushpin.boundingNode);p.popUp.set("body",o);this.map.addPopUp(p.popUp)}else{p.popUp.set("body",o);p.popUp.show()}}function i(o){return o.popUp&&o.popUp.get("visible")}function l(o){m.call(this,o.data)}function j(p){var o=p.info.event;if(o.button===2){var q=this.map.get("contextMenu");q.removeAll();q.addItem({text:"Remove Location",name:"remove",data:p.data}).after("click",e,this);q.addItem({text:"Change Location",name:"change",data:p.data}).after("click",n,this);q.addItem({text:"Reverse Route",name:"reverse"}).after("click",a,this);q.addItem({isSeparator:true});q.addItem({text:"Report Problem",name:"report"}).after("click",d,this);q.set("x",o.pageX);q.set("y",o.pageY);q.show()}}function e(o){this.removeWaypoint(o.src.get("data"))}function n(o){m.call(this,o.src.get("data"),true)}function a(){this.map.reverseActiveRoute()}function d(){Sigalert.common.ReportRouteProblem.showDialog(this)}k.MouseRoute=k.MapRoute.extend({init:function(q,r,p,o){this._super(q,r,p,o);this.contextMenu=null},destruct:function(){if(this.contextMenu){this.contextMenu.destroy();this.contextMenu=null}h.forEach(this.waypoints,function(o){if(o.popUp){this.map.removePopUp(o.popUp);o.popUp.destroy();o.popUp=null}},this);this._super()},removeWaypoint:function(o){if(o.popUp){this.map.removePopUp(o.popUp);o.popUp.destroy();o.popUp=null}this._super(o)},createPushpin:function(o){var p=this._super(o);p.plug(Chai.Widget.MouseEventsPlugin);p.addClassName("map-clickable-pushpin");p.on("click",l,this,o);p.on("mouseup",j,this,o);return p},onWaypointRampChanged:function(o){if(i.call(this,o)){o.popUp.reposition()}},onWaypointLatLonChanged:function(o){if(i.call(this,o)){o.popUp.reposition()}},onWaypointNearbyRampsChanged:function(o){if(i.call(this,o)){m.call(this,o)}}});k.RouteConstructor=k.MouseRoute}());(function(){var b=Chai.Lang,c=Chai.Event,a=Sigalert.Widget.DynamicMap;a.Route.Waypoint=Chai.Class.extend({init:function(d,e){this._super({index:{value:0,validator:b.isNumber},routeData:{value:null}});this.set("index",d);this.isOnRamp=e;this.ramp={};this.id=null;this.reqPath=null;this.initialRamp=null;this.prevWaypoint=null;this.onLatLonChanged=new c("latlonchanged")},destruct:function(){this.onLatLonChanged.removeAll();this.ramp=null;this.initialRamp=null;this.abortPathRequest();this._super()},updatePath:function(e,d){this.fire("retrievingRoutePath",null,function(){this.abortPathRequest();this.reqPath=Sigalert.data.Routes.getRoutePath(e,d,this,3,{success:function(f){this.prevWaypoint=d;this.set("routeData",f);this.prevWaypoint=null;this.fire("retrievedRoutePath")},failure:function(h,f,g){this.fire("communicationError",{message:h,status:g,type:"routePath"});this.fire("retrievedRoutePath")},errorDisplay:Sigalert.Ajax.Config.ErrorDisplay.Alert,scope:this})})},routeDataChanged:function(d){if(d){b.forEach(d.routes,function(e,f){e.id=this.id+"-"+f;e.waypointId=this.id},this);if(d.startRamp){this.prevWaypoint.setRamp(d.startRamp,true)}if(d.endRamp){this.setRamp(d.endRamp,true)}}},abortPathRequest:function(){if(this.reqPath&&this.reqPath.isRequestInProgress()){this.reqPath.abort()}this.reqPath=null},clearRouteData:function(){this.set("routeData",null)},getId:function(){return this.id},getPathDistanceInMiles:function(d){if(this.reqPath&&this.reqPath.isRequestInProgress()){return null}if(!b.isNumber(d)){d=0}return this.get("routeData").routes[d].miles},getPathTimeInMinutes:function(d){if(this.reqPath&&this.reqPath.isRequestInProgress()){return null}if(!b.isNumber(d)){d=0}return this.get("routeData").routes[d].travelMinutes},getPathSpeedLimitTimeInMinutes:function(d){if(this.reqPath&&this.reqPath.isRequestInProgress()){return null}if(!b.isNumber(d)){d=0}return this.get("routeData").routes[d].speedLimitTravelMinutes},getSegments:function(d){if(this.reqPath&&this.reqPath.isRequestInProgress()){return null}return this.get("routeData").routes[d].segs},hasPaths:function(){if(this.reqPath&&this.reqPath.isRequestInProgress()){return null}return this.get("routeData")!==null},getPathCount:function(){if(this.reqPath&&this.reqPath.isRequestInProgress()){return 0}var d=this.get("routeData");if(d===null){return 0}return d.routes.length},getPath:function(d){if(this.reqPath&&this.reqPath.isRequestInProgress()){return null}return this.get("routeData").routes[d]},getPathName:function(d){if(this.reqPath&&this.reqPath.isRequestInProgress()){return null}return this.get("routeData").routes[d].name},getRoadNames:function(d){if(this.reqPath&&this.reqPath.isRequestInProgress()){return null}return this.get("routeData").routes[d].roadNames},getEncodedData:function(){return this.get("routeData").routes[0].encData},getRouteData:function(){return this.get("routeData")},getRampName:function(){return this.ramp.name},getRoadName:function(){return this.ramp.roadName},getRoadId:function(){return this.ramp.roadId},getLat:function(){return this.ramp.lat},getLon:function(){return this.ramp.lon},getPostmile:function(){return this.ramp.postmile},getInitialRampName:function(){return this.initialRamp.name},getInitialRoadName:function(){return this.initialRamp.roadName},getInitialRoadId:function(){return this.initialRamp.roadId},getInitialLat:function(){return this.initialRamp.lat},getInitialLon:function(){return this.initialRamp.lon},setIsOnRamp:function(d){if(this.isOnRamp!==d){this.isOnRamp=d}},setRamp:function(e,d){if(e.lat!==this.ramp.lat||e.lon!==this.ramp.lon||e.postmile!==this.ramp.postmile||e.roadId!==this.ramp.roadId){this.ramp=e;if(this.initialRamp===null||!d){this.initialRamp=b.copy(this.ramp)}this.onLatLonChanged.fire({waypoint:this,isAdjustment:Boolean(d)});return true}return false}})}());(function(){var e=Chai.Lang,b=Chai.Array,d=Sigalert.Widget.DynamicMap;function c(i,k){var h=null;if(this.nearbyRamps){var j=this.isOnRamp?this.nearbyRamps.onRamps:this.nearbyRamps.offRamps;e.forEach(j,function(l,m){if(l.roadId===i){e.forEach(l.ramps,function(n,o){if(n.postmile===k){h={roadId:l.roadId,roadName:l.roadName,name:n.name,lat:n.lat,lon:n.lon,postmile:n.postmile};return true}},this);return true}},this)}return h}function a(h){if(this.nearbyRamps&&h&&e.isNumber(h.postmile)){var i=this.isOnRamp?this.nearbyRamps.onRamps:this.nearbyRamps.offRamps;e.forEach(i,function(j,k){if(j.roadId===h.roadId){e.forEach(j.ramps,function(l,m){if(l.postmile===h.postmile){b.removeAt(j.ramps,m);return true}});if(j.ramps.length===0){b.removeAt(i,k)}return true}})}}function f(h){if(this.nearbyRamps&&h&&e.isNumber(h.postmile)){var i=this.isOnRamp?this.nearbyRamps.onRamps:this.nearbyRamps.offRamps;e.forEach(i,function(j){if(j.roadId===h.roadId){j.ramps.push({name:h.name,lat:h.lat,lon:h.lon,postmile:h.postmile});h=null;return true}});if(h!==null){i.push({roadId:h.roadId,roadName:h.roadName,ramps:[{name:h.name,lat:h.lat,lon:h.lon,postmile:h.postmile}]})}}}function g(){if(this.reqNearbyRamps&&this.reqNearbyRamps.isRequestInProgress()){this.reqNearbyRamps.abort();this.reqNearbyRamps=null}this.nearbyRamps=null;this.reqNearbyRamps=Sigalert.data.Ramps.getNearbyRamps(this.region,this.getInitialLat(),this.getInitialLon(),this.zoom,this.isOnRamp,{roadId:this.getInitialRoadId(),success:function(h){this.fire("nearbyrampsloaded",null,function(){this.nearbyRamps={onRamps:h.onRamps,offRamps:h.offRamps};if(h.nearestRamp){this.initialRamp=e.copy(h.nearestRamp)}if(this.get("index")===0&&h.nearestRamp){this.setRamp(h.nearestRamp,true)}else{a.call(this,this.ramp);f.call(this,h.nearestRamp)}})},failure:function(j,h,i){this.fire("communicationError",{message:j,status:i,type:"nearbyRamps"})},errorDisplay:Sigalert.Ajax.Config.ErrorDisplay.Console,scope:this})}d.Route.RampWaypoint=d.Route.Waypoint.extend({init:function(h,i){this._super(h,i);this.nearbyRamps=null;this.reqNearbyRamps=null},destruct:function(){if(this.reqNearbyRamps&&this.reqNearbyRamps.isRequestInProgress()){this.reqNearbyRamps.abort()}this.reqNearbyRamps=null;this.nearbyRamps=null;this._super()},hasNearbyRamps:function(){return this.nearbyRamps!==null},getNearbyRamps:function(){if(this.nearbyRamps===null){return null}return this.isOnRamp?this.nearbyRamps.onRamps:this.nearbyRamps.offRamps},setRamp:function(j,h,i){var k=this.ramp;if(this._super(j,h)){a.call(this,this.ramp);f.call(this,k);if((typeof(i)==="undefined"&&!h)||(e.isBoolean(i)&&!i)){g.call(this)}}},changeToNearbyRamp:function(h,i){this.setRamp(c.call(this,h,i),false,true)}})}());(function(){var e=Chai.Lang,c=Chai.Dom,f=Chai.Event,d=Sigalert.Widget.DynamicMap;Sigalert.namespace("common");function b(g,h){h.hide()}function a(l,h){var n=h.dlg,p=h.route;var o=c.get(".problem-report-description",n.body);if(!Sigalert.FormHelpers.ValidateNotBlank("Description",o)){return}var j=c.get(".problem-report-email",n.body),m=j.value,i=o.value,k="source=map";k+="&d="+encodeURIComponent(i);k+="&ea="+encodeURIComponent(m);if(p.getWaypointCount()>1){var g=p.getWaypoint(0),q=p.getWaypoint(1);k+="&r="+encodeURIComponent(p.getEncodedData(1));k+="&reg="+encodeURIComponent(p.getRegion());k+="&sroad="+encodeURIComponent(g.getRoadId());k+="&sroadname="+encodeURIComponent(g.getRoadName());k+="&sramp="+encodeURIComponent(g.getRampName());k+="&eroad="+encodeURIComponent(q.getRoadId());k+="&eroadname="+encodeURIComponent(q.getRoadName());k+="&eramp="+encodeURIComponent(q.getRampName());k+="&partner="+Sigalert.common.Partner.id;k+="&slat="+encodeURIComponent(g.getLat());k+="&slon="+encodeURIComponent(g.getLon());k+="&elat="+encodeURIComponent(q.getLat());k+="&elon="+encodeURIComponent(q.getLon())}Sigalert.Ajax.send("/Ajax/SubmitRouteReport.asp",{success:function(){n.set("body",Sigalert.common.createSimpleDialogContainer("<b>Feedback Received!</b><p>Thank you for your comments. While we cannot personally respond to every report, rest assured that a human will look into your issue.</p>"))},failure:function(r){n.set("header","Problem Submitting Feedback");c.use(".problem-report-error",n.get("bodyNode")).setStyle("display","block");c.use(".problem-report-error-divider",n.get("bodyNode")).setStyle("display","block");c.use(".problem-report-error-text",n.get("bodyNode")).setHtml(r)},scope:this,post:k,srcFile:"/Common/Widget/DynamicMap/ReportRouteProblem.js",srcFunc:"onSendReportClicked"})}Sigalert.common.ReportRouteProblem={showDialog:function(g){var h=Sigalert.common.showDialog("Report a Problem with the Route",c.fragment("#mapReportRouteProblem").get(),{width:"40em"},{createBody:false});c.use(".cancel-problem-report-button",h.get("bodyNode")).on("click",b,h);c.use(".send-problem-report-button",h.get("bodyNode")).on("click",a,{dlg:h,route:g})}}}());(function(){var m=Chai.Url,f=Chai.Dom,e=Sigalert.common.Location,k=new Date(),i=30,v,b=null,g=false,c=null,h=null,o=null;function t(){var w=$("divViewport"),y=YAHOO.util.Dom.getViewportHeight()-YAHOO.util.Dom.getY(w)-Sigalert.common.element.getVerticalPadding(w)-Sigalert.common.element.getVerticalBorder(w)-Sigalert.common.element.getMarginBottom(w);YAHOO.util.Dom.setStyle(w,"height",y+"px");var x=$("idUnderMapParent");if(x){y-=Sigalert.common.element.getHeight(x)}y-=Sigalert.common.element.getVerticalBorder($("divMap"));return y}function r(x,y,E){var B=Sigalert.common.Location,w=Sigalert.common.ReadCookie("MPP"),C=Sigalert.common.ReadCookie("MFS"),A="none",D=false;switch(C){case"s":C="small";break;case"l":C="large";break;default:C="small";break}switch(w){case"p":w="popup";break;case"f":w="blinds";A="details";break;case"n":w="none";break;default:w="popup";break}var z=Sigalert.common.ReadCookie("lat");if(!z||isNaN(z)){A="help";D=true}B.loadFromHash();b=new Sigalert.Widget.HotspotMap("divMap",{tilepath:x,summaryposition:w,startblind:A,closestartblindonaction:D,enablehotspotpagechange:false,regionselectorsenabled:y,region:B.getRegion(),mapbasename:B.getMapBaseName(),zoom:B.getZoom(),lat:B.getLat(),lon:B.getLon(),fontsize:C,zoomwithwheel:!Sigalert.common.Partner.isValid(),enableclicksupportfortouch:false,height:t()});b.plug(Chai.Widget.MapNavZoomPlugin);b.plug(Chai.Widget.MapPopUpPlugin);if(E){b.plug(Chai.Widget.MapContextMenuPlugin);b.plug(Chai.Widget.MapRoutePlugin);b.plug(Chai.Widget.MapMouseRoutePlugin)}b.onFontSizeChanged.subscribe(u);b.onUserAction.subscribe(j);b.onMapDragFinishedWithMouse.subscribe(l);b.onMapDragFinishedWithTouch.subscribe(l);b.onMapSlideComplete.subscribe(l);b.onMapZoomChanged.subscribe(l)}function u(x){var w="";switch(x.fontsize){case"small":w="s";break;case"large":w="l";break}if(w){Sigalert.common.WriteCookie("MFS",w,1825)}}function l(w){var x=Sigalert.common.Location;if(x.getLat()!==w.lat||x.getLon()!==w.lon||x.getZoom()!==w.zoom){setTimeout(function(){var y=new Sigalert.common.Hash();y.setPair("lat",w.lat);y.setPair("lon",w.lon);y.setPair("z",w.zoom);y.applyHashToLocation()},200);x.setLatLonZoom(w.lat,w.lon,w.zoom);q("Sigalert.com "+x.getAreaDisplayName()+" Traffic Map")}}function j(w){Sigalert.data.Manager[w.map.moConfig.getProperty("region")].refreshData();Sigalert.common.Sponsor.refreshUnits();Sigalert.common.LogPageViewRefresh()}function n(){h.innerHTML=e.getAreaDisplayName()+" Traffic Report"}function d(){b.setHeight(t())}function q(w){o=w;document.title=w}function a(w){}Sigalert.common.PageInitializer.subscribeToPreInit(function(){Sigalert.data.Manager.onRegionLoaded.subscribe(function(w){if(w.src.getRegion()===Sigalert.common.Location.getRegion()){w.src.onDataVersionIsIncompatible.subscribe(function(){var x=make("button");x.innerHTML="Refresh Page";YAHOO.util.Event.on(x,"click",function(y){document.location.reload()});Sigalert.common.showDialog("Site Update","<p>Our site has been updated. Please refresh the page to use the latest version.</p>",{width:"40em",showHideButton:false,escKeyIsEnabled:false},{buttons:[x]})})}})});function p(){g=false;f.removeClass(c,"my-location-button-busy")}function s(){if(!g){g=true;f.addClass(c,"my-location-button-busy");navigator.geolocation.getCurrentPosition(function(B){var z=B.coords.latitude,A=B.coords.longitude,x=Sigalert.RegionData.getRegionFromLatLon(z,A);if(x&&x.region.name===e.getRegion()){p();var w=b.getMapXY(),y=b.latLonToXY(z,A);b.slideMap(w[0]-y[0],w[1]-y[1])}else{Sigalert.Ajax.send("/Ajax/GetRegion.asp?lat="+z+"&lon="+A,{success:function(D){p();if(D.region!==null){var C=new Sigalert.common.QueryString();C.removePair("region");C.setPair("lat",z);C.setPair("lon",A);C.setPair("z",D.defaultZoom);document.location.href=document.location.pathname+C.getQueryString()}else{Sigalert.common.showDialog("Current Location Problem",'<p>Your location is outside of our coverage. You can select a different area <a href="/ChooseMap.asp">here</a>.</p>',{width:"40em"})}},failure:function(){p();Sigalert.common.showDialog("Current Location Error",'<p>We were unable to determine your current location. Please try again later or select an area <a href="/ChooseMap.asp">here</a>.</p>',{width:"40em"})},errorDisplay:Sigalert.Ajax.Config.ErrorDisplay.Console,severity:Sigalert.Ajax.Config.Severity.Medium,srcFile:"/Map.js",srcFunc:"onMyLocationButtonClicked",srcCase:"navigator.geolocation.getCurrentPosition"})}},function(w){p();if(w.code!==1){Sigalert.common.showDialog("Current Location Error",'<p>We were unable to determine your current location. Please try again later or select an area <a href="/ChooseMap.asp">here</a>.</p>',{width:"40em"})}})}}Map={init:function(y,x,w){Sigalert.common.resizeWindow.subscribe(d);h=f.get("#LocalAreaTitle");e.onLocalAreaChanged.subscribe(n);if(navigator.geolocation){c=f.get("#MyLocationButton");f.setStyle(c,"display","block");YAHOO.util.Event.on(c,"click",s)}r(y,x,w);q("Sigalert.com "+Sigalert.common.Location.getAreaDisplayName()+" Traffic Map");Sigalert.common.Sponsor.registerUnit("MedRect","idMedRectUnit",300,250);if(document.attachEvent){}},goTo:function(y,z,x){if(b.getZoom()!==x){b.setLatLonZoom(y,z,x)}else{var w=b.getMapXY(),A=b.latLonToXY(y,z);b.slideMap(w[0]-A[0],w[1]-A[1])}},Map:function(){return b}}})();
