function MarkerManager(aa,ba){var me=this;me.map_=aa;me.mapZoom_=aa.getZoom();me.projection_=aa.getCurrentMapType().getProjection();ba=ba||{};me.tileSize_=MarkerManager.DEFAULT_TILE_SIZE_;var ca=MarkerManager.DEFAULT_MAX_ZOOM_;if(ba.maxZoom!=undefined){ca=ba.maxZoom;}
me.maxZoom_=ca;me.trackMarkers_=ba.trackMarkers;var da;if(typeof ba.borderPadding=="number"){da=ba.borderPadding;}
else{da=MarkerManager.DEFAULT_BORDER_PADDING_;}
me.swPadding_=new GSize(-da,da);me.nePadding_=new GSize(da,-da);me.borderPadding_=da;me.gridWidth_=[];me.grid_=[];me.grid_[ca]=[];me.numMarkers_=[];me.numMarkers_[ca]=0;GEvent.bind(aa,"moveend",me,me.onMapMoveEnd_);me.removeOverlay_=function(ea){aa.removeOverlay(ea);me.shownMarkers_--;};me.addOverlay_=function(fa){aa.addOverlay(fa);me.shownMarkers_++;};me.resetManager_();me.shownMarkers_=0;me.shownBounds_=me.getMapGridBounds_();};MarkerManager.DEFAULT_TILE_SIZE_=1024;MarkerManager.DEFAULT_MAX_ZOOM_=17;MarkerManager.DEFAULT_BORDER_PADDING_=100;MarkerManager.MERCATOR_ZOOM_LEVEL_ZERO_RANGE=256;MarkerManager.prototype.resetManager_=function(){var me=this;var ga=MarkerManager.MERCATOR_ZOOM_LEVEL_ZERO_RANGE;for(var ha=0;ha<=me.maxZoom_;++ha){me.grid_[ha]=[];me.numMarkers_[ha]=0;me.gridWidth_[ha]=Math.ceil(ga/me.tileSize_);ga<<=1;}};MarkerManager.prototype.clearMarkers=function(){var me=this;me.processAll_(me.shownBounds_,me.removeOverlay_);me.resetManager_();};MarkerManager.prototype.getTilePoint_=function(ia,ja,ka){var la=this.projection_.fromLatLngToPixel(ia,ja);return new GPoint(Math.floor((la.x+ka.width)/this.tileSize_),Math.floor((la.y+ka.height)/this.tileSize_));};MarkerManager.prototype.addMarkerBatch_=function(ma,na,oa){var pa=ma.getPoint();if(this.trackMarkers_){GEvent.bind(ma,"changed",this,this.onMarkerMoved_);}
var qa=this.getTilePoint_(pa,oa,GSize.ZERO);for(var ra=oa;ra>=na;ra--){var sa=this.getGridCellCreate_(qa.x,qa.y,ra);sa.push(ma);qa.x=qa.x>>1;qa.y=qa.y>>1;}};MarkerManager.prototype.isGridPointVisible_=function(ta){var me=this;var ua=me.shownBounds_.minY<=ta.y&&ta.y<=me.shownBounds_.maxY;var va=me.shownBounds_.minX;var wa=va<=ta.x&&ta.x<=me.shownBounds_.maxX;if(!wa&&va<0){var xa=me.gridWidth_[me.shownBounds_.z];wa=va+xa<=ta.x&&ta.x<=xa-1;}
return ua&&wa;}
MarkerManager.prototype.onMarkerMoved_=function(ya,za,Aa){var me=this;var Ba=me.maxZoom_;var Ca=false;var Da=me.getTilePoint_(za,Ba,GSize.ZERO);var Ea=me.getTilePoint_(Aa,Ba,GSize.ZERO);while(Ba>=0&&(Da.x!=Ea.x||Da.y!=Ea.y)){var Fa=me.getGridCellNoCreate_(Da.x,Da.y,Ba);if(Fa){if(me.removeFromArray(Fa,ya)){me.getGridCellCreate_(Ea.x,Ea.y,Ba).push(ya);}}
if(Ba==me.mapZoom_){if(me.isGridPointVisible_(Da)){if(!me.isGridPointVisible_(Ea)){me.removeOverlay_(ya);Ca=true;}}
else{if(me.isGridPointVisible_(Ea)){me.addOverlay_(ya);Ca=true;}}}
Da.x=Da.x>>1;Da.y=Da.y>>1;Ea.x=Ea.x>>1;Ea.y=Ea.y>>1;--Ba;}
if(Ca){me.notifyListeners_();}};MarkerManager.prototype.removeMarker=function(Ga){var me=this;var Ha=me.maxZoom_;var Ia=false;var Ja=Ga.getPoint();var Ka=me.getTilePoint_(Ja,Ha,GSize.ZERO);while(Ha>=0){var La=me.getGridCellNoCreate_(Ka.x,Ka.y,Ha);if(La){me.removeFromArray(La,Ga);}
if(Ha==me.mapZoom_){if(me.isGridPointVisible_(Ka)){me.removeOverlay_(Ga);Ia=true;}}
Ka.x=Ka.x>>1;Ka.y=Ka.y>>1;--Ha;}
if(Ia){me.notifyListeners_();}};MarkerManager.prototype.addMarkers=function(Ma,Na,Oa){var Pa=this.getOptMaxZoom_(Oa);for(var i=Ma.length-1;i>=0;i--){this.addMarkerBatch_(Ma[i],Na,Pa);}
this.numMarkers_[Na]+=Ma.length;};MarkerManager.prototype.getOptMaxZoom_=function(Qa){return Qa!=undefined?Qa:this.maxZoom_;}
MarkerManager.prototype.getMarkerCount=function(Ra){var Sa=0;for(var z=0;z<=Ra;z++){Sa+=this.numMarkers_[z];}
return Sa;};MarkerManager.prototype.addMarker=function(Ta,Ua,Va){var me=this;var Wa=this.getOptMaxZoom_(Va);me.addMarkerBatch_(Ta,Ua,Wa);var Xa=me.getTilePoint_(Ta.getPoint(),me.mapZoom_,GSize.ZERO);if(me.isGridPointVisible_(Xa)&&Ua<=me.shownBounds_.z&&me.shownBounds_.z<=Wa){me.addOverlay_(Ta);me.notifyListeners_();}
this.numMarkers_[Ua]++;};GBounds.prototype.containsPoint=function(Ya){var Za=this;return(Za.minX<=Ya.x&&Za.maxX>=Ya.x&&Za.minY<=Ya.y&&Za.maxY>=Ya.y);}
MarkerManager.prototype.getGridCellCreate_=function(x,y,z){var $a=this.grid_[z];if(x<0){x+=this.gridWidth_[z];}
var ab=$a[x];if(!ab){ab=$a[x]=[];return ab[y]=[];}
var bb=ab[y];if(!bb){return ab[y]=[];}
return bb;};MarkerManager.prototype.getGridCellNoCreate_=function(x,y,z){var cb=this.grid_[z];if(x<0){x+=this.gridWidth_[z];}
var db=cb[x];return db?db[y]:undefined;};MarkerManager.prototype.getGridBounds_=function(eb,fb,gb,hb){fb=Math.min(fb,this.maxZoom_);var bl=eb.getSouthWest();var tr=eb.getNorthEast();var sw=this.getTilePoint_(bl,fb,gb);var ne=this.getTilePoint_(tr,fb,hb);var gw=this.gridWidth_[fb];if(tr.lng()<bl.lng()||ne.x<sw.x){sw.x-=gw;}
if(ne.x-sw.x+1>=gw){sw.x=0;ne.x=gw-1;}
var ib=new GBounds([sw,ne]);ib.z=fb;return ib;};MarkerManager.prototype.getMapGridBounds_=function(){var me=this;return me.getGridBounds_(me.map_.getBounds(),me.mapZoom_,me.swPadding_,me.nePadding_);};MarkerManager.prototype.onMapMoveEnd_=function(){var me=this;me.objectSetTimeout_(this,this.updateMarkers_,0);};MarkerManager.prototype.objectSetTimeout_=function(jb,kb,lb){return window.setTimeout(function(){kb.call(jb);},lb);};MarkerManager.prototype.refresh=function(){var me=this;if(me.shownMarkers_>0){me.processAll_(me.shownBounds_,me.removeOverlay_);}
me.processAll_(me.shownBounds_,me.addOverlay_);me.notifyListeners_();};MarkerManager.prototype.updateMarkers_=function(){var me=this;me.mapZoom_=this.map_.getZoom();var mb=me.getMapGridBounds_();if(mb.equals(me.shownBounds_)&&mb.z==me.shownBounds_.z){return;}
if(mb.z!=me.shownBounds_.z){me.processAll_(me.shownBounds_,me.removeOverlay_);me.processAll_(mb,me.addOverlay_);}
else{me.rectangleDiff_(me.shownBounds_,mb,me.removeCellMarkers_);me.rectangleDiff_(mb,me.shownBounds_,me.addCellMarkers_);}
me.shownBounds_=mb;me.notifyListeners_();};MarkerManager.prototype.notifyListeners_=function(){GEvent.trigger(this,"changed",this.shownBounds_,this.shownMarkers_);};MarkerManager.prototype.processAll_=function(nb,ob){for(var x=nb.minX;x<=nb.maxX;x++){for(var y=nb.minY;y<=nb.maxY;y++){this.processCellMarkers_(x,y,nb.z,ob);}}};MarkerManager.prototype.processCellMarkers_=function(x,y,z,pb){var qb=this.getGridCellNoCreate_(x,y,z);if(qb){for(var i=qb.length-1;i>=0;i--){pb(qb[i]);}}};MarkerManager.prototype.removeCellMarkers_=function(x,y,z){this.processCellMarkers_(x,y,z,this.removeOverlay_);};MarkerManager.prototype.addCellMarkers_=function(x,y,z){this.processCellMarkers_(x,y,z,this.addOverlay_);};MarkerManager.prototype.rectangleDiff_=function(rb,sb,tb){var me=this;me.rectangleDiffCoords(rb,sb,function(x,y){tb.apply(me,[x,y,rb.z]);});};MarkerManager.prototype.rectangleDiffCoords=function(ub,vb,wb){var xb=ub.minX;var yb=ub.minY;var zb=ub.maxX;var Ab=ub.maxY;var Bb=vb.minX;var Cb=vb.minY;var Db=vb.maxX;var Eb=vb.maxY;for(var x=xb;x<=zb;x++){for(var y=yb;y<=Ab&&y<Cb;y++){wb(x,y);}
for(var y=Math.max(Eb+1,yb);y<=Ab;y++){wb(x,y);}}
for(var y=Math.max(yb,Cb);y<=Math.min(Ab,Eb);y++){for(var x=Math.min(zb+1,Bb)-1;x>=xb;x--){wb(x,y);}
for(var x=Math.max(xb,Db+1);x<=zb;x++){wb(x,y);}}};MarkerManager.prototype.removeFromArray=function(Fb,Gb,Hb){var Ib=0;for(var i=0;i<Fb.length;++i){if(Fb[i]===Gb||(Hb&&Fb[i]==Gb)){Fb.splice(i--,1);Ib++;}}
return Ib;};var overlay_array=new Array();var weather_tiles_dict={2:['x0y1','x1y1'],3:['x0y2','x0y3','x1y2','x1y3','x2y2','x2y3'],4:['x0y4','x0y5','x0y6','x0y7','x1y4','x1y5','x1y6','x1y7','x2y4','x2y5','x2y6','x2y7','x3y4','x3y5','x3y6','x3y7','x4y4','x4y5','x4y6','x4y7','x5y4','x5y5','x5y6','x5y7'],5:['x0y8','x0y9','x0y10','x0y11','x0y12','x0y13','x0y14','x1y8','x1y9','x1y10','x1y11','x1y12','x1y13','x1y14','x2y8','x2y9','x2y10','x2y11','x2y12','x2y13','x2y14','x3y8','x3y9','x3y10','x3y11','x3y12','x3y13','x3y14','x4y8','x4y9','x4y10','x4y11','x4y12','x4y13','x4y14','x5y8','x5y9','x5y10','x5y11','x5y12','x5y13','x5y14','x6y8','x6y9','x6y10','x6y11','x6y12','x6y13','x6y14','x7y8','x7y9','x7y10','x7y11','x7y12','x7y13','x7y14','x8y8','x8y9','x8y10','x8y11','x8y12','x8y13','x8y14','x9y8','x9y9','x9y10','x9y11','x9y12','x9y13','x9y14','x10y8','x10y9','x10y10','x10y11','x10y12','x10y13','x10y14'],6:['x0y16','x0y17','x0y18','x0y19','x0y20','x0y21','x0y22','x0y23','x0y24','x0y25','x0y26','x0y27','x0y28','x1y16','x1y17','x1y18','x1y19','x1y20','x1y21','x1y22','x1y23','x1y24','x1y25','x1y26','x1y27','x1y28','x2y16','x2y17','x2y18','x2y19','x2y20','x2y21','x2y22','x2y23','x2y24','x2y25','x2y26','x2y27','x2y28','x3y16','x3y17','x3y18','x3y19','x3y20','x3y21','x3y22','x3y23','x3y24','x3y25','x3y26','x3y27','x3y28','x4y16','x4y17','x4y18','x4y19','x4y20','x4y21','x4y22','x4y23','x4y24','x4y25','x4y26','x4y27','x4y28','x5y16','x5y17','x5y18','x5y19','x5y20','x5y21','x5y22','x5y23','x5y24','x5y25','x5y26','x5y27','x5y28','x6y16','x6y17','x6y18','x6y19','x6y20','x6y21','x6y22','x6y23','x6y24','x6y25','x6y26','x6y27','x6y28','x7y16','x7y17','x7y18','x7y19','x7y20','x7y21','x7y22','x7y23','x7y24','x7y25','x7y26','x7y27','x7y28','x8y16','x8y17','x8y18','x8y19','x8y20','x8y21','x8y22','x8y23','x8y24','x8y25','x8y26','x8y27','x8y28','x9y16','x9y17','x9y18','x9y19','x9y20','x9y21','x9y22','x9y23','x9y24','x9y25','x9y26','x9y27','x9y28','x10y16','x10y17','x10y18','x10y19','x10y20','x10y21','x10y22','x10y23','x10y24','x10y25','x10y26','x10y27','x10y28','x11y16','x11y17','x11y18','x11y19','x11y20','x11y21','x11y22','x11y23','x11y24','x11y25','x11y26','x11y27','x11y28','x12y16','x12y17','x12y18','x12y19','x12y20','x12y21','x12y22','x12y23','x12y24','x12y25','x12y26','x12y27','x12y28','x13y16','x13y17','x13y18','x13y19','x13y20','x13y21','x13y22','x13y23','x13y24','x13y25','x13y26','x13y27','x13y28','x14y16','x14y17','x14y18','x14y19','x14y20','x14y21','x14y22','x14y23','x14y24','x14y25','x14y26','x14y27','x14y28','x15y16','x15y17','x15y18','x15y19','x15y20','x15y21','x15y22','x15y23','x15y24','x15y25','x15y26','x15y27','x15y28','x16y16','x16y17','x16y18','x16y19','x16y20','x16y21','x16y22','x16y23','x16y24','x16y25','x16y26','x16y27','x16y28','x17y16','x17y17','x17y18','x17y19','x17y20','x17y21','x17y22','x17y23','x17y24','x17y25','x17y26','x17y27','x17y28','x18y16','x18y17','x18y18','x18y19','x18y20','x18y21','x18y22','x18y23','x18y24','x18y25','x18y26','x18y27','x18y28','x19y16','x19y17','x19y18','x19y19','x19y20','x19y21','x19y22','x19y23','x19y24','x19y25','x19y26','x19y27','x19y28','x20y16','x20y17','x20y18','x20y19','x20y20','x20y21','x20y22','x20y23','x20y24','x20y25','x20y26','x20y27','x20y28',]};function createRadarTiles(aa){var ba=aa+'/radar';var ca=new GTileLayer(new GCopyrightCollection(''),2,6);ca.getTileUrl=function(da,ea){if(weather_tiles_dict[ea]&&checkArray(weather_tiles_dict[ea],'x'+da.x+'y'+da.y)){return ba+'/z'+ea+'/radar_tile_z'+ea+'x'+da.x+'y'+da.y+'.png';}
else{return'http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/radar_blank_tile.png';}};ca.isPng=function(){return true;}
ca.getOpacity=function(){return 0.45;}
return ca;}
function checkArray(fa,ga){for(i=0;i<fa.length;i++){if(fa[i]==ga){return true;}}
return false;}
function setTileOverlays(ha,ia){overlay_array['radar']=new Array();overlay_array['radar']['status']=0;overlay_array['radar']['ov']=new GTileLayerOverlay(createRadarTiles(ha));if(ia){overlay_array['traffic']=new Array();overlay_array['traffic']['status']=0;overlay_array['traffic']['ov']=new GTrafficOverlay();}}
function toggleOV(ja){if(ja=='radar'){if(!overlay_array['radar']['status']){map.addOverlay(overlay_array['radar']['ov']);overlay_array['radar']['status']=1;}
else{map.removeOverlay(overlay_array['radar']['ov']);overlay_array['radar']['status']=0;}}
else if(ja=='traffic'){if(!overlay_array['traffic']['status']){map.addOverlay(overlay_array['traffic']['ov']);overlay_array['traffic']['status']=1;}
else{map.removeOverlay(overlay_array['traffic']['ov']);overlay_array['traffic']['status']=0;}}}
function refreshOV(ka){if(ka=='radar'){if(overlay_array['radar']['status']){toggleOV('radar');toggleOV('radar');}}}
var debug_coords=false;var debug_window=false;var debug_tooltip=false;var debug_parsepanzoom=false;var map;var fs_map_type;var fs_h_map_type;var markerManager=null;var currentMarker=null;var application=null;var pngs_to_correct=['map_pan_control','map_zoom_in','map_zoom_out'];var weather_tiles_url=null;var geo_country_default=null;var default_airport_info_type=null;var indexMarkersZ5=null;function createFSTiles(){var fs_loc='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTiles/World';var tiles=new GTileLayer(new GCopyrightCollection(''),2,5);tiles.getTileUrl=function(tile,zoom){if(debug_coords){var xy=tile.x+tile.y*Math.pow(2,zoom);if(zoom==3&&(xy==17||xy==18||xy==25||xy==26)){console.log("------------------------------");console.log("------------------------------");console.log("coords info for tile : x = "+tile.x+", y = "+tile.y+", zoom = "+zoom);console.log("img url = "+fs_loc+'/z'+zoom+'/world_tile.'+zoom+'.'+(tile.x+tile.y*Math.pow(2,zoom))+'.png');var nw=new GPoint(tile.x*256,tile.y*256);var sw=new GPoint(tile.x*256,(tile.y+1)*256);var ne=new GPoint((tile.x+1)*256,tile.y*256);var se=new GPoint((tile.x+1)*256,(tile.y+1)*256);var nw_coords=G_NORMAL_MAP.getProjection().fromPixelToLatLng(nw,zoom);var sw_coords=G_NORMAL_MAP.getProjection().fromPixelToLatLng(sw,zoom);var ne_coords=G_NORMAL_MAP.getProjection().fromPixelToLatLng(ne,zoom);var se_coords=G_NORMAL_MAP.getProjection().fromPixelToLatLng(se,zoom);console.log("nw coords : lat = "+nw_coords.lat()+", long = "+nw_coords.lng());console.log("sw coords : lat = "+sw_coords.lat()+", long = "+sw_coords.lng());console.log("ne coords : lat = "+ne_coords.lat()+", long = "+ne_coords.lng());console.log("se coords : lat = "+se_coords.lat()+", long = "+se_coords.lng());if(xy==17){var c_n1=new GPoint(277,655);var c_n2=new GPoint(677,655);var c_n3=new GPoint(277,905);var c_n4=new GPoint(677,905);var c_n1_coords=G_NORMAL_MAP.getProjection().fromPixelToLatLng(c_n1,zoom);var c_n2_coords=G_NORMAL_MAP.getProjection().fromPixelToLatLng(c_n2,zoom);var c_n3_coords=G_NORMAL_MAP.getProjection().fromPixelToLatLng(c_n3,zoom);var c_n4_coords=G_NORMAL_MAP.getProjection().fromPixelToLatLng(c_n4,zoom);console.log("c_n1 coords : lat = "+c_n1_coords.lat()+", long = "+c_n1_coords.lng());console.log("c_n2 coords : lat = "+c_n2_coords.lat()+", long = "+c_n2_coords.lng());console.log("c_n3 coords : lat = "+c_n3_coords.lat()+", long = "+c_n3_coords.lng());console.log("c_n4 coords : lat = "+c_n4_coords.lat()+", long = "+c_n4_coords.lng());console.log}
console.log("------------------------------");console.log("------------------------------");}}
return fs_loc+'/z'+zoom+'/world_tile.'+zoom+'.'+
(tile.x+tile.y*Math.pow(2,zoom))+'.png';};tiles.isPng=function(){return true;}
tiles.getOpacity=function(){return 1.0;}
return tiles;}
function createFlightStatsMapType(fs_tiles){var fs_map=new GMapType([fs_tiles],G_NORMAL_MAP.getProjection(),'FlightStats',{shortName:'FS',tileSize:256,maxResolution:5,minResolution:2,errorMessage:"Out of Bounds"});return fs_map;}
function createHybridFlightStatsMapType(fs_tiles){var fs_map=new GMapType([fs_tiles,G_HYBRID_MAP.getTileLayers()[1]],G_HYBRID_MAP.getProjection(),'Flight Stats Hybrid',{shortName:'FSH',tileSize:256,maxResolution:5,minResolution:2,errorMessage:"Out of Bounds"});return fs_map;}
function createIcon(url,width_height,icon_anchor,info_anchor){var icon=new GIcon();icon.image=url;if(width_height>0){icon.iconSize=new GSize(width_height,width_height);}
icon.iconAnchor=new GPoint(icon_anchor,icon_anchor);icon.infoWindowAnchor=new GPoint(info_anchor,info_anchor);return icon;}
function LittleInfoWindow(marker,airportCodeCityCombo,mainContent,windowLocation){this.airportCodeCityCombo_=airportCodeCityCombo;this.mainContent_=mainContent;this.windowLocation_=windowLocation;this.width_px_=319;this.height_px_=247;this.width_='319px';this.height_='247px';this.marker_=marker;}
LittleInfoWindow.prototype=new GOverlay();LittleInfoWindow.prototype.windowLocation=null;LittleInfoWindow.prototype.initialize=function(map){this.map_=map;var div=document.createElement('div');div.style.display='none';map.getPane(G_MAP_FLOAT_PANE).appendChild(div);this.container_=div;}
LittleInfoWindow.prototype.remove=function(){this.container_.parentNode.removeChild(this.container_);}
LittleInfoWindow.prototype.copy=function(){return new ToolTip(this.marker_,this.html_,this.width_);}
LittleInfoWindow.prototype.redraw=function(force){if(!force)return;var content=document.createElement('div');content.style.margin='0';content.style.padding='0';content.style.border='0px solid';content.style.display='block';content.style.width=this.width_;content.style.height=this.height_;content.style.visibility='hidden';this.map_.getContainer().appendChild(content);content.parentNode.removeChild(content);content.style.visibility='visible';content.style.position='absolute';var popup_image=document.createElement('img');if(this.windowLocation_=='left'){var l_image_url='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/airport_popup_left_pointing_2.png';if(xIE4Up){popup_image.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+l_image_url+")";popup_image.src="http://dem5xqcn61lj8.cloudfront.net/spacer.gif";}
else{popup_image.src=l_image_url;}}
else{var r_image_url='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/airport_popup_right_pointing_2.png';if(xIE4Up){popup_image.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+r_image_url+")";popup_image.src="http://dem5xqcn61lj8.cloudfront.net/spacer.gif";}
else{popup_image.src=r_image_url;}}
content.appendChild(popup_image);var l_airportName=document.createElement('div');l_airportName.style.position='absolute';l_airportName.style.width='225px';l_airportName.style.height='13px';if(this.windowLocation_=='left'){l_airportName.style.left='43px';}
else{l_airportName.style.left='10px';}
l_airportName.style.top='5px';l_airportName.style.border='0px solid #ffffff';l_airportName.style.font='10px arial, verdana, sans-serif';l_airportName.innerHTML="<font color='white'><b>"+this.airportCodeCityCombo_+"</b></font>";content.appendChild(l_airportName);var l_closeBox=document.createElement('div');l_closeBox.style.position='absolute';l_closeBox.style.width='12px';l_closeBox.style.height='12px';if(this.windowLocation_=='left'){l_closeBox.style.left='295px';}
else{l_closeBox.style.left='263px';}
l_closeBox.style.top='4px';l_closeBox.style.border='0px solid #ffffff';l_closeBox.style.cursor='pointer';var marker=this.marker_;GEvent.addDomListener(l_closeBox,'click',function(){marker.closeLittleInfoWindow(true);});content.appendChild(l_closeBox);var l_content=document.createElement('div');l_content.style.position='absolute';l_content.style.width='259px';l_content.style.height='207px';if(this.windowLocation_=='left'){l_content.style.left='33px';}
else{l_content.style.left='0px';}
l_content.style.top='20px';l_content.style.border='0px solid';l_content.style.paddingLeft='10px';l_content.style.paddingRight='10px';l_content.style.paddingTop='3px';l_content.style.paddingBottom='10px';if(this.mainContent_==null){l_content.innerHTML='No content available.';}
else{l_content.appendChild(this.mainContent_);}
content.appendChild(l_content);this.container_.style.position='absolute';var pixelLocation=this.map_.fromLatLngToDivPixel(this.marker_.getPoint());if(this.windowLocation_=='left'){this.container_.style.left=(pixelLocation.x+6)+'px';this.container_.style.top=(pixelLocation.y-120)+'px';}
else{this.container_.style.left=(pixelLocation.x-319)+'px';this.container_.style.top=(pixelLocation.y-120)+'px';}
this.container_.style.border='0';this.container_.style.margin='0';this.container_.style.padding='0';this.container_.style.display='block';this.container_.appendChild(content);var mapNE=this.map_.fromLatLngToDivPixel(this.map_.getBounds().getNorthEast());var mapSW=this.map_.fromLatLngToDivPixel(this.map_.getBounds().getSouthWest());if(debug_window){console.log("----- panning calcs -----");console.log("mapNE X : "+mapNE.x+", mapNE Y : "+mapNE.y);console.log("mapSW X : "+mapSW.x+", mapSW Y : "+mapSW.y);console.log("offsetTop : "+this.container_.offsetTop);console.log("offsetLeft : "+this.container_.offsetLeft);console.log("offsetBottom : "+(this.container_.offsetTop-this.container_.offsetHeight));console.log("offsetRight : "+(this.container_.offsetLeft+this.container_.offsetWidth));}
var ne_panX=0;var ne_panY=0;var sw_panX=0;var sw_panY=0;if(this.container_.offsetTop-40<mapNE.y){ne_panY=mapNE.y-this.container_.offsetTop+40;}
if(this.container_.offsetLeft+this.width_px_+50>mapNE.x){ne_panX=(this.container_.offsetLeft+this.width_px_+50)-mapNE.x;}
offsetBottom=this.container_.offsetTop+this.height_px_;if(offsetBottom+40>mapSW.y){sw_panY=offsetBottom-mapSW.y+40;}
if(this.container_.offsetLeft-50<mapSW.x){sw_panX=mapSW.x-this.container_.offsetLeft+50;}
if(ne_panX!=0||ne_panY!=0){if(sw_panX!=0){ne_panX-=sw_panX;}
else if(sw_panY!=0){ne_panY-=sw_panY;}
this.map_.panBy(new GSize(-ne_panX,ne_panY));}
else if(sw_panX!=0||sw_panY!=0){this.map_.panBy(new GSize(sw_panX,-sw_panY));}
if(debug_window){console.log("new pan neX : "+ne_panX);console.log("new pan neY : "+ne_panY);console.log("new pan swX : "+sw_panX);console.log("new pan swY : "+sw_panY);}
if(debug_window){console.log("----- end panning calcs -----");}}
GMarker.prototype.LittleInfoWindowInstance=null;GMarker.prototype.windowLocation=null;GMarker.prototype.openLittleInfoWindow=function(airportCodeCityCombo,mainContent){if(this.LittleInfoWindowInstance==null){var mapCenter=map.getCenter();var mapCenterPx=map.fromLatLngToDivPixel(mapCenter);var pixelLocation=map.fromLatLngToDivPixel(this.getPoint());var windowLocation='';if(pixelLocation.x>=mapCenterPx.x){windowLocation="right";}
else{windowLocation="left";}
this.LittleInfoWindowInstance=new LittleInfoWindow(this,airportCodeCityCombo,mainContent,windowLocation);if(currentMarker!=null){currentMarker.closeLittleInfoWindow(true);}
map.addOverlay(this.LittleInfoWindowInstance);}}
GMarker.prototype.closeLittleInfoWindow=function(returnToSavedPosition){if(this.LittleInfoWindowInstance!=null){map.removeOverlay(this.LittleInfoWindowInstance);if(returnToSavedPosition){map.returnToSavedPosition();}
this.LittleInfoWindowInstance=null;currentMarker=null;}}
function ToolTip(marker,html,width){this.html_=html;this.width_=(width?width+'px':'auto');this.marker_=marker;}
ToolTip.prototype=new GOverlay();ToolTip.prototype.initialize=function(map){var div=document.createElement('div');div.style.display='none';map.getPane(G_MAP_FLOAT_PANE).appendChild(div);this.map_=map;this.container_=div;}
ToolTip.prototype.remove=function(){this.container_.parentNode.removeChild(this.container_);}
ToolTip.prototype.copy=function(){return new ToolTip(this.html_);}
ToolTip.prototype.redraw=function(force){if(!force)return;var pixelLoc=this.map_.fromLatLngToDivPixel(this.marker_.getPoint());this.container_.innerHTML=this.html_;this.container_.style.position='absolute';var mapCenter=map.getCenter();var mapCenterPx=map.fromLatLngToDivPixel(mapCenter);if(pixelLoc.x<=mapCenterPx.x){this.container_.style.left=(pixelLoc.x+10)+'px';}
else{this.container_.style.left=(pixelLoc.x-(this.html_.length*5))+'px';}
if(pixelLoc.y<=mapCenterPx.y){this.container_.style.top=(pixelLoc.y+7)+'px';}
else{this.container_.style.top=(pixelLoc.y+-27)+'px';}
this.container_.style.width=this.width_;this.container_.style.font='10px arial, verdana, sans-serif';this.container_.style.border='1px solid black';this.container_.style.background='white';this.container_.style.padding='2px';this.container_.style.whiteSpace='nowrap';if(this.width_!='auto')this.container_.style.overflow='hidden';this.container_.style.display='block';}
GMarker.prototype.ToolTipInstance=null;GMarker.prototype.openToolTip=function(content){if(this.ToolTipInstance==null){this.ToolTipInstance=new ToolTip(this,content);map.addOverlay(this.ToolTipInstance);}}
GMarker.prototype.closeToolTip=function(){if(this.ToolTipInstance!=null){map.removeOverlay(this.ToolTipInstance);this.ToolTipInstance=null;}}
function createMarkerContent(xmlDoc){var airportNode=xmlDoc.documentElement.getElementsByTagName("airport")[0];var weatherNode=xmlDoc.documentElement.getElementsByTagName("weather")[0];var FAADelaysNode=xmlDoc.documentElement.getElementsByTagName("FAADelays")[0];var scorecardNode=xmlDoc.documentElement.getElementsByTagName("scorecard")[0];var ratingsNode=xmlDoc.documentElement.getElementsByTagName("ratings")[0];var airportCode=airportNode.getAttribute("code");var airportQueryDate=airportNode.getAttribute("airportQueryDate");var mainContent=document.createElement('div');mainContent.style.position='relative';mainContent.style.border='0px solid';mainContent.style.width='259px';mainContent.style.height='207px';var m_airport=document.createElement('div');m_airport.style.position='relative';m_airport.style.paddingBottom='3px';m_airport.style.borderBottom='1px solid #F9981B';var c_airport=document.createElement('div');c_airport.style.position='absolute';c_airport.style.width='90px';c_airport.style.left='0px';c_airport.style.font='10px arial, verdana, sans-serif';c_airport.innerHTML='<b>Airport:</b>';var c_airportName=document.createElement('div');c_airportName.style.position='relative';c_airportName.style.width='169px';c_airportName.style.left='90px';c_airportName.style.font='10px arial, verdana, sans-serif';var an_innerHTML="";if(application==null){an_innerHTML="<a href='/Airport/airportDetails.do?airportCode="+airportCode+"'>"+airportCode+"</a>";}
an_innerHTML='('+an_innerHTML+') '+airportNode.getAttribute("name");if(airportNode.getAttribute("currentLocalTime24")){an_innerHTML=an_innerHTML+"<br/>Local Time: "+airportNode.getAttribute("currentLocalTime24")+"&nbsp;&nbsp;"+airportNode.getAttribute("currentDate");}
var da_innerHTML="";if(application==null){da_innerHTML="<a href='/FlightStatus/flightStatusByAirport.do?airportCode="+
airportCode+"&airportQueryDate="+airportQueryDate+"&airportQueryType=0'>"+airportCode+" Departures</a><br/>"+"<a href='/FlightStatus/flightStatusByAirport.do?airportCode="+
airportCode+"&airportQueryDate="+airportQueryDate+"&airportQueryType=1'>"+airportCode+" Arrivals</a>";}
c_airportName.innerHTML=an_innerHTML+"<br/>"+da_innerHTML;m_airport.appendChild(c_airport);m_airport.appendChild(c_airportName);var m_status=document.createElement('div');m_status.style.position='relative';m_status.style.paddingTop='3px';m_status.style.paddingBottom='3px';var c_status=document.createElement('div');c_status.style.position='absolute';c_status.style.width='90px';c_status.style.left='0px';c_status.style.font='10px arial, verdana, sans-serif';if(default_airport_info_type=='faa_delays'){c_status.innerHTML='<b>Airport Status:</b>';}
else{c_status.innerHTML='<b>Delay Index:</b><br/><a href="http://www.flightstats.com/Airport/airportDelayIndexFAQ.do?">What\'s This?</a>';}
var c_statusDetails=document.createElement('div');c_statusDetails.style.position='relative';c_statusDetails.style.width='169px';c_statusDetails.style.left='90px';c_statusDetails.style.font='10px arial, verdana, sans-serif';if(default_airport_info_type=='faa_delays'){var s_innerHTML="";if(FAADelaysNode.getElementsByTagName("closure")[0]||FAADelaysNode.getElementsByTagName("deicing")[0]||FAADelaysNode.getElementsByTagName("groundStop")[0]||FAADelaysNode.getElementsByTagName("groundDelayProgram")[0]||FAADelaysNode.getElementsByTagName("delays")[0]){if(FAADelaysNode.getElementsByTagName("closure")[0]){var closure=FAADelaysNode.getElementsByTagName("closure")[0];s_innerHTML=s_innerHTML+"<img src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/"+closure.getAttribute("graphic")+"'> "+closure.getAttribute("description")+"<br/>";}
if(FAADelaysNode.getElementsByTagName("deicing")[0]){var deicing=FAADelaysNode.getElementsByTagName("deicing")[0];s_innerHTML=s_innerHTML+"<img src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/"+deicing.getAttribute("graphic")+"'> "+deicing.getAttribute("description")+"<br/>";}
if(FAADelaysNode.getElementsByTagName("groundStop")[0]){var groundStop=FAADelaysNode.getElementsByTagName("groundStop")[0];s_innerHTML=s_innerHTML+"<img src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/"+groundStop.getAttribute("graphic")+"'> "+groundStop.getAttribute("description")+"<br/>";}
if(FAADelaysNode.getElementsByTagName("groundDelayProgram")[0]){var groundDelayProgram=FAADelaysNode.getElementsByTagName("groundDelayProgram")[0];s_innerHTML=s_innerHTML+"<img src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/"+groundDelayProgram.getAttribute("graphic")+"'> "+groundDelayProgram.getAttribute("description")+"<br/>";}
if(FAADelaysNode.getElementsByTagName("delays")[0]){var delays=FAADelaysNode.getElementsByTagName("delays")[0];s_innerHTML=s_innerHTML+"<img src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/"+delays.getAttribute("graphic")+"'> "+delays.getAttribute("description")+"<br/>";}}
else{if(FAADelaysNode.getAttribute("graphic")&&FAADelaysNode.getAttribute("description")){s_innerHTML=s_innerHTML+"<img src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/"+FAADelaysNode.getAttribute("graphic")+"'> "+FAADelaysNode.getAttribute("description")+"<br/>";}}
if(application==null){s_innerHTML=s_innerHTML+"<a href='http://www.flightstats.com/Airport/delays.do?airportCode="+
airportCode+"&airportQueryDate="+airportQueryDate+"'>Delay Details</a>";}
c_statusDetails.innerHTML=s_innerHTML;}
else if(scorecardNode.getAttribute("scoreAvailable")){var scoreAndDescription='';if(scorecardNode.getAttribute("scoreAvailable")=='true'){scoreAndDescription=scorecardNode.getAttribute("score")+' - ';}
scoreAndDescription=scoreAndDescription+scorecardNode.getAttribute("description");var s_delayIndex=document.createElement('div');s_delayIndex.style.position='relative';s_delayIndex.style.width='107px';s_delayIndex.style.left='0px';var s_delayIndexDesc=document.createElement('div');s_delayIndexDesc.style.position='relative';s_delayIndexDesc.style.width='107px';s_delayIndexDesc.style.left='0px';s_delayIndexDesc.style.font='10px arial, verdana, sans-serif';s_delayIndexDesc.align='center';s_delayIndexDesc.innerHTML='<b>'+scoreAndDescription+'</b>';var s_delayIndexIndicator=document.createElement('div');s_delayIndexIndicator.style.position='relative';s_delayIndexIndicator.style.width='107px';s_delayIndexIndicator.style.height='8px';s_delayIndexIndicator.style.left='0px';var s_delayIndexIndicatorHTML='';if(scorecardNode.getAttribute("scoreAvailable")=='true'){var scorePercentage=parseFloat(scorecardNode.getAttribute("scorePercentage"));var scorePercentageRemainder=parseFloat(scorecardNode.getAttribute("scorePercentageRemainder"));var changeRatePercentage=parseFloat(scorecardNode.getAttribute("changeRatePercentage"));var leftPixelCount=scorePercentage;var rightPixelCount=scorePercentageRemainder;if(changeRatePercentage!=0){if(scorePercentage<=50){rightPixelCount-=30;}
else if(scorePercentage>50){leftPixelCount-=30;}}
s_delayIndexIndicatorHTML='<img src="http://dem5xqcn61lj8.cloudfront.net/spacer.gif" style="width: '+leftPixelCount+'px; height: 1px;">';if(scorePercentage<=50){s_delayIndexIndicatorHTML=s_delayIndexIndicatorHTML+'<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/delay_index_orange_pointer.gif"/>';}
if(changeRatePercentage<0&&changeRatePercentage!=0){s_delayIndexIndicatorHTML=s_delayIndexIndicatorHTML+'<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/delay_index_trend_dec.gif"/>';}
if(changeRatePercentage>0&&changeRatePercentage!=0){s_delayIndexIndicatorHTML=s_delayIndexIndicatorHTML+'<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/delay_index_trend_inc.gif"/>';}
if(scorePercentage>50){s_delayIndexIndicatorHTML=s_delayIndexIndicatorHTML+'<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/delay_index_orange_pointer.gif"/>';}
s_delayIndexIndicatorHTML=s_delayIndexIndicatorHTML+'<img src="http://dem5xqcn61lj8.cloudfront.net/spacer.gif" style="width: '+rightPixelCount+'px; height: 1px;">';}
else{s_delayIndexIndicatorHTML='<img src="http://dem5xqcn61lj8.cloudfront.net/spacer.gif" style="width: 107px; height: 1px;">';}
s_delayIndexIndicator.innerHTML=s_delayIndexIndicatorHTML;var s_delayIndexScale=document.createElement('div');s_delayIndexScale.style.position='relative';s_delayIndexScale.style.width='107px';s_delayIndexScale.style.height='18px';s_delayIndexScale.style.left='0px';if(scorecardNode.getAttribute("scoreAvailable")=='true'){var score=parseFloat(scorecardNode.getAttribute("score"));if(score<=1){s_delayIndexScale.innerHTML='<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/therm_bkgd_10.gif"/>';}
else if(score<=2){s_delayIndexScale.innerHTML='<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/therm_bkgd_20.gif"/>';}
else if(score<=3){s_delayIndexScale.innerHTML='<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/therm_bkgd_30.gif"/>';}
else if(score<=4){s_delayIndexScale.innerHTML='<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/therm_bkgd_40.gif"/>';}
else{s_delayIndexScale.innerHTML='<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/therm_bkgd_50.gif"/>';}}
else{s_delayIndexScale.innerHTML='<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/therm_bkgd_00.gif"/>';}
var s_delayIndexLowHigh=document.createElement('div');s_delayIndexLowHigh.style.position='relative';s_delayIndexLowHigh.style.width='107px';s_delayIndexLowHigh.style.height='9px';s_delayIndexLowHigh.style.left='0px';s_delayIndexLowHigh.innerHTML='<img src="http://dem5xqcn61lj8.cloudfront.net/AirportDelayIndex/low_high_text.gif"/>';var s_delayIndexDetails=document.createElement('div');s_delayIndexDetails.style.position='absolute';s_delayIndexDetails.style.width='58px';s_delayIndexDetails.style.left='111px';s_delayIndexDetails.style.top='23px';var s_delayIndexDetailsHTML="";if(application==null){s_delayIndexDetailsHTML=s_delayIndexDetailsHTML+"<a href='http://www.flightstats.com/Airport/delays.do?airportCode="+
airportCode+"&airportQueryDate="+airportQueryDate+"'>Details</a>";}
s_delayIndexDetails.innerHTML=s_delayIndexDetailsHTML;s_delayIndex.appendChild(s_delayIndexDesc);s_delayIndex.appendChild(s_delayIndexIndicator);s_delayIndex.appendChild(s_delayIndexScale);s_delayIndex.appendChild(s_delayIndexLowHigh);c_statusDetails.appendChild(s_delayIndex);c_statusDetails.appendChild(s_delayIndexDetails);}
if(default_airport_info_type=='faa_delays'){m_status.style.paddingBottom='3px';}
else{m_status.style.paddingBottom='5px';}
m_status.appendChild(c_status);m_status.appendChild(c_statusDetails);var m_weather=document.createElement('div');m_weather.style.position='relative';m_weather.style.paddingTop='3px';if(!weatherNode.getAttribute("graphic")){m_weather.style.paddingBottom='3px';}
else{m_weather.style.paddingBottom='7px';}
m_weather.style.borderTop='1px solid #F9981B';var c_weather=document.createElement('div');c_weather.style.position='absolute';c_weather.style.width='90px';c_weather.style.left='0px';c_weather.style.font='10px arial, verdana, sans-serif';c_weather.innerHTML='<b>Weather:</b>';var c_weatherDetails=document.createElement('div');c_weatherDetails.style.position='relative';c_weatherDetails.style.width='169px';c_weatherDetails.style.left='90px';if(!weatherNode.getAttribute("graphic")&&!weatherNode.getAttribute("condition")&&!weatherNode.getAttribute("tempC")&&!weatherNode.getAttribute("tempF")){c_weatherDetails.style.font='10px arial, verdana, sans-serif';c_weatherDetails.innerHTML="Unavailable";}
else{if(weatherNode.getAttribute("graphic")){var c_weatherPic=document.createElement('div');c_weatherPic.style.position='absolute';c_weatherPic.style.width="40px";c_weatherPic.style.left="0px";c_weatherPic.style.paddingTop="3px";c_weatherPic.innerHTML="<img src='http://dem5xqcn61lj8.cloudfront.net/Weather/"+weatherNode.getAttribute("graphic")+"' style='width: 33px; height: 35px;'/>";c_weatherDetails.appendChild(c_weatherPic);}
var c_weatherInfo=document.createElement('div');c_weatherInfo.style.position='relative';c_weatherInfo.style.border="0px solid";if(weatherNode.getAttribute("graphic")){c_weatherInfo.style.width="129px";c_weatherInfo.style.left="40px";}
else{c_weatherInfo.style.left="0px";}
c_weatherInfo.style.font='10px arial, verdana, sans-serif';var w_innerHTML="";if(weatherNode.getAttribute("condition")){w_innerHTML=w_innerHTML+weatherNode.getAttribute("condition")+"<br/>";}
if(weatherNode.getAttribute("tempC")){w_innerHTML=w_innerHTML+weatherNode.getAttribute("tempC")+"&deg;C";}
if(weatherNode.getAttribute("tempF")){var preF="";var postF="";if(weatherNode.getAttribute("tempC")){preF=preF+" (";postF=postF+")";}
w_innerHTML=w_innerHTML+preF+weatherNode.getAttribute("tempF")+"&deg;F"+postF;}
if(application==null){w_innerHTML=w_innerHTML+"<br/><a href='/Airport/weather.do?airport="+airportCode+"'>Details</a>";}
c_weatherInfo.innerHTML=w_innerHTML;c_weatherDetails.appendChild(c_weatherInfo);}
m_weather.appendChild(c_weather);m_weather.appendChild(c_weatherDetails);var m_ratings=document.createElement('div');m_ratings.style.position='relative';m_ratings.style.paddingTop='3px';m_ratings.style.borderTop='1px solid #F9981B';var c_ratings=document.createElement('div');c_ratings.style.position='absolute';c_ratings.style.width='90px';c_ratings.style.left='0px';c_ratings.style.font='10px arial, verdana, sans-serif';c_ratings.innerHTML='<b>At the Airport:</b>';var c_ratingsDetails=document.createElement('div');c_ratingsDetails.style.position='relative';c_ratingsDetails.style.width='169px';c_ratingsDetails.style.left='90px';c_ratingsDetails.style.font='10px arial, verdana, sans-serif';var r_innerHTML="";var r_target="";var userRatings="<a "+r_target+"href='http://www.flightstats.com/Airport/airportUserRatingsModifyRating.do?airportCode="+airportCode+"'>No Rating Available</a>";if(ratingsNode.getAttribute("overallAverage")){var rating=parseFloat(ratingsNode.getAttribute("overallAverage"));var graphicLoc="http://dem5xqcn61lj8.cloudfront.net/RatingStars/Gfx_rating_stars_55x10.gif";var graphicPosition=ratingsNode.getAttribute("graphicPosition");userRatings="<img src='http://dem5xqcn61lj8.cloudfront.net/spacer.gif' style='background-image: url("+graphicLoc+"); background-position: "+graphicPosition+"; width: 55px; height: 10px;'/> <a "+r_target+"href='http://www.flightstats.com/Airport/airportUserRatingsByAirport.do?airport="+airportCode+"'>"+rating+" of 5</a>&nbsp;<img title='Link to an external site' src='http://dem5xqcn61lj8.cloudfront.net/spacer.gif' style='width: 11px; height: 11px; background-image: url(http://dem5xqcn61lj8.cloudfront.net/FlightStats2/gfx_common_elements.gif); background-position: -500px -220px;'/>";}
r_innerHTML=r_innerHTML+"User Rating: "+userRatings;c_ratingsDetails.innerHTML=r_innerHTML;m_ratings.appendChild(c_ratings);m_ratings.appendChild(c_ratingsDetails);mainContent.appendChild(m_airport);mainContent.appendChild(m_status);mainContent.appendChild(m_weather);mainContent.appendChild(m_ratings);return mainContent;}
function createAirportMarker(point,icon,airportCode,airportCodeCityCombo)
{var airportMarker=new GMarker(point,icon);GEvent.addListener(airportMarker,"click",function()
{var request=GXmlHttp.create();request.open('GET','/Suggest/airportDetailsSuggest.do?airportCode='+airportCode,true);request.onreadystatechange=function(){if(request.readyState==4){if(null==request.responseXML)return;var xmlDoc=request.responseXML;map.savePosition();var content=createMarkerContent(xmlDoc);airportMarker.closeToolTip();airportMarker.openLittleInfoWindow(airportCodeCityCombo,content);currentMarker=airportMarker;}}
request.send(null);});GEvent.addListener(airportMarker,"mouseover",function()
{if(currentMarker==null||airportMarker!=currentMarker){airportMarker.openToolTip(airportCodeCityCombo+' (click for details)');}});GEvent.addListener(airportMarker,"mouseout",function()
{airportMarker.closeToolTip();});return airportMarker;}
function setMapTypes(){fs_tiles=createFSTiles();fs_map_type=createFlightStatsMapType(fs_tiles);fs_h_map_type=createHybridFlightStatsMapType(fs_tiles);map.addMapType(fs_map_type);map.addMapType(fs_h_map_type);map.setMapType(fs_map_type);}
function addMarkers(markerInfoType,markerMgr,defaultRegion){var region=null;var addMoreMarkers=0;if(defaultRegion!=null&&defaultRegion!=""){var values=defaultRegion.split(",");region=values[0];addMoreMarkers=parseInt(values[4]);if(-1!=region.lastIndexOf("us_region")){region="US";}}
var request=GXmlHttp.create();if(addMoreMarkers==0){request.open('GET','/Suggest/airportInfoTypeSuggest.do?includeGlobal=true&airportInfoType='+markerInfoType,true);}
else{request.open('GET','/Suggest/airportInfoTypeSuggest.do?includeGlobal=true&airportInfoType='+markerInfoType+'&country='+region+'&classification=4&desiredResultsPoolSize=500',true);}
request.onreadystatechange=function(){if(request.readyState==4){if(null==request.responseXML)return;markerMgr.clearMarkers();var xmlDoc=request.responseXML;var airportNodes=xmlDoc.documentElement.getElementsByTagName("airport");var markers=[];var indexMarkersZ2=[];var indexMarkersZ3=[];var indexMarkersZ4=[];indexMarkersZ5=[];for(i=0;i<airportNodes.length;i++){var curAirportNode=airportNodes[i];var airportCode=curAirportNode.getAttribute("code");var longitude=curAirportNode.getAttribute("longitude");var latitude=curAirportNode.getAttribute("latitude");var airportCodeCityCombo=airportCode+" - "+curAirportNode.getAttribute("city")+", ";if(curAirportNode.getAttribute("stateCode")){airportCodeCityCombo=airportCodeCityCombo+curAirportNode.getAttribute("stateCode")+", ";}
airportCodeCityCombo=airportCodeCityCombo+curAirportNode.getAttribute("countryCode");var icon;var graphic;if(markerInfoType=='delay_indexes'){graphic=curAirportNode.getAttribute("scoreGraphic");}
else if(markerInfoType=='faa_delays'){graphic=curAirportNode.getAttribute("FAADelayGraphic");}
else if(markerInfoType=='highest_rated'||markerInfoType=='most_rated'){graphic=curAirportNode.getAttribute("ratingGraphic");}
icon=createIcon("http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/"+graphic,9,4,10);var airportMarker=createAirportMarker(new GPoint(longitude,latitude),icon,airportCode,airportCodeCityCombo);if(markerInfoType!='delay_indexes'){markers.push(airportMarker);}
else{var classification=parseInt(curAirportNode.getAttribute("classification"));if(1==classification){indexMarkersZ2.push(airportMarker);}
else if(2==classification){indexMarkersZ3.push(airportMarker);}
else if(3==classification){indexMarkersZ4.push(airportMarker);}
else if(4==classification){indexMarkersZ5.push(airportMarker);}}}
if(markerInfoType!='delay_indexes'){markerMgr.addMarkers(markers,2);}
else{markerMgr.addMarkers(indexMarkersZ2,2);markerMgr.addMarkers(indexMarkersZ3,4);markerMgr.addMarkers(indexMarkersZ4,5);markerMgr.addMarkers(indexMarkersZ5,5);}
markerMgr.refresh();}}
request.send(null);}
function addMoreMarkers(markerMgr,country,classification,poolSize){var request=GXmlHttp.create();request.open('GET','/Suggest/airportInfoTypeSuggest.do?airportInfoType=delay_indexes&country='+country+'&classification='+classification+'&desiredResultsPoolSize='+poolSize,true);request.onreadystatechange=function(){if(request.readyState==4){if(null==request.responseXML)return;var xmlDoc=request.responseXML;var airportNodes=xmlDoc.documentElement.getElementsByTagName("airport");indexMarkersZ5=[];for(i=0;i<airportNodes.length;i++){var curAirportNode=airportNodes[i];var airportCode=curAirportNode.getAttribute("code");var longitude=curAirportNode.getAttribute("longitude");var latitude=curAirportNode.getAttribute("latitude");var airportCodeCityCombo=airportCode+" - "+curAirportNode.getAttribute("city")+", ";if(curAirportNode.getAttribute("stateCode")){airportCodeCityCombo=airportCodeCityCombo+curAirportNode.getAttribute("stateCode")+", ";}
airportCodeCityCombo=airportCodeCityCombo+curAirportNode.getAttribute("countryCode");var graphic=curAirportNode.getAttribute("scoreGraphic");var icon=createIcon("http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/"+graphic,9,4,10);var airportMarker=createAirportMarker(new GPoint(longitude,latitude),icon,airportCode,airportCodeCityCombo);indexMarkersZ5.push(airportMarker);}
markerMgr.addMarkers(indexMarkersZ5,5);markerMgr.refresh();}}
request.send(null);}
function addMapListeners(loading){var A=function addMoveS(){GEvent.addListener(map,'movestart',function(){map.savePosition();});}
setTimeout(A,0);var C=function zoomPics(){GEvent.addListener(map,'zoomend',function(oldlevel,newlevel){checkPanZoomPics(newlevel);});}
setTimeout(C,0);}
function checkPanZoomPics(zoom_level){var maxRes=17;var minRes=0;if(map.getCurrentMapType().getName()=='FlightStats'){maxRes=5;minRes=2;}
if(zoom_level>=maxRes){document.images['map_zoom_in'].src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/zoom_in_inactive.png';document.images['map_zoom_out'].src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/zoom_out_off.png';document.getElementById('zoom_in').style.cursor='auto';document.getElementById('zoom_out').style.cursor='pointer';}
else if(zoom_level<=minRes){document.images['map_zoom_in'].src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/zoom_in_off.png';document.images['map_zoom_out'].src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/zoom_out_inactive.png';document.getElementById('zoom_in').style.cursor='pointer';document.getElementById('zoom_out').style.cursor='auto';}
else{if(document.images['map_zoom_in'].src.indexOf("zoom_in_over")==-1){document.images['map_zoom_in'].src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/zoom_in_off.png';}
if(document.images['map_zoom_out'].src.indexOf("zoom_out_over")==-1){document.images['map_zoom_out'].src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/zoom_out_off.png';}
document.getElementById('zoom_in').style.cursor='pointer';document.getElementById('zoom_out').style.cursor='pointer';}
if(xIE4Up){correctPNG('map_zoom_in');correctPNG('map_zoom_out');}}
function zoom(in_or_out){if(in_or_out==1){map.zoomIn();}
else map.zoomOut();}
function pan(x,y){map.panDirection(x,y);}
function mapType(type){if(type=='custom'){map.setMapType(fs_map_type);if(map.getZoom()==2){markerManager.updateMarkers_();}}
else if(type=='streets'){map.setMapType(G_NORMAL_MAP);}
else if(type=='sat'){map.setMapType(G_SATELLITE_MAP);}
else if(type=='hybrid'){map.setMapType(G_HYBRID_MAP);}
else if(type=='physical'){map.setMapType(G_PHYSICAL_MAP);}
else map.setMapType(fs_map_type);checkPanZoomPics(map.getZoom());}
function mapLoading(type){document.getElementById('map_loading').style.display='block';var loadingTimeout=function(){document.getElementById('map_loading').style.display='none';}
setTimeout(loadingTimeout,2500);}
function airportInfoType(type){if(currentMarker!=null){currentMarker.closeLittleInfoWindow(true);}
if(type=='delay_indexes'){document.getElementById('map_legend_image').style.backgroundPosition="-0px -150px";if(document.getElementById('show_map_legend_button').style.display=='none'&&document.getElementById('no_show_map_legend_button').style.display=='none'){document.getElementById('show_map_legend_button').style.display='block';}
if(document.getElementById('map_legend').style.display=='block'){document.getElementById('map_legend_delay_index_link').style.display='block';}
default_airport_info_type='delay_indexes';}
else if(type=='faa_delays'){document.getElementById('map_legend_image').style.backgroundPosition="-300px -150px";if(document.getElementById('show_map_legend_button').style.display=='none'&&document.getElementById('no_show_map_legend_button').style.display=='none'){document.getElementById('show_map_legend_button').style.display='block';}
document.getElementById('map_legend_delay_index_link').style.display='none';default_airport_info_type='faa_delays';}
else{document.getElementById('map_legend').style.display='none';document.getElementById('show_map_legend_button').style.display='none';document.getElementById('no_show_map_legend_button').style.display='none';document.getElementById('map_legend_delay_index_link').style.display='none';default_airport_info_type='other';}
addMarkers(type,markerManager,geo_country_default);}
function correctPNG(png_id){var img=document.images[png_id];img.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+img.src+")";img.src="http://dem5xqcn61lj8.cloudfront.net/spacer.gif";}
function exchangeImg(img_id,image_url,check_zoom_level,inactive_image_url){document.images[img_id].src=image_url;if(check_zoom_level){var maxRes=17;var minRes=0;if(map.getCurrentMapType().getName()=='FlightStats'){maxRes=5;minRes=2;}
if(img_id=='map_zoom_in'&&map.getZoom()>=maxRes){document.images['map_zoom_in'].src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/zoom_in_inactive.png';document.getElementById('zoom_in').style.cursor='auto';}
else if(img_id=='map_zoom_out'&&map.getZoom()<=minRes){document.images['map_zoom_out'].src='http://dem5xqcn61lj8.cloudfront.net/GoogleMapTools/zoom_out_inactive.png';document.getElementById('zoom_out').style.cursor='auto';}}
if(xIE4Up){correctPNG(img_id);}}
function parsePanZoom(selected_value){if(selected_value!=null&&selected_value!=""){if(currentMarker!=null){currentMarker.closeLittleInfoWindow(false);}
if(debug_parsepanzoom){console.log('----->');console.log('----->');console.log('-----> selected country/region : '+selected_value);}
var values=selected_value.split(",");var region=values[0];var lat=values[1];var lng=values[2];var zoom=parseInt(values[3]);if(zoom>5){zoom=5;}
if(debug_parsepanzoom){console.log('-----> region : '+region);console.log('-----> lat : '+lat);console.log('-----> lng : '+lng);console.log('-----> zoom (corrected) : '+zoom);console.log('----->');console.log('----->');}
map.setCenter(new GLatLng(lat,lng),zoom);geo_country_default=selected_value;}}
function addMoreRegionMarkers(selected_value,passedMarkerManager){console.log('-----> testing new method...');if(selected_value!=null&&selected_value!=""&&default_airport_info_type=="delay_indexes"){if(null!=indexMarkersZ5){for(i=0;i<indexMarkersZ5.length;i++){var curZ5Marker=indexMarkersZ5[i];markerManager.removeMarker(curZ5Marker);}}
var values=selected_value.split(",");var region=values[0];var lat=values[1];var lng=values[2];var zoom=parseInt(values[3]);var addMarkers=parseInt(values[4]);var poolSize=100;if(-1!=region.lastIndexOf("us_region")){region="US";}
if(1==addMarkers){if(null==passedMarkerManager){addMoreMarkers(markerManager,region,4,poolSize);}
else{addMoreMarkers(passedMarkerManager,region,4,poolSize);}}
geo_country_default=selected_value;}}
function showLegend(show){if(show){document.getElementById('show_map_legend_button').style.display='none';document.getElementById('no_show_map_legend_button').style.display='block';document.getElementById('map_legend').style.display='block';if(default_airport_info_type=='delay_indexes'){document.getElementById('map_legend_delay_index_link').style.display='block';}}
else{document.getElementById('no_show_map_legend_button').style.display='none';document.getElementById('show_map_legend_button').style.display='block';document.getElementById('map_legend').style.display='none';if(default_airport_info_type=='delay_indexes'){document.getElementById('map_legend_delay_index_link').style.display='none';}}}
function setupGoogleMap(){if(xIE4Up){for(i=0;i<pngs_to_correct.length;i++){correctPNG(pngs_to_correct[i]);}}
if(GBrowserIsCompatible()){if(document.getElementById('map_loading')){document.getElementById('map_loading').style.display='block';}
map=new GMap2(document.getElementById("map"));map.removeMapType(G_DEFAULT_MAP_TYPES);setMapTypes();setTileOverlays(weather_tiles_url,false);parsePanZoom(geo_country_default);checkPanZoomPics(map.getZoom());markerManager=new MarkerManager(map);addMarkers(default_airport_info_type,markerManager,geo_country_default);addMapListeners();map.addMapType(G_DEFAULT_MAP_TYPES);map.addMapType(G_PHYSICAL_MAP);if(document.getElementById('map_nav_main')&&document.getElementById('map_nav_main').style.display=='none'){document.getElementById('map_nav_main').style.display='block';}
if(document.getElementById('map_loading')){setTimeout(function(){document.getElementById('map_loading').style.display='none';},3500);}}}