if(!dojo._hasResource["mq.maptabview"]){
dojo._hasResource["mq.maptabview"]=true;
dojo.provide("mq.maptabview");
dojo.declare("mq.MapTabView",mq.TabView,{constructor:function(_1,_2,_3){
try{
debug("MapTabView.constructor");
this.manMapList={};
var _4=dijit.getViewport().w-30-dojo.coords($d("rightrailad"),true).w;
($d("mapWindow")).style.width=_4+"px";
($d("mapWindow")).style.height="540px";
this._locationListId=this._idList["locationList"];
var _5=_1._model.viewType;
if(!_5){
_5=mq.savedandrecent.getDefaultMapType();
}
debug(">> "+this.getDefaultMapLocation()+", "+_5+", "+_1._model.zoomLevel);
var _6=false;
if(serverResults){
if(serverResults.length<2){
if(serverResults[0].resultCode=="SEARCH_RESULTS"){
_6=true;
}
}else{
if(serverResults[1].resultCode=="SEARCH_RESULTS"){
_6=true;
}
}
}
if(!_6){
this.loadMap(_1,_2,_3,_5,_6);
}
dojo.connect(this,"onMapTypeChange",this._controller,"viewTypeChange");
dojo.connect(this,"onPanZoomChange",this._controller,"panZoomChange");
this.tabView=this.tabState.map;
if(_1._model.locations){
var _7=false;
if(_1._model.printerFriendly){
_7=true;
_1._model.printerFriendly=false;
}
var _8=mq.getQueryString(window.location.href,"ua");
if(_8&&_8.toUpperCase()=="TRAFFIC"){
ua.a(":MQ08TrafficOn");
}
if(_2){
ua.a(":pv");
this.handleServerRender();
ua.commit();
}else{
this.updateView(_1._model);
}
if(_7){
_1._model.printerFriendly=true;
}
}else{
if(!_6){
this.initTraffic();
}
}
}
catch(e){
logDebug("maptabview.constructor",e);
}
},loadMap:function(_9,_a,_b,_c){
this.initMap(this.getDefaultMapLocation(),_c,_9._model.zoomLevel,_a);
try{
MQA.EventManager.addListener(this._tileMap,"maptypechanged",dojo.hitch(this,"changeMapType"));
MQA.EventManager.addListener(this._tileMap,"zoomend",dojo.hitch(this,"changeZoom"));
MQA.EventManager.addListener(this._tileMap,"dragend",dojo.hitch(this,"panMap"));
this.comscoreTracker=new mq.ComScore(this._controller,this._tileMap,"mapWindow");
MQA.EventManager.addListener(this._tileMap,"mousedown",dojo.hitch(this.comscoreTracker,"monitor"));
MQA.EventManager.addListener(this._tileMap,"dragend",dojo.hitch(this.comscoreTracker,"monitor"));
}
catch(e){
logDebug("maptabview.loadMap-listeners",e);
}
},imagePath:mqPrefix+"/cdn/images",iconPattern:"stop_{VAR}.png",VARIANCE_LIMIT:0.1,updateView:function(_d){
try{
if(typeof (this._tileMap)=="undefined"||!this._tileMap){
var _e=controller._model.viewType;
if(!_e){
_e=mq.savedandrecent.getDefaultMapType();
}
this.loadMap(controller,false,this._idList,_e);
}
debug("MapTabView.updateView");
mq.hideLoadingImage();
ua.a(":pv");
if(!!(view)){
if(_d.mode){
view.contentModeHandler(_d.mode);
}else{
if(view.getCurrentMode()!="MAPS"){
view.contentModeHandler("MAPS");
}
}
view.resizeLayout();
}
if(!_d.printerFriendly&&mq.isShowing($d("printDisplay"))){
window.backToMap();
}
var _f="";
var _10="";
try{
if(_d.routeResults!=null&&_d.routeResults.resultMessages!=null&&!_d.routeResults.wasAvoidError){
var _11=_d.routeResults.resultMessages;
debug("Route messages found: "+_11.length);
for(var i=0;i<_11.length;i++){
debug("Message "+i+": "+_11[i]);
var tmp=mq.getMessage(_11[i].match(/^[A-Z,_]*/));
(mq.startsWith(_11[i],"WARN"))?_10+=(tmp+"<br/>"):_f+=(tmp+"<br/>");
}
_f=(_f!="")?_f.substring(0,_f.lastIndexOf("<br/>")):_f;
_10=(_10!="")?_10.substring(0,_10.lastIndexOf("<br/>")):_10;
}
}
catch(e){
logDebug("maptabview.updateView-dispRouteErrors",e);
}
if(_f.length<=0){
if(_d.routeResults){
_d.routeResults.wasAvoidError=null;
}
this.updateShowHideRoutingLnk(_d.showRoute);
(_d.viewType!=null)?this._tileMap.setMapType(_d.viewType):this._tileMap.setMapType(mq.savedandrecent.getDefaultMapType());
var _14=_d.locations;
var _15=$d("mapWindow");
if(_14!=null&&_14.length>0){
try{
mq.show($d("itin"));
_15.style.borderTopWidth="1px";
this.updateMap(_d);
if(_14.length==1){
mq.hide($d("routingOptions"));
dojo.removeClass("MAPSborder","routeWin");
mq.hide($d("infoMessage"));
}else{
mq.show($d("dirSummary"));
mq.show($d("routingOptions"));
dojo.addClass("MAPSborder","routeWin");
}
if(!!(view)){
view.resizeLayout();
}
}
catch(e){
logDebug("maptabview.updateView-Locs>Zero",e);
}
}else{
try{
mq.hide($d("itin"));
_15.style.borderTopWidth="0px";
this._tileMap.removeRouteHighlight();
this._tileMap.removeAllPois();
this.setDefaultMap(this.getDefaultMapLocation());
mq.hide($d("dirSummary"));
mq.hide($d("routingOptions"));
mq.hide($d("routingOptions2"));
}
catch(e){
logDebug("maptabview.updateView-Locs<=Zero",e);
}
}
try{
debug("Calling tileMap.saveState");
this._tileMap.saveState();
this.cleanLocationList();
var _16=controller.numLocs();
if(_16>1){
this.drawLocations(_d);
}
if(_16>0){
this.addLocationForm(_16,"loc",this._locationListId);
if(_16==1){
this.addLocationForm(11,"loc","additionalAddForm");
view.showHideAdditionalForm("display");
mq.hide($d("findLoc"));
}else{
if(_16>1){
view.updateFindNBLocList();
}
}
}
this.updateDirSummary();
mq.util.updateBrowserTitle();
this.updateRouteOptions(true);
if(serverResults&&view.mapView){
serverResults=null;
}
if(dirForm&&dirForm.results){
dirForm.results=null;
}
(_10.length>0)?this.showRouteWarningMessage(_10):this.hideRouteWarningMessage();
this.scrollIntoView();
view.scrollToElement=null;
}
catch(e){
logDebug("maptabview.updateView-finishing",e);
}
}else{
this.updateShowHideRoutingLnk(_d.showRoute);
this.showGenericPopup(_f);
}
ua.commit();
debug("Before showPrint");
if(_d.printerFriendly){
window.showPrint();
}
}
catch(e){
logDebug("maptabview.updateView-generic",e);
}
},updateMap:function(_17){
try{
this.addPoisToMap(_17.locations);
if(dojo.isSafari){
this._tileMap.getDeclutter().redrawLeaderLines();
}
debug("MapTabView: removing route highlight");
this._tileMap.removeRouteHighlight();
if(_17.zoomLevel!=null&&_17.zoomLevel){
debug("MapTabView.updateView: restoring map center, zoom level, and best fit");
if(_17.showRoute){
if(!_17.routeResults){
controller.rerunRoute();
}else{
this.addRouteHighlight(_17,true);
}
}
this._tileMap.setCenter(new MQA.LatLng(_17.centerLatitude,_17.centerLongitude),_17.zoomLevel);
}else{
if(_17.showRoute&&_17.routeResults!=null){
debug("MapTabView.updateView: adding route");
this.addRouteHighlight(_17,true);
}else{
if(_17.locations.length==1){
var loc=_17.locations[0].location;
if(loc.geocodeQuality){
debug("MapTabView.updateView: setting zoom based on geocode quality");
var _19=this._tileMap.getZoomLevel();
this._tileMap.setCenter(new MQA.LatLng(loc.latitude,loc.longitude),this.zoomLevels[loc.geocodeQuality]);
if(this._tileMap.getZoomLevel()==_19){
controller.panZoomChange(_19,this._tileMap.getCenter());
}
}else{
debug("Geocoder did not return a geocodeQuality");
this._tileMap.bestFit(false,this.zoomLevels["MIN"],this.zoomLevels["MAX"]);
}
}else{
debug("MapTabView.updateView: calling best fit");
this._tileMap.bestFit(false,this.zoomLevels["MIN"],this.zoomLevels["MAX"]);
}
}
}
}
catch(e){
logDebug("maptabview.updateMap",e);
}
},scrollIntoView:function(){
try{
var _1a=controller._model;
var _1b;
if((typeof (view.scrollToElement)!="undefined")&&view.scrollToElement!=null){
if(view.scrollToElement==0){
window.scrollTo(0,0);
view.scrollToElement=null;
return;
}
_1b=$d(view.scrollToElement);
view.scrollToElement=null;
}
if(_1b){
var _1c=dijit.getViewport();
if(!mq.util.isElementInView(_1b)){
mq.util.scrollElemToView(_1b,_1c.h-200);
}
}
}
catch(e){
logDebug("maptabview.scrollIntoView",e);
}
},addRouteHighlight:function(_1d,_1e){
try{
var ul=_1d.routeResults.upperLeft;
var lr=_1d.routeResults.lowerRight;
var box=new MQA.RectLL(new MQA.LatLng(ul.latitude,ul.longitude),new MQA.LatLng(lr.latitude,lr.longitude));
debug("SessionId: "+_1d.routeResults.sessionId+", "+_1e);
debug("Box: "+box.ul.lat+","+box.ul.lng+": "+box.lr.lat+","+box.lr.lng);
debug("MapSize: "+this._tileMap.getSize());
this._tileMap.addRouteHighlight(box,_1d.routeResults.mapServerUrl,_1d.routeResults.sessionId,_1e);
debug("MapTabView.addRouteHighlight: after highlight added");
}
catch(e){
logDebug("maptabview.addRouteHighlight",e);
}
},showGenericPopup:function(_22){
try{
debug("MapTabView.showGenericPopup: "+_22);
var sb=new dojox.string.Builder();
sb.append("<div class=\"alert-warning\" style=\"width: 220px\">").append("<img src=\""+mqPrefix+"/cdn/images/icon-warn.gif\" height=\"25\" width=\"24\">").append("<div class=\"avoid\">"+_22+"</div></div>");
var _24=new mq.widget.MQPopup({id:"mqErrorPopup",position:"center",popupImage:"sprt-pop-ylw",popupContent:sb.toString(),closeButtonRequired:true});
}
catch(e){
logDebug("maptabview.genericError:"+(_22)?_22:"",e);
}
},cleanLocationList:function(){
try{
debug("MapTabView.cleanLocationList");
for(var i=0;i<11;i++){
if(window["loc"+i+"Form"]){
mq.destroyForm(window["loc"+i+"Form"]);
window["loc"+i+"Form"]=null;
}
}
if(window["loc11Form"]){
mq.destroyForm(window["loc11Form"]);
}
dijit.registry.byClass("mq.widget.LocationListItem").forEach(function(w){
debug("destory widget: "+w.id);
w.destroy();
});
$d(this._locationListId).innerHTML="";
if(this.manMapList){
for(var i in this.manMapList){
var map=this.manMapList[i];
if(!dojo.isSafari){
map.dispose();
}
map=null;
delete this.manMapList[i];
}
}
}
catch(e){
logDebug("maptabview.cleanLocationList",e);
}
},drawLocations:function(_28){
try{
if(_28.locations!=null){
debug("MapTabView.drawLocations: "+_28.locations.length);
var ul=document.createElement("div");
ul.setAttribute("id","locationList");
ul.setAttribute("class","locationList");
$d(this._locationListId).appendChild(ul);
if(_28.showRoute&&_28.routeResults!=null&&_28.locations.length>1){
var div=document.createElement("div");
dojo.addClass(div,"dirTitle");
var _2b=new dojox.string.Builder();
_2b.append("Directions");
_2b.append("<div id=\"avoidRestore\" style=\"display:none;\">");
_2b.append("<div class=\"fltl\"><img src=\""+mqPrefix+"/cdn/images/icons/icon-alert-info.gif\" height=\"15\" width=\"15\"></div>");
_2b.append("<a title=\"Click to restore avoided maneuvers\" id=\"restoreAvoidsLnk\" onclick=\"controller.removeAvoidSegments();\">Click to restore avoided maneuvers</a>");
_2b.append("</div>");
_2b.append("<div class=\"clearb\"></div>");
div.innerHTML=_2b.toString();
$d(this._locationListId).appendChild(div);
}
for(i=0;i<_28.locations.length;i++){
loc=_28.locations[i].location;
this.showLocationListItem(loc,i,_28.locations.length,ul);
this.showNarrative(_28,i);
}
$d(this._locationListId).appendChild(ul);
if(_28.showRoute&&_28.routeResults!=null&&_28.locations.length>1){
debug("Show Total Time and Distance");
var div=document.createElement("div");
dojo.addClass(div,"routeResults");
var _2c=new dojox.string.Builder();
_2c.append("<div class=\"narrTotal\">");
_2c.append("Total Estimated Time: <span class=\"timeSpan\">"+_28.routeResults.time+"</span>");
_2c.append("Total Estimated Distance: <span>"+_28.routeResults.distance+"</span>");
_2c.append("</div>");
div.innerHTML=_2c.toString();
$d(this._locationListId).appendChild(div);
if(_28.routeResults.infoMessage||_28.routeResults.infoTitle){
var msg=new dojox.string.Builder();
msg.append("<div class=\"infoicon\"><img src=\""+mqPrefix+"/cdn/images/icon-info.gif\" height=\"18\" width=\"18\"></div>");
msg.append("<div class=\"infomsg\"><span>"+_28.routeResults.infoTitle+"</span><br/>");
msg.append(_28.routeResults.infoMessage);
msg.append("</div>");
msg.append("<div class=\"clearb\"></div>");
$d("infoMessage").innerHTML=msg.toString();
mq.show($d("infoMessage"));
}else{
$d("infoMessage").innerHTML="";
mq.hide($d("infoMessage"));
}
}
}
}
catch(e){
logDebug("maptabview.drawLocations",e);
}
},reorder:function(){
var _2e=[];
var _2f=$d("locationList").childNodes;
for(i=0;i<_2f.length;i++){
id=_2f[i].id;
index=id[id.length-1];
_2e[i]=$w("listItem"+index).location;
}
this._controller.reorder(_2e);
},showNarrative:function(_30,_31){
try{
debug("MapTabView.showNarrative: "+_31);
if(_30.routeResults==null||!_30.routeResults.treks||_30.routeResults.treks.length==0||(_31>(_30.routeResults.treks.length-1))){
return;
}
var _32=$d("routeNarrative"+_31);
if(_32){
if($d("dirHide"+_31)){
dojo.disconnect($d("dirHide"+_31),"onclick",this,"toggleNarrative");
}
var sb=new dojox.string.Builder();
sb.append("<div class=\"routeNarrative\"><div class=\"narrHeader\"><img class=\"alignm\" title=\"Hide/Show Route\" alt=\"Hide/Show Route\" id=\"dirHide"+_31+"\" src=\""+this.imagePath+"/arw-dir_open.png\">&nbsp;&nbsp;Directions from ");
sb.append(this.alphabet[_31]+" to "+this.alphabet[_31+1]+":</div>");
var _34=_30.routeResults.treks[_31];
if(this.tabView==this.tabState.normal){
sb.append(this.createNarrativeTableNormal(_34,_31,_30.routeResults.variance));
}else{
sb.append(this.createNarrativeTableExpand(_34,_31,_30.routeResults.variance));
}
sb.append("<div class=\"narrTotalEst\">Estimated Time: "+_34.time+"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
sb.append("Estimated Distance: "+_34.distance+"</b></div></div>");
_32.innerHTML=sb.toString();
dojo.connect($d("dirHide"+_31),"onclick",this,"toggleNarrative");
if(this.tabView==this.tabState.text){
for(var i=0;i<_34.maneuvers.length;i++){
var man=_34.maneuvers[i];
if(man.showMap){
this.showManeuverMap(_31,i);
}
}
}
}
debug("Index at end of showNarrative: "+_31);
}
catch(e){
logDebug("maptabview.showNarriative",e);
}
},hasVariance:function(loc){
flag=false;
if(loc.distance!=null&&loc.distance>this.VARIANCE_LIMIT){
flag=true;
}
return flag;
},displayVarianceMessage:function(_38,_39){
var _3a=controller._model.routeOptions.distanceUnit;
var msg=(_39==0)?mq.getMessage("VARIANCE_BEGIN",[mq.util.formatDistance(_38,_3a)]):mq.getMessage("VARIANCE_END",[mq.util.formatDistance(_38,_3a)]);
return msg;
},createNarrativeTableExpand:function(_3c,_3d,_3e){
debug("MapTabView.createNarrativeTableExpand");
var sb=new dojox.string.Builder();
sb.append("<div id=\"narrative"+_3d+"\">");
if(_3e[_3d]>this.VARIANCE_LIMIT){
sb.append("<div class=\"evenRow error\">");
sb.append(this.displayVarianceMessage(_3e[_3d],0));
sb.append("</div>");
}
sb.append("<table width=\"100%\">");
sb.append("<tr>");
sb.append("<td>");
for(k=0;k<_3c.maneuvers.length;k++){
var man=_3c.maneuvers[k];
sb.append("<table class=\"rtRow\" width=\"100%\" id=\"maneuver"+_3d+"-"+k+"\">");
sb.append("<tr>");
sb.append("<td class=\"rtCol1\" valign=\"top\"><img src=\""+man.roadSignUrl+"\"/></td>");
sb.append("<td class=\"rtCol2\" valign=\"top\">"+(k+1)+":&nbsp;</td>");
sb.append("<td class=\"rtCol3\" valign=\"top\">").append(man.narrative.replace(/\//g,"/<span class=\"sm\"> </span>"));
if(man.message!=null&&man.message!=""){
sb.append("<div class=\"red\">(").append(mq.getMessage(man.message)).append(")</div>");
}
sb.append("</td>");
sb.append("<td align=\"right\" valign=\"top\">");
sb.append("<table>");
sb.append("<tr>");
sb.append("<td class=\"rtCol4\">&nbsp;");
if(man.distance!=null){
sb.append(man.distance);
}
sb.append("</td>");
sb.append("<td class=\"rtCol5\">");
sb.append("<ul class=\"bLinks\">");
if(k>0&&k<_3c.maneuvers.length-1){
if(man.message&&man.message=="MSG_UNABLE_TO_AVOID"){
sb.append("<li class=\"lastli\" id=\"manMapLink"+_3d+"-"+k+"\"><a href=\"javascript:view.mapView.showManeuverMap("+_3d+","+k+");\">"+mq.getMessage("MAP")+"</a></li>");
}else{
sb.append("<li id=\"manMapLink"+_3d+"-"+k+"\"><a href=\"javascript:view.mapView.showManeuverMap("+_3d+","+k+");\">"+mq.getMessage("MAP")+"</a></li>");
sb.append("<li class=\"lastli\">&nbsp;<a href=\"javascript:view.mapView.avoidSegmentPopup("+_3d+","+k+");\">"+mq.getMessage("AVOID")+"</a></li>");
}
}else{
sb.append("<li class=\"lastli\" id=\"manMapLink"+_3d+"-"+k+"\"><a href=\"javascript:view.mapView.showManeuverMap("+_3d+","+k+");\">"+mq.getMessage("MAP")+"</a></li>");
}
sb.append("</ul>");
sb.append("</td>");
sb.append("</tr>");
sb.append("</table>");
sb.append("</td>");
sb.append("</tr>");
sb.append("<tr>");
sb.append("<td colspan=\"5\">");
sb.append("<div style=\"width:400px;height:200px;\" class=\"manMapHide\" id=\"manMap"+_3d+"-"+k+"\"></div>");
sb.append("</td>");
sb.append("</tr>");
sb.append("</table>");
}
sb.append("</td>");
sb.append("</tr>");
sb.append("</table>");
if(_3e[_3d+1]>this.VARIANCE_LIMIT){
sb.append("<div class=\"evenRow error\">");
sb.append(this.displayVarianceMessage(_3e[_3d+1],1));
sb.append("</div>");
}
sb.append("</div>");
return sb.toString();
},toggleNarrative:function(evt){
debug("toggleNarrative: "+evt.currentTarget.id);
id=evt.currentTarget.id.substring(7);
if($d("narrative"+id).style.display=="none"){
ua.a(":MQ08MaxRouteMan");
$d("narrative"+id).style.display="block";
document.getElementById("dirHide"+id).src=this.imagePath+"/arw-dir_open.png";
}else{
ua.a(":MQ08MinRouteMan");
$d("narrative"+id).style.display="none";
document.getElementById("dirHide"+id).src=this.imagePath+"/arw-dir_clsd.png";
}
},chooseAmbigLocation:function(_42){
debug("MapTabView.chooseAmbigLocation: "+_42);
var _43=$w("ambigWin");
var loc=_43.resultList[_42];
debug("loc-addressInput: "+loc.addressInput);
if(loc.query!=null&&loc.query!=""){
this._controller._model.searchLocation=loc;
this._controller.search(loc,_43.position);
}else{
this._controller.addLocation(loc,_43.position);
}
_43.close();
},removeLocation:function(_45){
debug("MapTabView.removeLocation: "+_45);
var _46=new dojox.string.Builder();
_46.append("<div class=\"alert-warning\">");
_46.append("<img src=\""+mqPrefix+"/cdn/images/icon-warn.gif\" height=\"25\" width=\"24\">");
_46.append("<span>"+mq.getMessage("MSG_CLEAR_LOCATION")+"</span><br/><br/>");
_46.append("<div class=\"textc\">");
_46.append("<input type=\"button\" value=\"OK\" onclick=\"Javascript:view.mapView.confirmRemoveLocation("+_45+");\" class=\"btn\" id=\"locationClearOk\"/>&nbsp;&nbsp;&nbsp;");
_46.append("<input type=\"button\" value=\"Cancel\" onclick=\"Javascript:$w('removeLocation').handleCancel();\" class=\"btn\" id=\"locationClearCancel\"/>");
_46.append("</div>");
_46.append("</div>");
_46=_46.toString();
var _47=new mq.widget.MQPopup({id:"removeLocation",position:"center",popupContent:_46});
},confirmRemoveLocation:function(_48){
$w("removeLocation").handleAccept();
this.cleanLocationList();
mq.showLoadingImage();
controller.removeLocation(_48);
},acceptHandler:function(evt){
var _4a=this._controller._model.routeOptions;
if(_4a==null){
_4a={routeType:"FASTEST"};
}
($d("aoh")&&$d("aoh").checked)?_4a.avoidHighways=true:_4a.avoidHighways=false;
($d("aot")&&$d("aot").checked)?_4a.avoidTollRoads=true:_4a.avoidTollRoads=false;
($d("aos")&&$d("aos").checked)?_4a.avoidSeasonal=true:_4a.avoidSeasonal=false;
($d("fastest").checked)?_4a.routeType="FASTEST":_4a.routeType="SHORTEST";
if($d("rev")&&($d("rev").value=="true")){
_4a.reverseRoute=true;
$d("rev").value=false;
}else{
_4a.reverseRoute=false;
}
view.scrollToElement=0;
this.setAdvancedRoutingOptions();
},reverseRoute:function(evt){
$d("rev").value=true;
this.acceptHandler();
},editLocation:function(_4c){
debug("MapTabView.editLocation: "+_4c);
ua.a(":MQ08Edit");
var _4d=$d("location"+_4c);
mq.hide($d("locDiv"+_4c));
var _4e="loc"+_4c;
window[_4e+"Form"]=new mq.editlocationform({template:"editLocation",jsId:_4e+"Form",prefix:_4e,formType:"edit",mode:"ajax",tmpStartLocation:$w("listItem"+_4c).location,parentElem:$d("locEditDiv"+_4c),searchBoxStartId:_4e+"0-query",locationBoxStartId:_4e+"0-addressInput",locNum:_4c});
},showLocationListItem:function(loc,_50,_51,_52){
debug("MapTabView.showLocationList: "+_50);
loc.addressInput=mq.formatLocationSingleLine(loc);
var w=new mq.widget.LocationListItem({id:"listItem"+_50,position:_50,listSize:_51,location:loc});
dojo.connect(w,"onRemove",this,"removeLocation");
dojo.connect(w,"onMoveUp",this._controller,"moveUp");
dojo.connect(w,"onMoveDown",this._controller,"moveDown");
dojo.connect(w,"onEdit",this,"editLocation");
dojo.connect(w,"onZoomToStreet",this,"zoomToStreet");
_52.appendChild(w.domNode);
},chooseSavedRecent:function(_54,_55){
var _56=$w("savedRecent"+_54);
_56.close();
var _57=dojo.cookie.getCookie("locationhistory");
var _58=mq.util.parseLocations(_57);
var loc=_58[_55].location;
this._controller.addLocation(loc,_54);
},showManeuverMap:function(_5a,_5b){
debug("Showing maneuver map: "+_5a+","+_5b);
ua.a(":MQ08ManMap");
var _5c=$d("manMap"+_5a+"-"+_5b);
routeResults=this._controller._model.routeResults;
var man=routeResults.treks[_5a].maneuvers[_5b];
var l1=man.shapePoints[0];
man.showMap=true;
var _5f=-3;
var _60=-27;
var _61=new MQA.PoiCollection();
var _62=new MQA.MapIcon();
_62.setImage(this.imagePath+"/icons/mapPin-purple-"+(_5b+1)+".png",26,27,true,false);
_62.setAnchorOffset(new MQA.Point(_5f,_60));
var pt1=new MQA.Poi(new MQA.LatLng(l1.latitude,l1.longitude));
pt1.setIcon(_62);
pt1.setKey("pois-"+(_5b+1));
_61.add(pt1);
if(_5b<routeResults.treks[_5a].maneuvers.length-1){
var l2=man.shapePoints[1];
var _65=new MQA.MapIcon();
_65.setImage(this.imagePath+"/icons/mapPin-purple-"+(_5b+2)+".png",26,27,true,false);
_65.setAnchorOffset(new MQA.Point(_5f,_60));
var pt2=new MQA.Poi(new MQA.LatLng(l2.latitude,l2.longitude));
pt2.setIcon(_65);
pt2.setKey("pois-"+(_5b+2));
_61.add(pt2);
}
var _67=new MQA.MapInit();
_67.setBestFitRect(_61.getBoundingRect());
var _68=new MQA.TileMap(_5c,null,new MQA.LatLng(l1.latitude,l1.longitude),"map",_67);
var _69=new MQA.ZoomControl(_68);
_68.addControl(_69,new MQA.MapCornerPlacement(MQA.MapCorner.TOP_LEFT,new MQA.Size(10,15)));
_68.replacePois(_61);
for(var i=0;i<controller._model.locations.length;i++){
var _6b=new MQA.MapIcon();
_6b.setImage(this.imagePath+"/icons/stop_"+i+".png",27,27,true,false);
var l=controller._model.locations[i].location;
var pt=new MQA.Poi(new MQA.LatLng(l.latitude,l.longitude));
pt.setKey("stops-"+unescape("%"+(i+65).toString(16)));
pt.setIcon(_6b);
_68.addPoi(pt);
}
MQA.EventManager.addListener(_68,"dragend",dojo.hitch(this,"dragManeuverMap"));
var ul=controller._model.routeResults.upperLeft;
var lr=controller._model.routeResults.lowerRight;
var _70=new MQA.RectLL(new MQA.LatLng(ul.latitude,ul.longitude),new MQA.LatLng(lr.latitude,lr.longitude));
debug("Maneuver map session id: "+routeResults.sessionId);
_68.addRouteHighlight(_70,routeResults.mapServerUrl,this._controller._model.routeResults.sessionId,false);
this.manMapList["manMap"+_5a+"-"+_5b]=_68;
dojo.removeClass(_5c,"manMapHide");
dojo.addClass(_5c,"manMapShow");
var _71=$d("manMapLink"+_5a+"-"+_5b);
_71.innerHTML="<a href=\"javascript:view.mapView.hideManeuverMap("+_5a+","+_5b+");\">"+mq.getMessage("HIDE")+"</a>";
},handleEmailClick:function(){
ua.a(":MQ08Email");
this.showEmailPopup();
},showEmailPopup:function(){
debug("maptabview.js showEmailPopup Start....");
var _72=$w("mqEmail");
var my=this;
view.saveTinyURL(function(_74,_75){
debug("maptabview.js showEmailPopup saveTinyURL function.  Start...");
var _76=new mq.widget.SendEmail({id:"mqEmail"});
dojo.connect(_76,"acceptCallback",null,function(){
debug("maptabview.js showEmailPopup saveTinyURL Dojo connect");
my.submitEmail((view.useParameterUrl())?view.getLttpParameterUrl():view.getTinyUrl(_74));
});
var _77=new mq.widget.MQPopup({id:"mqEmailPopup",position:"center",popupWidget:_76,onClose:dojo.hitch(_76,"destroy")});
dojo.connect(_76,"handleCancel",_77,"handleCancel");
});
},submitEmail:function(_78){
var _79={};
_79.to=($d("sendEmailTo").value.replace(/,/g," ")).split(" ");
debug(_79.to);
_79.from=$d("sendEmailFrom").value;
_79.subject=$d("sendEmailSubject").value;
_79.body=$d("sendEmailComments").value;
var _7a=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var _7b=true;
for(var i=0;i<_79.to.length;i++){
if(_79.to[i].length>0&&!_7a.test(_79.to[i])){
_7b=false;
break;
}
}
if(!_7b||!(_79.from!=null&&_7a.test(_79.from))){
$d("mqpopup-errmsg").style.display="block";
}else{
var _7d=dojo.hitch(this,"handleEmailSubmit");
var _7e={};
if(serverResults){
_7e=serverResults;
}
var _7f;
if(controller._model.routeResults){
_7f={};
for(prop in controller._model){
if(prop!="routeResults"&&prop){
_7f[prop]=controller._model[prop];
}else{
_7f["routeResults"]=this.sendEmailGetMinRouteResults();
}
}
}else{
_7f=this._controller._model;
}
UIService.sendEmail(_7f,null,_79,_78,_7f.mode,_7d);
}
},sendEmailGetMinRouteResults:function(){
var _80=controller._model.routeResults;
var _81={};
for(prop in _80){
if(prop!="treks"){
_81[prop]=_80[prop];
}else{
_81["treks"]=this.sendEmailGetMinTreks(_80["treks"]);
}
}
return _81;
},sendEmailGetMinTreks:function(_82){
var _82=controller._model.routeResults.treks;
var _83=new Array();
if(_82&&_82.length>0){
var _84;
for(var i=0;i<_82.length;i++){
_84=_82[i];
var _86={};
for(prop in _84){
if(prop!="maneuvers"){
_86[prop]=_84[prop];
}else{
_86["maneuvers"]=this.sendEmailGetMinManeuvers(_84.maneuvers);
}
}
_83[i]=_86;
}
}
return _83;
},sendEmailGetMinManeuvers:function(_87){
var _88=new Array();
if(_87&&_87.length>0){
var _87;
for(var i=0;i<_87.length;i++){
maneuver=_87[i];
var _8a={};
for(prop in maneuver){
if(prop=="narrative"||prop=="distance"){
_8a[prop]=maneuver[prop];
}
}
_88[i]=_8a;
}
}
return _88;
},handleEmailSubmit:function(_8b){
ua.a(":MQ08EmailSend");
$w("mqEmailPopup").changeContent($d("mqEmailConfirmation").innerHTML);
dojo.connect($d("mqEmailCloseButton"),"onclick",$w("mqEmail").handleCancel);
dojo.connect($d("mqEmailXIcon"),"onclick",$w("mqEmail").handleCancel);
},handleSTOClick:function(){
ua.a(":MQ08S2O");
},handleSTGClick:function(){
ua.a(":MQ08S2G");
mq.showLoadingImage();
$d("gps").innerHTML="<iframe name=\"iframe_gps\" id=\"iframe_gps\" src=\"/controller/mainui/gps?popup\" style=\"width:0;height:0;visibility:hidden;\"></iframe>";
},updateSTGConnects:function(){
dojo.connect($d("gpsNotDetectedClose"),"onclick",$w("mqSTGPopup"),"handleCancel");
dojo.connect($d("gpsNoPluginClose"),"onclick",$w("mqSTGPopup"),"handleCancel");
dojo.connect($d("STGSendButton"),"onclick",$w("mqSTG"),"handleSend");
dojo.connect($d("STGCancelButton"),"onclick",$w("mqSTGPopup"),"handleCancel");
dojo.connect($d("gpsNotDetectedRetry"),"onclick",$w("mqSTG"),"requestReload");
dojo.connect($d("routeCheck"),"onclick",$w("mqSTG"),"handleNameToggle");
dojo.connect($d("waypointCheck"),"onclick",$w("mqSTG"),"handleNameToggle");
dojo.connect($d("gpsInfoImage"),"onclick",$w("mqSTG"),"showMoreInfoPopup");
},showSTG:function(_8c,loc){
if(_8c.result&&_8c.result.loadError){
var _8e=dojo.hitch(this,"processShowSTG",_8c,loc);
UIService.generatePromo("stg-NoPlugin-promo",_8e);
}else{
if(_8c.gpsController.getDevicesCount()==0){
var _8e=dojo.hitch(this,"processShowSTG",_8c,loc);
UIService.generatePromo("stg-NoDevice-promo",_8e);
}else{
this.processShowSTG(_8c,loc);
}
}
},processShowSTG:function(_8f,loc,_91){
mq.hideLoadingImage();
if(!_91){
_91="";
}
var _92=new mq.widget.SendToGPS({id:"mqSTG",location:loc,gps:_8f,PromoResult:_91});
var _93=new mq.widget.MQPopup({id:"mqSTGPopup",popupWidget:_92,position:"center",closeButtonRequired:true,onClose:dojo.hitch(_92,"handleCancel")});
this.updateSTGConnects();
},reloadSTGCallback:function(_94){
if($w("mqSTG")){
$w("mqSTG").reload();
}
if($w("mqSTGPopup")){
$w("mqSTGPopup").changeContent($d("mqSTGPopupContent").innerHTML);
}
this.updateSTGConnects();
},completeSTG:function(_95){
var stg=$w("mqSTG");
if(!stg){
return;
}
if(_95.msg){
stg.showError(_95.msg);
return;
}
stg.deviceWriteResults.push(_95);
if(stg.deviceWriteResults.length==stg.selectedDevices.length){
var _97=false;
for(i=0;i<stg.deviceWriteResults.length;i++){
if(!stg.deviceWriteResults[i].success){
_97=true;
}
}
if(!_97){
var _98=new dojox.string.Builder();
if(controller._model.locations.length==1||stg.gps.waypointsOnly){
ua.a(":MQ08S2GSuccessWP");
_98.append("You have successfully sent the waypoints to the following devices(s)");
}else{
ua.a(":MQ08S2GSuccessRte");
_98.append("You have successfully sent the route to the following devices(s)");
}
_98.append("<br/><br/><ul>");
for(i=0;i<stg.selectedDevices.length;i++){
_98.append("<li>").append("<span class='b'>").append(stg.selectedDevices[i].displayName).append("</span></li>");
}
_98.append("<ul>");
$d("gpsSuccessMessage").innerHTML=_98;
$w("mqSTGPopup").changeContent($d("mqSTGConfirmationSuccess").innerHTML);
}else{
var _98=new dojox.string.Builder();
for(i=0;i<stg.deviceWriteResults.length;i++){
_98.append(stg.deviceWriteResults[i].msg).append("<br/>");
}
$d("stgError").innerHTML=_98+"<br/>";
}
dojo.connect($d("closeButton"),"onclick",$w("mqSTGPopup"),"handleCancel");
}else{
if(stg.deviceWriteResults.length<stg.selectedDevices.length){
stg.prepareAndWrite(stg.selectedDevices[stg.deviceWriteResults.length]);
}else{
}
}
},hideManeuverMap:function(_99,_9a){
ua.a(":MQ08ManMapHide");
var _9b=$d("manMap"+_99+"-"+_9a);
_9b.innerHTML="";
dojo.removeClass(_9b,"manMapShow");
dojo.addClass(_9b,"manMapHide");
var _9c=$d("manMapLink"+_99+"-"+_9a);
_9c.innerHTML="<a href=\"javascript:view.mapView.showManeuverMap("+_99+","+_9a+");\">"+mq.getMessage("MAP")+"</a>";
var man=routeResults.treks[_99].maneuvers[_9a];
man.showMap=false;
var _9e="manMap"+_99+"-"+_9a;
var map=this.manMapList[_9e];
map.dispose();
map=null;
delete this.manMapList[_9e];
},avoidSegmentPopup:function(_a0,_a1){
var _a2=new dojox.string.Builder();
_a2.append("<div class=\"alert-warning\">");
_a2.append(" <img src=\""+mqPrefix+"/cdn/images/icon-warn.gif\" height=\"25\" width=\"24\">");
_a2.append(" <span>"+mq.getMessage("MSG_AVOID_AND_RECALC")+"</span><br/><br/>");
_a2.append(" <div class=\"textc\">");
_a2.append("  <input type=\"button\" value=\"OK\" onclick=\"Javascript:view.mapView.avoidSegment("+_a0+","+_a1+");\" class=\"btn\" id=\"routeClearOk\"/>&nbsp;&nbsp;&nbsp;");
_a2.append("  <input type=\"button\" value=\"Cancel\" onclick=\"Javascript:$w('confirmAvoidAndRecalculate').handleCancel();\" class=\"btn\" id=\"routeClearCancel\"/>");
_a2.append(" </div>");
_a2.append("</div>");
_a2=_a2.toString();
var _a3=new mq.widget.MQPopup({id:"confirmAvoidAndRecalculate",position:"center",popupContent:_a2});
},avoidSegment:function(_a4,_a5){
$w("confirmAvoidAndRecalculate").close();
debug("MapTabView.avoidSegment");
ua.a(":MQ08AvoidMan");
this._controller.avoidRouteSegment(_a4,_a5);
},setAdvancedRoutingOptions:function(){
debug("MapTabView.setAdvancedRoutingOptions");
if(this._controller._model.routeOptions.reverseRoute==false){
ua.a(":MQ08RouteOptionsGo");
}else{
ua.a(":MQ08ReverseRoute");
}
mq.showLoadingImage();
this._controller.rerunRoute();
},showRouteWarningMessage:function(_a6){
var _a7=$d("routeWarningMsg");
var _a8=new dojox.string.Builder();
var _a9=_a6.split("<br/>");
_a8.append("<div class='alert-warning' style='width:auto;height:auto;'>");
_a8.append("<img width='24' height='25' src='"+this.imagePath+"/icon-warn.gif' />");
if(_a9.length==1){
_a8.append("<div style='padding-top:4px;color:#990000;font-weight:bold;float:left;'>"+_a6+"</div>");
}else{
_a8.append("<div style='padding-top:4px;color:#990000;font-weight:bold;float:left;'>Some Road Types cannot be avoided in order to build your route.</div>");
_a8.append("<div class='red clearb' style='text-align:left;padding-top:0px;'><ul class='list clearb' style='list-style-position:inside;padding:0px 0px 0px 30px'>");
for(var i=0;i<_a9.length;i++){
_a8.append("<li style='maring-left:0px;'>"+_a9[i]+"</li>");
}
_a8.append("</ul></div>");
}
_a8.append("</div>");
var _ab=mq.getPopupContentWidthHeight(_a8);
_a7.innerHTML=_a8.toString();
_a7.style.display="block";
},hideRouteWarningMessage:function(){
$d("routeWarningMsg").style.display="none";
},updateShowHideRoutingLnk:function(_ac){
var _ad=$d("routeShowHideLnk");
if(_ac){
_ad.innerHTML="<div>"+mq.getMessage("HIDE_ROUTING")+"</div>";
_ad.title=mq.getMessage("HIDE_ROUTING");
}else{
_ad.innerHTML="<div>"+mq.getMessage("SHOW_ROUTING")+"</div>";
_ad.title=mq.getMessage("SHOW_ROUTING");
}
},isShowRoute:function(){
var _ae=$d("routeShowHideLnk");
var _af=false;
if(_ae.title==mq.getMessage("HIDE_ROUTING")){
_af=true;
}
return _af;
},toggleRoute:function(){
mq.showLoadingImage();
this._controller.toggleRoute();
},openInfoWindow:function(evt){
mq.util.storeFrontInfoBubble($d("infoPhotoItin"));
ua.a(":MQ08BUBLocDetails");
},dragManeuverMap:function(evt){
ua.a(":MQ08ManMapDrag");
},updateDirSummary:function(){
var _b2=this._controller._model;
var _b3=_b2.locations;
if(_b3&&_b3.length==1){
var _b4=$d("dirStartAddrSummary");
$d("dirStartAddrSummary").innerHTML=(_b2.name&&_b2.name!="null")?"<div class='addrLine'>"+_b2.name+"</div>":mq.util.formatLocationSummary(_b3[0].location);
dojo.query(".narrTopTotal",$d("dirSummary")).style("display","block");
mq.show($d("dirSummary"));
mq.hide($d("dirEndBlock"));
mq.hide($d("dirTimeSumm"));
mq.hide($d("dirDistSumm"));
mq.show($d("mapA"));
mq.show($d("locSumDirUl0"));
$d("locSumRevise0").style.display="";
dojo.removeClass("locSumSearchNearby0","singleli");
dojo.addClass("locSumSearchNearby0","lastli");
this.showHideContentTabBar2("hide");
mq.hide($d("dirStart"));
}else{
if(_b3&&_b3.length>=2){
$d("dirStartAddrSummary").innerHTML=mq.util.formatLocationSummary(_b3[0].location);
mq.show($d("dirEndBlock"));
$d("dirEndAddrSummaryAddress").innerHTML=mq.util.formatLocationSummary(_b3[_b3.length-1].location);
if(_b2.routeResults){
mq.show($d("dirTimeSumm"));
mq.show($d("dirDistSumm"));
mq.hide($d("mapA"));
this.showHideContentTabBar2("show");
if($d("send2")){
$d("send2").onclick=function(){
ua.a(":MQ08Send");
};
}
mq.show($d("dirStart"));
mq.hide($d("locSumDirUl0"));
mq.hide($d("locSumRevise0"));
dojo.removeClass("locSumSearchNearby0","lastli");
dojo.addClass("locSumSearchNearby0","singleli");
$d("dirTimeSummary").innerHTML=_b2.routeResults.time;
$d("dirDistanceSummary").innerHTML=_b2.routeResults.distance;
}
dojo.query(".narrTotalTop",$d("dirSummary")).style("display","block");
}else{
mq.hide($d("dirSummary"));
dojo.query(".narrTotalTop",$d("dirSummary")).style("display","block");
}
}
},showHideContentTabBar2:function(_b5){
if(_b5&&_b5=="show"){
mq.show($d("contentTabBar2"));
}else{
mq.hide($d("contentTabBar2"));
}
},popularSearch:function(_b6,_b7,pos){
debug("MapView.popularSearch");
var loc=controller._model.locations[_b7].location;
mq.executeSearchNearby(loc,_b6,pos);
},addNextLocFromBtn:function(){
var _ba=controller.numLocs();
if(_ba>9){
var _bb=new dojox.string.Builder();
_bb.append("<div class=\"alert-warning\" style=\"display: block;width: 220px;\">");
_bb.append("<img src=\""+mqPrefix+"/cdn/images/icon-warn.gif\" height=\"25\" width=\"24\">");
_bb.append(mq.getMessage("ERROR_MAX_STOPS")+"<br/><br/>");
_bb.append("</div>");
_bb=_bb.toString();
mq.handleFormErrorPopups(null,_bb);
mq.hideLoadingImage();
ua.a(":MQ08MaxStops");
return;
}
if($d("loc"+_ba+"addNextLocationIcon").src.indexOf("icon-plus")>0){
window["loc"+_ba+"Form"].toggleAdd();
}
var _bc=$d("loc"+_ba+"0-addressInput");
if(_bc){
mq.util.scrollElemToView($d("lcAddNextDir"),"center");
_bc.focus();
dojox.fx.highlight({node:$d("lcAddNextDir"),duration:2000}).play();
ua.a(":MQ08LOCAddNext");
}
},findNearby:function(){
var _bd=$d("findSrchTerm");
var _be=$d("findCat");
var _bf="";
if(_be.value!=""){
_bf=_be.value;
}else{
if(_bd&&dojo.trim(_bd.value)!=""){
_bf=dojo.trim(_bd.value);
}
}
if(_bf){
var _c0=controller.numLocs();
if(_c0>0){
var loc,_c2;
if(_c0==1){
loc=controller._model.locations[0].location;
loc.query=null;
}else{
var _c3=$d("findLoc").value;
loc=controller._model.locations[_c3].location;
loc.query=null;
}
ua.a(":MQ08SearchNearbyBar");
mq.executeSearchNearby(loc,_bf,_c0);
}
}else{
var _c4=[];
_c4.push("<div class=\"alert-warning\">");
_c4.push("<img width=\"24\" height=\"25\" src=\""+this.imagePath+"/icon-warn.gif\" />");
_c4.push("<span class=\"redavoid\">Please enter search term or select category.</span></div>");
var _c5=$d("findSrchTerm");
var _c6=dojo.coords(_c5,true);
new mq.widget.MQPopup({id:"findNearByWarn",popupContent:_c4.join(""),xoffset:(_c6.x+_c5.offsetWidth-135),yoffset:_c6.y+30,closeButtonRequired:true,popupArrowPlacement:1,popupImage:"sprt-pop-ylw"});
}
},zoomToStreetHandler:function(_c7){
var loc=controller._model.locations[_c7].location;
this.zoomToStreet(loc);
},handleServerRender:function(){
debug("Connecting events for server render");
dojo.query(".narrHeader img","locationWindow").connect("onclick",this,"toggleNarrative");
var me=this;
dijit.registry.byClass("mq.widget.LocationListItem").forEach(function(w){
debug("Connections for: "+w.position);
var loc=w.location;
var pos=w.position;
dojo.connect($d("listItemZTS"+pos),"onclick",me,dojo.hitch(me,"zoomToStreet",loc));
dojo.connect($d("listItemSTC"+pos),"onclick",w,"sendToCellHandler");
if(enableSTO){
dojo.connect($d("listItemSTO"+pos),"onclick",w,"sendToOnstarHandler");
}
dojo.connect($d("listItemSearchNearby"+pos),"onclick",w,"searchNearbyHandler");
dojo.connect($d("listItemEdit"+pos),"onclick",me,dojo.hitch(me,"editLocation",pos));
dojo.connect($d("listItemRemove"+pos),"onclick",me,dojo.hitch(w,"removeHandler",pos));
dojo.connect(w,"onRemove",me,"removeLocation");
dojo.connect(w,"onMoveUp",me._controller,"moveUp");
dojo.connect(w,"onMoveDown",me._controller,"moveDown");
});
var _cd=controller.numLocs();
if(_cd>0){
this.addLocationForm(_cd,"loc",this._locationListId);
if(_cd==1){
this.addLocationForm(11,"loc","additionalAddForm");
view.showHideAdditionalForm("display");
mq.hide($d("findLoc"));
this.showHideContentTabBar2("hide");
}else{
if(_cd>1){
view.updateFindNBLocList();
this.showHideContentTabBar2("show");
this.updateRouteOptions(false);
}
}
}
this.initTraffic();
ua.commit();
},initTraffic:function(){
mq.traffic.enable(this._tileMap,model.trafficEnabled);
if(window.IsTrafficEnabled=="true"){
debug("init traffic");
if(window["trafficPopupContent"]&&!$w("mqErrorPopup")){
window.initTrafficPopup("mapTrafficHelp");
}
}
},updateRouteOptions:function(_ce){
try{
if(_ce){
var ro=controller._model.routeOptions;
$d("aoh").checked=ro&&ro.avoidHighways;
$d("aot").checked=ro&&ro.avoidTollRoads;
$d("aos").checked=ro&&ro.avoidSeasonal;
$d("aoh").disabled=(controller.isLongRoute())?true:false;
try{
$d(ro.routeType.toLowerCase()).checked=true;
}
catch(e){
$d("fastest").checked=true;
}
if(ro&&(ro.avoidHighways||ro.avoidTollRoads||ro.avoidSeasonal)){
controller.saveState();
}
}
if(controller.isLongRoute()){
$d("aoh").disabled=true;
dojo.addClass($d("aoh").parentNode,"grey");
}else{
$d("aoh").disabled=false;
dojo.removeClass($d("aoh").parentNode,"grey");
}
}
catch(e){
logDebug("maptabview.constructor",e);
}
}});
}

mq._loader._layerLoaded('mq.maptabview');
