Ext.ns("AopaApts.wx");function buildMetarHandler(b){if(navigator.userAgent.match(/gsa-crawler/)!=null){return}var a=function(e){e.select(".metar-ct").each(function(f){f.parent().remove()});e.select(".metar-raw").each(function(f){f.parent().remove()});e.select(".error").remove();e.setVisible(false)},c=new AopaWx.util.Metar(),d=function(g,k,h){var j=Ext.get(document.createElement("li")),i;if(b.raw){var f=Ext.DomQuery.selectValue("raw_text",k);i=Ext.get(document.createElement("p"));i.dom.innerHTML=AopaWx.util.Metar.parse(f);i.addClass("metar-raw");j.appendChild(i)}else{var e=AopaWx.util.mapWxAeroMetar(k),i=c.buildElement(j,e)}if(h%2){i.addClass("even")}g.appendChild(j)};return function(f,h){try{a(b.nearbyCt);if(!f.responseXML){throw"No XML in response"}var k=Ext.DomQuery.select("METAR",f.responseXML),j;if(b.aptId){a(b.hereCt);j=0;var m=0;while(j<k.length){if(Ext.DomQuery.selectValue("station_id",k[j])===b.aptId){b.hereCt.setVisible(true);d(b.hereCt,k[j],m++);k.splice(j,1)}else{j++}}}if(!k.length){throw"No items returned"}b.nearbyCt.setVisible(true);for(j=0;j<k.length;j++){d(b.nearbyCt,k[j],j)}}catch(l){if(b.showError){b.nearbyCt.setVisibilityMode(Ext.Element.DISPLAY);b.nearbyCt.setVisible(true);var g=Ext.get(document.createElement("li"));g.addClass("error");g.update("Sorry, no METARs were found close to this airport.");b.nearbyCt.appendChild(g)}}}}function buildTafHandler(c){var a=function(e){e.select(".taf-ct").each(function(f){f.parent().remove()});e.select(".taf-raw").each(function(f){f.parent().remove()});e.select(".error").remove();e.setVisible(false)},b=new AopaWx.util.Taf(),d=function(g,j,h){var e=Ext.get(document.createElement("li"));if(c.raw){var f=Ext.DomQuery.selectValue("raw_text",j);e.dom.innerHTML=AopaWx.util.Taf.parse(f);e.addClass("taf-raw");if(h%2){e.addClass("even")}}else{var i=AopaWx.util.mapWxAeroTaf(j);b.buildElement(e,i)}g.appendChild(e)};return function(f,h){try{a(c.nearbyCt);if(!f.responseXML){throw"No XML in response"}var k=Ext.DomQuery.select("TAF",f.responseXML),j;if(c.aptId){a(c.hereCt);j=0;var m=0;while(j<k.length){if(Ext.DomQuery.selectValue("station_id",k[j])===c.aptId){c.hereCt.setVisible(true);d(c.hereCt,k[j],m++);k.splice(j,1)}else{j++}}}if(!k.length){throw"No TAFs returned"}c.nearbyCt.setVisible(true);for(j=0;j<k.length;j++){d(c.nearbyCt,k[j],j)}}catch(l){if(c.showError){c.nearbyCt.setVisible(true);var g=Ext.get(document.createElement("li"));g.addClass("error");g.update("Sorry, no TAFs were found close to this airport.");c.nearbyCt.appendChild(g)}}}}Ext.EventManager.on(window,"load",function(){if(!Ext.getDom("aptIcao")){return}var f=new Aopa.AppData({app:"wx"});var n=f.get("rawMT")||false,g=Ext.get("plainToggle");g.dom.checked=!n;Ext.select(".metars-here").setVisibilityMode(Ext.Element.DISPLAY);Ext.select(".taf-here").setVisibilityMode(Ext.Element.DISPLAY);Ext.select(".metars-nearby").setVisibilityMode(Ext.Element.DISPLAY);Ext.select(".tafs-nearby").setVisibilityMode(Ext.Element.DISPLAY);var e=function(q,o){var p=Ext.getDom(q);return p?p.innerHTML:o},h=Ext.getDom("aptIcao").innerHTML,k=e("tafStation",h),d=new Ext.data.Connection({method:"GET",url:"/weatheraero/",disableCaching:false}),j=Ext.getDom("aptlat").innerHTML,a=Ext.getDom("aptlon").innerHTML,i=e("wxRefresh",10),m=e("tafRadius",50)*1.151,b=e("metarRadius",20)*1.151,c=function(){d.request({params:{dataSource:"metars",requestType:"retrieve",format:"xml",radialDistance:String.format("{2};{0},{1}",a,j,b),hoursBeforeNow:2,mostRecentForEachStation:"constraint"},success:buildMetarHandler({hereCt:Ext.select(".metars-here").item(0),nearbyCt:Ext.select(".metars-nearby").item(0),aptId:h,showError:true,raw:!g.dom.checked})});d.request({params:{dataSource:"tafs",requestType:"retrieve",format:"xml",radialDistance:String.format("{2};{0},{1}",a,j,m),mostRecentForEachStation:"constraint",hoursBeforeNow:7},success:buildTafHandler({hereCt:Ext.select(".taf-here").item(0),nearbyCt:Ext.select(".tafs-nearby").item(0),aptId:h,showError:true,raw:!g.dom.checked})})};Ext.TaskMgr.start({run:c,interval:i*60000});var l=Ext.isIE?"click":"change";g.on(l,function(o,p){f.set("rawMT",!p.checked);c()})});
