// Copyright iPlanit Ltd 2009 www.iplanit.ie
if(!window.RM){window.RM={}}RM.Page=function(){};RM.Page.prototype={rootElement:null,mapWidth:850,mapHeight:600,timerSB:null,mouseX:0,mouseY:0,mouseCaptured:false,mouseDragging:false,clickTimer:0,leftPan:0,topPan:0,leftMostTile:0,topMostTile:0,defaultZoom:4,zoomLevel:4,minZoom:4,maxZoom:7,minTextZoom:4,forceRefresh:false,refreshing:false,panning:false,oldWorldCanvas:null,newWorldCanvas:null,cachedTiles:null,downloadTiles:null,defaultLat:47,defaultLng:3,worldMapIndex:0,grid:null,airports:null,routes:null,highlightedRoutes:null,selectedRoute:null,airportFromId:0,airportFrom:null,point:1,lastPoints:1,totalBezierPoints:15,panAnimationLeft:0,panAnimationUp:0,offsetX:0,offsetY:0,animatingRoutes:false,tileLocations:null,tileIndex:0,primaryFontSize:7,secondaryFontSize:6,fontSizeZoomRatio:1.1,destInfoURL:"",bubbleOpen:false,bookingURL:"",bookingGetVars:"",bookingPostVars:"",bubbled:false,bubbleAirport:false,bubbleWidth:220,bubbleHeight:170,bubbleAnchorSide:"",handleLoad:function(c,d,a){this.control=c;this.rootElement=a;if($("#airportMap").length>0){if($("#mapWidth").length>0){this.mapWidth=parseInt($("#mapWidth").val())}if($("#mapHeight").length>0){this.mapHeight=parseInt($("#mapHeight").val())}if($("#minZoom").length>0&&$("#minZoom").val()>1){this.minZoom=parseInt($("#minZoom").val())}if($("#maxZoom").length>0){this.maxZoom=parseInt($("#maxZoom").val())}if($("#defaultZoom").length>0){zoomLevel=parseInt($("#defaultZoom").val());if(zoomLevel>=this.minZoom&&zoomLevel<=this.maxZoom){this.zoomLevel=zoomLevel;this.defaultZoom=zoomLevel}}if($("#defaultLat").length>0){this.defaultLat=parseInt($("#defaultLat").val())}if($("#defaultLng").length>0){this.defaultLng=parseInt($("#defaultLng").val())}if($("#primaryFontSize").length>0){this.primaryFontSize=parseInt($("#primaryFontSize").val())}if($("#secondaryFontSize").length>0){this.secondaryFontSize=parseInt($("#secondaryFontSize").val())}if($("#destInfoURL").length>0){this.destInfoURL=$("#destInfoURL").val()}if($("#bookingURL").length>0){this.bookingURL=$("#bookingURL").val()}if($("#bookingGetVars").length>0){this.bookingGetVars=$("#bookingGetVars").val()}if($("#bookingPostVars").length>0){this.bookingPostVars=$("#bookingPostVars").val()}this.startTimer(a);this.cachedTiles=new Array();this.downloadTiles=new Array();var b=$("input[name='tileLoc']");this.tileLocations=new Array();for(i=0;i<b.length;i++){this.tileLocations[i]=$(b[i]).val()}this.initRoutes(a);this.initMap(a);this.initMapControls(a);this.initEvents(a)}},startTimer:function(b){var c=b.getHost();var a="<Storyboard \n";a+=' Duration="0:0:0.1"\n';a+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" \n';a+=' x:Name="timerStoryboard">\n';a+="</Storyboard>";RM.clickTimer=0;e=c.content.createFromXaml(a);e.addEventListener("Completed",Silverlight.createDelegate(this,this.tickTock));b.resources.add(e);e.begin()},tickTock:function(a){this.clickTimer++;a.begin();if(this.panning==false){}},initZoomStoryboard:function(b,a,m,k,d,c){if(this.oldWorldCanvas!=null){var f=b.getHost();var g=f.content.findName("Page");var l="<Storyboard \n";l+=' Duration="00:00:00.5"\n';l+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" \n';l+=' x:Name="zoomStoryboard">\n';l+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="'+this.oldWorldCanvas.Name+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">\n';l+=' <SplineDoubleKeyFrame KeyTime="00:00:00.5" Value="'+d+'"/>\n';l+=" </DoubleAnimationUsingKeyFrames>\n";l+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="'+this.oldWorldCanvas.Name+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">\n';l+=' <SplineDoubleKeyFrame KeyTime="00:00:00.5" Value="'+c+'"/>\n';l+=" </DoubleAnimationUsingKeyFrames>\n";l+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="'+this.oldWorldCanvas.Name+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(TranslateTransform.X)">\n';l+=' <SplineDoubleKeyFrame KeyTime="00:00:00.5" Value="'+m+'"/>\n';l+=" </DoubleAnimationUsingKeyFrames>\n";l+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="'+this.oldWorldCanvas.Name+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(TranslateTransform.Y)">\n';l+=' <SplineDoubleKeyFrame KeyTime="00:00:00.5" Value="'+k+'"/>\n';l+=" </DoubleAnimationUsingKeyFrames>\n";l+="</Storyboard>";var h=f.content.findName("zoomStoryboard");if(h!=null){g.resources.remove(h)}h=f.content.createFromXaml(l);if(a){h.addEventListener("Completed",Silverlight.createDelegate(this,this.zoomInAnimationComplete))}else{h.addEventListener("Completed",Silverlight.createDelegate(this,this.zoomOutAnimationComplete))}g.resources.add(h);h.begin()}else{e=null}return e},initEvents:function(a){a.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(this,this.mouseDown));a.addEventListener("MouseMove",Silverlight.createDelegate(this,this.mouseMove));a.addEventListener("MouseLeftButtonUp",Silverlight.createDelegate(this,this.mouseUp));a.addEventListener("MouseLeave",Silverlight.createDelegate(this,this.mouseLeave));if($("#airportMap").addEventListener){$("#airportMap").addEventListener("DOMMouseScroll",Silverlight.createDelegate(this,this.mouseWheel),false)}window.onmousewheel=document.onmousewheel=Silverlight.createDelegate(this,this.mouseWheel)},initMap:function(b){this.forceRefresh=true;var c=this.defaultLat;var a=this.defaultLng;this.mapSetCenter(b,c,a)},initPannerSB:function(b,c,g){if(this.animatingRoutes==false&&this.refreshing==false){RM.clickTimer=10;this.panAnimationLeft=(5*c);this.panAnimationUp=(5*g);var d=b.getHost();var f=d.content.findName("Page");e=f.findName("pannerStoryboard");if(e==null){var a="<Storyboard \n";a+=' Duration="0:0:0.05"\n';a+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" \n';a+=' x:Name="pannerStoryboard">\n';a+="</Storyboard>";e=f.getHost().content.createFromXaml(a);e.addEventListener("Completed",Silverlight.createDelegate(this,this.panningComplete));f.resources.add(e)}this.panning=true;e.begin()}},panningComplete:function(a){if(this.animatingRoutes==false&&this.refreshing==false){RM.clickTimer=10;this.leftPan+=this.panAnimationLeft;this.topPan+=this.panAnimationUp;this.forceRefresh=true;this.drawTiles(this.rootElement,0,0,true);if(this.panning==true){a.begin()}}},initRoutes:function(sender){var slControl=sender.getHost();var worldCanvas=slControl.content.findName("World_"+(this.worldMapIndex));var dataLoc=$("#dataLoc").val();if(dataLoc.lastIndexOf(".zip")==(dataLoc.length-4)){var downloader=sender.getHost().createObject("downloader");var RM=this;var partName=dataLoc.split("/");partName=partName[partName.length-1].replace(/.zip/,".js");downloader.AddEventListener("Completed",function(){var data=eval("("+downloader.GetResponseText(partName)+")");RM.airports=RM.prepareAirportKeys(data.airports);RM.airports=RM.prepareAirportPositions(RM.airports);var loadingMapText=slControl.content.findName("loadingMapText");loadingMapText.visibility="Collapsed";var recenterMap=slControl.content.findName("recenterMap");recenterMap.visibility="Visible";var airportsCanvas=slControl.content.findName("AirportsCanvas");RM.drawAirports(airportsCanvas,RM.airports)});downloader.AddEventListener("DownloadProgressChanged",function(){var percentage=Math.floor(downloader.downloadProgress*100);var loadingMapText=slControl.content.findName("loadingMapText");loadingMapText.Text="LOADING AIRPORTS - "+percentage+"%"});downloader.open("GET",dataLoc);downloader.send()}else{var RM=this;$.getJSON($("#dataLoc").val(),function(data){RM.airports=data.airports;RM.airports=RM.prepareAirportKeys(data.airports);RM.airports=RM.prepareAirportPositions(RM.airports);var loadingMapText=slControl.content.findName("loadingMapText");loadingMapText.visibility="Collapsed";var recenterMap=slControl.content.findName("recenterMap");recenterMap.visibility="Visible";var airportsCanvas=slControl.content.findName("AirportsCanvas");RM.drawAirports(airportsCanvas,RM.airports)})}},initMapControls:function(d){var g=d.getHost();var h=g.content.findName("Page");var b="<Path \n";b+='Opacity="0.8" Fill="#FF315B8E" \n';b+='Stroke="#FF315B8E" StrokeThickness="1" Canvas.Left="0" Canvas.ZIndex="20"\n';b+='Canvas.Top="0">';b+="<Path.Data>";b+="<GeometryGroup>";b+='<RectangleGeometry Rect="0,0,30,150" />';b+='<RectangleGeometry Rect="30,0,300,30" />';b+="</GeometryGroup>";b+="</Path.Data>";b+="</Path>";e=g.content.createFromXaml(b);h.children.add(e);b="<Image \n";b+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" \n';b+=' Source="'+$("#imageLoc").val()+'zoomin.png"\n';b+=' Canvas.ZIndex="25"\n';b+=' Cursor="hand"\n';b+=' Canvas.Left="5"\n';b+=' Canvas.Top="80" />';var f=g.content.createFromXaml(b);h.children.add(f);f.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(this,this.zoomInButtonClick));f.addEventListener("MouseMove",Silverlight.createDelegate(this,this.zoomButtonOver));f.addEventListener("MouseLeave",Silverlight.createDelegate(this,this.zoomButtonOut));b="<Image \n";b+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" \n';b+=' Source="'+$("#imageLoc").val()+'zoomout.png"\n';b+=' Canvas.ZIndex="25"\n';b+=' Cursor="hand"\n';b+=' Canvas.Left="5"\n';b+=' Canvas.Top="105" />';var k=g.content.createFromXaml(b);h.children.add(k);k.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(this,this.zoomOutButtonClick));k.addEventListener("MouseMove",Silverlight.createDelegate(this,this.zoomButtonOver));k.addEventListener("MouseLeave",Silverlight.createDelegate(this,this.zoomButtonOut));b="<Image \n";b+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" \n';b+=' Source="'+$("#imageLoc").val()+'panbutton.png"\n';b+=' Canvas.ZIndex="25"\n';b+=' Cursor="hand"\n';b+=' Canvas.Left="5"\n';b+=' Canvas.Top="20" />';var c=g.content.createFromXaml(b);h.children.add(c);c.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(this,this.panButtonMouseDown));c.addEventListener("MouseMove",Silverlight.createDelegate(this,this.zoomButtonOver));c.addEventListener("MouseLeave",Silverlight.createDelegate(this,this.zoomButtonOut));c.addEventListener("MouseLeftButtonUp",Silverlight.createDelegate(this,this.panButtonMouseUp));b="<TextBlock \n";b+=' x:Name="loadingMapText"\n';b+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';b+=' Canvas.ZIndex="30" Cursor="Hand"\n';b+=' Canvas.Left="150" Canvas.Top="12" Height="12" TextWrapping="NoWrap" \n';b+=' Foreground="#ffffff" FontFamily="Verdana" FontSize="10" FontWeight="Bold" Text="LOADING AIRPORTS - 0%">\n';b+="</TextBlock>";loadingMapText=g.content.createFromXaml(b);h.children.add(loadingMapText);b="<TextBlock \n";b+=' x:Name="showAllAirports"\n';b+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';b+=' Canvas.ZIndex="30" Cursor="Hand"\n';b+=' Canvas.Left="150" Canvas.Top="3" Height="12" TextWrapping="NoWrap" Visibility="Collapsed"\n';b+=' Foreground="#ffffff" FontFamily="Verdana" FontSize="10" FontWeight="Bold" Text="SHOW ALL AIRPORTS >>">\n';b+="</TextBlock>";showAllAirports=g.content.createFromXaml(b);h.children.add(showAllAirports);RM=this;showAllAirports.addEventListener("MouseLeftButtonDown",function(n,m){RM.clickTimer=10;RM.airportFromId=0;RM.airportFrom=null;g=n.getHost();var o=g.content.findName("AirportsCanvas");RM.drawAirports(o,RM.airports);var l=g.content.findName("RoutesCanvas");l.Children.Clear();showAllAirports.visibility="Collapsed"});b="<TextBlock \n";b+=' x:Name="recenterMap"\n';b+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';b+=' Canvas.ZIndex="30" Cursor="Hand"\n';b+=' Canvas.Left="150" Canvas.Top="15" Height="12" TextWrapping="NoWrap" Visibility="Collapsed"\n';b+=' Foreground="#ffffff" FontFamily="Verdana" FontSize="10" FontWeight="Bold" Text="RESET MAP">\n';b+="</TextBlock>";recenterMap=g.content.createFromXaml(b);h.children.add(recenterMap);RM=this;recenterMap.addEventListener("MouseLeftButtonDown",function(o,n){if(RM.animatingRoutes==false&&RM.refreshing==false){RM.clickTimer=10;RM.zoomLevel=RM.defaultZoom;var q=RM.getMapSize(RM.zoomLevel);var p=g.content.findName("AirportsCanvas");var l=g.content.findName("RoutesCanvas");l.Visibility="Visible";RM.drawAirports(p,RM.airports);if(RM.airportFromId!=0&&RM.animatingRoutes==false){RM.animatingRoutes=false;var m="z_"+RM.zoomLevel;RM.drawRoutes(l,RM.airportFrom.zoomRoutes[m]);if(RM.zoomLevel>=RM.minTextZoom){showAllAirports=g.content.findName("showAllAirports");showAllAirports.Visibility="Visible"}}RM.refreshing=false;RM.mapSetCenter(o,RM.defaultLat,RM.defaultLng)}});b="<Image \n";b+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" \n';b+=' Source="images/map_info.png"\n';b+=' Canvas.ZIndex="25"\n';b+=' Cursor="hand"\n';b+=' Canvas.Left="'+(this.mapWidth-20)+'"\n';b+=' Canvas.Top="'+(this.mapHeight-20)+'" />';var a=g.content.createFromXaml(b);h.children.add(a);a.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(this,this.poweredByButtonClick))},poweredByButtonClick:function(b,a){window.open("http://www.iplanit.ie/mapping")},zoomInButtonClick:function(b,a){this.mapZoomIn(b,(this.mapWidth/2),(this.mapHeight/2));RM.clickTimer=10},zoomOutButtonClick:function(b,a){this.mapZoomOut(b,(this.mapWidth/2),(this.mapHeight/2));RM.clickTimer=10},zoomButtonOver:function(b,a){},zoomButtonOut:function(b,a){},panButtonMouseDown:function(f,c){this.panning=true;var a=c.getPosition(null);var g=0;var h=0;var d=a.x-f["Canvas.Left"]-(f.Width/2);var b=a.y-f["Canvas.Top"]-(f.Height/2);if(d>5){g=-1}else{if(d<-5){g=1}}if(b>5){h=-1}else{if(b<-5){h=1}}this.panning=true;this.initPannerSB(f,g,h)},panButtonMouseUp:function(b,a){this.panning=false},mouseDown:function(b,a){this.mouseDragging=true;if(RM.clickTimer<3&&this.bubbled==false&&(b.Name=="World_"+this.worldMapIndex||b.Name=="Page")){this.mapDoubleClick(b,a)}else{RM.clickTimer=0}this.mouseX=a.getPosition(null).x;this.mouseY=a.getPosition(null).y;this.bubbled=false},mouseMove:function(g,d){if(this.mouseDragging==true&&this.refreshing==false&&this.mouseCaptured==false){var b=d.getPosition(null);var a=b.x;var h=b.y;if(a>0&&h>0&&a<this.mapWidth&&h<this.mapHeight){var f=this.mouseX-a;var c=this.mouseY-h;this.drawTiles(g,f,c,true)}else{this.mouseDragging=false;this.mouseUp(g,d)}this.mouseX=a;this.mouseY=h}},mouseUp:function(b,a){this.mouseDragging=false},mouseLeave:function(b,a){this.mouseDragging=false},mouseWheel:function(a){var b=0;if(!a){a=window.event}if(a.wheelDelta){b=a.wheelDelta;if(window.opera){b=-b}}else{if(a.detail){b=-a.detail}}if(b){if(b>0){this.mapZoomIn(this.rootElement,(this.mapWidth/2),(this.mapHeight/2))}else{this.mapZoomOut(this.rootElement,(this.mapWidth/2),(this.mapHeight/2))}}if(a.preventDefault){a.preventDefault()}a.returnValue=false},airportMarkerMouseDown:function(c,a){this.bubbleClose(c,a);if(RM.clickTimer<3){this.airportMarkerMouseDownDouble(c,a)}else{if(this.animatingRoutes==false&&this.refreshing==false){this.bubbled=c.Name;var b=c.Name.toString().split("_");if(c.Name.indexOf("bubbleLink")>-1){this.airportFromId=0}b=b[b.length-1];found=false;if(this.airportFromId!=0){var m=this.airportFrom.routes;for(i=0;i<m.length;i++){var l=m[i];if(l.airportToId==b){airport=this.getAirportById(b);airportPosition=airport.pos["z_"+this.zoomLevel];var d=c.getHost();var o=d.content.findName("airportBubbleCanvas");var k=d.content.findName("AirportsCanvas");if(o!=null){k.Children.Remove(o)}this.drawBubble(k,airport,"airportBubbleCanvas",new Array(airportPosition.pixelX,airportPosition.pixelY));i=m.length;found=true}}}if(!found){this.airportFromId=b;this.airportFrom=this.getAirportById(this.airportFromId);var f=c.getHost().content.findName("showAllAirports");f.visibility="Visible";var n="z_"+this.zoomLevel;this.airports=this.linkAirportsToRoutes(this.airports,this.airportFrom.zoomRoutes[n]);this.animatingRoutes=true;var d=c.getHost();var k=d.content.findName("AirportsCanvas");k=this.drawAirports(k,this.airports);var h=d.content.findName("RoutesCanvas");h=this.drawAirports(h,this.airports);this.drawRoutes(h,this.airportFrom.zoomRoutes[n]);var g=c.getHost().content.findName("AirportMarkerStoryboard_airport_"+b);if(g!=null){g.begin()}}}RM.clickTimer=0}},airportMarkerMouseDownDouble:function(b,a){if(this.airportFrom!=null){var d=b.Name.toString().split("_");d=d[d.length-1];airport=this.getAirportById(d);if(airport!=null){this.cancelDrawRoutes();var c=this.destInfoURL.replace(/\{iata\}/,airport.iata);if($("#level2").length>0){level2=$("#level2").val();xt_med("F",level2,"MAP::View::"+airport.iata,"N",c)}window.location=c;RM.clickTimer=10}}},airportMarkerMouseOver:function(b,a){if(this.animatingRoutes==false&&this.refreshing==false){var g=b.Name.toString().split("_");g=g[g.length-1];airport=this.getAirportById(g);airportPosition=airport.pos["z_"+this.zoomLevel];var f=b.getHost();var d=f.content.findName("airportBubbleCanvas");var c=f.content.findName("AirportsCanvas");if(d!=null){c.Children.Remove(d)}this.drawBubble(c,airport,"airportBubbleCanvas",new Array(airportPosition.pixelX,airportPosition.pixelY))}},mapDoubleClick:function(c,b){var a=b.getPosition(null).x;var d=b.getPosition(null).y;this.mapZoomIn(c,a,d)},mapZoomIn:function(b,a,h){if(this.zoomLevel<this.maxZoom&&this.animatingRoutes==false&&this.refreshing==false){this.refreshing=true;var g=(((this.mapWidth/2)-a)*2)-(this.mapWidth/2);var f=(((this.mapHeight/2)-h)*2)-(this.mapHeight/2);g=g+(this.leftPan%256);f=f+(this.topPan%256);this.leftPan=((this.leftPan*2*-1)+(a*2)-(this.mapWidth/2))*-1;this.topPan=((this.topPan*2*-1)+(h*2)-(this.mapHeight/2))*-1;this.zoomLevel++;var c=this.getMapSize(this.zoomLevel);if(this.leftPan>0){this.leftPan=0}else{if(this.leftPan<(c-this.mapWidth)*-1){this.leftPan=(c-this.mapWidth)*-1}}if(this.topPan>0){this.topPan=0}else{if(this.topPan<(c-this.mapHeight)*-1){this.topPan=(c-this.mapWidth)*-1}}if(this.airportFromId!=0){this.airports=this.linkAirportsToRoutes(this.airports,this.airportFrom.routes)}this.forceRefresh=true;this.drawTiles(b,0,0,false);var d=b.getHost();routesCanvas=d.content.findName("RoutesCanvas");routesCanvas.Visibility="Collapsed";this.initZoomStoryboard(b,true,g,f,2,2)}},zoomInAnimationComplete:function(c){var h=c.getHost();var k=h.content.findName("Page");this.swapCanvas(k,this.oldWorldCanvas,this.newWorldCanvas);var g=this.getMapSize(this.zoomLevel);var f=h.content.findName("AirportsCanvas");var a=h.content.findName("RoutesCanvas");a.Visibility="Visible";this.drawAirports(f,this.airports);if(this.airportFromId!=0&&this.animatingRoutes==false){this.animatingRoutes=false;var b="z_"+this.zoomLevel;this.drawRoutes(a,this.airportFrom.zoomRoutes[b]);if(this.zoomLevel>=this.minTextZoom){showAllAirports=h.content.findName("showAllAirports");showAllAirports.Visibility="Visible"}}var d=h.content.findName("airportBubbleCanvas");if(d!=null&&this.bubbleAirport!=false){airportPosition=this.bubbleAirport.pos["z_"+this.zoomLevel];bubblePos=this.bubblePosition(this.bubbleAnchorSide,new Array(airportPosition.pixelX,airportPosition.pixelY));d["Canvas.Left"]=bubblePos[0];d["Canvas.Top"]=bubblePos[1]}this.refreshing=false},mapZoomOut:function(b,k,f){if(this.zoomLevel>this.minZoom&&this.animatingRoutes==false&&this.refreshing==false){this.refreshing=true;var l=(((this.mapWidth/2)-k)*2)+(this.mapWidth/4);var g=(((this.mapHeight/2)-f)*2)+(this.mapHeight/4);var h=(this.leftPan%256)/2;var a=(this.topPan%256)/2;var l=l-h;var g=g-a;this.leftPan=((this.leftPan/2*-1)+(k/2)-(this.mapWidth/2))*-1;this.topPan=((this.topPan/2*-1)+(f/2)-(this.mapHeight/2))*-1;this.zoomLevel--;var d=this.getMapSize(this.zoomLevel);if(this.leftPan>0){this.leftPan=0}else{if(this.leftPan<(d-this.mapWidth)*-1){this.leftPan=d-this.mapWidth}}if(this.topPan>0){this.topPan=0}else{if(this.topPan<(d-this.mapHeight)*-1){this.topPan=d-this.mapHeight}}if(this.airportFromId!=0){this.airports=this.linkAirportsToRoutes(this.airports,this.airportFrom.routes)}var c=b.getHost();routesCanvas=c.content.findName("RoutesCanvas");routesCanvas.Visibility="Collapsed";this.forceRefresh=true;this.drawTiles(b,0,0,false);this.initZoomStoryboard(b,true,l,g,0.5,0.5)}},zoomOutAnimationComplete:function(c){var h=c.getHost();var k=h.content.findName("Page");this.swapCanvas(k,this.oldWorldCanvas,this.newWorldCanvas);var g=this.getMapSize(this.zoomLevel);var f=h.content.findName("AirportsCanvas");var a=h.content.findName("RoutesCanvas");a.Visibility="Visible";this.drawAirports(f,this.airports);if(this.airportFromId!=0&&this.animatingRoutes==false){this.animatingRoutes=false;var b="z_"+this.zoomLevel;this.drawRoutes(a,this.airportFrom.zoomRoutes[b]);if(this.zoomLevel<this.minTextZoom){showAllAirports=h.content.findName("showAllAirports");showAllAirports.Visibility="Collapsed"}}var d=h.content.findName("airportBubbleCanvas");if(d!=null&&this.bubbleAirport!=false){airportPosition=this.bubbleAirport.pos["z_"+this.zoomLevel];d["Canvas.Left"]=airportPosition.pixelX;d["Canvas.Top"]=airportPosition.pixelY}this.refreshing=false},mapSetCenter:function(b,d,a){this.forceRefresh=true;var c=this.latLngToPixels(d,a,this.zoomLevel);this.leftPan=0-c[0]+(this.mapWidth/2);this.topPan=0-c[1]+(this.mapHeight/2);this.drawTiles(b,0,0,true)},radiansToDegrees:function(a){return(a/Math.PI*180)},degreesToRadians:function(a){return(a*Math.PI/180)},pixelsToLatLng:function(c,b,f){c=c/Math.pow(2,f);b=b/Math.pow(2,f);var a=((c)*360/256)-180;var d=this.radiansToDegrees(2*Math.atan(Math.exp(Math.PI*(1-2*(b)/256)))-Math.PI*0.5);return new Array(d,a)},latLngToPixels:function(d,b,f){var c=(b+180)*256/360;var a=(256*0.5)*(1-(Math.log(Math.tan(this.degreesToRadians(d)*0.5+Math.PI*0.25)))/Math.PI);return new Array(c*Math.pow(2,f),a*Math.pow(2,f))},getMapSize:function(a){return 256<<a},drawTiles:function(c,o,n,b){this.leftPan=this.leftPan-o;this.topPan=this.topPan-n;var f=this.getMapSize(this.zoomLevel);f=(f*-1);var d=c.getHost();var r=d.content.findName("World_"+this.worldMapIndex);if((this.leftPan<=0&&(this.leftPan-this.mapWidth)>f&&this.topPan<=0&&(this.topPan-this.mapHeight)>f)||this.forceRefresh==true){var m=Math.floor(((this.leftPan*-1))/256);var a=Math.floor(((this.topPan*-1))/256);if(m!=this.leftMostTile||a!=this.topMostTile||this.forceRefresh==true){this.forceRefresh=false;var p=Math.ceil(this.mapWidth/256)+1;var g=Math.ceil(this.mapHeight/256)+1;if(this.worldMapIndex==0){this.worldMapIndex=1}else{this.worldMapIndex=0}var q="<Canvas \n";q+=' xmlns="http://schemas.microsoft.com/client/2007"\n';q+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';q+=' x:Name="World_'+(this.worldMapIndex)+'"\n';q+=' Canvas.Left="'+(this.leftPan%256)+'" Canvas.Top="'+(this.topPan%256)+'"\n';q+=' Background="#E9E7D4" Width="1024" Height="1024"\n';q+=' Canvas.ZIndex="1"';q+=" >";q+=" <Canvas.RenderTransform>\n";q+=" <TransformGroup>\n";q+=' <ScaleTransform ScaleX="1" ScaleY="1"/>\n';q+=' <TranslateTransform X="0" Y="0"/>\n';q+=" </TransformGroup>\n";q+=" </Canvas.RenderTransform>\n";q+="</Canvas>";var l=d.content.createFromXaml(q);x=1;y=1;for(z=0;z<36;z++){var k=this.getQuadKey(x+m,y+a,this.zoomLevel);this.drawTile(l,k,x,y);if(z==0||z==6|z==7||z==8||z==20||z==21||z==22||z==23||z==24){x++}else{if(z==1||z==9||z==10||z==11||z==25||z==26||z==27||z==28||z==29){y++}else{if(z==2||z==3||z==12||z==13||z==14||z==15||z==30||z==31||z==32||z==33||z==34){x--}else{if(z==4||z==5||z==16||z==17||z==18||z==19){y--}}}}}this.newWorldCanvas=l;this.oldWorldCanvas=r;if(b){var h=d.content.findName("Page");this.swapCanvas(h,r,l)}this.leftMostTile=m;this.topMostTile=a;this.realignCanvas(r,f,false)}else{this.realignCanvas(r,f,true)}}else{this.realignCanvas(r,f,true)}},swapCanvas:function(c,b,a){if(b!=null){c.Children.Remove(b)}if(a!=null){if(c.findName(a.Name)!=null){c.Children.Remove(a)}c.Children.Add(a)}},realignCanvas:function(c,f,b){if(c!=null){var h=c.getHost();var d=h.content.findName("AirportsCanvas");var a=h.content.findName("RoutesCanvas");if(c!=null){if(this.leftPan<=0&&(this.leftPan-this.mapWidth)>=f){var k=this.leftPan%256;if(b){c["Canvas.Left"]=k}d["Canvas.Left"]=this.leftPan;a["Canvas.Left"]=this.leftPan}else{if(this.leftPan>0){this.leftPan=0;if(b){c["Canvas.Left"]=0}d["Canvas.Left"]=0;a["Canvas.Left"]=0}else{if(this.leftPan-this.mapWidth>f){this.leftPan=f-this.mapWidth;if(b){c["Canvas.Left"]=1024-this.mapWidth}d["Canvas.Left"]=this.leftPan;a["Canvas.Left"]=this.leftPan}}}if(this.topPan<=0&&(this.topPan-this.mapHeight)>=f){var g=this.topPan%256;if(b){c["Canvas.Top"]=g}d["Canvas.Top"]=this.topPan;a["Canvas.Top"]=this.topPan}else{if(this.topPan>0){this.topPan=0;if(b){c["Canvas.Top"]=0}d["Canvas.Top"]=0;a["Canvas.Top"]=0}else{if(this.topPan-this.mapHeight>f){this.topPan=f-this.mapHeight;if(b){c["Canvas.Top"]=1024-this.mapHeight}d["Canvas.Top"]=this.topPan;d["Canvas.Top"]=this.topPan}}}}}},createGrid:function(){var b=new Array();var c=Math.ceil(this.mapWidth/256)+1;for(x=0;x<c;x++){b[x]=new Array();var a=Math.ceil(this.mapHeight/256)+1;for(y=0;y<a;y++){b[x][y]=0}}return b},drawTile:function(f,d,b,h){var c=this.getCachedTile(d);if(c==null){c=this.tileLocations[this.tileIndex].replace(/{quadkey}/,d);this.tileIndex++;if(this.tileIndex==this.tileLocations.length){this.tileIndex=0}}var a="<Image \n";a+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" \n';a+=' Source="'+c+'"\n';a+=' Canvas.Left="'+(b*256)+'"\n';a+=' Canvas.Top="'+(h*256)+'" />';var g=f.getHost().content.createFromXaml(a);if(g!=null){f.children.add(g)}this.addTileToCache(d,c)},addTileToDownloads:function(a,b){this.downloadTiles["d_"+a]=b},removeTileFromDownloads:function(a){this.downloadTiles["d_"+a]=false},isTileDownloading:function(a){if(this.downloadTiles["d_"+a]!=false){return true}else{return false}},trimTileDownloads:function(){var b=Math.floor(((this.leftPan*-1))/256);var d=Math.floor(((this.topPan*-1))/256);for(var h in this.downloadTiles){var g=this.downloadTiles[h];if(g!=false&&h.indexOf("d_")==0){var a=h.replace(/d_/,"");tileXY=this.getTileXY(a);var f=tileXY[0];var c=tileXY[1];if(f<b||f>(b+4)||c<d||c>(d+4)){g.abort()}}}},addTileToCache:function(b,a){this.cachedTiles["t_"+b]=a},getCachedTile:function(a){return this.cachedTiles["t_"+a]},isTileCached:function(a){if(this.cachedTiles["t_"+a]!=null){return true}else{return false}},getQuadKey:function(d,c,f){var b="";for(i=f;i>0;i--){var g="0";var a=1<<(i-1);if((d&a)!=0){g++}if((c&a)!=0){g++;g++}b+=g.toString()}return b},getTileXY:function(k){var b=k.length;var f="";var g=0;while(g<b){var c=k.substr(b-g-1,1);if(c=="3"){f="11"+f}if(c=="2"){f="10"+f}if(c=="1"){f="01"+f}if(c=="0"){f="00"+f}g++}var d=f;var l="";var h="";var g=0;while(g<f.length){d=f.substr(f.length-g-1,1);if((g/2)-Math.floor(g/2)==0){l=d+l}else{h=d+h}g++}var a=0;var m=0;var g=0;while(g<b){d=l.substr(l.length-g-1,1);a=a+(parseInt(d)*Math.pow(2,g));g++}var g=0;while(g<b){d=h.substr(h.length-g-1,1);m=m+(parseInt(d)*Math.pow(2,g));g++}return new Array(a,m)},prepareAirportKeys:function(a){var c=new Array();if(a!=null){for(i=0;i<a.length;i++){var b=a[i];c["a_"+b.airportId]=b}}return c},prepareAirportPositions:function(d){if(d!=null){var k=new Array();for(var c in d){var h=d[c];h.latitude=parseFloat(h.latitude);h.longitude=parseFloat(h.longitude);h.showAirportsName=parseInt(h.showAirportsName);var f=0;h.pos=new Array();for(f=this.minZoom;f<=this.maxZoom;f++){var a="z_"+f;var b=this.latLngToPixels(h.latitude,h.longitude,f);var g=new Array();g.pixelX=b[0];g.pixelY=b[1];if(h.airportNameXPos==0&&h.airportNameXPos==0){g.namePixelX=g.pixelX+f;g.namePixelY=g.pixelY}else{g.namePixelX=g.pixelX+parseFloat(h.airportNameXPos);g.namePixelY=g.pixelY+parseFloat(h.airportNameYPos)}h.pos[a]=g}k[c]=h}for(var c in d){var h=d[c];var f=0;h.zoomRoutes=new Array();for(f=this.minZoom;f<=this.maxZoom;f++){var a="z_"+f;h.zoomRoutes[a]=this.prepareRoutes(h,h.routes,f,k)}k[c]=h}return k}return d},prepareRoutes:function(a,k,c,b){var m=new Array();if(k!=null){var d=0;for(d=0;d<k.length;d++){var h=k[d];if(b["a_"+h.airportToId]!=null){newRoute=new Array();newRoute.routesId=h.routesId;newRoute.airportToId=h.airportToId;newRoute.colour=h.colour;var l="z_"+c;var g=b["a_"+h.airportToId].pos[l];newRoute.toPixelX=g.pixelX;newRoute.toPixelY=g.pixelY;newRoute.via1x=parseFloat(h.via1x);newRoute.via1y=parseFloat(h.via1y);newRoute.via2x=parseFloat(h.via2x);newRoute.via2y=parseFloat(h.via2y);var f=this.latLngToPixels(newRoute.via1x,newRoute.via1y,c);newRoute.via1PixelX=f[0];newRoute.via1PixelY=f[1];f=this.latLngToPixels(newRoute.via2x,newRoute.via2y,c);newRoute.via2PixelX=f[0];newRoute.via2PixelY=f[1];m[d]=newRoute}else{}}}return m},linkAirportsToRoutes:function(f,a){for(var d in f){var g=f[d];g.isToAirport=false;if(g.airportId==this.airportFromId){g.isFromAirport=true}}var c=0;for(c=0;c<a.length;c++){var b=a[c];g=this.getAirportById(b.airportToId);g.isToAirport=true}return f},drawAirports:function(c,b){if(b!=null){for(var a in b){var d=b[a];this.drawAirportMarker(c,"airport_"+d.airportId,d)}}return c},drawAirportMarker:function(o,n,b){airportMarker=o.findName(n);if(airportMarker==null){var s=b.pos["z_"+this.zoomLevel];var d=o.getHost();if(s.pixelX>0&&s.pixelY>0){var r="<Canvas \n";if(b.isHub==0){r+=' xmlns="http://schemas.microsoft.com/client/2007"\n';r+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';r+=' x:Name="'+n+'"\n';r+=' Canvas.Left="'+(s.pixelX-10)+'" Canvas.Top="'+(s.pixelY-10)+'"\n';if(b.showAirportsMarker==false){r+=' Visibility="Collapsed"\n'}r+=' Width="20" Height="20">\n';r+=" <Canvas.Resources>\n";r+=' <Storyboard x:Name="AirportMarkerStoryboard_'+n+'" RepeatBehavior="Forever">\n';r+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">\n';r+=' <SplineDoubleKeyFrame KeyTime="00:00:01" Value="2.5"/>\n';r+=" </DoubleAnimationUsingKeyFrames>\n";r+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">\n';r+=' <SplineDoubleKeyFrame KeyTime="00:00:01" Value="2.5"/>\n';r+=" </DoubleAnimationUsingKeyFrames>\n";r+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">\n';r+=' <SplineDoubleKeyFrame KeyTime="00:00:01" Value="0"/>\n';r+=" </DoubleAnimationUsingKeyFrames>\n";r+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">\n';r+=' <SplineDoubleKeyFrame KeyTime="00:00:01" Value="0"/>\n';r+=" </DoubleAnimationUsingKeyFrames>\n";r+=' <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">\n';r+=' <SplineColorKeyFrame KeyTime="00:00:01" Value="#19FFFF00"/>\n';r+=" </ColorAnimationUsingKeyFrames>\n";r+=' <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(Shape.Stroke).(SolidColorBrush.Color)">\n';r+=' <SplineColorKeyFrame KeyTime="00:00:01" Value="#19000000"/>\n';r+=" </ColorAnimationUsingKeyFrames>\n";r+=" </Storyboard>\n";r+=" </Canvas.Resources>\n";r+=' <Ellipse Width="8" Height="8" Fill="#FFFFFF00" Stroke="#FF000000" Canvas.Left="6" Canvas.Top="6" x:Name="Ellipse_'+n+'" RenderTransformOrigin="0.5,0.5">\n';r+=" <Ellipse.RenderTransform>\n";r+=" <TransformGroup>\n";r+=' <ScaleTransform ScaleX="1" ScaleY="1"/>\n';r+=' <SkewTransform AngleX="0" AngleY="0"/>\n';r+=' <RotateTransform Angle="0"/>\n';r+=' <TranslateTransform X="0" Y="0"/>\n';r+=" </TransformGroup>\n";r+=" </Ellipse.RenderTransform>\n";r+=" </Ellipse>\n";r+=' <Ellipse Width="8" Height="8" Fill="#FFFFFF00" Stroke="#FF000000" Canvas.Left="6" Canvas.Top="6" x:Name="Ellipse1_'+n+'" Cursor="Hand">\n';r+=" </Ellipse>\n"}else{r+=' xmlns="http://schemas.microsoft.com/client/2007"\n';r+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';r+=' x:Name="'+n+'"\n';r+=' Canvas.Left="'+(s.pixelX-10)+'" Canvas.Top="'+(s.pixelY-10)+'"\n';if(b.showAirportsMarker==false){r+=' Visibility="Collapsed"\n'}r+=' Width="20" Height="20">\n';r+=" <Canvas.Resources>\n";r+=' <Storyboard x:Name="AirportMarkerStoryboard_'+n+'" RepeatBehavior="Forever">\n';r+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">\n';r+=' <SplineDoubleKeyFrame KeyTime="00:00:01" Value="2.5"/>\n';r+=" </DoubleAnimationUsingKeyFrames>\n";r+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">\n';r+=' <SplineDoubleKeyFrame KeyTime="00:00:01" Value="2.5"/>\n';r+=" </DoubleAnimationUsingKeyFrames>\n";r+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">\n';r+=' <SplineDoubleKeyFrame KeyTime="00:00:01" Value="0"/>\n';r+=" </DoubleAnimationUsingKeyFrames>\n";r+=' <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">\n';r+=' <SplineDoubleKeyFrame KeyTime="00:00:01" Value="0"/>\n';r+=" </DoubleAnimationUsingKeyFrames>\n";r+=' <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">\n';r+=' <SplineColorKeyFrame KeyTime="00:00:01" Value="#33FF0000"/>\n';r+=" </ColorAnimationUsingKeyFrames>\n";r+=' <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Ellipse_'+n+'" Storyboard.TargetProperty="(Shape.Stroke).(SolidColorBrush.Color)">\n';r+=' <SplineColorKeyFrame KeyTime="00:00:01" Value="#22000000"/>\n';r+=" </ColorAnimationUsingKeyFrames>\n";r+=" </Storyboard>\n";r+=" </Canvas.Resources>\n";r+=' <Ellipse Width="8" Height="8" Fill="#FFFF0000" Stroke="#FF000000" Canvas.Left="6" Canvas.Top="6" x:Name="Ellipse_'+n+'" RenderTransformOrigin="0.5,0.5">\n';r+=" <Ellipse.RenderTransform>\n";r+=" <TransformGroup>\n";r+=' <ScaleTransform ScaleX="1" ScaleY="1"/>\n';r+=' <SkewTransform AngleX="0" AngleY="0"/>\n';r+=' <RotateTransform Angle="0"/>\n';r+=' <TranslateTransform X="0" Y="0"/>\n';r+=" </TransformGroup>\n";r+=" </Ellipse.RenderTransform>\n";r+=" </Ellipse>\n";r+=' <Rectangle Width="8" Height="8" Fill="#FFFF0000" Stroke="#FF000000" Canvas.Left="6" Canvas.Top="6" x:Name="Ellipse1_'+n+'" Cursor="Hand">\n';r+=" </Rectangle>\n"}r+=" </Canvas>";var g=d.content.createFromXaml(r);o.children.add(g);g.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(this,this.airportMarkerMouseDown))}if(this.zoomLevel>=this.minTextZoom&&b.showAirportsName==true&&s.namePixelX>0&&s.namePixelY>0){var c=b.airportName.toUpperCase();var k="";var a=c.indexOf("(");if(a>-1){k=c.substr(a);c=c.substr(0,a)}else{var a=c.indexOf("|");if(a>-1){k=c.substr(a);if(k.length>1){k=k.substr(1)}c=c.substr(0,a)}}r="<TextBlock \n";r+=' x:Name="airportmarkerlabel_'+n+'"\n';r+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';r+=' Cursor="Hand"\n';r+=' Canvas.Left="1" Canvas.Top="1"\n';if(b.isHub==1){r+=' Foreground="#ffffff"'}else{r+=' Foreground="#191970"'}var h=1;if(this.zoomLevel!=4){h=(this.zoomLevel-4)*this.fontSizeZoomRatio}var f=h*this.primaryFontSize;r+=' FontFamily="Verdana" FontSize="'+f+'" FontWeight="Bold"\n';r+=' Height="10" TextWrapping="Wrap" Text="'+c+'">\n';r+="</TextBlock>";var q=d.content.createFromXaml(r);var m=this.primaryFontSize+4;airportLabelWidth=q.actualWidth;if(k.length>0){var p=h*this.secondaryFontSize;m+=p+1;r="<TextBlock \n";r+=' x:Name="airportmarkerlabel1_'+n+'"\n';r+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';r+=' Cursor="Hand"\n';r+=' Canvas.Left="1" Canvas.Top="'+(f+2)+'"\n';if(b.isHub==1){r+=' Foreground="#ffffff"'}else{r+=' Foreground="#191970"'}r+=' FontFamily="Verdana" FontSize="'+p+'" FontWeight="Bold"\n';r+=' Height="10" TextWrapping="Wrap" Text="'+k+'">\n';r+="</TextBlock>";var l=d.content.createFromXaml(r);if(airportLabelWidth<l.actualWidth){airportLabelWidth=l.actualWidth}if(q.actualWidth>l.actualWidth){l["Canvas.Left"]=((q.actualWidth-l.actualWidth)/2)}else{l["Canvas.Left"]=1;q["Canvas.Left"]=((l.actualWidth-q.actualWidth)/2)}}r='<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"';r+=' x:Name="airportmarker_'+n+'"\n';if(b.showAirportsName==false||b.excludedZoom.indexOf(this.zoomLevel.toString())>-1){r+=' Visibility="Collapsed"\n'}xamlStringRectangle="<Rectangle";xamlStringRectangle+=' x:Name="airportmarkerrect_'+n+'"\n';xamlStringRectangle+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';if(b.isHub==1){xamlStringRectangle+=' Stroke="#191970" Fill="#ff0000"\n';r+=' Canvas.ZIndex="9"\n'}else{xamlStringRectangle+=' Stroke="Transparent" Fill="Transparent"\n'}r+=' Canvas.Left="'+(s.namePixelX-((airportLabelWidth+4)/2))+'" Canvas.Top="'+(s.namePixelY-(m/2))+'"\n';r+=' Width="'+(airportLabelWidth+4)+'" Height="'+m+'"\n';xamlStringRectangle+=' Width="'+(airportLabelWidth+4)+'" Height="'+m+'"\n';r+="/>";xamlStringRectangle+="/>";g=d.content.createFromXaml(r);eRect=d.content.createFromXaml(xamlStringRectangle);g.children.add(eRect);g.children.add(q);if(l!=null){g.children.add(l)}o.children.add(g);g.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(this,this.airportMarkerMouseDown))}}else{var h=1;if(this.zoomLevel!=4){h=Math.pow(this.fontSizeZoomRatio,(this.zoomLevel-4))}if(this.airportFromId!=b.airportId){airportMarkerAnimSB=o.findName("AirportMarkerStoryboard_"+n);if(airportMarkerAnimSB){airportMarkerAnimSB.Stop()}}var s=b.pos["z_"+this.zoomLevel];airportMarker["Canvas.Left"]=(s.pixelX-(10*h));airportMarker["Canvas.Top"]=(s.pixelY-(10*h));airportMarker.Height=(20*h);airportMarker.Width=(20*h);airportMarkerEllipse=o.findName("Ellipse_"+n);airportMarkerEllipse1=o.findName("Ellipse1_"+n);airportMarkerEllipse.Height=8*h;airportMarkerEllipse.Width=8*h;airportMarkerEllipse1.Height=8*h;airportMarkerEllipse1.Width=8*h;if(this.airportFromId!=0){if(b.isToAirport==true||b.airportId==this.airportFromId){airportMarker.Opacity="1"}else{airportMarker.Opacity="0.5"}}else{airportMarker.Opacity="1"}airportMarkerTextLabel=o.findName("airportmarkerlabel_"+n);airportMarkerTextLabel1=o.findName("airportmarkerlabel1_"+n);airportMarkerTextRect=o.findName("airportmarkerrect_"+n);airportMarkerTextCanvas=o.findName("airportmarker_"+n);if(airportMarkerTextLabel!=null&&airportMarkerTextRect!=null&&airportMarkerTextCanvas!=null){if(this.airportFromId!=0){airportMarkerTextLabel.Foreground="#191970";if(airportMarkerTextLabel1!=null){airportMarkerTextLabel1.Foreground="#191970"}}else{if(b.isHub==1){airportMarkerTextLabel.Foreground="#ffffff";if(airportMarkerTextLabel1!=null){airportMarkerTextLabel1.Foreground="#ffffff"}}else{airportMarkerTextLabel.Foreground="#191970";if(airportMarkerTextLabel1!=null){airportMarkerTextLabel1.Foreground="#191970"}}}var m=0;if(this.zoomLevel>=this.minTextZoom){var c=b.airportName.toUpperCase();var k="";var a=c.indexOf("(");if(a>-1){k=c.substr(a);c=c.substr(0,a)}else{var a=c.indexOf("|");if(a>-1){k=c.substr(a);if(k.length>1){k=k.substr(1)}c=c.substr(0,a)}}airportMarkerTextLabel.Text=c;m=h*this.primaryFontSize;airportMarkerTextLabel.FontSize=h*this.primaryFontSize;if(airportMarkerTextLabel1!=null){airportMarkerTextLabel1.Text=k;airportMarkerTextLabel1.FontSize=h*this.secondaryFontSize;m+=1+(h*this.secondaryFontSize)}if(this.airportFromId!=0){if(b.airportId==this.airportFromId){if(b.airportNameHover.length>0){var c=b.airportName.toUpperCase();var k="";var a=c.indexOf("(");if(a>-1){k=c.substr(a);c=c.substr(0,a)}else{var a=c.indexOf("|");if(a>-1){k=c.substr(a);if(k.length>1){k=k.substr(1)}c=c.substr(0,a)}}airportMarkerTextLabel.Text=c;if(airportMarkerTextLabel1!=null){airportMarkerTextLabel1.Text=k}}airportMarkerTextRect.Stroke="Transparent";airportMarkerTextRect.Fill="#ffff00";airportMarkerTextCanvas["Canvas.ZIndex"]=11;airportMarkerTextCanvas.Visibility="Visible"}else{if(b.isToAirport){airportMarkerTextRect.Stroke="Transparent";airportMarkerTextRect.Fill="Transparent";airportMarkerTextCanvas.Visibility="Visible"}else{airportMarkerTextCanvas.Visibility="Collapsed"}}}else{if(b.isHub==1){airportMarkerTextRect.Stroke="#191970";airportMarkerTextRect.Fill="#ff0000";airportMarkerTextCanvas["Canvas.ZIndex"]=9;if(b.showAirportsName==true&&b.excludedZoom.indexOf(this.zoomLevel.toString())==-1){airportMarkerTextCanvas.Visibility="Visible"}else{airportMarkerTextCanvas.Visibility="Collapsed"}}else{airportMarkerTextRect.Stroke="Transparent";airportMarkerTextRect.Fill="Transparent";if(b.showAirportsName==true&&b.excludedZoom.indexOf(this.zoomLevel.toString())==-1){airportMarkerTextCanvas.Visibility="Visible"}else{airportMarkerTextCanvas.Visibility="Collapsed"}}}}else{airportMarkerTextCanvas.Visibility="Collapsed"}airportLabelWidth=airportMarkerTextLabel.actualWidth;if(airportMarkerTextLabel1!=null){if(airportLabelWidth<airportMarkerTextLabel1.actualWidth){airportLabelWidth=airportMarkerTextLabel1.actualWidth}}airportMarkerTextCanvas.Height=(m+4);airportMarkerTextCanvas.Width=(airportLabelWidth+4);airportMarkerTextRect.Height=(m+4);airportMarkerTextRect.Width=(airportLabelWidth+4);airportMarkerTextCanvas["Canvas.Left"]=(s.pixelX+(b.airportNameXPos*h))-((airportLabelWidth+4)/2);airportMarkerTextCanvas["Canvas.Top"]=(s.pixelY+(b.airportNameYPos*h))-((m+4)/2)}}},drawRoutes:function(k,l){if(l!=null){k.Children.Clear();if(this.animatingRoutes){sb=this.rootElement.findName("animSB");if(sb!=null){sb.Duration="0:0:0.05";if(l.length>40){sb.Duration="0:0:0.09"}sb.begin()}else{sb=this.createStoryboard(this.rootElement,"animSB","");sb.Duration="0:0:0.05";if(l.length>40){sb.Duration="0:0:0.09"}sb.begin();sb=k.findName("AirportMarkerStoryboard_airport_"+this.airportFromId);sb.begin()}}var m="z_"+this.zoomLevel;this.lastPoints=new Array();this.point=2;for(j=0;j<l.length;j++){var g=l[j];if(g.colour!=null){color=g.colour}else{color="77000000"}if(this.animatingRoutes){var f=new Array(g.toPixelX,g.toPixelY);if(g.routePoints!=null&&g.routePoints.length>this.point){var h=g.routePoints[this.point]}else{var h=this.calculateNextPoint(this.point,new Array(this.airportFrom.pos[m].pixelX,this.airportFrom.pos[m].pixelY),new Array(g.via1PixelX,g.via1PixelY),new Array(g.via2PixelX,g.via2PixelY),f,this.totalBezierPoints)}this.lastPoints[j]=h;var c=this.airportFrom.pos[m].pixelX;var a=this.airportFrom.pos[m].pixelY;var d=h[0];var b=h[1];this.drawLine(k,"line_"+g.routesId+"_"+j+"_"+this.point,new Array(c,a),new Array(d,b),color)}else{this.drawBezier(k,"bezier_"+m+"_"+this.airportFrom.airportId+"_"+g.airportToId,new Array(this.airportFrom.pos[m].pixelX,this.airportFrom.pos[m].pixelY),new Array(g.via1PixelX,g.via1PixelY),new Array(g.via2PixelX,g.via2PixelY),new Array(g.toPixelX,g.toPixelY),color)}}}},animPointCompleted:function(g){routesCanvas=null;if(this.animatingRoutes){routesCanvas=g.getHost().content.findName("RoutesCanvas")}else{routesCanvas=g}this.point++;if(this.point<(this.totalBezierPoints)){if(this.animatingRoutes){sb=this.rootElement.findName("animSB");sb.begin()}else{this.animPointCompleted(routesCanvas)}zoomKey="z_"+this.zoomLevel;var n=this.airportFrom.zoomRoutes[zoomKey];for(j=0;j<n.length;j++){var k=n[j];var a=this.lastPoints[j];var h=new Array(k.toPixelX,k.toPixelY);if(k.routePoints!=null&&k.routePoints.length>this.point){var l=k.routePoints[this.point]}else{var l=this.calculateNextPoint(this.point,new Array(this.airportFrom.pos[zoomKey].pixelX,this.airportFrom.pos[zoomKey].pixelY),new Array(k.via1PixelX,k.via1PixelY),new Array(k.via2PixelX,k.via2PixelY),h,this.totalBezierPoints)}var d=a[0];var b=a[1];var f=l[0];var c=l[1];if(k.colour!=null){color=k.colour}else{color="77000000"}this.drawLine(routesCanvas,"line_"+k.routesId+"_"+j+"_"+this.point,new Array(d,b),new Array(f,c),color);this.lastPoints[j]=l}}else{this.point=1;this.animatingRoutes=false;routesCanvas.Children.Clear();for(j=0;j<this.airportFrom.zoomRoutes[zoomKey].length;j++){var m=this.airportFrom.zoomRoutes[zoomKey][j];if(m.colour!=null){color=m.colour}else{color="77000000"}this.drawBezier(routesCanvas,"bezier_"+zoomKey+"_"+this.airportFrom.airportId+"_"+m.airportToId,new Array(this.airportFrom.pos[zoomKey].pixelX,this.airportFrom.pos[zoomKey].pixelY),new Array(m.via1PixelX,m.via1PixelY),new Array(m.via2PixelX,m.via2PixelY),new Array(m.toPixelX,m.toPixelY),color)}}},cancelDrawRoutes:function(){this.point=this.totalBezierPoints;sb=this.rootElement.findName("animSB");if(sb!=null){sb.stop()}},drawLine:function(c,g,f,d,b){var a="<Line \n";a+=' X1="'+f[0]+'" Y1="'+f[1]+'"\n';a+=' X2="'+d[0]+'" Y2="'+d[1]+'"\n';a+=' StrokeThickness="1.5"\n';a+=' Stroke="#'+b+'"\n';a+=' Canvas.ZIndex="5"\n';a+=" >\n";a+="</Line>\n";var k=c.getHost();var h=k.content.createFromXaml(a);c.children.add(h);return a},drawBezier:function(a,c,l,k,h,g,b){var m='<Path Stroke="#'+b+'" StrokeThickness="2"';m+=' x:Name="'+c+'"\n';m+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';m+=' Cursor="Hand">\n';m+="<Path.Data>";m+="<PathGeometry>";m+="<PathGeometry.Figures>";m+='<PathFigure StartPoint="'+l[0]+","+l[1]+'">';m+="<PathFigure.Segments>";m+="<BezierSegment";m+=' Point1="'+k[0]+","+k[1]+'"';m+=' Point2="'+h[0]+","+h[1]+'"';m+=' Point3="'+g[0]+","+g[1]+'"/>';m+="</PathFigure.Segments>";m+="</PathFigure>";m+="</PathGeometry.Figures>";m+="</PathGeometry>";m+="</Path.Data>";m+="</Path>";var d=a.getHost();var f=d.content.createFromXaml(m);a.children.add(f);f.addEventListener("MouseEnter",Silverlight.createDelegate(RM,RM.routeMouseEnter));f.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(RM,RM.routeMouseClick));f.addEventListener("MouseLeave",Silverlight.createDelegate(RM,RM.routeMouseLeave))},routeMouseEnter:function(b,a){ids=b.name.toString().split("_");if(ids[0]=="bezier"){b.Stroke="#ff6666"}},routeMouseClick:function(b,a){ids=b.name.toString().split("_");if(ids[0]=="bezier"){airportTo=this.getAirportById(ids[4]);if(airportTo){var f=b.getHost();var d=f.content.findName("airportBubbleCanvas");var c=f.content.findName("AirportsCanvas");if(d!=null){c.Children.Remove(d)}airportPosition=airportTo.pos["z_"+this.zoomLevel];this.drawBubble(c,airportTo,"airportBubbleCanvas",new Array(airportPosition.pixelX,airportPosition.pixelY))}}},routeMouseLeave:function(c,b){ids=c.name.toString().split("_");if(ids[0]=="bezier"){airportTo=this.getAirportById(ids[4]);if(airportTo){zoomKey="z_"+this.zoomLevel;for(j=0;j<this.airportFrom.zoomRoutes[zoomKey].length;j++){var a=this.airportFrom.zoomRoutes[zoomKey][j];if(a.airportToId==airportTo.airportId){if(a.colour!=null){color=a.colour}else{color="77000000"}j=this.airportFrom.zoomRoutes[zoomKey].length}}c.Stroke="#"+color}else{c.Stroke="#77000000"}}},drawBubble:function(g,o,u,c){this.bubbleAirport=o;if(c[1]-this.bubbleHeight+this.topPan<0){anchorSide="top"}else{if(c[0]-this.bubbleWidth+this.leftPan<0){anchorSide="left"}else{if(c[0]+this.bubbleWidth+this.leftPan>this.mapWidth){anchorSide="right"}else{anchorSide="bottom"}}}this.bubbleAnchorSide=anchorSide;if(anchorSide=="top"){var b="M10,0 L90,0 L100,-20 L110,0 L190,0 S200,0,200,10 L200,90 S200,100,190,100 L10,100 S0,100,0,90 L0,10 S0,0,10,0 z";var t=30;var p=0;var m=0}else{if(anchorSide=="left"){var b="M10,0 L190,0 S200,0,200,10 L200,90 S200,100,190,100 L10,100 S0,100,0,90 L0,60 L-20,50 L0,40 L0,10 S0,0,10,0 z";var t=0;var p=20;var m=20}else{if(anchorSide=="right"){var b="M10,0 L190,0 S200,0,200,10 L200,40 L220,50 L200,60 L200,90 S200,100,190,100 L10,100 S0,100,0,90 L0,10 S0,0,10,0 z";var t=0;var p=0;var m=20}else{var b="M10,0 L190,0 S200,0,200,10 L200,90 S200,100,190,100 L110,100 L100,120 L90,100 L10,100 S0,100,0,90 L0,10 S0,0,10,0 z";var t=0;var p=0;var m=0}}}bubblePos=this.bubblePosition(anchorSide,c);bubbleLeft=bubblePos[0];bubbleTop=bubblePos[1];var f='<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="'+(bubbleLeft)+'" Canvas.Top="'+(bubbleTop)+'" Width="'+(this.bubbleWidth+m)+'" Background="Transparent" x:Name="'+u+'" Canvas.ZIndex="25" />';var l=g.getHost();var v=l.content.createFromXaml(f);g.children.add(v);i=0;strokeAlpha=1;do{if(strokeAlpha<9){strokeAlphaText="0"+strokeAlpha}else{strokeAlphaText=strokeAlpha}if(i==7){var f='<Path Data="'+b+'" Height="'+(this.bubbleHeight-(i*2))+'" Width="'+(this.bubbleWidth+m-(i*2))+'" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FFFFFFFF" Canvas.Top="'+(i+1)+'" Canvas.Left="'+(i+1)+'" />';shadow=l.content.createFromXaml(f);v.children.add(shadow);var f='<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">\n';f+='<GradientStop Color="#FFFFFFFF" Offset="0.46"/>\n';f+='<GradientStop Color="#FFEEEEEE" Offset="1"/>\n';f+="</LinearGradientBrush>\n";gradient=l.content.createFromXaml(f);shadow.Fill=gradient}else{var f='<Path Data="'+b+'" Height="'+(this.bubbleHeight-(i*2))+'" Width="'+(this.bubbleWidth+m-(i*2))+'" Fill="Transparent" Stretch="Fill" Stroke="#'+strokeAlphaText+'000000" Canvas.Top="'+(i+1)+'" Canvas.Left="'+(i+1)+'" />';shadow=l.content.createFromXaml(f);v.children.add(shadow)}i++;strokeAlpha+=3}while(i<8);var f="<TextBlock \n";f+=' x:Name="bubbleTitle_'+o.airportId+'"\n';f+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';f+=' Cursor="Hand"\n';f+=' Canvas.Left="'+(p+15)+'" Canvas.Top="'+(t+15)+'"\n';f+=' Foreground="#FF333333"';f+=' FontFamily="Verdana" FontSize="10" FontWeight="Bold"\n';f+=' Height="10" TextWrapping="Wrap" Text="'+o.airportName+'">\n';f+="</TextBlock>";var q=l.content.createFromXaml(f);v.children.add(q);q.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(RM,RM.airportMarkerMouseDown));var f='<Ellipse Cursor="Hand" Width="10" Height="10" Fill="#FFFFFFFF" Stroke="#FF000000" Canvas.Left="'+(p+196)+'" Canvas.Top="'+(t+16)+'" />';var d=l.content.createFromXaml(f);v.children.add(d);v.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(RM,RM.bubbleClose));var f='<Path Cursor="Hand" Width="6" Height="6" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Canvas.Left="'+(p+198)+'" Canvas.Top="'+(t+18)+'" Data="M0,0 L6,6" />';var k=l.content.createFromXaml(f);v.children.add(k);var f='<Path Cursor="Hand" Width="6" Height="6" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Canvas.Left="'+(p+198)+'" Canvas.Top="'+(t+18)+'" Data="M0,6 L6,0" />';var h=l.content.createFromXaml(f);v.children.add(h);var f='<Rectangle Width="196" Height="1" Fill="#FFCCCCCC" Stroke="Transparent" Canvas.Left="'+(p+12)+'" Canvas.Top="'+(t+30)+'" />';var s=l.content.createFromXaml(f);v.children.add(s);if(this.airportFromId==o.airportId){var f=this.bubbleLinkText("bubbleText","To view information about routes from "+o.airportName+" hover over the destination airport.",p+15,40);var n=l.content.createFromXaml(f);v.children.add(n)}else{t+=40;if(this.airportFromId!=0){var a=this.airports["a_"+this.airportFromId].routes;for(i=0;i<a.length;i++){var w=a[i];if(w.airportToId==o.airportId){var f=this.bubbleLinkText("bubbleBook_"+o.airportId,"Book flight from "+this.airports["a_"+this.airportFromId].airportName+" to "+o.airportName,p+25,t);var n=l.content.createFromXaml(f);v.children.add(n);n.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(RM,RM.bubbleBookRoute));var f=this.bubbleLinkBullet(p+15,t+4);var r=l.content.createFromXaml(f);v.children.add(r);t+=n.actualHeight+5;var f=this.bubbleLinkText("bubbleInfo_"+o.airportId,"View information about "+o.airportName,p+25,t);var n=l.content.createFromXaml(f);v.children.add(n);n.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(RM,RM.bubbleInfo));var f=this.bubbleLinkBullet(p+15,t+4);var r=l.content.createFromXaml(f);v.children.add(r);t+=n.actualHeight+5}}}var f=this.bubbleLinkText("bubbleLink_"+o.airportId,"Show routes from "+o.airportName,p+25,t);var n=l.content.createFromXaml(f);v.children.add(n);var f=this.bubbleLinkBullet(p+15,t+4);var r=l.content.createFromXaml(f);v.children.add(r);n.addEventListener("MouseLeftButtonDown",Silverlight.createDelegate(RM,RM.airportMarkerMouseDown))}},bubblePosition:function(b,d){if(b=="top"){var f=d[0]-(this.bubbleWidth/2);var a=d[1]}else{if(b=="left"){var f=d[0];var a=d[1]-(this.bubbleHeight/2)}else{if(b=="right"){var c=20;var f=d[0]-this.bubbleWidth-c;var a=d[1]-(this.bubbleHeight/2)}else{var f=d[0]-(this.bubbleWidth/2);var a=d[1]-this.bubbleHeight}}}return new Array(f,a)},bubbleLinkText:function(f,d,b,c){var a="<TextBlock \n";a+=' x:Name="'+f+'"\n';a+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n';a+=' Cursor="Hand"\n';a+=' Canvas.Left="'+b+'" Canvas.Top="'+c+'" Width="170"\n';a+=' Foreground="#191970"';a+=' FontFamily="Verdana" FontSize="10" FontWeight="Bold"\n';a+=' Height="10" TextWrapping="Wrap" Text="'+d+'">\n';a+="</TextBlock>";return a},bubbleLinkBullet:function(c,b){var a='<Path Data="M0,0 L5,2.5 L0,5 z" Height="5" Width="5" Fill="#191970" Stretch="Fill" Stroke="#191970" Canvas.Top="'+b+'" Canvas.Left="'+c+'" />';return a},bubbleInfo:function(b,a){if(b!=null){airportToId=b.name.toString().replace(/bubbleInfo_/,"");airportToIATA=RM.airports["a_"+airportToId].iata;var c=this.destInfoURL.replace(/\{iata\}/,airportToIATA);if($("#level2").length>0){level2=$("#level2").val();xt_med("F",level2,"MAP::View::"+airportToIATA,"N",c)}window.location=c}},bubbleBookRoute:function(b,a){if(b!=null){airportToId=b.name.toString().replace(/bubbleBook_/,"");airportFromId=this.airportFromId;if(this.airportFromId!=0&&this.airportToId!=0){airportToIATA=RM.airports["a_"+airportToId].iata;airportFromIATA=RM.airports["a_"+airportFromId].iata;if($("#airport_map_booking_form").length>0){$("#airport_map_booking_form").remove()}$("#airportMap").after('<form action="'+RM.bookingURL+'" id="airport_map_booking_form" method="post" target="_blank"></form>');if(RM.bookingGetVars.length>0){getVars=RM.bookingGetVars.split("&");getVarsString="";tempGetVars=new Array();for(i=0;i<getVars.length;i++){tempVar=getVars[i].split("=");tempVar[1]=this.parseBookingValue(tempVar[1],airportFromIATA,airportToIATA);tempGetVars[tempVar[0]]=tempVar[1];getVarsString=getVarsString+tempVar[0]+"="+tempVar[1]+"&"}getVars=getVarsString}else{getVars=""}if(RM.bookingPostVars.length>0){postVars=RM.bookingPostVars.split("&");tempPostVars=new Array();for(i=0;i<postVars.length;i++){tempVar=postVars[i].split("=");tempVar[1]=this.parseBookingValue(tempVar[1],airportFromIATA,airportToIATA);$("#airport_map_booking_form").append('<input name="'+tempVar[0]+'" type="hidden" value="'+tempVar[1]+'" />')}}if(getVars.length>1){if($("#airport_map_booking_form").attr("action").indexOf("?")==-1){getVars="?"+getVars}else{getVars="&"+getVars}$("#airport_map_booking_form").attr("action",$("#airport_map_booking_form").attr("action")+getVars)}if($("#level2").length>0){level2=$("#level2").val();xt_med("F",level2,"MAP::Book::"+airportFromIATA+"::"+airportToIATA,"N")}$("#airport_map_booking_form").submit()}}},parseBookingValue:function(c,b,a){if(c!=null){if(c.indexOf("{origin-iata}")>-1){c=c.replace(/{origin-iata}/,b)}else{if(c.indexOf("{destination-iata}")>-1){c=c.replace(/{destination-iata}/,a)}else{if(c.indexOf("{date|")>-1){dateFormatIndex1=c.indexOf("|'");dateFormatIndex2=c.indexOf("':");if(dateFormatIndex1>=0&&dateFormatIndex2>=1){dateFormat=c.substring(dateFormatIndex1+2,dateFormatIndex2);dateCalc=c.substring(dateFormatIndex2+2,c.length-1);if(dateCalc.indexOf("today")>-1){bookingDate=new Date();if(dateCalc.indexOf("+")){daysValueIndex=dateCalc.indexOf("+");daysValue=dateCalc.substring(daysValueIndex+1);daysValue=parseInt(daysValue);bookingDate.setDate(bookingDate.getDate()+daysValue)}else{if(dateCalc.indexOf("-")){daysValueIndex=dateCalc.indexOf("-");daysValue=dateCalc.substring(daysValueIndex+1);daysValue=parseInt(daysValue);bookingDate.setDate(bookingDate.getDate()-daysValue)}}c=bookingDate.formatDate(dateFormat)}}}}}}return c},bubbleClose:function(b,a){if(b!=null){var f=b.getHost();var d=f.content.findName("airportBubbleCanvas");if(d!=null){var c=f.content.findName("AirportsCanvas");c.Children.Remove(d)}}this.bubbleAirport=false},createStoryboard:function(c,d,b){var f=c.getHost();var a="<Storyboard \n";a+=' Duration="0:0:0.05"\n';a+=' xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" \n';a+=' x:Name="'+d+'">\n';a+=b;a+="</Storyboard>";e=f.content.createFromXaml(a);e.addEventListener("Completed",Silverlight.createDelegate(this,this.animPointCompleted));c.resources.add(e);return e},calculateNextPoint:function(w,h,f,c,b,a){var q=1/(a-1);var o=w*q;var l=0,u=0,g=0;var k=0,r=0,d=0;var v=0,m=0;g=3*(f[0]-h[0]);u=3*(c[0]-f[0])-g;l=b[0]-h[0]-g-u;d=3*(f[1]-h[1]);r=3*(c[1]-f[1])-d;k=b[1]-h[1]-d-r;v=o*o;m=v*o;var p=(l*m)+(u*v)+(g*o)+h[0];var n=(k*m)+(r*v)+(d*o)+h[1];var s=new Array(p,n);return s},getAirportById:function(a){return this.airports["a_"+a]}};Date.prototype.formatDate=function(m,c){var b=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var n=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var h=["January","February","March","April","May","June","July","August","September","October","November","December"];var l={a:function(){return a.getHours()>11?"pm":"am"},A:function(){return(this.a().toUpperCase())},B:function(){var q=(a.getTimezoneOffset()+60)*60;var o=(a.getHours()*3600)+(a.getMinutes()*60)+a.getSeconds()+q;var p=Math.floor(o/86.4);if(p>1000){p-=1000}if(p<0){p+=1000}if((String(p)).length==1){p="00"+p}if((String(p)).length==2){p="0"+p}return p},c:function(){return(this.Y()+"-"+this.m()+"-"+this.d()+"T"+this.H()+":"+this.i()+":"+this.s()+this.P())},d:function(){var o=String(this.j());return(o.length==1?"0"+o:o)},D:function(){return n[a.getDay()]},F:function(){return h[a.getMonth()]},g:function(){if(a.getHours()==0){return 12}else{return a.getHours()>12?a.getHours()-12:a.getHours()}},G:function(){return a.getHours()},h:function(){var o=String(this.g());return(o.length==1?"0"+o:o)},H:function(){var o=String(this.G());return(o.length==1?"0"+o:o)},i:function(){var o=String(a.getMinutes());return(o.length==1?"0"+o:o)},I:function(){var o=new Date("January 1 "+this.Y()+" 00:00:00");return(o.getTimezoneOffset()==a.getTimezoneOffset()?0:1)},j:function(){return a.getDate()},l:function(){return b[a.getDay()]},L:function(){var o=this.Y();if((o%4==0&&o%100!=0)||(o%4==0&&o%100==0&&o%400==0)){return 1}else{return 0}},m:function(){var o=String(this.n());return(o.length==1?"0"+o:o)},M:function(){return k[a.getMonth()]},n:function(){return a.getMonth()+1},N:function(){var o=this.w();return(o==0?7:o)},O:function(){var q=Math.abs(a.getTimezoneOffset());var p=String(Math.floor(q/60));var o=String(q%60);p.length==1?p="0"+p:1;o.length==1?o="0"+o:1;return a.getTimezoneOffset()<0?"+"+p+o:"-"+p+o},P:function(){var o=this.O();return(o.substr(0,3)+":"+o.substr(3,2))},r:function(){var o;o=this.D()+", "+this.d()+" "+this.M()+" "+this.Y()+" "+this.H()+":"+this.i()+":"+this.s()+" "+this.O();return o},s:function(){var o=String(a.getSeconds());return(o.length==1?"0"+o:o)},S:function(){switch(a.getDate()){case 1:return("st");case 2:return("nd");case 3:return("rd");case 21:return("st");case 22:return("nd");case 23:return("rd");case 31:return("st");default:return("th")}},t:function(){var o=[null,31,28,31,30,31,30,31,31,30,31,30,31];if(this.L()==1&&this.n()==2){return 29}return o[this.n()]},U:function(){return Math.round(a.getTime()/1000)},w:function(){return a.getDay()},W:function(){var r=this.N();var p=this.z();var o=364+this.L()-p;if(o<=2&&r<=(3-o)){return 1}if(p<=2&&r>=5){return new Date(this.Y()-1,11,31).formatDate("W")}var q=new Date(this.Y(),0,1).getDay();q=q!=0?q-1:6;if(q<=3){return(1+Math.floor((p+q)/7))}else{return(1+Math.floor((p-(7-q))/7))}},y:function(){var o=String(this.Y());return o.substring(o.length-2,o.length)},Y:function(){if(a.getFullYear){var p=new Date("January 1 2001 00:00:00 +0000");var o=p.getFullYear();if(o==2001){return a.getFullYear()}}var o=a.getYear();var q=o%100;q+=(q<38)?2000:1900;return q},z:function(){var p="January 1 "+this.Y()+" 00:00:00 GMT"+this.O();var o=new Date(p);var q=a.getTime()-o.getTime();return Math.floor(q/1000/60/60/24)},Z:function(){return(a.getTimezoneOffset()*-60)}};function f(o){if(l[o]!=undefined){return l[o]()}else{return o}}var a;if(c){var a=new Date(c)}else{var a=this}var d=m.split("");var g=0;while(g<d.length){if(d[g]=="%"){d.splice(g,1)}else{d[g]=f(d[g])}g++}return d.join("")};Date.DATE_ATOM="Y-m-d%TH:i:sP";Date.DATE_ISO8601="Y-m-d%TH:i:sO";Date.DATE_RFC2822="D, d M Y H:i:s O";Date.DATE_W3C="Y-m-d%TH:i:sP";
