var JSData = {"StationLatLongs":{"AAA":{"Station":"AAA","City":"Anaa","Lat":"-17.354999","Long":"-145.508332"},"AAB":{"Station":"AAB","City":"Arrabury","Lat":"-26.690555","Long":"141.0475"},"AAC":{"Station":"AAC","City":"Al Arish","Lat":"31.073333","Long":"33.835833"},"AAF":{"Station":"AAF","City":"Apalachicola","Lat":"29.727549","Long":"-85.027376"},"AAG":{"Station":"AAG","City":"Arapoti","Lat":"-24.103874","Long":"-49.789077"},"AAH":{"Station":"AAH","City":"Aachen","Lat":"50.823056","Long":"6.186111"},"AAJ":{"Station":"AAJ","City":"Awaradam","Lat":"3.898611","Long":"-55.577777"},"AAK":{"Station":"AAK","City":"Buariki","Lat":"0.185278","Long":"173.636667"},"AAM":{"Station":"AAM","City":"Mala Mala","Lat":"-24.81811","Long":"31.544584"},"AAN":{"Station":"AAN","City":"Al Ain","Lat":"24.261667","Long":"55.609167"},"AAO":{"Station":"AAO","City":"Anaco","Lat":"9.430225","Long":"-64.470724"},"AAQ":{"Station":"AAQ","City":"Anapa","Lat":"45.002097","Long":"37.347272"},"AAU":{"Station":"AAU","City":"Asau","Lat":"-13.505777","Long":"-172.627971"},"AAV":{"Station":"AAV","City":"Allah Valley","Lat":"6.366817","Long":"124.751294"},"AAX":{"Station":"AAX","City":"Araxa","Lat":"-19.563246","Long":"-46.960357"},"AAY":{"Station":"AAY","City":"Al Ghaidah","Lat":"16.191667","Long":"52.175"},"ABA":{"Station":"ABA","City":"Abakan","Lat":"53.74","Long":"91.385"},"ABB":{"Station":"ABB","City":"Abingdon","Lat":"51.690556","Long":"-1.316666"},"ABC":{"Station":"ABC","City":"Albacete","Lat":"38.948528","Long":"-1.863516"},"ABD":{"Station":"ABD","City":"Abadan","Lat":"30.365","Long":"48.233056"},"ABF":{"Station":"ABF","City":"Abaiang","Lat":"1.798611","Long":"173.040556"},"ABH":{"Station":"ABH","City":"Alpha","Lat":"-23.64611","Long":"146.583611"},"ABT":{"Station":"ABT","City":"Al Baha","Lat":"20.296139","Long":"41.634277"},"ABV":{"Station":"ABV","City":"Abuja","Lat":"9.006792","Long":"7.263172"},"ACB":{"Station":"ACB","City":"Bellaire","Lat":"44.988583","Long":"-85.19836"},"ACD":{"Station":"ACD","City":"Acand\u00ed","Lat":"8.498056","Long":"-77.273888"},"ACH":{"Station":"ACH","City":"St. Gallen - Altenrhein","Lat":"47.485033","Long":"9.560775"},"ACL":{"Station":"ACL","City":"Aguaclara","Lat":"4.749","Long":"-72.994"},"ACN":{"Station":"ACN","City":"Ciudad Acu\u00f1a","Lat":"29.333917","Long":"-101.100891"},"ACP":{"Station":"ACP","City":"Maragheh","Lat":"37.348017","Long":"46.127903"},"ACR":{"Station":"ACR","City":"Araracuara","Lat":"-0.60111","Long":"-72.397777"},"ACS":{"Station":"ACS","City":"Achinsk","Lat":"56.268333","Long":"90.570833"},"ACZ":{"Station":"ACZ","City":"Zabol","Lat":"31.098333","Long":"61.543889"},"ADE":{"Station":"ADE","City":"Aden","Lat":"12.829542","Long":"45.028792"},"ADF":{"Station":"ADF","City":"Adiyaman","Lat":"37.731369","Long":"38.468936"},"ADG":{"Station":"ADG","City":"Adrian","Lat":"41.867674","Long":"-84.077305"},"ADI":{"Station":"ADI","City":"Arandis","Lat":"-22.462222","Long":"14.98"},"ADK":{"Station":"ADK","City":"Adak Island","Lat":"51.877964","Long":"-176.64603"},"ADM":{"Station":"ADM","City":"Ardmore","Lat":"34.304278","Long":"-97.020582"},"ADO":{"Station":"ADO","City":"Andamooka","Lat":"-30.437777","Long":"137.137222"},"ADP":{"Station":"ADP","City":"Anuradhapura","Lat":"8.301486","Long":"80.4279"},"ADS":{"Station":"ADS","City":"Dallas","Lat":"32.968556","Long":"-96.836443"},"ADT":{"Station":"ADT","City":"Ada","Lat":"34.804262","Long":"-96.671199"},"ADU":{"Station":"ADU","City":"Ardabil","Lat":"38.325678","Long":"48.424356"},"ADW":{"Station":"ADW","City":"Camp Springs","Lat":"38.810818","Long":"-76.867038"},"ADX":{"Station":"ADX","City":"St. Andrews","Lat":"56.372889","Long":"-2.868443"},"ADY":{"Station":"ADY","City":"Alldays","Lat":"-22.679016","Long":"29.055517"},"AEA":{"Station":"AEA","City":"Abemama Atoll","Lat":"0.490833","Long":"173.828611"},"AEG":{"Station":"AEG","City":"Padang Sidempuan","Lat":"1.400103","Long":"99.430453"},"AEH":{"Station":"AEH","City":"Ab\u00e9ch\u00e9","Lat":"13.847","Long":"20.844333"},"AEL":{"Station":"AEL","City":"Albert Lea","Lat":"43.681314","Long":"-93.368147"},"AEO":{"Station":"AEO","City":"Aioun el Atrouss","Lat":"16.711294","Long":"-9.637882"},"AER":{"Station":"AER","City":"Sochi","Lat":"43.449928","Long":"39.956589"},"AFA":{"Station":"AFA","City":"San Rafael","Lat":"-34.588313","Long":"-68.403853"},"AFD":{"Station":"AFD","City":"Port Alfred","Lat":"-33.554166","Long":"26.879722"},"AFF":{"Station":"AFF","City":"Colorado Springs","Lat":"38.969715","Long":"-104.81283"},"AFI":{"Station":"AFI","City":"Amalfi","Lat":"6.916667","Long":"-75.066666"},"AFL":{"Station":"AFL","City":"Alta Floresta","Lat":"-9.866091","Long":"-56.106205"},"AFN":{"Station":"AFN","City":"Jaffrey","Lat":"42.805134","Long":"-72.003021"},"AFO":{"Station":"AFO","City":"Afton","Lat":"42.708778","Long":"-110.942166"},"AFW":{"Station":"AFW","City":"Fort Worth","Lat":"32.987639","Long":"-97.318805"},"AFY":{"Station":"AFY","City":"Afyon","Lat":"38.726425","Long":"30.601114"},"AGC":{"Station":"AGC","City":"Pittsburgh","Lat":"40.354401","Long":"-79.930168"},"AGE":{"Station":"AGE","City":"Wangerooge","Lat":"53.788333","Long":"7.920556"},"AGJ":{"Station":"AGJ","City":"Aguni","Lat":"26.592778","Long":"127.240278"},"AGO":{"Station":"AGO","City":"Magnolia","Lat":"33.227468","Long":"-93.216991"},"AGQ":{"Station":"AGQ","City":"Agrinion","Lat":"38.602022","Long":"21.351208"},"AGT":{"Station":"AGT","City":"Ciudad del Este","Lat":"-25.455499","Long":"-54.843591"},"AGV":{"Station":"AGV","City":"Acarigua","Lat":"9.553422","Long":"-69.237535"},"AGW":{"Station":"AGW","City":"Agnew","Lat":"-12.145555","Long":"142.149167"},"AGX":{"Station":"AGX","City":"Agatti Island","Lat":"10.823656","Long":"72.176042"},"AGZ":{"Station":"AGZ","City":"Aggeneys","Lat":"-29.281766","Long":"18.813869"},"AHB":{"Station":"AHB","City":"Khamis Mushayat","Lat":"18.240367","Long":"42.656625"},"AHC":{"Station":"AHC","City":"Herlong","Lat":"40.265918","Long":"-120.150612"},"AHE":{"Station":"AHE","City":"Ahe","Lat":"-14.427777","Long":"-146.254999"},"AHH":{"Station":"AHH","City":"Amery","Lat":"45.281148","Long":"-92.375391"},"AHI":{"Station":"AHI","City":"Pulau Seram","Lat":"-3.348","Long":"128.926"},"AHL":{"Station":"AHL","City":"Aishalton","Lat":"2.473604","Long":"-59.321109"},"AHS":{"Station":"AHS","City":"Ahu\u00e1s","Lat":"15.472222","Long":"-84.352221"},"AHU":{"Station":"AHU","City":"Al Hoceima","Lat":"35.177103","Long":"-3.839524"},"AHZ":{"Station":"AHZ","City":"L'Alpe d'Huez","Lat":"45.088333","Long":"6.084722"},"AID":{"Station":"AID","City":"Anderson","Lat":"40.108611","Long":"-85.612999"},"AIF":{"Station":"AIF","City":"Assis","Lat":"-22.638563","Long":"-50.455913"},"AIK":{"Station":"AIK","City":"Aiken","Lat":"33.649389","Long":"-81.685027"},"AIO":{"Station":"AIO","City":"Atlantic","Lat":"41.403833","Long":"-95.048749"},"AIS":{"Station":"AIS","City":"Arorae Island","Lat":"-2.61611","Long":"176.8025"},"AIT":{"Station":"AIT","City":"Aitutaki","Lat":"-18.830921","Long":"-159.764232"},"AIU":{"Station":"AIU","City":"Atiu Island","Lat":"-19.967777","Long":"-158.119166"},"AIV":{"Station":"AIV","City":"Aliceville","Lat":"33.106465","Long":"-88.197791"},"AIZ":{"Station":"AIZ","City":"Kaiser Lake Ozark","Lat":"38.096028","Long":"-92.549471"},"AJF":{"Station":"AJF","City":"al-Jouf","Lat":"29.785133","Long":"40.100006"},"AJI":{"Station":"AJI","City":"Agri","Lat":"39.654569","Long":"43.02715"},"AJJ":{"Station":"AJJ","City":"Akjoujt","Lat":"19.731667","Long":"-14.379443"},"AJL":{"Station":"AJL","City":"Aizawl","Lat":"23.746603","Long":"92.802767"},"AJR":{"Station":"AJR","City":"Arvidsjaur","Lat":"65.590278","Long":"19.281944"},"AJY":{"Station":"AJY","City":"Agades","Lat":"16.965997","Long":"8.000114"},"AKB":{"Station":"AKB","City":"Atka","Lat":"52.220586","Long":"-174.206182"},"AKC":{"Station":"AKC","City":"Akron","Lat":"41.0375","Long":"-81.466916"},"AKD":{"Station":"AKD","City":"Akola","Lat":"20.699006","Long":"77.058628"},"AKE":{"Station":"AKE","City":"Akieni","Lat":"-1.129435","Long":"13.920506"},"AKF":{"Station":"AKF","City":"Kufrah","Lat":"24.178728","Long":"23.313958"},"AKH":{"Station":"AKH","City":"Al Kharj","Lat":"24.0627","Long":"47.580536"},"AKI":{"Station":"AKI","City":"Akiak","Lat":"60.902889","Long":"-161.230582"},"AKK":{"Station":"AKK","City":"Akhiok","Lat":"56.938691","Long":"-154.182555"},"AKN":{"Station":"AKN","City":"King Salmon","Lat":"58.676493","Long":"-156.64869"},"AKO":{"Station":"AKO","City":"Akron","Lat":"40.175639","Long":"-103.222027"},"AKP":{"Station":"AKP","City":"Anaktuvuk Pass","Lat":"68.133611","Long":"-151.743332"},"AKR":{"Station":"AKR","City":"Akure","Lat":"7.246739","Long":"5.301008"},"AKS":{"Station":"AKS","City":"Auki","Lat":"-8.702568","Long":"160.681739"},"AKT":{"Station":"AKT","City":"Akrotiri","Lat":"34.590416","Long":"32.987861"},"AKV":{"Station":"AKV","City":"Akulivik","Lat":"60.818611","Long":"-78.14861"},"AKW":{"Station":"AKW","City":"Aghajari","Lat":"30.74445","Long":"49.677183"},"AKX":{"Station":"AKX","City":"Aktyubinsk","Lat":"50.245833","Long":"57.206667"},"AKY":{"Station":"AKY","City":"Sittwe","Lat":"20.132708","Long":"92.872628"},"ALD":{"Station":"ALD","City":"Alerta","Lat":"-11.683","Long":"-69.333"},"ALH":{"Station":"ALH","City":"Albany","Lat":"-34.943332","Long":"117.808889"},"ALI":{"Station":"ALI","City":"Alice","Lat":"27.740889","Long":"-98.026943"},"ALJ":{"Station":"ALJ","City":"Alexander Bay","Lat":"-28.575","Long":"16.533333"},"ALL":{"Station":"ALL","City":"Albenga","Lat":"44.050608","Long":"8.127428"},"ALN":{"Station":"ALN","City":"Alton\/St. Louis","Lat":"38.889917","Long":"-90.045999"},"ALR":{"Station":"ALR","City":"Alexandra","Lat":"-45.211666","Long":"169.373333"},"ALT":{"Station":"ALT","City":"Alenquer","Lat":"-1.917499","Long":"-54.72111"},"ALX":{"Station":"ALX","City":"Alexander City","Lat":"32.91475","Long":"-85.962943"},"AMB":{"Station":"AMB","City":"Ambilobe","Lat":"-13.18843","Long":"48.987978"},"AMC":{"Station":"AMC","City":"Am Timan","Lat":"11.034","Long":"20.274"},"AMH":{"Station":"AMH","City":"Arba Mintch","Lat":"6.039389","Long":"37.590453"},"AMJ":{"Station":"AMJ","City":"Almenara","Lat":"-16.165963","Long":"-40.684435"},"AML":{"Station":"AML","City":"Puerto Armuellas","Lat":"8.268056","Long":"-82.864943"},"AMN":{"Station":"AMN","City":"Alma","Lat":"43.322139","Long":"-84.687943"},"AMO":{"Station":"AMO","City":"Mao","Lat":"14.145556","Long":"15.314444"},"AMP":{"Station":"AMP","City":"Ampanihy","Lat":"-24.699721","Long":"44.734167"},"AMT":{"Station":"AMT","City":"Amata","Lat":"-26.102777","Long":"131.206667"},"AMV":{"Station":"AMV","City":"Amderma","Lat":"69.763333","Long":"61.556389"},"AMW":{"Station":"AMW","City":"Ames","Lat":"41.992056","Long":"-93.621832"},"AMX":{"Station":"AMX","City":"Ammaroo","Lat":"-21.739166","Long":"135.243056"},"AMZ":{"Station":"AMZ","City":"Ardmore","Lat":"-37.029721","Long":"174.973333"},"AND":{"Station":"AND","City":"Anderson","Lat":"34.494583","Long":"-82.709388"},"ANE":{"Station":"ANE","City":"Angers","Lat":"47.560211","Long":"-0.312127"},"ANJ":{"Station":"ANJ","City":"Zanaga","Lat":"-2.85","Long":"13.817"},"ANK":{"Station":"ANK","City":"Ankara","Lat":"39.949831","Long":"32.688622"},"ANM":{"Station":"ANM","City":"Antalaha","Lat":"-14.99941","Long":"50.320233"},"ANN":{"Station":"ANN","City":"Annette","Lat":"55.042294","Long":"-131.570898"},"ANO":{"Station":"ANO","City":"Angoche","Lat":"-16.181943","Long":"39.944722"},"ANP":{"Station":"ANP","City":"Annapolis","Lat":"38.942878","Long":"-76.568398"},"ANQ":{"Station":"ANQ","City":"Angola","Lat":"41.639698","Long":"-85.083492"},"ANS":{"Station":"ANS","City":"Andahuaylas","Lat":"-13.706407","Long":"-73.350377"},"ANW":{"Station":"ANW","City":"Ainsworth","Lat":"42.579228","Long":"-99.992966"},"ANX":{"Station":"ANX","City":"Andoya","Lat":"69.2925","Long":"16.144167"},"ANY":{"Station":"ANY","City":"Anthony","Lat":"37.158528","Long":"-98.079638"},"AOC":{"Station":"AOC","City":"Altenburg","Lat":"50.981817","Long":"12.506361"},"AOG":{"Station":"AOG","City":"Anshan","Lat":"41.105278","Long":"122.853889"},"AOH":{"Station":"AOH","City":"Lima","Lat":"40.707478","Long":"-84.027077"},"AOL":{"Station":"AOL","City":"Paso de los Libres","Lat":"-29.689424","Long":"-57.152077"},"AOT":{"Station":"AOT","City":"Aosta","Lat":"45.738456","Long":"7.368719"},"APA":{"Station":"APA","City":"Denver","Lat":"39.570111","Long":"-104.849305"},"APB":{"Station":"APB","City":"Apolo","Lat":"-14.733","Long":"-68.417"},"APC":{"Station":"APC","City":"Napa","Lat":"38.213194","Long":"-122.280693"},"APG":{"Station":"APG","City":"Aberdeen Proving Grounds","Lat":"39.466219","Long":"-76.168807"},"APH":{"Station":"APH","City":"Fort A. P. Hill","Lat":"38.06889","Long":"-77.31896"},"API":{"Station":"API","City":"Villavicencio","Lat":"4.076069","Long":"-73.56273"},"APK":{"Station":"APK","City":"Apataki","Lat":"-15.57361","Long":"-146.415277"},"APQ":{"Station":"APQ","City":"Arapiraca","Lat":"-9.775357","Long":"-36.629199"},"APS":{"Station":"APS","City":"Anapolis","Lat":"-16.362335","Long":"-48.927052"},"APT":{"Station":"APT","City":"Jasper","Lat":"35.060667","Long":"-85.585305"},"APU":{"Station":"APU","City":"Apucarana","Lat":"-23.60951","Long":"-51.384485"},"APV":{"Station":"APV","City":"Apple Valley","Lat":"34.575333","Long":"-117.186193"},"APX":{"Station":"APX","City":"Arapongas","Lat":"-23.352855","Long":"-51.491655"},"APZ":{"Station":"APZ","City":"Zapala","Lat":"-38.975499","Long":"-70.11358"},"AQA":{"Station":"AQA","City":"Araraquara","Lat":"-21.811999","Long":"-48.133027"},"AQI":{"Station":"AQI","City":"Qaisumah","Lat":"28.335192","Long":"46.125069"},"AQP":{"Station":"AQP","City":"Arequipa","Lat":"-16.341071","Long":"-71.583082"},"ARB":{"Station":"ARB","City":"Ann Arbor","Lat":"42.222984","Long":"-83.745606"},"ARC":{"Station":"ARC","City":"Arctic Village","Lat":"68.114669","Long":"-145.579414"},"ARD":{"Station":"ARD","City":"Kalabahi","Lat":"-8.132335","Long":"124.597014"},"ARE":{"Station":"ARE","City":"Arecibo","Lat":"18.451111","Long":"-66.675555"},"ARG":{"Station":"ARG","City":"Walnut Ridge","Lat":"36.124667","Long":"-90.92511"},"ARK":{"Station":"ARK","City":"Arusha","Lat":"-3.367793","Long":"36.633333"},"ARQ":{"Station":"ARQ","City":"Arauquita","Lat":"7.021058","Long":"-71.388863"},"ARS":{"Station":"ARS","City":"Aragarcas","Lat":"-15.896732","Long":"-52.095563"},"ARU":{"Station":"ARU","City":"Aracatuba","Lat":"-21.141341","Long":"-50.424721"},"ARV":{"Station":"ARV","City":"Minocqua-Woodruff","Lat":"45.927917","Long":"-89.730943"},"ARW":{"Station":"ARW","City":"Arad","Lat":"46.17655","Long":"21.262022"},"ARY":{"Station":"ARY","City":"Ararat","Lat":"-37.309443","Long":"142.988611"},"ARZ":{"Station":"ARZ","City":"N'zeto","Lat":"-7.259443","Long":"12.863056"},"ASA":{"Station":"ASA","City":"Assab Intl","Lat":"13.071783","Long":"42.645006"},"ASB":{"Station":"ASB","City":"Ashgabat","Lat":"37.986814","Long":"58.360967"},"ASC":{"Station":"ASC","City":"Ascensi\u00f3n de Guarayos","Lat":"-15.717","Long":"-63.1"},"ASD":{"Station":"ASD","City":"Andros Town","Lat":"24.698283","Long":"-77.79561"},"ASF":{"Station":"ASF","City":"Astrakhan","Lat":"46.283333","Long":"48.006278"},"ASG":{"Station":"ASG","City":"Ashburton","Lat":"-43.903332","Long":"171.796667"},"ASH":{"Station":"ASH","City":"Nashua","Lat":"42.782414","Long":"-71.514093"},"ASI":{"Station":"ASI","City":"Georgetown","Lat":"-7.969596","Long":"-14.393663"},"ASJ":{"Station":"ASJ","City":"Amami O Shima","Lat":"28.430633","Long":"129.712542"},"ASK":{"Station":"ASK","City":"Yamoussoukro","Lat":"6.903167","Long":"-5.36558"},"ASL":{"Station":"ASL","City":"Marshall","Lat":"32.5205","Long":"-94.307777"},"ASN":{"Station":"ASN","City":"Talladega","Lat":"33.569504","Long":"-86.0512"},"ASO":{"Station":"ASO","City":"Asosa","Lat":"10.01855","Long":"34.586253"},"ASR":{"Station":"ASR","City":"Kayseri","Lat":"38.770386","Long":"35.495428"},"AST":{"Station":"AST","City":"Astoria","Lat":"46.157972","Long":"-123.878693"},"ASV":{"Station":"ASV","City":"Amboseli","Lat":"-2.644721","Long":"37.252778"},"ASW":{"Station":"ASW","City":"Aswan","Lat":"23.964356","Long":"32.819975"},"ASX":{"Station":"ASX","City":"Ashland","Lat":"46.548528","Long":"-90.918971"},"ASY":{"Station":"ASY","City":"Ashley","Lat":"46.024591","Long":"-99.351589"},"ATA":{"Station":"ATA","City":"Anta","Lat":"-9.347443","Long":"-77.598391"},"ATB":{"Station":"ATB","City":"Atbara","Lat":"17.709722","Long":"34.056944"},"ATF":{"Station":"ATF","City":"Ambato","Lat":"-1.212066","Long":"-78.574635"},"ATI":{"Station":"ATI","City":"Artigas","Lat":"-30.400705","Long":"-56.507868"},"ATJ":{"Station":"ATJ","City":"Antsirabe","Lat":"-19.836943","Long":"47.065278"},"ATK":{"Station":"ATK","City":"Atqasuk","Lat":"70.467111","Long":"-157.435666"},"ATM":{"Station":"ATM","City":"Altamira","Lat":"-3.253905","Long":"-52.253977"},"ATO":{"Station":"ATO","City":"Athens\/Albany","Lat":"39.211893","Long":"-82.229254"},"ATP":{"Station":"ATP","City":"Aitape","Lat":"-3.133","Long":"142.333"},"ATQ":{"Station":"ATQ","City":"Amritsar","Lat":"31.709594","Long":"74.797264"},"ATR":{"Station":"ATR","City":"Atar","Lat":"20.506828","Long":"-13.043193"},"ATS":{"Station":"ATS","City":"Artesia","Lat":"32.851611","Long":"-104.46711"},"ATU":{"Station":"ATU","City":"Attu","Lat":"52.832542","Long":"173.175554"},"ATV":{"Station":"ATV","City":"Ati","Lat":"13.238889","Long":"18.313333"},"ATZ":{"Station":"ATZ","City":"Assiut","Lat":"27.046508","Long":"31.011983"},"AUD":{"Station":"AUD","City":"Augustus Downs","Lat":"-18.507499","Long":"139.883611"},"AUF":{"Station":"AUF","City":"Auxerre","Lat":"47.846328","Long":"3.496578"},"AUH":{"Station":"AUH","City":"Abu Dhabi","Lat":"24.432972","Long":"54.651138"},"AUK":{"Station":"AUK","City":"Alakanuk","Lat":"62.68305","Long":"-164.722199"},"AUM":{"Station":"AUM","City":"Austin","Lat":"43.662639","Long":"-92.932916"},"AUN":{"Station":"AUN","City":"Auburn","Lat":"38.954806","Long":"-121.081721"},"AUO":{"Station":"AUO","City":"Auburn","Lat":"32.615111","Long":"-85.433999"},"AUQ":{"Station":"AUQ","City":"Atuona","Lat":"-9.768793","Long":"-139.011255"},"AUR":{"Station":"AUR","City":"Aurillac","Lat":"44.897583","Long":"2.416719"},"AUU":{"Station":"AUU","City":"Aurukun Mission","Lat":"-13.353888","Long":"141.720833"},"AUW":{"Station":"AUW","City":"Wausau","Lat":"44.926285","Long":"-89.627001"},"AUZ":{"Station":"AUZ","City":"Chicago\/Aurora","Lat":"41.771917","Long":"-88.475666"},"AVB":{"Station":"AVB","City":"Aviano","Lat":"46.031889","Long":"12.596472"},"AVK":{"Station":"AVK","City":"Arvaikheer","Lat":"46.250397","Long":"102.802078"},"AVO":{"Station":"AVO","City":"Avon Park","Lat":"27.5913","Long":"-81.528966"},"AVV":{"Station":"AVV","City":"Lara","Lat":"-38.039443","Long":"144.469444"},"AWA":{"Station":"AWA","City":"Awassa","Lat":"7.067222","Long":"38.490278"},"AWD":{"Station":"AWD","City":"Aniwa","Lat":"-19.239999","Long":"169.605"},"AWK":{"Station":"AWK","City":"Wake Island","Lat":"19.28249","Long":"166.636661"},"AWM":{"Station":"AWM","City":"West Memphis","Lat":"35.135059","Long":"-90.234445"},"AWZ":{"Station":"AWZ","City":"Ahwaz","Lat":"31.337431","Long":"48.76195"},"AXC":{"Station":"AXC","City":"Aramac","Lat":"-22.967","Long":"145.233"},"AXG":{"Station":"AXG","City":"Algona","Lat":"43.077917","Long":"-94.271943"},"AXK":{"Station":"AXK","City":"Ataq","Lat":"14.551322","Long":"46.826183"},"AXM":{"Station":"AXM","City":"Armenia","Lat":"4.453333","Long":"-75.765832"},"AXN":{"Station":"AXN","City":"Alexandria","Lat":"45.866306","Long":"-95.394666"},"AXP":{"Station":"AXP","City":"Spring Point","Lat":"22.441828","Long":"-73.970857"},"AXR":{"Station":"AXR","City":"Arutua","Lat":"-15.246388","Long":"-146.620277"},"AXS":{"Station":"AXS","City":"Altus","Lat":"34.698806","Long":"-99.338471"},"AXT":{"Station":"AXT","City":"Akita","Lat":"39.615556","Long":"140.218611"},"AXU":{"Station":"AXU","City":"Axum","Lat":"14.14675","Long":"38.772833"},"AXV":{"Station":"AXV","City":"Wapakoneta","Lat":"40.493556","Long":"-84.298082"},"AXX":{"Station":"AXX","City":"Angel Fire","Lat":"36.422","Long":"-105.289904"},"AYD":{"Station":"AYD","City":"Alroy Downs","Lat":"-19.290832","Long":"136.079444"},"AYG":{"Station":"AYG","City":"San Vicente del Cagu\u00e1n","Lat":"1.544167","Long":"-73.933332"},"AYK":{"Station":"AYK","City":"Arkalyk","Lat":"50.318611","Long":"66.952778"},"AYL":{"Station":"AYL","City":"Anthony Lagoon","Lat":"-18.020555","Long":"135.540278"},"AYN":{"Station":"AYN","City":"Anyang","Lat":"36.133889","Long":"114.343889"},"AYP":{"Station":"AYP","City":"Ayacucho","Lat":"-13.154818","Long":"-74.204416"},"AYR":{"Station":"AYR","City":"Ayr","Lat":"-19.584443","Long":"147.329167"},"AYS":{"Station":"AYS","City":"Waycross","Lat":"31.248389","Long":"-82.395388"},"AZA":{"Station":"AZA","City":"Phoenix","Lat":"33.307833","Long":"-111.655471"},"AZD":{"Station":"AZD","City":"Yazd","Lat":"31.904908","Long":"54.276503"},"AZG":{"Station":"AZG","City":"Apatzing\u00e1n","Lat":"19.093425","Long":"-102.393607"},"AZI":{"Station":"AZI","City":"Abu Dhabi","Lat":"24.428333","Long":"54.458084"},"AZN":{"Station":"AZN","City":"Andizhan","Lat":"40.727739","Long":"72.294019"},"AZR":{"Station":"AZR","City":"Adrar","Lat":"27.839167","Long":"-0.185277"},"AZZ":{"Station":"AZZ","City":"Ambriz","Lat":"-7.862221","Long":"13.116111"},"BAB":{"Station":"BAB","City":"Marysville","Lat":"39.136089","Long":"-121.436566"},"BAD":{"Station":"BAD","City":"Bossier City","Lat":"32.501933","Long":"-93.662627"},"BAF":{"Station":"BAF","City":"Westfield\/Springfield","Lat":"42.157944","Long":"-72.71586"},"BAG":{"Station":"BAG","City":"Baguio","Lat":"16.375103","Long":"120.619636"},"BAI":{"Station":"BAI","City":"Buenos Aires","Lat":"9.163606","Long":"-83.329871"},"BAM":{"Station":"BAM","City":"Battle Mountain","Lat":"40.599056","Long":"-116.874332"},"BAT":{"Station":"BAT","City":"Barretos","Lat":"-20.584546","Long":"-48.594085"},"BAU":{"Station":"BAU","City":"Bauru","Lat":"-22.345041","Long":"-49.053799"},"BAX":{"Station":"BAX","City":"Barnaul","Lat":"53.363775","Long":"83.538533"},"BAY":{"Station":"BAY","City":"Baia Mare","Lat":"47.658389","Long":"23.470022"},"BAZ":{"Station":"BAZ","City":"Barcelos","Lat":"-0.981291","Long":"-62.919643"},"BBB":{"Station":"BBB","City":"Benson","Lat":"45.331917","Long":"-95.650582"},"BBD":{"Station":"BBD","City":"Brady","Lat":"31.179278","Long":"-99.323916"},"BBJ":{"Station":"BBJ","City":"Bitburg","Lat":"49.945333","Long":"6.565"},"BBP":{"Station":"BBP","City":"Bembridge","Lat":"50.677778","Long":"-1.109443"},"BBT":{"Station":"BBT","City":"Berberati","Lat":"4.221583","Long":"15.786369"},"BBW":{"Station":"BBW","City":"Broken Bow","Lat":"41.436451","Long":"-99.642168"},"BBX":{"Station":"BBX","City":"Philadelphia","Lat":"40.137556","Long":"-75.265138"},"BBY":{"Station":"BBY","City":"Bambari","Lat":"5.846944","Long":"20.6475"},"BCB":{"Station":"BCB","City":"Blacksburg","Lat":"37.207639","Long":"-80.407832"},"BCE":{"Station":"BCE","City":"Bryce Canyon","Lat":"37.706444","Long":"-112.145805"},"BCI":{"Station":"BCI","City":"Barcaldine","Lat":"-23.565277","Long":"145.306667"},"BCK":{"Station":"BCK","City":"Bolwarra","Lat":"-17.387499","Long":"144.168889"},"BCL":{"Station":"BCL","City":"Barra del Colorado","Lat":"10.767","Long":"-83.583"},"BCM":{"Station":"BCM","City":"Bacau","Lat":"46.521944","Long":"26.910278"},"BCT":{"Station":"BCT","City":"Boca Raton","Lat":"26.3785","Long":"-80.107693"},"BCU":{"Station":"BCU","City":"Bauchi","Lat":"10.294444","Long":"9.816667"},"BCV":{"Station":"BCV","City":"Belmopan","Lat":"17.269444","Long":"-88.77611"},"BDE":{"Station":"BDE","City":"Baudette","Lat":"48.728444","Long":"-94.612193"},"BDG":{"Station":"BDG","City":"Blanding","Lat":"37.583333","Long":"-109.483277"},"BDJ":{"Station":"BDJ","City":"Banjarmarsin","Lat":"-3.442355","Long":"114.762553"},"BDM":{"Station":"BDM","City":"Bandirma","Lat":"40.317972","Long":"27.977694"},"BDQ":{"Station":"BDQ","City":"Vadodara","Lat":"22.336164","Long":"73.226289"},"BDS":{"Station":"BDS","City":"Brindisi","Lat":"40.657633","Long":"17.947033"},"BDU":{"Station":"BDU","City":"Bardufoss","Lat":"69.055758","Long":"18.540356"},"BDX":{"Station":"BDX","City":"Broadus","Lat":"45.433325","Long":"-105.417212"},"BDY":{"Station":"BDY","City":"Bandon","Lat":"43.086472","Long":"-124.40786"},"BEC":{"Station":"BEC","City":"Wichita","Lat":"37.693917","Long":"-97.214916"},"BEF":{"Station":"BEF","City":"Bluefields","Lat":"11.990961","Long":"-83.774085"},"BEN":{"Station":"BEN","City":"Benghazi","Lat":"32.096786","Long":"20.269472"},"BFE":{"Station":"BFE","City":"Bielefeld","Lat":"51.964833","Long":"8.544833"},"BFP":{"Station":"BFP","City":"Beaver Falls","Lat":"40.772472","Long":"-80.391443"},"BFR":{"Station":"BFR","City":"Bedford","Lat":"38.840028","Long":"-86.44536"},"BFV":{"Station":"BFV","City":"Buri Ram","Lat":"15.229539","Long":"103.253231"},"BGD":{"Station":"BGD","City":"Borger","Lat":"35.700894","Long":"-101.393662"},"BGE":{"Station":"BGE","City":"Bainbridge","Lat":"30.971598","Long":"-84.636927"},"BGF":{"Station":"BGF","City":"Bangui","Lat":"4.398475","Long":"18.518786"},"BGQ":{"Station":"BGQ","City":"Big Lake","Lat":"61.536122","Long":"-149.813896"},"BGZ":{"Station":"BGZ","City":"Braga","Lat":"41.587058","Long":"-8.445138"},"BHE":{"Station":"BHE","City":"Blenheim","Lat":"-41.518332","Long":"173.870278"},"BHJ":{"Station":"BHJ","City":"Bhuj","Lat":"23.287828","Long":"69.670147"},"BHK":{"Station":"BHK","City":"Bukhara","Lat":"39.775","Long":"64.483333"},"BHO":{"Station":"BHO","City":"Bhopal","Lat":"23.287467","Long":"77.337375"},"BHV":{"Station":"BHV","City":"Bahawalpur","Lat":"29.3481","Long":"71.717981"},"BID":{"Station":"BID","City":"Block Island","Lat":"41.168111","Long":"-71.577832"},"BIE":{"Station":"BIE","City":"Beatrice","Lat":"40.301278","Long":"-96.75411"},"BIF":{"Station":"BIF","City":"Fort Bliss","Lat":"31.849525","Long":"-106.380038"},"BIH":{"Station":"BIH","City":"Bishop","Lat":"37.373111","Long":"-118.36361"},"BIV":{"Station":"BIV","City":"Bria","Lat":"6.527778","Long":"21.989444"},"BIX":{"Station":"BIX","City":"Biloxi","Lat":"30.410425","Long":"-88.924432"},"BJF":{"Station":"BJF","City":"B\u00e5tsfjord","Lat":"70.600278","Long":"29.6925"},"BJJ":{"Station":"BJJ","City":"Wooster","Lat":"40.874833","Long":"-81.888249"},"BJM":{"Station":"BJM","City":"Bujumbura","Lat":"-3.324018","Long":"29.318519"},"BJV":{"Station":"BJV","City":"Bodrum","Lat":"37.250611","Long":"27.664311"},"BJZ":{"Station":"BJZ","City":"Badajoz","Lat":"38.89125","Long":"-6.821332"},"BKA":{"Station":"BKA","City":"Moscow","Lat":"55.617222","Long":"38.06"},"BKC":{"Station":"BKC","City":"Buckland","Lat":"65.981556","Long":"-161.149138"},"BKD":{"Station":"BKD","City":"Breckenridge","Lat":"32.71875","Long":"-98.891582"},"BKE":{"Station":"BKE","City":"Baker City","Lat":"44.837333","Long":"-117.809138"},"BKH":{"Station":"BKH","City":"Kekaha","Lat":"22.02277","Long":"-159.785062"},"BKS":{"Station":"BKS","City":"Bengkulu","Lat":"-3.863699","Long":"102.339036"},"BKT":{"Station":"BKT","City":"Blackstone","Lat":"37.074767","Long":"-77.956597"},"BLD":{"Station":"BLD","City":"Boulder City","Lat":"35.947333","Long":"-114.860388"},"BLG":{"Station":"BLG","City":"Belaga","Lat":"2.636111","Long":"113.760556"},"BLH":{"Station":"BLH","City":"Blythe","Lat":"33.619167","Long":"-114.716888"},"BLM":{"Station":"BLM","City":"Belmar\/Farmingdale","Lat":"40.18675","Long":"-74.124555"},"BLU":{"Station":"BLU","City":"Emigrant Gap","Lat":"39.274972","Long":"-120.709749"},"BLV":{"Station":"BLV","City":"Belleville","Lat":"38.545167","Long":"-89.835193"},"BMC":{"Station":"BMC","City":"Brigham City","Lat":"41.554306","Long":"-112.062249"},"BME":{"Station":"BME","City":"Broome","Lat":"-17.944721","Long":"122.231667"},"BMK":{"Station":"BMK","City":"Borkum","Lat":"53.5955","Long":"6.709167"},"BML":{"Station":"BML","City":"Berlin","Lat":"44.575361","Long":"-71.175916"},"BMP":{"Station":"BMP","City":"Brampton Island","Lat":"-20.803","Long":"149.27"},"BMQ":{"Station":"BMQ","City":"Bamburi","Lat":"-3.981943","Long":"39.730556"},"BMT":{"Station":"BMT","City":"Beaumont","Lat":"30.070204","Long":"-94.215096"},"BNG":{"Station":"BNG","City":"Banning","Lat":"33.922556","Long":"-116.850971"},"BNK":{"Station":"BNK","City":"Ballina","Lat":"-28.833888","Long":"153.5625"},"BNL":{"Station":"BNL","City":"Barnwell","Lat":"33.258002","Long":"-81.387932"},"BNO":{"Station":"BNO","City":"Burns","Lat":"43.591917","Long":"-118.955443"},"BNP":{"Station":"BNP","City":"Bannu","Lat":"32.967","Long":"70.533"},"BNW":{"Station":"BNW","City":"Boone","Lat":"42.049556","Long":"-93.84761"},"BNX":{"Station":"BNX","City":"Banja Luka","Lat":"44.941444","Long":"17.297501"},"BOB":{"Station":"BOB","City":"Bora Bora","Lat":"-16.44361","Long":"-151.752499"},"BOE":{"Station":"BOE","City":"Boundji","Lat":"-1.033","Long":"15.383"},"BOJ":{"Station":"BOJ","City":"Burgas","Lat":"42.569583","Long":"27.515236"},"BOK":{"Station":"BOK","City":"Brookings","Lat":"42.074556","Long":"-124.290093"},"BOW":{"Station":"BOW","City":"Bartow","Lat":"27.943361","Long":"-81.783416"},"BOY":{"Station":"BOY","City":"Bobo\/Dioulasso","Lat":"11.160056","Long":"-4.330968"},"BPG":{"Station":"BPG","City":"Barra do Gar\u00e7as","Lat":"-15.861343","Long":"-52.388893"},"BPI":{"Station":"BPI","City":"Big Piney","Lat":"42.582222","Long":"-110.10886"},"BPN":{"Station":"BPN","City":"Balikpapan","Lat":"-1.268271","Long":"116.894478"},"BQH":{"Station":"BQH","City":"Bromley","Lat":"51.330833","Long":"0.0325"},"BQT":{"Station":"BQT","City":"Brest","Lat":"52.108334","Long":"23.898056"},"BQU":{"Station":"BQU","City":"Bequia","Lat":"12.988444","Long":"-61.262032"},"BRY":{"Station":"BRY","City":"Bardstown","Lat":"37.814333","Long":"-85.499638"},"BSA":{"Station":"BSA","City":"Boosaaso","Lat":"11.275278","Long":"49.149444"},"BSF":{"Station":"BSF","City":"Camp Pohakuloa","Lat":"19.760013","Long":"-155.553765"},"BSJ":{"Station":"BSJ","City":"Bairnsdale","Lat":"-37.887499","Long":"147.567778"},"BSR":{"Station":"BSR","City":"Basrah","Lat":"30.549068","Long":"47.662142"},"BST":{"Station":"BST","City":"Lashkar Gah","Lat":"31.559017","Long":"64.3641"},"BTC":{"Station":"BTC","City":"Batticaloa","Lat":"7.705756","Long":"81.678783"},"BTF":{"Station":"BTF","City":"Bountiful","Lat":"40.869389","Long":"-111.92716"},"BTI":{"Station":"BTI","City":"Barter Island","Lat":"70.134","Long":"-143.58186"},"BTL":{"Station":"BTL","City":"Battle Creek","Lat":"42.306473","Long":"-85.250088"},"BTN":{"Station":"BTN","City":"Bennettsville","Lat":"34.621709","Long":"-79.734358"},"BTP":{"Station":"BTP","City":"Butler","Lat":"40.776583","Long":"-79.951082"},"BTR":{"Station":"BTR","City":"Baton Rouge","Lat":"30.532906","Long":"-91.149876"},"BTT":{"Station":"BTT","City":"Bettles","Lat":"66.913944","Long":"-151.529055"},"BTY":{"Station":"BTY","City":"Beatty","Lat":"36.861139","Long":"-116.786388"},"BTZ":{"Station":"BTZ","City":"Bursa","Lat":"40.2325","Long":"29.009444"},"BUA":{"Station":"BUA","City":"Buka Island","Lat":"-5.422316","Long":"154.672667"},"BUB":{"Station":"BUB","City":"Burwell","Lat":"41.777577","Long":"-99.150211"},"BUC":{"Station":"BUC","City":"Burketown","Lat":"-17.74861","Long":"139.534444"},"BUG":{"Station":"BUG","City":"Benguela","Lat":"-12.609024","Long":"13.403711"},"BUJ":{"Station":"BUJ","City":"Bou Saada","Lat":"35.331389","Long":"4.204444"},"BUM":{"Station":"BUM","City":"Butler","Lat":"38.289778","Long":"-94.340138"},"BUN":{"Station":"BUN","City":"Buenaventura","Lat":"3.819592","Long":"-76.989624"},"BUO":{"Station":"BUO","City":"Burao","Lat":"9.53","Long":"45.556944"},"BUP":{"Station":"BUP","City":"Bhatinda","Lat":"30.270139","Long":"74.755772"},"BUS":{"Station":"BUS","City":"Batumi","Lat":"41.610278","Long":"41.599694"},"BUW":{"Station":"BUW","City":"Bau Bau","Lat":"-5.486874","Long":"122.569047"},"BUX":{"Station":"BUX","City":"Bunia","Lat":"1.565719","Long":"30.220833"},"BUY":{"Station":"BUY","City":"Bunbury","Lat":"-33.378332","Long":"115.676667"},"BVA":{"Station":"BVA","City":"Beauvais","Lat":"49.454444","Long":"2.112778"},"BVC":{"Station":"BVC","City":"Rabil","Lat":"16.136531","Long":"-22.888896"},"BVG":{"Station":"BVG","City":"Berlev\u00e5g","Lat":"70.871389","Long":"29.034167"},"BVO":{"Station":"BVO","City":"Bartlesville","Lat":"36.763361","Long":"-96.011193"},"BVS":{"Station":"BVS","City":"Breves","Lat":"-1.63653","Long":"-50.443613"},"BVU":{"Station":"BVU","City":"Beluga","Lat":"61.172962","Long":"-151.045415"},"BVX":{"Station":"BVX","City":"Batesville","Lat":"35.726222","Long":"-91.647443"},"BWC":{"Station":"BWC","City":"Brawley","Lat":"32.992944","Long":"-115.516888"},"BWD":{"Station":"BWD","City":"Brownwood","Lat":"31.793611","Long":"-98.956499"},"BWE":{"Station":"BWE","City":"Braunschweig","Lat":"52.319167","Long":"10.556111"},"BWF":{"Station":"BWF","City":"Barrow-In-Furness","Lat":"54.131167","Long":"-3.263666"},"BWG":{"Station":"BWG","City":"Bowling Green","Lat":"36.964528","Long":"-86.419666"},"BXA":{"Station":"BXA","City":"Bogalusa","Lat":"30.813686","Long":"-89.864963"},"BXK":{"Station":"BXK","City":"Buckeye","Lat":"33.420417","Long":"-112.68618"},"BXS":{"Station":"BXS","City":"Borrego Springs","Lat":"33.259028","Long":"-116.320971"},"BYA":{"Station":"BYA","City":"Boundary","Lat":"64.078303","Long":"-141.113374"},"BYC":{"Station":"BYC","City":"Yacuiba","Lat":"-21.960924","Long":"-63.651668"},"BYG":{"Station":"BYG","City":"Buffalo","Lat":"44.381083","Long":"-106.721805"},"BYI":{"Station":"BYI","City":"Burley","Lat":"42.542611","Long":"-113.771527"},"BYK":{"Station":"BYK","City":"Bouake","Lat":"7.7388","Long":"-5.073666"},"BYS":{"Station":"BYS","City":"Fort Irwin\/Barstow","Lat":"35.28053","Long":"-116.630028"},"BZA":{"Station":"BZA","City":"Bonanza","Lat":"14.032222","Long":"-84.624166"},"BZG":{"Station":"BZG","City":"Bydgoszcz","Lat":"53.096803","Long":"17.977669"},"BZI":{"Station":"BZI","City":"Balikesir","Lat":"39.619258","Long":"27.925958"},"BZL":{"Station":"BZL","City":"Barisal","Lat":"22.801031","Long":"90.301164"},"BZO":{"Station":"BZO","City":"Bolzano","Lat":"46.460194","Long":"11.326383"},"BZZ":{"Station":"BZZ","City":"Oxford","Lat":"51.749964","Long":"-1.583616"},"CAD":{"Station":"CAD","City":"Cadillac","Lat":"44.275333","Long":"-85.418916"},"CAL":{"Station":"CAL","City":"Campbeltown","Lat":"55.437222","Long":"-5.686388"},"CAO":{"Station":"CAO","City":"Clayton","Lat":"36.446278","Long":"-103.149943"},"CAR":{"Station":"CAR","City":"Caribou","Lat":"46.871639","Long":"-68.018193"},"CAU":{"Station":"CAU","City":"Caruaru","Lat":"-8.282391","Long":"-36.013502"},"CAV":{"Station":"CAV","City":"Cazombo","Lat":"-11.893055","Long":"22.916389"},"CBF":{"Station":"CBF","City":"Council Bluffs","Lat":"41.260111","Long":"-95.758638"},"CBG":{"Station":"CBG","City":"Cambridge","Lat":"52.205","Long":"0.175"},"CBK":{"Station":"CBK","City":"Colby","Lat":"39.427444","Long":"-101.04661"},"CBM":{"Station":"CBM","City":"Columbus","Lat":"33.645167","Long":"-88.445924"},"CBP":{"Station":"CBP","City":"Coimbra","Lat":"40.157223","Long":"-8.469999"},"CBU":{"Station":"CBU","City":"Cottbus","Lat":"51.889475","Long":"14.531986"},"CBW":{"Station":"CBW","City":"Campo Mour\u00e3o","Lat":"-24.009221","Long":"-52.35678"},"CCB":{"Station":"CCB","City":"Upland","Lat":"34.111611","Long":"-117.687388"},"CCO":{"Station":"CCO","City":"Puerto L\u00f3pez","Lat":"4.564167","Long":"-71.336388"},"CCR":{"Station":"CCR","City":"Concord","Lat":"37.989667","Long":"-122.056888"},"CCY":{"Station":"CCY","City":"Charles City","Lat":"43.072504","Long":"-92.610808"},"CDB":{"Station":"CDB","City":"Cold Bay","Lat":"55.205262","Long":"-162.724521"},"CDI":{"Station":"CDI","City":"Cedros","Lat":"28.037583","Long":"-115.189571"},"CDK":{"Station":"CDK","City":"Cedar Key","Lat":"29.134222","Long":"-83.050471"},"CDN":{"Station":"CDN","City":"Camden","Lat":"34.283583","Long":"-80.56486"},"CDS":{"Station":"CDS","City":"Childress","Lat":"34.433778","Long":"-100.287999"},"CDU":{"Station":"CDU","City":"Camden","Lat":"-34.040277","Long":"150.687222"},"CDW":{"Station":"CDW","City":"Caldwell","Lat":"40.875222","Long":"-74.28136"},"CEA":{"Station":"CEA","City":"Wichita","Lat":"37.648598","Long":"-97.250598"},"CEF":{"Station":"CEF","City":"Springfield\/Chicopee","Lat":"42.194014","Long":"-72.534782"},"CEG":{"Station":"CEG","City":"Chester","Lat":"53.178056","Long":"-2.977777"},"CEK":{"Station":"CEK","City":"Chelyabinsk","Lat":"55.305836","Long":"61.503333"},"CEM":{"Station":"CEM","City":"Central","Lat":"65.573944","Long":"-144.780888"},"CEU":{"Station":"CEU","City":"Clemson","Lat":"34.672222","Long":"-82.885888"},"CEV":{"Station":"CEV","City":"Connersville","Lat":"39.698194","Long":"-85.131138"},"CEW":{"Station":"CEW","City":"Crestview","Lat":"30.778833","Long":"-86.52211"},"CEY":{"Station":"CEY","City":"Murray","Lat":"36.664583","Long":"-88.372777"},"CFD":{"Station":"CFD","City":"Bryan","Lat":"30.715694","Long":"-96.33136"},"CFE":{"Station":"CFE","City":"Clermont\/Ferrand Auvergne","Lat":"45.785833","Long":"3.1625"},"CFG":{"Station":"CFG","City":"Cienfuegos","Lat":"22.15","Long":"-80.414166"},"CFN":{"Station":"CFN","City":"Carrickfinn","Lat":"55.044192","Long":"-8.340999"},"CFS":{"Station":"CFS","City":"Coffs Harbour","Lat":"-30.320555","Long":"153.116389"},"CFT":{"Station":"CFT","City":"Clifton\/Morenci","Lat":"32.957039","Long":"-109.211161"},"CFV":{"Station":"CFV","City":"Coffeyville","Lat":"37.094","Long":"-95.571999"},"CGE":{"Station":"CGE","City":"Cambridge","Lat":"38.539333","Long":"-76.030388"},"CGF":{"Station":"CGF","City":"Cleveland","Lat":"41.565111","Long":"-81.48636"},"CGS":{"Station":"CGS","City":"College Park","Lat":"38.980583","Long":"-76.922305"},"CGZ":{"Station":"CGZ","City":"Casa Grande","Lat":"32.954889","Long":"-111.766832"},"CHK":{"Station":"CHK","City":"Chickasha","Lat":"35.097361","Long":"-97.967693"},"CHN":{"Station":"CHN","City":"Chonju","Lat":"35.878436","Long":"127.11955"},"CHP":{"Station":"CHP","City":"Circle Hot Springs","Lat":"65.485472","Long":"-144.610783"},"CHQ":{"Station":"CHQ","City":"Chania","Lat":"35.531747","Long":"24.149678"},"CHT":{"Station":"CHT","City":"Waitangi","Lat":"-43.809999","Long":"-176.457221"},"CHU":{"Station":"CHU","City":"Chuathbaluk","Lat":"61.579056","Long":"-159.215638"},"CHX":{"Station":"CHX","City":"Changuinola","Lat":"9.458636","Long":"-82.516805"},"CHZ":{"Station":"CHZ","City":"Chiloquin","Lat":"42.579318","Long":"-121.879013"},"CIK":{"Station":"CIK","City":"Chalkyitsik","Lat":"66.645022","Long":"-143.739929"},"CIN":{"Station":"CIN","City":"Carroll","Lat":"42.046667","Long":"-94.788693"},"CIR":{"Station":"CIR","City":"Cairo","Lat":"37.064139","Long":"-89.219527"},"CJJ":{"Station":"CJJ","City":"Cheong Ju","Lat":"36.7166","Long":"127.499119"},"CKA":{"Station":"CKA","City":"Cherokee","Lat":"36.75","Long":"-98.116666"},"CKC":{"Station":"CKC","City":"Cherkassy","Lat":"49.415569","Long":"31.995292"},"CKI":{"Station":"CKI","City":"Croker Island","Lat":"-11.16361","Long":"132.483056"},"CKM":{"Station":"CKM","City":"Clarksdale","Lat":"34.299722","Long":"-90.512305"},"CKN":{"Station":"CKN","City":"Crookston","Lat":"47.841657","Long":"-96.621453"},"CKU":{"Station":"CKU","City":"Cordova","Lat":"60.543903","Long":"-145.726703"},"CKV":{"Station":"CKV","City":"Clarksville","Lat":"36.621861","Long":"-87.414943"},"CKX":{"Station":"CKX","City":"Chicken","Lat":"64.071338","Long":"-141.952278"},"CKZ":{"Station":"CKZ","City":"Canakkale","Lat":"40.137722","Long":"26.426777"},"CLI":{"Station":"CLI","City":"Clintonville","Lat":"44.613279","Long":"-88.730697"},"CLK":{"Station":"CLK","City":"Clinton","Lat":"35.538272","Long":"-98.932788"},"CLP":{"Station":"CLP","City":"Clarks Point","Lat":"58.833694","Long":"-158.529388"},"CLR":{"Station":"CLR","City":"Calipatria","Lat":"33.131333","Long":"-115.521388"},"CLS":{"Station":"CLS","City":"Chehalis","Lat":"46.677028","Long":"-122.982749"},"CLU":{"Station":"CLU","City":"Columbus","Lat":"39.261917","Long":"-85.896332"},"CLW":{"Station":"CLW","City":"Clearwater","Lat":"27.976472","Long":"-82.758666"},"CMA":{"Station":"CMA","City":"Cunnamulla","Lat":"-28.029999","Long":"145.622222"},"CMR":{"Station":"CMR","City":"Colmar","Lat":"48.11035","Long":"7.359147"},"CMY":{"Station":"CMY","City":"Sparta","Lat":"43.958372","Long":"-90.737896"},"CNC":{"Station":"CNC","City":"Poruma","Lat":"-10.049999","Long":"143.066667"},"CNH":{"Station":"CNH","City":"Claremont","Lat":"43.370504","Long":"-72.368206"},"CNK":{"Station":"CNK","City":"Concordia","Lat":"39.549222","Long":"-97.652305"},"CNO":{"Station":"CNO","City":"Chino","Lat":"33.974779","Long":"-117.636482"},"CNP":{"Station":"CNP","City":"Neerlerit Inaat","Lat":"70.743333","Long":"-22.660555"},"CNU":{"Station":"CNU","City":"Chanute","Lat":"37.667889","Long":"-95.486721"},"CNW":{"Station":"CNW","City":"Waco","Lat":"31.637806","Long":"-97.074138"},"COD":{"Station":"COD","City":"Cody","Lat":"44.520194","Long":"-109.023805"},"COE":{"Station":"COE","City":"Coeur d'Alene","Lat":"47.774306","Long":"-116.819582"},"COF":{"Station":"COF","City":"Cocoa Beach","Lat":"28.235006","Long":"-80.609978"},"COI":{"Station":"COI","City":"Merritt Island","Lat":"28.341611","Long":"-80.685471"},"COM":{"Station":"COM","City":"Coleman","Lat":"31.841139","Long":"-99.40361"},"COP":{"Station":"COP","City":"Cooperstown","Lat":"42.629242","Long":"-74.890987"},"COQ":{"Station":"COQ","City":"Choibalsan","Lat":"48.135672","Long":"114.646378"},"COT":{"Station":"COT","City":"Cotulla","Lat":"28.456694","Long":"-99.218332"},"COV":{"Station":"COV","City":"Covilh\u00e3","Lat":"40.264772","Long":"-7.479957"},"CPC":{"Station":"CPC","City":"San Martin de los Andes","Lat":"-40.075382","Long":"-71.137293"},"CPE":{"Station":"CPE","City":"Campeche","Lat":"19.816794","Long":"-90.500313"},"CPM":{"Station":"CPM","City":"Compton","Lat":"33.889917","Long":"-118.243805"},"CPT":{"Station":"CPT","City":"Cape Town","Lat":"-33.971368","Long":"18.604292"},"CPU":{"Station":"CPU","City":"Cururupu","Lat":"-1.793332","Long":"-44.847221"},"CPV":{"Station":"CPV","City":"Campina Grande","Lat":"-7.269916","Long":"-35.896363"},"CPX":{"Station":"CPX","City":"Isla De Culebra","Lat":"18.313289","Long":"-65.304323"},"CQM":{"Station":"CQM","City":"Ciudad Real","Lat":"38.856389","Long":"-3.969999"},"CRA":{"Station":"CRA","City":"Craiova","Lat":"44.318139","Long":"23.888611"},"CRC":{"Station":"CRC","City":"Cartago","Lat":"4.758181","Long":"-75.955752"},"CRE":{"Station":"CRE","City":"North Myrtle Beach","Lat":"33.81175","Long":"-78.723943"},"CRG":{"Station":"CRG","City":"Jacksonville","Lat":"30.336333","Long":"-81.514443"},"CRK":{"Station":"CRK","City":"Luzon","Lat":"15.185989","Long":"120.560325"},"CRL":{"Station":"CRL","City":"Charleroi","Lat":"50.46","Long":"4.452778"},"CRQ":{"Station":"CRQ","City":"Caravelas","Lat":"-17.652282","Long":"-39.253068"},"CRS":{"Station":"CRS","City":"Corsicana","Lat":"32.028056","Long":"-96.400582"},"CRT":{"Station":"CRT","City":"Crossett","Lat":"33.178333","Long":"-91.880193"},"CRV":{"Station":"CRV","City":"Crotone","Lat":"38.997225","Long":"17.080169"},"CRX":{"Station":"CRX","City":"Corinth","Lat":"34.914968","Long":"-88.603483"},"CRZ":{"Station":"CRZ","City":"Turkmenabad","Lat":"39.083333","Long":"63.613333"},"CSB":{"Station":"CSB","City":"Caransebes","Lat":"45.42","Long":"22.253333"},"CSM":{"Station":"CSM","City":"Burns Flat","Lat":"35.339839","Long":"-99.200498"},"CSQ":{"Station":"CSQ","City":"Creston","Lat":"41.021444","Long":"-94.363305"},"CSV":{"Station":"CSV","City":"Crossville","Lat":"35.951292","Long":"-85.084977"},"CSY":{"Station":"CSY","City":"Cheboksary","Lat":"56.090269","Long":"47.34725"},"CTB":{"Station":"CTB","City":"Cut Bank","Lat":"48.608354","Long":"-112.376153"},"CTK":{"Station":"CTK","City":"Canton","Lat":"43.309","Long":"-96.571216"},"CTM":{"Station":"CTM","City":"Chetumal","Lat":"18.504667","Long":"-88.326846"},"CTN":{"Station":"CTN","City":"Cooktown","Lat":"-15.444721","Long":"145.184444"},"CTY":{"Station":"CTY","City":"Cross City","Lat":"29.635528","Long":"-83.104749"},"CTZ":{"Station":"CTZ","City":"Clinton","Lat":"34.974939","Long":"-78.365628"},"CUB":{"Station":"CUB","City":"Columbia","Lat":"33.970472","Long":"-80.995249"},"CUH":{"Station":"CUH","City":"Cushing","Lat":"35.950028","Long":"-96.773416"},"CUK":{"Station":"CUK","City":"Caye Caulker","Lat":"17.734722","Long":"-88.032499"},"CUL":{"Station":"CUL","City":"Culiac\u00e1n","Lat":"24.764547","Long":"-107.474716"},"CUT":{"Station":"CUT","City":"Cutral","Lat":"-38.939682","Long":"-69.264641"},"CVJ":{"Station":"CVJ","City":"Cuernavaca","Lat":"18.834764","Long":"-99.261299"},"CVM":{"Station":"CVM","City":"Ciudad Victoria","Lat":"23.703336","Long":"-98.956485"},"CVO":{"Station":"CVO","City":"Corvallis","Lat":"44.497111","Long":"-123.289527"},"CVS":{"Station":"CVS","City":"Clovis","Lat":"34.382767","Long":"-103.32214"},"CVT":{"Station":"CVT","City":"Coventry","Lat":"52.369722","Long":"-1.479721"},"CWI":{"Station":"CWI","City":"Clinton","Lat":"41.83075","Long":"-90.328971"},"CWS":{"Station":"CWS","City":"Center Island","Lat":"48.490101","Long":"-122.83212"},"CXC":{"Station":"CXC","City":"Chitina","Lat":"61.582859","Long":"-144.427096"},"CXF":{"Station":"CXF","City":"Coldfoot","Lat":"67.252167","Long":"-150.203888"},"CXJ":{"Station":"CXJ","City":"Caxias do Sul","Lat":"-29.197063","Long":"-51.187535"},"CXL":{"Station":"CXL","City":"Calexico","Lat":"32.667444","Long":"-115.517582"},"CXO":{"Station":"CXO","City":"Houston","Lat":"30.352361","Long":"-95.414527"},"CXP":{"Station":"CXP","City":"Cilacap","Lat":"-7.645055","Long":"109.033911"},"CXY":{"Station":"CXY","City":"Cat Cay","Lat":"25.568","Long":"-79.292"},"CYC":{"Station":"CYC","City":"Caye Chapel","Lat":"17.700833","Long":"-88.04111"},"CYT":{"Station":"CYT","City":"Yakataga","Lat":"60.082012","Long":"-142.493484"},"CYW":{"Station":"CYW","City":"Celaya","Lat":"20.545994","Long":"-100.886549"},"CZA":{"Station":"CZA","City":"Chichen Itza","Lat":"20.641294","Long":"-88.446218"},"CZF":{"Station":"CZF","City":"Cape Romanzof","Lat":"61.781808","Long":"-166.036964"},"CZK":{"Station":"CZK","City":"Cascade Locks","Lat":"45.676944","Long":"-121.878888"},"CZL":{"Station":"CZL","City":"Constantine","Lat":"36.285278","Long":"6.619167"},"CZN":{"Station":"CZN","City":"Chisana","Lat":"62.07119","Long":"-142.048373"},"CZO":{"Station":"CZO","City":"Chistochina","Lat":"62.563473","Long":"-144.668835"},"CZT":{"Station":"CZT","City":"Carrizo Springs","Lat":"28.52225","Long":"-99.823638"},"DAA":{"Station":"DAA","City":"Fort Belvoir","Lat":"38.715111","Long":"-77.181144"},"DAG":{"Station":"DAG","City":"Daggett","Lat":"34.853722","Long":"-116.786693"},"DAV":{"Station":"DAV","City":"David","Lat":"8.391003","Long":"-82.434991"},"DBN":{"Station":"DBN","City":"Dublin","Lat":"32.564722","Long":"-82.984971"},"DBY":{"Station":"DBY","City":"Dalby","Lat":"-27.155277","Long":"151.267222"},"DCI":{"Station":"DCI","City":"Decimomannu","Lat":"39.354222","Long":"8.972481"},"DCK":{"Station":"DCK","City":"Dahl Creek","Lat":"66.943338","Long":"-156.904673"},"DCM":{"Station":"DCM","City":"Castres","Lat":"43.554961","Long":"2.290592"},"DCU":{"Station":"DCU","City":"Decatur","Lat":"34.654056","Long":"-86.94536"},"DEB":{"Station":"DEB","City":"Debrecen","Lat":"47.488917","Long":"21.615333"},"DED":{"Station":"DED","City":"Dehradun","Lat":"30.189689","Long":"78.180256"},"DEE":{"Station":"DEE","City":"Deering","Lat":"66.069111","Long":"-162.767055"},"DEH":{"Station":"DEH","City":"Decorah","Lat":"43.2755","Long":"-91.739388"},"DES":{"Station":"DES","City":"Desroches","Lat":"-5.696696","Long":"53.655844"},"DET":{"Station":"DET","City":"Detroit","Lat":"42.409327","Long":"-83.010181"},"DEZ":{"Station":"DEZ","City":"Deirezzor","Lat":"35.285374","Long":"40.175961"},"DFI":{"Station":"DFI","City":"Defiance","Lat":"41.3375","Long":"-84.428805"},"DGE":{"Station":"DGE","City":"Mudgee","Lat":"-32.562499","Long":"149.611111"},"DGL":{"Station":"DGL","City":"Douglas","Lat":"31.342603","Long":"-109.506453"},"DGT":{"Station":"DGT","City":"Dumaguete","Lat":"9.333714","Long":"123.300472"},"DGW":{"Station":"DGW","City":"Douglas","Lat":"42.797194","Long":"-105.385832"},"DHF":{"Station":"DHF","City":"Muqatra","Lat":"24.248249","Long":"54.547722"},"DHR":{"Station":"DHR","City":"Den Helder","Lat":"52.923353","Long":"4.780625"},"DHT":{"Station":"DHT","City":"Dalhart","Lat":"36.022472","Long":"-102.547388"},"DIE":{"Station":"DIE","City":"Antsiranana","Lat":"-12.349399","Long":"49.291747"},"DIK":{"Station":"DIK","City":"Dickinson","Lat":"46.797333","Long":"-102.80186"},"DIR":{"Station":"DIR","City":"Dire Dawa","Lat":"9.6247","Long":"41.854203"},"DJB":{"Station":"DJB","City":"Jambi","Lat":"-1.638016","Long":"103.644378"},"DJE":{"Station":"DJE","City":"Djerba","Lat":"33.875556","Long":"10.777222"},"DJG":{"Station":"DJG","City":"Djanet","Lat":"24.293056","Long":"9.451944"},"DJJ":{"Station":"DJJ","City":"Djayapura","Lat":"-2.576952","Long":"140.516372"},"DJO":{"Station":"DJO","City":"Daloa","Lat":"6.792808","Long":"-6.473188"},"DKK":{"Station":"DKK","City":"Dunkirk","Lat":"42.493361","Long":"-79.272027"},"DKR":{"Station":"DKR","City":"Dakar","Lat":"14.739708","Long":"-17.490224"},"DLD":{"Station":"DLD","City":"Dagali","Lat":"60.416667","Long":"8.512778"},"DLE":{"Station":"DLE","City":"Dole","Lat":"47.042778","Long":"5.435"},"DLF":{"Station":"DLF","City":"Del Rio","Lat":"29.359393","Long":"-100.777912"},"DLG":{"Station":"DLG","City":"Dillingham","Lat":"59.044667","Long":"-158.505499"},"DLL":{"Station":"DLL","City":"Dillon","Lat":"34.449056","Long":"-79.368582"},"DLN":{"Station":"DLN","City":"Dillon","Lat":"45.255361","Long":"-112.552499"},"DLS":{"Station":"DLS","City":"The Dalles","Lat":"45.619355","Long":"-121.168275"},"DLZ":{"Station":"DLZ","City":"Dalanzadgad","Lat":"43.591731","Long":"104.429853"},"DMA":{"Station":"DMA","City":"Tucson","Lat":"32.166367","Long":"-110.883166"},"DMK":{"Station":"DMK","City":"Bangkok","Lat":"13.912583","Long":"100.60675"},"DMM":{"Station":"DMM","City":"Dammam","Lat":"26.471161","Long":"49.79789"},"DMN":{"Station":"DMN","City":"Deming","Lat":"32.262389","Long":"-107.718999"},"DMO":{"Station":"DMO","City":"Sedalia","Lat":"38.707417","Long":"-93.175916"},"DMU":{"Station":"DMU","City":"Dimapur","Lat":"25.883906","Long":"93.771144"},"DNK":{"Station":"DNK","City":"Dnepropetrovsk","Lat":"48.357222","Long":"35.100556"},"DNN":{"Station":"DNN","City":"Dalton","Lat":"34.722944","Long":"-84.870249"},"DNR":{"Station":"DNR","City":"Dinard\/Pleurtuit\/St-Malo","Lat":"48.587778","Long":"-2.079999"},"DNS":{"Station":"DNS","City":"Denison","Lat":"41.986583","Long":"-95.380499"},"DNZ":{"Station":"DNZ","City":"Denizli","Lat":"37.785567","Long":"29.701297"},"DOG":{"Station":"DOG","City":"Dongola","Lat":"19.153867","Long":"30.430094"},"DOV":{"Station":"DOV","City":"Dover","Lat":"39.129539","Long":"-75.46596"},"DPA":{"Station":"DPA","City":"Chicago\/West Chicago","Lat":"41.907053","Long":"-88.247996"},"DPG":{"Station":"DPG","City":"Dugway Proving Ground","Lat":"40.197382","Long":"-112.935053"},"DPL":{"Station":"DPL","City":"Dipolog","Lat":"8.601261","Long":"123.334481"},"DRA":{"Station":"DRA","City":"Mercury","Lat":"36.619399","Long":"-116.032808"},"DRI":{"Station":"DRI","City":"De Ridder","Lat":"30.831722","Long":"-93.339916"},"DRK":{"Station":"DRK","City":"Drake Bay","Lat":"8.718889","Long":"-83.641666"},"DSA":{"Station":"DSA","City":"Doncaster\/Sheffield","Lat":"53.474722","Long":"-1.004443"},"DSV":{"Station":"DSV","City":"Dansville","Lat":"42.570691","Long":"-77.712972"},"DTA":{"Station":"DTA","City":"Delta","Lat":"39.383598","Long":"-112.502204"},"DTL":{"Station":"DTL","City":"Detroit Lakes","Lat":"46.825167","Long":"-95.885582"},"DTN":{"Station":"DTN","City":"Shreveport","Lat":"32.540219","Long":"-93.745022"},"DUA":{"Station":"DUA","City":"Durant","Lat":"33.942267","Long":"-96.39453"},"DUC":{"Station":"DUC","City":"Duncan","Lat":"34.471306","Long":"-97.95986"},"DUG":{"Station":"DUG","City":"Douglas","Lat":"31.468944","Long":"-109.603749"},"DVL":{"Station":"DVL","City":"Devils Lake","Lat":"48.114583","Long":"-98.908332"},"DVN":{"Station":"DVN","City":"Davenport","Lat":"41.610278","Long":"-90.58836"},"DVP":{"Station":"DVP","City":"Davenport Downs","Lat":"-24.146","Long":"141.112"},"DVT":{"Station":"DVT","City":"Phoenix","Lat":"33.688306","Long":"-112.082555"},"DWH":{"Station":"DWH","City":"Houston","Lat":"30.061833","Long":"-95.552777"},"DXR":{"Station":"DXR","City":"Danbury","Lat":"41.371528","Long":"-73.482193"},"DYL":{"Station":"DYL","City":"Doylestown","Lat":"40.33305","Long":"-75.122337"},"DYR":{"Station":"DYR","City":"Anadyr","Lat":"64.73495","Long":"177.741483"},"DYS":{"Station":"DYS","City":"Abilene","Lat":"32.418476","Long":"-99.856544"},"DYU":{"Station":"DYU","City":"Dushanbe","Lat":"38.543333","Long":"68.825"},"DZA":{"Station":"DZA","City":"Dzaoudzi","Lat":"-12.806666","Long":"45.280556"},"DZN":{"Station":"DZN","City":"Zhezkazgan","Lat":"47.708333","Long":"67.733333"},"DZO":{"Station":"DZO","City":"Durazno","Lat":"-33.358866","Long":"-56.499171"},"EAN":{"Station":"EAN","City":"Wheatland","Lat":"42.055528","Long":"-104.92861"},"EBG":{"Station":"EBG","City":"El Bagre","Lat":"7.596469","Long":"-74.808941"},"EBL":{"Station":"EBL","City":"Erbil","Lat":"36.238056","Long":"43.946667"},"EBS":{"Station":"EBS","City":"Webster City","Lat":"42.436414","Long":"-93.868966"},"ECG":{"Station":"ECG","City":"Elizabeth City","Lat":"36.260581","Long":"-76.174571"},"ECN":{"Station":"ECN","City":"Lefkosa","Lat":"35.148889","Long":"33.499722"},"ECS":{"Station":"ECS","City":"Newcastle","Lat":"43.885444","Long":"-104.317943"},"EDB":{"Station":"EDB","City":"El Debba","Lat":"18.024998","Long":"30.958334"},"EDE":{"Station":"EDE","City":"Edenton","Lat":"36.027734","Long":"-76.567091"},"EDF":{"Station":"EDF","City":"Anchorage","Lat":"61.251347","Long":"-149.806513"},"EDO":{"Station":"EDO","City":"Edremit\/Korfez","Lat":"39.554589","Long":"27.013833"},"EDW":{"Station":"EDW","City":"Edwards","Lat":"34.908088","Long":"-117.885528"},"EED":{"Station":"EED","City":"Needles","Lat":"34.766347","Long":"-114.623279"},"EEK":{"Station":"EEK","City":"Eek","Lat":"60.213694","Long":"-162.043888"},"EFK":{"Station":"EFK","City":"Newport","Lat":"44.888778","Long":"-72.229166"},"EFW":{"Station":"EFW","City":"Jefferson","Lat":"42.010583","Long":"-94.34236"},"EGC":{"Station":"EGC","City":"Bergerac","Lat":"44.824431","Long":"0.520525"},"EGI":{"Station":"EGI","City":"Crestview","Lat":"30.648587","Long":"-86.521958"},"EGV":{"Station":"EGV","City":"Eagle River","Lat":"45.932333","Long":"-89.268277"},"EHM":{"Station":"EHM","City":"Cape Newenham","Lat":"58.646429","Long":"-162.062776"},"EIL":{"Station":"EIL","City":"Fairbanks","Lat":"64.665644","Long":"-147.101438"},"EKA":{"Station":"EKA","City":"Eureka","Lat":"40.803389","Long":"-124.112791"},"EKN":{"Station":"EKN","City":"Elkins","Lat":"38.889444","Long":"-79.857138"},"EKX":{"Station":"EKX","City":"Elizabethtown","Lat":"37.686","Long":"-85.925027"},"ELA":{"Station":"ELA","City":"Eagle Lake","Lat":"29.600667","Long":"-96.322055"},"ELI":{"Station":"ELI","City":"Elim","Lat":"64.614972","Long":"-162.270527"},"ELK":{"Station":"ELK","City":"Elk City","Lat":"35.430778","Long":"-99.394277"},"ELN":{"Station":"ELN","City":"Ellensburg","Lat":"47.033028","Long":"-120.530693"},"ELO":{"Station":"ELO","City":"Eldorado","Lat":"-26.397498","Long":"-54.574721"},"ELQ":{"Station":"ELQ","City":"Gassim","Lat":"26.302822","Long":"43.773911"},"ELZ":{"Station":"ELZ","City":"Wellsville","Lat":"42.109528","Long":"-77.989971"},"EMM":{"Station":"EMM","City":"Kemmerer","Lat":"41.824083","Long":"-110.556943"},"EMP":{"Station":"EMP","City":"Emporia","Lat":"38.330556","Long":"-96.189943"},"EMT":{"Station":"EMT","City":"El Monte","Lat":"34.086009","Long":"-118.034844"},"END":{"Station":"END","City":"Enid","Lat":"36.33953","Long":"-97.917289"},"ENF":{"Station":"ENF","City":"Enontekio","Lat":"68.362586","Long":"23.424322"},"ENK":{"Station":"ENK","City":"Enniskillen","Lat":"54.398889","Long":"-7.651666"},"ENL":{"Station":"ENL","City":"Centralia","Lat":"38.515083","Long":"-89.091138"},"ENN":{"Station":"ENN","City":"Nenana","Lat":"64.547329","Long":"-149.073974"},"ENV":{"Station":"ENV","City":"Wendover","Lat":"40.718694","Long":"-114.030888"},"ENW":{"Station":"ENW","City":"Kenosha","Lat":"42.595694","Long":"-87.927805"},"EOK":{"Station":"EOK","City":"Keokuk","Lat":"40.459908","Long":"-91.4285"},"EOS":{"Station":"EOS","City":"Neosho","Lat":"36.810806","Long":"-94.391693"},"EPH":{"Station":"EPH","City":"Ephrata","Lat":"47.308072","Long":"-119.516913"},"EPU":{"Station":"EPU","City":"P\u00e4rnu","Lat":"58.419044","Long":"24.472819"},"ERC":{"Station":"ERC","City":"Erzincan","Lat":"39.710203","Long":"39.527003"},"ERR":{"Station":"ERR","City":"Errol","Lat":"44.79255","Long":"-71.164244"},"ERS":{"Station":"ERS","City":"Windhoek","Lat":"-22.612238","Long":"17.080442"},"ERV":{"Station":"ERV","City":"Kerrville","Lat":"29.976667","Long":"-99.085471"},"ESE":{"Station":"ESE","City":"Ensenada","Lat":"31.795281","Long":"-116.602771"},"ESF":{"Station":"ESF","City":"Alexandria","Lat":"31.394903","Long":"-92.295771"},"ESK":{"Station":"ESK","City":"Eskisehir","Lat":"39.784138","Long":"30.582111"},"ESN":{"Station":"ESN","City":"Easton","Lat":"38.804167","Long":"-76.068999"},"EST":{"Station":"EST","City":"Estherville","Lat":"43.407444","Long":"-94.746443"},"ESW":{"Station":"ESW","City":"Easton","Lat":"47.254184","Long":"-121.185531"},"ETB":{"Station":"ETB","City":"West Bend","Lat":"43.422167","Long":"-88.127916"},"ETN":{"Station":"ETN","City":"Eastland","Lat":"32.414889","Long":"-98.809693"},"ETS":{"Station":"ETS","City":"Enterprise","Lat":"31.299722","Long":"-85.899832"},"EUE":{"Station":"EUE","City":"Eureka","Lat":"39.60375","Long":"-116.00361"},"EUF":{"Station":"EUF","City":"Eufaula","Lat":"31.951306","Long":"-85.128916"},"EUX":{"Station":"EUX","City":"Oranjestad","Lat":"17.496492","Long":"-62.979438"},"EVM":{"Station":"EVM","City":"Eveleth","Lat":"47.425111","Long":"-92.498082"},"EVW":{"Station":"EVW","City":"Evanston","Lat":"41.274778","Long":"-111.034638"},"EWK":{"Station":"EWK","City":"Newton","Lat":"38.057079","Long":"-97.275227"},"EZS":{"Station":"EZS","City":"Elazig","Lat":"38.606925","Long":"39.291417"},"FAF":{"Station":"FAF","City":"Fort Eustis","Lat":"37.132601","Long":"-76.608929"},"FAM":{"Station":"FAM","City":"Farmington","Lat":"37.761028","Long":"-90.42861"},"FAQ":{"Station":"FAQ","City":"Fitiuta Village","Lat":"-14.216109","Long":"-169.423548"},"FBK":{"Station":"FBK","City":"Fairbanks\/Ft Wainwright","Lat":"64.836724","Long":"-147.616222"},"FBL":{"Station":"FBL","City":"Faribault","Lat":"44.328969","Long":"-93.313073"},"FBR":{"Station":"FBR","City":"Fort Bridger","Lat":"41.393333","Long":"-110.405971"},"FBY":{"Station":"FBY","City":"Fairbury","Lat":"40.181972","Long":"-97.167888"},"FCH":{"Station":"FCH","City":"Fresno","Lat":"36.732111","Long":"-119.820332"},"FCM":{"Station":"FCM","City":"Minneapolis","Lat":"44.827467","Long":"-93.458574"},"FCY":{"Station":"FCY","City":"Forrest City","Lat":"34.941998","Long":"-90.774965"},"FDK":{"Station":"FDK","City":"Frederick","Lat":"39.417556","Long":"-77.374305"},"FDR":{"Station":"FDR","City":"Frederick","Lat":"34.352096","Long":"-98.983908"},"FDY":{"Station":"FDY","City":"Findlay","Lat":"41.012028","Long":"-83.66861"},"FEN":{"Station":"FEN","City":"Fernando de Noronha","Lat":"-3.854927","Long":"-32.423335"},"FEP":{"Station":"FEP","City":"Freeport","Lat":"42.246159","Long":"-89.581986"},"FET":{"Station":"FET","City":"Fremont","Lat":"41.449944","Long":"-96.521193"},"FFA":{"Station":"FFA","City":"Kill Devil Hills","Lat":"36.018223","Long":"-75.671286"},"FFL":{"Station":"FFL","City":"Fairfield","Lat":"41.05575","Long":"-91.980888"},"FFO":{"Station":"FFO","City":"Dayton","Lat":"39.825971","Long":"-84.046102"},"FFT":{"Station":"FFT","City":"Frankfort","Lat":"38.181732","Long":"-84.906749"},"FIG":{"Station":"FIG","City":"Fria","Lat":"10.350556","Long":"-13.569166"},"FJR":{"Station":"FJR","City":"Al-Fujairah","Lat":"25.112225","Long":"56.323964"},"FKB":{"Station":"FKB","City":"Karlsruhe\/Baden-Baden","Lat":"48.779353","Long":"8.0805"},"FKN":{"Station":"FKN","City":"Franklin","Lat":"36.700306","Long":"-76.902138"},"FKS":{"Station":"FKS","City":"Fukushima","Lat":"37.227431","Long":"140.430678"},"FLD":{"Station":"FLD","City":"Fond Du Lac","Lat":"43.771167","Long":"-88.488416"},"FLP":{"Station":"FLP","City":"Flippin","Lat":"36.290889","Long":"-92.590249"},"FLT":{"Station":"FLT","City":"Flat","Lat":"62.452649","Long":"-157.989069"},"FLV":{"Station":"FLV","City":"Fort Leavenworth","Lat":"39.367576","Long":"-94.914339"},"FLX":{"Station":"FLX","City":"Fallon","Lat":"39.499083","Long":"-118.748749"},"FME":{"Station":"FME","City":"Fort Meade","Lat":"39.085387","Long":"-76.759413"},"FMH":{"Station":"FMH","City":"Falmouth","Lat":"41.659139","Long":"-70.522805"},"FMY":{"Station":"FMY","City":"Fort Myers","Lat":"26.586611","Long":"-81.863249"},"FNA":{"Station":"FNA","City":"Freetown","Lat":"8.616444","Long":"-13.195488"},"FNB":{"Station":"FNB","City":"Neubrandenburg\/Trollenhagen","Lat":"53.602","Long":"13.306"},"FNI":{"Station":"FNI","City":"N\u00eemes","Lat":"43.7575","Long":"4.416389"},"FNJ":{"Station":"FNJ","City":"Pyongyang","Lat":"39.224061","Long":"125.67015"},"FOA":{"Station":"FOA","City":"Foula","Lat":"60.121","Long":"-2.052"},"FOK":{"Station":"FOK","City":"Westhampton Beach","Lat":"40.843667","Long":"-72.631777"},"FOT":{"Station":"FOT","City":"Forster","Lat":"-32.201943","Long":"152.481389"},"FPR":{"Station":"FPR","City":"Fort Pierce","Lat":"27.497472","Long":"-80.372638"},"FRH":{"Station":"FRH","City":"French Lick","Lat":"38.506222","Long":"-86.636943"},"FRI":{"Station":"FRI","City":"Fort Riley","Lat":"39.052641","Long":"-96.764487"},"FRL":{"Station":"FRL","City":"Forl\u00ec","Lat":"44.194753","Long":"12.070094"},"FRR":{"Station":"FRR","City":"Front Royal","Lat":"38.917538","Long":"-78.253382"},"FSC":{"Station":"FSC","City":"Figari","Lat":"41.502222","Long":"9.096667"},"FSI":{"Station":"FSI","City":"Fort Sill","Lat":"34.649833","Long":"-98.402166"},"FSK":{"Station":"FSK","City":"Fort Scott","Lat":"37.798361","Long":"-94.76936"},"FST":{"Station":"FST","City":"Fort Stockton","Lat":"30.91525","Long":"-102.912777"},"FSU":{"Station":"FSU","City":"Fort Sumner","Lat":"34.487771","Long":"-104.216947"},"FTK":{"Station":"FTK","City":"Fort Knox","Lat":"37.907208","Long":"-85.971569"},"FTY":{"Station":"FTY","City":"Atlanta","Lat":"33.779126","Long":"-84.521365"},"FUL":{"Station":"FUL","City":"Fullerton","Lat":"33.872014","Long":"-117.979783"},"FUN":{"Station":"FUN","City":"Funafuti Atoll","Lat":"-8.524999","Long":"179.196389"},"FWL":{"Station":"FWL","City":"Farewell","Lat":"62.509111","Long":"-153.890282"},"FXE":{"Station":"FXE","City":"Fort Lauderdale","Lat":"26.197279","Long":"-80.170705"},"FXY":{"Station":"FXY","City":"Forest City","Lat":"43.234757","Long":"-93.624103"},"FYM":{"Station":"FYM","City":"Fayetteville","Lat":"35.059694","Long":"-86.563999"},"FYU":{"Station":"FYU","City":"Fort Yukon","Lat":"66.572417","Long":"-145.246332"},"FZO":{"Station":"FZO","City":"Bristol","Lat":"51.519444","Long":"-2.590832"},"GAB":{"Station":"GAB","City":"Gabbs","Lat":"38.924091","Long":"-117.959006"},"GAD":{"Station":"GAD","City":"Gadsden","Lat":"33.972649","Long":"-86.089082"},"GAF":{"Station":"GAF","City":"Gafsa","Lat":"34.415556","Long":"8.813611"},"GAG":{"Station":"GAG","City":"Gage","Lat":"36.295539","Long":"-99.776423"},"GAI":{"Station":"GAI","City":"Gaithersburg","Lat":"39.168333","Long":"-77.165999"},"GAM":{"Station":"GAM","City":"Gambell","Lat":"63.766611","Long":"-171.732777"},"GAN":{"Station":"GAN","City":"Gan","Lat":"-0.693332","Long":"73.155556"},"GAO":{"Station":"GAO","City":"Guant\u00e1namo","Lat":"20.085419","Long":"-75.158327"},"GAS":{"Station":"GAS","City":"Garissa","Lat":"-0.463507","Long":"39.648297"},"GAY":{"Station":"GAY","City":"Gaya","Lat":"24.744308","Long":"84.951175"},"GBD":{"Station":"GBD","City":"Great Bend","Lat":"38.34425","Long":"-98.859193"},"GBH":{"Station":"GBH","City":"Galbraith Lake","Lat":"68.479667","Long":"-149.489916"},"GBZ":{"Station":"GBZ","City":"Great Barrier Island","Lat":"-36.241388","Long":"175.471944"},"GCY":{"Station":"GCY","City":"Greeneville","Lat":"36.196013","Long":"-82.81099"},"GDJ":{"Station":"GDJ","City":"Gandajika","Lat":"-6.733","Long":"23.95"},"GDW":{"Station":"GDW","City":"Gladwin","Lat":"43.970589","Long":"-84.475019"},"GED":{"Station":"GED","City":"Georgetown","Lat":"38.687884","Long":"-75.358347"},"GEO":{"Station":"GEO","City":"Georgetown","Lat":"6.498553","Long":"-58.254118"},"GEV":{"Station":"GEV","City":"G\u00e4llivare","Lat":"67.132408","Long":"20.814636"},"GEX":{"Station":"GEX","City":"Geelong","Lat":"-38.225277","Long":"144.333056"},"GEY":{"Station":"GEY","City":"Greybull","Lat":"44.517944","Long":"-108.082999"},"GFD":{"Station":"GFD","City":"Greenfield","Lat":"39.790321","Long":"-85.736088"},"GFL":{"Station":"GFL","City":"Glens Falls","Lat":"43.341222","Long":"-73.610305"},"GGE":{"Station":"GGE","City":"Georgetown","Lat":"33.311389","Long":"-79.320305"},"GHM":{"Station":"GHM","City":"Centerville","Lat":"35.837417","Long":"-87.445388"},"GIF":{"Station":"GIF","City":"Winter Haven","Lat":"28.062917","Long":"-81.753305"},"GIS":{"Station":"GIS","City":"Gisborne","Lat":"-38.663332","Long":"177.978333"},"GJA":{"Station":"GJA","City":"Guanaja","Lat":"16.445367","Long":"-85.90661"},"GKE":{"Station":"GKE","City":"Geilenkirchen","Lat":"50.961","Long":"6.042"},"GKN":{"Station":"GKN","City":"Gulkana","Lat":"62.154944","Long":"-145.454332"},"GKT":{"Station":"GKT","City":"Sevierville","Lat":"35.857759","Long":"-83.528704"},"GLE":{"Station":"GLE","City":"Gainesville","Lat":"33.652194","Long":"-97.197277"},"GLO":{"Station":"GLO","City":"Gloucester\/Cheltenham","Lat":"51.894167","Long":"-2.167221"},"GLR":{"Station":"GLR","City":"Gaylord","Lat":"45.013028","Long":"-84.703443"},"GLT":{"Station":"GLT","City":"Gladstone","Lat":"-23.869721","Long":"151.222778"},"GLW":{"Station":"GLW","City":"Glasgow","Lat":"37.031778","Long":"-85.953749"},"GML":{"Station":"GML","City":"Gostomel","Lat":"50.603497","Long":"30.191933"},"GMP":{"Station":"GMP","City":"Seoul","Lat":"37.558311","Long":"126.790586"},"GMU":{"Station":"GMU","City":"Greenville","Lat":"34.847944","Long":"-82.349999"},"GNG":{"Station":"GNG","City":"Gooding","Lat":"42.917167","Long":"-114.765166"},"GNT":{"Station":"GNT","City":"Grants","Lat":"35.167278","Long":"-107.902055"},"GNU":{"Station":"GNU","City":"Goodnews","Lat":"59.11786","Long":"-161.573667"},"GOK":{"Station":"GOK","City":"Guthrie","Lat":"35.851523","Long":"-97.416177"},"GOL":{"Station":"GOL","City":"Gold Beach","Lat":"42.415298","Long":"-124.424921"},"GOP":{"Station":"GOP","City":"Gorakhpur","Lat":"26.739708","Long":"83.449708"},"GOY":{"Station":"GOY","City":"Gal Oya","Lat":"7.337081","Long":"81.625881"},"GOZ":{"Station":"GOZ","City":"Gorna Orechovitsa","Lat":"43.151444","Long":"25.712889"},"GPA":{"Station":"GPA","City":"Patras","Lat":"38.151111","Long":"21.425556"},"GPI":{"Station":"GPI","City":"Guapi","Lat":"2.570133","Long":"-77.898599"},"GPL":{"Station":"GPL","City":"Gu\u00e1piles","Lat":"10.217","Long":"-83.8"},"GPZ":{"Station":"GPZ","City":"Grand Rapids","Lat":"47.210139","Long":"-93.509916"},"GQQ":{"Station":"GQQ","City":"Galion","Lat":"40.753389","Long":"-82.723805"},"GRD":{"Station":"GRD","City":"Greenwood","Lat":"34.248722","Long":"-82.159082"},"GRE":{"Station":"GRE","City":"Greenville","Lat":"38.836222","Long":"-89.378888"},"GRF":{"Station":"GRF","City":"Fort Lewis\/Tacoma","Lat":"47.079222","Long":"-122.580777"},"GRK":{"Station":"GRK","City":"Fort Hood\/Killeen","Lat":"31.06725","Long":"-97.828916"},"GRN":{"Station":"GRN","City":"Gordon","Lat":"42.805972","Long":"-102.175249"},"GSB":{"Station":"GSB","City":"Goldsboro","Lat":"35.339385","Long":"-77.960591"},"GSE":{"Station":"GSE","City":"G\u00f6teborg","Lat":"57.774722","Long":"11.870372"},"GSH":{"Station":"GSH","City":"Goshen","Lat":"41.526264","Long":"-85.794161"},"GSN":{"Station":"GSN","City":"Mount Gunson","Lat":"-31.459721","Long":"137.173889"},"GST":{"Station":"GST","City":"Gustavus","Lat":"58.425278","Long":"-135.707416"},"GTE":{"Station":"GTE","City":"Groote Eylandt","Lat":"-13.974999","Long":"136.46"},"GTG":{"Station":"GTG","City":"Grantsburg","Lat":"45.798378","Long":"-92.66433"},"GUS":{"Station":"GUS","City":"Peru","Lat":"40.648094","Long":"-86.152118"},"GUY":{"Station":"GUY","City":"Guymon","Lat":"36.685063","Long":"-101.507799"},"GVE":{"Station":"GVE","City":"Gordonsville","Lat":"38.155996","Long":"-78.165779"},"GVL":{"Station":"GVL","City":"Gainesville","Lat":"34.272627","Long":"-83.830222"},"GVT":{"Station":"GVT","City":"Greenville","Lat":"33.067833","Long":"-96.065332"},"GWO":{"Station":"GWO","City":"Greenwood","Lat":"33.494299","Long":"-90.084798"},"GWS":{"Station":"GWS","City":"Glenwood Springs","Lat":"39.506","Long":"-107.309082"},"GXY":{"Station":"GXY","City":"Greeley","Lat":"40.437417","Long":"-104.633221"},"GYI":{"Station":"GYI","City":"Gisenyi","Lat":"-1.677202","Long":"29.258875"},"GYL":{"Station":"GYL","City":"Argyle","Lat":"-16.636943","Long":"128.451389"},"GYN":{"Station":"GYN","City":"Goiania","Lat":"-16.632032","Long":"-49.220685"},"GZT":{"Station":"GZT","City":"Gaziantep","Lat":"36.947183","Long":"37.478683"},"HAA":{"Station":"HAA","City":"Hasvik","Lat":"70.486675","Long":"22.139744"},"HAB":{"Station":"HAB","City":"Hamilton","Lat":"34.116944","Long":"-87.998221"},"HAF":{"Station":"HAF","City":"Half Moon Bay","Lat":"37.513444","Long":"-122.501166"},"HAI":{"Station":"HAI","City":"Three Rivers","Lat":"41.959737","Long":"-85.593064"},"HAO":{"Station":"HAO","City":"Hamilton","Lat":"39.36375","Long":"-84.521943"},"HAQ":{"Station":"HAQ","City":"Hanimaadhoo","Lat":"6.746383","Long":"73.1685"},"HAX":{"Station":"HAX","City":"Muskogee","Lat":"35.745933","Long":"-95.412748"},"HAY":{"Station":"HAY","City":"Haycock","Lat":"65.200989","Long":"-161.156778"},"HBG":{"Station":"HBG","City":"Hattiesburg","Lat":"31.264944","Long":"-89.252888"},"HBR":{"Station":"HBR","City":"Hobart","Lat":"34.991306","Long":"-99.051388"},"HDE":{"Station":"HDE","City":"Holdrege","Lat":"40.452089","Long":"-99.336475"},"HDH":{"Station":"HDH","City":"Mokuleia","Lat":"21.579474","Long":"-158.19728"},"HEE":{"Station":"HEE","City":"Helena\/West Helena","Lat":"34.5765","Long":"-90.675888"},"HEI":{"Station":"HEI","City":"Heide-B\u00fcsum","Lat":"54.155","Long":"8.903333"},"HEM":{"Station":"HEM","City":"Helsinki","Lat":"60.253889","Long":"25.044167"},"HES":{"Station":"HES","City":"Hermiston","Lat":"45.828222","Long":"-119.259166"},"HEZ":{"Station":"HEZ","City":"Natchez","Lat":"31.613661","Long":"-91.297335"},"HFD":{"Station":"HFD","City":"Hartford","Lat":"41.736722","Long":"-72.649443"},"HFF":{"Station":"HFF","City":"Camp Mackall","Lat":"35.036609","Long":"-79.497308"},"HFS":{"Station":"HFS","City":"Hagfors","Lat":"60.020064","Long":"13.578908"},"HHI":{"Station":"HHI","City":"Wahiawa","Lat":"21.481447","Long":"-158.037837"},"HHN":{"Station":"HHN","City":"Hahn","Lat":"49.948672","Long":"7.263892"},"HHR":{"Station":"HHR","City":"Hawthorne","Lat":"33.92284","Long":"-118.335186"},"HIE":{"Station":"HIE","City":"Whitefield","Lat":"44.367556","Long":"-71.545805"},"HIF":{"Station":"HIF","City":"Ogden","Lat":"41.123939","Long":"-111.973038"},"HIG":{"Station":"HIG","City":"Highbury","Lat":"-16.423888","Long":"143.145278"},"HII":{"Station":"HII","City":"Lake Havasu City","Lat":"34.571111","Long":"-114.358277"},"HIO":{"Station":"HIO","City":"Portland","Lat":"45.540611","Long":"-122.950193"},"HKA":{"Station":"HKA","City":"Blytheville","Lat":"35.940417","Long":"-89.830805"},"HKS":{"Station":"HKS","City":"Jackson","Lat":"32.334778","Long":"-90.222527"},"HKV":{"Station":"HKV","City":"Haskovo","Lat":"41.871781","Long":"25.604764"},"HLA":{"Station":"HLA","City":"Lanseria","Lat":"-25.938513","Long":"27.926133"},"HLB":{"Station":"HLB","City":"Batesville","Lat":"39.343129","Long":"-85.258425"},"HLC":{"Station":"HLC","City":"Hill City","Lat":"39.380194","Long":"-99.831471"},"HLM":{"Station":"HLM","City":"Holland","Lat":"42.795911","Long":"-86.161986"},"HLR":{"Station":"HLR","City":"Fort Hood","Lat":"31.138741","Long":"-97.714483"},"HMJ":{"Station":"HMJ","City":"Khmelnitskiy","Lat":"49.359694","Long":"26.933361"},"HMN":{"Station":"HMN","City":"Alamogordo","Lat":"32.851858","Long":"-106.108537"},"HMR":{"Station":"HMR","City":"Hamar","Lat":"60.817","Long":"11.067"},"HMT":{"Station":"HMT","City":"Hemet","Lat":"33.733992","Long":"-117.022543"},"HNB":{"Station":"HNB","City":"Huntingburg","Lat":"38.249028","Long":"-86.953693"},"HNE":{"Station":"HNE","City":"Tahneta Pass Lodge","Lat":"61.90143","Long":"-147.304406"},"HNM":{"Station":"HNM","City":"Hana","Lat":"20.795637","Long":"-156.014437"},"HOP":{"Station":"HOP","City":"Fort Campbell\/Hopkinsville","Lat":"36.672577","Long":"-87.492372"},"HOQ":{"Station":"HOQ","City":"Hof","Lat":"50.288836","Long":"11.854919"},"HOV":{"Station":"HOV","City":"Orsta-Volda","Lat":"62.183","Long":"6.067"},"HPT":{"Station":"HPT","City":"Hampton","Lat":"42.723694","Long":"-93.226332"},"HPY":{"Station":"HPY","City":"Baytown","Lat":"29.786083","Long":"-94.952666"},"HQM":{"Station":"HQM","City":"Hoquiam","Lat":"46.971194","Long":"-123.936555"},"HRT":{"Station":"HRT","City":"Linton-on-Ouse","Lat":"54.048911","Long":"-1.252746"},"HSB":{"Station":"HSB","City":"Harrisburg","Lat":"37.811256","Long":"-88.550259"},"HSH":{"Station":"HSH","City":"Las Vegas","Lat":"35.972861","Long":"-115.134443"},"HSP":{"Station":"HSP","City":"Hot Springs","Lat":"37.951444","Long":"-79.833893"},"HST":{"Station":"HST","City":"Homestead","Lat":"25.48855","Long":"-80.383566"},"HTH":{"Station":"HTH","City":"Hawthorne","Lat":"38.545083","Long":"-118.632416"},"HTL":{"Station":"HTL","City":"Houghton Lake","Lat":"44.359889","Long":"-84.669471"},"HTO":{"Station":"HTO","City":"East Hampton","Lat":"40.959417","Long":"-72.251666"},"HUA":{"Station":"HUA","City":"Redstone Arsenal","Lat":"34.678655","Long":"-86.684781"},"HUL":{"Station":"HUL","City":"Houlton","Lat":"46.124608","Long":"-67.79236"},"HUS":{"Station":"HUS","City":"Hughes","Lat":"66.039083","Long":"-154.264693"},"HUT":{"Station":"HUT","City":"Hutchinson","Lat":"38.0655","Long":"-97.860638"},"HVE":{"Station":"HVE","City":"Hanksville","Lat":"38.418037","Long":"-110.704037"},"HVG":{"Station":"HVG","City":"Honningsv\u00e5g","Lat":"71.009722","Long":"25.983611"},"HVS":{"Station":"HVS","City":"Hartsville","Lat":"34.403083","Long":"-80.119221"},"HWD":{"Station":"HWD","City":"Hayward","Lat":"37.658917","Long":"-122.121749"},"HWO":{"Station":"HWO","City":"Hollywood","Lat":"26.001222","Long":"-80.240721"},"HYR":{"Station":"HYR","City":"Hayward","Lat":"46.025278","Long":"-91.444249"},"HZL":{"Station":"HZL","City":"Hazleton","Lat":"40.986778","Long":"-75.994888"},"IAN":{"Station":"IAN","City":"Kiana","Lat":"66.975944","Long":"-160.436527"},"IAR":{"Station":"IAR","City":"Yaroslavl","Lat":"57.560667","Long":"40.157369"},"IBE":{"Station":"IBE","City":"Ibagu\u00e9","Lat":"4.421333","Long":"-75.132521"},"ICL":{"Station":"ICL","City":"Clarinda","Lat":"40.722194","Long":"-95.02661"},"IDG":{"Station":"IDG","City":"Ida Grove","Lat":"42.332598","Long":"-95.444887"},"IDI":{"Station":"IDI","City":"Indiana","Lat":"40.632222","Long":"-79.105527"},"IDP":{"Station":"IDP","City":"Independence","Lat":"37.158361","Long":"-95.778388"},"IDR":{"Station":"IDR","City":"Indore","Lat":"22.721786","Long":"75.801086"},"IEG":{"Station":"IEG","City":"Zielona G\u00f3ra","Lat":"52.138517","Long":"15.798556"},"IFA":{"Station":"IFA","City":"Iowa Falls","Lat":"42.471358","Long":"-93.270718"},"IFO":{"Station":"IFO","City":"Ivano-Frankovsk","Lat":"48.884167","Long":"24.686111"},"IGG":{"Station":"IGG","City":"Igiugig","Lat":"59.324042","Long":"-155.901772"},"IGS":{"Station":"IGS","City":"Ingolstadt","Lat":"48.716","Long":"11.534"},"IHN":{"Station":"IHN","City":"Qishn","Lat":"15.417","Long":"51.683"},"IJX":{"Station":"IJX","City":"Jacksonville","Lat":"39.774611","Long":"-90.238277"},"IKA":{"Station":"IKA","City":"Tehran","Lat":"35.416111","Long":"51.152222"},"IKK":{"Station":"IKK","City":"Kankakee","Lat":"41.071389","Long":"-87.846277"},"IKO":{"Station":"IKO","City":"Nikolski","Lat":"52.941556","Long":"-168.849027"},"ILG":{"Station":"ILG","City":"Wilmington","Lat":"39.678722","Long":"-75.606638"},"ILN":{"Station":"ILN","City":"Wilmington","Lat":"39.42792","Long":"-83.792118"},"IML":{"Station":"IML","City":"Imperial","Lat":"40.510326","Long":"-101.620145"},"IMM":{"Station":"IMM","City":"Immokalee","Lat":"26.433821","Long":"-81.401376"},"INI":{"Station":"INI","City":"Nis","Lat":"43.337289","Long":"21.853722"},"INJ":{"Station":"INJ","City":"Injune","Lat":"-25.85","Long":"148.533"},"INK":{"Station":"INK","City":"Wink","Lat":"31.779806","Long":"-103.201693"},"INS":{"Station":"INS","City":"Indian Springs","Lat":"36.584006","Long":"-115.680249"},"INW":{"Station":"INW","City":"Winslow","Lat":"35.021694","Long":"-110.722916"},"IOW":{"Station":"IOW","City":"Iowa City","Lat":"41.639767","Long":"-91.548135"},"IPL":{"Station":"IPL","City":"Imperial","Lat":"32.834222","Long":"-115.578749"},"IRK":{"Station":"IRK","City":"Kirksville","Lat":"40.093472","Long":"-92.544916"},"IRO":{"Station":"IRO","City":"Birao","Lat":"10.236389","Long":"22.716944"},"IRS":{"Station":"IRS","City":"Sturgis","Lat":"41.813333","Long":"-85.438916"},"ISB":{"Station":"ISB","City":"Islamabad","Lat":"33.616653","Long":"73.099233"},"ISE":{"Station":"ISE","City":"Isparta","Lat":"37.855417","Long":"30.368397"},"ISM":{"Station":"ISM","City":"Orlando","Lat":"28.289806","Long":"-81.437082"},"ISQ":{"Station":"ISQ","City":"Manistique","Lat":"45.974639","Long":"-86.171832"},"ISU":{"Station":"ISU","City":"Sulaimaniyah","Lat":"35.5608","Long":"45.314717"},"ISW":{"Station":"ISW","City":"Wisconsin Rapids","Lat":"44.360646","Long":"-89.83814"},"IUE":{"Station":"IUE","City":"Alofi","Lat":"-19.080027","Long":"-169.925638"},"IVC":{"Station":"IVC","City":"Invercargill","Lat":"-46.414999","Long":"168.32"},"IVL":{"Station":"IVL","City":"Ivalo","Lat":"68.607269","Long":"27.405328"},"IVR":{"Station":"IVR","City":"Inverell","Lat":"-29.888332","Long":"151.144167"},"IWA":{"Station":"IWA","City":"Ivanovo","Lat":"56.939444","Long":"40.940833"},"IWS":{"Station":"IWS","City":"Houston","Lat":"29.818194","Long":"-95.67261"},"IXA":{"Station":"IXA","City":"Agartala","Lat":"23.886978","Long":"91.24045"},"IXC":{"Station":"IXC","City":"Chandigarh","Lat":"30.673469","Long":"76.788542"},"IXD":{"Station":"IXD","City":"Allahabad","Lat":"25.440064","Long":"81.733872"},"IXG":{"Station":"IXG","City":"Belgaum","Lat":"15.859286","Long":"74.618292"},"IXH":{"Station":"IXH","City":"Kailashahar","Lat":"24.308192","Long":"92.007156"},"IXI":{"Station":"IXI","City":"Lilabari","Lat":"27.295494","Long":"94.09765"},"IXK":{"Station":"IXK","City":"Keshod","Lat":"21.317069","Long":"70.270403"},"IXL":{"Station":"IXL","City":"Leh","Lat":"34.135872","Long":"77.546514"},"IXP":{"Station":"IXP","City":"Pathankot","Lat":"32.233778","Long":"75.634628"},"IXQ":{"Station":"IXQ","City":"Kamalpur","Lat":"24.135178","Long":"91.810831"},"IXR":{"Station":"IXR","City":"Ranchi","Lat":"23.31425","Long":"85.321675"},"IXS":{"Station":"IXS","City":"Silchar","Lat":"24.912928","Long":"92.978742"},"IXT":{"Station":"IXT","City":"Pasighat","Lat":"28.066111","Long":"95.335556"},"IXV":{"Station":"IXV","City":"Along","Lat":"28.175317","Long":"94.802036"},"IXW":{"Station":"IXW","City":"Jamshedpur","Lat":"22.813211","Long":"86.168844"},"IXY":{"Station":"IXY","City":"Kandla","Lat":"23.112719","Long":"70.100289"},"IZA":{"Station":"IZA","City":"Juiz de Fora","Lat":"-21.513332","Long":"-43.173055"},"JAF":{"Station":"JAF","City":"Jaffna","Lat":"9.792331","Long":"80.070089"},"JAS":{"Station":"JAS","City":"Jasper","Lat":"30.885694","Long":"-94.034943"},"JAU":{"Station":"JAU","City":"Jauja","Lat":"-11.783143","Long":"-75.473393"},"JCI":{"Station":"JCI","City":"Olathe","Lat":"38.830917","Long":"-94.890305"},"JCT":{"Station":"JCT","City":"Junction","Lat":"30.511111","Long":"-99.762888"},"JDA":{"Station":"JDA","City":"John Day","Lat":"44.402867","Long":"-118.967882"},"JDF":{"Station":"JDF","City":"Juiz de Fora","Lat":"-21.791499","Long":"-43.386777"},"JDN":{"Station":"JDN","City":"Jordan","Lat":"47.32875","Long":"-106.952688"},"JDO":{"Station":"JDO","City":"Juazeiro do Norte","Lat":"-7.218957","Long":"-39.270099"},"JEF":{"Station":"JEF","City":"Jefferson City","Lat":"38.591179","Long":"-92.156143"},"JER":{"Station":"JER","City":"Jersey","Lat":"49.207947","Long":"-2.195507"},"JGB":{"Station":"JGB","City":"Jagdalpur","Lat":"19.074328","Long":"82.036817"},"JIM":{"Station":"JIM","City":"Jimma","Lat":"7.666094","Long":"36.816639"},"JJI":{"Station":"JJI","City":"Juanjui","Lat":"-7.169099","Long":"-76.72856"},"JKH":{"Station":"JKH","City":"Chios","Lat":"38.343175","Long":"26.140572"},"JKL":{"Station":"JKL","City":"Kalymnos","Lat":"36.963333","Long":"26.940556"},"JLA":{"Station":"JLA","City":"Cooper Landing","Lat":"60.482745","Long":"-149.718801"},"JLR":{"Station":"JLR","City":"Jabalpur","Lat":"23.177817","Long":"80.052047"},"JMU":{"Station":"JMU","City":"Jiamusi","Lat":"46.843394","Long":"130.465389"},"JOE":{"Station":"JOE","City":"Joensuu","Lat":"62.662906","Long":"29.60755"},"JOT":{"Station":"JOT","City":"Joliet","Lat":"41.517694","Long":"-88.17561"},"JPA":{"Station":"JPA","City":"Joao Pessoa","Lat":"-7.14838","Long":"-34.95068"},"JRF":{"Station":"JRF","City":"Kapolei","Lat":"21.307354","Long":"-158.070301"},"JRH":{"Station":"JRH","City":"Jorhat","Lat":"26.731528","Long":"94.175536"},"JRS":{"Station":"JRS","City":"Jerusalem","Lat":"31.864722","Long":"35.219167"},"JUI":{"Station":"JUI","City":"Juist","Lat":"53.681111","Long":"7.056389"},"JUV":{"Station":"JUV","City":"Upernavik","Lat":"72.790189","Long":"-56.130585"},"JVL":{"Station":"JVL","City":"Janesville","Lat":"42.62025","Long":"-89.041555"},"JWN":{"Station":"JWN","City":"Zanjan","Lat":"36.77365","Long":"48.359422"},"JXN":{"Station":"JXN","City":"Jackson","Lat":"42.260417","Long":"-84.460443"},"JYR":{"Station":"JYR","City":"Jiroft","Lat":"28.726925","Long":"57.670269"},"KAC":{"Station":"KAC","City":"Kameshli","Lat":"37.020625","Long":"41.191394"},"KBL":{"Station":"KBL","City":"Kabul","Lat":"34.565842","Long":"69.212419"},"KCM":{"Station":"KCM","City":"Kahramanmaras","Lat":"37.538967","Long":"36.953411"},"KCR":{"Station":"KCR","City":"Colorado Creek","Lat":"63.567723","Long":"-155.989043"},"KCZ":{"Station":"KCZ","City":"Kochi","Lat":"33.546111","Long":"133.669444"},"KDK":{"Station":"KDK","City":"Kodiak","Lat":"57.805918","Long":"-152.37384"},"KDL":{"Station":"KDL","City":"K\u00e4rdla","Lat":"58.990756","Long":"22.830733"},"KDM":{"Station":"KDM","City":"Kaadedhdhoo","Lat":"0.488333","Long":"72.996111"},"KDO":{"Station":"KDO","City":"Kadhdhoo","Lat":"1.858333","Long":"73.519722"},"KEB":{"Station":"KEB","City":"Nanwalek","Lat":"59.352148","Long":"-151.925155"},"KEK":{"Station":"KEK","City":"Ekwok","Lat":"59.354806","Long":"-157.472082"},"KGL":{"Station":"KGL","City":"Kigali","Lat":"-1.968627","Long":"30.13945"},"KGO":{"Station":"KGO","City":"Kirovograd","Lat":"48.542778","Long":"32.285"},"KGS":{"Station":"KGS","City":"Kos","Lat":"36.793335","Long":"27.091667"},"KGX":{"Station":"KGX","City":"Grayling","Lat":"62.892083","Long":"-160.066388"},"KGZ":{"Station":"KGZ","City":"Glacier Creek","Lat":"61.455134","Long":"-142.38095"},"KHC":{"Station":"KHC","City":"Kerch","Lat":"45.372778","Long":"36.402778"},"KIC":{"Station":"KIC","City":"King City","Lat":"36.228556","Long":"-121.121305"},"KIJ":{"Station":"KIJ","City":"Niigata","Lat":"37.955892","Long":"139.120717"},"KIK":{"Station":"KIK","City":"Kirkuk","Lat":"35.469478","Long":"44.348933"},"KIM":{"Station":"KIM","City":"Kimberley","Lat":"-28.802833","Long":"24.765167"},"KKA":{"Station":"KKA","City":"Koyuk","Lat":"64.939489","Long":"-161.154265"},"KKE":{"Station":"KKE","City":"Kerikeri\/Bay of Islands","Lat":"-35.262777","Long":"173.911944"},"KKU":{"Station":"KKU","City":"Ekuk","Lat":"58.811193","Long":"-158.558841"},"KLG":{"Station":"KLG","City":"Kalskag","Lat":"61.536274","Long":"-160.34133"},"KLS":{"Station":"KLS","City":"Kelso","Lat":"46.118","Long":"-122.898388"},"KLV":{"Station":"KLV","City":"Karlovy Vary","Lat":"50.202978","Long":"12.914983"},"KMK":{"Station":"KMK","City":"Makabana","Lat":"-3.483","Long":"12.617"},"KNB":{"Station":"KNB","City":"Kanab","Lat":"37.011106","Long":"-112.531193"},"KNW":{"Station":"KNW","City":"New Stuyahok","Lat":"59.451538","Long":"-157.373163"},"KPC":{"Station":"KPC","City":"Port Clarence","Lat":"65.253456","Long":"-166.857627"},"KPS":{"Station":"KPS","City":"Kempsey","Lat":"-31.074443","Long":"152.769722"},"KPV":{"Station":"KPV","City":"Perryville","Lat":"55.906724","Long":"-159.160828"},"KRQ":{"Station":"KRQ","City":"Kramatorsk","Lat":"48.705556","Long":"37.628889"},"KSM":{"Station":"KSM","City":"St. Mary's","Lat":"62.060833","Long":"-163.301832"},"KSN":{"Station":"KSN","City":"Kostanay","Lat":"53.206944","Long":"63.550278"},"KSY":{"Station":"KSY","City":"Kars","Lat":"40.562222","Long":"43.115002"},"KTP":{"Station":"KTP","City":"Kingston","Lat":"17.988558","Long":"-76.82376"},"KTS":{"Station":"KTS","City":"Brevig Mission","Lat":"65.331333","Long":"-166.465721"},"KUT":{"Station":"KUT","City":"Kutaisi","Lat":"42.176653","Long":"42.482583"},"KVB":{"Station":"KVB","City":"Sk\u00f6vde","Lat":"58.4564","Long":"13.972672"},"KVC":{"Station":"KVC","City":"King Cove","Lat":"55.116347","Long":"-162.266226"},"KVL":{"Station":"KVL","City":"Kivalina","Lat":"67.736139","Long":"-164.563499"},"KWJ":{"Station":"KWJ","City":"Gwangju","Lat":"35.126389","Long":"126.808889"},"KXE":{"Station":"KXE","City":"Klerksdorp","Lat":"-26.871063","Long":"26.718003"},"KXF":{"Station":"KXF","City":"Koro Island","Lat":"-17.345832","Long":"179.421944"},"KYA":{"Station":"KYA","City":"Konya","Lat":"37.979","Long":"32.561861"},"KYK":{"Station":"KYK","City":"Karluk","Lat":"57.566086","Long":"-154.453882"},"KYU":{"Station":"KYU","City":"Koyukuk","Lat":"64.875806","Long":"-157.730443"},"KZI":{"Station":"KZI","City":"Kozani","Lat":"40.28611","Long":"21.840834"},"LAA":{"Station":"LAA","City":"Lamar","Lat":"38.069694","Long":"-102.688499"},"LAL":{"Station":"LAL","City":"Lakeland","Lat":"27.988917","Long":"-82.018555"},"LAM":{"Station":"LAM","City":"Los Alamos","Lat":"35.879686","Long":"-106.268685"},"LBC":{"Station":"LBC","City":"L\u00fcbeck","Lat":"53.805367","Long":"10.719222"},"LBI":{"Station":"LBI","City":"Albi","Lat":"43.913278","Long":"2.11675"},"LBO":{"Station":"LBO","City":"Lusambo","Lat":"-4.961666","Long":"23.378333"},"LBR":{"Station":"LBR","City":"L\u00e1brea","Lat":"-7.278971","Long":"-64.769471"},"LBT":{"Station":"LBT","City":"Lumberton","Lat":"34.609806","Long":"-79.059555"},"LBX":{"Station":"LBX","City":"Lubang","Lat":"13.855428","Long":"120.105342"},"LCG":{"Station":"LCG","City":"La Coruna","Lat":"43.302061","Long":"-8.377255"},"LCI":{"Station":"LCI","City":"Laconia","Lat":"43.573042","Long":"-71.417841"},"LCJ":{"Station":"LCJ","City":"Lodz","Lat":"51.721881","Long":"19.398133"},"LCK":{"Station":"LCK","City":"Columbus","Lat":"39.813778","Long":"-82.927805"},"LDJ":{"Station":"LDJ","City":"Linden","Lat":"40.617444","Long":"-74.244582"},"LDM":{"Station":"LDM","City":"Ludington","Lat":"43.962528","Long":"-86.407916"},"LDY":{"Station":"LDY","City":"Londonderry","Lat":"55.042778","Long":"-7.16111"},"LEC":{"Station":"LEC","City":"Len\u00e7\u00f5is","Lat":"-12.482288","Long":"-41.276968"},"LEE":{"Station":"LEE","City":"Leesburg","Lat":"28.822889","Long":"-81.808416"},"LEM":{"Station":"LEM","City":"Lemmon","Lat":"45.918381","Long":"-102.105535"},"LEW":{"Station":"LEW","City":"Auburn\/Lewiston","Lat":"44.048473","Long":"-70.283506"},"LEY":{"Station":"LEY","City":"Lelystad","Lat":"52.460278","Long":"5.527222"},"LFI":{"Station":"LFI","City":"Hampton","Lat":"37.082879","Long":"-76.360545"},"LHV":{"Station":"LHV","City":"Lock Haven","Lat":"41.135778","Long":"-77.422305"},"LIB":{"Station":"LIB","City":"Limbunya","Lat":"-17.235555","Long":"129.881944"},"LIC":{"Station":"LIC","City":"Limon","Lat":"39.274778","Long":"-103.66586"},"LID":{"Station":"LID","City":"Leiden","Lat":"52.166139","Long":"4.417944"},"LKK":{"Station":"LKK","City":"Kulik Lake","Lat":"58.965005","Long":"-155.095611"},"LKL":{"Station":"LKL","City":"Lakselv","Lat":"70.068814","Long":"24.973489"},"LKP":{"Station":"LKP","City":"Lake Placid","Lat":"44.264472","Long":"-73.96186"},"LKV":{"Station":"LKV","City":"Lakeview","Lat":"42.161111","Long":"-120.399082"},"LMP":{"Station":"LMP","City":"Lampedusa","Lat":"35.497914","Long":"12.618083"},"LMS":{"Station":"LMS","City":"Louisville","Lat":"33.146194","Long":"-89.062499"},"LNA":{"Station":"LNA","City":"West Palm Beach","Lat":"26.593056","Long":"-80.085064"},"LND":{"Station":"LND","City":"Lander","Lat":"42.815583","Long":"-108.728249"},"LNN":{"Station":"LNN","City":"Willoughby","Lat":"41.684028","Long":"-81.389749"},"LNP":{"Station":"LNP","City":"Wise","Lat":"36.987528","Long":"-82.529999"},"LNR":{"Station":"LNR","City":"Lone Rock","Lat":"43.211861","Long":"-90.179832"},"LOL":{"Station":"LOL","City":"Lovelock","Lat":"40.066467","Long":"-118.565085"},"LOT":{"Station":"LOT","City":"Chicago\/Romeoville","Lat":"41.608111","Long":"-88.096193"},"LOU":{"Station":"LOU","City":"Louisville","Lat":"38.228","Long":"-85.663721"},"LOZ":{"Station":"LOZ","City":"London","Lat":"37.086889","Long":"-84.077388"},"LPC":{"Station":"LPC","City":"Lompoc","Lat":"34.665619","Long":"-120.467502"},"LPP":{"Station":"LPP","City":"Lappeenranta","Lat":"61.044553","Long":"28.144397"},"LQK":{"Station":"LQK","City":"Pickens","Lat":"34.809972","Long":"-82.702888"},"LRE":{"Station":"LRE","City":"Longreach","Lat":"-23.434166","Long":"144.280278"},"LRF":{"Station":"LRF","City":"Jacksonville","Lat":"34.916769","Long":"-92.146541"},"LRG":{"Station":"LRG","City":"Loralai","Lat":"30.355","Long":"68.614167"},"LRJ":{"Station":"LRJ","City":"Le Mars","Lat":"42.777944","Long":"-96.193693"},"LSB":{"Station":"LSB","City":"Lordsburg","Lat":"32.333464","Long":"-108.691738"},"LSK":{"Station":"LSK","City":"Lusk","Lat":"42.753806","Long":"-104.404555"},"LSL":{"Station":"LSL","City":"Los Chiles","Lat":"11.035277","Long":"-84.706107"},"LSN":{"Station":"LSN","City":"Los Ba\u00f1os","Lat":"37.063889","Long":"-120.86986"},"LSV":{"Station":"LSV","City":"Las Vegas","Lat":"36.2362","Long":"-115.034252"},"LTS":{"Station":"LTS","City":"Altus","Lat":"34.66646","Long":"-99.268085"},"LUD":{"Station":"LUD","City":"Luderitz","Lat":"-26.687368","Long":"15.242861"},"LUF":{"Station":"LUF","City":"Glendale","Lat":"33.534967","Long":"-112.383199"},"LUG":{"Station":"LUG","City":"Lugano","Lat":"46.004275","Long":"8.910578"},"LUK":{"Station":"LUK","City":"Cincinnati","Lat":"39.103333","Long":"-84.41861"},"LUL":{"Station":"LUL","City":"Laurel","Lat":"31.673028","Long":"-89.172805"},"LUM":{"Station":"LUM","City":"Mang City","Lat":"24.401111","Long":"98.531667"},"LUP":{"Station":"LUP","City":"Kalaupapa","Lat":"21.21104","Long":"-156.973596"},"LUR":{"Station":"LUR","City":"Cape Lisburne","Lat":"68.875128","Long":"-166.111081"},"LVK":{"Station":"LVK","City":"Livermore","Lat":"37.693389","Long":"-121.82036"},"LVL":{"Station":"LVL","City":"Lawrenceville","Lat":"36.772833","Long":"-77.794249"},"LVM":{"Station":"LVM","City":"Livingston","Lat":"45.699417","Long":"-110.448027"},"LVS":{"Station":"LVS","City":"Las Vegas","Lat":"35.654222","Long":"-105.142388"},"LWC":{"Station":"LWC","City":"Lawrence","Lat":"39.011111","Long":"-95.216471"},"LWL":{"Station":"LWL","City":"Wells","Lat":"41.117111","Long":"-114.922138"},"LWM":{"Station":"LWM","City":"Lawrence","Lat":"42.717194","Long":"-71.123416"},"LWN":{"Station":"LWN","City":"Gyoumri","Lat":"40.750369","Long":"43.859342"},"LWV":{"Station":"LWV","City":"Lawrenceville","Lat":"38.764278","Long":"-87.605499"},"LXA":{"Station":"LXA","City":"Lhasa","Lat":"29.297778","Long":"90.911944"},"LXN":{"Station":"LXN","City":"Lexington","Lat":"40.790424","Long":"-99.775913"},"LXV":{"Station":"LXV","City":"Leadville","Lat":"39.219472","Long":"-106.316416"},"LYO":{"Station":"LYO","City":"Lyons","Lat":"38.342781","Long":"-98.226875"},"MAC":{"Station":"MAC","City":"Macon","Lat":"32.821764","Long":"-83.561934"},"MAE":{"Station":"MAE","City":"Madera","Lat":"36.988611","Long":"-120.112443"},"MAO":{"Station":"MAO","City":"Manaus","Lat":"-3.03861","Long":"-60.04972"},"MAW":{"Station":"MAW","City":"Malden","Lat":"36.598205","Long":"-89.992547"},"MBG":{"Station":"MBG","City":"Mobridge","Lat":"45.546278","Long":"-100.406277"},"MBO":{"Station":"MBO","City":"Mamburao","Lat":"13.208092","Long":"120.60535"},"MBT":{"Station":"MBT","City":"Masbate","Lat":"12.369367","Long":"123.629236"},"MBX":{"Station":"MBX","City":"Maribor","Lat":"46.479861","Long":"15.686131"},"MBY":{"Station":"MBY","City":"Moberly","Lat":"39.463417","Long":"-92.426388"},"MCB":{"Station":"MCB","City":"Mc Comb","Lat":"31.178444","Long":"-90.47186"},"MCC":{"Station":"MCC","City":"Sacramento","Lat":"38.667639","Long":"-121.40061"},"MCD":{"Station":"MCD","City":"Mackinac Island","Lat":"45.864983","Long":"-84.637093"},"MCE":{"Station":"MCE","City":"Merced","Lat":"37.28475","Long":"-120.513916"},"MCF":{"Station":"MCF","City":"Tampa","Lat":"27.849342","Long":"-82.521216"},"MCX":{"Station":"MCX","City":"Makhachkala","Lat":"42.816822","Long":"47.652294"},"MCZ":{"Station":"MCZ","City":"Macei\u00f3","Lat":"-9.510807","Long":"-35.791677"},"MDD":{"Station":"MDD","City":"Midland","Lat":"32.036528","Long":"-102.101027"},"MDJ":{"Station":"MDJ","City":"Madras","Lat":"44.670167","Long":"-121.155138"},"MDO":{"Station":"MDO","City":"Middleton Island","Lat":"59.449944","Long":"-146.30724"},"MDQ":{"Station":"MDQ","City":"Mar del Plata","Lat":"-37.934166","Long":"-57.573332"},"MDS":{"Station":"MDS","City":"Middle Caicos","Lat":"21.825833","Long":"-71.802499"},"MDY":{"Station":"MDY","City":"Sand Island","Lat":"28.201483","Long":"-177.381307"},"MEB":{"Station":"MEB","City":"Melbourne","Lat":"-37.728055","Long":"144.901944"},"MEH":{"Station":"MEH","City":"Mehamn","Lat":"71.029167","Long":"27.826111"},"MEJ":{"Station":"MEJ","City":"Meadville","Lat":"41.626528","Long":"-80.214721"},"MER":{"Station":"MER","City":"Atwater","Lat":"37.380472","Long":"-120.568193"},"MEV":{"Station":"MEV","City":"Minden","Lat":"39.000917","Long":"-119.751916"},"MEZ":{"Station":"MEZ","City":"Messina","Lat":"-22.355832","Long":"29.9875"},"MFD":{"Station":"MFD","City":"Mansfield","Lat":"40.821417","Long":"-82.516638"},"MFI":{"Station":"MFI","City":"Marshfield","Lat":"44.63688","Long":"-90.189326"},"MFV":{"Station":"MFV","City":"Melfa","Lat":"37.646889","Long":"-75.761055"},"MGC":{"Station":"MGC","City":"Michigan City","Lat":"41.703317","Long":"-86.821241"},"MGE":{"Station":"MGE","City":"Marietta","Lat":"33.915281","Long":"-84.516352"},"MGJ":{"Station":"MGJ","City":"Montgomery","Lat":"41.509988","Long":"-74.264643"},"MGL":{"Station":"MGL","City":"M\u00f6nchengladbach","Lat":"51.230356","Long":"6.504494"},"MGN":{"Station":"MGN","City":"Magangue","Lat":"9.284739","Long":"-74.846091"},"MGR":{"Station":"MGR","City":"Moultrie","Lat":"31.084917","Long":"-83.803249"},"MGY":{"Station":"MGY","City":"Dayton","Lat":"39.588972","Long":"-84.22486"},"MHE":{"Station":"MHE","City":"Mitchell","Lat":"43.774833","Long":"-98.03861"},"MHL":{"Station":"MHL","City":"Marshall","Lat":"39.0955","Long":"-93.202805"},"MHM":{"Station":"MHM","City":"Minchumina","Lat":"63.885972","Long":"-152.301832"},"MHN":{"Station":"MHN","City":"Mullen","Lat":"42.049997","Long":"-101.067104"},"MHP":{"Station":"MHP","City":"Minsk","Lat":"53.864472","Long":"27.539683"},"MIB":{"Station":"MIB","City":"Minot","Lat":"48.415769","Long":"-101.358038"},"MIC":{"Station":"MIC","City":"Minneapolis","Lat":"45.061986","Long":"-93.353937"},"MIO":{"Station":"MIO","City":"Miami","Lat":"36.909222","Long":"-94.887499"},"MIT":{"Station":"MIT","City":"Shafter","Lat":"35.507475","Long":"-119.192133"},"MIV":{"Station":"MIV","City":"Millville","Lat":"39.367806","Long":"-75.072221"},"MIW":{"Station":"MIW","City":"Marshalltown","Lat":"42.11275","Long":"-92.917777"},"MJD":{"Station":"MJD","City":"Mohenjodaro","Lat":"27.335156","Long":"68.143053"},"MJF":{"Station":"MJF","City":"Mosj\u00f8en","Lat":"65.783997","Long":"13.214914"},"MJI":{"Station":"MJI","City":"Tripoli","Lat":"32.894085","Long":"13.276"},"MJQ":{"Station":"MJQ","City":"Jackson","Lat":"43.650142","Long":"-94.986572"},"MJX":{"Station":"MJX","City":"Toms River","Lat":"39.9275","Long":"-74.292388"},"MKA":{"Station":"MKA","City":"Marianske Lazne","Lat":"49.923325","Long":"12.726666"},"MKJ":{"Station":"MKJ","City":"Makoua","Lat":"-0.017","Long":"15.583"},"MKO":{"Station":"MKO","City":"Muskogee","Lat":"35.65775","Long":"-95.361638"},"MKT":{"Station":"MKT","City":"Mankato","Lat":"44.222778","Long":"-93.919305"},"MKV":{"Station":"MKV","City":"Mt. Cavenagh","Lat":"-25.967499","Long":"133.208333"},"MLC":{"Station":"MLC","City":"Mc Alester","Lat":"34.882389","Long":"-95.783471"},"MLD":{"Station":"MLD","City":"Malad City","Lat":"42.170444","Long":"-112.289305"},"MLF":{"Station":"MLF","City":"Milford","Lat":"38.426633","Long":"-113.012455"},"MLJ":{"Station":"MLJ","City":"Milledgeville","Lat":"33.154225","Long":"-83.241413"},"MLN":{"Station":"MLN","City":"Melilla","Lat":"35.279817","Long":"-2.956255"},"MLT":{"Station":"MLT","City":"Millinocket","Lat":"45.647833","Long":"-68.685555"},"MLX":{"Station":"MLX","City":"Malatya","Lat":"38.435347","Long":"38.091006"},"MLY":{"Station":"MLY","City":"Manley Hot Springs","Lat":"64.997565","Long":"-150.644129"},"MMI":{"Station":"MMI","City":"Athens","Lat":"35.399194","Long":"-84.561777"},"MMK":{"Station":"MMK","City":"Murmansk","Lat":"68.781672","Long":"32.750822"},"MML":{"Station":"MML","City":"Marshall","Lat":"44.45173","Long":"-95.824419"},"MMO":{"Station":"MMO","City":"Vila do Maio","Lat":"15.155928","Long":"-23.213702"},"MMS":{"Station":"MMS","City":"Marks","Lat":"34.231444","Long":"-90.289555"},"MMT":{"Station":"MMT","City":"Eastover","Lat":"33.92077","Long":"-80.801141"},"MNF":{"Station":"MNF","City":"Mana Island","Lat":"-17.673055","Long":"177.098333"},"MNI":{"Station":"MNI","City":"Gerald's Park","Lat":"16.791389","Long":"-62.193332"},"MNN":{"Station":"MNN","City":"Marion","Lat":"40.61625","Long":"-83.063471"},"MNS":{"Station":"MNS","City":"Mansa","Lat":"-11.13861","Long":"28.875556"},"MNZ":{"Station":"MNZ","City":"Washington","Lat":"38.721023","Long":"-77.5151"},"MOP":{"Station":"MOP","City":"Mount Pleasant","Lat":"43.621639","Long":"-84.737305"},"MOR":{"Station":"MOR","City":"Morristown","Lat":"36.179389","Long":"-83.375443"},"MOU":{"Station":"MOU","City":"Mountain Village","Lat":"62.094778","Long":"-163.68286"},"MOX":{"Station":"MOX","City":"Morris","Lat":"45.565968","Long":"-95.967186"},"MOZ":{"Station":"MOZ","City":"Moorea","Lat":"-17.489971","Long":"-149.761868"},"MPE":{"Station":"MPE","City":"Madison","Lat":"41.271182","Long":"-72.549729"},"MPJ":{"Station":"MPJ","City":"Morrilton","Lat":"35.138833","Long":"-92.909193"},"MPN":{"Station":"MPN","City":"Mount Pleasant","Lat":"-51.822776","Long":"-58.447221"},"MPO":{"Station":"MPO","City":"Mount Pocono","Lat":"41.137694","Long":"-75.380055"},"MPR":{"Station":"MPR","City":"Mc Pherson","Lat":"38.352444","Long":"-97.691305"},"MPV":{"Station":"MPV","City":"Barre\/Montpelier","Lat":"44.203489","Long":"-72.562097"},"MPW":{"Station":"MPW","City":"Mariupol","Lat":"47.076128","Long":"37.449569"},"MPZ":{"Station":"MPZ","City":"Mount Pleasant","Lat":"40.94659","Long":"-91.511069"},"MQB":{"Station":"MQB","City":"Macomb","Lat":"40.520083","Long":"-90.652388"},"MQM":{"Station":"MQM","City":"Mardin","Lat":"37.223336","Long":"40.631667"},"MQP":{"Station":"MQP","City":"Nelspruit","Lat":"-25.383188","Long":"31.105603"},"MQS":{"Station":"MQS","City":"Mustique Island","Lat":"12.887778","Long":"-61.179999"},"MQW":{"Station":"MQW","City":"Mc Rae","Lat":"32.096994","Long":"-82.879407"},"MQY":{"Station":"MQY","City":"Smyrna","Lat":"36.008972","Long":"-86.520082"},"MRB":{"Station":"MRB","City":"Martinsburg","Lat":"39.402357","Long":"-77.982998"},"MRC":{"Station":"MRC","City":"Columbia\/Mount Pleasant","Lat":"35.554389","Long":"-87.179138"},"MRF":{"Station":"MRF","City":"Marfa","Lat":"30.371111","Long":"-104.017527"},"MRI":{"Station":"MRI","City":"Anchorage","Lat":"61.213545","Long":"-149.844723"},"MRN":{"Station":"MRN","City":"Morganton","Lat":"35.820234","Long":"-81.611411"},"MRV":{"Station":"MRV","City":"Mineralnyye Vody","Lat":"44.225072","Long":"43.081889"},"MSE":{"Station":"MSE","City":"London","Lat":"51.342222","Long":"1.346111"},"MSV":{"Station":"MSV","City":"Monticello","Lat":"41.701639","Long":"-74.795027"},"MTC":{"Station":"MTC","City":"El Montecristi","Lat":"19.865278","Long":"-71.645277"},"MTF":{"Station":"MTF","City":"Mizan Teferi","Lat":"6.967","Long":"35.533"},"MTN":{"Station":"MTN","City":"Baltimore","Lat":"39.325667","Long":"-76.413777"},"MTO":{"Station":"MTO","City":"Mattoon\/Charleston","Lat":"39.477889","Long":"-88.279971"},"MTP":{"Station":"MTP","City":"Montauk","Lat":"41.076667","Long":"-71.920471"},"MTT":{"Station":"MTT","City":"Minatitl\u00e1n","Lat":"18.103419","Long":"-94.58068"},"MTV":{"Station":"MTV","City":"Ablow","Lat":"-13.666","Long":"167.712"},"MTW":{"Station":"MTW","City":"Manitowoc","Lat":"44.128778","Long":"-87.680582"},"MUE":{"Station":"MUE","City":"Kamuela","Lat":"20.001327","Long":"-155.668106"},"MUI":{"Station":"MUI","City":"Fort Indiantown Gap","Lat":"40.435236","Long":"-76.568627"},"MUL":{"Station":"MUL","City":"Moultrie","Lat":"31.137687","Long":"-83.704059"},"MUO":{"Station":"MUO","City":"Mountain Home","Lat":"43.043597","Long":"-115.87243"},"MUT":{"Station":"MUT","City":"Muscatine","Lat":"41.367889","Long":"-91.148221"},"MVC":{"Station":"MVC","City":"Monroeville","Lat":"31.458056","Long":"-87.351027"},"MVE":{"Station":"MVE","City":"Montevideo","Lat":"44.96919","Long":"-95.710366"},"MVF":{"Station":"MVF","City":"Mossor\u00f3","Lat":"-5.201918","Long":"-37.364346"},"MVL":{"Station":"MVL","City":"Morrisville","Lat":"44.534611","Long":"-72.613999"},"MVM":{"Station":"MVM","City":"Kayenta","Lat":"36.716444","Long":"-110.228443"},"MWC":{"Station":"MWC","City":"Milwaukee","Lat":"43.110389","Long":"-88.034416"},"MWK":{"Station":"MWK","City":"Matak","Lat":"3.348119","Long":"106.25805"},"MWL":{"Station":"MWL","City":"Mineral Wells","Lat":"32.781606","Long":"-98.060174"},"MWM":{"Station":"MWM","City":"Windom","Lat":"43.913402","Long":"-95.109407"},"MWO":{"Station":"MWO","City":"Middletown","Lat":"39.531806","Long":"-84.396443"},"MXA":{"Station":"MXA","City":"Manila","Lat":"35.894444","Long":"-90.154582"},"MXE":{"Station":"MXE","City":"Maxton","Lat":"34.792174","Long":"-79.365894"},"MXF":{"Station":"MXF","City":"Montgomery","Lat":"32.382944","Long":"-86.365777"},"MXO":{"Station":"MXO","City":"Monticello","Lat":"42.220363","Long":"-91.163298"},"MYF":{"Station":"MYF","City":"San Diego","Lat":"32.815722","Long":"-117.139582"},"MYK":{"Station":"MYK","City":"May Creek","Lat":"61.335674","Long":"-142.686774"},"MYL":{"Station":"MYL","City":"Mc Call","Lat":"44.888722","Long":"-116.101749"},"MYU":{"Station":"MYU","City":"Mekoryuk","Lat":"60.37142","Long":"-166.270607"},"MYV":{"Station":"MYV","City":"Marysville","Lat":"39.097778","Long":"-121.569832"},"MZH":{"Station":"MZH","City":"Merzifon","Lat":"40.829375","Long":"35.521992"},"MZU":{"Station":"MZU","City":"Muzaffarpur","Lat":"26.119089","Long":"85.313664"},"MZZ":{"Station":"MZZ","City":"Marion","Lat":"40.489917","Long":"-85.679777"},"NAV":{"Station":"NAV","City":"Nevsehir","Lat":"38.771867","Long":"34.53455"},"NBC":{"Station":"NBC","City":"Nizhnekamsk\/Naberezhnye Chelny","Lat":"55.564686","Long":"52.092511"},"NBG":{"Station":"NBG","City":"New Orl\u00e9ans","Lat":"29.827215","Long":"-90.026587"},"NDR":{"Station":"NDR","City":"Nador","Lat":"34.988781","Long":"-3.028205"},"NDY":{"Station":"NDY","City":"Sanday","Lat":"59.25","Long":"-2.574999"},"NDZ":{"Station":"NDZ","City":"Nordholz-Spieka","Lat":"53.768","Long":"8.659"},"NEL":{"Station":"NEL","City":"Lakehurst","Lat":"40.035781","Long":"-74.351369"},"NEN":{"Station":"NEN","City":"Jacksonville","Lat":"30.349495","Long":"-81.866988"},"NEW":{"Station":"NEW","City":"New Orl\u00e9ans","Lat":"30.042417","Long":"-90.028249"},"NFG":{"Station":"NFG","City":"Nefteyugansk","Lat":"61.107778","Long":"72.648889"},"NFL":{"Station":"NFL","City":"Fallon","Lat":"39.417832","Long":"-118.698593"},"NGP":{"Station":"NGP","City":"Corpus Christi","Lat":"27.692701","Long":"-97.290375"},"NGS":{"Station":"NGS","City":"Nagasaki","Lat":"32.916944","Long":"129.913611"},"NGU":{"Station":"NGU","City":"Norfolk","Lat":"36.937462","Long":"-76.289262"},"NGW":{"Station":"NGW","City":"Corpus Christi","Lat":"27.702712","Long":"-97.438899"},"NHK":{"Station":"NHK","City":"Patuxent River","Lat":"38.286332","Long":"-76.409954"},"NIB":{"Station":"NIB","City":"Nikolai","Lat":"63.01856","Long":"-154.358434"},"NIM":{"Station":"NIM","City":"Niamey","Lat":"13.481547","Long":"2.183614"},"NIN":{"Station":"NIN","City":"Ninilchik","Lat":"60.020234","Long":"-151.589418"},"NIP":{"Station":"NIP","City":"Jacksonville","Lat":"30.233857","Long":"-81.674964"},"NJK":{"Station":"NJK","City":"El Centro","Lat":"32.826632","Long":"-115.668556"},"NKM":{"Station":"NKM","City":"Nagoya","Lat":"35.255","Long":"136.924444"},"NKX":{"Station":"NKX","City":"San Diego","Lat":"32.868346","Long":"-117.141734"},"NLC":{"Station":"NLC","City":"Lemoore","Lat":"36.333011","Long":"-119.95208"},"NLG":{"Station":"NLG","City":"Nelson Lagoon","Lat":"56.007536","Long":"-161.160366"},"NLK":{"Station":"NLK","City":"Norfolk Island","Lat":"-29.041624","Long":"167.938742"},"NMB":{"Station":"NMB","City":"Daman","Lat":"20.434364","Long":"72.843206"},"NNR":{"Station":"NNR","City":"Inverin","Lat":"53.230556","Long":"-9.467777"},"NOG":{"Station":"NOG","City":"Nogales","Lat":"31.226083","Long":"-110.97583"},"NOT":{"Station":"NOT","City":"Novato","Lat":"38.143611","Long":"-122.556099"},"NOZ":{"Station":"NOZ","City":"Novokuznetsk","Lat":"53.811389","Long":"86.877222"},"NPA":{"Station":"NPA","City":"Pensacola","Lat":"30.353273","Long":"-87.317969"},"NPE":{"Station":"NPE","City":"Napier\/Hastings","Lat":"-39.465832","Long":"176.87"},"NQA":{"Station":"NQA","City":"Millington","Lat":"35.356639","Long":"-89.870416"},"NQI":{"Station":"NQI","City":"Kingsville","Lat":"27.504515","Long":"-97.808288"},"NRA":{"Station":"NRA","City":"Narrandera","Lat":"-34.702221","Long":"146.512222"},"NRB":{"Station":"NRB","City":"Mayport","Lat":"30.391374","Long":"-81.424518"},"NRD":{"Station":"NRD","City":"Norderney","Lat":"53.706822","Long":"7.230247"},"NRN":{"Station":"NRN","City":"Niederrhein","Lat":"51.602414","Long":"6.142172"},"NRS":{"Station":"NRS","City":"Imperial Beach","Lat":"32.566156","Long":"-117.113515"},"NSE":{"Station":"NSE","City":"Milton","Lat":"30.72247","Long":"-87.0239"},"NSI":{"Station":"NSI","City":"Yaound\u00e9","Lat":"3.722556","Long":"11.553269"},"NTB":{"Station":"NTB","City":"Notodden","Lat":"59.565683","Long":"9.212222"},"NTD":{"Station":"NTD","City":"Point Mugu","Lat":"34.119272","Long":"-119.119577"},"NTU":{"Station":"NTU","City":"Virginia Beach","Lat":"36.822744","Long":"-76.031889"},"NTY":{"Station":"NTY","City":"Sun City","Lat":"-25.333821","Long":"27.173358"},"NUI":{"Station":"NUI","City":"Nuiqsut","Lat":"70.209833","Long":"-151.006471"},"NUN":{"Station":"NUN","City":"Pensacola","Lat":"30.469722","Long":"-87.338055"},"NUQ":{"Station":"NUQ","City":"Mountain View","Lat":"37.416139","Long":"-122.049138"},"NUW":{"Station":"NUW","City":"Oak Harbor","Lat":"48.351841","Long":"-122.655957"},"NVD":{"Station":"NVD","City":"Nevada","Lat":"37.852477","Long":"-94.304607"},"NVK":{"Station":"NVK","City":"Narvik","Lat":"68.436111","Long":"17.385833"},"NYG":{"Station":"NYG","City":"Quantico","Lat":"38.503624","Long":"-77.305031"},"NYO":{"Station":"NYO","City":"Stockholm","Lat":"58.788636","Long":"16.912189"},"NZY":{"Station":"NZY","City":"San Diego","Lat":"32.698195","Long":"-117.213103"},"OAM":{"Station":"OAM","City":"Oamaru","Lat":"-44.969999","Long":"171.081667"},"OBE":{"Station":"OBE","City":"Okeechobee","Lat":"27.266583","Long":"-80.850388"},"OBU":{"Station":"OBU","City":"Kobuk","Lat":"66.912333","Long":"-156.897332"},"OCH":{"Station":"OCH","City":"Nacogdoches","Lat":"31.577764","Long":"-94.71011"},"OCW":{"Station":"OCW","City":"Washington","Lat":"35.570472","Long":"-77.049805"},"ODH":{"Station":"ODH","City":"Odiham","Lat":"51.234139","Long":"-0.942824"},"ODO":{"Station":"ODO","City":"Bodaybo","Lat":"57.866111","Long":"114.243056"},"OEA":{"Station":"OEA","City":"Vincennes","Lat":"38.691436","Long":"-87.552243"},"OEL":{"Station":"OEL","City":"Orel","Lat":"52.934722","Long":"36.002222"},"OEO":{"Station":"OEO","City":"Osceola","Lat":"45.309343","Long":"-92.690122"},"OER":{"Station":"OER","City":"\u00d6rnsk\u00f6ldsvik","Lat":"63.408339","Long":"18.990039"},"OFF":{"Station":"OFF","City":"Omaha","Lat":"41.119328","Long":"-95.908518"},"OGA":{"Station":"OGA","City":"Ogallala","Lat":"41.119472","Long":"-101.769693"},"OGB":{"Station":"OGB","City":"Orangeburg","Lat":"33.456918","Long":"-80.859406"},"OGD":{"Station":"OGD","City":"Ogden","Lat":"41.195666","Long":"-112.012936"},"OHT":{"Station":"OHT","City":"Kohat","Lat":"33.57","Long":"71.44"},"OIC":{"Station":"OIC","City":"Norwich","Lat":"42.566556","Long":"-75.52411"},"OJC":{"Station":"OJC","City":"Olathe","Lat":"38.847602","Long":"-94.737585"},"OKB":{"Station":"OKB","City":"Orchid Beach","Lat":"-24.959443","Long":"153.315"},"OKK":{"Station":"OKK","City":"Kokomo","Lat":"40.528178","Long":"-86.058989"},"OKM":{"Station":"OKM","City":"Okmulgee","Lat":"35.668111","Long":"-95.948527"},"OKS":{"Station":"OKS","City":"Oshkosh","Lat":"41.401911","Long":"-102.356351"},"OLD":{"Station":"OLD","City":"Old Town","Lat":"44.9525","Long":"-68.674332"},"OLE":{"Station":"OLE","City":"Olean","Lat":"42.241222","Long":"-78.37136"},"OLM":{"Station":"OLM","City":"Olympia","Lat":"46.969404","Long":"-122.902544"},"OLS":{"Station":"OLS","City":"Nogales","Lat":"31.417722","Long":"-110.847888"},"OLU":{"Station":"OLU","City":"Columbus","Lat":"41.448722","Long":"-97.340943"},"OLV":{"Station":"OLV","City":"Olive Branch","Lat":"34.97875","Long":"-89.78686"},"OLY":{"Station":"OLY","City":"Olney-Noble","Lat":"38.721827","Long":"-88.176432"},"OMH":{"Station":"OMH","City":"Orumiyeh","Lat":"37.668122","Long":"45.068703"},"OMK":{"Station":"OMK","City":"Omak","Lat":"48.464417","Long":"-119.518055"},"OMS":{"Station":"OMS","City":"Omsk","Lat":"54.967042","Long":"73.310514"},"ONA":{"Station":"ONA","City":"Winona","Lat":"44.077213","Long":"-91.708316"},"ONL":{"Station":"ONL","City":"O'Neill","Lat":"42.469361","Long":"-98.687777"},"ONM":{"Station":"ONM","City":"Socorro","Lat":"34.022472","Long":"-106.903138"},"ONO":{"Station":"ONO","City":"Ontario","Lat":"44.019361","Long":"-117.013027"},"ONP":{"Station":"ONP","City":"Newport","Lat":"44.580361","Long":"-124.057916"},"ONX":{"Station":"ONX","City":"Col\u00f3n","Lat":"9.356639","Long":"-79.867413"},"ONY":{"Station":"ONY","City":"Olney","Lat":"33.350889","Long":"-98.819166"},"OOA":{"Station":"OOA","City":"Oskaloosa","Lat":"41.226111","Long":"-92.493832"},"OPL":{"Station":"OPL","City":"Opelousas","Lat":"30.558389","Long":"-92.099388"},"ORC":{"Station":"ORC","City":"Orocue","Lat":"4.792222","Long":"-71.356388"},"ORE":{"Station":"ORE","City":"Orl\u00e9ans","Lat":"47.987778","Long":"1.760556"},"ORG":{"Station":"ORG","City":"Paramaribo","Lat":"5.811083","Long":"-55.190743"},"ORI":{"Station":"ORI","City":"Port Lions","Lat":"57.885377","Long":"-152.8461"},"ORM":{"Station":"ORM","City":"Northampton","Lat":"52.3","Long":"-0.783"},"ORT":{"Station":"ORT","City":"Northway","Lat":"62.961167","Long":"-141.928082"},"OSA":{"Station":"OSA","City":"Osaka","Lat":"34.785528","Long":"135.438222"},"OSC":{"Station":"OSC","City":"Oscoda","Lat":"44.451528","Long":"-83.394166"},"OSL":{"Station":"OSL","City":"Oslo","Lat":"60.193917","Long":"11.100361"},"OSR":{"Station":"OSR","City":"Ostrava","Lat":"49.696292","Long":"18.111053"},"OST":{"Station":"OST","City":"Oostende","Lat":"51.198889","Long":"2.862222"},"OSU":{"Station":"OSU","City":"Columbus","Lat":"40.079831","Long":"-83.073151"},"OSX":{"Station":"OSX","City":"Kosciusko","Lat":"33.09025","Long":"-89.542027"},"OSY":{"Station":"OSY","City":"Namsos","Lat":"64.467","Long":"11.583"},"OTG":{"Station":"OTG","City":"Worthington","Lat":"43.655056","Long":"-95.579193"},"OTN":{"Station":"OTN","City":"Oaktown","Lat":"38.851434","Long":"-87.499721"},"OTR":{"Station":"OTR","City":"Coto 47","Lat":"8.6","Long":"-82.967"},"OUD":{"Station":"OUD","City":"Oujda","Lat":"34.78715","Long":"-1.923985"},"OUN":{"Station":"OUN","City":"Norman","Lat":"35.245556","Long":"-97.472138"},"OUZ":{"Station":"OUZ","City":"Zou\u00e9rate","Lat":"22.756389","Long":"-12.48361"},"OVE":{"Station":"OVE","City":"Oroville","Lat":"39.487806","Long":"-121.621999"},"OVL":{"Station":"OVL","City":"Ovalle","Lat":"-30.559166","Long":"-71.175555"},"OVS":{"Station":"OVS","City":"Sovetsky","Lat":"61.32","Long":"63.604444"},"OWA":{"Station":"OWA","City":"Owatonna","Lat":"44.122952","Long":"-93.258825"},"OWK":{"Station":"OWK","City":"Norridgewock","Lat":"44.7155","Long":"-69.866471"},"OXC":{"Station":"OXC","City":"Oxford","Lat":"41.478556","Long":"-73.135249"},"OXD":{"Station":"OXD","City":"Oxford","Lat":"39.50225","Long":"-84.78436"},"OZA":{"Station":"OZA","City":"Ozona","Lat":"30.735194","Long":"-101.202193"},"OZR":{"Station":"OZR","City":"Fort Rucker\/Ozark","Lat":"31.275775","Long":"-85.713349"},"PAB":{"Station":"PAB","City":"Bilaspur","Lat":"21.9884","Long":"82.110983"},"PAK":{"Station":"PAK","City":"Hanapepe","Lat":"21.896944","Long":"-159.603166"},"PAM":{"Station":"PAM","City":"Panama City","Lat":"30.07","Long":"-85.576499"},"PAN":{"Station":"PAN","City":"Pattani","Lat":"6.785458","Long":"101.153569"},"PAO":{"Station":"PAO","City":"Palo Alto","Lat":"37.461111","Long":"-122.115055"},"PAQ":{"Station":"PAQ","City":"Palmer","Lat":"61.594914","Long":"-149.08871"},"PBB":{"Station":"PBB","City":"Paranaiba","Lat":"-19.651166","Long":"-51.19936"},"PBF":{"Station":"PBF","City":"Pine Bluff","Lat":"34.174513","Long":"-91.935603"},"PBG":{"Station":"PBG","City":"Plattsburgh","Lat":"44.650944","Long":"-73.468138"},"PBH":{"Station":"PBH","City":"Paro","Lat":"27.403192","Long":"89.424606"},"PBP":{"Station":"PBP","City":"Punta Islita","Lat":"9.856111","Long":"-85.370832"},"PCK":{"Station":"PCK","City":"Porcupine Creek","Lat":"67.237898","Long":"-150.28606"},"PCM":{"Station":"PCM","City":"Playa del Carmen","Lat":"20.6225","Long":"-87.082221"},"PDC":{"Station":"PDC","City":"Mueo","Lat":"-21.316388","Long":"164.999444"},"PDK":{"Station":"PDK","City":"Atlanta","Lat":"33.875611","Long":"-84.301971"},"PDP":{"Station":"PDP","City":"Maldonado","Lat":"-34.855138","Long":"-55.094277"},"PDS":{"Station":"PDS","City":"Piedras Negras","Lat":"28.627394","Long":"-100.53521"},"PDV":{"Station":"PDV","City":"Plovdiv","Lat":"42.067806","Long":"24.850833"},"PEA":{"Station":"PEA","City":"Penneshaw","Lat":"-35.755555","Long":"137.964167"},"PED":{"Station":"PED","City":"Pardubice","Lat":"50.013419","Long":"15.738647"},"PEM":{"Station":"PEM","City":"Puerto Maldonado","Lat":"-12.61361","Long":"-69.22861"},"PEQ":{"Station":"PEQ","City":"Pecos","Lat":"31.382389","Long":"-103.510721"},"PEX":{"Station":"PEX","City":"Pechora","Lat":"65.121111","Long":"57.130833"},"PEZ":{"Station":"PEZ","City":"Penza","Lat":"53.110556","Long":"45.021111"},"PFC":{"Station":"PFC","City":"Pacific City","Lat":"45.199826","Long":"-123.962338"},"PGD":{"Station":"PGD","City":"Punta Gorda","Lat":"26.918938","Long":"-81.990925"},"PGM":{"Station":"PGM","City":"Port Graham","Lat":"59.348259","Long":"-151.831538"},"PGR":{"Station":"PGR","City":"Paragould","Lat":"36.063806","Long":"-90.509193"},"PHC":{"Station":"PHC","City":"Port Harcourt","Lat":"5.015494","Long":"6.949594"},"PHD":{"Station":"PHD","City":"New Philadelphia","Lat":"40.470167","Long":"-81.419943"},"PHG":{"Station":"PHG","City":"Port Harcourt","Lat":"4.846111","Long":"7.021389"},"PHH":{"Station":"PHH","City":"Phan Thiet","Lat":"10.906389","Long":"108.069444"},"PHK":{"Station":"PHK","City":"Pahokee","Lat":"26.785028","Long":"-80.69336"},"PHN":{"Station":"PHN","City":"Port Huron","Lat":"42.910972","Long":"-82.52886"},"PHP":{"Station":"PHP","City":"Philip","Lat":"44.048731","Long":"-101.598839"},"PHT":{"Station":"PHT","City":"Paris","Lat":"36.335944","Long":"-88.384443"},"PIL":{"Station":"PIL","City":"Pilar","Lat":"-26.881466","Long":"-58.318035"},"PIM":{"Station":"PIM","City":"Pine Mountain","Lat":"32.840694","Long":"-84.882443"},"PIP":{"Station":"PIP","City":"Pilot Point","Lat":"57.580381","Long":"-157.571956"},"PIS":{"Station":"PIS","City":"Poitiers","Lat":"46.5875","Long":"0.306667"},"PIU":{"Station":"PIU","City":"Piura","Lat":"-5.205749","Long":"-80.616443"},"PIX":{"Station":"PIX","City":"Pico Island","Lat":"38.554333","Long":"-28.441332"},"PIZ":{"Station":"PIZ","City":"Point Lay","Lat":"69.732889","Long":"-163.005332"},"PKA":{"Station":"PKA","City":"Napaskiak","Lat":"60.702917","Long":"-161.778305"},"PKD":{"Station":"PKD","City":"Park Rapids","Lat":"46.900694","Long":"-95.07311"},"PKF":{"Station":"PKF","City":"Park Falls","Lat":"45.955091","Long":"-90.424433"},"PKV":{"Station":"PKV","City":"Pskov","Lat":"57.783917","Long":"28.395614"},"PKW":{"Station":"PKW","City":"Selebi-Phikwe","Lat":"-22.058349","Long":"27.828767"},"PLK":{"Station":"PLK","City":"Branson","Lat":"36.625928","Long":"-93.228922"},"PLR":{"Station":"PLR","City":"Pell City","Lat":"33.558833","Long":"-86.249055"},"PMB":{"Station":"PMB","City":"Pembina","Lat":"48.942569","Long":"-97.240763"},"PMF":{"Station":"PMF","City":"Parma","Lat":"44.824483","Long":"10.296367"},"PMG":{"Station":"PMG","City":"Ponta Por\u00e3","Lat":"-22.549638","Long":"-55.702613"},"PMH":{"Station":"PMH","City":"Portsmouth","Lat":"38.840472","Long":"-82.847305"},"PMY":{"Station":"PMY","City":"Puerto Madryn","Lat":"-42.75916","Long":"-65.102724"},"PMZ":{"Station":"PMZ","City":"Palmar","Lat":"8.95","Long":"-83.467"},"PNA":{"Station":"PNA","City":"Pamplona","Lat":"42.770039","Long":"-1.64633"},"PNE":{"Station":"PNE","City":"Philadelphia","Lat":"40.081944","Long":"-75.010582"},"PNN":{"Station":"PNN","City":"Princeton","Lat":"45.200667","Long":"-67.564388"},"PNP":{"Station":"PNP","City":"Popondetta","Lat":"-8.804543","Long":"148.309047"},"PNT":{"Station":"PNT","City":"Puerto Natales","Lat":"-51.671474","Long":"-72.528349"},"PNY":{"Station":"PNY","City":"Pondicherry","Lat":"11.968722","Long":"79.810058"},"PNZ":{"Station":"PNZ","City":"Petrolina","Lat":"-9.36241","Long":"-40.569096"},"POB":{"Station":"POB","City":"Fayetteville","Lat":"35.170889","Long":"-79.014495"},"POC":{"Station":"POC","City":"La Verne","Lat":"34.091667","Long":"-117.781777"},"POE":{"Station":"POE","City":"Fort Polk","Lat":"31.044782","Long":"-93.191641"},"POF":{"Station":"POF","City":"Poplar Bluff","Lat":"36.773944","Long":"-90.32486"},"POH":{"Station":"POH","City":"Pocahontas","Lat":"42.742889","Long":"-94.64736"},"POW":{"Station":"POW","City":"Portoroz","Lat":"45.473353","Long":"13.614978"},"POX":{"Station":"POX","City":"Pontoise","Lat":"49.096628","Long":"2.040722"},"POY":{"Station":"POY","City":"Powell","Lat":"44.867167","Long":"-108.793416"},"PPA":{"Station":"PPA","City":"Pampa","Lat":"35.613","Long":"-100.996249"},"PPB":{"Station":"PPB","City":"Presidente Prudente","Lat":"-22.175055","Long":"-51.424638"},"PPC":{"Station":"PPC","City":"Prospect Creek","Lat":"66.814056","Long":"-150.64361"},"PPF":{"Station":"PPF","City":"Parsons","Lat":"37.330806","Long":"-95.506166"},"PPQ":{"Station":"PPQ","City":"Paraparaumu","Lat":"-40.904721","Long":"174.989167"},"PRA":{"Station":"PRA","City":"Parana","Lat":"-31.794777","Long":"-60.48036"},"PRB":{"Station":"PRB","City":"Paso Robles","Lat":"35.672889","Long":"-120.627082"},"PRG":{"Station":"PRG","City":"Prague","Lat":"50.100833","Long":"14.26"},"PRO":{"Station":"PRO","City":"Perry","Lat":"41.828","Long":"-94.159832"},"PRX":{"Station":"PRX","City":"Paris","Lat":"33.636611","Long":"-95.450749"},"PRZ":{"Station":"PRZ","City":"Prineville","Lat":"44.287778","Long":"-120.905166"},"PSB":{"Station":"PSB","City":"Philipsburg","Lat":"40.884391","Long":"-78.087341"},"PSC":{"Station":"PSC","City":"Pasco","Lat":"46.264694","Long":"-119.119027"},"PSF":{"Station":"PSF","City":"Pittsfield","Lat":"42.426833","Long":"-73.292916"},"PSK":{"Station":"PSK","City":"Dublin","Lat":"37.137345","Long":"-80.678481"},"PSL":{"Station":"PSL","City":"Perth","Lat":"56.440278","Long":"-3.372499"},"PSN":{"Station":"PSN","City":"Palestine","Lat":"31.779694","Long":"-95.706305"},"PSS":{"Station":"PSS","City":"Posadas","Lat":"-27.385838","Long":"-55.970727"},"PSX":{"Station":"PSX","City":"Palacios","Lat":"28.7275","Long":"-96.250943"},"PTB":{"Station":"PTB","City":"Petersburg","Lat":"37.18375","Long":"-77.507388"},"PTH":{"Station":"PTH","City":"Port Heiden","Lat":"56.959101","Long":"-158.633361"},"PTN":{"Station":"PTN","City":"Patterson","Lat":"29.709546","Long":"-91.338978"},"PTS":{"Station":"PTS","City":"Pittsburg","Lat":"37.449472","Long":"-94.731138"},"PTT":{"Station":"PTT","City":"Pratt","Lat":"37.702528","Long":"-98.746999"},"PTU":{"Station":"PTU","City":"Platinum","Lat":"59.015736","Long":"-161.82521"},"PTV":{"Station":"PTV","City":"Porterville","Lat":"36.029583","Long":"-119.062721"},"PTW":{"Station":"PTW","City":"Pottstown","Lat":"40.239556","Long":"-75.556721"},"PUC":{"Station":"PUC","City":"Price","Lat":"39.613917","Long":"-110.751443"},"PUF":{"Station":"PUF","City":"Pau Pyr\u00e9n\u00e9es","Lat":"43.38","Long":"-0.41861"},"PVF":{"Station":"PVF","City":"Placerville","Lat":"38.724222","Long":"-120.753332"},"PVK":{"Station":"PVK","City":"Preveza\/Lefkada","Lat":"38.925467","Long":"20.765311"},"PVW":{"Station":"PVW","City":"Plainview","Lat":"34.168147","Long":"-101.717335"},"PWA":{"Station":"PWA","City":"Oklahoma City","Lat":"35.534167","Long":"-97.647055"},"PWD":{"Station":"PWD","City":"Plentywood","Lat":"48.789","Long":"-104.522971"},"PYM":{"Station":"PYM","City":"Plymouth","Lat":"41.909028","Long":"-70.728777"},"PYX":{"Station":"PYX","City":"Pattaya","Lat":"12.8325","Long":"100.949444"},"PZH":{"Station":"PZH","City":"Zhob","Lat":"31.358381","Long":"69.463606"},"PZY":{"Station":"PZY","City":"Piestany","Lat":"48.625247","Long":"17.828444"},"QAS":{"Station":"QAS","City":"Chlef","Lat":"36.216944","Long":"1.34"},"QCY":{"Station":"QCY","City":"Coningsby","Lat":"53.093014","Long":"-0.166013"},"QDF":{"Station":"QDF","City":"Conselheiro Lafaiete","Lat":"-20.73863","Long":"-43.797407"},"QHA":{"Station":"QHA","City":"Hasselt","Lat":"50.97","Long":"5.375"},"QLA":{"Station":"QLA","City":"Lasham","Lat":"51.187167","Long":"-1.033499"},"QLT":{"Station":"QLT","City":"Latina","Lat":"41.542436","Long":"12.909019"},"QMJ":{"Station":"QMJ","City":"Masjed Soleiman","Lat":"32.002372","Long":"49.270364"},"QMZ":{"Station":"QMZ","City":"Mainz Finthen","Lat":"49.968931","Long":"8.148336"},"QNJ":{"Station":"QNJ","City":"Annemasse","Lat":"46.191944","Long":"6.269444"},"QPJ":{"Station":"QPJ","City":"Pecs","Lat":"45.990928","Long":"18.240983"},"QPS":{"Station":"QPS","City":"Pirassununga","Lat":"-21.98456","Long":"-47.334763"},"QPZ":{"Station":"QPZ","City":"Piacenza","Lat":"44.913055","Long":"9.723333"},"QSC":{"Station":"QSC","City":"S\u00e3o Carlos","Lat":"-21.875421","Long":"-47.903727"},"QSF":{"Station":"QSF","City":"Setif","Lat":"36.178611","Long":"5.33"},"QSI":{"Station":"QSI","City":"Moshi","Lat":"-3.363332","Long":"37.326944"},"QUG":{"Station":"QUG","City":"Chichester","Lat":"50.859167","Long":"-0.759166"},"QUS":{"Station":"QUS","City":"Gusau","Lat":"12.171667","Long":"6.696111"},"QYR":{"Station":"QYR","City":"Troyes","Lat":"48.321619","Long":"4.016622"},"RAC":{"Station":"RAC","City":"Racine","Lat":"42.761167","Long":"-87.813916"},"RAL":{"Station":"RAL","City":"Riverside","Lat":"33.951889","Long":"-117.44511"},"RAS":{"Station":"RAS","City":"Rasht","Lat":"37.325314","Long":"49.605817"},"RBB":{"Station":"RBB","City":"Borba","Lat":"-4.406341","Long":"-59.602368"},"RBC":{"Station":"RBC","City":"Robinvale","Lat":"-34.65055","Long":"142.782776"},"RBD":{"Station":"RBD","City":"Dallas","Lat":"32.680861","Long":"-96.868193"},"RBG":{"Station":"RBG","City":"Roseburg","Lat":"43.239339","Long":"-123.355821"},"RBL":{"Station":"RBL","City":"Red Bluff","Lat":"40.150306","Long":"-122.252193"},"RBM":{"Station":"RBM","City":"Straubing","Lat":"48.90095","Long":"12.518186"},"RBO":{"Station":"RBO","City":"Robore","Lat":"-18.327499","Long":"-59.765555"},"RBW":{"Station":"RBW","City":"Walterboro","Lat":"32.921","Long":"-80.64061"},"RBY":{"Station":"RBY","City":"Ruby","Lat":"64.727222","Long":"-155.469888"},"RCA":{"Station":"RCA","City":"Rapid City","Lat":"44.145094","Long":"-103.103566"},"RCK":{"Station":"RCK","City":"Rockdale","Lat":"30.631376","Long":"-96.989487"},"RCR":{"Station":"RCR","City":"Rochester","Lat":"41.065528","Long":"-86.181693"},"RCS":{"Station":"RCS","City":"Rochester","Lat":"51.3525","Long":"0.503611"},"RCT":{"Station":"RCT","City":"Reed City","Lat":"43.900016","Long":"-85.516716"},"RDM":{"Station":"RDM","City":"Redmond","Lat":"44.254056","Long":"-121.149971"},"RDV":{"Station":"RDV","City":"Red Devil","Lat":"61.788056","Long":"-157.350249"},"RED":{"Station":"RED","City":"Reedsville","Lat":"40.677389","Long":"-77.626832"},"REO":{"Station":"REO","City":"Rome","Lat":"42.57766","Long":"-117.885429"},"REP":{"Station":"REP","City":"Siem Reap","Lat":"13.410666","Long":"103.81284"},"RET":{"Station":"RET","City":"R\u00f8st","Lat":"67.527778","Long":"12.103333"},"RFG":{"Station":"RFG","City":"Refugio","Lat":"28.293617","Long":"-97.323047"},"RGK":{"Station":"RGK","City":"Gorno-Altaysk","Lat":"51.97","Long":"85.836944"},"RHP":{"Station":"RHP","City":"Ramechhap","Lat":"27.394005","Long":"86.06144"},"RHV":{"Station":"RHV","City":"San Jos\u00e9","Lat":"37.332861","Long":"-121.819805"},"RIB":{"Station":"RIB","City":"Riberalta","Lat":"-11.010555","Long":"-66.072777"},"RID":{"Station":"RID","City":"Richmond","Lat":"39.756083","Long":"-84.842693"},"RIF":{"Station":"RIF","City":"Richfield","Lat":"38.736436","Long":"-112.098943"},"RIK":{"Station":"RIK","City":"Playa S\u00e1mara\/Carrillo","Lat":"9.870556","Long":"-85.480832"},"RIL":{"Station":"RIL","City":"Rifle","Lat":"39.526611","Long":"-107.727999"},"RIR":{"Station":"RIR","City":"Riverside","Lat":"33.988788","Long":"-117.409909"},"RIV":{"Station":"RIV","City":"Riverside","Lat":"33.881941","Long":"-117.259014"},"RKE":{"Station":"RKE","City":"K\u00f8benhavn","Lat":"55.585567","Long":"12.131428"},"RKP":{"Station":"RKP","City":"Rockport","Lat":"28.086222","Long":"-97.043693"},"RKR":{"Station":"RKR","City":"Poteau","Lat":"35.021639","Long":"-94.621249"},"RKT":{"Station":"RKT","City":"Ras al Khaimah","Lat":"25.613483","Long":"55.938817"},"RKW":{"Station":"RKW","City":"Rockwood","Lat":"35.922333","Long":"-84.689777"},"RLA":{"Station":"RLA","City":"Rolla","Lat":"37.935652","Long":"-91.813546"},"RLD":{"Station":"RLD","City":"Richland","Lat":"46.305639","Long":"-119.304193"},"RLG":{"Station":"RLG","City":"Laage","Lat":"53.918","Long":"12.278"},"RMF":{"Station":"RMF","City":"Marsa Alam","Lat":"25.557111","Long":"34.583711"},"RMG":{"Station":"RMG","City":"Rome","Lat":"34.350778","Long":"-85.158666"},"RMI":{"Station":"RMI","City":"Rimini","Lat":"44.020292","Long":"12.611747"},"RML":{"Station":"RML","City":"Colombo","Lat":"6.821994","Long":"79.886208"},"RMP":{"Station":"RMP","City":"Rampart","Lat":"65.5079","Long":"-150.140832"},"RMS":{"Station":"RMS","City":"Ramstein","Lat":"49.436911","Long":"7.600283"},"RNC":{"Station":"RNC","City":"Mc Minnville","Lat":"35.698709","Long":"-85.843816"},"RND":{"Station":"RND","City":"Universal City","Lat":"29.528906","Long":"-98.27803"},"RNH":{"Station":"RNH","City":"New Richmond","Lat":"45.147778","Long":"-92.539166"},"RNP":{"Station":"RNP","City":"Rongelap Island","Lat":"11.157222","Long":"166.887222"},"RNT":{"Station":"RNT","City":"Renton","Lat":"47.493139","Long":"-122.215749"},"ROG":{"Station":"ROG","City":"Rogers","Lat":"36.372417","Long":"-94.106971"},"ROK":{"Station":"ROK","City":"Rockhampton","Lat":"-23.381943","Long":"150.475278"},"ROT":{"Station":"ROT","City":"Rotorua","Lat":"-38.109166","Long":"176.317222"},"ROX":{"Station":"ROX","City":"Roseau","Lat":"48.856","Long":"-95.697082"},"RPB":{"Station":"RPB","City":"Roper Bar","Lat":"-14.734443","Long":"134.525"},"RPN":{"Station":"RPN","City":"Rosh Pina","Lat":"32.981047","Long":"35.571908"},"RPX":{"Station":"RPX","City":"Roundup","Lat":"46.475","Long":"-108.543416"},"RRL":{"Station":"RRL","City":"Merrill","Lat":"45.198917","Long":"-89.71286"},"RRS":{"Station":"RRS","City":"R\u00f8ros","Lat":"62.578411","Long":"11.342347"},"RRT":{"Station":"RRT","City":"Warroad","Lat":"48.941472","Long":"-95.348471"},"RSH":{"Station":"RSH","City":"Russian Mission","Lat":"61.774889","Long":"-161.319388"},"RSL":{"Station":"RSL","City":"Russell","Lat":"38.871413","Long":"-98.811549"},"RSN":{"Station":"RSN","City":"Ruston","Lat":"32.514602","Long":"-92.588442"},"RTN":{"Station":"RTN","City":"Rat\u00f3n","Lat":"36.741528","Long":"-104.502182"},"RUG":{"Station":"RUG","City":"Rugao","Lat":"32.256944","Long":"120.500278"},"RUP":{"Station":"RUP","City":"Rupsi","Lat":"26.141667","Long":"89.908056"},"RVK":{"Station":"RVK","City":"Roervik","Lat":"64.838333","Long":"11.146111"},"RVN":{"Station":"RVN","City":"Rovaniemi","Lat":"66.561667","Long":"25.830833"},"RVS":{"Station":"RVS","City":"Tulsa","Lat":"36.039611","Long":"-95.984638"},"RWF":{"Station":"RWF","City":"Redwood Falls","Lat":"44.546889","Long":"-95.081999"},"RWL":{"Station":"RWL","City":"Rawlins","Lat":"41.805722","Long":"-107.200332"},"RWN":{"Station":"RWN","City":"Rovno","Lat":"50.607142","Long":"26.141622"},"RYN":{"Station":"RYN","City":"Royan","Lat":"45.631161","Long":"-0.975488"},"RZE":{"Station":"RZE","City":"Rzeszow","Lat":"50.109958","Long":"22.019"},"RZN":{"Station":"RZN","City":"Ryazan","Lat":"54.641389","Long":"39.569444"},"RZZ":{"Station":"RZZ","City":"Roanoke Rapids","Lat":"36.439456","Long":"-77.70934"},"SAA":{"Station":"SAA","City":"Saratoga","Lat":"41.443528","Long":"-106.827527"},"SAC":{"Station":"SAC","City":"Sacramento","Lat":"38.512528","Long":"-121.493471"},"SAD":{"Station":"SAD","City":"Safford","Lat":"32.853333","Long":"-109.635082"},"SAG":{"Station":"SAG","City":"Sagwon","Lat":"69.366334","Long":"-148.702874"},"SAR":{"Station":"SAR","City":"Sparta","Lat":"38.148944","Long":"-89.698777"},"SAS":{"Station":"SAS","City":"Salton City","Lat":"33.241194","Long":"-115.952582"},"SAW":{"Station":"SAW","City":"Istanbul","Lat":"40.898553","Long":"29.309219"},"SBD":{"Station":"SBD","City":"San Bernardino","Lat":"34.095361","Long":"-117.234888"},"SBM":{"Station":"SBM","City":"Sheboygan","Lat":"43.769778","Long":"-87.851721"},"SBO":{"Station":"SBO","City":"Salina","Lat":"39.029128","Long":"-111.838257"},"SBS":{"Station":"SBS","City":"Steamboat Springs","Lat":"40.51625","Long":"-106.866305"},"SBU":{"Station":"SBU","City":"Springbok","Lat":"-29.689332","Long":"17.939611"},"SBX":{"Station":"SBX","City":"Shelby","Lat":"48.540694","Long":"-111.871249"},"SBZ":{"Station":"SBZ","City":"Sibiu","Lat":"45.7858","Long":"24.085583"},"SCB":{"Station":"SCB","City":"Scribner","Lat":"41.610333","Long":"-96.62986"},"SCF":{"Station":"SCF","City":"Scottsdale","Lat":"33.622889","Long":"-111.910527"},"SCH":{"Station":"SCH","City":"Schenectady","Lat":"42.852556","Long":"-73.928971"},"SCK":{"Station":"SCK","City":"Stockton","Lat":"37.894167","Long":"-121.238305"},"SCM":{"Station":"SCM","City":"Scammon Bay","Lat":"61.844541","Long":"-165.573748"},"SCO":{"Station":"SCO","City":"Aktau","Lat":"43.86005","Long":"51.091978"},"SCS":{"Station":"SCS","City":"Shetland Islands","Lat":"60.432778","Long":"-1.29611"},"SCV":{"Station":"SCV","City":"Suceava","Lat":"47.6875","Long":"26.354056"},"SCX":{"Station":"SCX","City":"Salina Cruz","Lat":"16.212633","Long":"-95.201582"},"SDD":{"Station":"SDD","City":"Lubango","Lat":"-14.924732","Long":"13.575022"},"SDE":{"Station":"SDE","City":"Santiago del Estero","Lat":"-27.765616","Long":"-64.310121"},"SDP":{"Station":"SDP","City":"Sand Point","Lat":"55.313694","Long":"-160.521416"},"SEE":{"Station":"SEE","City":"San Diego\/El Cajon","Lat":"32.826222","Long":"-116.972443"},"SEF":{"Station":"SEF","City":"Sebring","Lat":"27.456389","Long":"-81.342388"},"SEG":{"Station":"SEG","City":"Selinsgrove","Lat":"40.821235","Long":"-76.864171"},"SEM":{"Station":"SEM","City":"Selma","Lat":"32.343947","Long":"-86.987805"},"SEP":{"Station":"SEP","City":"Stephenville","Lat":"32.215333","Long":"-98.177666"},"SEQ":{"Station":"SEQ","City":"Sungai Pakning Bengkalis","Lat":"1.37","Long":"102.14"},"SER":{"Station":"SER","City":"Seymour","Lat":"38.924699","Long":"-85.908353"},"SFB":{"Station":"SFB","City":"Orlando","Lat":"28.776962","Long":"-81.234917"},"SFD":{"Station":"SFD","City":"San Fernando de Apu","Lat":"7.883317","Long":"-67.444024"},"SFF":{"Station":"SFF","City":"Spokane","Lat":"47.682944","Long":"-117.322416"},"SFL":{"Station":"SFL","City":"S\u00e3o Filipe","Lat":"14.885833","Long":"-24.480832"},"SFM":{"Station":"SFM","City":"Sanford","Lat":"43.393806","Long":"-70.707999"},"SFQ":{"Station":"SFQ","City":"Sanliurfa","Lat":"37.094261","Long":"38.847103"},"SFZ":{"Station":"SFZ","City":"Pawtucket","Lat":"41.92075","Long":"-71.491416"},"SGH":{"Station":"SGH","City":"Springfield","Lat":"39.840278","Long":"-83.840166"},"SGR":{"Station":"SGR","City":"Houston","Lat":"29.62225","Long":"-95.656527"},"SGS":{"Station":"SGS","City":"Bongao","Lat":"5.046994","Long":"119.743033"},"SGT":{"Station":"SGT","City":"Stuttgart","Lat":"34.599479","Long":"-91.574999"},"SHG":{"Station":"SHG","City":"Shungnak","Lat":"66.888083","Long":"-157.162416"},"SHH":{"Station":"SHH","City":"Shishmaref","Lat":"66.249583","Long":"-166.08936"},"SHL":{"Station":"SHL","City":"Shillong","Lat":"25.703642","Long":"91.978722"},"SHN":{"Station":"SHN","City":"Shelton","Lat":"47.233556","Long":"-123.147555"},"SHX":{"Station":"SHX","City":"Shageluk","Lat":"62.692306","Long":"-159.569221"},"SIC":{"Station":"SIC","City":"Sinop","Lat":"42.019006","Long":"35.079192"},"SIG":{"Station":"SIG","City":"San Juan","Lat":"18.456778","Long":"-66.098471"},"SIK":{"Station":"SIK","City":"Sikeston","Lat":"36.898889","Long":"-89.561749"},"SIO":{"Station":"SIO","City":"Smithton","Lat":"-40.834999","Long":"145.083611"},"SIV":{"Station":"SIV","City":"Sullivan","Lat":"39.114712","Long":"-87.448328"},"SIY":{"Station":"SIY","City":"Montague","Lat":"41.781444","Long":"-122.46811"},"SJN":{"Station":"SJN","City":"St. Johns","Lat":"34.518556","Long":"-109.378749"},"SJP":{"Station":"SJP","City":"S\u00e3o Jos\u00e9 do Rio Preto","Lat":"-20.816566","Long":"-49.40651"},"SKA":{"Station":"SKA","City":"Spokane","Lat":"47.615056","Long":"-117.655805"},"SKE":{"Station":"SKE","City":"Skien","Lat":"59.185","Long":"9.566944"},"SKN":{"Station":"SKN","City":"Stokmarknes","Lat":"68.580833","Long":"15.026111"},"SKW":{"Station":"SKW","City":"Skwentna","Lat":"61.965295","Long":"-151.191365"},"SKX":{"Station":"SKX","City":"Saransk","Lat":"54.125","Long":"45.212222"},"SKY":{"Station":"SKY","City":"Sandusky","Lat":"41.433361","Long":"-82.652332"},"SKZ":{"Station":"SKZ","City":"Sukkur","Lat":"27.721989","Long":"68.791683"},"SLB":{"Station":"SLB","City":"Storm Lake","Lat":"42.597222","Long":"-95.240666"},"SLE":{"Station":"SLE","City":"Salem","Lat":"44.909528","Long":"-123.002499"},"SLG":{"Station":"SLG","City":"Siloam Springs","Lat":"36.191861","Long":"-94.489999"},"SLH":{"Station":"SLH","City":"Sola","Lat":"-13.851666","Long":"167.536944"},"SLI":{"Station":"SLI","City":"Solwezi","Lat":"-12.167","Long":"26.367"},"SLJ":{"Station":"SLJ","City":"Chandler","Lat":"33.298876","Long":"-111.915436"},"SLO":{"Station":"SLO","City":"Salem","Lat":"38.642872","Long":"-88.964184"},"SLQ":{"Station":"SLQ","City":"Sleetmute","Lat":"61.700518","Long":"-157.16588"},"SLR":{"Station":"SLR","City":"Sulphur Springs","Lat":"33.159833","Long":"-95.621138"},"SLS":{"Station":"SLS","City":"Silistra","Lat":"44.055167","Long":"27.178833"},"SMA":{"Station":"SMA","City":"Santa Maria","Lat":"36.97139","Long":"-25.170638"},"SMD":{"Station":"SMD","City":"Fort Wayne","Lat":"41.143361","Long":"-85.152777"},"SME":{"Station":"SME","City":"Somerset","Lat":"37.053583","Long":"-84.615638"},"SMI":{"Station":"SMI","City":"Samos","Lat":"37.689999","Long":"26.911667"},"SMK":{"Station":"SMK","City":"St. Michael","Lat":"63.490056","Long":"-162.110388"},"SMN":{"Station":"SMN","City":"Salmon","Lat":"45.123781","Long":"-113.881331"},"SMO":{"Station":"SMO","City":"Santa Monica","Lat":"34.015833","Long":"-118.451305"},"SMQ":{"Station":"SMQ","City":"Sampit","Lat":"-2.499193","Long":"112.974992"},"SMU":{"Station":"SMU","City":"Sheep Mountain","Lat":"61.811989","Long":"-147.506921"},"SNC":{"Station":"SNC","City":"Salinas","Lat":"-2.204993","Long":"-80.988877"},"SNE":{"Station":"SNE","City":"Pregui\u00e7a","Lat":"16.588356","Long":"-24.284655"},"SNH":{"Station":"SNH","City":"Stanthorpe","Lat":"-28.620277","Long":"151.990556"},"SNK":{"Station":"SNK","City":"Snyder","Lat":"32.693389","Long":"-100.950471"},"SNL":{"Station":"SNL","City":"Shawnee","Lat":"35.357306","Long":"-96.942832"},"SNP":{"Station":"SNP","City":"St. Paul Island","Lat":"57.166306","Long":"-170.222555"},"SNS":{"Station":"SNS","City":"Salinas","Lat":"36.662787","Long":"-121.606365"},"SNY":{"Station":"SNY","City":"Sidney","Lat":"41.099807","Long":"-102.984971"},"SOB":{"Station":"SOB","City":"S\u00e1rmell\u00e9k","Lat":"46.686389","Long":"17.159167"},"SOJ":{"Station":"SOJ","City":"S\u00f8rkjosen","Lat":"69.786839","Long":"20.959444"},"SOV":{"Station":"SOV","City":"Seldovia","Lat":"59.442439","Long":"-151.704049"},"SOY":{"Station":"SOY","City":"Stronsay","Lat":"59.155","Long":"-2.641388"},"SPA":{"Station":"SPA","City":"Spartanburg","Lat":"34.915722","Long":"-81.956499"},"SPF":{"Station":"SPF","City":"Spearfish","Lat":"44.481144","Long":"-103.785929"},"SPG":{"Station":"SPG","City":"St. Petersburg","Lat":"27.765111","Long":"-82.626971"},"SPM":{"Station":"SPM","City":"Binsfeld","Lat":"49.972667","Long":"6.6925"},"SPZ":{"Station":"SPZ","City":"Springdale","Lat":"36.176389","Long":"-94.119249"},"SQI":{"Station":"SQI","City":"Sterling\/Rockfalls","Lat":"41.742833","Long":"-89.676277"},"SQL":{"Station":"SQL","City":"San Carlos","Lat":"37.511855","Long":"-122.249523"},"SQQ":{"Station":"SQQ","City":"Siauliai","Lat":"55.893886","Long":"23.394975"},"SQW":{"Station":"SQW","City":"Skive","Lat":"56.550208","Long":"9.172983"},"SRC":{"Station":"SRC","City":"Searcy","Lat":"35.21061","Long":"-91.737538"},"SRG":{"Station":"SRG","City":"Semarang","Lat":"-6.971446","Long":"110.374122"},"SRT":{"Station":"SRT","City":"Soroti","Lat":"1.727578","Long":"33.622861"},"SRV":{"Station":"SRV","City":"Stony River","Lat":"61.78975","Long":"-156.588527"},"SRZ":{"Station":"SRZ","City":"Santa Cruz","Lat":"-17.81158","Long":"-63.17148"},"SSC":{"Station":"SSC","City":"Sumter","Lat":"33.972717","Long":"-80.470568"},"SSF":{"Station":"SSF","City":"San Antonio","Lat":"29.336982","Long":"-98.471044"},"SSI":{"Station":"SSI","City":"Brunswick","Lat":"31.151972","Long":"-81.391055"},"SSN":{"Station":"SSN","City":"Seongnam","Lat":"37.445833","Long":"127.113889"},"SSZ":{"Station":"SSZ","City":"Santos","Lat":"-23.925205","Long":"-46.287499"},"STA":{"Station":"STA","City":"Stauning","Lat":"55.990122","Long":"8.353906"},"STE":{"Station":"STE","City":"Stevens Point","Lat":"44.545136","Long":"-89.530283"},"STJ":{"Station":"STJ","City":"St. Joseph","Lat":"39.771944","Long":"-94.909705"},"STK":{"Station":"STK","City":"Sterling","Lat":"40.614965","Long":"-103.264284"},"AAE":{"Station":"AAE","City":"Annaba","Lat":"36.822222","Long":"7.809444"},"AAL":{"Station":"AAL","City":"Aalborg","Lat":"57.092789","Long":"9.849164"},"AAR":{"Station":"AAR","City":"\u00c5rhus","Lat":"56.300017","Long":"10.619008"},"AAZ":{"Station":"AAZ","City":"Quezaltenango","Lat":"14.86555","Long":"-91.50198"},"ABE":{"Station":"ABE","City":"Allentown","Lat":"40.652361","Long":"-75.440416"},"ABG":{"Station":"ABG","City":"Abingdon Downs","Lat":"-17.617","Long":"143.167"},"ABI":{"Station":"ABI","City":"Abilene","Lat":"32.411333","Long":"-99.681888"},"ABJ":{"Station":"ABJ","City":"Abidjan","Lat":"5.261386","Long":"-3.926293"},"ABL":{"Station":"ABL","City":"Ambler","Lat":"67.106314","Long":"-157.857471"},"ABM":{"Station":"ABM","City":"Bamaga","Lat":"-10.950832","Long":"142.459444"},"ABN":{"Station":"ABN","City":"Albina","Lat":"5.513","Long":"-54.05"},"ABQ":{"Station":"ABQ","City":"Albuquerque","Lat":"35.040194","Long":"-106.609193"},"ABR":{"Station":"ABR","City":"Aberdeen","Lat":"45.449056","Long":"-98.421832"},"ABS":{"Station":"ABS","City":"Abu Simbel","Lat":"22.375953","Long":"31.611722"},"ABU":{"Station":"ABU","City":"Atambua","Lat":"-9.074443","Long":"124.904444"},"ABX":{"Station":"ABX","City":"Albury","Lat":"-36.067777","Long":"146.958056"},"ABY":{"Station":"ABY","City":"Albany","Lat":"31.535528","Long":"-84.194471"},"ABZ":{"Station":"ABZ","City":"Aberdeen","Lat":"57.201944","Long":"-2.197777"},"ACA":{"Station":"ACA","City":"Acapulco","Lat":"16.757061","Long":"-99.753952"},"ACC":{"Station":"ACC","City":"Accra","Lat":"5.605186","Long":"-0.166785"},"ACE":{"Station":"ACE","City":"Arrecife","Lat":"28.945464","Long":"-13.605224"},"ACI":{"Station":"ACI","City":"Alderney","Lat":"49.706111","Long":"-2.214721"},"ACK":{"Station":"ACK","City":"Nantucket","Lat":"41.252975","Long":"-70.05991"},"ACT":{"Station":"ACT","City":"Waco","Lat":"31.612194","Long":"-97.230305"},"ACV":{"Station":"ACV","City":"Arcata\/Eureka","Lat":"40.977833","Long":"-124.108471"},"ACY":{"Station":"ACY","City":"Atlantic City","Lat":"39.457583","Long":"-74.577166"},"ADA":{"Station":"ADA","City":"Adana","Lat":"36.982166","Long":"35.280388"},"ADB":{"Station":"ADB","City":"Izmir","Lat":"38.292392","Long":"27.156953"},"ADD":{"Station":"ADD","City":"Addis Ababa","Lat":"8.977889","Long":"38.799319"},"ADH":{"Station":"ADH","City":"Aldan","Lat":"58.602778","Long":"125.408889"},"ADJ":{"Station":"ADJ","City":"Amman","Lat":"31.972703","Long":"35.991569"},"ADL":{"Station":"ADL","City":"Adelaide","Lat":"-34.944999","Long":"138.530556"},"ADQ":{"Station":"ADQ","City":"Kodiak","Lat":"57.749962","Long":"-152.493819"},"ADR":{"Station":"ADR","City":"Andrews","Lat":"33.4517","Long":"-79.526176"},"ADV":{"Station":"ADV","City":"Andover","Lat":"51.207","Long":"-1.528"},"ADZ":{"Station":"ADZ","City":"San Andr\u00e9s Island","Lat":"12.583683","Long":"-81.710918"},"AEP":{"Station":"AEP","City":"Buenos Aires","Lat":"-34.559174","Long":"-58.415605"},"AES":{"Station":"AES","City":"\u00c5lesund","Lat":"62.560372","Long":"6.110164"},"AET":{"Station":"AET","City":"Allakaket","Lat":"66.551833","Long":"-152.622166"},"AEU":{"Station":"AEU","City":"Abu Musa Island","Lat":"25.875742","Long":"55.032994"},"AEX":{"Station":"AEX","City":"Alexandria","Lat":"31.327372","Long":"-92.548555"},"AEY":{"Station":"AEY","City":"Akureyri","Lat":"65.658611","Long":"-18.072221"},"AFS":{"Station":"AFS","City":"Zarafshan","Lat":"41.613611","Long":"64.232778"},"AFZ":{"Station":"AFZ","City":"Sabzevar","Lat":"36.168083","Long":"57.595183"},"AGA":{"Station":"AGA","City":"Agadir","Lat":"30.324997","Long":"-9.413066"},"AGB":{"Station":"AGB","City":"Augsburg","Lat":"48.425158","Long":"10.931764"},"AGD":{"Station":"AGD","City":"Anggi","Lat":"-1.383","Long":"133.867"},"AGF":{"Station":"AGF","City":"Agen","Lat":"44.174714","Long":"0.590619"},"AGH":{"Station":"AGH","City":"\u00c4ngelholm","Lat":"56.296072","Long":"12.847139"},"AGP":{"Station":"AGP","City":"M\u00e1laga","Lat":"36.6749","Long":"-4.499105"},"AGR":{"Station":"AGR","City":"Agra","Lat":"27.155831","Long":"77.960892"},"AGS":{"Station":"AGS","City":"Augusta","Lat":"33.369944","Long":"-81.964499"},"AGU":{"Station":"AGU","City":"Aguascalientes","Lat":"21.705558","Long":"-102.317857"},"AHD":{"Station":"AHD","City":"Ardmore","Lat":"34.146989","Long":"-97.122651"},"AHF":{"Station":"AHF","City":"Arapahoe","Lat":"40.341583","Long":"-99.907805"},"AHN":{"Station":"AHN","City":"Athens","Lat":"33.948583","Long":"-83.32636"},"AHO":{"Station":"AHO","City":"Alghero","Lat":"40.632133","Long":"8.290772"},"AIA":{"Station":"AIA","City":"Alliance","Lat":"42.053222","Long":"-102.803777"},"AIN":{"Station":"AIN","City":"Wainwright","Lat":"70.638","Long":"-159.994749"},"AIR":{"Station":"AIR","City":"Aripuan\u00e3","Lat":"-10.186388","Long":"-59.457499"},"AJA":{"Station":"AJA","City":"Ajaccio","Lat":"41.923889","Long":"8.8025"},"AJK":{"Station":"AJK","City":"Arak","Lat":"34.138147","Long":"49.847292"},"AJN":{"Station":"AJN","City":"Anjouan","Lat":"-12.131666","Long":"44.430279"},"AJS":{"Station":"AJS","City":"Punta Abreojos","Lat":"26.727222","Long":"-113.559443"},"AJU":{"Station":"AJU","City":"Aracaju","Lat":"-10.983999","Long":"-37.070332"},"AKA":{"Station":"AKA","City":"Ankang","Lat":"32.708056","Long":"108.931389"},"AKJ":{"Station":"AKJ","City":"Asahikawa","Lat":"43.670833","Long":"142.4475"},"AKL":{"Station":"AKL","City":"Auckland","Lat":"-37.008055","Long":"174.791667"},"AKU":{"Station":"AKU","City":"Aksu","Lat":"41.2625","Long":"80.291667"},"ALA":{"Station":"ALA","City":"Almaty","Lat":"43.352072","Long":"77.040508"},"ALB":{"Station":"ALB","City":"Albany","Lat":"42.749111","Long":"-73.801971"},"ALC":{"Station":"ALC","City":"Alicante","Lat":"38.282169","Long":"-0.558155"},"ALE":{"Station":"ALE","City":"Alpine","Lat":"30.384222","Long":"-103.683582"},"ALF":{"Station":"ALF","City":"Alta","Lat":"69.976111","Long":"23.371667"},"ALG":{"Station":"ALG","City":"Algiers","Lat":"36.694444","Long":"3.216944"},"ALM":{"Station":"ALM","City":"Alamogordo","Lat":"32.841278","Long":"-105.98886"},"ALO":{"Station":"ALO","City":"Waterloo","Lat":"42.557083","Long":"-92.400332"},"ALP":{"Station":"ALP","City":"Aleppo","Lat":"36.180675","Long":"37.224358"},"ALS":{"Station":"ALS","City":"Alamosa","Lat":"37.434917","Long":"-105.866555"},"ALW":{"Station":"ALW","City":"Walla Walla","Lat":"46.094778","Long":"-118.288999"},"ALY":{"Station":"ALY","City":"Alexandria","Lat":"31.183903","Long":"29.948889"},"AMA":{"Station":"AMA","City":"Amarillo","Lat":"35.219361","Long":"-101.705916"},"AMD":{"Station":"AMD","City":"Ahmedabad","Lat":"23.077242","Long":"72.63465"},"AMK":{"Station":"AMK","City":"Durango","Lat":"37.203178","Long":"-107.869194"},"AMM":{"Station":"AMM","City":"Amman","Lat":"31.722556","Long":"35.993214"},"AMQ":{"Station":"AMQ","City":"Ambon","Lat":"-3.710263","Long":"128.089136"},"AMS":{"Station":"AMS","City":"Amsterdam","Lat":"52.308613","Long":"4.763889"},"ANB":{"Station":"ANB","City":"Anniston","Lat":"33.588167","Long":"-85.85811"},"ANC":{"Station":"ANC","City":"Anchorage","Lat":"61.174083","Long":"-149.998193"},"ANF":{"Station":"ANF","City":"Antofagasta","Lat":"-23.444477","Long":"-70.445099"},"ANG":{"Station":"ANG","City":"Angoul\u00eame","Lat":"45.729475","Long":"0.219153"},"ANI":{"Station":"ANI","City":"Aniak","Lat":"61.581597","Long":"-159.543042"},"ANL":{"Station":"ANL","City":"Andulo","Lat":"-11.471388","Long":"16.710833"},"ANR":{"Station":"ANR","City":"Antwerpen","Lat":"51.189444","Long":"4.460278"},"ANU":{"Station":"ANU","City":"Antigua","Lat":"17.136667","Long":"-61.792777"},"ANV":{"Station":"ANV","City":"Anvik","Lat":"62.647333","Long":"-160.190055"},"AOE":{"Station":"AOE","City":"Eskisehir","Lat":"39.809858","Long":"30.519378"},"AOI":{"Station":"AOI","City":"Ancona","Lat":"43.616342","Long":"13.362319"},"AOJ":{"Station":"AOJ","City":"Aomori","Lat":"40.734722","Long":"140.690833"},"AOK":{"Station":"AOK","City":"Karpathos","Lat":"35.421408","Long":"27.146008"},"AOO":{"Station":"AOO","City":"Altoona","Lat":"40.296361","Long":"-78.320027"},"AOR":{"Station":"AOR","City":"Alor Setar","Lat":"6.189667","Long":"100.398183"},"APF":{"Station":"APF","City":"Naples","Lat":"26.152442","Long":"-81.775638"},"APL":{"Station":"APL","City":"Nampula","Lat":"-15.10561","Long":"39.2818"},"APN":{"Station":"APN","City":"Alpena","Lat":"45.078083","Long":"-83.560305"},"APO":{"Station":"APO","City":"Apartad\u00f3","Lat":"7.811817","Long":"-76.716324"},"APR":{"Station":"APR","City":"April River","Lat":"-4.676388","Long":"142.54"},"APW":{"Station":"APW","City":"Apia","Lat":"-13.829666","Long":"-171.997166"},"AQB":{"Station":"AQB","City":"Santa Cruz del Quich\u00e9","Lat":"15.012222","Long":"-91.150555"},"AQG":{"Station":"AQG","City":"Anqing","Lat":"30.582222","Long":"117.050278"},"AQJ":{"Station":"AQJ","City":"Aqaba","Lat":"29.611619","Long":"35.018067"},"AQM":{"Station":"AQM","City":"Ariquemes","Lat":"-10.177777","Long":"-62.82611"},"ARA":{"Station":"ARA","City":"New Iberia","Lat":"30.037758","Long":"-91.883895"},"ARH":{"Station":"ARH","City":"Arkhangelsk","Lat":"64.600281","Long":"40.716667"},"ARI":{"Station":"ARI","City":"Arica","Lat":"-18.34853","Long":"-70.338741"},"ARM":{"Station":"ARM","City":"Armidale","Lat":"-30.528055","Long":"151.617222"},"ARN":{"Station":"ARN","City":"Stockholm","Lat":"59.651944","Long":"17.918611"},"ART":{"Station":"ART","City":"Watertown","Lat":"43.991889","Long":"-76.020666"},"ASE":{"Station":"ASE","City":"Aspen","Lat":"39.221889","Long":"-106.868221"},"ASM":{"Station":"ASM","City":"Asmara","Lat":"15.291853","Long":"38.910667"},"ASP":{"Station":"ASP","City":"Alice Springs","Lat":"-23.806666","Long":"133.902222"},"ASQ":{"Station":"ASQ","City":"Austin","Lat":"39.467944","Long":"-117.197443"},"ASU":{"Station":"ASU","City":"Asuncion","Lat":"-25.239849","Long":"-57.519132"},"ATC":{"Station":"ATC","City":"Arthur's Town","Lat":"24.629417","Long":"-75.673774"},"ATE":{"Station":"ATE","City":"Antlers","Lat":"34.192611","Long":"-95.64986"},"ATH":{"Station":"ATH","City":"Athens","Lat":"37.936358","Long":"23.944467"},"ATL":{"Station":"ATL","City":"Atlanta","Lat":"33.6367","Long":"-84.427863"},"ATT":{"Station":"ATT","City":"Atmautluak","Lat":"60.867139","Long":"-162.273388"},"ATW":{"Station":"ATW","City":"Appleton","Lat":"44.258083","Long":"-88.519082"},"ATX":{"Station":"ATX","City":"Atbasar","Lat":"51.851667","Long":"68.363333"},"ATY":{"Station":"ATY","City":"Watertown","Lat":"44.913972","Long":"-97.154721"},"AUA":{"Station":"AUA","City":"Aruba","Lat":"12.501389","Long":"-70.01522"},"AUC":{"Station":"AUC","City":"Arauca","Lat":"7.068889","Long":"-70.736943"},"AUE":{"Station":"AUE","City":"Abu Rudeis","Lat":"28.899017","Long":"33.202461"},"AUG":{"Station":"AUG","City":"Augusta","Lat":"44.32065","Long":"-69.797317"},"AUL":{"Station":"AUL","City":"Aur Island","Lat":"8.145278","Long":"171.173056"},"AUS":{"Station":"AUS","City":"Austin","Lat":"30.194528","Long":"-97.669888"},"AUX":{"Station":"AUX","City":"Araguaina","Lat":"-7.227866","Long":"-48.240466"},"AVA":{"Station":"AVA","City":"Anshun","Lat":"26.260556","Long":"105.873056"},"AVG":{"Station":"AVG","City":"Auvergne","Lat":"-15.690277","Long":"130.008611"},"AVI":{"Station":"AVI","City":"Ciego de \u00c1vila","Lat":"22.027053","Long":"-78.789616"},"AVL":{"Station":"AVL","City":"Asheville","Lat":"35.436194","Long":"-82.541805"},"AVN":{"Station":"AVN","City":"Avignon","Lat":"43.906581","Long":"4.902028"},"AVP":{"Station":"AVP","City":"Wilkes-Barre\/Scranton","Lat":"41.338472","Long":"-75.723388"},"AVW":{"Station":"AVW","City":"Marana","Lat":"32.409556","Long":"-111.218388"},"AWN":{"Station":"AWN","City":"Alton Downs","Lat":"-26.533","Long":"139.267"},"AWP":{"Station":"AWP","City":"Austral Downs Station","Lat":"-20.492777","Long":"137.766111"},"AXA":{"Station":"AXA","City":"The Valley","Lat":"18.204722","Long":"-63.053888"},"AXB":{"Station":"AXB","City":"Alexandria Bay","Lat":"44.316717","Long":"-75.899672"},"AXD":{"Station":"AXD","City":"Alexandroupolis","Lat":"40.855869","Long":"25.956264"},"AXL":{"Station":"AXL","City":"Alexandria Station","Lat":"-19.061666","Long":"136.713333"},"AYQ":{"Station":"AYQ","City":"Ayers Rock","Lat":"-25.18611","Long":"130.975556"},"AYT":{"Station":"AYT","City":"Antalya","Lat":"36.898731","Long":"30.800461"},"AYW":{"Station":"AYW","City":"Ayawasi","Lat":"-1.133","Long":"132.467"},"AZO":{"Station":"AZO","City":"Kalamazoo","Lat":"42.234389","Long":"-85.551555"},"AZS":{"Station":"AZS","City":"Saman\u00e1","Lat":"19.267","Long":"-69.742"},"BAA":{"Station":"BAA","City":"Bialla","Lat":"-5.330555","Long":"151.007778"},"BAE":{"Station":"BAE","City":"Barcelonnette","Lat":"44.388333","Long":"6.610278"},"BAH":{"Station":"BAH","City":"Al Manama","Lat":"26.270834","Long":"50.63361"},"BAL":{"Station":"BAL","City":"Batman","Lat":"37.928969","Long":"41.116583"},"BAN":{"Station":"BAN","City":"Basongo","Lat":"-4.317","Long":"20.433"},"BAO":{"Station":"BAO","City":"Ban Mak Khaen","Lat":"17.383","Long":"102.8"},"BAQ":{"Station":"BAQ","City":"Barranquilla","Lat":"10.889461","Long":"-74.780677"},"BAS":{"Station":"BAS","City":"Ballalae","Lat":"-6.990555","Long":"155.885833"},"BAV":{"Station":"BAV","City":"Baotou","Lat":"40.56","Long":"109.996944"},"BBA":{"Station":"BBA","City":"Balmaceda","Lat":"-45.916057","Long":"-71.689474"},"BBC":{"Station":"BBC","City":"Bay City","Lat":"28.97325","Long":"-95.863443"},"BBG":{"Station":"BBG","City":"Butaritari Atoll","Lat":"3.085833","Long":"172.811111"},"BBH":{"Station":"BBH","City":"Barth","Lat":"54.33754","Long":"12.699705"},"BBI":{"Station":"BBI","City":"Bhubaneswar","Lat":"20.244364","Long":"85.817781"},"BBK":{"Station":"BBK","City":"Kasane","Lat":"-17.832874","Long":"25.1624"},"BBM":{"Station":"BBM","City":"Battambang","Lat":"13.095564","Long":"103.224408"},"BBN":{"Station":"BBN","City":"Bario","Lat":"3.736944","Long":"115.469444"},"BBO":{"Station":"BBO","City":"Berbera","Lat":"10.389167","Long":"44.941106"},"BBQ":{"Station":"BBQ","City":"Barbuda","Lat":"17.635833","Long":"-61.826943"},"BBR":{"Station":"BBR","City":"Basse Terre","Lat":"16.013333","Long":"-61.742221"},"BBS":{"Station":"BBS","City":"Blackbushe","Lat":"51.323889","Long":"-0.847499"},"BBU":{"Station":"BBU","City":"Bucharest","Lat":"44.503194","Long":"26.102111"},"BBV":{"Station":"BBV","City":"Grand Bereby","Lat":"4.633","Long":"-6.917"},"BBZ":{"Station":"BBZ","City":"Zambezi","Lat":"-13.537221","Long":"23.108333"},"BCA":{"Station":"BCA","City":"Baracoa","Lat":"20.365317","Long":"-74.506205"},"BCC":{"Station":"BCC","City":"Bear Creek","Lat":"63.571609","Long":"-156.14405"},"BCD":{"Station":"BCD","City":"Bacolod","Lat":"10.642511","Long":"122.929617"},"BCH":{"Station":"BCH","City":"Baucau","Lat":"-8.485471","Long":"126.399333"},"BCN":{"Station":"BCN","City":"Barcelona","Lat":"41.297078","Long":"2.078464"},"BCO":{"Station":"BCO","City":"Jinka","Lat":"5.783","Long":"36.562"},"BCQ":{"Station":"BCQ","City":"Brack","Lat":"27.653","Long":"14.272"},"BCR":{"Station":"BCR","City":"Boca do Acre","Lat":"-8.83456","Long":"-67.312402"},"BCS":{"Station":"BCS","City":"Belle Chasse","Lat":"29.866039","Long":"-90.022292"},"BCW":{"Station":"BCW","City":"Bengu\u00e9ra Island","Lat":"-21.853055","Long":"35.438333"},"BCX":{"Station":"BCX","City":"Beloretsk","Lat":"53.938056","Long":"58.34"},"BDA":{"Station":"BDA","City":"Bermuda","Lat":"32.364042","Long":"-64.678702"},"BDB":{"Station":"BDB","City":"Bundaberg","Lat":"-24.903888","Long":"152.318611"},"BDD":{"Station":"BDD","City":"Badu Island","Lat":"-10.149999","Long":"142.174167"},"BDF":{"Station":"BDF","City":"Bradford","Lat":"41.230871","Long":"-89.615651"},"BDH":{"Station":"BDH","City":"Bandar Lengeh","Lat":"26.532","Long":"54.824847"},"BDI":{"Station":"BDI","City":"Bird Island","Lat":"-3.724721","Long":"55.205278"},"BDK":{"Station":"BDK","City":"Bondoukou","Lat":"8.017222","Long":"-2.761943"},"BDL":{"Station":"BDL","City":"Windsor Locks","Lat":"41.939145","Long":"-72.68337"},"BDN":{"Station":"BDN","City":"Badin","Lat":"24.841519","Long":"68.838408"},"BDO":{"Station":"BDO","City":"Bandung","Lat":"-6.900624","Long":"107.576294"},"BDP":{"Station":"BDP","City":"Chandragadhi","Lat":"26.570278","Long":"88.075833"},"BDR":{"Station":"BDR","City":"Bridgeport","Lat":"41.163472","Long":"-73.126166"},"BDT":{"Station":"BDT","City":"Gbadolite","Lat":"4.253206","Long":"20.975283"},"BDV":{"Station":"BDV","City":"Moba","Lat":"-7.083888","Long":"29.738333"},"BDW":{"Station":"BDW","City":"Bedford Downs","Lat":"-17.287499","Long":"127.466944"},"BEB":{"Station":"BEB","City":"Benbecula","Lat":"57.481111","Long":"-7.362777"},"BED":{"Station":"BED","City":"Bedford","Lat":"42.469944","Long":"-71.288999"},"BEE":{"Station":"BEE","City":"Beagle Bay","Lat":"-17.016388","Long":"122.646111"},"BEG":{"Station":"BEG","City":"Beograd","Lat":"44.818444","Long":"20.309139"},"BEH":{"Station":"BEH","City":"Benton Harbor","Lat":"42.12853","Long":"-86.426134"},"BEI":{"Station":"BEI","City":"Beica","Lat":"9.386389","Long":"34.521944"},"BEJ":{"Station":"BEJ","City":"Tanjung Redep","Lat":"2.155497","Long":"117.432256"},"BEL":{"Station":"BEL","City":"Bel\u00e9m","Lat":"-1.379249","Long":"-48.476291"},"BEO":{"Station":"BEO","City":"Newcastle","Lat":"-33.06611","Long":"151.646389"},"BEP":{"Station":"BEP","City":"Bellary","Lat":"15.162783","Long":"76.882775"},"BEQ":{"Station":"BEQ","City":"Bury St. Edmunds","Lat":"52.342611","Long":"0.772939"},"BES":{"Station":"BES","City":"Brest","Lat":"48.447222","Long":"-4.421666"},"BET":{"Station":"BET","City":"Bethel","Lat":"60.778556","Long":"-161.837166"},"BEU":{"Station":"BEU","City":"Bedourie","Lat":"-24.34611","Long":"139.460278"},"BEV":{"Station":"BEV","City":"Beer Sheba","Lat":"31.287003","Long":"34.722953"},"BEW":{"Station":"BEW","City":"Beira","Lat":"-19.796418","Long":"34.907556"},"BEX":{"Station":"BEX","City":"Benson","Lat":"51.616389","Long":"-1.095832"},"BEY":{"Station":"BEY","City":"Beirut","Lat":"33.820931","Long":"35.488389"},"BEZ":{"Station":"BEZ","City":"Beru","Lat":"-1.354721","Long":"176.006944"},"BFC":{"Station":"BFC","City":"Bloomfield","Lat":"-15.87361","Long":"145.329722"},"BFD":{"Station":"BFD","City":"Bradford","Lat":"41.802944","Long":"-78.639971"},"BFF":{"Station":"BFF","City":"Scottsbluff","Lat":"41.874028","Long":"-103.595638"},"BFG":{"Station":"BFG","City":"Glen Canyon National Recreation Area","Lat":"37.545824","Long":"-110.713198"},"BFI":{"Station":"BFI","City":"Seattle","Lat":"47.53","Long":"-122.301971"},"BFL":{"Station":"BFL","City":"Bakersfield","Lat":"35.433861","Long":"-119.057666"},"BFM":{"Station":"BFM","City":"Mobile","Lat":"30.626778","Long":"-88.068082"},"BFN":{"Station":"BFN","City":"Bloemfontein","Lat":"-29.092721","Long":"26.302444"},"BFO":{"Station":"BFO","City":"Chiredzi","Lat":"-21.008082","Long":"31.57855"},"BFS":{"Station":"BFS","City":"Belfast","Lat":"54.6575","Long":"-6.215832"},"BFT":{"Station":"BFT","City":"Beaufort","Lat":"32.412167","Long":"-80.634353"},"BFU":{"Station":"BFU","City":"Bengbu","Lat":"32.8475","Long":"117.320278"},"BFX":{"Station":"BFX","City":"Bafoussem","Lat":"5.536919","Long":"10.354583"},"BGA":{"Station":"BGA","City":"Bucaramanga","Lat":"7.126944","Long":"-73.184999"},"BGB":{"Station":"BGB","City":"Booue","Lat":"-0.1","Long":"11.95"},"BGC":{"Station":"BGC","City":"Bragan\u00e7a","Lat":"41.8578","Long":"-6.707124"},"BGI":{"Station":"BGI","City":"Bridgetown","Lat":"13.074603","Long":"-59.492455"},"BGJ":{"Station":"BGJ","City":"Borgarfj\u00f6r\u00f0ur eystri","Lat":"65.516389","Long":"-13.804999"},"BGK":{"Station":"BGK","City":"Big Creek","Lat":"16.52","Long":"-88.409999"},"BGL":{"Station":"BGL","City":"Baglung","Lat":"28.212816","Long":"83.666328"},"BGM":{"Station":"BGM","City":"Binghamton","Lat":"42.208443","Long":"-75.979606"},"BGN":{"Station":"BGN","City":"Br\u00fcggen","Lat":"51.2","Long":"6.133"},"BGO":{"Station":"BGO","City":"Bergen","Lat":"60.293386","Long":"5.218142"},"BGR":{"Station":"BGR","City":"Bangor","Lat":"44.807444","Long":"-68.828138"},"BGT":{"Station":"BGT","City":"Bagdad","Lat":"34.595853","Long":"-113.170194"},"BGW":{"Station":"BGW","City":"Baghdad","Lat":"33.262539","Long":"44.234577"},"BGX":{"Station":"BGX","City":"Bag\u00e9","Lat":"-31.390527","Long":"-54.112243"},"BGY":{"Station":"BGY","City":"Bergamo","Lat":"45.673889","Long":"9.704166"},"BHA":{"Station":"BHA","City":"Bah\u00eda de Car\u00e1quez","Lat":"-0.60811","Long":"-80.402682"},"BHB":{"Station":"BHB","City":"Bar Harbor","Lat":"44.449769","Long":"-68.361564"},"BHD":{"Station":"BHD","City":"Belfast","Lat":"54.618056","Long":"-5.872499"},"BHG":{"Station":"BHG","City":"Brus Laguna","Lat":"15.735","Long":"-84.542499"},"BHH":{"Station":"BHH","City":"Bisha","Lat":"19.98435","Long":"42.620881"},"BHI":{"Station":"BHI","City":"Bah\u00eda Blanca","Lat":"-38.724966","Long":"-62.169316"},"BHL":{"Station":"BHL","City":"Bahia de los Angeles","Lat":"28.978611","Long":"-113.560832"},"BHM":{"Station":"BHM","City":"Birmingham","Lat":"33.563889","Long":"-86.752305"},"BHN":{"Station":"BHN","City":"Beihan","Lat":"14.781972","Long":"45.720083"},"BHP":{"Station":"BHP","City":"Bhojpur","Lat":"27.14743","Long":"87.050819"},"BHQ":{"Station":"BHQ","City":"Broken Hill","Lat":"-32.001388","Long":"141.471667"},"BHR":{"Station":"BHR","City":"Bharatpur","Lat":"27.678056","Long":"84.429444"},"BHS":{"Station":"BHS","City":"Bathurst","Lat":"-33.409443","Long":"149.651944"},"BHT":{"Station":"BHT","City":"Brighton Downs","Lat":"-23.363332","Long":"141.562778"},"BHU":{"Station":"BHU","City":"Bhavnagar","Lat":"21.752206","Long":"72.185181"},"BHX":{"Station":"BHX","City":"Birmingham","Lat":"52.453856","Long":"-1.748027"},"BHY":{"Station":"BHY","City":"Beihai","Lat":"21.539444","Long":"109.293889"},"BIA":{"Station":"BIA","City":"Bastia","Lat":"42.55","Long":"9.484722"},"BIB":{"Station":"BIB","City":"Baidoa","Lat":"3.101667","Long":"43.626944"},"BII":{"Station":"BII","City":"Bikini Atoll","Lat":"11.5225","Long":"165.565"},"BIK":{"Station":"BIK","City":"Biak","Lat":"-1.190016","Long":"136.107997"},"BIL":{"Station":"BIL","City":"Billings","Lat":"45.807667","Long":"-108.542888"},"BIM":{"Station":"BIM","City":"Bimini","Lat":"25.699881","Long":"-79.264655"},"BIN":{"Station":"BIN","City":"Bamyan","Lat":"34.808622","Long":"67.818233"},"BIO":{"Station":"BIO","City":"Bilbao","Lat":"43.301097","Long":"-2.910607"},"BIP":{"Station":"BIP","City":"Bulimba","Lat":"-16.883055","Long":"143.481389"},"BIQ":{"Station":"BIQ","City":"Biarritz","Lat":"43.468333","Long":"-1.53111"},"BIR":{"Station":"BIR","City":"Biratnagar","Lat":"26.484167","Long":"87.264444"},"BIS":{"Station":"BIS","City":"Bismarck","Lat":"46.772722","Long":"-100.745749"},"BIT":{"Station":"BIT","City":"Baitadi","Lat":"29.465263","Long":"80.549156"},"BIU":{"Station":"BIU","City":"B\u00edldudalur","Lat":"65.641389","Long":"-23.54611"},"BIW":{"Station":"BIW","City":"Billiluna","Lat":"-19.564721","Long":"127.671944"},"BIY":{"Station":"BIY","City":"Bhisho","Lat":"-32.897149","Long":"27.279111"},"BJA":{"Station":"BJA","City":"Bejaia","Lat":"36.711944","Long":"5.069444"},"BJB":{"Station":"BJB","City":"Bojnord","Lat":"37.492958","Long":"57.308219"},"BJC":{"Station":"BJC","City":"Denver","Lat":"39.908806","Long":"-105.117193"},"BJD":{"Station":"BJD","City":"Bakkafj\u00f6r\u00f0ur","Lat":"66.021944","Long":"-14.824443"},"BJH":{"Station":"BJH","City":"Bajhang","Lat":"29.53896","Long":"81.185364"},"BJI":{"Station":"BJI","City":"Bemidji","Lat":"47.510722","Long":"-94.934721"},"BJK":{"Station":"BJK","City":"Benjina","Lat":"-6.066199","Long":"134.273928"},"BJL":{"Station":"BJL","City":"Banjul","Lat":"13.337961","Long":"-16.652205"},"BJO":{"Station":"BJO","City":"Bermejo","Lat":"-22.773335","Long":"-64.31288"},"BJR":{"Station":"BJR","City":"Bahar Dar","Lat":"11.608075","Long":"37.321644"},"BJU":{"Station":"BJU","City":"Bajura","Lat":"29.502","Long":"81.669"},"BJX":{"Station":"BJX","City":"Le\u00f3n","Lat":"20.993464","Long":"-101.480846"},"BJY":{"Station":"BJY","City":"Batajnica","Lat":"44.935331","Long":"20.257506"},"BKB":{"Station":"BKB","City":"Bikaner","Lat":"28.070606","Long":"73.207161"},"BKG":{"Station":"BKG","City":"Branson","Lat":"36.532083","Long":"-93.200543"},"BKI":{"Station":"BKI","City":"Kota-Kinabalu","Lat":"5.937208","Long":"116.051181"},"BKJ":{"Station":"BKJ","City":"Boke","Lat":"10.965833","Long":"-14.28111"},"BKK":{"Station":"BKK","City":"Bangkok","Lat":"13.681108","Long":"100.747283"},"BKL":{"Station":"BKL","City":"Cleveland","Lat":"41.5175","Long":"-81.683332"},"BKM":{"Station":"BKM","City":"Ba'kelalan","Lat":"3.988611","Long":"115.618889"},"BKO":{"Station":"BKO","City":"Bamako","Lat":"12.533544","Long":"-7.949943"},"BKP":{"Station":"BKP","City":"Barkly Downs","Lat":"-20.464166","Long":"138.471111"},"BKQ":{"Station":"BKQ","City":"Blackall","Lat":"-24.427777","Long":"145.428611"},"BKR":{"Station":"BKR","City":"Bokoro","Lat":"12.385278","Long":"17.070833"},"BKU":{"Station":"BKU","City":"Betioky","Lat":"-23.733","Long":"44.389"},"BKW":{"Station":"BKW","City":"Beckley","Lat":"37.787333","Long":"-81.124166"},"BKX":{"Station":"BKX","City":"Brookings","Lat":"44.304833","Long":"-96.816943"},"BKY":{"Station":"BKY","City":"Bukavu","Lat":"-2.308977","Long":"28.808803"},"BLA":{"Station":"BLA","City":"Barcelona","Lat":"10.107139","Long":"-64.68916"},"BLB":{"Station":"BLB","City":"Balboa","Lat":"8.914794","Long":"-79.599632"},"BLC":{"Station":"BLC","City":"Bali","Lat":"5.894722","Long":"10.033333"},"BLE":{"Station":"BLE","City":"Borl\u00e4nge","Lat":"60.422017","Long":"15.515211"},"BLF":{"Station":"BLF","City":"Bluefield","Lat":"37.295806","Long":"-81.207693"},"BLI":{"Station":"BLI","City":"Bellingham","Lat":"48.792694","Long":"-122.537527"},"BLJ":{"Station":"BLJ","City":"Batna","Lat":"35.759167","Long":"6.3225"},"BLK":{"Station":"BLK","City":"Blackpool","Lat":"53.771667","Long":"-3.02861"},"BLL":{"Station":"BLL","City":"Billund","Lat":"55.740322","Long":"9.151778"},"BLN":{"Station":"BLN","City":"Benalla","Lat":"-36.551943","Long":"146.006667"},"BLO":{"Station":"BLO","City":"Bl\u00f6ndu\u00f3s","Lat":"65.645","Long":"-20.287499"},"BLP":{"Station":"BLP","City":"Bellavista","Lat":"-7.060555","Long":"-76.582221"},"BLQ":{"Station":"BLQ","City":"Bologna","Lat":"44.535444","Long":"11.288667"},"BLR":{"Station":"BLR","City":"Bangalore","Lat":"13.198867","Long":"77.705472"},"BLS":{"Station":"BLS","City":"Bollon","Lat":"-28.052499","Long":"147.48"},"BLT":{"Station":"BLT","City":"Blackwater","Lat":"-23.603055","Long":"148.806944"},"BLX":{"Station":"BLX","City":"Belluno","Lat":"46.166667","Long":"12.245278"},"BLY":{"Station":"BLY","City":"Belmullet","Lat":"54.222778","Long":"-10.030832"},"BLZ":{"Station":"BLZ","City":"Blantyre","Lat":"-15.679052","Long":"34.974014"},"BMA":{"Station":"BMA","City":"Stockholm","Lat":"59.354372","Long":"17.94165"},"BMB":{"Station":"BMB","City":"Bumbar","Lat":"2.182778","Long":"22.481667"},"BMD":{"Station":"BMD","City":"Belo sur Tsiribihina","Lat":"-19.686666","Long":"44.541944"},"BMF":{"Station":"BMF","City":"Bakouma","Lat":"5.694","Long":"22.801"},"BMG":{"Station":"BMG","City":"Bloomington","Lat":"39.146021","Long":"-86.616679"},"BMI":{"Station":"BMI","City":"Bloomington\/Normal","Lat":"40.477111","Long":"-88.915916"},"BMM":{"Station":"BMM","City":"Bitam","Lat":"2.075639","Long":"11.493195"},"BMN":{"Station":"BMN","City":"Bamarni","Lat":"37.09875","Long":"43.266583"},"BMO":{"Station":"BMO","City":"Bhamo","Lat":"24.269033","Long":"97.246153"},"BMR":{"Station":"BMR","City":"Baltrum","Lat":"53.726944","Long":"7.373055"},"BMS":{"Station":"BMS","City":"Brumado","Lat":"-14.255382","Long":"-41.817457"},"BMU":{"Station":"BMU","City":"Bima","Lat":"-8.539646","Long":"118.687322"},"BMV":{"Station":"BMV","City":"Buon Me Thuot","Lat":"12.668311","Long":"108.120272"},"BMW":{"Station":"BMW","City":"Bordj Badji Mokhtar","Lat":"21.375","Long":"0.923889"},"BMX":{"Station":"BMX","City":"Big Mountain","Lat":"59.361247","Long":"-155.25882"},"BMY":{"Station":"BMY","City":"Waala","Lat":"-19.720555","Long":"163.661111"},"BNA":{"Station":"BNA","City":"Nashville","Lat":"36.124472","Long":"-86.678193"},"BNB":{"Station":"BNB","City":"Boende","Lat":"-0.286","Long":"20.884"},"BNC":{"Station":"BNC","City":"Beni","Lat":"0.575","Long":"29.473889"},"BND":{"Station":"BND","City":"Bandar Abbas","Lat":"27.218317","Long":"56.37785"},"BNE":{"Station":"BNE","City":"Brisbane","Lat":"-27.384166","Long":"153.1175"},"BNI":{"Station":"BNI","City":"Benin City","Lat":"6.316981","Long":"5.599503"},"BNN":{"Station":"BNN","City":"Br\u00f8nn\u00f8ysund","Lat":"65.461111","Long":"12.2175"},"BNR":{"Station":"BNR","City":"Banfora","Lat":"10.683","Long":"-4.717"},"BNS":{"Station":"BNS","City":"Barinas","Lat":"8.619575","Long":"-70.220824"},"BNU":{"Station":"BNU","City":"Blumenau","Lat":"-26.830643","Long":"-49.090313"},"BOA":{"Station":"BOA","City":"Boma","Lat":"-5.854","Long":"13.064"},"BOC":{"Station":"BOC","City":"Bocas del Toro","Lat":"9.340853","Long":"-82.250841"},"BOD":{"Station":"BOD","City":"Bordeaux","Lat":"44.828611","Long":"-0.715277"},"BOG":{"Station":"BOG","City":"Bogot\u00e1","Lat":"4.703056","Long":"-74.138332"},"BOH":{"Station":"BOH","City":"Bournemouth","Lat":"50.78","Long":"-1.842499"},"BOI":{"Station":"BOI","City":"Boise","Lat":"43.564361","Long":"-116.22286"},"BOL":{"Station":"BOL","City":"Bally Kelly","Lat":"55.06","Long":"-7.015832"},"BOM":{"Station":"BOM","City":"Mumbai","Lat":"19.088686","Long":"72.867919"},"BON":{"Station":"BON","City":"Kralendijk","Lat":"12.131044","Long":"-68.26851"},"BOO":{"Station":"BOO","City":"Bod\u00f8","Lat":"67.269167","Long":"14.365278"},"BOP":{"Station":"BOP","City":"Bouar","Lat":"5.958","Long":"15.637"},"BOR":{"Station":"BOR","City":"Belfort","Lat":"47.655556","Long":"7.010833"},"BOS":{"Station":"BOS","City":"Boston","Lat":"42.362972","Long":"-71.006416"},"BOU":{"Station":"BOU","City":"Bourges","Lat":"47.064453","Long":"2.378953"},"BOX":{"Station":"BOX","City":"Borroloola","Lat":"-16.075277","Long":"136.302222"},"BOZ":{"Station":"BOZ","City":"Bozoum","Lat":"6.344167","Long":"16.321944"},"BPC":{"Station":"BPC","City":"Bamenda","Lat":"6.039239","Long":"10.122639"},"BPF":{"Station":"BPF","City":"Batuna","Lat":"-8.561666","Long":"158.119167"},"BPH":{"Station":"BPH","City":"Bislig","Lat":"8.19595","Long":"126.321597"},"BPM":{"Station":"BPM","City":"Hyderabad","Lat":"17.453117","Long":"78.467586"},"BPS":{"Station":"BPS","City":"Porto Seguro","Lat":"-16.438638","Long":"-39.080916"},"BPT":{"Station":"BPT","City":"Beaumont\/Port Arthur","Lat":"29.950833","Long":"-94.020693"},"BPX":{"Station":"BPX","City":"Bangda","Lat":"30.553611","Long":"97.108333"},"BPY":{"Station":"BPY","City":"Besalampy","Lat":"-16.741944","Long":"44.481388"},"BQA":{"Station":"BQA","City":"Baler","Lat":"15.729836","Long":"121.500133"},"BQD":{"Station":"BQD","City":"B\u00fa\u00f0ardalur","Lat":"65.075278","Long":"-21.800277"},"BQE":{"Station":"BQE","City":"Bubaque","Lat":"11.2975","Long":"-15.838055"},"BQK":{"Station":"BQK","City":"Brunswick","Lat":"31.259034","Long":"-81.466315"},"BQL":{"Station":"BQL","City":"Boulia","Lat":"-22.913332","Long":"139.899722"},"BQN":{"Station":"BQN","City":"Aguadilla","Lat":"18.494861","Long":"-67.129443"},"BQQ":{"Station":"BQQ","City":"Barra","Lat":"-11.080766","Long":"-43.147493"},"BQS":{"Station":"BQS","City":"Blagoveschensk","Lat":"50.425394","Long":"127.412478"},"BQW":{"Station":"BQW","City":"Balgo Hill","Lat":"-20.148332","Long":"127.973333"},"BRA":{"Station":"BRA","City":"Barreiras","Lat":"-12.078891","Long":"-45.008993"},"BRB":{"Station":"BRB","City":"Barreirinhas","Lat":"-12.079721","Long":"-45.009999"},"BRC":{"Station":"BRC","City":"San Carlos de Bariloche","Lat":"-41.151171","Long":"-71.157541"},"BRD":{"Station":"BRD","City":"Brainerd","Lat":"46.404222","Long":"-94.133805"},"BRE":{"Station":"BRE","City":"Bremen","Lat":"53.0475","Long":"8.786667"},"BRI":{"Station":"BRI","City":"Bari","Lat":"41.138856","Long":"16.760594"},"BRK":{"Station":"BRK","City":"Bourke","Lat":"-30.039166","Long":"145.951667"},"BRL":{"Station":"BRL","City":"Burlington","Lat":"40.783222","Long":"-91.125499"},"BRM":{"Station":"BRM","City":"Barquisimeto","Lat":"10.042747","Long":"-69.358618"},"BRN":{"Station":"BRN","City":"Bern","Lat":"46.9141","Long":"7.497153"},"BRO":{"Station":"BRO","City":"Brownsville","Lat":"25.906833","Long":"-97.425832"},"BRQ":{"Station":"BRQ","City":"Brno","Lat":"49.151269","Long":"16.694433"},"BRS":{"Station":"BRS","City":"Bristol","Lat":"51.382669","Long":"-2.719088"},"BRT":{"Station":"BRT","City":"Nguiu","Lat":"-11.769166","Long":"130.619722"},"BRU":{"Station":"BRU","City":"Brussels","Lat":"50.901389","Long":"4.484444"},"BRV":{"Station":"BRV","City":"Bremerhaven","Lat":"53.507081","Long":"8.572878"},"BRW":{"Station":"BRW","City":"Barrow","Lat":"71.284889","Long":"-156.768582"},"BRX":{"Station":"BRX","City":"Barahona","Lat":"18.251464","Long":"-71.120399"},"BSB":{"Station":"BSB","City":"Bras\u00edlia","Lat":"-15.871099","Long":"-47.918624"},"BSC":{"Station":"BSC","City":"Bah\u00eda Solano","Lat":"6.202936","Long":"-77.394799"},"BSD":{"Station":"BSD","City":"Baoshan","Lat":"25.051667","Long":"99.168056"},"BSE":{"Station":"BSE","City":"Sematan","Lat":"1.813611","Long":"109.762778"},"BSG":{"Station":"BSG","City":"Bata","Lat":"1.905469","Long":"9.805681"},"BSH":{"Station":"BSH","City":"Shoreham-by-Sea","Lat":"50.835556","Long":"-0.297221"},"BSK":{"Station":"BSK","City":"Biskra","Lat":"34.801667","Long":"5.741667"},"BSM":{"Station":"BSM","City":"Amol","Lat":"36.655144","Long":"52.349594"},"BSN":{"Station":"BSN","City":"Bossangoa","Lat":"6.492","Long":"17.429"},"BSO":{"Station":"BSO","City":"Basco","Lat":"20.451322","Long":"121.979883"},"BSQ":{"Station":"BSQ","City":"Bisbee","Lat":"31.36399","Long":"-109.883128"},"BSS":{"Station":"BSS","City":"Balsas","Lat":"-7.526032","Long":"-46.053274"},"BSU":{"Station":"BSU","City":"Basankusu","Lat":"1.224722","Long":"19.788889"},"BSV":{"Station":"BSV","City":"Bosset","Lat":"-7.241","Long":"141.092"},"BSW":{"Station":"BSW","City":"Boswell Bay","Lat":"60.423064","Long":"-146.145908"},"BSX":{"Station":"BSX","City":"Bassein","Lat":"16.815233","Long":"94.779911"},"BSY":{"Station":"BSY","City":"Bardera","Lat":"2.330556","Long":"42.311667"},"BTA":{"Station":"BTA","City":"Bertoua","Lat":"4.548611","Long":"13.726111"},"BTB":{"Station":"BTB","City":"Betou","Lat":"3.05","Long":"18.5"},"BTD":{"Station":"BTD","City":"Brunette Downs","Lat":"-18.635555","Long":"135.939444"},"BTE":{"Station":"BTE","City":"Bonthe","Lat":"7.532222","Long":"-12.51861"},"BTG":{"Station":"BTG","City":"Batangafo","Lat":"7.314167","Long":"18.308889"},"BTH":{"Station":"BTH","City":"Batam","Lat":"1.121028","Long":"104.118753"},"BTJ":{"Station":"BTJ","City":"Banda Aceh","Lat":"5.523522","Long":"95.420372"},"BTK":{"Station":"BTK","City":"Bratsk","Lat":"56.370556","Long":"101.698331"},"BTM":{"Station":"BTM","City":"Butte","Lat":"45.954806","Long":"-112.497471"},"BTQ":{"Station":"BTQ","City":"Butare","Lat":"-2.595832","Long":"29.736667"},"BTS":{"Station":"BTS","City":"Bratislava","Lat":"48.170167","Long":"17.212667"},"BTU":{"Station":"BTU","City":"Bintulu","Lat":"3.12385","Long":"113.020472"},"BTV":{"Station":"BTV","City":"Burlington","Lat":"44.471861","Long":"-73.153277"},"BTW":{"Station":"BTW","City":"Batu Licin","Lat":"-3.412407","Long":"115.995136"},"BTX":{"Station":"BTX","City":"Betoota","Lat":"-25.694999","Long":"140.736667"},"BUD":{"Station":"BUD","City":"Budapest","Lat":"47.436933","Long":"19.255592"},"BUF":{"Station":"BUF","City":"Buffalo","Lat":"42.940417","Long":"-78.730582"},"BUQ":{"Station":"BUQ","City":"Bulawayo","Lat":"-20.01743","Long":"28.617869"},"BUR":{"Station":"BUR","City":"Burbank","Lat":"34.200667","Long":"-118.358666"},"BUV":{"Station":"BUV","City":"Bella Uni\u00f3n","Lat":"-30.319166","Long":"-57.559443"},"BUZ":{"Station":"BUZ","City":"Bushehr","Lat":"28.944811","Long":"50.834637"},"BVB":{"Station":"BVB","City":"Boa Vista","Lat":"2.846311","Long":"-60.690068"},"BVE":{"Station":"BVE","City":"Brive-la-Gaillarde","Lat":"45.039722","Long":"1.485556"},"BVH":{"Station":"BVH","City":"Vilhena","Lat":"-12.694374","Long":"-60.098268"},"BVI":{"Station":"BVI","City":"Birdsville","Lat":"-25.897499","Long":"139.3475"},"BVM":{"Station":"BVM","City":"Belmonte","Lat":"-15.871693","Long":"-38.871916"},"BVV":{"Station":"BVV","City":"Burevestnik","Lat":"44.92","Long":"147.621944"},"BVW":{"Station":"BVW","City":"Batavia Downs","Lat":"-12.659166","Long":"142.674722"},"BVZ":{"Station":"BVZ","City":"Beverley Springs","Lat":"-16.73361","Long":"125.439444"},"BWA":{"Station":"BWA","City":"Bhairawa","Lat":"27.507222","Long":"83.418056"},"BWB":{"Station":"BWB","City":"Barrow Island","Lat":"-20.864443","Long":"115.406111"},"BWH":{"Station":"BWH","City":"Butterworth","Lat":"5.465917","Long":"100.391167"},"BWI":{"Station":"BWI","City":"Baltimore","Lat":"39.175361","Long":"-76.668332"},"BWK":{"Station":"BWK","City":"Bol","Lat":"43.285719","Long":"16.679719"},"BWL":{"Station":"BWL","City":"Blackwell","Lat":"36.795865","Long":"-97.316987"},"BWM":{"Station":"BWM","City":"Bowman","Lat":"46.186991","Long":"-103.42808"},"BWN":{"Station":"BWN","City":"Bandar Seri Begwan","Lat":"4.9442","Long":"114.928353"},"BWO":{"Station":"BWO","City":"Balakovo","Lat":"51.858333","Long":"47.745556"},"BWQ":{"Station":"BWQ","City":"Brewarrina","Lat":"-29.973888","Long":"146.816667"},"BWS":{"Station":"BWS","City":"Blaine","Lat":"48.990059","Long":"-122.732368"},"BWT":{"Station":"BWT","City":"Burnie","Lat":"-40.998888","Long":"145.731111"},"BWU":{"Station":"BWU","City":"Bankstown","Lat":"-33.924443","Long":"150.988333"},"BWW":{"Station":"BWW","City":"Cayo Santa Maria","Lat":"22.621261","Long":"-79.147168"},"BXB":{"Station":"BXB","City":"Babo","Lat":"-2.532241","Long":"133.438894"},"BXE":{"Station":"BXE","City":"Bakel","Lat":"14.847256","Long":"-12.468263"},"BXH":{"Station":"BXH","City":"Balhash","Lat":"46.893333","Long":"75.005"},"BXI":{"Station":"BXI","City":"Boundiali","Lat":"9.533","Long":"-6.467"},"BXN":{"Station":"BXN","City":"Bodrum","Lat":"37.140144","Long":"27.669717"},"BXR":{"Station":"BXR","City":"Bam","Lat":"29.084169","Long":"58.450042"},"BXU":{"Station":"BXU","City":"Butuan","Lat":"8.951322","Long":"125.477972"},"BXV":{"Station":"BXV","City":"Brei\u00f0dalsv\u00edk","Lat":"64.79","Long":"-14.022777"},"BYH":{"Station":"BYH","City":"Blytheville","Lat":"35.964333","Long":"-89.943943"},"BYJ":{"Station":"BYJ","City":"Beja","Lat":"38.078889","Long":"-7.932499"},"BYM":{"Station":"BYM","City":"Bayamo","Lat":"20.396331","Long":"-76.621493"},"BYN":{"Station":"BYN","City":"Bayankhongor","Lat":"46.163311","Long":"100.704086"},"BYQ":{"Station":"BYQ","City":"Bunyu","Lat":"3.455725","Long":"117.867372"},"BYR":{"Station":"BYR","City":"L\u00e6s\u00f8","Lat":"57.277228","Long":"11.000083"},"BYT":{"Station":"BYT","City":"Bantry","Lat":"51.668889","Long":"-9.484443"},"BYU":{"Station":"BYU","City":"Bayreuth","Lat":"49.984428","Long":"11.638569"},"BYW":{"Station":"BYW","City":"Blakely Island","Lat":"48.578992","Long":"-122.82629"},"BYX":{"Station":"BYX","City":"Baniyala","Lat":"-13.198055","Long":"136.226944"},"BZC":{"Station":"BZC","City":"B\u00fazios","Lat":"-22.770971","Long":"-41.96286"},"BZD":{"Station":"BZD","City":"Balranald","Lat":"-34.62361","Long":"143.578333"},"BZE":{"Station":"BZE","City":"Belize City","Lat":"17.539144","Long":"-88.308202"},"BZK":{"Station":"BZK","City":"Briansk","Lat":"53.214194","Long":"34.176447"},"BZM":{"Station":"BZM","City":"Bergen Op Zoom","Lat":"51.449092","Long":"4.342031"},"BZN":{"Station":"BZN","City":"Bozeman","Lat":"45.777572","Long":"-111.152021"},"BZP":{"Station":"BZP","City":"Bizant","Lat":"-14.740277","Long":"144.119167"},"BZR":{"Station":"BZR","City":"Beziers","Lat":"43.323428","Long":"3.353397"},"BZU":{"Station":"BZU","City":"Buta Zega","Lat":"2.818347","Long":"24.793706"},"BZV":{"Station":"BZV","City":"Brazzaville","Lat":"-4.250499","Long":"15.2515"},"BZY":{"Station":"BZY","City":"Beltsy","Lat":"47.838114","Long":"27.781475"},"CAB":{"Station":"CAB","City":"Cabinda","Lat":"-5.596991","Long":"12.188353"},"CAC":{"Station":"CAC","City":"Cascavel","Lat":"-25.000338","Long":"-53.500763"},"CAE":{"Station":"CAE","City":"Columbia","Lat":"33.938833","Long":"-81.119527"},"CAF":{"Station":"CAF","City":"Carauari","Lat":"-4.871518","Long":"-66.897457"},"CAG":{"Station":"CAG","City":"Cagliari","Lat":"39.251469","Long":"9.054283"},"CAI":{"Station":"CAI","City":"Cairo","Lat":"30.121944","Long":"31.405556"},"CAJ":{"Station":"CAJ","City":"Canaima","Lat":"6.231989","Long":"-62.854432"},"CAK":{"Station":"CAK","City":"Akron","Lat":"40.915056","Long":"-81.443638"},"CAM":{"Station":"CAM","City":"Camiri","Lat":"-20.00611","Long":"-63.527777"},"CAN":{"Station":"CAN","City":"Guangzhou","Lat":"23.392436","Long":"113.298786"},"CAP":{"Station":"CAP","City":"Cap-Ha\u00eftien","Lat":"19.732989","Long":"-72.194738"},"CAQ":{"Station":"CAQ","City":"Caucasia","Lat":"7.968469","Long":"-75.19846"},"CAS":{"Station":"CAS","City":"Casablanca","Lat":"33.556981","Long":"-7.660491"},"CAT":{"Station":"CAT","City":"Cat Island","Lat":"24.315292","Long":"-75.45233"},"CAW":{"Station":"CAW","City":"Campos dos Goitacazes","Lat":"-21.698332","Long":"-41.301668"},"CAX":{"Station":"CAX","City":"Carlisle","Lat":"54.9375","Long":"-2.809166"},"CAY":{"Station":"CAY","City":"Cayenne","Lat":"4.819722","Long":"-52.361943"},"CAZ":{"Station":"CAZ","City":"Cobar","Lat":"-31.538332","Long":"145.793889"},"CBB":{"Station":"CBB","City":"Cochabamba","Lat":"-17.421057","Long":"-66.177113"},"CBD":{"Station":"CBD","City":"Car Nicobar","Lat":"9.152508","Long":"92.819628"},"CBE":{"Station":"CBE","City":"Cumberland","Lat":"39.615387","Long":"-78.760806"},"CBH":{"Station":"CBH","City":"B\u00e9char","Lat":"31.650569","Long":"-2.253152"},"CBI":{"Station":"CBI","City":"Cape Barren Island","Lat":"-40.389721","Long":"148.015833"},"CBJ":{"Station":"CBJ","City":"Cabo Rojo","Lat":"17.928981","Long":"-71.644768"},"CBL":{"Station":"CBL","City":"Ciudad Bol\u00edvar","Lat":"8.121898","Long":"-63.537352"},"CBN":{"Station":"CBN","City":"Cirebon","Lat":"-6.756143","Long":"108.539672"},"CBO":{"Station":"CBO","City":"Cotabato","Lat":"7.165242","Long":"124.209619"},"CBQ":{"Station":"CBQ","City":"Calabar","Lat":"4.976019","Long":"8.347197"},"CBR":{"Station":"CBR","City":"Canberra","Lat":"-35.306943","Long":"149.195"},"CBS":{"Station":"CBS","City":"Cabimas","Lat":"10.330069","Long":"-71.322527"},"CBT":{"Station":"CBT","City":"Catumbela","Lat":"-12.479166","Long":"13.486944"},"CBV":{"Station":"CBV","City":"Cob\u00e1n","Lat":"15.468958","Long":"-90.406741"},"CBX":{"Station":"CBX","City":"Condobolin","Lat":"-33.064443","Long":"147.209167"},"CBY":{"Station":"CBY","City":"Canobie","Lat":"-19.478888","Long":"140.927222"},"CCC":{"Station":"CCC","City":"Cayo Coco","Lat":"22.513228","Long":"-78.510971"},"CCE":{"Station":"CCE","City":"Grand Case","Lat":"18.100556","Long":"-63.048888"},"CCF":{"Station":"CCF","City":"Carcassonne","Lat":"43.215817","Long":"2.308544"},"CCG":{"Station":"CCG","City":"Crane","Lat":"31.415139","Long":"-102.362919"},"CCH":{"Station":"CCH","City":"Chile Chico","Lat":"-46.58334","Long":"-71.687404"},"CCI":{"Station":"CCI","City":"Concordia","Lat":"-27.18061","Long":"-52.052721"},"CCJ":{"Station":"CCJ","City":"Calicut","Lat":"11.136839","Long":"75.9553"},"CCK":{"Station":"CCK","City":"West Island","Lat":"-12.188332","Long":"96.833889"},"CCL":{"Station":"CCL","City":"Chinchilla","Lat":"-26.774999","Long":"150.616667"},"CCM":{"Station":"CCM","City":"Crici\u00fama","Lat":"-28.725816","Long":"-49.424738"},"CCN":{"Station":"CCN","City":"Chakhcharan","Lat":"34.526669","Long":"65.271667"},"CCP":{"Station":"CCP","City":"Concepci\u00f3n","Lat":"-36.772649","Long":"-73.063105"},"CCS":{"Station":"CCS","City":"Caracas","Lat":"10.603117","Long":"-66.990582"},"CCT":{"Station":"CCT","City":"Colonia Catriel","Lat":"-37.910182","Long":"-67.834968"},"CCU":{"Station":"CCU","City":"Kolkata","Lat":"22.654739","Long":"88.446722"},"CCW":{"Station":"CCW","City":"Cowell","Lat":"-33.667221","Long":"136.891111"},"CCX":{"Station":"CCX","City":"C\u00e1ceres","Lat":"-16.043555","Long":"-57.629927"},"CCZ":{"Station":"CCZ","City":"Chub Cay","Lat":"25.417108","Long":"-77.880849"},"CDA":{"Station":"CDA","City":"Cooinda","Lat":"-12.903888","Long":"132.532778"},"CDC":{"Station":"CDC","City":"Cedar City","Lat":"37.700966","Long":"-113.098845"},"CDG":{"Station":"CDG","City":"Paris","Lat":"49.009722","Long":"2.547778"},"CDH":{"Station":"CDH","City":"Camden","Lat":"33.622806","Long":"-92.763388"},"CDJ":{"Station":"CDJ","City":"Conceicao do Araguaia","Lat":"-8.348346","Long":"-49.301527"},"CDL":{"Station":"CDL","City":"Candle","Lat":"65.907658","Long":"-161.926305"},"CDO":{"Station":"CDO","City":"Cradock","Lat":"-32.155555","Long":"25.645833"},"CDP":{"Station":"CDP","City":"Cuddapah","Lat":"14.509961","Long":"78.772833"},"CDR":{"Station":"CDR","City":"Chadron","Lat":"42.837558","Long":"-103.095401"},"CDV":{"Station":"CDV","City":"Cordova","Lat":"60.491778","Long":"-145.477555"},"CDY":{"Station":"CDY","City":"Mapun","Lat":"7.014","Long":"118.496"},"CEB":{"Station":"CEB","City":"Lapu-Lapu","Lat":"10.307542","Long":"123.979439"},"CEC":{"Station":"CEC","City":"Crescent City","Lat":"41.780167","Long":"-124.236527"},"CED":{"Station":"CED","City":"Ceduna","Lat":"-32.130555","Long":"133.709722"},"CEE":{"Station":"CEE","City":"Cherepovets","Lat":"59.273611","Long":"38.015833"},"CEI":{"Station":"CEI","City":"Chiang Rai","Lat":"19.952342","Long":"99.882928"},"CEJ":{"Station":"CEJ","City":"Chernihiv","Lat":"51.402222","Long":"31.158333"},"CEN":{"Station":"CEN","City":"Ciudad Obreg\u00f3n","Lat":"27.392639","Long":"-109.83311"},"CEO":{"Station":"CEO","City":"Waco Kungo","Lat":"-11.426388","Long":"15.101389"},"CEP":{"Station":"CEP","City":"Concepci\u00f3n","Lat":"-16.143055","Long":"-62.02611"},"CEQ":{"Station":"CEQ","City":"Cannes","Lat":"43.546389","Long":"6.954167"},"CER":{"Station":"CER","City":"Cherbourg","Lat":"49.650833","Long":"-1.475277"},"CES":{"Station":"CES","City":"Cessnock","Lat":"-32.787499","Long":"151.341667"},"CET":{"Station":"CET","City":"Cholet","Lat":"47.081906","Long":"-0.877216"},"CEX":{"Station":"CEX","City":"Chena Hot Springs","Lat":"65.051826","Long":"-146.047431"},"CEZ":{"Station":"CEZ","City":"Cortez","Lat":"37.303","Long":"-108.628055"},"CFB":{"Station":"CFB","City":"Cabo Frio","Lat":"-22.92168","Long":"-42.074268"},"CFC":{"Station":"CFC","City":"Ca\u00e7ador","Lat":"-26.788416","Long":"-50.939805"},"CFF":{"Station":"CFF","City":"Cafunfo","Lat":"-8.78361","Long":"17.989722"},"CFH":{"Station":"CFH","City":"Clifton Hills","Lat":"-27.014999","Long":"138.892222"},"CFI":{"Station":"CFI","City":"Camfield","Lat":"-17.019721","Long":"131.329722"},"CFO":{"Station":"CFO","City":"Confreza","Lat":"-10.634443","Long":"-51.56361"},"CFP":{"Station":"CFP","City":"Carpentaria Downs","Lat":"-18.717777","Long":"144.3125"},"CFR":{"Station":"CFR","City":"Caen","Lat":"49.173281","Long":"-0.449874"},"CFU":{"Station":"CFU","City":"Kerkyra","Lat":"39.601944","Long":"19.911667"},"CGB":{"Station":"CGB","City":"Cuiab\u00e1 (V\u00e1rzea Grande))","Lat":"-15.65293","Long":"-56.116718"},"CGD":{"Station":"CGD","City":"Changde","Lat":"28.918889","Long":"111.640278"},"CGH":{"Station":"CGH","City":"S\u00e3o Paulo","Lat":"-23.626691","Long":"-46.655374"},"CGI":{"Station":"CGI","City":"Cape Girardeau","Lat":"37.225306","Long":"-89.570749"},"CGK":{"Station":"CGK","City":"Jakarta","Lat":"-6.125566","Long":"106.655897"},"CGM":{"Station":"CGM","City":"Camiguin","Lat":"9.253525","Long":"124.707075"},"CGN":{"Station":"CGN","City":"K\u00f6ln-Bonn","Lat":"50.866","Long":"7.143"},"CGO":{"Station":"CGO","City":"Zhengzhou","Lat":"34.519672","Long":"113.840889"},"CGP":{"Station":"CGP","City":"Chittagong","Lat":"22.249611","Long":"91.813286"},"CGQ":{"Station":"CGQ","City":"Changchun","Lat":"43.996214","Long":"125.685356"},"CGR":{"Station":"CGR","City":"Campo Grande","Lat":"-20.468666","Long":"-54.672499"},"CGV":{"Station":"CGV","City":"Caiguna","Lat":"-32.280555","Long":"125.477222"},"CGY":{"Station":"CGY","City":"Cagayan de Oro","Lat":"8.415619","Long":"124.611219"},"CHA":{"Station":"CHA","City":"Chattanooga","Lat":"35.035194","Long":"-85.203555"},"CHB":{"Station":"CHB","City":"Chilas","Lat":"35.426666","Long":"74.081665"},"CHC":{"Station":"CHC","City":"Christchurch","Lat":"-43.489443","Long":"172.534444"},"CHF":{"Station":"CHF","City":"Chinhae","Lat":"35.141175","Long":"128.695792"},"CHG":{"Station":"CHG","City":"Chaoyang","Lat":"41.538056","Long":"120.435"},"CHH":{"Station":"CHH","City":"Chachapoyas","Lat":"-6.201805","Long":"-77.856063"},"CHJ":{"Station":"CHJ","City":"Chipinge","Lat":"-20.206666","Long":"32.628333"},"CHL":{"Station":"CHL","City":"Challis","Lat":"44.523583","Long":"-114.217916"},"CHM":{"Station":"CHM","City":"Chimbote","Lat":"-9.149613","Long":"-78.523849"},"CHO":{"Station":"CHO","City":"Charlottesville","Lat":"38.139643","Long":"-78.452341"},"CHR":{"Station":"CHR","City":"Ch\u00e2teauroux\/D\u00e9ols","Lat":"46.860278","Long":"1.721111"},"CHS":{"Station":"CHS","City":"Charleston","Lat":"32.898639","Long":"-80.040527"},"CHV":{"Station":"CHV","City":"Chaves","Lat":"41.725834","Long":"-7.465555"},"CHW":{"Station":"CHW","City":"Jiuquan","Lat":"39.856944","Long":"98.341389"},"CIA":{"Station":"CIA","City":"Rome","Lat":"41.799361","Long":"12.594936"},"CIB":{"Station":"CIB","City":"Avalon","Lat":"33.404997","Long":"-118.415768"},"CIC":{"Station":"CIC","City":"Chico","Lat":"39.795389","Long":"-121.858416"},"CID":{"Station":"CID","City":"Cedar Rapids","Lat":"41.884689","Long":"-91.710798"},"CIF":{"Station":"CIF","City":"Chifeng","Lat":"42.235","Long":"118.908333"},"CIG":{"Station":"CIG","City":"Craig","Lat":"40.495222","Long":"-107.521666"},"CIH":{"Station":"CIH","City":"Changzhi","Lat":"36.2475","Long":"113.125833"},"CIJ":{"Station":"CIJ","City":"Cobija","Lat":"-11.040435","Long":"-68.782971"},"CIL":{"Station":"CIL","City":"Council","Lat":"64.897883","Long":"-163.703446"},"CIP":{"Station":"CIP","City":"Chipata","Lat":"-13.560277","Long":"32.587778"},"CIS":{"Station":"CIS","City":"Canton Island","Lat":"-2.768121","Long":"-171.710393"},"CIT":{"Station":"CIT","City":"Shimkent","Lat":"42.364167","Long":"69.478889"},"CIU":{"Station":"CIU","City":"Sault Ste. Marie","Lat":"46.25075","Long":"-84.472388"},"CIW":{"Station":"CIW","City":"Canouan Island","Lat":"12.699167","Long":"-61.342499"},"CIX":{"Station":"CIX","City":"Chiclayo","Lat":"-6.787474","Long":"-79.828096"},"CIY":{"Station":"CIY","City":"Comiso","Lat":"36.995278","Long":"14.608056"},"CIZ":{"Station":"CIZ","City":"Coari","Lat":"-4.134055","Long":"-63.132555"},"CJA":{"Station":"CJA","City":"Cajamarca","Lat":"-7.139182","Long":"-78.489399"},"CJB":{"Station":"CJB","City":"Coimbatore","Lat":"11.030031","Long":"77.043383"},"CJC":{"Station":"CJC","City":"Calama","Lat":"-22.498174","Long":"-68.903574"},"CJL":{"Station":"CJL","City":"Chitral","Lat":"35.886592","Long":"71.800578"},"CJM":{"Station":"CJM","City":"Chumphon","Lat":"10.7112","Long":"99.361706"},"CJS":{"Station":"CJS","City":"Ciudad Ju\u00e1rez","Lat":"31.636133","Long":"-106.428666"},"CJT":{"Station":"CJT","City":"Comit\u00e1n","Lat":"16.176592","Long":"-92.050355"},"CJU":{"Station":"CJU","City":"Jeju","Lat":"33.511306","Long":"126.493028"},"CKB":{"Station":"CKB","City":"Clarksburg","Lat":"39.297655","Long":"-80.227531"},"CKD":{"Station":"CKD","City":"Crooked Creek","Lat":"61.867861","Long":"-158.134916"},"CKG":{"Station":"CKG","City":"Chongqing","Lat":"29.719217","Long":"106.641678"},"CKH":{"Station":"CKH","City":"Chokurdah","Lat":"70.623056","Long":"147.901667"},"CKO":{"Station":"CKO","City":"Cornelio Procopio","Lat":"-23.152507","Long":"-50.60251"},"CKS":{"Station":"CKS","City":"Caraj\u00e1s","Lat":"-6.117805","Long":"-50.003471"},"CKT":{"Station":"CKT","City":"Sarakhs","Lat":"36.501178","Long":"61.064903"},"CKY":{"Station":"CKY","City":"Conakry","Lat":"9.576889","Long":"-13.61196"},"CLA":{"Station":"CLA","City":"Comilla","Lat":"23.433","Long":"91.183"},"CLB":{"Station":"CLB","City":"Castlebar","Lat":"53.848465","Long":"-9.280305"},"CLD":{"Station":"CLD","City":"Carlsbad","Lat":"33.12825","Long":"-117.280082"},"CLE":{"Station":"CLE","City":"Cleveland","Lat":"41.409417","Long":"-81.854693"},"CLG":{"Station":"CLG","City":"Coalinga","Lat":"36.162111","Long":"-120.294832"},"CLH":{"Station":"CLH","City":"Coolah","Lat":"-31.773332","Long":"149.610001"},"CLJ":{"Station":"CLJ","City":"Cluj-Napoca","Lat":"46.785092","Long":"23.686119"},"CLL":{"Station":"CLL","City":"College Station","Lat":"30.588583","Long":"-96.363832"},"CLM":{"Station":"CLM","City":"Port Angeles","Lat":"48.120194","Long":"-123.499693"},"CLN":{"Station":"CLN","City":"Carolina","Lat":"-7.320443","Long":"-47.458666"},"CLO":{"Station":"CLO","City":"Cali","Lat":"3.543056","Long":"-76.381666"},"CLQ":{"Station":"CLQ","City":"Colima","Lat":"19.277011","Long":"-103.577396"},"CLT":{"Station":"CLT","City":"Charlotte","Lat":"35.213741","Long":"-80.949068"},"CLV":{"Station":"CLV","City":"Caldas Novas","Lat":"-17.725249","Long":"-48.607491"},"CLX":{"Station":"CLX","City":"Clorinda","Lat":"-25.303888","Long":"-57.733888"},"CLY":{"Station":"CLY","City":"Calvi","Lat":"42.520364","Long":"8.793028"},"CLZ":{"Station":"CLZ","City":"Calabozo","Lat":"8.924656","Long":"-67.417093"},"CMB":{"Station":"CMB","City":"Colombo","Lat":"7.180756","Long":"79.884117"},"CMC":{"Station":"CMC","City":"Camocim","Lat":"-2.896182","Long":"-40.857993"},"CMD":{"Station":"CMD","City":"Cootamundra","Lat":"-34.623888","Long":"148.028056"},"CME":{"Station":"CME","City":"Ciudad del Carmen","Lat":"18.653739","Long":"-91.799016"},"CMF":{"Station":"CMF","City":"Chambery","Lat":"45.639167","Long":"5.88"},"CMG":{"Station":"CMG","City":"Corumb\u00e1","Lat":"-19.01193","Long":"-57.673052"},"CMH":{"Station":"CMH","City":"Columbus","Lat":"39.996944","Long":"-82.892166"},"CMI":{"Station":"CMI","City":"Champaign\/Urbana","Lat":"40.038833","Long":"-88.277805"},"CMJ":{"Station":"CMJ","City":"Cimei","Lat":"23.213056","Long":"119.4175"},"CMK":{"Station":"CMK","City":"Club Makokola","Lat":"-14.306943","Long":"35.1325"},"CML":{"Station":"CML","City":"Camooweal","Lat":"-19.912499","Long":"138.125"},"CMN":{"Station":"CMN","City":"Casablanca","Lat":"33.367467","Long":"-7.589966"},"CMO":{"Station":"CMO","City":"Obbia","Lat":"5.293","Long":"48.439"},"CMP":{"Station":"CMP","City":"Santana do Araguaia","Lat":"-9.319974","Long":"-50.328541"},"CMQ":{"Station":"CMQ","City":"Clermont","Lat":"-22.773055","Long":"147.620556"},"CMS":{"Station":"CMS","City":"Scusciuban","Lat":"10.3","Long":"50.233"},"CMT":{"Station":"CMT","City":"Camet\u00e1","Lat":"-2.242499","Long":"-49.506666"},"CMU":{"Station":"CMU","City":"Kundiawa","Lat":"-6.024291","Long":"144.970528"},"CMV":{"Station":"CMV","City":"Coromandel","Lat":"-36.791666","Long":"175.508611"},"CMW":{"Station":"CMW","City":"Camaguey","Lat":"21.420428","Long":"-77.847432"},"CMX":{"Station":"CMX","City":"Hancock","Lat":"47.168417","Long":"-88.48906"},"CNA":{"Station":"CNA","City":"Cananea","Lat":"31","Long":"-110.267"},"CNB":{"Station":"CNB","City":"Coonamble","Lat":"-30.983332","Long":"148.375556"},"CND":{"Station":"CND","City":"Constanta","Lat":"44.362222","Long":"28.488333"},"CNE":{"Station":"CNE","City":"Canon City","Lat":"38.428389","Long":"-105.105999"},"CNF":{"Station":"CNF","City":"Belo Horizonte","Lat":"-19.633749","Long":"-43.968855"},"CNG":{"Station":"CNG","City":"Cognac","Lat":"45.658333","Long":"-0.317499"},"CNI":{"Station":"CNI","City":"Changhai","Lat":"39.266389","Long":"122.666944"},"CNJ":{"Station":"CNJ","City":"Cloncurry","Lat":"-20.66861","Long":"140.504444"},"CNL":{"Station":"CNL","City":"Sindal","Lat":"57.503525","Long":"10.229372"},"CNM":{"Station":"CNM","City":"Carlsbad","Lat":"32.337444","Long":"-104.26336"},"CNN":{"Station":"CNN","City":"Cul'Man","Lat":"56.913917","Long":"124.913819"},"CNQ":{"Station":"CNQ","City":"Corrientes","Lat":"-27.445502","Long":"-58.761863"},"CNR":{"Station":"CNR","City":"Chanaral","Lat":"-26.332541","Long":"-70.607307"},"CNS":{"Station":"CNS","City":"Cairns","Lat":"-16.885832","Long":"145.755278"},"CNV":{"Station":"CNV","City":"Canavieiras","Lat":"-15.667027","Long":"-38.954666"},"CNX":{"Station":"CNX","City":"Chiang Mai","Lat":"18.766847","Long":"98.962644"},"CNY":{"Station":"CNY","City":"Moab","Lat":"38.754956","Long":"-109.754843"},"CNZ":{"Station":"CNZ","City":"Cangamba","Lat":"-13.710555","Long":"19.861111"},"COA":{"Station":"COA","City":"Columbia","Lat":"38.030417","Long":"-120.414555"},"COB":{"Station":"COB","City":"Coolibah","Lat":"-15.548332","Long":"130.961944"},"COC":{"Station":"COC","City":"Concordia","Lat":"-31.296943","Long":"-57.99663"},"COG":{"Station":"COG","City":"Condoto","Lat":"5.083333","Long":"-76.699999"},"COH":{"Station":"COH","City":"Cooch Behar","Lat":"26.330508","Long":"89.467203"},"COJ":{"Station":"COJ","City":"Coonabarabran","Lat":"-31.332499","Long":"149.267222"},"COK":{"Station":"COK","City":"Kochi","Lat":"10.151994","Long":"76.401906"},"COL":{"Station":"COL","City":"Coll Island","Lat":"56.6","Long":"-6.617"},"CON":{"Station":"CON","City":"Concord","Lat":"43.202722","Long":"-71.502277"},"COO":{"Station":"COO","City":"Cotonou","Lat":"6.357228","Long":"2.384353"},"COR":{"Station":"COR","City":"C\u00f3rdoba","Lat":"-31.323618","Long":"-64.207952"},"COS":{"Station":"COS","City":"Colorado Springs","Lat":"38.805806","Long":"-104.700777"},"COU":{"Station":"COU","City":"Columbia","Lat":"38.818093","Long":"-92.219628"},"COX":{"Station":"COX","City":"Congo Town","Lat":"24.158933","Long":"-77.589757"},"COY":{"Station":"COY","City":"Coolawanyah Station","Lat":"-21.794443","Long":"117.754722"},"COZ":{"Station":"COZ","City":"Constanza","Lat":"18.9075","Long":"-70.721943"},"CPA":{"Station":"CPA","City":"Cape Palmas","Lat":"4.367638","Long":"-7.700116"},"CPB":{"Station":"CPB","City":"Capurgan\u00e1","Lat":"8.633333","Long":"-77.333332"},"CPD":{"Station":"CPD","City":"Coober Pedy","Lat":"-29.039999","Long":"134.720833"},"CPG":{"Station":"CPG","City":"Carmen de Patagones","Lat":"-40.778055","Long":"-62.980277"},"CPH":{"Station":"CPH","City":"Copenhagen","Lat":"55.617917","Long":"12.655972"},"CPO":{"Station":"CPO","City":"Copiap\u00f3","Lat":"-27.261246","Long":"-70.779221"},"CPQ":{"Station":"CPQ","City":"Campinas","Lat":"-22.859241","Long":"-47.108182"},"CPR":{"Station":"CPR","City":"Casper","Lat":"42.908","Long":"-106.464416"},"CPS":{"Station":"CPS","City":"Cahokia\/St. Louis","Lat":"38.570361","Long":"-90.155082"},"CQD":{"Station":"CQD","City":"Shahre-Kord","Lat":"32.297222","Long":"50.842222"},"CQF":{"Station":"CQF","City":"Calais-Dunkerque","Lat":"50.960933","Long":"1.951433"},"CQP":{"Station":"CQP","City":"Cape Flattery","Lat":"-14.970832","Long":"145.311667"},"CQS":{"Station":"CQS","City":"Costa Marques","Lat":"-12.42106","Long":"-64.251643"},"CRB":{"Station":"CRB","City":"Collarenebri","Lat":"-29.521943","Long":"148.58223"},"CRD":{"Station":"CRD","City":"Comodoro Rivadavia","Lat":"-45.785346","Long":"-67.465507"},"CRF":{"Station":"CRF","City":"Carnot","Lat":"4.937","Long":"15.894"},"CRI":{"Station":"CRI","City":"Colonel Hill","Lat":"22.745561","Long":"-74.182352"},"CRJ":{"Station":"CRJ","City":"Coorabie","Lat":"-31.894443","Long":"132.296389"},"CRM":{"Station":"CRM","City":"Catarman","Lat":"12.502417","Long":"124.635778"},"CRP":{"Station":"CRP","City":"Corpus Christi","Lat":"27.770361","Long":"-97.501221"},"CRU":{"Station":"CRU","City":"Hillsborough","Lat":"12.476944","Long":"-61.472221"},"CRW":{"Station":"CRW","City":"Charleston","Lat":"38.375929","Long":"-81.593003"},"CRY":{"Station":"CRY","City":"Carlton Hill","Lat":"-15.501943","Long":"128.533889"},"CSA":{"Station":"CSA","City":"Machrins","Lat":"56.059","Long":"-6.244"},"CSC":{"Station":"CSC","City":"Guapiles","Lat":"10.167","Long":"-83.583"},"CSD":{"Station":"CSD","City":"Cresswell Downs","Lat":"-17.948","Long":"135.916"},"CSE":{"Station":"CSE","City":"Crested Butte","Lat":"38.851937","Long":"-106.93282"},"CSF":{"Station":"CSF","City":"Creil","Lat":"49.253611","Long":"2.519167"},"CSG":{"Station":"CSG","City":"Columbus","Lat":"32.516333","Long":"-84.93886"},"CSH":{"Station":"CSH","City":"Solovetsky","Lat":"65.029444","Long":"35.733333"},"CSI":{"Station":"CSI","City":"Casino","Lat":"-28.882777","Long":"153.066944"},"CSK":{"Station":"CSK","City":"Cap Skirring","Lat":"12.4102","Long":"-16.746124"},"CSL":{"Station":"CSL","City":"Los Cabos","Lat":"22.94845","Long":"-109.938732"},"CSN":{"Station":"CSN","City":"Carson City","Lat":"39.192306","Long":"-119.732582"},"CSO":{"Station":"CSO","City":"Cochstedt","Lat":"51.855833","Long":"11.418333"},"CSX":{"Station":"CSX","City":"Changsha","Lat":"28.069167","Long":"112.957222"},"CTA":{"Station":"CTA","City":"Catania","Lat":"37.466781","Long":"15.0664"},"CTC":{"Station":"CTC","City":"Catamarca","Lat":"-28.593213","Long":"-65.750924"},"CTD":{"Station":"CTD","City":"Chitre","Lat":"7.987836","Long":"-80.409738"},"CTF":{"Station":"CTF","City":"Coatepeque","Lat":"14.694167","Long":"-91.882499"},"CTG":{"Station":"CTG","City":"Cartagena de Indias","Lat":"10.4425","Long":"-75.512777"},"CTH":{"Station":"CTH","City":"Coatesville","Lat":"39.978972","Long":"-75.865471"},"CTI":{"Station":"CTI","City":"Cuito Cuanavale","Lat":"-15.160277","Long":"19.156111"},"CTL":{"Station":"CTL","City":"Charleville","Lat":"-26.413333","Long":"146.2625"},"CTO":{"Station":"CTO","City":"Calverton","Lat":"40.915098","Long":"-72.791905"},"CTQ":{"Station":"CTQ","City":"Santa Vit\u00f3ria do Palmar","Lat":"-33.501666","Long":"-53.344999"},"CTR":{"Station":"CTR","City":"Cattle Creek","Lat":"-17.607499","Long":"131.549722"},"CTS":{"Station":"CTS","City":"Sapporo\/Chitose","Lat":"42.7752","Long":"141.692283"},"CTT":{"Station":"CTT","City":"Le Castellet","Lat":"43.252222","Long":"5.786111"},"CTU":{"Station":"CTU","City":"Chengdu","Lat":"30.578528","Long":"103.947086"},"CTV":{"Station":"CTV","City":"Catavi\u00f1a","Lat":"29.725944","Long":"-114.699635"},"CTW":{"Station":"CTW","City":"Cottonwood","Lat":"34.730056","Long":"-112.035138"},"CTX":{"Station":"CTX","City":"Cortland","Lat":"42.592645","Long":"-76.214882"},"CUA":{"Station":"CUA","City":"Ciudad Constituci\u00f3n","Lat":"25.053756","Long":"-111.614882"},"CUC":{"Station":"CUC","City":"C\u00facuta","Lat":"7.931389","Long":"-72.514166"},"CUE":{"Station":"CUE","City":"Cuenca","Lat":"-2.889466","Long":"-78.984396"},"CUF":{"Station":"CUF","City":"Cuneo","Lat":"44.547019","Long":"7.623217"},"CUG":{"Station":"CUG","City":"Cudal","Lat":"-33.277777","Long":"148.763056"},"CUM":{"Station":"CUM","City":"Cuman\u00e1","Lat":"10.450333","Long":"-64.130471"},"CUN":{"Station":"CUN","City":"Canc\u00fan","Lat":"21.036528","Long":"-86.877082"},"CUO":{"Station":"CUO","City":"Caruru","Lat":"0.924993","Long":"-70.77111"},"CUP":{"Station":"CUP","City":"Car\u00fapano","Lat":"10.660014","Long":"-63.26168"},"CUQ":{"Station":"CUQ","City":"Coen","Lat":"-13.760832","Long":"143.113611"},"CUR":{"Station":"CUR","City":"Willemstad","Lat":"12.188853","Long":"-68.959802"},"CUS":{"Station":"CUS","City":"Columbus","Lat":"31.823711","Long":"-107.626966"},"CUU":{"Station":"CUU","City":"Chihuahua","Lat":"28.702875","Long":"-105.964566"},"CUV":{"Station":"CUV","City":"Casigua","Lat":"8.756389","Long":"-72.536588"},"CUX":{"Station":"CUX","City":"Corpus Christi","Lat":"27.72114","Long":"-97.51277"},"CUZ":{"Station":"CUZ","City":"Cusco","Lat":"-13.535721","Long":"-71.93878"},"CVC":{"Station":"CVC","City":"Cleve","Lat":"-33.709721","Long":"136.504722"},"CVE":{"Station":"CVE","City":"Cove\u00f1as","Lat":"9.400925","Long":"-75.691316"},"CVF":{"Station":"CVF","City":"Courchevel","Lat":"45.396667","Long":"6.633611"},"CVG":{"Station":"CVG","City":"Covington","Lat":"39.048837","Long":"-84.667821"},"CVH":{"Station":"CVH","City":"Caviahue","Lat":"-37.851374","Long":"-71.009246"},"CVN":{"Station":"CVN","City":"Clovis","Lat":"34.42659","Long":"-103.077579"},"CVQ":{"Station":"CVQ","City":"Carnarvon","Lat":"-24.880555","Long":"113.672222"},"CVU":{"Station":"CVU","City":"Corvo Island","Lat":"39.671389","Long":"-31.116666"},"CWA":{"Station":"CWA","City":"Mosinee","Lat":"44.777624","Long":"-89.666777"},"CWB":{"Station":"CWB","City":"Curitiba","Lat":"-25.528474","Long":"-49.175774"},"CWC":{"Station":"CWC","City":"Chernivtsi","Lat":"48.259322","Long":"25.980831"},"CWE":{"Station":"CWE","City":"Cairo","Lat":"30.116362","Long":"30.915445"},"CWL":{"Station":"CWL","City":"Cardiff","Lat":"51.396667","Long":"-3.343332"},"CWR":{"Station":"CWR","City":"Cowarie","Lat":"-27.712777","Long":"138.328056"},"CWT":{"Station":"CWT","City":"Cowra","Lat":"-33.844721","Long":"148.648889"},"CWW":{"Station":"CWW","City":"Corowa","Lat":"-35.994721","Long":"146.356667"},"CXA":{"Station":"CXA","City":"Caicara de Orinoco","Lat":"7.626078","Long":"-66.164916"},"CXB":{"Station":"CXB","City":"Cox's Bazar","Lat":"21.452194","Long":"91.963889"},"CXH":{"Station":"CXH","City":"Vancouver","Lat":"49.294444","Long":"-123.11111"},"CXI":{"Station":"CXI","City":"Christmas Island","Lat":"1.986161","Long":"-157.349777"},"CXM":{"Station":"CXM","City":"Camaxilo","Lat":"-8.37361","Long":"18.923611"},"CXN":{"Station":"CXN","City":"Candala","Lat":"11.5","Long":"49.917"},"CXQ":{"Station":"CXQ","City":"Christmas Creek Station","Lat":"-18.883","Long":"125.917"},"CXR":{"Station":"CXR","City":"Nha Trang","Lat":"11.998153","Long":"109.219372"},"CXT":{"Station":"CXT","City":"Charters Towers","Lat":"-20.043055","Long":"146.273056"},"CYA":{"Station":"CYA","City":"Les Cayes","Lat":"18.271103","Long":"-73.788288"},"CYB":{"Station":"CYB","City":"Cayman Brac Island","Lat":"19.686981","Long":"-79.882788"},"CYF":{"Station":"CYF","City":"Chefornak","Lat":"60.136796","Long":"-164.279048"},"CYG":{"Station":"CYG","City":"Corryong","Lat":"-36.182777","Long":"147.887778"},"CYI":{"Station":"CYI","City":"Chiayi","Lat":"23.461779","Long":"120.39283"},"CYO":{"Station":"CYO","City":"Cayo Largo del Sur","Lat":"21.616453","Long":"-81.545988"},"CYP":{"Station":"CYP","City":"Calbayog","Lat":"12.072706","Long":"124.545092"},"CYR":{"Station":"CYR","City":"Colonia","Lat":"-34.456407","Long":"-57.770616"},"CYS":{"Station":"CYS","City":"Cheyenne","Lat":"41.155639","Long":"-104.810471"},"CYU":{"Station":"CYU","City":"Cuyo","Lat":"10.858056","Long":"121.069444"},"CYX":{"Station":"CYX","City":"Cherskiy","Lat":"68.740556","Long":"161.338333"},"CYZ":{"Station":"CYZ","City":"Cauayan","Lat":"16.929861","Long":"121.753036"},"CZC":{"Station":"CZC","City":"Copper Center","Lat":"61.94119","Long":"-145.29408"},"CZE":{"Station":"CZE","City":"Coro","Lat":"11.414867","Long":"-69.681655"},"CZM":{"Station":"CZM","City":"Cozumel","Lat":"20.522403","Long":"-86.925643"},"CZS":{"Station":"CZS","City":"Cruzeiro do Sul","Lat":"-7.599905","Long":"-72.769488"},"CZU":{"Station":"CZU","City":"Corozal","Lat":"9.333333","Long":"-75.283332"},"CZW":{"Station":"CZW","City":"Czestochowa","Lat":"50.885","Long":"19.204722"},"CZX":{"Station":"CZX","City":"Changzhou","Lat":"31.919722","Long":"119.778611"},"CZY":{"Station":"CZY","City":"Cluny","Lat":"-24.511388","Long":"139.6175"},"DAB":{"Station":"DAB","City":"Daytona Beach","Lat":"29.179917","Long":"-81.058055"},"DAC":{"Station":"DAC","City":"Dhaka","Lat":"23.843333","Long":"90.397781"},"DAD":{"Station":"DAD","City":"Da Nang","Lat":"16.043917","Long":"108.19937"},"DAK":{"Station":"DAK","City":"Dakhla Oasis","Lat":"25.411608","Long":"29.003058"},"DAL":{"Station":"DAL","City":"Dallas","Lat":"32.847111","Long":"-96.851777"},"DAM":{"Station":"DAM","City":"Damascus","Lat":"33.410636","Long":"36.514267"},"DAN":{"Station":"DAN","City":"Danville","Lat":"36.572861","Long":"-79.33611"},"DAP":{"Station":"DAP","City":"Darchula","Lat":"29.669186","Long":"80.548416"},"DAR":{"Station":"DAR","City":"Dar es Salaam","Lat":"-6.87811","Long":"39.202625"},"DAT":{"Station":"DAT","City":"Datong","Lat":"40.060278","Long":"113.482222"},"DAU":{"Station":"DAU","City":"Daru","Lat":"-9.086755","Long":"143.207939"},"DAX":{"Station":"DAX","City":"Dazhou","Lat":"31.3","Long":"107.5"},"DAY":{"Station":"DAY","City":"Dayton","Lat":"39.90225","Long":"-84.219416"},"DAZ":{"Station":"DAZ","City":"Darwaz","Lat":"38.461703","Long":"70.881783"},"DBA":{"Station":"DBA","City":"Dalbandin","Lat":"28.875278","Long":"64.403889"},"DBB":{"Station":"DBB","City":"Dabaa","Lat":"30.924458","Long":"28.461436"},"DBD":{"Station":"DBD","City":"Dhanbad","Lat":"23.834044","Long":"86.425261"},"DBM":{"Station":"DBM","City":"Debra Marcos","Lat":"10.321111","Long":"37.741667"},"DBO":{"Station":"DBO","City":"Dubbo","Lat":"-32.216666","Long":"148.574722"},"DBQ":{"Station":"DBQ","City":"Dubuque","Lat":"42.402","Long":"-90.709471"},"DBS":{"Station":"DBS","City":"Dubois","Lat":"44.162361","Long":"-112.220666"},"DBT":{"Station":"DBT","City":"Debre Tabor","Lat":"11.967","Long":"38"},"DBV":{"Station":"DBV","City":"Dubrovnik","Lat":"42.561353","Long":"18.268244"},"DCA":{"Station":"DCA","City":"Washington","Lat":"38.851916","Long":"-77.037698"},"DCF":{"Station":"DCF","City":"Roseau","Lat":"15.336719","Long":"-61.39221"},"DCN":{"Station":"DCN","City":"Derby","Lat":"-17.581388","Long":"123.828333"},"DCR":{"Station":"DCR","City":"Decatur","Lat":"40.837548","Long":"-84.862463"},"DCT":{"Station":"DCT","City":"Duncan Town","Lat":"22.181803","Long":"-75.729455"},"DDC":{"Station":"DDC","City":"Dodge City","Lat":"37.763111","Long":"-99.965416"},"DDG":{"Station":"DDG","City":"Dandong","Lat":"40.025556","Long":"124.286667"},"DDN":{"Station":"DDN","City":"Delta Downs","Lat":"-16.991943","Long":"141.321944"},"DEA":{"Station":"DEA","City":"Dera Ghazi Khan","Lat":"29.961011","Long":"70.485925"},"DEC":{"Station":"DEC","City":"Decatur","Lat":"39.834562","Long":"-88.865688"},"DEF":{"Station":"DEF","City":"Dezful","Lat":"32.434444","Long":"48.39764"},"DEI":{"Station":"DEI","City":"Denis Island","Lat":"-3.802221","Long":"55.666944"},"DEK":{"Station":"DEK","City":"Yahukimo","Lat":"-4.85611","Long":"139.481111"},"DEL":{"Station":"DEL","City":"New Delhi","Lat":"28.568728","Long":"77.112136"},"DEM":{"Station":"DEM","City":"Dembidollo","Lat":"8.554","Long":"34.858"},"DEN":{"Station":"DEN","City":"Denver","Lat":"39.861667","Long":"-104.673166"},"DFP":{"Station":"DFP","City":"Drumduff","Lat":"-16.053","Long":"143.012"},"DFW":{"Station":"DFW","City":"Dallas-Fort Worth","Lat":"32.896828","Long":"-97.037995"},"DGN":{"Station":"DGN","City":"Dahlgren","Lat":"38.332878","Long":"-77.03701"},"DGO":{"Station":"DGO","City":"Durango","Lat":"24.124194","Long":"-104.528013"},"DGP":{"Station":"DGP","City":"Daugavpils","Lat":"55.9425","Long":"26.668333"},"DGR":{"Station":"DGR","City":"Dargaville","Lat":"-35.939721","Long":"173.893611"},"DGU":{"Station":"DGU","City":"Dedougou","Lat":"12.459","Long":"-3.49"},"DGX":{"Station":"DGX","City":"St. Athan","Lat":"51.404811","Long":"-3.435749"},"DHA":{"Station":"DHA","City":"Dhahran","Lat":"26.265417","Long":"50.152027"},"DHI":{"Station":"DHI","City":"Dhangarhi","Lat":"28.753333","Long":"80.581944"},"DHM":{"Station":"DHM","City":"Dharamsala","Lat":"32.165119","Long":"76.263417"},"DHN":{"Station":"DHN","City":"Dothan","Lat":"31.321028","Long":"-85.449471"},"DIB":{"Station":"DIB","City":"Dibrugarh","Lat":"27.483853","Long":"95.016922"},"DIG":{"Station":"DIG","City":"Shangri-La","Lat":"27.793611","Long":"99.677222"},"DIJ":{"Station":"DIJ","City":"Dijon-Longvic","Lat":"47.265833","Long":"5.095"},"DIL":{"Station":"DIL","City":"Dili","Lat":"-8.546416","Long":"125.524833"},"DIM":{"Station":"DIM","City":"Dimbokro","Lat":"6.651667","Long":"-4.640555"},"DIN":{"Station":"DIN","City":"Gia Lam","Lat":"21.397481","Long":"103.007831"},"DIP":{"Station":"DIP","City":"Diapaga","Lat":"12.060278","Long":"1.784722"},"DIQ":{"Station":"DIQ","City":"Divinopolis","Lat":"-20.180713","Long":"-44.870888"},"DIS":{"Station":"DIS","City":"Dolisie","Lat":"-4.20611","Long":"12.659722"},"DIU":{"Station":"DIU","City":"Diu","Lat":"20.713125","Long":"70.921142"},"DIY":{"Station":"DIY","City":"Diyarbakir","Lat":"37.893897","Long":"40.201019"},"DJA":{"Station":"DJA","City":"Djougou","Lat":"9.692","Long":"1.637"},"DJN":{"Station":"DJN","City":"Delta Junction","Lat":"64.050438","Long":"-145.717325"},"DJR":{"Station":"DJR","City":"Dajarra","Lat":"-21.702221","Long":"139.533889"},"DJU":{"Station":"DJU","City":"Dj\u00fapivogur","Lat":"64.644167","Long":"-14.282777"},"DKS":{"Station":"DKS","City":"Dikson","Lat":"73.517778","Long":"80.378889"},"DKV":{"Station":"DKV","City":"Docker River","Lat":"-24.859443","Long":"129.121944"},"DLA":{"Station":"DLA","City":"Douala","Lat":"4.006081","Long":"9.719481"},"DLC":{"Station":"DLC","City":"Dalian","Lat":"38.965667","Long":"121.5386"},"DLH":{"Station":"DLH","City":"Duluth","Lat":"46.842083","Long":"-92.193638"},"DLI":{"Station":"DLI","City":"Da Lat","Lat":"11.752778","Long":"108.361667"},"DLK":{"Station":"DLK","City":"Dulkaninna","Lat":"-29.013332","Long":"138.481389"},"DLM":{"Station":"DLM","City":"Dalaman","Lat":"36.713056","Long":"28.7925"},"DLU":{"Station":"DLU","City":"Xiaguan","Lat":"25.649444","Long":"100.319444"},"DLV":{"Station":"DLV","City":"Delissaville","Lat":"-12.550552","Long":"130.685562"},"DLY":{"Station":"DLY","City":"Dillon's Bay","Lat":"-18.769443","Long":"169.001389"},"DMB":{"Station":"DMB","City":"Taraz","Lat":"42.853611","Long":"71.303611"},"DMD":{"Station":"DMD","City":"Doomadgee Mission","Lat":"-17.940277","Long":"138.821667"},"DME":{"Station":"DME","City":"Moscow","Lat":"55.408786","Long":"37.906314"},"DMT":{"Station":"DMT","City":"Diamantino","Lat":"-14.37686","Long":"-56.400385"},"DNA":{"Station":"DNA","City":"Okinawa","Lat":"26.355612","Long":"127.767633"},"DNB":{"Station":"DNB","City":"Dunbar","Lat":"-16.047777","Long":"142.394722"},"DND":{"Station":"DND","City":"Dundee","Lat":"56.452499","Long":"-3.025832"},"DNF":{"Station":"DNF","City":"Derna","Lat":"32.542","Long":"22.745"},"DNH":{"Station":"DNH","City":"Dunhuang","Lat":"40.161111","Long":"94.809167"},"DNO":{"Station":"DNO","City":"Dianopolis","Lat":"-11.59541","Long":"-46.846749"},"DNP":{"Station":"DNP","City":"Dang","Lat":"28.111111","Long":"82.294167"},"DNQ":{"Station":"DNQ","City":"Deniliquin","Lat":"-35.559443","Long":"144.946389"},"DNV":{"Station":"DNV","City":"Danville","Lat":"40.199694","Long":"-87.595527"},"DNX":{"Station":"DNX","City":"Dinder","Lat":"12.533","Long":"35.067"},"DOA":{"Station":"DOA","City":"Doany","Lat":"-14.368055","Long":"49.510833"},"DOB":{"Station":"DOB","City":"Dobo","Lat":"-5.772221","Long":"134.2125"},"DOC":{"Station":"DOC","City":"Dornoch","Lat":"57.869","Long":"-4.023"},"DOD":{"Station":"DOD","City":"Dodoma","Lat":"-6.170435","Long":"35.752578"},"DOE":{"Station":"DOE","City":"Djumu","Lat":"4.006","Long":"-55.481"},"DOH":{"Station":"DOH","City":"Doha","Lat":"25.261125","Long":"51.565056"},"DOK":{"Station":"DOK","City":"Donetsk","Lat":"48.073611","Long":"37.739722"},"DOL":{"Station":"DOL","City":"Deauville","Lat":"49.363333","Long":"0.16"},"DOM":{"Station":"DOM","City":"Marigot","Lat":"15.546944","Long":"-61.301666"},"DOP":{"Station":"DOP","City":"Dolpa","Lat":"28.985718","Long":"82.819145"},"DOR":{"Station":"DOR","City":"Dori","Lat":"14.024444","Long":"-0.065277"},"DOU":{"Station":"DOU","City":"Dourados","Lat":"-22.201863","Long":"-54.926643"},"DOX":{"Station":"DOX","City":"Dongara","Lat":"-29.298332","Long":"114.927222"},"DOY":{"Station":"DOY","City":"Dongying","Lat":"37.508333","Long":"118.788889"},"DPE":{"Station":"DPE","City":"Dieppe","Lat":"49.882633","Long":"1.085331"},"DPO":{"Station":"DPO","City":"Devonport","Lat":"-41.169721","Long":"146.430278"},"DPS":{"Station":"DPS","City":"Denpasar","Lat":"-8.748168","Long":"115.167172"},"DQA":{"Station":"DQA","City":"Daqing","Lat":"46.750833","Long":"125.138611"},"DRB":{"Station":"DRB","City":"Derby","Lat":"-17.369999","Long":"123.660556"},"DRC":{"Station":"DRC","City":"Dirico","Lat":"-17.981666","Long":"20.767222"},"DRE":{"Station":"DRE","City":"Drummond Island","Lat":"46.009311","Long":"-83.743933"},"DRG":{"Station":"DRG","City":"Deering","Lat":"66.069111","Long":"-162.767055"},"DRJ":{"Station":"DRJ","City":"Drietabbetje","Lat":"4.126111","Long":"-54.622777"},"DRN":{"Station":"DRN","City":"Dirranbandi","Lat":"-28.591666","Long":"148.216667"},"DRO":{"Station":"DRO","City":"Durango","Lat":"37.151517","Long":"-107.753768"},"DRR":{"Station":"DRR","City":"Durrie","Lat":"-25.617221","Long":"140.222222"},"DRS":{"Station":"DRS","City":"Dresden","Lat":"51.132767","Long":"13.767161"},"DRT":{"Station":"DRT","City":"Del Rio","Lat":"29.374207","Long":"-100.927156"},"DRU":{"Station":"DRU","City":"Drummond","Lat":"46.620762","Long":"-113.205065"},"DRV":{"Station":"DRV","City":"Dharavandhoo Island","Lat":"5.158","Long":"73.131"},"DRW":{"Station":"DRW","City":"Darwin","Lat":"-12.414721","Long":"130.876667"},"DSC":{"Station":"DSC","City":"Dschang","Lat":"5.45","Long":"10.067"},"DSD":{"Station":"DSD","City":"Grande Anse","Lat":"16.296944","Long":"-61.084443"},"DSE":{"Station":"DSE","City":"Dessie","Lat":"11.0825","Long":"39.711389"},"DSI":{"Station":"DSI","City":"Destin","Lat":"30.400055","Long":"-86.471472"},"DSK":{"Station":"DSK","City":"Dera Ismail Khan","Lat":"31.909422","Long":"70.896639"},"DSM":{"Station":"DSM","City":"Des Moines","Lat":"41.533972","Long":"-93.663082"},"DSN":{"Station":"DSN","City":"Ordos","Lat":"39.4925","Long":"109.861667"},"DSO":{"Station":"DSO","City":"Sondok","Lat":"39.747222","Long":"127.473889"},"DTE":{"Station":"DTE","City":"Daet","Lat":"14.129167","Long":"122.980181"},"DTM":{"Station":"DTM","City":"Dortmund","Lat":"51.518314","Long":"7.612242"},"DTW":{"Station":"DTW","City":"Detroit","Lat":"42.212417","Long":"-83.353388"},"DUB":{"Station":"DUB","City":"Dublin","Lat":"53.421389","Long":"-6.269999"},"DUD":{"Station":"DUD","City":"Dunedin","Lat":"-45.928055","Long":"170.198333"},"DUE":{"Station":"DUE","City":"Dundo","Lat":"-7.400891","Long":"20.818481"},"DUF":{"Station":"DUF","City":"Corolla","Lat":"36.253495","Long":"-75.788523"},"DUJ":{"Station":"DUJ","City":"Dubois","Lat":"41.178278","Long":"-78.898693"},"DUK":{"Station":"DUK","City":"Dukuduk","Lat":"-28.368415","Long":"32.248138"},"DUM":{"Station":"DUM","City":"Dumai","Lat":"1.609194","Long":"101.433558"},"DUR":{"Station":"DUR","City":"Durban","Lat":"-29.611771","Long":"31.119314"},"DUS":{"Station":"DUS","City":"D\u00fcsseldorf","Lat":"51.289453","Long":"6.766775"},"DUT":{"Station":"DUT","City":"Unalaska","Lat":"53.898944","Long":"-166.545027"},"DVO":{"Station":"DVO","City":"Davao City","Lat":"7.125522","Long":"125.645778"},"DVR":{"Station":"DVR","City":"Daly River","Lat":"-13.749999","Long":"130.693889"},"DWA":{"Station":"DWA","City":"Dwangwa","Lat":"-12.518332","Long":"34.131944"},"DWB":{"Station":"DWB","City":"Soalala","Lat":"-16.100832","Long":"45.356667"},"DWC":{"Station":"DWC","City":"Jebel Ali","Lat":"24.886111","Long":"55.172222"},"DXB":{"Station":"DXB","City":"Dubai","Lat":"25.252778","Long":"55.364444"},"DXD":{"Station":"DXD","City":"Dixie","Lat":"-15.117777","Long":"143.313611"},"DYA":{"Station":"DYA","City":"Dysart","Lat":"-22.622221","Long":"148.363889"},"DYG":{"Station":"DYG","City":"Zhangjiajie","Lat":"29.102778","Long":"110.443333"},"DYM":{"Station":"DYM","City":"Diamantina Lakes","Lat":"-23.761666","Long":"141.144722"},"DYW":{"Station":"DYW","City":"Daly Waters","Lat":"-16.264721","Long":"133.383333"},"DZU":{"Station":"DZU","City":"Dazu","Lat":"29.636389","Long":"105.773611"},"EAA":{"Station":"EAA","City":"Eagle","Lat":"64.778083","Long":"-141.14961"},"EAB":{"Station":"EAB","City":"Abbse","Lat":"16.010833","Long":"43.176667"},"EAE":{"Station":"EAE","City":"Sangafa","Lat":"-17.090277","Long":"168.342778"},"EAM":{"Station":"EAM","City":"Nejran","Lat":"17.611436","Long":"44.419169"},"EAR":{"Station":"EAR","City":"Kearney","Lat":"40.727028","Long":"-99.006777"},"EAS":{"Station":"EAS","City":"San Sebasti\u00e1n","Lat":"43.356519","Long":"-1.79061"},"EAT":{"Station":"EAT","City":"Wenatchee","Lat":"47.398089","Long":"-120.205736"},"EAU":{"Station":"EAU","City":"Eau Claire","Lat":"44.865805","Long":"-91.484254"},"EBA":{"Station":"EBA","City":"Elba Island","Lat":"42.760277","Long":"10.239445"},"EBB":{"Station":"EBB","City":"Entebbe","Lat":"0.042386","Long":"32.443503"},"EBD":{"Station":"EBD","City":"El Obeid","Lat":"13.153219","Long":"30.232675"},"EBJ":{"Station":"EBJ","City":"Esbjerg","Lat":"55.525942","Long":"8.553403"},"EBM":{"Station":"EBM","City":"El Borma","Lat":"31.702778","Long":"9.2575"},"EBN":{"Station":"EBN","City":"Ebadon","Lat":"9.330556","Long":"166.819722"},"EBO":{"Station":"EBO","City":"Ebon Atoll","Lat":"4.598333","Long":"168.752222"},"EBU":{"Station":"EBU","City":"St-Etienne","Lat":"45.53405","Long":"4.297311"},"EBW":{"Station":"EBW","City":"Ebolowa","Lat":"2.876","Long":"11.185"},"ECA":{"Station":"ECA","City":"East Tawas","Lat":"44.312822","Long":"-83.422303"},"ECH":{"Station":"ECH","City":"Echuca","Lat":"-36.157221","Long":"144.761944"},"ECP":{"Station":"ECP","City":"Panama City","Lat":"30.35825","Long":"-85.79561"},"EDD":{"Station":"EDD","City":"Erldunda","Lat":"-25.205832","Long":"133.254167"},"EDI":{"Station":"EDI","City":"Edinburgh","Lat":"55.95","Long":"-3.372499"},"EDK":{"Station":"EDK","City":"El Dorado","Lat":"37.774111","Long":"-96.817721"},"EDL":{"Station":"EDL","City":"Eldoret","Lat":"0.404458","Long":"35.238928"},"EDM":{"Station":"EDM","City":"La Roche-sur-Yon","Lat":"46.702383","Long":"-1.381757"},"EDR":{"Station":"EDR","City":"Edward River","Lat":"-14.896666","Long":"141.609444"},"EEN":{"Station":"EEN","City":"Keene","Lat":"42.898389","Long":"-72.270777"},"EFD":{"Station":"EFD","City":"Houston","Lat":"29.607333","Long":"-95.158749"},"EFL":{"Station":"EFL","City":"Kefallinia Island","Lat":"38.120069","Long":"20.500481"},"EGE":{"Station":"EGE","City":"Eagle","Lat":"39.64275","Long":"-106.915943"},"EGL":{"Station":"EGL","City":"Negele Boran","Lat":"5.283","Long":"39.75"},"EGM":{"Station":"EGM","City":"Sege","Lat":"-8.578888","Long":"157.875833"},"EGN":{"Station":"EGN","City":"Geneina","Lat":"13.481667","Long":"22.467222"},"EGO":{"Station":"EGO","City":"Belgorod","Lat":"50.643764","Long":"36.590125"},"EGP":{"Station":"EGP","City":"Eagle Pass","Lat":"28.857093","Long":"-100.513467"},"EGS":{"Station":"EGS","City":"Egilssta\u00f0ir","Lat":"65.283333","Long":"-14.401388"},"EGX":{"Station":"EGX","City":"Egegik","Lat":"58.18549","Long":"-157.375427"},"EHL":{"Station":"EHL","City":"El Bolson","Lat":"-41.943188","Long":"-71.532288"},"EIE":{"Station":"EIE","City":"Yeniseysk","Lat":"58.474167","Long":"92.1125"},"EIH":{"Station":"EIH","City":"Einasleigh","Lat":"-18.503332","Long":"144.093611"},"EIN":{"Station":"EIN","City":"Eindhoven","Lat":"51.450139","Long":"5.374528"},"EIS":{"Station":"EIS","City":"Road Town","Lat":"18.445556","Long":"-64.541666"},"EIY":{"Station":"EIY","City":"Ein Yahav","Lat":"30.621656","Long":"35.203325"},"EJA":{"Station":"EJA","City":"Barrancabermeja","Lat":"7.024331","Long":"-73.806799"},"EJH":{"Station":"EJH","City":"Wejh","Lat":"26.198553","Long":"36.476381"},"EKB":{"Station":"EKB","City":"Ekibastuz","Lat":"51.590833","Long":"75.218611"},"EKD":{"Station":"EKD","City":"Elkedra","Lat":"-21.171943","Long":"135.443611"},"EKI":{"Station":"EKI","City":"Elkhart","Lat":"41.719406","Long":"-86.003218"},"EKO":{"Station":"EKO","City":"Elko","Lat":"40.824917","Long":"-115.791693"},"EKT":{"Station":"EKT","City":"Eskilstuna","Lat":"59.351078","Long":"16.7084"},"ELB":{"Station":"ELB","City":"El Banco","Lat":"9.045542","Long":"-73.97493"},"ELC":{"Station":"ELC","City":"Elcho Island","Lat":"-12.019443","Long":"135.570556"},"ELD":{"Station":"ELD","City":"El Dorado","Lat":"33.220972","Long":"-92.813277"},"ELF":{"Station":"ELF","City":"El Fasher","Lat":"13.614892","Long":"25.32465"},"ELG":{"Station":"ELG","City":"El Golea","Lat":"30.568889","Long":"2.864722"},"ELH":{"Station":"ELH","City":"North Eleuthera","Lat":"25.475633","Long":"-76.681366"},"ELL":{"Station":"ELL","City":"Ellisras","Lat":"-23.72611","Long":"27.687778"},"ELM":{"Station":"ELM","City":"Elmira\/Corning","Lat":"42.159856","Long":"-76.891745"},"ELP":{"Station":"ELP","City":"El Paso","Lat":"31.807194","Long":"-106.37636"},"ELS":{"Station":"ELS","City":"East London","Lat":"-33.035568","Long":"27.825939"},"ELT":{"Station":"ELT","City":"El Tor","Lat":"28.209028","Long":"33.645517"},"ELU":{"Station":"ELU","City":"El Oued","Lat":"33.513056","Long":"6.7825"},"ELY":{"Station":"ELY","City":"Ely","Lat":"39.299694","Long":"-114.841888"},"EMA":{"Station":"EMA","City":"Derby","Lat":"52.831111","Long":"-1.328055"},"EMD":{"Station":"EMD","City":"Emerald","Lat":"-23.567499","Long":"148.179167"},"EME":{"Station":"EME","City":"Emden","Lat":"53.391186","Long":"7.227408"},"EMG":{"Station":"EMG","City":"Empangeni","Lat":"-28.719443","Long":"31.893056"},"EMK":{"Station":"EMK","City":"Emmonak","Lat":"62.786139","Long":"-164.490749"},"EMN":{"Station":"EMN","City":"Nema","Lat":"16.622","Long":"-7.316566"},"EMY":{"Station":"EMY","City":"El Minya","Lat":"28.101111","Long":"30.729722"},"ENA":{"Station":"ENA","City":"Kenai","Lat":"60.573307","Long":"-151.244777"},"ENB":{"Station":"ENB","City":"Eneabba","Lat":"-29.832499","Long":"115.246111"},"ENC":{"Station":"ENC","City":"Nancy","Lat":"48.692086","Long":"6.22605"},"ENE":{"Station":"ENE","City":"Ende","Lat":"-8.849293","Long":"121.660644"},"ENH":{"Station":"ENH","City":"Enshi","Lat":"30.320278","Long":"109.485"},"ENI":{"Station":"ENI","City":"El Nido","Lat":"11.202","Long":"119.417"},"ENO":{"Station":"ENO","City":"Encarnacion","Lat":"-27.299999","Long":"-55.912221"},"ENS":{"Station":"ENS","City":"Enschede","Lat":"52.27","Long":"6.874167"},"ENT":{"Station":"ENT","City":"Enewetak Aux AF","Lat":"11.34075","Long":"162.327861"},"ENU":{"Station":"ENU","City":"Enugu","Lat":"6.474272","Long":"7.561961"},"ENY":{"Station":"ENY","City":"Yan'an","Lat":"36.636944","Long":"109.553889"},"EOH":{"Station":"EOH","City":"Medell\u00edn","Lat":"6.219958","Long":"-75.590518"},"EOI":{"Station":"EOI","City":"Eday","Lat":"59.190556","Long":"-2.772221"},"EOR":{"Station":"EOR","City":"El Dorado","Lat":"6.715438","Long":"-61.639218"},"EOZ":{"Station":"EOZ","City":"Elorza","Lat":"7.059722","Long":"-69.496693"},"EPG":{"Station":"EPG","City":"Weeping Water","Lat":"40.867501","Long":"-96.110009"},"EPL":{"Station":"EPL","City":"\u00c9pinal","Lat":"48.325006","Long":"6.066742"},"EPR":{"Station":"EPR","City":"Esperance","Lat":"-33.684443","Long":"121.822778"},"EPS":{"Station":"EPS","City":"Saman\u00e1","Lat":"19.198586","Long":"-69.429771"},"EQS":{"Station":"EQS","City":"Esquel","Lat":"-42.907949","Long":"-71.139471"},"ERB":{"Station":"ERB","City":"Pukatja","Lat":"-26.265277","Long":"132.176389"},"ERD":{"Station":"ERD","City":"Berdyansk","Lat":"46.815","Long":"36.758056"},"ERF":{"Station":"ERF","City":"Erfurt","Lat":"50.979811","Long":"10.958106"},"ERG":{"Station":"ERG","City":"Eromanga","Lat":"-26.709999","Long":"143.2625"},"ERH":{"Station":"ERH","City":"Er-Rachidia","Lat":"31.9475","Long":"-4.398332"},"ERI":{"Station":"ERI","City":"Erie","Lat":"42.083083","Long":"-80.173943"},"ERL":{"Station":"ERL","City":"Erenhot","Lat":"43.426667","Long":"112.098333"},"ERM":{"Station":"ERM","City":"Erechim","Lat":"-27.661944","Long":"-52.268332"},"ERN":{"Station":"ERN","City":"Eirunep\u00e9","Lat":"-6.639527","Long":"-69.879832"},"ERZ":{"Station":"ERZ","City":"Erzurum","Lat":"39.956501","Long":"41.170166"},"ESA":{"Station":"ESA","City":"Esa'Ala","Lat":"-9.874166","Long":"150.954167"},"ESB":{"Station":"ESB","City":"Ankara","Lat":"40.128082","Long":"32.995083"},"ESC":{"Station":"ESC","City":"Escanaba","Lat":"45.722667","Long":"-87.093721"},"ESD":{"Station":"ESD","City":"Eastsound","Lat":"48.708335","Long":"-122.910599"},"ESG":{"Station":"ESG","City":"Mariscal Estigarribia","Lat":"-22.044985","Long":"-60.621693"},"ESH":{"Station":"ESH","City":"Shoreham By Sea","Lat":"50.835556","Long":"-0.297221"},"ESL":{"Station":"ESL","City":"Elista","Lat":"46.373933","Long":"44.330872"},"ESM":{"Station":"ESM","City":"Tachina","Lat":"0.978519","Long":"-79.626649"},"ESO":{"Station":"ESO","City":"Espa\u00f1ola","Lat":"36.026119","Long":"-106.045414"},"ESP":{"Station":"ESP","City":"East Stroudsburg","Lat":"41.035872","Long":"-75.160678"},"ESR":{"Station":"ESR","City":"El Salvador Bajo","Lat":"-26.311127","Long":"-69.765199"},"ESS":{"Station":"ESS","City":"Essen-Mulheim","Lat":"51.402333","Long":"6.937333"},"ESU":{"Station":"ESU","City":"Essaouira","Lat":"31.3975","Long":"-9.681666"},"ETD":{"Station":"ETD","City":"Etadunna","Lat":"-28.740832","Long":"138.588889"},"ETE":{"Station":"ETE","City":"Genda Wuha","Lat":"12.933","Long":"36.167"},"ETH":{"Station":"ETH","City":"Eilat","Lat":"29.561281","Long":"34.960081"},"ETR":{"Station":"ETR","City":"Santa Rosa","Lat":"-3.43516","Long":"-79.977816"},"ETZ":{"Station":"ETZ","City":"Metz\/Nancy\/Lorraine","Lat":"48.978333","Long":"6.246667"},"EUA":{"Station":"EUA","City":"Eua","Lat":"-21.378","Long":"-174.957"},"EUC":{"Station":"EUC","City":"Eucla","Lat":"-31.707221","Long":"128.872778"},"EUG":{"Station":"EUG","City":"Eugene","Lat":"44.124583","Long":"-123.211971"},"EUM":{"Station":"EUM","City":"Neum\u00fcnster","Lat":"54.078667","Long":"9.9405"},"EUN":{"Station":"EUN","City":"El Aai\u00fan","Lat":"27.151667","Long":"-13.219166"},"EUQ":{"Station":"EUQ","City":"San Jose de Buenavista","Lat":"10.766044","Long":"121.933439"},"EVA":{"Station":"EVA","City":"Evadale","Lat":"30.321042","Long":"-94.073513"},"EVD":{"Station":"EVD","City":"Eva Downs","Lat":"-18.000277","Long":"134.862778"},"EVE":{"Station":"EVE","City":"Evenes","Lat":"68.4913","Long":"16.678108"},"EVG":{"Station":"EVG","City":"Sveg","Lat":"62.047811","Long":"14.42295"},"EVH":{"Station":"EVH","City":"Evans Head","Lat":"-29.093332","Long":"153.420278"},"EVN":{"Station":"EVN","City":"Yerevan","Lat":"40.147275","Long":"44.395881"},"EVV":{"Station":"EVV","City":"Evansville","Lat":"38.038417","Long":"-87.53086"},"EVX":{"Station":"EVX","City":"Evreux","Lat":"49.028611","Long":"1.22"},"EWB":{"Station":"EWB","City":"New Bedford","Lat":"41.676556","Long":"-70.957805"},"EWI":{"Station":"EWI","City":"Enarotali","Lat":"-3.925555","Long":"136.378333"},"EWN":{"Station":"EWN","City":"New Bern","Lat":"35.072853","Long":"-77.043019"},"EWO":{"Station":"EWO","City":"Ewo","Lat":"-0.883","Long":"14.8"},"EWR":{"Station":"EWR","City":"Newark","Lat":"40.6925","Long":"-74.168666"},"EXM":{"Station":"EXM","City":"Exmouth Gulf","Lat":"-22.041388","Long":"114.101944"},"EXT":{"Station":"EXT","City":"Exeter","Lat":"50.734444","Long":"-3.413888"},"EYK":{"Station":"EYK","City":"Beloyarsky","Lat":"63.687222","Long":"66.699722"},"EYL":{"Station":"EYL","City":"Y\u00e9liman\u00e9","Lat":"15.133","Long":"-10.567"},"EYP":{"Station":"EYP","City":"El Yopal","Lat":"5.319108","Long":"-72.384146"},"EYS":{"Station":"EYS","City":"Eliye Springs","Lat":"3.217","Long":"35.967"},"EYW":{"Station":"EYW","City":"Key West","Lat":"24.556111","Long":"-81.759555"},"EZE":{"Station":"EZE","City":"Buenos Aires","Lat":"-34.822221","Long":"-58.535832"},"EZV":{"Station":"EZV","City":"Berezovo","Lat":"63.920556","Long":"65.028333"},"FAA":{"Station":"FAA","City":"Faranah","Lat":"10.035467","Long":"-10.769824"},"FAB":{"Station":"FAB","City":"Farnborough","Lat":"51.275833","Long":"-0.776332"},"FAC":{"Station":"FAC","City":"Faaite","Lat":"-16.686666","Long":"-145.332777"},"FAE":{"Station":"FAE","City":"Sorvag","Lat":"62.063628","Long":"-7.277218"},"FAG":{"Station":"FAG","City":"Fagurh\u00f3lsm\u00fdri","Lat":"63.874722","Long":"-16.64111"},"FAH":{"Station":"FAH","City":"Farah","Lat":"32.365608","Long":"62.165142"},"FAI":{"Station":"FAI","City":"Fairbanks","Lat":"64.815111","Long":"-147.856443"},"FAJ":{"Station":"FAJ","City":"Fajardo","Lat":"18.30801","Long":"-65.661827"},"FAN":{"Station":"FAN","City":"Farsund","Lat":"58.099486","Long":"6.62605"},"FAO":{"Station":"FAO","City":"Faro","Lat":"37.014425","Long":"-7.96591"},"FAR":{"Station":"FAR","City":"Fargo","Lat":"46.92065","Long":"-96.815763"},"FAS":{"Station":"FAS","City":"F\u00e1skr\u00fa\u00f0sfj\u00f6r\u00f0ur","Lat":"64.931667","Long":"-14.060555"},"FAT":{"Station":"FAT","City":"Fresno","Lat":"36.776556","Long":"-119.718832"},"FAV":{"Station":"FAV","City":"Fakarava","Lat":"-16.054149","Long":"-145.656993"},"FAY":{"Station":"FAY","City":"Fayetteville","Lat":"34.991222","Long":"-78.880277"},"FAZ":{"Station":"FAZ","City":"Fasa","Lat":"28.891756","Long":"53.723339"},"FBA":{"Station":"FBA","City":"Fonte Boa","Lat":"-2.532613","Long":"-66.083227"},"FBD":{"Station":"FBD","City":"Faizabad","Lat":"37.121903","Long":"70.518544"},"FBE":{"Station":"FBE","City":"Francisco Beltrao","Lat":"-26.059205","Long":"-53.063452"},"FBM":{"Station":"FBM","City":"Lubumbashi","Lat":"-11.591332","Long":"27.530889"},"FCA":{"Station":"FCA","City":"Kalispell","Lat":"48.310472","Long":"-114.255999"},"FCB":{"Station":"FCB","City":"Ficksburg","Lat":"-28.823118","Long":"27.9089"},"FCO":{"Station":"FCO","City":"Rome","Lat":"41.804475","Long":"12.250797"},"FDA":{"Station":"FDA","City":"Fundaci\u00f3n","Lat":"10.533333","Long":"-74.199999"},"FDE":{"Station":"FDE","City":"Bringeland","Lat":"61.391111","Long":"5.756944"},"FDF":{"Station":"FDF","City":"Fort de France","Lat":"14.592222","Long":"-60.996388"},"FDH":{"Station":"FDH","City":"Friedrichshafen","Lat":"47.671317","Long":"9.511486"},"FDU":{"Station":"FDU","City":"Bandundu","Lat":"-3.311318","Long":"17.381683"},"FEB":{"Station":"FEB","City":"Sanfebagar","Lat":"29.233","Long":"81.217"},"FEG":{"Station":"FEG","City":"Fergana","Lat":"40.358761","Long":"71.745022"},"FEL":{"Station":"FEL","City":"F\u00fcrstenfeldbruck","Lat":"48.205667","Long":"11.267"},"FEZ":{"Station":"FEZ","City":"Fez","Lat":"33.927261","Long":"-4.977957"},"FFD":{"Station":"FFD","City":"Fairford","Lat":"51.682167","Long":"-1.790027"},"FFM":{"Station":"FFM","City":"Fergus Falls","Lat":"46.284389","Long":"-96.156693"},"FFU":{"Station":"FFU","City":"Futaleufu","Lat":"-43.189166","Long":"-71.850277"},"FGD":{"Station":"FGD","City":"Fderik","Lat":"22.667","Long":"-12.733"},"FGI":{"Station":"FGI","City":"Apia","Lat":"-13.848693","Long":"-171.740471"},"FGU":{"Station":"FGU","City":"Fangatau","Lat":"-15.819999","Long":"-140.885832"},"FHU":{"Station":"FHU","City":"Fort Huachuca\/Sierra Vista","Lat":"31.588472","Long":"-110.344388"},"FHZ":{"Station":"FHZ","City":"Fakahina","Lat":"-15.992221","Long":"-140.164721"},"FID":{"Station":"FID","City":"Fishers Island","Lat":"41.251308","Long":"-72.03161"},"FIE":{"Station":"FIE","City":"Fair Isle","Lat":"59.536111","Long":"-1.62611"},"FIH":{"Station":"FIH","City":"Kinshasa","Lat":"-4.385749","Long":"15.444569"},"FIK":{"Station":"FIK","City":"Finke","Lat":"-25.594721","Long":"134.583333"},"FIL":{"Station":"FIL","City":"Fillmore","Lat":"38.958139","Long":"-112.363138"},"FIZ":{"Station":"FIZ","City":"Fitzroy Crossing","Lat":"-18.181943","Long":"125.558611"},"FKI":{"Station":"FKI","City":"Kisangani","Lat":"0.481639","Long":"25.337973"},"FKJ":{"Station":"FKJ","City":"Fukui","Lat":"36.142847","Long":"136.223922"},"FKL":{"Station":"FKL","City":"Franklin","Lat":"41.377417","Long":"-79.860638"},"FKQ":{"Station":"FKQ","City":"Fak Fak","Lat":"-2.920191","Long":"132.267031"},"FLA":{"Station":"FLA","City":"Florencia","Lat":"1.588989","Long":"-75.563874"},"FLB":{"Station":"FLB","City":"Floriano","Lat":"-6.846388","Long":"-43.077288"},"FLF":{"Station":"FLF","City":"Flensburg","Lat":"54.771772","Long":"9.378214"},"FLG":{"Station":"FLG","City":"Flagstaff","Lat":"35.140306","Long":"-111.669249"},"FLH":{"Station":"FLH","City":"Flotta Isle","Lat":"58.825833","Long":"-3.142777"},"FLL":{"Station":"FLL","City":"Fort Lauderdale","Lat":"26.072596","Long":"-80.15274"},"FLM":{"Station":"FLM","City":"Filadelfia","Lat":"-22.359443","Long":"-60.05361"},"FLN":{"Station":"FLN","City":"Florian\u00f3polis","Lat":"-27.670488","Long":"-48.54718"},"FLO":{"Station":"FLO","City":"Florence","Lat":"34.185361","Long":"-79.723888"},"FLR":{"Station":"FLR","City":"Florence","Lat":"43.809953","Long":"11.2051"},"FLS":{"Station":"FLS","City":"Flinders Island","Lat":"-40.090277","Long":"147.993333"},"FLU":{"Station":"FLU","City":"New York","Lat":"40.779268","Long":"-73.832911"},"FLW":{"Station":"FLW","City":"Flores Island","Lat":"39.455272","Long":"-31.13136"},"FLY":{"Station":"FLY","City":"Finley","Lat":"-35.65861","Long":"145.561667"},"FMA":{"Station":"FMA","City":"Formosa","Lat":"-26.212721","Long":"-58.22811"},"FMI":{"Station":"FMI","City":"Kalemie","Lat":"-5.875555","Long":"29.25"},"FMM":{"Station":"FMM","City":"Memmingen","Lat":"47.988758","Long":"10.2395"},"FMN":{"Station":"FMN","City":"Farmington","Lat":"36.74125","Long":"-108.229943"},"FMO":{"Station":"FMO","City":"Greven","Lat":"52.134642","Long":"7.684831"},"FMS":{"Station":"FMS","City":"Fort Madison","Lat":"40.659111","Long":"-91.327749"},"FNC":{"Station":"FNC","City":"Funchal","Lat":"32.697889","Long":"-16.774452"},"FNG":{"Station":"FNG","City":"Fada N'gourma","Lat":"12.040556","Long":"0.364167"},"FNH":{"Station":"FNH","City":"Fincha","Lat":"9.583","Long":"37.35"},"FNL":{"Station":"FNL","City":"Fort Collins\/Loveland","Lat":"40.451827","Long":"-105.011335"},"FNT":{"Station":"FNT","City":"Flint","Lat":"42.965417","Long":"-83.743666"},"FOB":{"Station":"FOB","City":"Fort Bragg","Lat":"39.474333","Long":"-123.79557"},"FOC":{"Station":"FOC","City":"Fuzhou","Lat":"25.935064","Long":"119.663272"},"FOD":{"Station":"FOD","City":"Fort Dodge","Lat":"42.551194","Long":"-94.191832"},"FOE":{"Station":"FOE","City":"Topeka","Lat":"38.950944","Long":"-95.66361"},"FOG":{"Station":"FOG","City":"Foggia","Lat":"41.432917","Long":"15.535028"},"FOM":{"Station":"FOM","City":"Foumban","Lat":"5.636919","Long":"10.750817"},"FON":{"Station":"FON","City":"La Fortuna","Lat":"10.474444","Long":"-84.581666"},"FOO":{"Station":"FOO","City":"Numfoor","Lat":"-0.936324","Long":"134.871889"},"FOR":{"Station":"FOR","City":"Fortaleza","Lat":"-3.776282","Long":"-38.532555"},"FOS":{"Station":"FOS","City":"Forrest","Lat":"-30.838055","Long":"128.115"},"FOU":{"Station":"FOU","City":"Fougamou","Lat":"-1.283","Long":"10.617"},"FPO":{"Station":"FPO","City":"Freeport","Lat":"26.558686","Long":"-78.695552"},"FPY":{"Station":"FPY","City":"Perry","Lat":"30.069278","Long":"-83.580582"},"FRA":{"Station":"FRA","City":"Frankfurt","Lat":"50.026421","Long":"8.543125"},"FRB":{"Station":"FRB","City":"Forbes","Lat":"-33.36361","Long":"147.935"},"FRC":{"Station":"FRC","City":"Franca","Lat":"-20.592213","Long":"-47.382924"},"FRD":{"Station":"FRD","City":"Friday Harbor","Lat":"48.521972","Long":"-123.02436"},"FRF":{"Station":"FRF","City":"Oschersleben","Lat":"52.040333","Long":"11.202833"},"FRG":{"Station":"FRG","City":"Farmingdale","Lat":"40.728778","Long":"-73.413416"},"FRK":{"Station":"FRK","City":"Fr\u00e9gate Island","Lat":"-4.583","Long":"55.95"},"FRM":{"Station":"FRM","City":"Fairmont","Lat":"43.643944","Long":"-94.41561"},"FRO":{"Station":"FRO","City":"Flor\u00f8","Lat":"61.583611","Long":"5.024722"},"FRS":{"Station":"FRS","City":"Flores","Lat":"16.913819","Long":"-89.866382"},"FRT":{"Station":"FRT","City":"Frutillar","Lat":"-41.116943","Long":"-73.049999"},"FRU":{"Station":"FRU","City":"Bishkek","Lat":"43.061306","Long":"74.477556"},"FRW":{"Station":"FRW","City":"Francistown","Lat":"-21.159596","Long":"27.474525"},"FRY":{"Station":"FRY","City":"Fryeburg","Lat":"43.991139","Long":"-70.947888"},"FRZ":{"Station":"FRZ","City":"Fritzlar","Lat":"51.115","Long":"9.286"},"FSD":{"Station":"FSD","City":"Sioux Falls","Lat":"43.582013","Long":"-96.741913"},"FSM":{"Station":"FSM","City":"Fort Smith","Lat":"35.336583","Long":"-94.367443"},"FSP":{"Station":"FSP","City":"St-Pierre","Lat":"46.763056","Long":"-56.174166"},"FSS":{"Station":"FSS","City":"Forres","Lat":"57.649386","Long":"-3.560635"},"FSZ":{"Station":"FSZ","City":"Shizuoka","Lat":"34.796111","Long":"138.189444"},"FTA":{"Station":"FTA","City":"Futuna Island","Lat":"-19.516388","Long":"170.231944"},"FTE":{"Station":"FTE","City":"El Calafate","Lat":"-50.280321","Long":"-72.053102"},"FTU":{"Station":"FTU","City":"Tolagnaro","Lat":"-25.038055","Long":"46.956111"},"FTW":{"Station":"FTW","City":"Fort Worth","Lat":"32.819333","Long":"-97.361693"},"FTX":{"Station":"FTX","City":"Owando","Lat":"-0.531349","Long":"15.950094"},"FUE":{"Station":"FUE","City":"Puerto del Rosario","Lat":"28.452717","Long":"-13.86376"},"FUG":{"Station":"FUG","City":"Fuyang","Lat":"32.881667","Long":"115.733889"},"FUJ":{"Station":"FUJ","City":"Fukue","Lat":"32.666269","Long":"128.832808"},"FUK":{"Station":"FUK","City":"Fukuoka","Lat":"33.585942","Long":"130.450686"},"FUO":{"Station":"FUO","City":"Foshan","Lat":"23.083333","Long":"113.070833"},"FUT":{"Station":"FUT","City":"Futuna Island","Lat":"-14.311388","Long":"-178.06611"},"FWA":{"Station":"FWA","City":"Fort Wayne","Lat":"40.978472","Long":"-85.195166"},"FWH":{"Station":"FWH","City":"Fort Worth","Lat":"32.769186","Long":"-97.441532"},"FXO":{"Station":"FXO","City":"Cuamba","Lat":"-14.817499","Long":"36.528333"},"FYN":{"Station":"FYN","City":"Fuyun","Lat":"47","Long":"89.5"},"FYT":{"Station":"FYT","City":"Faya-Largeau","Lat":"17.917053","Long":"19.111078"},"FYV":{"Station":"FYV","City":"Fayetteville","Lat":"36.005083","Long":"-94.170055"},"GAE":{"Station":"GAE","City":"Gab\u00e8s","Lat":"33.7325","Long":"9.916111"},"GAH":{"Station":"GAH","City":"Gayndah","Lat":"-25.614443","Long":"151.619444"},"GAJ":{"Station":"GAJ","City":"Yamagata","Lat":"38.411894","Long":"140.371331"},"GAL":{"Station":"GAL","City":"Galena","Lat":"64.736167","Long":"-156.937388"},"GAQ":{"Station":"GAQ","City":"Gao","Lat":"16.248433","Long":"-0.005455"},"GAT":{"Station":"GAT","City":"Gap","Lat":"44.455","Long":"6.037778"},"GAU":{"Station":"GAU","City":"Guwahati","Lat":"26.106092","Long":"91.585939"},"GAV":{"Station":"GAV","City":"Gag Island","Lat":"-0.400555","Long":"129.895278"},"GAW":{"Station":"GAW","City":"Gangaw","Lat":"22.174722","Long":"94.134444"},"GAZ":{"Station":"GAZ","City":"Guasopa","Lat":"-9.225555","Long":"152.944167"},"GBB":{"Station":"GBB","City":"Gabala","Lat":"40.80875","Long":"47.725194"},"GBE":{"Station":"GBE","City":"Gaborone","Lat":"-24.555224","Long":"25.918208"},"GBG":{"Station":"GBG","City":"Galesburg","Lat":"40.938001","Long":"-90.431123"},"GBJ":{"Station":"GBJ","City":"Marie Galante","Lat":"15.868611","Long":"-61.272221"},"GBK":{"Station":"GBK","City":"Gbangbatok","Lat":"7.8125","Long":"-12.377777"},"GBL":{"Station":"GBL","City":"Goulburn Island","Lat":"-11.650555","Long":"133.375"},"GBM":{"Station":"GBM","City":"Garba Harre","Lat":"3.322778","Long":"42.213056"},"GBP":{"Station":"GBP","City":"Gamboola","Lat":"-16.543","Long":"143.67"},"GBT":{"Station":"GBT","City":"Gorgan","Lat":"36.909381","Long":"54.401339"},"GBV":{"Station":"GBV","City":"Gibb River","Lat":"-16.418888","Long":"126.446111"},"GCC":{"Station":"GCC","City":"Gillette","Lat":"44.348917","Long":"-105.53936"},"GCH":{"Station":"GCH","City":"Gachsaran","Lat":"30.337567","Long":"50.827964"},"GCI":{"Station":"GCI","City":"Guernsey","Lat":"49.434956","Long":"-2.601968"},"GCJ":{"Station":"GCJ","City":"Johannesburg","Lat":"-25.986266","Long":"28.140061"},"GCK":{"Station":"GCK","City":"Garden City","Lat":"37.927528","Long":"-100.724416"},"GCM":{"Station":"GCM","City":"Grand Cayman","Lat":"19.292778","Long":"-81.357749"},"GCN":{"Station":"GCN","City":"Grand Canyon","Lat":"35.952361","Long":"-112.146971"},"GDC":{"Station":"GDC","City":"Greenville","Lat":"34.758306","Long":"-82.376416"},"GDD":{"Station":"GDD","City":"Gordon Downs","Lat":"-18.678055","Long":"128.591667"},"GDE":{"Station":"GDE","City":"Gode","Lat":"5.935128","Long":"43.578567"},"GDG":{"Station":"GDG","City":"Magdagachi","Lat":"53.473333","Long":"125.795"},"GDL":{"Station":"GDL","City":"Guadalajara","Lat":"20.5218","Long":"-103.311166"},"GDN":{"Station":"GDN","City":"Gdansk","Lat":"54.377569","Long":"18.466222"},"GDO":{"Station":"GDO","City":"Guasdualito","Lat":"7.211081","Long":"-70.756449"},"GDQ":{"Station":"GDQ","City":"Gondar","Lat":"12.5199","Long":"37.434047"},"GDT":{"Station":"GDT","City":"Grand Turk","Lat":"21.444544","Long":"-71.142343"},"GDV":{"Station":"GDV","City":"Glendive","Lat":"47.138722","Long":"-104.807221"},"GDX":{"Station":"GDX","City":"Magadan","Lat":"59.910989","Long":"150.720439"},"GDZ":{"Station":"GDZ","City":"Gelendzhik","Lat":"44.570278","Long":"38.012222"},"GEA":{"Station":"GEA","City":"Noum\u00e9a","Lat":"-22.258332","Long":"166.472778"},"GEB":{"Station":"GEB","City":"Gebe","Lat":"-0.078888","Long":"129.457778"},"GEC":{"Station":"GEC","City":"Ge\u00e7itkale","Lat":"35.233333","Long":"33.732778"},"GEE":{"Station":"GEE","City":"George Town","Lat":"-41.079166","Long":"146.838889"},"GEF":{"Station":"GEF","City":"Liangia","Lat":"-7.575832","Long":"156.596944"},"GEG":{"Station":"GEG","City":"Spokane","Lat":"47.619028","Long":"-117.535221"},"GEI":{"Station":"GEI","City":"Green Islands","Lat":"-4.499166","Long":"154.225556"},"GEL":{"Station":"GEL","City":"Santo \u00c2ngelo","Lat":"-28.281682","Long":"-54.169138"},"GER":{"Station":"GER","City":"Nueva Gerona","Lat":"21.834689","Long":"-82.783818"},"GES":{"Station":"GES","City":"General Santos","Lat":"6.106439","Long":"125.2353"},"GET":{"Station":"GET","City":"Geraldton","Lat":"-28.79611","Long":"114.7075"},"GFF":{"Station":"GFF","City":"Griffith","Lat":"-34.250832","Long":"146.067222"},"GFK":{"Station":"GFK","City":"Grand Forks","Lat":"47.947278","Long":"-97.173777"},"GFN":{"Station":"GFN","City":"Grafton","Lat":"-29.759443","Long":"153.03"},"GFR":{"Station":"GFR","City":"Granville","Lat":"48.882875","Long":"-1.56383"},"GFY":{"Station":"GFY","City":"Grootfontein","Lat":"-19.602166","Long":"18.122667"},"GGD":{"Station":"GGD","City":"Gregory Downs","Lat":"-18.629","Long":"139.234"},"GGG":{"Station":"GGG","City":"Longview","Lat":"32.384014","Long":"-94.711486"},"GGN":{"Station":"GGN","City":"Gagnoa","Lat":"6.103333","Long":"-5.986943"},"GGO":{"Station":"GGO","City":"Guiglo","Lat":"6.524992","Long":"-7.47861"},"GGS":{"Station":"GGS","City":"Gobernador Gregores","Lat":"-48.782777","Long":"-70.149166"},"GGT":{"Station":"GGT","City":"Moss Town","Lat":"23.562631","Long":"-75.877957"},"GGW":{"Station":"GGW","City":"Glasgow","Lat":"48.212444","Long":"-106.614805"},"GHA":{"Station":"GHA","City":"Ghardaia","Lat":"32.381667","Long":"3.799444"},"GHB":{"Station":"GHB","City":"Governors Harbour","Lat":"25.284706","Long":"-76.33101"},"GHC":{"Station":"GHC","City":"Bullock Harbour","Lat":"25.738331","Long":"-77.840113"},"GHN":{"Station":"GHN","City":"Guanghan","Lat":"30.948056","Long":"104.329722"},"GHT":{"Station":"GHT","City":"Ghat","Lat":"25.145564","Long":"10.142647"},"GHU":{"Station":"GHU","City":"Gualeguaychu","Lat":"-33.010277","Long":"-58.613055"},"GIB":{"Station":"GIB","City":"Gibraltar","Lat":"36.151219","Long":"-5.349663"},"GIC":{"Station":"GIC","City":"Boigu Island","Lat":"-9.233332","Long":"142.218333"},"GID":{"Station":"GID","City":"Gitega","Lat":"-3.417221","Long":"29.911944"},"GIG":{"Station":"GIG","City":"Rio de Janeiro","Lat":"-22.808902","Long":"-43.243646"},"GII":{"Station":"GII","City":"Siguiri","Lat":"11.399444","Long":"-9.188055"},"GIL":{"Station":"GIL","City":"Gilgit","Lat":"35.918786","Long":"74.333644"},"GIR":{"Station":"GIR","City":"Girardot","Lat":"4.276244","Long":"-74.795813"},"GIY":{"Station":"GIY","City":"Giyani","Lat":"-23.283888","Long":"30.650278"},"GIZ":{"Station":"GIZ","City":"Jazan","Lat":"16.901111","Long":"42.585833"},"GJL":{"Station":"GJL","City":"Jijel","Lat":"36.794444","Long":"5.873611"},"GJM":{"Station":"GJM","City":"Guajara-Mirim","Lat":"-10.786374","Long":"-65.284791"},"GJR":{"Station":"GJR","City":"Gj\u00f6gur","Lat":"65.995278","Long":"-21.326943"},"GJT":{"Station":"GJT","City":"Grand Junction","Lat":"39.122412","Long":"-108.526734"},"GKA":{"Station":"GKA","City":"Goroka","Lat":"-6.081688","Long":"145.391881"},"GKD":{"Station":"GKD","City":"G\u00f6kceada","Lat":"40.205556","Long":"25.883611"},"GKH":{"Station":"GKH","City":"Gorkha","Lat":"28.05","Long":"84.483"},"GKK":{"Station":"GKK","City":"Kooddoo Island","Lat":"0.730833","Long":"73.433056"},"GLA":{"Station":"GLA","City":"Glasgow","Lat":"55.871944","Long":"-4.433055"},"GLC":{"Station":"GLC","City":"Geladi","Lat":"6.984444","Long":"46.421389"},"GLD":{"Station":"GLD","City":"Goodland","Lat":"39.370639","Long":"-101.698999"},"GLF":{"Station":"GLF","City":"Golfito","Lat":"8.653775","Long":"-83.180543"},"GLG":{"Station":"GLG","City":"Glengyle","Lat":"-24.799443","Long":"139.596944"},"GLH":{"Station":"GLH","City":"Greenville","Lat":"33.482881","Long":"-90.985613"},"GLI":{"Station":"GLI","City":"Glen Innes","Lat":"-29.674999","Long":"151.689444"},"GLK":{"Station":"GLK","City":"Galcaio","Lat":"6.780833","Long":"47.454722"},"GLL":{"Station":"GLL","City":"Gol","Lat":"60.791389","Long":"9.050556"},"GLM":{"Station":"GLM","City":"Glenormiston","Lat":"-22.883","Long":"138.817"},"GLN":{"Station":"GLN","City":"Goulimime","Lat":"29.026667","Long":"-10.050277"},"GLS":{"Station":"GLS","City":"Galveston","Lat":"29.265333","Long":"-94.860416"},"GLV":{"Station":"GLV","City":"Golovin","Lat":"64.550455","Long":"-163.007169"},"GLX":{"Station":"GLX","City":"Galela","Lat":"1.838333","Long":"127.786389"},"GLZ":{"Station":"GLZ","City":"Breda","Lat":"51.567389","Long":"4.931833"},"GMA":{"Station":"GMA","City":"Gemana","Lat":"3.235369","Long":"19.771258"},"GMB":{"Station":"GMB","City":"Gambela","Lat":"8.128764","Long":"34.563131"},"GME":{"Station":"GME","City":"Gomel","Lat":"52.527022","Long":"31.016692"},"GMI":{"Station":"GMI","City":"Gasmata Island","Lat":"-6.27111","Long":"150.330556"},"GMN":{"Station":"GMN","City":"Greymouth","Lat":"-42.461666","Long":"171.19"},"GMR":{"Station":"GMR","City":"Mangareva","Lat":"-23.083332","Long":"-134.883332"},"GMT":{"Station":"GMT","City":"Granite Mountain","Lat":"65.402133","Long":"-161.281474"},"GMV":{"Station":"GMV","City":"Monument Valley","Lat":"37.016667","Long":"-110.200684"},"GMZ":{"Station":"GMZ","City":"San Sebas de la Gomera","Lat":"28.029625","Long":"-17.214599"},"GNA":{"Station":"GNA","City":"Grodno","Lat":"53.601967","Long":"24.053758"},"GNB":{"Station":"GNB","City":"Grenoble","Lat":"45.363056","Long":"5.332778"},"GND":{"Station":"GND","City":"St. George's","Lat":"12.004167","Long":"-61.788055"},"GNI":{"Station":"GNI","City":"Lyudao","Lat":"22.673853","Long":"121.466481"},"GNM":{"Station":"GNM","City":"Guanambi","Lat":"-14.208166","Long":"-42.746082"},"GNN":{"Station":"GNN","City":"Ghinnir","Lat":"7.15","Long":"40.717"},"GNR":{"Station":"GNR","City":"General Roca","Lat":"-39.000671","Long":"-67.620513"},"GNS":{"Station":"GNS","City":"Gunungsitoli","Lat":"1.166381","Long":"97.704681"},"GNV":{"Station":"GNV","City":"Gainesville","Lat":"29.690056","Long":"-82.271777"},"GNY":{"Station":"GNY","City":"Sanliurfa","Lat":"37.448056","Long":"38.898333"},"GNZ":{"Station":"GNZ","City":"Ghanzi","Lat":"-21.692777","Long":"21.6575"},"GOA":{"Station":"GOA","City":"Genoa","Lat":"44.413333","Long":"8.8375"},"GOG":{"Station":"GOG","City":"Gobabis","Lat":"-22.504718","Long":"18.974722"},"GOH":{"Station":"GOH","City":"Nuuk","Lat":"64.190922","Long":"-51.678063"},"GOI":{"Station":"GOI","City":"Goa","Lat":"15.380833","Long":"73.831422"},"GOJ":{"Station":"GOJ","City":"Nizhniy Novgorod","Lat":"56.230119","Long":"43.784042"},"GOM":{"Station":"GOM","City":"Goma","Lat":"-1.670813","Long":"29.238464"},"GON":{"Station":"GON","City":"Groton","Lat":"41.330056","Long":"-72.045138"},"GOO":{"Station":"GOO","City":"Goondiwindi","Lat":"-28.521388","Long":"150.320278"},"GOQ":{"Station":"GOQ","City":"Golmud","Lat":"36.4","Long":"94.786111"},"GOT":{"Station":"GOT","City":"G\u00f6teborg","Lat":"57.662836","Long":"12.279819"},"GOU":{"Station":"GOU","City":"Garoua","Lat":"9.335892","Long":"13.370103"},"GOV":{"Station":"GOV","City":"Gove","Lat":"-12.269443","Long":"136.818333"},"GPB":{"Station":"GPB","City":"Guarapuava","Lat":"-25.38746","Long":"-51.520171"},"GPN":{"Station":"GPN","City":"Pirlangimpi","Lat":"-11.402499","Long":"130.421944"},"GPO":{"Station":"GPO","City":"General Pico","Lat":"-35.696182","Long":"-63.758285"},"GPS":{"Station":"GPS","City":"Baltra","Lat":"-0.453757","Long":"-90.265913"},"GPT":{"Station":"GPT","City":"Gulfport","Lat":"30.407278","Long":"-89.070082"},"GRB":{"Station":"GRB","City":"Green Bay","Lat":"44.484639","Long":"-88.129721"},"GRG":{"Station":"GRG","City":"Gardez","Lat":"33.631661","Long":"69.239172"},"GRI":{"Station":"GRI","City":"Grand Island","Lat":"40.967543","Long":"-98.309638"},"GRJ":{"Station":"GRJ","City":"George","Lat":"-34.005552","Long":"22.378889"},"GRM":{"Station":"GRM","City":"Grand Marais","Lat":"47.838333","Long":"-90.382943"},"GRO":{"Station":"GRO","City":"Girona","Lat":"41.900969","Long":"2.760547"},"GRP":{"Station":"GRP","City":"Gurupi","Lat":"-11.739624","Long":"-49.132185"},"GRQ":{"Station":"GRQ","City":"Groningen","Lat":"53.11972","Long":"6.579444"},"GRR":{"Station":"GRR","City":"Grand Rapids","Lat":"42.880833","Long":"-85.522805"},"GRS":{"Station":"GRS","City":"Grosseto","Lat":"42.759747","Long":"11.071897"},"GRU":{"Station":"GRU","City":"S\u00e3o Paulo","Lat":"-23.432074","Long":"-46.46951"},"GRV":{"Station":"GRV","City":"Grozny","Lat":"43.388056","Long":"45.699444"},"GRW":{"Station":"GRW","City":"Graciosa Island","Lat":"39.092169","Long":"-28.029846"},"GRX":{"Station":"GRX","City":"Granada","Lat":"37.188731","Long":"-3.777355"},"GRY":{"Station":"GRY","City":"Gr\u00edmsey","Lat":"66.554722","Long":"-18.017499"},"GRZ":{"Station":"GRZ","City":"Graz","Lat":"46.991067","Long":"15.439628"},"GSA":{"Station":"GSA","City":"Long Pasia","Lat":"4.409444","Long":"115.718889"},"GSC":{"Station":"GSC","City":"Gascoyne Junction","Lat":"-25.054443","Long":"115.2025"},"GSM":{"Station":"GSM","City":"Dayrestan","Lat":"26.754639","Long":"55.902353"},"GSO":{"Station":"GSO","City":"Greensboro","Lat":"36.101326","Long":"-79.941122"},"GSP":{"Station":"GSP","City":"Greer","Lat":"34.895667","Long":"-82.21886"},"GSQ":{"Station":"GSQ","City":"Sharq Al-Owainat","Lat":"22.585672","Long":"28.716642"},"GSR":{"Station":"GSR","City":"Gardo","Lat":"9.543056","Long":"49.117778"},"GSY":{"Station":"GSY","City":"Grimsby","Lat":"53.446667","Long":"-0.209999"},"GTF":{"Station":"GTF","City":"Great Falls","Lat":"47.482654","Long":"-111.370609"},"GTI":{"Station":"GTI","City":"G\u00fcttin","Lat":"54.383333","Long":"13.325278"},"GTN":{"Station":"GTN","City":"Aoraki\/Mount Cook","Lat":"-43.906666","Long":"170.128333"},"GTO":{"Station":"GTO","City":"Gorontalo","Lat":"0.637119","Long":"122.849858"},"GTR":{"Station":"GTR","City":"Columbus\/West Point\/Starkville","Lat":"33.448278","Long":"-88.591388"},"GTS":{"Station":"GTS","City":"Granite Downs","Lat":"-26.95","Long":"133.6"},"GTT":{"Station":"GTT","City":"Georgetown","Lat":"-18.304999","Long":"143.53"},"GTW":{"Station":"GTW","City":"Holesov","Lat":"49.317","Long":"17.567"},"GTY":{"Station":"GTY","City":"Gettysburg","Lat":"39.841306","Long":"-77.274638"},"GUA":{"Station":"GUA","City":"Guatemala City","Lat":"14.583272","Long":"-90.527474"},"GUB":{"Station":"GUB","City":"Guerrero Negro","Lat":"28.026069","Long":"-114.024005"},"GUC":{"Station":"GUC","City":"Gunnison","Lat":"38.533944","Long":"-106.933027"},"GUD":{"Station":"GUD","City":"Goundam","Lat":"16.361389","Long":"-3.599721"},"GUF":{"Station":"GUF","City":"Gulf Shores","Lat":"30.289639","Long":"-87.671777"},"GUH":{"Station":"GUH","City":"Gunnedah","Lat":"-30.96111","Long":"150.250556"},"GUI":{"Station":"GUI","City":"Guiria","Lat":"10.574078","Long":"-62.312666"},"GUJ":{"Station":"GUJ","City":"Guaratingueta","Lat":"-22.791607","Long":"-45.204777"},"GUL":{"Station":"GUL","City":"Goulburn","Lat":"-34.810277","Long":"149.726389"},"GUM":{"Station":"GUM","City":"Agana","Lat":"13.483874","Long":"144.79717"},"GUP":{"Station":"GUP","City":"Gallup","Lat":"35.511058","Long":"-108.789308"},"GUQ":{"Station":"GUQ","City":"Guanare","Lat":"9.026944","Long":"-69.755149"},"GUR":{"Station":"GUR","City":"Alotau","Lat":"-10.31153","Long":"150.333756"},"GUT":{"Station":"GUT","City":"G\u00fctersloh","Lat":"51.922833","Long":"8.306333"},"GUU":{"Station":"GUU","City":"Grundarfj\u00f6r\u00f0ur","Lat":"64.991389","Long":"-23.224721"},"GUW":{"Station":"GUW","City":"Atyrau","Lat":"47.121944","Long":"51.821389"},"GUX":{"Station":"GUX","City":"Guna","Lat":"24.654681","Long":"77.347347"},"GVA":{"Station":"GVA","City":"Geneva","Lat":"46.238064","Long":"6.10895"},"GVI":{"Station":"GVI","City":"Green River","Lat":"-3.901388","Long":"141.1775"},"GVP":{"Station":"GVP","City":"Greenvale","Lat":"-18.996666","Long":"145.014444"},"GVR":{"Station":"GVR","City":"Governador Valadares","Lat":"-18.895235","Long":"-41.982213"},"GVX":{"Station":"GVX","City":"G\u00e4vle-Sandviken","Lat":"60.593333","Long":"16.951389"},"GWA":{"Station":"GWA","City":"Gwa","Lat":"17.6","Long":"94.583"},"GWD":{"Station":"GWD","City":"Gwadar","Lat":"25.233308","Long":"62.329494"},"GWE":{"Station":"GWE","City":"Gweru","Lat":"-19.436393","Long":"29.861911"},"GWL":{"Station":"GWL","City":"Gwalior","Lat":"26.293336","Long":"78.227753"},"GWT":{"Station":"GWT","City":"Sylt","Lat":"54.91325","Long":"8.340472"},"GWV":{"Station":"GWV","City":"Glendale","Lat":"39.948685","Long":"-80.759529"},"GWY":{"Station":"GWY","City":"Galway","Lat":"53.300244","Long":"-8.941157"},"GXF":{"Station":"GXF","City":"Sayun","Lat":"15.966111","Long":"48.7883"},"GXG":{"Station":"GXG","City":"Negage","Lat":"-7.754505","Long":"15.287728"},"GXQ":{"Station":"GXQ","City":"Coyhaique","Lat":"-45.59421","Long":"-72.106132"},"GXX":{"Station":"GXX","City":"Yagoua","Lat":"10.356111","Long":"15.237222"},"GYA":{"Station":"GYA","City":"Guayaramer\u00edn","Lat":"-10.821666","Long":"-65.345832"},"GYD":{"Station":"GYD","City":"Baku","Lat":"40.4675","Long":"50.046667"},"GYE":{"Station":"GYE","City":"Guayaquil","Lat":"-2.157418","Long":"-79.883557"},"GYM":{"Station":"GYM","City":"Guaymas","Lat":"27.968983","Long":"-110.925168"},"GYP":{"Station":"GYP","City":"Gympie","Lat":"-26.282777","Long":"152.701944"},"GYR":{"Station":"GYR","City":"Goodyear","Lat":"33.423944","Long":"-112.374749"},"GYS":{"Station":"GYS","City":"Guangyuan","Lat":"32.391111","Long":"105.701667"},"GYU":{"Station":"GYU","City":"Guyuan","Lat":"36.078611","Long":"106.216667"},"GYY":{"Station":"GYY","City":"Gary","Lat":"41.616278","Long":"-87.412777"},"GZA":{"Station":"GZA","City":"Gaza","Lat":"31.247","Long":"34.277"},"GZI":{"Station":"GZI","City":"Ghazni","Lat":"33.531228","Long":"68.412881"},"GZO":{"Station":"GZO","City":"Gizo","Lat":"-8.097777","Long":"156.863611"},"GZP":{"Station":"GZP","City":"Gazipasa","Lat":"36.299167","Long":"32.300278"},"GZW":{"Station":"GZW","City":"Qazvin","Lat":"36.240061","Long":"50.047153"},"HAC":{"Station":"HAC","City":"Hachijo Jima","Lat":"33.115","Long":"139.785833"},"HAD":{"Station":"HAD","City":"Halmstad","Lat":"56.691128","Long":"12.820211"},"HAH":{"Station":"HAH","City":"Moroni","Lat":"-11.53366","Long":"43.27185"},"HAJ":{"Station":"HAJ","City":"Hannover","Lat":"52.461056","Long":"9.685078"},"HAK":{"Station":"HAK","City":"Haikou","Lat":"19.934856","Long":"110.458961"},"HAM":{"Station":"HAM","City":"Hamburg","Lat":"53.630389","Long":"9.988228"},"HAN":{"Station":"HAN","City":"Hanoi","Lat":"21.221192","Long":"105.807178"},"HAR":{"Station":"HAR","City":"Harrisburg","Lat":"40.217139","Long":"-76.85136"},"HAS":{"Station":"HAS","City":"Hail","Lat":"27.437917","Long":"41.686292"},"HAT":{"Station":"HAT","City":"Heathlands","Lat":"-11.736943","Long":"142.577778"},"HAU":{"Station":"HAU","City":"Haugesund","Lat":"59.345267","Long":"5.208364"},"HAV":{"Station":"HAV","City":"Havana","Lat":"22.989153","Long":"-82.409085"},"HAW":{"Station":"HAW","City":"Haverfordwest","Lat":"51.833056","Long":"-4.96111"},"HBA":{"Station":"HBA","City":"Hobart","Lat":"-42.83611","Long":"147.510278"},"HBB":{"Station":"HBB","City":"Hobbs","Lat":"32.766781","Long":"-103.20882"},"HBE":{"Station":"HBE","City":"Alexandria","Lat":"30.917669","Long":"29.696408"},"HBT":{"Station":"HBT","City":"Hafr Albatin","Lat":"6.13","Long":"81.102"},"HBX":{"Station":"HBX","City":"Hubli","Lat":"15.361706","Long":"75.084856"},"HCC":{"Station":"HCC","City":"Hudson","Lat":"42.291306","Long":"-73.710332"},"HCN":{"Station":"HCN","City":"Hengchun","Lat":"22.041075","Long":"120.730208"},"HCQ":{"Station":"HCQ","City":"Halls Creek","Lat":"-18.233888","Long":"127.669722"},"HCR":{"Station":"HCR","City":"Holy Cross","Lat":"62.188333","Long":"-159.774916"},"HCW":{"Station":"HCW","City":"Cheraw","Lat":"34.712861","Long":"-79.956999"},"HDB":{"Station":"HDB","City":"Heidelberg","Lat":"49.393333","Long":"8.6525"},"HDD":{"Station":"HDD","City":"Hyderabad","Lat":"25.318056","Long":"68.366111"},"HDF":{"Station":"HDF","City":"Heringsdorf","Lat":"53.878706","Long":"14.152347"},"HDG":{"Station":"HDG","City":"Handan","Lat":"36.523889","Long":"114.43"},"HDM":{"Station":"HDM","City":"Hamadan","Lat":"34.869167","Long":"48.5525"},"HDN":{"Station":"HDN","City":"Hayden","Lat":"40.481167","Long":"-107.217666"},"HDR":{"Station":"HDR","City":"Bandar Abbass","Lat":"27.158251","Long":"56.172461"},"HDS":{"Station":"HDS","City":"Hoedspruit","Lat":"-24.368641","Long":"31.048744"},"HDY":{"Station":"HDY","City":"Hat Yai","Lat":"6.933206","Long":"100.392975"},"HEA":{"Station":"HEA","City":"Herat","Lat":"34.21","Long":"62.228333"},"HED":{"Station":"HED","City":"Herendeen Bay","Lat":"55.801395","Long":"-160.899253"},"HEH":{"Station":"HEH","City":"Heho","Lat":"20.747036","Long":"96.792044"},"HEK":{"Station":"HEK","City":"Heihe","Lat":"50.171944","Long":"127.308889"},"HEL":{"Station":"HEL","City":"Helsinki","Lat":"60.317222","Long":"24.963333"},"HER":{"Station":"HER","City":"Heraklion","Lat":"35.339719","Long":"25.180297"},"HET":{"Station":"HET","City":"Hohhot","Lat":"40.851422","Long":"111.824103"},"HFA":{"Station":"HFA","City":"Haifa","Lat":"32.809444","Long":"35.043056"},"HFE":{"Station":"HFE","City":"Hefei","Lat":"31.780019","Long":"117.298436"},"HFN":{"Station":"HFN","City":"H\u00f6fn","Lat":"64.295556","Long":"-15.227221"},"HFT":{"Station":"HFT","City":"Hammerfest","Lat":"70.679444","Long":"23.668333"},"HGA":{"Station":"HGA","City":"Hargeisa","Lat":"9.518167","Long":"44.088758"},"HGD":{"Station":"HGD","City":"Hughenden","Lat":"-20.814999","Long":"144.225278"},"HGH":{"Station":"HGH","City":"Hangzhou","Lat":"30.229503","Long":"120.434453"},"HGL":{"Station":"HGL","City":"Helgoland","Lat":"54.185278","Long":"7.915833"},"HGN":{"Station":"HGN","City":"Mae Hong Son","Lat":"19.301667","Long":"97.975"},"HGO":{"Station":"HGO","City":"Korhogo","Lat":"9.387183","Long":"-5.556663"},"HGR":{"Station":"HGR","City":"Hagerstown","Lat":"39.7085","Long":"-77.726499"},"HGS":{"Station":"HGS","City":"Freetown","Lat":"8.397133","Long":"-13.129083"},"HGU":{"Station":"HGU","City":"Mount Hagen","Lat":"-5.826788","Long":"144.295861"},"HGZ":{"Station":"HGZ","City":"Hogatza","Lat":"66.176133","Long":"-155.684816"},"HHA":{"Station":"HHA","City":"Changsha","Lat":"28.189158","Long":"113.219633"},"HHE":{"Station":"HHE","City":"Hachinohe","Lat":"40.556447","Long":"141.466325"},"HHH":{"Station":"HHH","City":"Hilton Head Island","Lat":"32.224361","Long":"-80.697471"},"HHQ":{"Station":"HHQ","City":"Hua Hin","Lat":"12.636225","Long":"99.951533"},"HHZ":{"Station":"HHZ","City":"Hikueru Atoll","Lat":"-17.544721","Long":"-142.614443"},"HIA":{"Station":"HIA","City":"Huai'an","Lat":"33.777222","Long":"119.147778"},"HIB":{"Station":"HIB","City":"Hibbing","Lat":"47.386583","Long":"-92.838971"},"HIJ":{"Station":"HIJ","City":"Hiroshima","Lat":"34.436111","Long":"132.919444"},"HIK":{"Station":"HIK","City":"Honolulu","Lat":"21.318681","Long":"-157.922427"},"HIL":{"Station":"HIL","City":"Shilabo","Lat":"6.0775","Long":"44.763889"},"HIN":{"Station":"HIN","City":"Chinju","Lat":"35.088543","Long":"128.07037"},"HIP":{"Station":"HIP","City":"Headingly","Lat":"-21.32111","Long":"138.298056"},"HIR":{"Station":"HIR","City":"Honiara","Lat":"-9.427999","Long":"160.054789"},"HIW":{"Station":"HIW","City":"Hiroshima","Lat":"34.366944","Long":"132.413889"},"HIX":{"Station":"HIX","City":"Hiva Oa","Lat":"-9.768793","Long":"-139.011255"},"HJR":{"Station":"HJR","City":"Khajuraho","Lat":"24.817197","Long":"79.918597"},"HJT":{"Station":"HJT","City":"Khujirt","Lat":"46.925278","Long":"102.778333"},"HKB":{"Station":"HKB","City":"Healy","Lat":"63.867583","Long":"-148.968832"},"HKD":{"Station":"HKD","City":"Hakodate","Lat":"41.77","Long":"140.821944"},"HKG":{"Station":"HKG","City":"Hong Kong","Lat":"22.308889","Long":"113.914722"},"HKK":{"Station":"HKK","City":"Hokitika","Lat":"-42.71361","Long":"170.985278"},"HKN":{"Station":"HKN","City":"Hoskins","Lat":"-5.462168","Long":"150.404944"},"HKT":{"Station":"HKT","City":"Phuket","Lat":"8.1132","Long":"98.316872"},"HKY":{"Station":"HKY","City":"Hickory","Lat":"35.741146","Long":"-81.389548"},"HLD":{"Station":"HLD","City":"Hailar","Lat":"49.204997","Long":"119.825"},"HLF":{"Station":"HLF","City":"Hultsfred-Vimmerby","Lat":"57.525833","Long":"15.823333"},"HLG":{"Station":"HLG","City":"Wheeling","Lat":"40.175","Long":"-80.646277"},"HLH":{"Station":"HLH","City":"Ulanhot","Lat":"46.194444","Long":"122.008611"},"HLI":{"Station":"HLI","City":"Hollister","Lat":"36.893345","Long":"-121.41027"},"HLJ":{"Station":"HLJ","City":"Barysiai","Lat":"56.070556","Long":"23.558056"},"HLL":{"Station":"HLL","City":"Hillside","Lat":"-21.717777","Long":"119.443333"},"HLN":{"Station":"HLN","City":"Helena","Lat":"46.606806","Long":"-111.982749"},"HLO":{"Station":"HLO","City":"Onundarfj\u00f6r\u00f0ur","Lat":"66.05","Long":"-23.69611"},"HLP":{"Station":"HLP","City":"Jakarta","Lat":"-6.266607","Long":"106.891117"},"HLS":{"Station":"HLS","City":"St. Helens","Lat":"-41.337777","Long":"148.285556"},"HLT":{"Station":"HLT","City":"Hamilton","Lat":"-37.648888","Long":"142.065278"},"HLU":{"Station":"HLU","City":"Houailou","Lat":"-21.256388","Long":"165.6175"},"HLV":{"Station":"HLV","City":"Helenvale","Lat":"-15.685832","Long":"145.215"},"HLW":{"Station":"HLW","City":"Hluhluwe","Lat":"-28.008","Long":"32.275"},"HLZ":{"Station":"HLZ","City":"Hamilton","Lat":"-37.866388","Long":"175.335278"},"HMA":{"Station":"HMA","City":"Khanty Mansiysk","Lat":"61.028479","Long":"69.086067"},"HMB":{"Station":"HMB","City":"Sohag","Lat":"26.341189","Long":"31.742983"},"HME":{"Station":"HME","City":"Hassi Messaoud","Lat":"31.673889","Long":"6.140556"},"HMI":{"Station":"HMI","City":"Hami","Lat":"42.841389","Long":"93.669167"},"HMO":{"Station":"HMO","City":"Hermosillo","Lat":"29.095858","Long":"-111.047857"},"HMV":{"Station":"HMV","City":"Hemavan","Lat":"65.806111","Long":"15.082778"},"HNA":{"Station":"HNA","City":"Morioka","Lat":"39.428611","Long":"141.135278"},"HNC":{"Station":"HNC","City":"Hatteras","Lat":"35.232788","Long":"-75.617794"},"HND":{"Station":"HND","City":"Tokyo","Lat":"35.553333","Long":"139.781111"},"HNH":{"Station":"HNH","City":"Hoonah","Lat":"58.096091","Long":"-135.409696"},"HNL":{"Station":"HNL","City":"Honolulu","Lat":"21.318681","Long":"-157.922428"},"HNS":{"Station":"HNS","City":"Haines","Lat":"59.243829","Long":"-135.523537"},"HNY":{"Station":"HNY","City":"Hengyang","Lat":"26.905278","Long":"112.627778"},"HOA":{"Station":"HOA","City":"Hola","Lat":"-1.522","Long":"40.004"},"HOB":{"Station":"HOB","City":"Hobbs","Lat":"32.6875","Long":"-103.217332"},"HOD":{"Station":"HOD","City":"Hodeida","Lat":"14.753","Long":"42.976336"},"HOF":{"Station":"HOF","City":"Hofuf","Lat":"25.285306","Long":"49.485189"},"HOG":{"Station":"HOG","City":"Holgu\u00edn","Lat":"20.785589","Long":"-76.315107"},"HOH":{"Station":"HOH","City":"Hohenems","Lat":"47.384167","Long":"9.7"},"HOI":{"Station":"HOI","City":"Hao","Lat":"-18.074813","Long":"-140.945885"},"HOK":{"Station":"HOK","City":"Lajamanu","Lat":"-18.334721","Long":"130.642778"},"HOM":{"Station":"HOM","City":"Homer","Lat":"59.645556","Long":"-151.476582"},"HON":{"Station":"HON","City":"Huron","Lat":"44.385194","Long":"-98.228555"},"HOR":{"Station":"HOR","City":"Horta","Lat":"38.519894","Long":"-28.715871"},"HOS":{"Station":"HOS","City":"Chos Malal","Lat":"-37.444691","Long":"-70.222468"},"HOT":{"Station":"HOT","City":"Hot Springs","Lat":"34.478028","Long":"-93.096221"},"HOU":{"Station":"HOU","City":"Houston","Lat":"29.645419","Long":"-95.278888"},"HOX":{"Station":"HOX","City":"Hommalinn","Lat":"24.899597","Long":"94.914033"},"HPA":{"Station":"HPA","City":"Lifuka","Lat":"-19.777999","Long":"-174.341332"},"HPB":{"Station":"HPB","City":"Hooper Bay","Lat":"61.523861","Long":"-166.146638"},"HPH":{"Station":"HPH","City":"Hai Phong","Lat":"20.819386","Long":"106.724989"},"HPN":{"Station":"HPN","City":"White Plains","Lat":"41.066944","Long":"-73.707555"},"HPV":{"Station":"HPV","City":"Hanalei","Lat":"22.20919","Long":"-159.445533"},"HRB":{"Station":"HRB","City":"Harbin","Lat":"45.623403","Long":"126.250328"},"HRE":{"Station":"HRE","City":"Harare","Lat":"-17.931805","Long":"31.092847"},"HRG":{"Station":"HRG","City":"Hurghada","Lat":"27.178317","Long":"33.799436"},"HRI":{"Station":"HRI","City":"Mattala","Lat":"6.284467","Long":"81.124128"},"HRK":{"Station":"HRK","City":"Kharkov","Lat":"49.924786","Long":"36.289986"},"HRL":{"Station":"HRL","City":"Harlingen","Lat":"26.227111","Long":"-97.655138"},"HRM":{"Station":"HRM","City":"Hassi R'Mel","Lat":"32.930431","Long":"3.311542"},"HRO":{"Station":"HRO","City":"Harrison","Lat":"36.261521","Long":"-93.154728"},"HRS":{"Station":"HRS","City":"Harrismith","Lat":"-28.235071","Long":"29.106206"},"HRY":{"Station":"HRY","City":"Henbury","Lat":"-24.58361","Long":"133.235278"},"HSC":{"Station":"HSC","City":"Shaoguan","Lat":"24.978611","Long":"113.421111"},"HSG":{"Station":"HSG","City":"Saga","Lat":"33.149722","Long":"130.302222"},"HSI":{"Station":"HSI","City":"Hastings","Lat":"40.60525","Long":"-98.427888"},"HSK":{"Station":"HSK","City":"Huesca","Lat":"42.080927","Long":"-0.323468"},"HSL":{"Station":"HSL","City":"Huslia","Lat":"65.697861","Long":"-156.351388"},"HSM":{"Station":"HSM","City":"Horsham","Lat":"-36.669721","Long":"142.172778"},"HSN":{"Station":"HSN","City":"Zhoushan","Lat":"29.934167","Long":"122.362222"},"HSS":{"Station":"HSS","City":"Hissar","Lat":"29.179444","Long":"75.755336"},"HSV":{"Station":"HSV","City":"Huntsville","Lat":"34.637194","Long":"-86.775055"},"HTA":{"Station":"HTA","City":"Chita","Lat":"52.026317","Long":"113.305556"},"HTI":{"Station":"HTI","City":"Hamilton Island","Lat":"-20.358055","Long":"148.951667"},"HTN":{"Station":"HTN","City":"Hotan","Lat":"37.038522","Long":"79.864933"},"HTR":{"Station":"HTR","City":"Hateruma","Lat":"24.058333","Long":"123.803889"},"HTS":{"Station":"HTS","City":"Huntington","Lat":"38.368508","Long":"-82.560359"},"HTU":{"Station":"HTU","City":"Hopetown","Lat":"-35.715277","Long":"142.359722"},"HTV":{"Station":"HTV","City":"Huntsville","Lat":"30.746889","Long":"-95.587166"},"HTY":{"Station":"HTY","City":"Antakya","Lat":"36.3605","Long":"36.285389"},"HUB":{"Station":"HUB","City":"Humbert River","Lat":"-16.489443","Long":"130.630556"},"HUD":{"Station":"HUD","City":"Humboldt","Lat":"42.734861","Long":"-94.245471"},"HUE":{"Station":"HUE","City":"Humera","Lat":"14.25","Long":"36.583"},"HUF":{"Station":"HUF","City":"Terre Haute","Lat":"39.451472","Long":"-87.307582"},"HUG":{"Station":"HUG","City":"Huehuetenango","Lat":"15.316389","Long":"-91.504999"},"HUH":{"Station":"HUH","City":"Huahine","Lat":"-16.688055","Long":"-151.02611"},"HUI":{"Station":"HUI","City":"Hu\u00ea'","Lat":"16.4015","Long":"107.702614"},"HUJ":{"Station":"HUJ","City":"Hugo","Lat":"34.033639","Long":"-95.542055"},"HUK":{"Station":"HUK","City":"Hukuntsi","Lat":"-23.989721","Long":"21.758056"},"HUM":{"Station":"HUM","City":"Houma","Lat":"29.566502","Long":"-90.660426"},"HUN":{"Station":"HUN","City":"Hualien","Lat":"24.023725","Long":"121.616906"},"HUQ":{"Station":"HUQ","City":"Houn","Lat":"29.110106","Long":"15.965567"},"HUU":{"Station":"HUU","City":"Hu\u00e1nuco","Lat":"-9.87881","Long":"-76.204796"},"HUV":{"Station":"HUV","City":"Hudiksvall","Lat":"61.768333","Long":"17.080556"},"HUW":{"Station":"HUW","City":"Humait\u00e1","Lat":"-7.532118","Long":"-63.072093"},"HUX":{"Station":"HUX","City":"Huatulco","Lat":"15.775317","Long":"-96.262571"},"HUY":{"Station":"HUY","City":"Humberside","Lat":"53.574444","Long":"-0.350832"},"HUZ":{"Station":"HUZ","City":"Huizhou","Lat":"23.048333","Long":"114.600278"},"HVA":{"Station":"HVA","City":"Analalava","Lat":"-14.629693","Long":"47.763783"},"HVB":{"Station":"HVB","City":"Hervey Bay","Lat":"-25.318888","Long":"152.880278"},"HVD":{"Station":"HVD","City":"Khovd","Lat":"47.954094","Long":"91.628175"},"HVK":{"Station":"HVK","City":"H\u00f3lmav\u00edk","Lat":"65.704722","Long":"-21.696388"},"HVM":{"Station":"HVM","City":"Hvammstangi","Lat":"65.266389","Long":"-20.846943"},"HVN":{"Station":"HVN","City":"New Haven","Lat":"41.26375","Long":"-72.886805"},"HVR":{"Station":"HVR","City":"Havre","Lat":"48.542972","Long":"-109.762332"},"HWK":{"Station":"HWK","City":"Hawker","Lat":"-31.854721","Long":"138.468056"},"HWN":{"Station":"HWN","City":"Hwange National Park","Lat":"-18.629871","Long":"27.021042"},"HXX":{"Station":"HXX","City":"Hay","Lat":"-34.531388","Long":"144.829722"},"HYA":{"Station":"HYA","City":"Hyannis","Lat":"41.669333","Long":"-70.28036"},"HYD":{"Station":"HYD","City":"Hyderabad","Lat":"17.254","Long":"78.431"},"HYN":{"Station":"HYN","City":"Huangyan","Lat":"28.562222","Long":"121.428611"},"HYS":{"Station":"HYS","City":"Hays","Lat":"38.842222","Long":"-99.273166"},"HYV":{"Station":"HYV","City":"Hyvink\u00e4\u00e4","Lat":"60.654444","Long":"24.881111"},"HZB":{"Station":"HZB","City":"Merville","Lat":"50.6166","Long":"2.640094"},"HZG":{"Station":"HZG","City":"Hanzhong","Lat":"33.063611","Long":"107.008056"},"HZK":{"Station":"HZK","City":"H\u00fasav\u00edk","Lat":"65.9525","Long":"-17.425832"},"IAA":{"Station":"IAA","City":"Igarka","Lat":"67.437222","Long":"86.621944"},"IAB":{"Station":"IAB","City":"Wichita","Lat":"37.623117","Long":"-97.26763"},"IAD":{"Station":"IAD","City":"Washington","Lat":"38.947444","Long":"-77.459943"},"IAG":{"Station":"IAG","City":"Niagara Falls","Lat":"43.107557","Long":"-78.94584"},"IAH":{"Station":"IAH","City":"Houston","Lat":"29.984444","Long":"-95.341443"},"IAL":{"Station":"IAL","City":"Ialibu","Lat":"-6.274","Long":"143.991"},"IAM":{"Station":"IAM","City":"Zarzaltine","Lat":"28.051389","Long":"9.642778"},"IAO":{"Station":"IAO","City":"Del Carmen","Lat":"9.859097","Long":"126.014017"},"IAQ":{"Station":"IAQ","City":"Bahregan","Lat":"29.840061","Long":"50.272697"},"IAS":{"Station":"IAS","City":"Iasi","Lat":"47.178758","Long":"27.620044"},"IBA":{"Station":"IBA","City":"Ibadan","Lat":"7.362458","Long":"3.978333"},"IBL":{"Station":"IBL","City":"Indigo Bay","Lat":"-21.706943","Long":"35.451944"},"IBP":{"Station":"IBP","City":"Iberia","Lat":"-11.411577","Long":"-69.48871"},"IBZ":{"Station":"IBZ","City":"Eivissa","Lat":"38.872858","Long":"1.373117"},"ICA":{"Station":"ICA","City":"Icabaru","Lat":"4.333","Long":"-61.733"},"ICI":{"Station":"ICI","City":"Cicia","Lat":"-17.743332","Long":"-179.342221"},"ICK":{"Station":"ICK","City":"Nieuw Nickerie","Lat":"5.955556","Long":"-57.039443"},"ICN":{"Station":"ICN","City":"Seoul","Lat":"37.469075","Long":"126.450517"},"ICR":{"Station":"ICR","City":"Nicaro","Lat":"20.688639","Long":"-75.531471"},"ICT":{"Station":"ICT","City":"Wichita","Lat":"37.649944","Long":"-97.433055"},"ICY":{"Station":"ICY","City":"Icy Bay","Lat":"59.969019","Long":"-141.661769"},"IDA":{"Station":"IDA","City":"Idaho Falls","Lat":"43.513722","Long":"-112.070749"},"IDB":{"Station":"IDB","City":"Idre","Lat":"61.869722","Long":"12.689444"},"IDF":{"Station":"IDF","City":"Idiofa","Lat":"-5","Long":"19.6"},"IDK":{"Station":"IDK","City":"Indulkana","Lat":"-26.965832","Long":"133.321667"},"IDO":{"Station":"IDO","City":"Santa Isabel do Morro","Lat":"-11.572288","Long":"-50.666191"},"IDY":{"Station":"IDY","City":"\u00cele d'Yeu","Lat":"46.718611","Long":"-2.39111"},"IEJ":{"Station":"IEJ","City":"Iejima","Lat":"26.721967","Long":"127.784839"},"IEV":{"Station":"IEV","City":"Kiev","Lat":"50.401694","Long":"30.449697"},"IFF":{"Station":"IFF","City":"Iffley","Lat":"-18.9","Long":"141.217"},"IFH":{"Station":"IFH","City":"Isfahan","Lat":"32.928889","Long":"51.561111"},"IFJ":{"Station":"IFJ","City":"\u00cdsafj\u00f6r\u00f0ur","Lat":"66.058056","Long":"-23.135277"},"IFL":{"Station":"IFL","City":"Innisfail","Lat":"-17.559443","Long":"146.011667"},"IFN":{"Station":"IFN","City":"Isfahan","Lat":"32.750836","Long":"51.861267"},"IFP":{"Station":"IFP","City":"Bullhead City","Lat":"35.155972","Long":"-114.559443"},"IGA":{"Station":"IGA","City":"Matthew Town","Lat":"20.975","Long":"-73.666861"},"IGB":{"Station":"IGB","City":"Ingeniero Jacobacci","Lat":"-41.320902","Long":"-69.57486"},"IGD":{"Station":"IGD","City":"Igdir","Lat":"39.974444","Long":"43.88"},"IGH":{"Station":"IGH","City":"Ingham","Lat":"-18.660555","Long":"146.151667"},"IGL":{"Station":"IGL","City":"Izmir","Lat":"38.513022","Long":"27.010053"},"IGM":{"Station":"IGM","City":"Kingman","Lat":"35.259472","Long":"-113.938055"},"IGN":{"Station":"IGN","City":"Iligan","Lat":"8.130489","Long":"124.214925"},"IGO":{"Station":"IGO","City":"Chigorod\u00f3","Lat":"7.680381","Long":"-76.686471"},"IGR":{"Station":"IGR","City":"Igua\u00e7u","Lat":"-25.73728","Long":"-54.473443"},"IGU":{"Station":"IGU","City":"Igua\u00e7u Falls","Lat":"-25.596149","Long":"-54.487205"},"IHO":{"Station":"IHO","City":"Ihosy","Lat":"-22.406388","Long":"46.166667"},"IHR":{"Station":"IHR","City":"Iranshahr","Lat":"27.236117","Long":"60.720039"},"IIA":{"Station":"IIA","City":"Inishmaan","Lat":"53.091944","Long":"-9.569999"},"IIL":{"Station":"IIL","City":"Ilam","Lat":"33.586606","Long":"46.404842"},"IIS":{"Station":"IIS","City":"Nissan Island","Lat":"-4.499721","Long":"154.226111"},"IJK":{"Station":"IJK","City":"Izhevsk","Lat":"56.828056","Long":"53.4575"},"IJU":{"Station":"IJU","City":"Iju\u00ed","Lat":"-28.368655","Long":"-53.846568"},"IKB":{"Station":"IKB","City":"North Wilkesboro","Lat":"36.223602","Long":"-81.098605"},"IKI":{"Station":"IKI","City":"Iki","Lat":"33.749027","Long":"129.785417"},"IKL":{"Station":"IKL","City":"Ikela","Lat":"-1.2","Long":"23.283"},"IKP":{"Station":"IKP","City":"Inkerman","Lat":"-16.229443","Long":"141.434444"},"IKS":{"Station":"IKS","City":"Tiksi","Lat":"71.697667","Long":"128.903017"},"IKT":{"Station":"IKT","City":"Irkutsk","Lat":"52.268028","Long":"104.388975"},"ILD":{"Station":"ILD","City":"Lleida","Lat":"41.728056","Long":"0.535278"},"ILE":{"Station":"ILE","City":"Killeen","Lat":"31.085833","Long":"-97.686499"},"ILF":{"Station":"ILF","City":"Ilford","Lat":"56.061386","Long":"-95.613891"},"ILI":{"Station":"ILI","City":"Iliamna","Lat":"59.755578","Long":"-154.917751"},"ILM":{"Station":"ILM","City":"Wilmington","Lat":"34.270611","Long":"-77.902555"},"ILO":{"Station":"ILO","City":"Iloilo","Lat":"10.713044","Long":"122.545297"},"ILP":{"Station":"ILP","City":"\u00cele des Pins","Lat":"-22.588888","Long":"167.455833"},"ILQ":{"Station":"ILQ","City":"Ilo","Lat":"-17.695035","Long":"-71.343963"},"ILR":{"Station":"ILR","City":"Ilorin","Lat":"8.440211","Long":"4.493919"},"ILU":{"Station":"ILU","City":"Kilaguni","Lat":"-2.91061","Long":"38.065167"},"ILY":{"Station":"ILY","City":"Islay","Lat":"55.681944","Long":"-6.256666"},"ILZ":{"Station":"ILZ","City":"Zilina","Lat":"49.231528","Long":"18.6135"},"IMB":{"Station":"IMB","City":"Imbaimadai","Lat":"5.717","Long":"-60.283"},"IMF":{"Station":"IMF","City":"Imphal","Lat":"24.75995","Long":"93.896697"},"IMI":{"Station":"IMI","City":"Arno Atoll","Lat":"7.016667","Long":"171.483333"},"IMK":{"Station":"IMK","City":"Simikot","Lat":"29.971064","Long":"81.818932"},"IMP":{"Station":"IMP","City":"Imperatriz","Lat":"-5.531291","Long":"-47.460049"},"IMT":{"Station":"IMT","City":"Iron Mountain\/Kingsford","Lat":"45.818361","Long":"-88.114555"},"INA":{"Station":"INA","City":"Inta","Lat":"66.055556","Long":"60.111111"},"INC":{"Station":"INC","City":"Yinchuan","Lat":"38.322778","Long":"106.393333"},"IND":{"Station":"IND","City":"Indianapolis","Lat":"39.717299","Long":"-86.29466"},"INF":{"Station":"INF","City":"In Guezzam","Lat":"19.568889","Long":"5.748889"},"ING":{"Station":"ING","City":"Lago Argentino","Lat":"-50.335277","Long":"-72.248888"},"INH":{"Station":"INH","City":"Inhambane","Lat":"-23.87643","Long":"35.408544"},"INL":{"Station":"INL","City":"International Falls","Lat":"48.565583","Long":"-93.402166"},"INN":{"Station":"INN","City":"Innsbruck","Lat":"47.260219","Long":"11.343964"},"INO":{"Station":"INO","City":"Inongo","Lat":"-1.947221","Long":"18.285833"},"INQ":{"Station":"INQ","City":"Inisheer","Lat":"53.058611","Long":"-9.50611"},"INT":{"Station":"INT","City":"Winston Salem","Lat":"36.133714","Long":"-80.221987"},"INU":{"Station":"INU","City":"Nauru","Lat":"-0.547457","Long":"166.9191"},"INV":{"Station":"INV","City":"Inverness","Lat":"57.5425","Long":"-4.047499"},"INZ":{"Station":"INZ","City":"In Salah","Lat":"27.253611","Long":"2.510833"},"IOA":{"Station":"IOA","City":"Ioannina","Lat":"39.696388","Long":"20.8225"},"IOM":{"Station":"IOM","City":"Isle of Man","Lat":"54.083333","Long":"-4.623888"},"ION":{"Station":"ION","City":"Impfondo","Lat":"1.589444","Long":"18.046667"},"IOR":{"Station":"IOR","City":"Kilronan","Lat":"53.106944","Long":"-9.653888"},"IOS":{"Station":"IOS","City":"Ilh\u00e9us","Lat":"-14.815963","Long":"-39.033196"},"IOU":{"Station":"IOU","City":"\u00cele Ouen","Lat":"-22.459999","Long":"166.7825"},"IPA":{"Station":"IPA","City":"Ipota","Lat":"-18.878332","Long":"169.308056"},"IPC":{"Station":"IPC","City":"Easter Island","Lat":"-27.164791","Long":"-109.42183"},"IPE":{"Station":"IPE","City":"Ipil","Lat":"7.785556","Long":"122.602222"},"IPG":{"Station":"IPG","City":"Santo Ant\u00f4nio do I\u00e7\u00e1","Lat":"-2.939071","Long":"-69.69403"},"IPH":{"Station":"IPH","City":"Ipoh","Lat":"4.567972","Long":"101.092194"},"IPI":{"Station":"IPI","City":"Ipiales","Lat":"0.861972","Long":"-77.671724"},"IPN":{"Station":"IPN","City":"Ipatinga\/Santana Do Paraiso","Lat":"-19.470721","Long":"-42.487582"},"IPT":{"Station":"IPT","City":"Williamsport","Lat":"41.241667","Long":"-76.921805"},"IPU":{"Station":"IPU","City":"Ipiau","Lat":"-14.173616","Long":"-39.684135"},"IQM":{"Station":"IQM","City":"Qiemo","Lat":"38.149444","Long":"85.532778"},"IQN":{"Station":"IQN","City":"Qingyang","Lat":"35.799722","Long":"107.602778"},"IQQ":{"Station":"IQQ","City":"Iquique","Lat":"-20.535221","Long":"-70.181274"},"IQT":{"Station":"IQT","City":"Iquitos","Lat":"-3.784738","Long":"-73.308805"},"IRA":{"Station":"IRA","City":"Kirakira","Lat":"-10.449721","Long":"161.897778"},"IRB":{"Station":"IRB","City":"Iraan","Lat":"30.906222","Long":"-101.889805"},"IRC":{"Station":"IRC","City":"Circle","Lat":"65.827917","Long":"-144.076196"},"IRD":{"Station":"IRD","City":"Ishhurdi","Lat":"24.1525","Long":"89.049446"},"IRE":{"Station":"IRE","City":"Irece","Lat":"-11.339882","Long":"-41.847021"},"IRG":{"Station":"IRG","City":"Lockhart River","Lat":"-12.786943","Long":"143.304722"},"IRI":{"Station":"IRI","City":"Iringa","Lat":"-7.668632","Long":"35.752114"},"IRJ":{"Station":"IRJ","City":"La Rioja","Lat":"-29.381635","Long":"-66.795838"},"IRM":{"Station":"IRM","City":"Igrim","Lat":"63.198889","Long":"64.44"},"IRP":{"Station":"IRP","City":"Isiro","Lat":"2.827606","Long":"27.588253"},"ISA":{"Station":"ISA","City":"Mount Isa","Lat":"-20.663888","Long":"139.488611"},"ISC":{"Station":"ISC","City":"St. Mary's","Lat":"49.913333","Long":"-6.291666"},"ISG":{"Station":"ISG","City":"Ishigaki","Lat":"24.344525","Long":"124.186983"},"ISI":{"Station":"ISI","City":"Isisford","Lat":"-24.258332","Long":"144.425"},"ISJ":{"Station":"ISJ","City":"Isla Mujeres","Lat":"21.245033","Long":"-86.739966"},"ISK":{"Station":"ISK","City":"Nasik","Lat":"19.963739","Long":"73.807644"},"ISN":{"Station":"ISN","City":"Williston","Lat":"48.177939","Long":"-103.642346"},"ISO":{"Station":"ISO","City":"Kinston","Lat":"35.331444","Long":"-77.608832"},"ISP":{"Station":"ISP","City":"New York","Lat":"40.79525","Long":"-73.100221"},"ISS":{"Station":"ISS","City":"Wiscasset","Lat":"43.961417","Long":"-69.712555"},"IST":{"Station":"IST","City":"Istanbul","Lat":"40.976922","Long":"28.814606"},"ITA":{"Station":"ITA","City":"Itacoiatiara","Lat":"-3.127255","Long":"-58.481185"},"ITB":{"Station":"ITB","City":"Itaituba","Lat":"-4.242341","Long":"-56.000668"},"ITH":{"Station":"ITH","City":"Ithaca","Lat":"42.491361","Long":"-76.458721"},"ITM":{"Station":"ITM","City":"Osaka","Lat":"34.785528","Long":"135.438222"},"ITN":{"Station":"ITN","City":"Itabuna","Lat":"-14.810549","Long":"-39.290438"},"ITO":{"Station":"ITO","City":"Hilo","Lat":"19.720263","Long":"-155.048469"},"IUD":{"Station":"IUD","City":"Doha","Lat":"25.117317","Long":"51.314989"},"IVG":{"Station":"IVG","City":"Berane","Lat":"42.838889","Long":"19.861944"},"IVW":{"Station":"IVW","City":"Inverway","Lat":"-17.84111","Long":"129.643333"},"IWD":{"Station":"IWD","City":"Ironwood","Lat":"46.527472","Long":"-90.131388"},"IWJ":{"Station":"IWJ","City":"Iwami","Lat":"34.676389","Long":"131.790278"},"IWO":{"Station":"IWO","City":"Iwo Jima","Lat":"24.784","Long":"141.322722"},"IXB":{"Station":"IXB","City":"Bagdogra","Lat":"26.681206","Long":"88.328567"},"IXE":{"Station":"IXE","City":"Mangalore","Lat":"12.962056","Long":"74.889778"},"IXJ":{"Station":"IXJ","City":"Jammu","Lat":"32.689142","Long":"74.837389"},"IXM":{"Station":"IXM","City":"Madurai","Lat":"9.834508","Long":"78.093378"},"IXU":{"Station":"IXU","City":"Aurangabad","Lat":"19.862728","Long":"75.398114"},"IXZ":{"Station":"IXZ","City":"Port Blair","Lat":"11.641161","Long":"92.729744"},"IYK":{"Station":"IYK","City":"Inyokern","Lat":"35.658741","Long":"-117.829531"},"IZO":{"Station":"IZO","City":"Izumo","Lat":"35.413611","Long":"132.89"},"IZT":{"Station":"IZT","City":"Ixtepec","Lat":"16.449336","Long":"-95.093696"},"JAA":{"Station":"JAA","City":"Jalalabad","Lat":"34.400008","Long":"70.497222"},"JAB":{"Station":"JAB","City":"Jabiru","Lat":"-12.658332","Long":"132.893056"},"JAC":{"Station":"JAC","City":"Jackson","Lat":"43.607333","Long":"-110.737749"},"JAD":{"Station":"JAD","City":"Jandakot","Lat":"-32.097499","Long":"115.881111"},"JAG":{"Station":"JAG","City":"Jacobabad","Lat":"28.284167","Long":"68.449711"},"JAI":{"Station":"JAI","City":"Jaipur","Lat":"26.824192","Long":"75.812161"},"JAK":{"Station":"JAK","City":"Jacmel","Lat":"18.241083","Long":"-72.518499"},"JAL":{"Station":"JAL","City":"Jalapa","Lat":"19.475083","Long":"-96.797505"},"JAM":{"Station":"JAM","City":"Yambol","Lat":"42.454944","Long":"26.352222"},"JAN":{"Station":"JAN","City":"Jackson","Lat":"32.311167","Long":"-90.075888"},"JAQ":{"Station":"JAQ","City":"Jacquinot Bay","Lat":"-5.652499","Long":"151.506944"},"JAR":{"Station":"JAR","City":"Jahrom","Lat":"28.586675","Long":"53.579144"},"JAV":{"Station":"JAV","City":"Jakobshavn","Lat":"69.243217","Long":"-51.05711"},"JAX":{"Station":"JAX","City":"Jacksonville","Lat":"30.494056","Long":"-81.687832"},"JBQ":{"Station":"JBQ","City":"Santo Domingo","Lat":"18.572511","Long":"-69.985607"},"JBR":{"Station":"JBR","City":"Jonesboro","Lat":"35.831722","Long":"-90.646416"},"JCB":{"Station":"JCB","City":"Joacaba","Lat":"-27.171427","Long":"-51.553266"},"JCK":{"Station":"JCK","City":"Julia Creek","Lat":"-20.668332","Long":"141.7225"},"JCM":{"Station":"JCM","City":"Jacobina","Lat":"-11.163193","Long":"-40.553055"},"JCR":{"Station":"JCR","City":"Jacareacanga","Lat":"-6.233155","Long":"-57.776868"},"JCY":{"Station":"JCY","City":"Johnson City","Lat":"30.251813","Long":"-98.62253"},"JDH":{"Station":"JDH","City":"Jodhpur","Lat":"26.251092","Long":"73.048869"},"JDZ":{"Station":"JDZ","City":"Jingdezhen","Lat":"29.338611","Long":"117.175833"},"JED":{"Station":"JED","City":"Jeddah","Lat":"21.679564","Long":"39.156536"},"JEE":{"Station":"JEE","City":"J\u00e9r\u00e9mie","Lat":"18.663056","Long":"-74.170277"},"JEG":{"Station":"JEG","City":"Aasiaat","Lat":"68.721847","Long":"-52.784746"},"JEJ":{"Station":"JEJ","City":"Jeh","Lat":"7.565","Long":"168.961667"},"JEQ":{"Station":"JEQ","City":"Jequie","Lat":"-13.877693","Long":"-40.071638"},"JFK":{"Station":"JFK","City":"New York","Lat":"40.639751","Long":"-73.778925"},"JFN":{"Station":"JFN","City":"Ashtabula","Lat":"41.777971","Long":"-80.695507"},"JGA":{"Station":"JGA","City":"Jamnagar","Lat":"22.465522","Long":"70.012556"},"JGS":{"Station":"JGS","City":"Ji'an","Lat":"26.8575","Long":"114.737222"},"JHB":{"Station":"JHB","City":"Johor Bahru","Lat":"1.641308","Long":"103.669619"},"JHG":{"Station":"JHG","City":"Jinghong","Lat":"21.973914","Long":"100.759611"},"JHM":{"Station":"JHM","City":"Lahaina","Lat":"20.962936","Long":"-156.673031"},"JHQ":{"Station":"JHQ","City":"Shute Harbour","Lat":"-20.277221","Long":"148.755556"},"JHS":{"Station":"JHS","City":"Sisimiut","Lat":"66.951289","Long":"-53.729318"},"JHW":{"Station":"JHW","City":"Jamestown","Lat":"42.153389","Long":"-79.258027"},"JIB":{"Station":"JIB","City":"Djibouti","Lat":"11.547331","Long":"43.159481"},"JIK":{"Station":"JIK","City":"Ikaria","Lat":"37.682717","Long":"26.347061"},"JIL":{"Station":"JIL","City":"Jilin","Lat":"44.002222","Long":"126.395556"},"JIQ":{"Station":"JIQ","City":"Qianjiang","Lat":"29.513611","Long":"108.831389"},"JIU":{"Station":"JIU","City":"Jiujiang","Lat":"29.476944","Long":"115.801111"},"JIW":{"Station":"JIW","City":"Jiwani","Lat":"25.067811","Long":"61.805419"},"JJC":{"Station":"JJC","City":"Atizap\u00e1n de Zaragoza","Lat":"19.574811","Long":"-99.288849"},"JJN":{"Station":"JJN","City":"Quanzhou","Lat":"24.796389","Long":"118.589722"},"JKG":{"Station":"JKG","City":"J\u00f6nk\u00f6ping","Lat":"57.757594","Long":"14.068731"},"JKR":{"Station":"JKR","City":"Janakpur","Lat":"26.708806","Long":"85.922394"},"JKV":{"Station":"JKV","City":"Jacksonville","Lat":"31.86933","Long":"-95.217404"},"JLN":{"Station":"JLN","City":"Joplin","Lat":"37.151806","Long":"-94.498277"},"JMB":{"Station":"JMB","City":"Jamba","Lat":"-14.698332","Long":"16.066667"},"JMK":{"Station":"JMK","City":"Mykonos Island","Lat":"37.435128","Long":"25.348103"},"JMS":{"Station":"JMS","City":"Jamestown","Lat":"46.929722","Long":"-98.678193"},"JNA":{"Station":"JNA","City":"Janu\u00e1ria","Lat":"-15.473832","Long":"-44.385471"},"JNB":{"Station":"JNB","City":"Johannesburg","Lat":"-26.133693","Long":"28.242317"},"JNG":{"Station":"JNG","City":"Jining","Lat":"35.292778","Long":"116.346389"},"JNI":{"Station":"JNI","City":"Junin","Lat":"-34.545888","Long":"-60.930555"},"JNU":{"Station":"JNU","City":"Juneau","Lat":"58.354972","Long":"-134.576277"},"JNX":{"Station":"JNX","City":"Naxos","Lat":"37.080556","Long":"25.368056"},"JNZ":{"Station":"JNZ","City":"Jinzhou","Lat":"41.101389","Long":"121.061667"},"JOG":{"Station":"JOG","City":"Yogyakarta","Lat":"-7.78818","Long":"110.431758"},"JOH":{"Station":"JOH","City":"Port Saint Johns","Lat":"-31.605885","Long":"29.519786"},"JOI":{"Station":"JOI","City":"Joinville","Lat":"-26.224452","Long":"-48.797363"},"JOK":{"Station":"JOK","City":"Yoshkar-Ola","Lat":"56.700556","Long":"47.904722"},"JOL":{"Station":"JOL","City":"Jolo","Lat":"6.053672","Long":"121.011044"},"JOM":{"Station":"JOM","City":"Njombe","Lat":"-9.35","Long":"34.8"},"JOP":{"Station":"JOP","City":"Josephstaal","Lat":"-4.746943","Long":"145.006944"},"JOS":{"Station":"JOS","City":"Jos","Lat":"9.639828","Long":"8.86905"},"JPR":{"Station":"JPR","City":"Ji-Paran\u00e1","Lat":"-10.870802","Long":"-61.846468"},"JQA":{"Station":"JQA","City":"Uummannaq","Lat":"70.734231","Long":"-52.696202"},"JQE":{"Station":"JQE","City":"Jaqu\u00e9","Lat":"7.517778","Long":"-78.157221"},"JRO":{"Station":"JRO","City":"Kilimanjaro","Lat":"-3.429405","Long":"37.074461"},"JSA":{"Station":"JSA","City":"Jaisalmer","Lat":"26.888653","Long":"70.864967"},"JSH":{"Station":"JSH","City":"Sitia","Lat":"35.216108","Long":"26.101325"},"JSI":{"Station":"JSI","City":"Skiathos","Lat":"39.1771","Long":"23.503675"},"JSM":{"Station":"JSM","City":"Jos\u00e9 de San Mart\u00edn","Lat":"-44.05","Long":"-70.433"},"JSR":{"Station":"JSR","City":"Jessore","Lat":"23.1838","Long":"89.160833"},"JST":{"Station":"JST","City":"Johnstown","Lat":"40.315555","Long":"-78.83466"},"JSU":{"Station":"JSU","City":"Sukkertoppen","Lat":"65.412464","Long":"-52.939418"},"JSY":{"Station":"JSY","City":"Syros Island","Lat":"37.422792","Long":"24.950936"},"JTC":{"Station":"JTC","City":"Bauru","Lat":"-22.157777","Long":"-49.068332"},"JTR":{"Station":"JTR","City":"Santorini","Lat":"36.399169","Long":"25.479333"},"JTY":{"Station":"JTY","City":"Astypalaia Island","Lat":"36.579886","Long":"26.375822"},"JUA":{"Station":"JUA","City":"Juara","Lat":"-11.24","Long":"-57.517"},"JUB":{"Station":"JUB","City":"Juba","Lat":"4.872006","Long":"31.601117"},"JUJ":{"Station":"JUJ","City":"Jujuy","Lat":"-24.392777","Long":"-65.097777"},"JUL":{"Station":"JUL","City":"Juliaca","Lat":"-15.467102","Long":"-70.158168"},"JUM":{"Station":"JUM","City":"Jumla","Lat":"29.274167","Long":"82.193333"},"JUR":{"Station":"JUR","City":"Jurien Bay","Lat":"-30.303055","Long":"115.055278"},"JUZ":{"Station":"JUZ","City":"Quzhou","Lat":"28.965833","Long":"118.899444"},"JVI":{"Station":"JVI","City":"Manville","Lat":"40.52444","Long":"-74.59829"},"JWA":{"Station":"JWA","City":"Jwaneng","Lat":"-24.602332","Long":"24.690971"},"JXA":{"Station":"JXA","City":"Jixi","Lat":"45.66","Long":"132.46"},"JYV":{"Station":"JYV","City":"Jyv\u00e4skyl\u00e4","Lat":"62.399453","Long":"25.678253"},"JZH":{"Station":"JZH","City":"Jiuzhaigou","Lat":"32.857","Long":"103.683"},"KAA":{"Station":"KAA","City":"Kasama","Lat":"-10.217","Long":"31.133"},"KAB":{"Station":"KAB","City":"Kariba","Lat":"-16.51976","Long":"28.884981"},"KAD":{"Station":"KAD","City":"Kaduna","Lat":"10.696025","Long":"7.320114"},"KAE":{"Station":"KAE","City":"Kake","Lat":"56.961362","Long":"-133.91026"},"KAG":{"Station":"KAG","City":"Kangnung","Lat":"37.753561","Long":"128.943625"},"KAJ":{"Station":"KAJ","City":"Kajaani","Lat":"64.285472","Long":"27.692414"},"KAL":{"Station":"KAL","City":"Kaltag","Lat":"64.31898","Long":"-158.741305"},"KAN":{"Station":"KAN","City":"Kano","Lat":"12.047589","Long":"8.524622"},"KAO":{"Station":"KAO","City":"Kuusamo","Lat":"65.987575","Long":"29.239381"},"KAP":{"Station":"KAP","City":"Kapanga","Lat":"-8.383","Long":"22.597"},"KAR":{"Station":"KAR","City":"Kamarang","Lat":"5.865336","Long":"-60.614193"},"KAS":{"Station":"KAS","City":"Karasburg","Lat":"-28.03111","Long":"18.736667"},"KAT":{"Station":"KAT","City":"Kaitaia","Lat":"-35.069999","Long":"173.285278"},"KAU":{"Station":"KAU","City":"Kauhava","Lat":"63.127078","Long":"23.051442"},"KAV":{"Station":"KAV","City":"Kavanay\u00e9n","Lat":"5.633","Long":"-61.783"},"KAW":{"Station":"KAW","City":"Kawthaung","Lat":"10.049258","Long":"98.538006"},"KAX":{"Station":"KAX","City":"Kalbarri","Lat":"-27.689999","Long":"114.261667"},"KAY":{"Station":"KAY","City":"Wakaya Island","Lat":"-17.617","Long":"179.017"},"KAZ":{"Station":"KAZ","City":"Kao","Lat":"1.185278","Long":"127.896111"},"KBB":{"Station":"KBB","City":"Kirkimbie","Lat":"-17.779166","Long":"129.21"},"KBC":{"Station":"KBC","City":"Birch Creek","Lat":"66.274472","Long":"-145.818193"},"KBD":{"Station":"KBD","City":"Kimberley Downs","Lat":"-17.397777","Long":"124.354722"},"KBG":{"Station":"KBG","City":"Kabalega Falls","Lat":"2.326389","Long":"31.497778"},"KBI":{"Station":"KBI","City":"Kribi","Lat":"2.873889","Long":"9.977778"},"KBJ":{"Station":"KBJ","City":"Kings Canyon","Lat":"-24.260555","Long":"131.489444"},"KBN":{"Station":"KBN","City":"Kabinda","Lat":"-6.120555","Long":"24.546111"},"KBO":{"Station":"KBO","City":"Kabalo","Lat":"-6.083","Long":"26.917"},"KBP":{"Station":"KBP","City":"Kiev","Lat":"50.345","Long":"30.894722"},"KBQ":{"Station":"KBQ","City":"Kasungu","Lat":"-13.01463","Long":"33.468597"},"KBR":{"Station":"KBR","City":"Kota Bharu","Lat":"6.16685","Long":"102.293014"},"KBS":{"Station":"KBS","City":"Bo","Lat":"7.95","Long":"-11.767"},"KBT":{"Station":"KBT","City":"Kaben","Lat":"8.900556","Long":"170.843889"},"KBV":{"Station":"KBV","City":"Krabi","Lat":"8.095969","Long":"98.988764"},"KBY":{"Station":"KBY","City":"Streaky Bay","Lat":"-32.835832","Long":"134.292778"},"KBZ":{"Station":"KBZ","City":"Kaikoura","Lat":"-42.424999","Long":"173.605278"},"KCA":{"Station":"KCA","City":"Kuqa","Lat":"41.718056","Long":"82.986944"},"KCB":{"Station":"KCB","City":"Kasikasima","Lat":"3.15","Long":"-55.717"},"KCE":{"Station":"KCE","City":"Collinsville","Lat":"-20.598888","Long":"147.853611"},"KCG":{"Station":"KCG","City":"Chignik","Lat":"56.317829","Long":"-158.590925"},"KCH":{"Station":"KCH","City":"Kuching","Lat":"1.484697","Long":"110.346933"},"KCK":{"Station":"KCK","City":"Kirensk","Lat":"57.7725","Long":"108.058889"},"KCL":{"Station":"KCL","City":"Chignik Lagoon","Lat":"56.311047","Long":"-158.534266"},"KCO":{"Station":"KCO","City":"K\u00f6sek\u00f6y","Lat":"40.735028","Long":"30.083336"},"KCQ":{"Station":"KCQ","City":"Chignik","Lat":"56.311463","Long":"-158.373236"},"KCS":{"Station":"KCS","City":"Kings Creek","Lat":"-24.421666","Long":"131.82"},"KCT":{"Station":"KCT","City":"Galle","Lat":"5.993683","Long":"80.320272"},"KCU":{"Station":"KCU","City":"Masindi","Lat":"1.758056","Long":"31.736667"},"KDA":{"Station":"KDA","City":"Kolda","Lat":"12.898508","Long":"-14.96811"},"KDB":{"Station":"KDB","City":"Kambalda","Lat":"-31.190277","Long":"121.596944"},"KDC":{"Station":"KDC","City":"Kandi","Lat":"11.144722","Long":"2.939722"},"KDD":{"Station":"KDD","City":"Khuzdar","Lat":"27.775","Long":"66.625"},"KDH":{"Station":"KDH","City":"Kandahar","Lat":"31.513639","Long":"65.861056"},"KDI":{"Station":"KDI","City":"Kendari","Lat":"-4.081607","Long":"122.418231"},"KDJ":{"Station":"KDJ","City":"N'Djol\u00e9","Lat":"-0.183","Long":"10.75"},"KDT":{"Station":"KDT","City":"Nakhon Pathom","Lat":"14.101975","Long":"99.917219"},"KDU":{"Station":"KDU","City":"Skardu","Lat":"35.335508","Long":"75.536047"},"KDV":{"Station":"KDV","City":"Vunisea","Lat":"-19.058055","Long":"178.156944"},"KEC":{"Station":"KEC","City":"Kasenga","Lat":"-10.35","Long":"28.633"},"KED":{"Station":"KED","City":"Kaedi","Lat":"16.159547","Long":"-13.507616"},"KEE":{"Station":"KEE","City":"Kelle","Lat":"-0.083","Long":"14.533"},"KEF":{"Station":"KEF","City":"Reykjav\u00edk","Lat":"63.985","Long":"-22.605555"},"KEJ":{"Station":"KEJ","City":"Kemerovo","Lat":"55.270094","Long":"86.107208"},"KEL":{"Station":"KEL","City":"Kiel","Lat":"54.3795","Long":"10.145167"},"KEM":{"Station":"KEM","City":"Kemi-Tornio","Lat":"65.781889","Long":"24.5991"},"KEN":{"Station":"KEN","City":"Kenema","Lat":"7.891295","Long":"-11.176555"},"KEP":{"Station":"KEP","City":"Nepalgunj","Lat":"28.101667","Long":"81.666389"},"KER":{"Station":"KER","City":"Kerman","Lat":"30.274444","Long":"56.951111"},"KES":{"Station":"KES","City":"Kelsey","Lat":"56.037495","Long":"-96.509719"},"KET":{"Station":"KET","City":"Kengtung","Lat":"21.301611","Long":"99.635997"},"KEV":{"Station":"KEV","City":"Kuorevesi","Lat":"61.85605","Long":"24.7866"},"KEY":{"Station":"KEY","City":"Kericho","Lat":"-0.417","Long":"35.25"},"KFA":{"Station":"KFA","City":"Kiffa","Lat":"16.589983","Long":"-11.406207"},"KFE":{"Station":"KFE","City":"Cloudbreak","Lat":"-22.292","Long":"119.437"},"KFG":{"Station":"KFG","City":"Kalkurung","Lat":"-17.431943","Long":"130.808056"},"KFP":{"Station":"KFP","City":"False Pass","Lat":"54.847819","Long":"-163.407077"},"KGA":{"Station":"KGA","City":"Kananga","Lat":"-5.900054","Long":"22.469166"},"KGC":{"Station":"KGC","City":"Kingscote","Lat":"-35.713888","Long":"137.521389"},"KGD":{"Station":"KGD","City":"Kaliningrad","Lat":"54.89005","Long":"20.592633"},"KGF":{"Station":"KGF","City":"Karaganda","Lat":"49.670833","Long":"73.334444"},"KGG":{"Station":"KGG","City":"K\u00e9dougou","Lat":"12.572292","Long":"-12.220332"},"KGI":{"Station":"KGI","City":"Kalgoorlie","Lat":"-30.789443","Long":"121.461667"},"KGJ":{"Station":"KGJ","City":"Karonga","Lat":"-9.953568","Long":"33.893022"},"KGK":{"Station":"KGK","City":"Koliganek","Lat":"59.726642","Long":"-157.259471"},"KGP":{"Station":"KGP","City":"Kogalym","Lat":"62.190417","Long":"74.533803"},"KGR":{"Station":"KGR","City":"Kulgera","Lat":"-25.842777","Long":"133.291944"},"KGU":{"Station":"KGU","City":"Keningau","Lat":"5.357222","Long":"116.159167"},"KGY":{"Station":"KGY","City":"Kingaroy","Lat":"-26.580832","Long":"151.841111"},"KHD":{"Station":"KHD","City":"Khorramabad","Lat":"33.435378","Long":"48.282889"},"KHE":{"Station":"KHE","City":"Kherson","Lat":"46.675833","Long":"32.506389"},"KHG":{"Station":"KHG","City":"Kashgar","Lat":"39.542922","Long":"76.019956"},"KHH":{"Station":"KHH","City":"Kaohsiung","Lat":"22.577094","Long":"120.350006"},"KHI":{"Station":"KHI","City":"Karachi","Lat":"24.906547","Long":"67.160797"},"KHJ":{"Station":"KHJ","City":"Kauhajoki","Lat":"62.463333","Long":"22.391111"},"KHK":{"Station":"KHK","City":"Khark Island","Lat":"29.260278","Long":"50.323889"},"KHM":{"Station":"KHM","City":"Khamti","Lat":"25.988333","Long":"95.674444"},"KHN":{"Station":"KHN","City":"Nanchang","Lat":"28.865","Long":"115.9"},"KHR":{"Station":"KHR","City":"Kharkhorin","Lat":"47.246667","Long":"102.826111"},"KHS":{"Station":"KHS","City":"Khasab","Lat":"26.170986","Long":"56.240569"},"KHT":{"Station":"KHT","City":"Khost","Lat":"33.333639","Long":"69.952364"},"KHU":{"Station":"KHU","City":"Kremenchuk","Lat":"49.134167","Long":"33.476389"},"KHV":{"Station":"KHV","City":"Khabarovsk","Lat":"48.528044","Long":"135.188361"},"KHW":{"Station":"KHW","City":"Khwai River Lodge","Lat":"-19.149166","Long":"23.7875"},"KHY":{"Station":"KHY","City":"Khoy","Lat":"38.427453","Long":"44.973575"},"KHZ":{"Station":"KHZ","City":"Kauehi","Lat":"-15.780832","Long":"-145.124166"},"KID":{"Station":"KID","City":"Kristianstad","Lat":"55.921686","Long":"14.085536"},"KIF":{"Station":"KIF","City":"Kingfisher Lake","Lat":"53.012778","Long":"-89.857499"},"KIG":{"Station":"KIG","City":"Koinghaas","Lat":"-30.187777","Long":"17.279167"},"KIH":{"Station":"KIH","City":"Kish Island","Lat":"26.526156","Long":"53.980211"},"KIN":{"Station":"KIN","City":"Kingston","Lat":"17.935667","Long":"-76.787499"},"KIO":{"Station":"KIO","City":"Kili Island","Lat":"5.65","Long":"169.116667"},"KIP":{"Station":"KIP","City":"Wichita Falls","Lat":"33.860617","Long":"-98.490398"},"KIR":{"Station":"KIR","City":"Killarney","Lat":"52.180878","Long":"-9.523782"},"KIS":{"Station":"KIS","City":"Kisumu","Lat":"-0.086138","Long":"34.728892"},"KIT":{"Station":"KIT","City":"Kithira","Lat":"36.274258","Long":"23.016978"},"KIV":{"Station":"KIV","City":"Chisinau","Lat":"46.927744","Long":"28.930978"},"KIW":{"Station":"KIW","City":"Kitwe","Lat":"-12.900468","Long":"28.149858"},"KIX":{"Station":"KIX","City":"Osaka","Lat":"34.427306","Long":"135.244072"},"KIY":{"Station":"KIY","City":"Kilwa Masoko","Lat":"-8.909999","Long":"39.508611"},"KJA":{"Station":"KJA","City":"Krasnoyarsk","Lat":"56.172947","Long":"92.493278"},"KJK":{"Station":"KJK","City":"Kortrijk","Lat":"50.817222","Long":"3.204722"},"KJP":{"Station":"KJP","City":"Zamami","Lat":"26.168333","Long":"127.293333"},"KKC":{"Station":"KKC","City":"Khon Kaen","Lat":"16.466628","Long":"102.783661"},"KKH":{"Station":"KKH","City":"Kongiganak","Lat":"59.961631","Long":"-162.880593"},"KKJ":{"Station":"KKJ","City":"Kita Kyushu","Lat":"33.845942","Long":"131.034689"},"KKK":{"Station":"KKK","City":"Kalakaket Creek","Lat":"64.424447","Long":"-156.843338"},"KKM":{"Station":"KKM","City":"Lop Buri","Lat":"14.94945","Long":"100.643022"},"KKN":{"Station":"KKN","City":"Kirkenes","Lat":"69.725781","Long":"29.891295"},"KKO":{"Station":"KKO","City":"Kaikohe","Lat":"-35.45111","Long":"173.817222"},"KKP":{"Station":"KKP","City":"Koolburra","Lat":"-15.318888","Long":"143.955278"},"KKQ":{"Station":"KKQ","City":"Krasnoselkup","Lat":"65.716667","Long":"82.455"},"KKR":{"Station":"KKR","City":"Kaukura Atoll","Lat":"-15.667499","Long":"-146.886943"},"KKT":{"Station":"KKT","City":"Kentland","Lat":"40.758732","Long":"-87.428218"},"KKW":{"Station":"KKW","City":"Kikwit","Lat":"-5.035766","Long":"18.785631"},"KKX":{"Station":"KKX","City":"Kikaiga Shima","Lat":"28.321344","Long":"129.9281"},"KKY":{"Station":"KKY","City":"Kilkenny","Lat":"52.650883","Long":"-7.29611"},"KKZ":{"Station":"KKZ","City":"Koh Kong","Lat":"11.613056","Long":"102.9975"},"KLB":{"Station":"KLB","City":"Kalabo","Lat":"-14.983","Long":"22.633"},"KLC":{"Station":"KLC","City":"Kaolack","Lat":"14.146881","Long":"-16.051296"},"KLD":{"Station":"KLD","City":"Tver","Lat":"56.824736","Long":"35.757678"},"KLE":{"Station":"KLE","City":"Ka\u00e9l\u00e9","Lat":"10.0925","Long":"14.445556"},"KLF":{"Station":"KLF","City":"Kaluga","Lat":"54.548333","Long":"36.371111"},"KLH":{"Station":"KLH","City":"Kolhapur","Lat":"16.664658","Long":"74.289353"},"KLI":{"Station":"KLI","City":"Kota Koli","Lat":"4.157639","Long":"21.650917"},"KLJ":{"Station":"KLJ","City":"Klaipeda","Lat":"55.711944","Long":"21.242778"},"KLK":{"Station":"KLK","City":"Kalokol","Lat":"3.483","Long":"35.833"},"KLL":{"Station":"KLL","City":"Levelock","Lat":"59.128083","Long":"-156.858638"},"KLM":{"Station":"KLM","City":"Kalaleh","Lat":"37.383272","Long":"55.452008"},"KLN":{"Station":"KLN","City":"Larsen Bay","Lat":"57.535083","Long":"-153.976666"},"KLO":{"Station":"KLO","City":"Kalibo","Lat":"11.679431","Long":"122.376294"},"KLR":{"Station":"KLR","City":"Kalmar","Lat":"56.685531","Long":"16.287578"},"KLU":{"Station":"KLU","City":"Klagenfurt","Lat":"46.642514","Long":"14.337739"},"KLW":{"Station":"KLW","City":"Klawock","Lat":"55.579233","Long":"-133.075996"},"KLX":{"Station":"KLX","City":"Kalamata","Lat":"37.068319","Long":"22.025525"},"KLZ":{"Station":"KLZ","City":"Kleinzee","Lat":"-29.688402","Long":"17.094006"},"KMA":{"Station":"KMA","City":"Kerema","Lat":"-7.96361","Long":"145.771389"},"KMC":{"Station":"KMC","City":"King Khaled Military City","Lat":"27.900917","Long":"45.528194"},"KME":{"Station":"KME","City":"Kamembe","Lat":"-2.462241","Long":"28.90795"},"KMG":{"Station":"KMG","City":"Kunming","Lat":"25.101944","Long":"102.929167"},"KMH":{"Station":"KMH","City":"Kuruman","Lat":"-27.456666","Long":"23.411388"},"KMI":{"Station":"KMI","City":"Miyazaki","Lat":"31.877222","Long":"131.448611"},"KMJ":{"Station":"KMJ","City":"Kumamoto","Lat":"32.837319","Long":"130.85505"},"KMN":{"Station":"KMN","City":"Kamina","Lat":"-8.642024","Long":"25.252897"},"KMO":{"Station":"KMO","City":"Manokotak","Lat":"58.932058","Long":"-158.901896"},"KMP":{"Station":"KMP","City":"Keetmanshoop","Lat":"-26.539827","Long":"18.111447"},"KMQ":{"Station":"KMQ","City":"Komatsu","Lat":"36.394611","Long":"136.406544"},"KMS":{"Station":"KMS","City":"Kumasi","Lat":"6.714564","Long":"-1.590818"},"KMU":{"Station":"KMU","City":"Kisimayu","Lat":"-0.377352","Long":"42.459233"},"KMV":{"Station":"KMV","City":"Kalemyo","Lat":"23.188811","Long":"94.051094"},"KMW":{"Station":"KMW","City":"Kostroma","Lat":"57.796944","Long":"41.019444"},"KMX":{"Station":"KMX","City":"Khamis Mushait","Lat":"18.297286","Long":"42.803536"},"KNA":{"Station":"KNA","City":"Vi\u00f1a del Mar","Lat":"-32.94961","Long":"-71.478582"},"KND":{"Station":"KND","City":"Kindu","Lat":"-2.919177","Long":"25.915361"},"KNG":{"Station":"KNG","City":"Kaimana","Lat":"-3.644516","Long":"133.695553"},"KNH":{"Station":"KNH","City":"Kinmen","Lat":"24.427892","Long":"118.359197"},"KNI":{"Station":"KNI","City":"Katanning","Lat":"-33.683332","Long":"117.656944"},"KNJ":{"Station":"KNJ","City":"Kindamba","Lat":"-3.95","Long":"14.517"},"KNK":{"Station":"KNK","City":"Kokhanok","Lat":"59.433286","Long":"-154.802591"},"KNN":{"Station":"KNN","City":"Kankan","Lat":"10.448333","Long":"-9.227499"},"KNP":{"Station":"KNP","City":"Capanda","Lat":"-9.770555","Long":"15.456389"},"KNQ":{"Station":"KNQ","City":"Kon\u00e9","Lat":"-21.053332","Long":"164.837778"},"KNR":{"Station":"KNR","City":"Kangan","Lat":"27.820547","Long":"52.352175"},"KNS":{"Station":"KNS","City":"King Island","Lat":"-39.877499","Long":"143.883333"},"KNT":{"Station":"KNT","City":"Kennett","Lat":"36.225862","Long":"-90.03664"},"KNU":{"Station":"KNU","City":"Kanpur","Lat":"26.441444","Long":"80.364864"},"KNX":{"Station":"KNX","City":"Kununurra","Lat":"-15.778055","Long":"128.7075"},"KNZ":{"Station":"KNZ","City":"K\u00e9ni\u00e9ba","Lat":"12.838889","Long":"-11.253055"},"KOA":{"Station":"KOA","City":"Kailua\/Kona","Lat":"19.738766","Long":"-156.04563"},"KOC":{"Station":"KOC","City":"Koumac","Lat":"-20.546388","Long":"164.255556"},"KOE":{"Station":"KOE","City":"Kupang","Lat":"-10.171582","Long":"123.671136"},"KOF":{"Station":"KOF","City":"Komatipoort","Lat":"-25.440832","Long":"31.930278"},"KOH":{"Station":"KOH","City":"Koolatah","Lat":"-15.919721","Long":"142.439167"},"KOI":{"Station":"KOI","City":"Kirkwall","Lat":"58.957778","Long":"-2.904999"},"KOJ":{"Station":"KOJ","City":"Kagoshima","Lat":"31.803397","Long":"130.719408"},"KOK":{"Station":"KOK","City":"Kokkola\/Pietarsaari","Lat":"63.721172","Long":"23.143131"},"KON":{"Station":"KON","City":"Kontum","Lat":"14.355833","Long":"108.016667"},"KOP":{"Station":"KOP","City":"Nakhon Phanom","Lat":"17.383794","Long":"104.643022"},"KOS":{"Station":"KOS","City":"Sihanoukville","Lat":"10.579686","Long":"103.636828"},"KOT":{"Station":"KOT","City":"Kotlik","Lat":"63.030583","Long":"-163.532638"},"KOU":{"Station":"KOU","City":"Koulamoutou","Lat":"-1.18461","Long":"12.441253"},"KOV":{"Station":"KOV","City":"Kokshetau","Lat":"53.329117","Long":"69.594628"},"KOW":{"Station":"KOW","City":"Ganzhou","Lat":"25.853333","Long":"114.778889"},"KOZ":{"Station":"KOZ","City":"Ouzinkie","Lat":"57.942222","Long":"-152.464999"},"KPI":{"Station":"KPI","City":"Kapit","Lat":"2.008333","Long":"112.842778"},"KPN":{"Station":"KPN","City":"Kipnuk","Lat":"59.931649","Long":"-164.028391"},"KPO":{"Station":"KPO","City":"Pohang","Lat":"35.987858","Long":"129.420486"},"KPP":{"Station":"KPP","City":"Kalpowar","Lat":"-14.889443","Long":"144.219167"},"KPT":{"Station":"KPT","City":"Jackpot","Lat":"41.975829","Long":"-114.658015"},"KRA":{"Station":"KRA","City":"Kerang","Lat":"-35.751388","Long":"143.939444"},"KRB":{"Station":"KRB","City":"Karumba","Lat":"-17.455829","Long":"140.830276"},"KRE":{"Station":"KRE","City":"Kirundo","Lat":"-2.544443","Long":"30.094444"},"KRF":{"Station":"KRF","City":"Kramfors-Sollefte\u00e5","Lat":"63.048597","Long":"17.768856"},"KRH":{"Station":"KRH","City":"Redhill","Lat":"51.213612","Long":"-0.13861"},"KRI":{"Station":"KRI","City":"Kikori","Lat":"-7.424721","Long":"144.249722"},"KRK":{"Station":"KRK","City":"Krak\u00f3w","Lat":"50.077731","Long":"19.784836"},"KRL":{"Station":"KRL","City":"Korla","Lat":"41.697778","Long":"86.128889"},"KRM":{"Station":"KRM","City":"Karanambo","Lat":"3.751938","Long":"-59.309722"},"KRN":{"Station":"KRN","City":"Kiruna","Lat":"67.821986","Long":"20.336764"},"KRO":{"Station":"KRO","City":"Kurgan","Lat":"55.475278","Long":"65.415556"},"KRP":{"Station":"KRP","City":"Karup","Lat":"56.297458","Long":"9.124628"},"KRR":{"Station":"KRR","City":"Krasnodar","Lat":"45.034689","Long":"39.170539"},"KRS":{"Station":"KRS","City":"Kristiansand","Lat":"58.204214","Long":"8.085369"},"KRT":{"Station":"KRT","City":"Khartoum","Lat":"15.589497","Long":"32.553161"},"KRW":{"Station":"KRW","City":"Turkmenbashi","Lat":"40.063333","Long":"53.007222"},"KRX":{"Station":"KRX","City":"Kar Kar","Lat":"-4.556943","Long":"145.940278"},"KSA":{"Station":"KSA","City":"Kosrae Island","Lat":"5.356975","Long":"162.958386"},"KSC":{"Station":"KSC","City":"Kosice","Lat":"48.663055","Long":"21.241112"},"KSD":{"Station":"KSD","City":"Karlstad","Lat":"59.444714","Long":"13.337361"},"KSE":{"Station":"KSE","City":"Kasese","Lat":"0.183056","Long":"30.101389"},"KSF":{"Station":"KSF","City":"Kassel","Lat":"51.408394","Long":"9.377631"},"KSH":{"Station":"KSH","City":"Kermanshah","Lat":"34.345853","Long":"47.158128"},"KSI":{"Station":"KSI","City":"Kissidougou","Lat":"9.160556","Long":"-10.124443"},"KSJ":{"Station":"KSJ","City":"Kasos Island","Lat":"35.421358","Long":"26.910047"},"KSK":{"Station":"KSK","City":"Karlskoga","Lat":"59.345867","Long":"14.495922"},"KSL":{"Station":"KSL","City":"Kassala","Lat":"15.387494","Long":"36.328842"},"KSO":{"Station":"KSO","City":"Kastoria","Lat":"40.446294","Long":"21.282186"},"KSQ":{"Station":"KSQ","City":"Karshi-Khanabad","Lat":"38.833636","Long":"65.921464"},"KST":{"Station":"KST","City":"Kosti","Lat":"13.183","Long":"32.733"},"KSU":{"Station":"KSU","City":"Kristiansund","Lat":"63.111781","Long":"7.824522"},"KSV":{"Station":"KSV","City":"Springvale","Lat":"-23.542499","Long":"140.704444"},"KSW":{"Station":"KSW","City":"Kiryat Shmona","Lat":"33.217","Long":"35.6"},"KSZ":{"Station":"KSZ","City":"Kotlas","Lat":"61.235833","Long":"46.6975"},"KTA":{"Station":"KTA","City":"Dampier","Lat":"-20.712221","Long":"116.773333"},"KTD":{"Station":"KTD","City":"Kitadaito","Lat":"25.944722","Long":"131.326944"},"KTE":{"Station":"KTE","City":"Kerteh","Lat":"4.537222","Long":"103.426756"},"KTF":{"Station":"KTF","City":"Takaka","Lat":"-40.813332","Long":"172.775278"},"KTG":{"Station":"KTG","City":"Ketapang","Lat":"-1.816638","Long":"109.963483"},"KTI":{"Station":"KTI","City":"Kratie","Lat":"12.488","Long":"106.055"},"KTL":{"Station":"KTL","City":"Kitale","Lat":"0.971989","Long":"34.958556"},"KTM":{"Station":"KTM","City":"Kathmandu","Lat":"27.696583","Long":"85.3591"},"KTN":{"Station":"KTN","City":"Ketchikan","Lat":"55.354083","Long":"-131.711221"},"KTO":{"Station":"KTO","City":"Kato","Lat":"4.649162","Long":"-59.832221"},"KTQ":{"Station":"KTQ","City":"Kitee","Lat":"62.166111","Long":"30.073611"},"KTR":{"Station":"KTR","City":"Katherine","Lat":"-14.52111","Long":"132.377778"},"KTT":{"Station":"KTT","City":"Kittila","Lat":"67.701022","Long":"24.84685"},"KTU":{"Station":"KTU","City":"Kota","Lat":"25.160219","Long":"75.845631"},"KTW":{"Station":"KTW","City":"Katowice","Lat":"50.474253","Long":"19.080019"},"KUA":{"Station":"KUA","City":"Kuantan","Lat":"3.775389","Long":"103.209056"},"KUC":{"Station":"KUC","City":"Kuria","Lat":"0.218611","Long":"173.442222"},"KUD":{"Station":"KUD","City":"Kudat","Lat":"6.924167","Long":"116.830833"},"KUF":{"Station":"KUF","City":"Samara","Lat":"53.504858","Long":"50.164336"},"KUG":{"Station":"KUG","City":"Kubin Island","Lat":"-10.224999","Long":"142.218333"},"KUH":{"Station":"KUH","City":"Kushiro","Lat":"43.040967","Long":"144.192986"},"KUK":{"Station":"KUK","City":"Kasigluk","Lat":"60.873333","Long":"-162.524305"},"KUL":{"Station":"KUL","City":"Kuala Lumpur","Lat":"2.745578","Long":"101.709917"},"KUM":{"Station":"KUM","City":"Yakushima","Lat":"30.385569","Long":"130.659017"},"KUN":{"Station":"KUN","City":"Kaunas","Lat":"54.963919","Long":"24.084778"},"KUO":{"Station":"KUO","City":"Kuopio","Lat":"63.00715","Long":"27.797756"},"KUR":{"Station":"KUR","City":"Karanomunjan","Lat":"36.022642","Long":"70.769733"},"KUS":{"Station":"KUS","City":"Kulusuk","Lat":"65.573611","Long":"-37.12361"},"KUU":{"Station":"KUU","City":"Kulu","Lat":"31.876706","Long":"77.154367"},"KUV":{"Station":"KUV","City":"Kunsan","Lat":"35.903756","Long":"126.615906"},"KVA":{"Station":"KVA","City":"Kavala","Lat":"40.913306","Long":"24.619223"},"KVD":{"Station":"KVD","City":"Ganja","Lat":"40.737678","Long":"46.317581"},"KVG":{"Station":"KVG","City":"Kavieng","Lat":"-2.579396","Long":"150.807978"},"KVK":{"Station":"KVK","City":"Kirovska","Lat":"67.575556","Long":"33.582778"},"KVX":{"Station":"KVX","City":"Kirov","Lat":"58.503056","Long":"49.347222"},"KWA":{"Station":"KWA","City":"Kwajalein Atoll","Lat":"8.720122","Long":"167.731661"},"KWE":{"Station":"KWE","City":"Guiyang","Lat":"26.538522","Long":"106.800703"},"KWG":{"Station":"KWG","City":"Krivoy Rog","Lat":"48.043333","Long":"33.21"},"KWH":{"Station":"KWH","City":"Khwahan","Lat":"37.883","Long":"70.203"},"KWI":{"Station":"KWI","City":"Kuwait City","Lat":"29.226667","Long":"47.979722"},"KWL":{"Station":"KWL","City":"Guilin","Lat":"25.218106","Long":"110.039197"},"KWM":{"Station":"KWM","City":"Kowanyama","Lat":"-15.485555","Long":"141.751389"},"KWN":{"Station":"KWN","City":"Quinhagak","Lat":"59.755094","Long":"-161.845366"},"KWY":{"Station":"KWY","City":"Kiwayu","Lat":"-1.960555","Long":"41.2975"},"KWZ":{"Station":"KWZ","City":"Kolwezi","Lat":"-10.765885","Long":"25.505714"},"KXK":{"Station":"KXK","City":"Komsomolsk-na-Amur","Lat":"50.409444","Long":"136.934167"},"KYD":{"Station":"KYD","City":"Lanyu","Lat":"22.028842","Long":"121.533642"},"KYE":{"Station":"KYE","City":"Kleyate\/Tripoli","Lat":"34.589333","Long":"36.011322"},"KYF":{"Station":"KYF","City":"Yeelirrie","Lat":"-27.276943","Long":"120.096111"},"KYI":{"Station":"KYI","City":"Yalata Mission","Lat":"-31.470555","Long":"131.824722"},"KYP":{"Station":"KYP","City":"Kyaukpyu","Lat":"19.426447","Long":"93.534836"},"KYS":{"Station":"KYS","City":"Kayes","Lat":"14.481233","Long":"-11.404396"},"KYT":{"Station":"KYT","City":"Kyauktaw","Lat":"21.4","Long":"94.133"},"KYZ":{"Station":"KYZ","City":"Kyzyl","Lat":"51.669444","Long":"94.400556"},"KZC":{"Station":"KZC","City":"Kompong-Chhnang","Lat":"12.255236","Long":"104.563875"},"KZN":{"Station":"KZN","City":"Kazan","Lat":"55.606186","Long":"49.278728"},"KZO":{"Station":"KZO","City":"Kzyl-Orda","Lat":"44.706944","Long":"65.5925"},"KZS":{"Station":"KZS","City":"Kastelorizo","Lat":"36.127777","Long":"29.566656"},"LAC":{"Station":"LAC","City":"Layang-Layang Island","Lat":"7.371667","Long":"113.844167"},"LAD":{"Station":"LAD","City":"Luanda","Lat":"-8.858374","Long":"13.231178"},"LAE":{"Station":"LAE","City":"Lae","Lat":"-6.569827","Long":"146.726242"},"LAF":{"Station":"LAF","City":"Lafayette","Lat":"40.412306","Long":"-86.936888"},"LAH":{"Station":"LAH","City":"Labuha","Lat":"-0.634721","Long":"127.503333"},"LAI":{"Station":"LAI","City":"Lannion","Lat":"48.754892","Long":"-3.474482"},"LAJ":{"Station":"LAJ","City":"Lages","Lat":"-27.782141","Long":"-50.281485"},"LAK":{"Station":"LAK","City":"Aklavik","Lat":"68.223333","Long":"-135.005832"},"LAN":{"Station":"LAN","City":"Lansing","Lat":"42.778639","Long":"-84.586193"},"LAO":{"Station":"LAO","City":"Laoag","Lat":"18.178092","Long":"120.531522"},"LAP":{"Station":"LAP","City":"La Paz","Lat":"24.072694","Long":"-110.362474"},"LAQ":{"Station":"LAQ","City":"Beida","Lat":"32.788673","Long":"21.964333"},"LAR":{"Station":"LAR","City":"Laramie","Lat":"41.312056","Long":"-105.674999"},"LAS":{"Station":"LAS","City":"Las Vegas","Lat":"36.080056","Long":"-115.152249"},"LAT":{"Station":"LAT","City":"La Uribe","Lat":"3.237222","Long":"-74.346943"},"LAU":{"Station":"LAU","City":"Lamu","Lat":"-2.252416","Long":"40.913097"},"LAW":{"Station":"LAW","City":"Lawton","Lat":"34.567714","Long":"-98.416636"},"LAX":{"Station":"LAX","City":"Los Angeles","Lat":"33.942495","Long":"-118.408067"},"LAY":{"Station":"LAY","City":"Ladysmith","Lat":"-28.581666","Long":"29.749722"},"LAZ":{"Station":"LAZ","City":"Bom Jesus da Lapa","Lat":"-13.262085","Long":"-43.408113"},"LBA":{"Station":"LBA","City":"Leeds\/Bradford","Lat":"53.865897","Long":"-1.660568"},"LBB":{"Station":"LBB","City":"Lubbock","Lat":"33.663667","Long":"-101.820555"},"LBD":{"Station":"LBD","City":"Khudzhand","Lat":"40.215394","Long":"69.694708"},"LBE":{"Station":"LBE","City":"Latrobe","Lat":"40.274611","Long":"-79.406749"},"LBF":{"Station":"LBF","City":"North Platte","Lat":"41.126222","Long":"-100.683666"},"LBG":{"Station":"LBG","City":"Paris","Lat":"48.969444","Long":"2.441389"},"LBJ":{"Station":"LBJ","City":"Labuan Bajo","Lat":"-8.486655","Long":"119.88905"},"LBK":{"Station":"LBK","City":"Liboi","Lat":"0.348333","Long":"40.881667"},"LBL":{"Station":"LBL","City":"Liberal","Lat":"37.044222","Long":"-100.95986"},"LBP":{"Station":"LBP","City":"Long Banga","Lat":"3.183333","Long":"115.45"},"LBQ":{"Station":"LBQ","City":"Lambarene","Lat":"-0.704388","Long":"10.245722"},"LBS":{"Station":"LBS","City":"Labasa","Lat":"-16.466748","Long":"179.33986"},"LBU":{"Station":"LBU","City":"Labuan","Lat":"5.300683","Long":"115.250181"},"LBV":{"Station":"LBV","City":"Libreville","Lat":"0.4586","Long":"9.412283"},"LBY":{"Station":"LBY","City":"La Baule-Escoublac","Lat":"47.289444","Long":"-2.346388"},"LBZ":{"Station":"LBZ","City":"Lucapa","Lat":"-8.441388","Long":"20.732778"},"LCA":{"Station":"LCA","City":"Larnaca","Lat":"34.875117","Long":"33.62485"},"LCC":{"Station":"LCC","City":"Lecce","Lat":"40.239228","Long":"18.133325"},"LCD":{"Station":"LCD","City":"Louis Trichardt","Lat":"-23.061916","Long":"29.86475"},"LCE":{"Station":"LCE","City":"La Ceiba","Lat":"15.742481","Long":"-86.853035"},"LCH":{"Station":"LCH","City":"Lake Charles","Lat":"30.126083","Long":"-93.223416"},"LCL":{"Station":"LCL","City":"La Coloma","Lat":"22.336261","Long":"-83.64211"},"LCM":{"Station":"LCM","City":"La Cumbre","Lat":"-31.00611","Long":"-64.531388"},"LCN":{"Station":"LCN","City":"Balcanoona","Lat":"-30.534999","Long":"139.336667"},"LCO":{"Station":"LCO","City":"Lague","Lat":"-2.45","Long":"14.533"},"LCV":{"Station":"LCV","City":"Lucca","Lat":"43.825556","Long":"10.578889"},"LCX":{"Station":"LCX","City":"Longyan","Lat":"25.675833","Long":"116.746389"},"LCY":{"Station":"LCY","City":"London","Lat":"51.505278","Long":"0.055278"},"LDA":{"Station":"LDA","City":"Malda","Lat":"25.01","Long":"88.127222"},"LDB":{"Station":"LDB","City":"Londrina","Lat":"-23.333624","Long":"-51.130071"},"LDC":{"Station":"LDC","City":"Lindeman Island","Lat":"-20.45361","Long":"149.039722"},"LDE":{"Station":"LDE","City":"Tarbes\/Lourdes\/Pyr\u00e9n\u00e9es","Lat":"43.185556","Long":"-0.002777"},"LDH":{"Station":"LDH","City":"Lord Howe Island","Lat":"-31.53861","Long":"159.076389"},"LDI":{"Station":"LDI","City":"Lindi","Lat":"-9.85111","Long":"39.757778"},"LDK":{"Station":"LDK","City":"Lidk\u00f6ping","Lat":"58.465522","Long":"13.174414"},"LDN":{"Station":"LDN","City":"Lamidanda","Lat":"27.2525","Long":"86.6725"},"LDS":{"Station":"LDS","City":"Yichun Shi","Lat":"47.718056","Long":"128.829722"},"LDU":{"Station":"LDU","City":"Lahad Datu","Lat":"5.032247","Long":"118.324036"},"LDV":{"Station":"LDV","City":"Landivisiau","Lat":"48.530278","Long":"-4.151388"},"LDX":{"Station":"LDX","City":"St-Laurent du Maroni","Lat":"5.483056","Long":"-54.034443"},"LEA":{"Station":"LEA","City":"Learmonth","Lat":"-22.235555","Long":"114.088611"},"LEB":{"Station":"LEB","City":"Lebanon","Lat":"43.626111","Long":"-72.304193"},"LED":{"Station":"LED","City":"St. Petersburg","Lat":"59.800292","Long":"30.262503"},"LEF":{"Station":"LEF","City":"Lebakeng","Lat":"-29.890832","Long":"28.655556"},"LEH":{"Station":"LEH","City":"Le Havre","Lat":"49.533889","Long":"0.088056"},"LEI":{"Station":"LEI","City":"Almer\u00eda","Lat":"36.843936","Long":"-2.370096"},"LEJ":{"Station":"LEJ","City":"Leipzig","Lat":"51.432447","Long":"12.241633"},"LEK":{"Station":"LEK","City":"Labe","Lat":"11.326058","Long":"-12.286849"},"LEL":{"Station":"LEL","City":"Lake Evella","Lat":"-12.498888","Long":"135.805833"},"LEN":{"Station":"LEN","City":"Le\u00f3n","Lat":"42.589","Long":"-5.655555"},"LEO":{"Station":"LEO","City":"Lekoni","Lat":"-1.573055","Long":"14.288611"},"LEP":{"Station":"LEP","City":"Leopoldina","Lat":"-21.466088","Long":"-42.727035"},"LEQ":{"Station":"LEQ","City":"St. Just","Lat":"50.102778","Long":"-5.670555"},"LER":{"Station":"LER","City":"Leinster","Lat":"-27.843332","Long":"120.703333"},"LES":{"Station":"LES","City":"Lesobeng","Lat":"-29.783","Long":"28.317"},"LET":{"Station":"LET","City":"Leticia","Lat":"-4.193146","Long":"-69.942688"},"LEU":{"Station":"LEU","City":"Montferrer","Lat":"42.346111","Long":"1.414722"},"LEV":{"Station":"LEV","City":"Bureta","Lat":"-17.71111","Long":"178.758611"},"LEX":{"Station":"LEX","City":"Lexington","Lat":"38.03675","Long":"-84.608638"},"LEZ":{"Station":"LEZ","City":"La Esperanza","Lat":"14.290556","Long":"-88.174999"},"LFM":{"Station":"LFM","City":"Lamerd","Lat":"27.372744","Long":"53.188794"},"LFN":{"Station":"LFN","City":"Louisburg","Lat":"36.023361","Long":"-78.330249"},"LFP":{"Station":"LFP","City":"Lakefield","Lat":"-14.920555","Long":"144.202778"},"LFR":{"Station":"LFR","City":"La Fria","Lat":"8.239167","Long":"-72.271027"},"LFT":{"Station":"LFT","City":"Lafayette","Lat":"30.205028","Long":"-91.987749"},"LFW":{"Station":"LFW","City":"Lom\u00e9","Lat":"6.165611","Long":"1.254511"},"LGA":{"Station":"LGA","City":"New York","Lat":"40.77725","Long":"-73.87261"},"LGB":{"Station":"LGB","City":"Long Beach","Lat":"33.817754","Long":"-118.151732"},"LGC":{"Station":"LGC","City":"Lagrange","Lat":"33.008861","Long":"-85.07261"},"LGD":{"Station":"LGD","City":"La Grande","Lat":"45.290222","Long":"-118.00711"},"LGF":{"Station":"LGF","City":"Yuma Proving Ground","Lat":"32.864585","Long":"-114.392977"},"LGG":{"Station":"LGG","City":"Li\u00e8ge","Lat":"50.636389","Long":"5.442778"},"LGH":{"Station":"LGH","City":"Leigh Creek","Lat":"-30.598332","Long":"138.425833"},"LGI":{"Station":"LGI","City":"Deadman's Cay","Lat":"23.179014","Long":"-75.093596"},"LGK":{"Station":"LGK","City":"Langkawi","Lat":"6.329728","Long":"99.728667"},"LGL":{"Station":"LGL","City":"Long Lellang","Lat":"3.421389","Long":"115.153611"},"LGO":{"Station":"LGO","City":"Langeoog","Lat":"53.742771","Long":"7.498608"},"LGP":{"Station":"LGP","City":"Legazpi","Lat":"13.157064","Long":"123.746247"},"LGQ":{"Station":"LGQ","City":"Nueva Loja","Lat":"0.092439","Long":"-76.869313"},"LGR":{"Station":"LGR","City":"Cochrane","Lat":"-47.243846","Long":"-72.588416"},"LGS":{"Station":"LGS","City":"Malarg\u00fce","Lat":"-35.493596","Long":"-69.574266"},"LGU":{"Station":"LGU","City":"Logan","Lat":"41.791284","Long":"-111.851608"},"LGW":{"Station":"LGW","City":"London","Lat":"51.148056","Long":"-0.190277"},"LGX":{"Station":"LGX","City":"Lugh Ganane","Lat":"3.811944","Long":"42.545833"},"LGY":{"Station":"LGY","City":"Lagunillas","Lat":"10.123056","Long":"-71.238055"},"LHA":{"Station":"LHA","City":"Lahr","Lat":"48.36925","Long":"7.827722"},"LHE":{"Station":"LHE","City":"Lahore","Lat":"31.521564","Long":"74.403594"},"LHG":{"Station":"LHG","City":"Lightning Ridge","Lat":"-29.456666","Long":"147.984444"},"LHK":{"Station":"LHK","City":"Guanghua","Lat":"32.389444","Long":"111.694722"},"LHR":{"Station":"LHR","City":"London","Lat":"51.4775","Long":"-0.461388"},"LHS":{"Station":"LHS","City":"Las Heras","Lat":"-46.533055","Long":"-68.95111"},"LIA":{"Station":"LIA","City":"Liangping","Lat":"30.679444","Long":"107.786111"},"LIE":{"Station":"LIE","City":"Libenge","Lat":"3.633","Long":"18.633"},"LIF":{"Station":"LIF","City":"Lifou","Lat":"-20.774999","Long":"167.239722"},"LIG":{"Station":"LIG","City":"Limoges","Lat":"45.860833","Long":"1.180278"},"LIH":{"Station":"LIH","City":"Lihue","Lat":"21.975983","Long":"-159.338957"},"LIL":{"Station":"LIL","City":"Lille","Lat":"50.563333","Long":"3.086944"},"LIM":{"Station":"LIM","City":"Lima","Lat":"-12.021888","Long":"-77.114318"},"LIN":{"Station":"LIN","City":"Milan","Lat":"45.445103","Long":"9.276739"},"LIO":{"Station":"LIO","City":"Puerto Lim\u00f3n","Lat":"9.958056","Long":"-83.021943"},"LIP":{"Station":"LIP","City":"Lins","Lat":"-21.664038","Long":"-49.730518"},"LIQ":{"Station":"LIQ","City":"Lisala","Lat":"2.170658","Long":"21.496906"},"LIR":{"Station":"LIR","City":"Liberia","Lat":"10.593015","Long":"-85.545544"},"LIS":{"Station":"LIS","City":"Lisbon","Lat":"38.781311","Long":"-9.135918"},"LIT":{"Station":"LIT","City":"Little Rock","Lat":"34.729444","Long":"-92.224777"},"LIV":{"Station":"LIV","City":"Livengood","Lat":"65.470108","Long":"-148.654641"},"LIW":{"Station":"LIW","City":"Loikaw","Lat":"19.691494","Long":"97.214825"},"LIY":{"Station":"LIY","City":"Fort Stewart","Lat":"31.888306","Long":"-81.56162"},"LIZ":{"Station":"LIZ","City":"Limestone","Lat":"46.950428","Long":"-67.88586"},"LJA":{"Station":"LJA","City":"Lodja","Lat":"-3.463055","Long":"23.615556"},"LJG":{"Station":"LJG","City":"Lijiang","Lat":"26.679167","Long":"100.245833"},"LJN":{"Station":"LJN","City":"Angleton\/Lake Jackson","Lat":"29.108639","Long":"-95.462082"},"LJU":{"Station":"LJU","City":"Ljubljana","Lat":"46.223686","Long":"14.457611"},"LKB":{"Station":"LKB","City":"Lakeba Island","Lat":"-18.199166","Long":"-178.816943"},"LKD":{"Station":"LKD","City":"Lakeland Downs","Lat":"-15.840832","Long":"144.848889"},"LKG":{"Station":"LKG","City":"Lokichogio","Lat":"4.204117","Long":"34.348186"},"LKH":{"Station":"LKH","City":"Long Akah","Lat":"3.313056","Long":"114.783056"},"LKN":{"Station":"LKN","City":"Leknes","Lat":"68.1525","Long":"13.609444"},"LKO":{"Station":"LKO","City":"Lucknow","Lat":"26.760594","Long":"80.889339"},"LKY":{"Station":"LKY","City":"Lake Manyara","Lat":"-3.376305","Long":"35.818278"},"LKZ":{"Station":"LKZ","City":"Lakenheath","Lat":"52.409333","Long":"0.561"},"LLA":{"Station":"LLA","City":"Lule\u00e5","Lat":"65.543758","Long":"22.121989"},"LLE":{"Station":"LLE","City":"Malelane","Lat":"-25.473602","Long":"31.565828"},"LLG":{"Station":"LLG","City":"Chillagoe","Lat":"-17.142777","Long":"144.528889"},"LLI":{"Station":"LLI","City":"Lalibela","Lat":"11.975014","Long":"38.979969"},"LLJ":{"Station":"LLJ","City":"Lalmonirhat","Lat":"25.8875","Long":"89.433056"},"LLK":{"Station":"LLK","City":"Lankaran","Lat":"38.746442","Long":"48.818039"},"LLS":{"Station":"LLS","City":"Las Lomitas","Lat":"-24.721366","Long":"-60.548835"},"LLW":{"Station":"LLW","City":"Lilongwe","Lat":"-13.789377","Long":"33.781"},"LLX":{"Station":"LLX","City":"Lyndonville","Lat":"44.569114","Long":"-72.017978"},"LLY":{"Station":"LLY","City":"Mount Holly","Lat":"39.942889","Long":"-74.845749"},"LMA":{"Station":"LMA","City":"Lake Minchumina","Lat":"63.885972","Long":"-152.301832"},"LMB":{"Station":"LMB","City":"Salima","Lat":"-13.75","Long":"34.583"},"LMD":{"Station":"LMD","City":"Los Menucos","Lat":"-40.815832","Long":"-68.07111"},"LME":{"Station":"LME","City":"Le Mans","Lat":"47.948492","Long":"0.201647"},"LML":{"Station":"LML","City":"Lae Island","Lat":"8.921111","Long":"166.264722"},"LMM":{"Station":"LMM","City":"Los Mochis","Lat":"25.685194","Long":"-109.080805"},"LMN":{"Station":"LMN","City":"Limbang","Lat":"4.808303","Long":"115.010439"},"LMO":{"Station":"LMO","City":"Lossiemouth","Lat":"57.705214","Long":"-3.339168"},"LMQ":{"Station":"LMQ","City":"Marsa Brega","Lat":"30.378139","Long":"19.576444"},"LMR":{"Station":"LMR","City":"Lime Acres","Lat":"-28.360068","Long":"23.439069"},"LMT":{"Station":"LMT","City":"Klamath Falls","Lat":"42.156139","Long":"-121.733193"},"LNB":{"Station":"LNB","City":"Lamen Bay","Lat":"-16.584166","Long":"168.159167"},"LNE":{"Station":"LNE","City":"Lonorore","Lat":"-15.865555","Long":"168.171944"},"LNH":{"Station":"LNH","City":"Lake Nash","Lat":"-20.980832","Long":"137.918333"},"LNI":{"Station":"LNI","City":"Lonely","Lat":"70.910745","Long":"-153.242214"},"LNJ":{"Station":"LNJ","City":"Lincang","Lat":"23.738611","Long":"100.024722"},"LNK":{"Station":"LNK","City":"Lincoln","Lat":"40.850889","Long":"-96.75911"},"LNO":{"Station":"LNO","City":"Leonora","Lat":"-28.878055","Long":"121.314722"},"LNS":{"Station":"LNS","City":"Lancaster","Lat":"40.122361","Long":"-76.29436"},"LNV":{"Station":"LNV","City":"Londolovit","Lat":"-3.04361","Long":"152.628889"},"LNX":{"Station":"LNX","City":"Smolensk","Lat":"54.824444","Long":"32.024167"},"LNY":{"Station":"LNY","City":"Lanai City","Lat":"20.785611","Long":"-156.951417"},"LNZ":{"Station":"LNZ","City":"Linz","Lat":"48.233219","Long":"14.187511"},"LOA":{"Station":"LOA","City":"Lorraine","Lat":"-18.992777","Long":"139.905833"},"LOB":{"Station":"LOB","City":"Los Andes","Lat":"-32.813888","Long":"-70.646666"},"LOC":{"Station":"LOC","City":"Lock","Lat":"-33.544166","Long":"135.693333"},"LOD":{"Station":"LOD","City":"Longana","Lat":"-15.306666","Long":"167.967222"},"LOE":{"Station":"LOE","City":"Loei","Lat":"17.439133","Long":"101.722064"},"LOH":{"Station":"LOH","City":"Loja","Lat":"-3.995891","Long":"-79.371924"},"LOK":{"Station":"LOK","City":"Lodwar","Lat":"3.121967","Long":"35.608692"},"LOO":{"Station":"LOO","City":"Laghouat","Lat":"33.764383","Long":"2.928344"},"LOP":{"Station":"LOP","City":"Praya","Lat":"-8.757321","Long":"116.276675"},"LOQ":{"Station":"LOQ","City":"Lobatse","Lat":"-25.197499","Long":"25.713889"},"LOS":{"Station":"LOS","City":"Lagos","Lat":"6.577369","Long":"3.321156"},"LOV":{"Station":"LOV","City":"Monclova","Lat":"26.955733","Long":"-101.470135"},"LOW":{"Station":"LOW","City":"Louisa","Lat":"38.009833","Long":"-77.970138"},"LOY":{"Station":"LOY","City":"Loyangalani","Lat":"2.75","Long":"36.717"},"LPA":{"Station":"LPA","City":"Las Palmas","Lat":"27.931886","Long":"-15.386585"},"LPB":{"Station":"LPB","City":"La Paz","Lat":"-16.513338","Long":"-68.192255"},"LPD":{"Station":"LPD","City":"La Pedrera","Lat":"-1.32861","Long":"-69.579721"},"LPG":{"Station":"LPG","City":"La Plata","Lat":"-34.972221","Long":"-57.894693"},"LPI":{"Station":"LPI","City":"Link\u00f6ping","Lat":"58.40615","Long":"15.680508"},"LPJ":{"Station":"LPJ","City":"Pijiguaos","Lat":"6.57725","Long":"-66.816888"},"LPK":{"Station":"LPK","City":"Lipetsk","Lat":"52.702778","Long":"39.537778"},"LPL":{"Station":"LPL","City":"Liverpool","Lat":"53.333611","Long":"-2.849721"},"LPM":{"Station":"LPM","City":"Lamap","Lat":"-16.454","Long":"167.823"},"LPO":{"Station":"LPO","City":"La Porte","Lat":"41.572472","Long":"-86.734526"},"LPQ":{"Station":"LPQ","City":"Luang Prabang","Lat":"19.897914","Long":"102.160764"},"LPS":{"Station":"LPS","City":"Lopez","Lat":"48.483912","Long":"-122.93768"},"LPT":{"Station":"LPT","City":"Lampang","Lat":"18.270933","Long":"99.504167"},"LPX":{"Station":"LPX","City":"Liepaya","Lat":"56.5175","Long":"21.096944"},"LPY":{"Station":"LPY","City":"Le Puy","Lat":"45.079656","Long":"3.763442"},"LQM":{"Station":"LQM","City":"Puerto Leguizamo","Lat":"-0.182277","Long":"-74.770777"},"LQN":{"Station":"LQN","City":"Qala I Naw","Lat":"34.9875","Long":"63.118333"},"LRA":{"Station":"LRA","City":"Larisa","Lat":"39.650253","Long":"22.4655"},"LRB":{"Station":"LRB","City":"Leribe","Lat":"-28.855546","Long":"28.052778"},"LRC":{"Station":"LRC","City":"Laarbruch","Lat":"51.602222","Long":"6.141528"},"LRD":{"Station":"LRD","City":"Laredo","Lat":"27.544194","Long":"-99.461582"},"LRH":{"Station":"LRH","City":"La Rochelle","Lat":"46.179211","Long":"-1.195235"},"LRL":{"Station":"LRL","City":"Niamtougou","Lat":"9.767333","Long":"1.09125"},"LRM":{"Station":"LRM","City":"La Romana","Lat":"18.450711","Long":"-68.911832"},"LRQ":{"Station":"LRQ","City":"Laurie River","Lat":"56.248611","Long":"-101.304166"},"LRR":{"Station":"LRR","City":"Lar","Lat":"27.674725","Long":"54.383278"},"LRS":{"Station":"LRS","City":"Leros","Lat":"37.184903","Long":"26.800289"},"LRT":{"Station":"LRT","City":"Lorient","Lat":"47.760533","Long":"-3.439952"},"LRU":{"Station":"LRU","City":"Las Cruces","Lat":"32.289417","Long":"-106.921971"},"LRV":{"Station":"LRV","City":"El Gran Roque","Lat":"11.946","Long":"-66.669"},"LSA":{"Station":"LSA","City":"Losuia","Lat":"-8.505832","Long":"151.080833"},"LSC":{"Station":"LSC","City":"La Serena","Lat":"-29.916232","Long":"-71.199521"},"LSE":{"Station":"LSE","City":"La Crosse","Lat":"43.879278","Long":"-91.256638"},"LSF":{"Station":"LSF","City":"Fort Benning","Lat":"32.33179","Long":"-84.987158"},"LSH":{"Station":"LSH","City":"Lashio","Lat":"22.977881","Long":"97.752183"},"LSI":{"Station":"LSI","City":"Sumburgh","Lat":"59.878889","Long":"-1.295555"},"LSM":{"Station":"LSM","City":"Long Semado","Lat":"4.216389","Long":"115.582778"},"LSO":{"Station":"LSO","City":"Les Sables d'Olonne","Lat":"46.476944","Long":"-1.722777"},"LSP":{"Station":"LSP","City":"Las Piedras","Lat":"11.780775","Long":"-70.151496"},"LSQ":{"Station":"LSQ","City":"Los \u00c1ngeles","Lat":"-37.40173","Long":"-72.425443"},"LSS":{"Station":"LSS","City":"Les Saintes","Lat":"15.864444","Long":"-61.580555"},"LST":{"Station":"LST","City":"Launceston","Lat":"-41.545277","Long":"147.214167"},"LSU":{"Station":"LSU","City":"Long Sukang","Lat":"4.552222","Long":"115.494167"},"LSW":{"Station":"LSW","City":"Lhoksumawe","Lat":"5.226681","Long":"96.950342"},"LSX":{"Station":"LSX","City":"Lhok Sukon","Lat":"5.069506","Long":"97.259192"},"LSY":{"Station":"LSY","City":"Lismore","Lat":"-28.830277","Long":"153.26"},"LSZ":{"Station":"LSZ","City":"Mali Losinj","Lat":"44.566944","Long":"14.393889"},"LTA":{"Station":"LTA","City":"Tzaneen","Lat":"-23.824416","Long":"30.329306"},"LTC":{"Station":"LTC","City":"Lai","Lat":"9.4","Long":"16.3"},"LTD":{"Station":"LTD","City":"Ghadames","Lat":"30.151695","Long":"9.715305"},"LTI":{"Station":"LTI","City":"Altai","Lat":"46.376111","Long":"96.221111"},"LTK":{"Station":"LTK","City":"Latakia","Lat":"35.401094","Long":"35.948681"},"LTL":{"Station":"LTL","City":"Lastourville","Lat":"-0.826666","Long":"12.748611"},"LTM":{"Station":"LTM","City":"Lethem","Lat":"3.372761","Long":"-59.789438"},"LTN":{"Station":"LTN","City":"London","Lat":"51.874722","Long":"-0.368332"},"LTO":{"Station":"LTO","City":"Loreto","Lat":"25.989194","Long":"-111.34836"},"LTP":{"Station":"LTP","City":"Lyndhurst","Lat":"-19.194721","Long":"144.370833"},"LTQ":{"Station":"LTQ","City":"Le Touquet-Paris-Plage","Lat":"50.514847","Long":"1.627578"},"LTR":{"Station":"LTR","City":"Letterkenny","Lat":"54.9514","Long":"-7.671899"},"LTT":{"Station":"LTT","City":"St-Tropez","Lat":"43.206389","Long":"6.4825"},"LTV":{"Station":"LTV","City":"Lotus Vale Station","Lat":"-17.048055","Long":"141.376389"},"LTW":{"Station":"LTW","City":"Leonardtown","Lat":"38.315361","Long":"-76.55011"},"LTX":{"Station":"LTX","City":"Latacunga","Lat":"-0.906832","Long":"-78.615755"},"LUC":{"Station":"LUC","City":"Laucala Island","Lat":"-16.748055","Long":"-179.666943"},"LUE":{"Station":"LUE","City":"Lucenec","Lat":"48.339444","Long":"19.735833"},"LUH":{"Station":"LUH","City":"Ludhiana","Lat":"30.854681","Long":"75.952592"},"LUJ":{"Station":"LUJ","City":"Lusikisiki","Lat":"-31.367","Long":"29.583"},"LUN":{"Station":"LUN","City":"Lusaka","Lat":"-15.330816","Long":"28.452628"},"LUO":{"Station":"LUO","City":"Luena","Lat":"-11.768085","Long":"19.897672"},"LUQ":{"Station":"LUQ","City":"San Luis","Lat":"-33.273191","Long":"-66.356421"},"LUS":{"Station":"LUS","City":"Lusanga","Lat":"-4.8","Long":"18.717"},"LUT":{"Station":"LUT","City":"Laura Station","Lat":"-15.182777","Long":"144.345556"},"LUU":{"Station":"LUU","City":"Laura","Lat":"-15.562221","Long":"144.452778"},"LUV":{"Station":"LUV","City":"Langgur","Lat":"-5.661618","Long":"132.731431"},"LUW":{"Station":"LUW","City":"Luwuk","Lat":"-1.038918","Long":"122.771906"},"LUX":{"Station":"LUX","City":"Luxembourg","Lat":"49.623333","Long":"6.204444"},"LUZ":{"Station":"LUZ","City":"Lublin","Lat":"51.231944","Long":"22.690278"},"LVA":{"Station":"LVA","City":"Laval","Lat":"48.03225","Long":"-0.74278"},"LVB":{"Station":"LVB","City":"Santana do Livramento","Lat":"-30.835555","Long":"-55.625832"},"LVD":{"Station":"LVD","City":"Lime Village","Lat":"61.359131","Long":"-155.440385"},"LVI":{"Station":"LVI","City":"Livingstone","Lat":"-17.821755","Long":"25.822692"},"LVO":{"Station":"LVO","City":"Laverton","Lat":"-28.61361","Long":"122.423889"},"LVP":{"Station":"LVP","City":"Lavan","Lat":"26.8103","Long":"53.356289"},"LWB":{"Station":"LWB","City":"Lewisburg","Lat":"37.858306","Long":"-80.399471"},"LWE":{"Station":"LWE","City":"Lewoleba","Lat":"-8.35","Long":"123.433"},"LWH":{"Station":"LWH","City":"Lawn Hill","Lat":"-18.564999","Long":"138.638889"},"LWK":{"Station":"LWK","City":"Lerwick","Lat":"60.191944","Long":"-1.243332"},"LWO":{"Station":"LWO","City":"Lvov","Lat":"49.8125","Long":"23.956111"},"LWR":{"Station":"LWR","City":"Leeuwarden","Lat":"53.228611","Long":"5.760556"},"LWS":{"Station":"LWS","City":"Lewiston","Lat":"46.3745","Long":"-117.015388"},"LWT":{"Station":"LWT","City":"Lewistown","Lat":"47.04925","Long":"-109.466693"},"LWY":{"Station":"LWY","City":"Lawas","Lat":"4.849167","Long":"115.402778"},"LXG":{"Station":"LXG","City":"Luang Namtha","Lat":"20.960556","Long":"101.4025"},"LXR":{"Station":"LXR","City":"Luxor","Lat":"25.671028","Long":"32.706583"},"LXS":{"Station":"LXS","City":"Lemnos","Lat":"39.917072","Long":"25.236308"},"LXU":{"Station":"LXU","City":"Lukulu","Lat":"-14.375832","Long":"23.248611"},"LYA":{"Station":"LYA","City":"Luoyang","Lat":"34.741111","Long":"112.388333"},"LYB":{"Station":"LYB","City":"Little Cayman","Lat":"19.660278","Long":"-80.090277"},"LYC":{"Station":"LYC","City":"Lycksele","Lat":"64.548322","Long":"18.716219"},"LYE":{"Station":"LYE","City":"Lyneham","Lat":"51.505144","Long":"-1.993427"},"LYG":{"Station":"LYG","City":"Lianyungang","Lat":"34.571667","Long":"118.873611"},"LYH":{"Station":"LYH","City":"Lynchburg","Lat":"37.325389","Long":"-79.201221"},"LYI":{"Station":"LYI","City":"Linyi","Lat":"35.046111","Long":"118.411667"},"LYN":{"Station":"LYN","City":"Lyon","Lat":"45.729519","Long":"4.938844"},"LYP":{"Station":"LYP","City":"Faisalabad","Lat":"31.365014","Long":"72.994842"},"LYR":{"Station":"LYR","City":"Longyearbyen","Lat":"78.246111","Long":"15.465556"},"LYS":{"Station":"LYS","City":"Lyon","Lat":"45.725556","Long":"5.081111"},"LYT":{"Station":"LYT","City":"Lady Elliot Island","Lat":"-24.113332","Long":"152.715278"},"LYU":{"Station":"LYU","City":"Ely","Lat":"47.824013","Long":"-91.82932"},"LYX":{"Station":"LYX","City":"Lydd","Lat":"50.956111","Long":"0.939167"},"LZA":{"Station":"LZA","City":"Luiza","Lat":"-7.183","Long":"22.4"},"LZC":{"Station":"LZC","City":"L\u00e1zaro C\u00e1rdenas","Lat":"18.001731","Long":"-102.220524"},"LZH":{"Station":"LZH","City":"Liuzhou","Lat":"24.2075","Long":"109.391111"},"LZI":{"Station":"LZI","City":"Luozi","Lat":"-4.95","Long":"14.133"},"LZN":{"Station":"LZN","City":"Nangan","Lat":"26.159778","Long":"119.958472"},"LZR":{"Station":"LZR","City":"Lizard Island","Lat":"-14.666666","Long":"145.45"},"LZY":{"Station":"LZY","City":"Nyingchi","Lat":"29.303611","Long":"94.335"},"MAA":{"Station":"MAA","City":"Chennai\/Madras","Lat":"12.994414","Long":"80.180517"},"MAB":{"Station":"MAB","City":"Marab\u00e1","Lat":"-5.368588","Long":"-49.138024"},"MAD":{"Station":"MAD","City":"Madrid","Lat":"40.493556","Long":"-3.566763"},"MAF":{"Station":"MAF","City":"Midland","Lat":"31.942528","Long":"-102.201916"},"MAG":{"Station":"MAG","City":"Madang","Lat":"-5.207082","Long":"145.7887"},"MAH":{"Station":"MAH","City":"Mah\u00f3n","Lat":"39.862597","Long":"4.218647"},"MAJ":{"Station":"MAJ","City":"Majuro Atoll","Lat":"7.06498","Long":"171.272031"},"MAK":{"Station":"MAK","City":"Malakal","Lat":"9.558969","Long":"31.652242"},"MAM":{"Station":"MAM","City":"Matamoros","Lat":"25.769894","Long":"-97.52531"},"MAN":{"Station":"MAN","City":"Manchester","Lat":"53.353744","Long":"-2.274949"},"MAQ":{"Station":"MAQ","City":"Mae Sot","Lat":"16.699856","Long":"98.545056"},"MAR":{"Station":"MAR","City":"Maracaibo","Lat":"10.558208","Long":"-71.727855"},"MAS":{"Station":"MAS","City":"Lorengau","Lat":"-2.061888","Long":"147.42415"},"MAT":{"Station":"MAT","City":"Matadi","Lat":"-5.8","Long":"13.433"},"MAU":{"Station":"MAU","City":"Maupiti","Lat":"-16.426388","Long":"-152.243332"},"MAV":{"Station":"MAV","City":"Taora Island","Lat":"8.708333","Long":"171.233333"},"MAX":{"Station":"MAX","City":"Matam","Lat":"15.593611","Long":"-13.322777"},"MAY":{"Station":"MAY","City":"Mangrove Cay","Lat":"24.287664","Long":"-77.684613"},"MAZ":{"Station":"MAZ","City":"Mayag\u00fcez","Lat":"18.255694","Long":"-67.148471"},"MBA":{"Station":"MBA","City":"Mombasa","Lat":"-4.034832","Long":"39.59425"},"MBB":{"Station":"MBB","City":"Marble Bar","Lat":"-21.162777","Long":"119.836111"},"MBC":{"Station":"MBC","City":"M'Bigou","Lat":"-1.883","Long":"11.933"},"MBD":{"Station":"MBD","City":"Mmabatho","Lat":"-25.807446","Long":"25.544469"},"MBE":{"Station":"MBE","City":"Monbetsu","Lat":"44.303914","Long":"143.404028"},"MBH":{"Station":"MBH","City":"Maryborough","Lat":"-25.513332","Long":"152.715"},"MBJ":{"Station":"MBJ","City":"Montego Bay","Lat":"18.503717","Long":"-77.913357"},"MBK":{"Station":"MBK","City":"Matup\u00e1","Lat":"-10.176943","Long":"-54.954721"},"MBL":{"Station":"MBL","City":"Manistee","Lat":"44.272472","Long":"-86.246888"},"MBM":{"Station":"MBM","City":"Stow","Lat":"42.460639","Long":"-71.517777"},"MBQ":{"Station":"MBQ","City":"Mbarara","Lat":"-0.555277","Long":"30.599444"},"MBS":{"Station":"MBS","City":"Saginaw","Lat":"43.532917","Long":"-84.079638"},"MBU":{"Station":"MBU","City":"Mbambanakira","Lat":"-9.747499","Long":"159.839444"},"MBW":{"Station":"MBW","City":"Moorabbin","Lat":"-37.975832","Long":"145.102222"},"MBZ":{"Station":"MBZ","City":"Maues","Lat":"-3.372166","Long":"-57.724807"},"MCG":{"Station":"MCG","City":"McGrath","Lat":"62.952783","Long":"-155.607043"},"MCH":{"Station":"MCH","City":"Machala","Lat":"-3.268902","Long":"-79.961571"},"MCI":{"Station":"MCI","City":"Kansas City","Lat":"39.297605","Long":"-94.713905"},"MCJ":{"Station":"MCJ","City":"Maicao","Lat":"11.232528","Long":"-72.490138"},"MCK":{"Station":"MCK","City":"Mc Cook","Lat":"40.206278","Long":"-100.592082"},"MCL":{"Station":"MCL","City":"McKinley Park","Lat":"63.732598","Long":"-148.910637"},"MCN":{"Station":"MCN","City":"Macon","Lat":"32.69285","Long":"-83.64921"},"MCO":{"Station":"MCO","City":"Orlando","Lat":"28.429394","Long":"-81.308992"},"MCP":{"Station":"MCP","City":"Macap\u00e1","Lat":"0.050664","Long":"-51.072177"},"MCS":{"Station":"MCS","City":"Montes Caseros","Lat":"-30.271921","Long":"-57.64023"},"MCT":{"Station":"MCT","City":"Muscat","Lat":"23.593278","Long":"58.284444"},"MCU":{"Station":"MCU","City":"Montlu\u00e7on","Lat":"46.353611","Long":"2.572222"},"MCV":{"Station":"MCV","City":"McArthur River","Lat":"-16.442499","Long":"136.083611"},"MCW":{"Station":"MCW","City":"Mason City","Lat":"43.157806","Long":"-93.331249"},"MCY":{"Station":"MCY","City":"Maroochydore","Lat":"-26.603332","Long":"153.091111"},"MDC":{"Station":"MDC","City":"Manado","Lat":"1.549447","Long":"124.925878"},"MDE":{"Station":"MDE","City":"Rio Negro","Lat":"6.164444","Long":"-75.423055"},"MDF":{"Station":"MDF","City":"Medford","Lat":"45.101318","Long":"-90.300173"},"MDG":{"Station":"MDG","City":"Mudanjiang","Lat":"44.524072","Long":"129.568972"},"MDH":{"Station":"MDH","City":"Carbondale\/Murphysboro","Lat":"37.778083","Long":"-89.252027"},"MDI":{"Station":"MDI","City":"Makurdi","Lat":"7.703883","Long":"8.613939"},"MDK":{"Station":"MDK","City":"Mbandaka","Lat":"0.0226","Long":"18.288744"},"MDL":{"Station":"MDL","City":"Mandalay","Lat":"21.702156","Long":"95.977928"},"MDN":{"Station":"MDN","City":"Madison","Lat":"38.759917","Long":"-85.464693"},"MDP":{"Station":"MDP","City":"Mindiptana","Lat":"-5.867","Long":"140.7"},"MDT":{"Station":"MDT","City":"Harrisburg","Lat":"40.193191","Long":"-76.76262"},"MDU":{"Station":"MDU","City":"Mendi","Lat":"-6.147738","Long":"143.657164"},"MDW":{"Station":"MDW","City":"Chicago","Lat":"41.785972","Long":"-87.752416"},"MDX":{"Station":"MDX","City":"Mercedes","Lat":"-29.223054","Long":"-58.088054"},"MDZ":{"Station":"MDZ","City":"Mendoza","Lat":"-32.831716","Long":"-68.792855"},"MEA":{"Station":"MEA","City":"Maca\u00e9","Lat":"-22.34303","Long":"-41.766032"},"MEC":{"Station":"MEC","City":"Manta","Lat":"-0.946077","Long":"-80.678807"},"MED":{"Station":"MED","City":"Medina","Lat":"24.553422","Long":"39.705061"},"MEE":{"Station":"MEE","City":"Mar\u00e9","Lat":"-21.481677","Long":"168.037508"},"MEG":{"Station":"MEG","City":"Malange","Lat":"-9.525085","Long":"16.312406"},"MEI":{"Station":"MEI","City":"Meridian","Lat":"32.332611","Long":"-88.75186"},"MEK":{"Station":"MEK","City":"Meknes\/Bassatine","Lat":"33.879067","Long":"-5.515124"},"MEL":{"Station":"MEL","City":"Melbourne","Lat":"-37.673332","Long":"144.843333"},"MEM":{"Station":"MEM","City":"Memphis","Lat":"35.042417","Long":"-89.976666"},"MEN":{"Station":"MEN","City":"Mende","Lat":"44.504081","Long":"3.527633"},"MEO":{"Station":"MEO","City":"Manteo","Lat":"35.918983","Long":"-75.695535"},"MEP":{"Station":"MEP","City":"Mersing","Lat":"2.383333","Long":"103.865"},"MES":{"Station":"MES","City":"Medan","Lat":"3.558056","Long":"98.671722"},"MET":{"Station":"MET","City":"Moreton","Lat":"-12.444166","Long":"142.638333"},"MEU":{"Station":"MEU","City":"Almeirim","Lat":"-0.889838","Long":"-52.602249"},"MEW":{"Station":"MEW","City":"Mweka","Lat":"-4.85","Long":"21.55"},"MEX":{"Station":"MEX","City":"M\u00e9xico City","Lat":"19.436303","Long":"-99.072096"},"MEY":{"Station":"MEY","City":"Meghauli","Lat":"27.577222","Long":"84.228889"},"MFA":{"Station":"MFA","City":"Mafia Island","Lat":"-7.917499","Long":"39.668333"},"MFC":{"Station":"MFC","City":"Mafeteng","Lat":"-29.800832","Long":"27.243333"},"MFE":{"Station":"MFE","City":"Mc Allen","Lat":"26.175833","Long":"-98.23861"},"MFF":{"Station":"MFF","City":"Moanda","Lat":"-1.537777","Long":"13.269444"},"MFG":{"Station":"MFG","City":"Muzaffarabad","Lat":"34.339022","Long":"73.508639"},"MFH":{"Station":"MFH","City":"Mesquite","Lat":"36.833139","Long":"-114.055888"},"MFJ":{"Station":"MFJ","City":"Moala","Lat":"-18.566666","Long":"179.951111"},"MFK":{"Station":"MFK","City":"Beigan","Lat":"26.224153","Long":"120.00275"},"MFM":{"Station":"MFM","City":"Macau","Lat":"22.149556","Long":"113.591558"},"MFN":{"Station":"MFN","City":"Milford Sound","Lat":"-44.673332","Long":"167.923333"},"MFO":{"Station":"MFO","City":"Manguna","Lat":"-5.578055","Long":"151.791944"},"MFP":{"Station":"MFP","City":"Manners Creek","Lat":"-22.097777","Long":"137.985278"},"MFQ":{"Station":"MFQ","City":"Maradi","Lat":"13.502531","Long":"7.126753"},"MFR":{"Station":"MFR","City":"Medford","Lat":"42.374222","Long":"-122.873499"},"MFS":{"Station":"MFS","City":"Miraflores","Lat":"1.35","Long":"-71.944443"},"MFU":{"Station":"MFU","City":"Mfuwe","Lat":"-13.258877","Long":"31.936581"},"MFX":{"Station":"MFX","City":"Meribel","Lat":"45.406944","Long":"6.580556"},"MGA":{"Station":"MGA","City":"Managua","Lat":"12.141494","Long":"-86.168177"},"MGB":{"Station":"MGB","City":"Mount Gambier","Lat":"-37.745555","Long":"140.785278"},"MGF":{"Station":"MGF","City":"Maring\u00e1","Lat":"-23.476391","Long":"-52.016405"},"MGH":{"Station":"MGH","City":"Margate","Lat":"-30.857407","Long":"30.343019"},"MGI":{"Station":"MGI","City":"Matagorda Island","Lat":"28.116958","Long":"-96.800262"},"MGK":{"Station":"MGK","City":"Mong Tong","Lat":"20.296667","Long":"98.898889"},"MGM":{"Station":"MGM","City":"Montgomery","Lat":"32.300639","Long":"-86.393971"},"MGQ":{"Station":"MGQ","City":"Mogadishu","Lat":"2.014444","Long":"45.304722"},"MGS":{"Station":"MGS","City":"Mangaia Island","Lat":"-21.895555","Long":"-157.905277"},"MGT":{"Station":"MGT","City":"Milingimbi","Lat":"-12.094443","Long":"134.893611"},"MGU":{"Station":"MGU","City":"Manaung","Lat":"18.845825","Long":"93.688889"},"MGV":{"Station":"MGV","City":"Margaret River","Lat":"-33.930555","Long":"115.1"},"MGW":{"Station":"MGW","City":"Morgantown","Lat":"39.643595","Long":"-79.917546"},"MGZ":{"Station":"MGZ","City":"Myeik","Lat":"12.439797","Long":"98.621478"},"MHA":{"Station":"MHA","City":"Mahdia","Lat":"5.277495","Long":"-59.151111"},"MHC":{"Station":"MHC","City":"Dalcahue","Lat":"-42.340388","Long":"-73.715693"},"MHD":{"Station":"MHD","City":"Mashhad","Lat":"36.235195","Long":"59.640972"},"MHG":{"Station":"MHG","City":"Mannheim","Lat":"49.472706","Long":"8.514264"},"MHH":{"Station":"MHH","City":"Marsh Harbour","Lat":"26.511406","Long":"-77.083471"},"MHK":{"Station":"MHK","City":"Manhattan","Lat":"39.141234","Long":"-96.671796"},"MHQ":{"Station":"MHQ","City":"Mariehamn","Lat":"60.122203","Long":"19.898156"},"MHR":{"Station":"MHR","City":"Sacramento","Lat":"38.555306","Long":"-121.297193"},"MHT":{"Station":"MHT","City":"Manchester","Lat":"42.932806","Long":"-71.435749"},"MHU":{"Station":"MHU","City":"Mount Hotham","Lat":"-37.047499","Long":"147.334167"},"MHV":{"Station":"MHV","City":"Mojave","Lat":"35.058639","Long":"-118.150555"},"MHX":{"Station":"MHX","City":"Manihiki Island","Lat":"-10.376666","Long":"-161.001943"},"MHZ":{"Station":"MHZ","City":"Mildenhall","Lat":"52.361933","Long":"0.486406"},"MIA":{"Station":"MIA","City":"Miami","Lat":"25.795361","Long":"-80.29011"},"MID":{"Station":"MID","City":"M\u00e9rida","Lat":"20.936981","Long":"-89.657671"},"MIE":{"Station":"MIE","City":"Muncie","Lat":"40.242472","Long":"-85.395749"},"MIF":{"Station":"MIF","City":"Monahans","Lat":"31.582472","Long":"-102.909027"},"MIG":{"Station":"MIG","City":"Mianyang","Lat":"31.428056","Long":"104.741111"},"MIH":{"Station":"MIH","City":"Mitchell Plateau","Lat":"-14.791388","Long":"125.824444"},"MII":{"Station":"MII","City":"Mar\u00edlia","Lat":"-22.196891","Long":"-49.926399"},"MIJ":{"Station":"MIJ","City":"Mili Island","Lat":"6.083333","Long":"171.733333"},"MIK":{"Station":"MIK","City":"Mikkeli","Lat":"61.6866","Long":"27.201794"},"MIM":{"Station":"MIM","City":"Merimbula","Lat":"-36.90861","Long":"149.901389"},"MIN":{"Station":"MIN","City":"Minnipa","Lat":"-32.839166","Long":"135.145"},"MIP":{"Station":"MIP","City":"Mitzpeh Ramon","Lat":"30.776061","Long":"34.666769"},"MIQ":{"Station":"MIQ","City":"Omaha","Lat":"41.195986","Long":"-96.112264"},"MIR":{"Station":"MIR","City":"Monastir","Lat":"35.758056","Long":"10.754722"},"MIS":{"Station":"MIS","City":"Misima Island","Lat":"-10.689166","Long":"152.838333"},"MIU":{"Station":"MIU","City":"Maiduguri","Lat":"11.855347","Long":"13.08095"},"MIY":{"Station":"MIY","City":"Mittiebah","Lat":"-18.807499","Long":"137.082222"},"MIZ":{"Station":"MIZ","City":"Mainoru","Lat":"-14.05361","Long":"134.093611"},"MJA":{"Station":"MJA","City":"Manja","Lat":"-21.425832","Long":"44.315278"},"MJB":{"Station":"MJB","City":"Mejit Atoll","Lat":"10.283333","Long":"170.883333"},"MJC":{"Station":"MJC","City":"Man","Lat":"7.272069","Long":"-7.587363"},"MJG":{"Station":"MJG","City":"Mayajigua","Lat":"22.230833","Long":"-79.062221"},"MJK":{"Station":"MJK","City":"Monkey Mia","Lat":"-25.893888","Long":"113.577222"},"MJL":{"Station":"MJL","City":"Mouila","Lat":"-1.845141","Long":"11.056656"},"MJM":{"Station":"MJM","City":"Mbuji Mayi","Lat":"-6.121235","Long":"23.569008"},"MJN":{"Station":"MJN","City":"Mahajanga","Lat":"-15.667143","Long":"46.351828"},"MJP":{"Station":"MJP","City":"Manjimup","Lat":"-34.265277","Long":"116.140278"},"MJR":{"Station":"MJR","City":"Miramar","Lat":"-38.227054","Long":"-57.869719"},"MJT":{"Station":"MJT","City":"Mytilene","Lat":"39.056667","Long":"26.598333"},"MJV":{"Station":"MJV","City":"Murcia","Lat":"37.774972","Long":"-0.812388"},"MJZ":{"Station":"MJZ","City":"Mirny","Lat":"62.534689","Long":"114.038928"},"MKB":{"Station":"MKB","City":"Mekambo","Lat":"0.976","Long":"13.968"},"MKC":{"Station":"MKC","City":"Kansas City","Lat":"39.122944","Long":"-94.592832"},"MKE":{"Station":"MKE","City":"Milwaukee","Lat":"42.946931","Long":"-87.897067"},"MKG":{"Station":"MKG","City":"Muskegon","Lat":"43.167672","Long":"-86.235438"},"MKH":{"Station":"MKH","City":"Mokhotlong","Lat":"-29.280555","Long":"29.070556"},"MKI":{"Station":"MKI","City":"Obo","Lat":"5.332778","Long":"25.931389"},"MKK":{"Station":"MKK","City":"Kaunakakai","Lat":"21.152886","Long":"-157.096255"},"MKL":{"Station":"MKL","City":"Jackson","Lat":"35.599889","Long":"-88.91561"},"MKM":{"Station":"MKM","City":"Mukah","Lat":"2.906944","Long":"112.075"},"MKP":{"Station":"MKP","City":"Makemo","Lat":"-16.583918","Long":"-143.658368"},"MKQ":{"Station":"MKQ","City":"Merauke","Lat":"-8.520293","Long":"140.418453"},"MKR":{"Station":"MKR","City":"Meekatharra","Lat":"-26.611666","Long":"118.547778"},"MKU":{"Station":"MKU","City":"Makokou","Lat":"0.579211","Long":"12.890908"},"MKW":{"Station":"MKW","City":"Manokwari","Lat":"-0.891832","Long":"134.049183"},"MKY":{"Station":"MKY","City":"Mackay","Lat":"-21.171666","Long":"149.179722"},"MKZ":{"Station":"MKZ","City":"Batu Berendam","Lat":"2.263361","Long":"102.251553"},"MLA":{"Station":"MLA","City":"Gudja\/Luqa","Lat":"35.857497","Long":"14.4775"},"MLB":{"Station":"MLB","City":"Melbourne","Lat":"28.102753","Long":"-80.645256"},"MLE":{"Station":"MLE","City":"Mal\u00e9","Lat":"4.191667","Long":"73.529167"},"MLG":{"Station":"MLG","City":"Malang","Lat":"-7.926555","Long":"112.714514"},"MLH":{"Station":"MLH","City":"Basel\/Mulhouse\/Freiburg","Lat":"47.59","Long":"7.529167"},"MLI":{"Station":"MLI","City":"Moline","Lat":"41.448286","Long":"-90.507519"},"MLK":{"Station":"MLK","City":"Malta","Lat":"48.366944","Long":"-107.919332"},"MLM":{"Station":"MLM","City":"Morelia","Lat":"19.849944","Long":"-101.025499"},"MLO":{"Station":"MLO","City":"Milos","Lat":"36.696111","Long":"24.4775"},"MLP":{"Station":"MLP","City":"Malabang","Lat":"7.617222","Long":"124.058611"},"MLR":{"Station":"MLR","City":"Millicent","Lat":"-37.58361","Long":"140.366111"},"MLS":{"Station":"MLS","City":"Miles City","Lat":"46.427972","Long":"-105.886249"},"MLU":{"Station":"MLU","City":"Monroe","Lat":"32.510861","Long":"-92.037666"},"MLV":{"Station":"MLV","City":"Merluna","Lat":"-13.067","Long":"142.45"},"MLW":{"Station":"MLW","City":"Monrovia","Lat":"6.289061","Long":"-10.758721"},"MLZ":{"Station":"MLZ","City":"Melo","Lat":"-32.337882","Long":"-54.216677"},"MMB":{"Station":"MMB","City":"Memanbetsu","Lat":"43.880606","Long":"144.164053"},"MMC":{"Station":"MMC","City":"Ciudad Mante","Lat":"22.740367","Long":"-99.018227"},"MMD":{"Station":"MMD","City":"Minami Daito Jima","Lat":"25.846533","Long":"131.263494"},"MME":{"Station":"MME","City":"Teesside","Lat":"54.509189","Long":"-1.429405"},"MMF":{"Station":"MMF","City":"Mamfe","Lat":"5.704167","Long":"9.306389"},"MMG":{"Station":"MMG","City":"Mount Magnet","Lat":"-28.11611","Long":"117.841667"},"MMH":{"Station":"MMH","City":"Mammoth Lakes","Lat":"37.624056","Long":"-118.838749"},"MMJ":{"Station":"MMJ","City":"Matsumoto","Lat":"36.166758","Long":"137.922669"},"MMM":{"Station":"MMM","City":"Middlemount","Lat":"-22.802499","Long":"148.704722"},"MMP":{"Station":"MMP","City":"Mompus","Lat":"9.268781","Long":"-74.652335"},"MMQ":{"Station":"MMQ","City":"Mbala","Lat":"-8.859166","Long":"31.336389"},"MMU":{"Station":"MMU","City":"Morristown","Lat":"40.799333","Long":"-74.414888"},"MMX":{"Station":"MMX","City":"Malm\u00f6","Lat":"55.530193","Long":"13.371639"},"MMY":{"Station":"MMY","City":"Miyakojima","Lat":"24.782833","Long":"125.295111"},"MMZ":{"Station":"MMZ","City":"Maimana","Lat":"35.938611","Long":"64.769167"},"MNA":{"Station":"MNA","City":"Melangguane","Lat":"4.006944","Long":"126.673056"},"MNB":{"Station":"MNB","City":"Moanda","Lat":"-5.930857","Long":"12.351789"},"MNC":{"Station":"MNC","City":"Nacala","Lat":"-14.488232","Long":"40.71225"},"MNE":{"Station":"MNE","City":"Mungeranie","Lat":"-28.009166","Long":"138.657222"},"MNG":{"Station":"MNG","City":"Maningrida","Lat":"-12.05611","Long":"134.234167"},"MNH":{"Station":"MNH","City":"Polonnaruwa Town","Lat":"8.049806","Long":"80.981375"},"MNJ":{"Station":"MNJ","City":"Mananjary","Lat":"-21.201771","Long":"48.358317"},"MNK":{"Station":"MNK","City":"Maiana","Lat":"1.003611","Long":"173.030833"},"MNL":{"Station":"MNL","City":"Manila","Lat":"14.508647","Long":"121.019581"},"MNM":{"Station":"MNM","City":"Menominee","Lat":"45.126688","Long":"-87.638542"},"MNO":{"Station":"MNO","City":"Manono","Lat":"-7.288888","Long":"27.394444"},"MNQ":{"Station":"MNQ","City":"Monto","Lat":"-24.885832","Long":"151.100278"},"MNR":{"Station":"MNR","City":"Mongu","Lat":"-15.254541","Long":"23.162306"},"MNT":{"Station":"MNT","City":"Minto","Lat":"65.148167","Long":"-149.368582"},"MNU":{"Station":"MNU","City":"Maulmyine","Lat":"16.444747","Long":"97.660669"},"MNW":{"Station":"MNW","City":"Macdonald Downs","Lat":"-22.447777","Long":"135.203056"},"MNX":{"Station":"MNX","City":"Manicor\u00e9","Lat":"-5.81138","Long":"-61.278318"},"MNY":{"Station":"MNY","City":"Stirling Island","Lat":"-7.416943","Long":"155.564722"},"MOA":{"Station":"MOA","City":"Moa","Lat":"20.654114","Long":"-74.922113"},"MOB":{"Station":"MOB","City":"Mobile","Lat":"30.691417","Long":"-88.242832"},"MOC":{"Station":"MOC","City":"Montes Claros","Lat":"-16.706924","Long":"-43.818899"},"MOD":{"Station":"MOD","City":"Modesto","Lat":"37.625833","Long":"-120.954416"},"MOE":{"Station":"MOE","City":"Momeik","Lat":"23.092525","Long":"96.645272"},"MOF":{"Station":"MOF","City":"Maumere","Lat":"-8.640646","Long":"122.236889"},"MOG":{"Station":"MOG","City":"Mong Hsat","Lat":"20.516758","Long":"99.256825"},"MOI":{"Station":"MOI","City":"Mitiaro Island","Lat":"-19.842499","Long":"-157.703332"},"MOJ":{"Station":"MOJ","City":"Moengo","Lat":"5.6075","Long":"-54.399999"},"MOL":{"Station":"MOL","City":"Molde","Lat":"62.744722","Long":"7.2625"},"MOM":{"Station":"MOM","City":"Moudjeria","Lat":"17.75","Long":"-12.5"},"MON":{"Station":"MON","City":"Aoraki\/Mount Cook","Lat":"-43.764999","Long":"170.133333"},"MOO":{"Station":"MOO","City":"Moomba","Lat":"-28.099443","Long":"140.196944"},"MOQ":{"Station":"MOQ","City":"Morondava","Lat":"-20.284749","Long":"44.317614"},"MOT":{"Station":"MOT","City":"Minot","Lat":"48.257639","Long":"-101.278027"},"MOV":{"Station":"MOV","City":"Moranbah","Lat":"-22.057777","Long":"148.0775"},"MPA":{"Station":"MPA","City":"Mpacha","Lat":"-17.634166","Long":"24.176389"},"MPD":{"Station":"MPD","City":"Sindhri Tharparkar","Lat":"25.682778","Long":"69.072778"},"MPH":{"Station":"MPH","City":"Caticlan","Lat":"11.924503","Long":"121.95405"},"MPK":{"Station":"MPK","City":"Mokpo","Lat":"34.758906","Long":"126.379872"},"MPL":{"Station":"MPL","City":"Montpellier M\u00e9diterran\u00e9e","Lat":"43.583333","Long":"3.961389"},"MPM":{"Station":"MPM","City":"Maputo","Lat":"-25.920835","Long":"32.572606"},"MPT":{"Station":"MPT","City":"Maliana","Lat":"-8.972221","Long":"125.215278"},"MPY":{"Station":"MPY","City":"Maripasoula","Lat":"3.6575","Long":"-54.037221"},"MQA":{"Station":"MQA","City":"Mandora Station","Lat":"-19.738055","Long":"120.838056"},"MQC":{"Station":"MQC","City":"Miquelon","Lat":"47.095833","Long":"-56.384443"},"MQD":{"Station":"MQD","City":"Maquinchao","Lat":"-41.25","Long":"-68.733"},"MQE":{"Station":"MQE","City":"Marqua","Lat":"-22.805832","Long":"137.251389"},"MQF":{"Station":"MQF","City":"Magnitogorsk","Lat":"53.393131","Long":"58.755661"},"MQH":{"Station":"MQH","City":"Mina\u00e7u","Lat":"-13.549102","Long":"-48.195346"},"MQL":{"Station":"MQL","City":"Mildura","Lat":"-34.229166","Long":"142.085556"},"MQN":{"Station":"MQN","City":"Mo i Rana","Lat":"66.363889","Long":"14.301389"},"MQQ":{"Station":"MQQ","City":"Moundou","Lat":"8.624406","Long":"16.071419"},"MQT":{"Station":"MQT","City":"Marquette","Lat":"46.353639","Long":"-87.39536"},"MQU":{"Station":"MQU","City":"Mariquita","Lat":"5.212594","Long":"-74.883696"},"MQV":{"Station":"MQV","City":"Mostaganem","Lat":"35.908806","Long":"0.149383"},"MQX":{"Station":"MQX","City":"Makale","Lat":"13.467367","Long":"39.533464"},"MRA":{"Station":"MRA","City":"Misurata","Lat":"32.325","Long":"15.061"},"MRD":{"Station":"MRD","City":"M\u00e9rida","Lat":"8.582294","Long":"-71.161185"},"MRE":{"Station":"MRE","City":"Masai Mara Game Reserve","Lat":"-1.404721","Long":"35.008056"},"MRG":{"Station":"MRG","City":"Mareeba","Lat":"-17.069166","Long":"145.419167"},"MRK":{"Station":"MRK","City":"Marco Island","Lat":"25.995028","Long":"-81.672527"},"MRO":{"Station":"MRO","City":"Masterton","Lat":"-40.973332","Long":"175.633611"},"MRQ":{"Station":"MRQ","City":"Marinduque","Lat":"13.360967","Long":"121.825583"},"MRR":{"Station":"MRR","City":"Macara","Lat":"-4.37823","Long":"-79.941021"},"MRS":{"Station":"MRS","City":"Marseille Provence","Lat":"43.436667","Long":"5.215"},"MRU":{"Station":"MRU","City":"Mauritius","Lat":"-20.430234","Long":"57.6836"},"MRW":{"Station":"MRW","City":"Lolland Falster","Lat":"54.699344","Long":"11.440117"},"MRX":{"Station":"MRX","City":"Bandar Mahshahr","Lat":"30.556192","Long":"49.151879"},"MRY":{"Station":"MRY","City":"Monterey","Lat":"36.587","Long":"-121.842943"},"MRZ":{"Station":"MRZ","City":"Moree","Lat":"-29.498888","Long":"149.844722"},"MSA":{"Station":"MSA","City":"Muskrat Dam","Lat":"53.441111","Long":"-91.763055"},"MSC":{"Station":"MSC","City":"Mesa","Lat":"33.460833","Long":"-111.728332"},"MSD":{"Station":"MSD","City":"Mount Pleasant","Lat":"39.526543","Long":"-111.476086"},"MSF":{"Station":"MSF","City":"Mount Swan","Lat":"-22.584721","Long":"135.031389"},"MSG":{"Station":"MSG","City":"Matsaile","Lat":"-29.81361","Long":"28.809167"},"MSH":{"Station":"MSH","City":"Masirah Island","Lat":"20.675434","Long":"58.890467"},"MSJ":{"Station":"MSJ","City":"Misawa","Lat":"40.703222","Long":"141.368364"},"MSL":{"Station":"MSL","City":"Muscle Shoals","Lat":"34.745306","Long":"-87.610221"},"MSM":{"Station":"MSM","City":"Masi Manimba","Lat":"-4.783","Long":"17.85"},"MSN":{"Station":"MSN","City":"Madison","Lat":"43.139879","Long":"-89.337503"},"MSO":{"Station":"MSO","City":"Missoula","Lat":"46.916306","Long":"-114.090555"},"MSP":{"Station":"MSP","City":"Minneapolis","Lat":"44.881972","Long":"-93.221777"},"MSQ":{"Station":"MSQ","City":"Minsk","Lat":"53.882469","Long":"28.030731"},"MSR":{"Station":"MSR","City":"Mus","Lat":"38.747769","Long":"41.661236"},"MSS":{"Station":"MSS","City":"Massena","Lat":"44.936242","Long":"-74.845118"},"MST":{"Station":"MST","City":"Maastricht","Lat":"50.911658","Long":"5.770144"},"MSU":{"Station":"MSU","City":"Maseru","Lat":"-29.462255","Long":"27.552503"},"MSW":{"Station":"MSW","City":"Massawa","Lat":"15.669989","Long":"39.370103"},"MSX":{"Station":"MSX","City":"Mossendjo","Lat":"-2.95","Long":"12.7"},"MSY":{"Station":"MSY","City":"New Orl\u00e9ans","Lat":"29.993278","Long":"-90.259027"},"MSZ":{"Station":"MSZ","City":"Namibe","Lat":"-15.261221","Long":"12.146756"},"MTA":{"Station":"MTA","City":"Matamata","Lat":"-37.734443","Long":"175.741944"},"MTB":{"Station":"MTB","City":"Monte Libano","Lat":"7.971739","Long":"-75.432518"},"MTD":{"Station":"MTD","City":"Mount Sanford Station","Lat":"-16.978332","Long":"130.554722"},"MTE":{"Station":"MTE","City":"Monte Alegre","Lat":"-1.995799","Long":"-54.074202"},"MTH":{"Station":"MTH","City":"Marathon","Lat":"24.726194","Long":"-81.05136"},"MTJ":{"Station":"MTJ","City":"Montrose","Lat":"38.509806","Long":"-107.894249"},"MTK":{"Station":"MTK","City":"Makin Island","Lat":"3.374444","Long":"172.992222"},"MTL":{"Station":"MTL","City":"Maitland","Lat":"-32.703332","Long":"151.488333"},"MTQ":{"Station":"MTQ","City":"Mitchell","Lat":"-26.483332","Long":"147.936667"},"MTR":{"Station":"MTR","City":"Monteria","Lat":"8.823678","Long":"-75.825943"},"MTS":{"Station":"MTS","City":"Manzini","Lat":"-26.529021","Long":"31.307519"},"MTU":{"Station":"MTU","City":"Montepuez","Lat":"-13.121943","Long":"39.052778"},"MTX":{"Station":"MTX","City":"Fairbanks","Lat":"64.80679","Long":"-147.76242"},"MTY":{"Station":"MTY","City":"Monterrey","Lat":"25.778489","Long":"-100.106877"},"MTZ":{"Station":"MTZ","City":"Masada","Lat":"31.328169","Long":"35.388608"},"MUA":{"Station":"MUA","City":"Munda","Lat":"-8.327968","Long":"157.263092"},"MUB":{"Station":"MUB","City":"Maun","Lat":"-19.972563","Long":"23.431086"},"MUC":{"Station":"MUC","City":"Munich","Lat":"48.353783","Long":"11.786086"},"MUD":{"Station":"MUD","City":"Mueda","Lat":"-11.672921","Long":"39.563142"},"MUG":{"Station":"MUG","City":"Muleg\u00e9","Lat":"26.906667","Long":"-111.96806"},"MUH":{"Station":"MUH","City":"Mersa Matruh","Lat":"31.325356","Long":"27.221689"},"MUK":{"Station":"MUK","City":"Mauke Island","Lat":"-20.13611","Long":"-157.345277"},"MUN":{"Station":"MUN","City":"Matur\u00edn","Lat":"9.749067","Long":"-63.153399"},"MUP":{"Station":"MUP","City":"Mulga Park","Lat":"-25.859721","Long":"131.649722"},"MUQ":{"Station":"MUQ","City":"Muccan Station","Lat":"-20.658888","Long":"120.066667"},"MUR":{"Station":"MUR","City":"Marudi","Lat":"4.1775","Long":"114.321944"},"MUW":{"Station":"MUW","City":"Ghriss","Lat":"35.216944","Long":"0.148333"},"MUX":{"Station":"MUX","City":"Multan","Lat":"30.203222","Long":"71.419111"},"MUY":{"Station":"MUY","City":"Mouyondzi","Lat":"-4.014721","Long":"13.966389"},"MUZ":{"Station":"MUZ","City":"Musoma","Lat":"-1.502499","Long":"33.801944"},"MVA":{"Station":"MVA","City":"Myvatn","Lat":"65.655833","Long":"-16.918055"},"MVB":{"Station":"MVB","City":"Franceville\/Mvengue","Lat":"-1.656155","Long":"13.438036"},"MVD":{"Station":"MVD","City":"Montevideo","Lat":"-34.838416","Long":"-56.030805"},"MVK":{"Station":"MVK","City":"Mulka","Lat":"-28.347777","Long":"138.65"},"MVN":{"Station":"MVN","City":"Mount Vernon","Lat":"38.323361","Long":"-88.858499"},"MVO":{"Station":"MVO","City":"Mongo","Lat":"12.167","Long":"18.675"},"MVP":{"Station":"MVP","City":"Mit\u00fa","Lat":"1.253531","Long":"-70.234068"},"MVQ":{"Station":"MVQ","City":"Mogilev","Lat":"53.954861","Long":"30.095089"},"MVR":{"Station":"MVR","City":"Maroua","Lat":"10.451392","Long":"14.257361"},"MVS":{"Station":"MVS","City":"Mucuri","Lat":"-18.048877","Long":"-39.864168"},"MVT":{"Station":"MVT","City":"Mataiva","Lat":"-14.869443","Long":"-148.713332"},"MVU":{"Station":"MVU","City":"Musgrave","Lat":"-14.775555","Long":"143.504722"},"MVV":{"Station":"MVV","City":"Meg\u00e8ve","Lat":"45.820833","Long":"6.652222"},"MVW":{"Station":"MVW","City":"Burlington\/Mount Vernon","Lat":"48.470528","Long":"-122.421693"},"MVY":{"Station":"MVY","City":"Vineyard Haven","Lat":"41.393422","Long":"-70.613883"},"MVZ":{"Station":"MVZ","City":"Masvingo","Lat":"-20.055332","Long":"30.859111"},"MWA":{"Station":"MWA","City":"Marion","Lat":"37.754972","Long":"-89.011082"},"MWB":{"Station":"MWB","City":"Morawa","Lat":"-29.202499","Long":"116.021667"},"MWD":{"Station":"MWD","City":"Mianwali","Lat":"32.563089","Long":"71.570681"},"MWE":{"Station":"MWE","City":"Merowe","Lat":"18.455278","Long":"31.818611"},"MWH":{"Station":"MWH","City":"Moses Lake","Lat":"47.208583","Long":"-119.319138"},"MWN":{"Station":"MWN","City":"Mwadui","Lat":"-3.5","Long":"33.617"},"MWQ":{"Station":"MWQ","City":"Magwe","Lat":"20.165453","Long":"94.941185"},"MWT":{"Station":"MWT","City":"Moolawatana","Lat":"-29.907221","Long":"139.766111"},"MWX":{"Station":"MWX","City":"Muan","Lat":"34.991389","Long":"126.382778"},"MWY":{"Station":"MWY","City":"Miranda Downs","Lat":"-17.32861","Long":"141.885556"},"MWZ":{"Station":"MWZ","City":"Mwanza","Lat":"-2.444485","Long":"32.932667"},"MXB":{"Station":"MXB","City":"Masamba","Lat":"-2.558043","Long":"120.324383"},"MXC":{"Station":"MXC","City":"Monticello","Lat":"37.937215","Long":"-109.346504"},"MXD":{"Station":"MXD","City":"Marion Downs","Lat":"-23.363888","Long":"139.649722"},"MXH":{"Station":"MXH","City":"Moro","Lat":"-6.363332","Long":"143.238056"},"MXI":{"Station":"MXI","City":"Mati","Lat":"6.949367","Long":"126.27295"},"MXJ":{"Station":"MXJ","City":"Minna","Lat":"9.652172","Long":"6.462256"},"MXL":{"Station":"MXL","City":"Mexicali","Lat":"32.630634","Long":"-115.241636"},"MXM":{"Station":"MXM","City":"Morombe","Lat":"-21.753866","Long":"43.375533"},"MXN":{"Station":"MXN","City":"Morlaix","Lat":"48.600747","Long":"-3.816668"},"MXP":{"Station":"MXP","City":"Milan","Lat":"45.630606","Long":"8.728111"},"MXR":{"Station":"MXR","City":"Mirgorod","Lat":"49.930556","Long":"33.641667"},"MXS":{"Station":"MXS","City":"Maota","Lat":"-13.742221","Long":"-172.257777"},"MXT":{"Station":"MXT","City":"Maintirano","Lat":"-18.050277","Long":"44.033333"},"MXU":{"Station":"MXU","City":"Mullewa","Lat":"-28.473888","Long":"115.518056"},"MXV":{"Station":"MXV","City":"Moron","Lat":"49.663311","Long":"100.099364"},"MXW":{"Station":"MXW","City":"Mandalgobi","Lat":"45.738056","Long":"106.269167"},"MXX":{"Station":"MXX","City":"Mora","Lat":"60.957908","Long":"14.511383"},"MXY":{"Station":"MXY","City":"McCarthy","Lat":"61.437061","Long":"-142.903736"},"MYA":{"Station":"MYA","City":"Moruya","Lat":"-35.897777","Long":"150.144444"},"MYB":{"Station":"MYB","City":"Mayumba","Lat":"-3.460555","Long":"10.676667"},"MYC":{"Station":"MYC","City":"Maracay","Lat":"10.183375","Long":"-67.557318"},"MYD":{"Station":"MYD","City":"Malindi","Lat":"-3.229305","Long":"40.101667"},"MYE":{"Station":"MYE","City":"Miyake Jima","Lat":"34.073611","Long":"139.560278"},"MYG":{"Station":"MYG","City":"Abraham's Bay","Lat":"22.379528","Long":"-73.013499"},"MYI":{"Station":"MYI","City":"Murray Island","Lat":"-9.914721","Long":"144.054167"},"MYJ":{"Station":"MYJ","City":"Matsuyama","Lat":"33.827222","Long":"132.699722"},"MYN":{"Station":"MYN","City":"Ma'rib","Lat":"15.469167","Long":"45.326944"},"MYO":{"Station":"MYO","City":"Myroodah Station","Lat":"-18.123888","Long":"124.270833"},"MYP":{"Station":"MYP","City":"Mary","Lat":"37.619444","Long":"61.896667"},"MYR":{"Station":"MYR","City":"Myrtle Beach","Lat":"33.67975","Long":"-78.928332"},"MYT":{"Station":"MYT","City":"Myitkyina","Lat":"25.383636","Long":"97.351919"},"MYW":{"Station":"MYW","City":"Mtwara","Lat":"-10.339057","Long":"40.181781"},"MYY":{"Station":"MYY","City":"Miri","Lat":"4.322014","Long":"113.986806"},"MZB":{"Station":"MZB","City":"Mo\u00e7imboa de Praia","Lat":"-11.361788","Long":"40.354875"},"MZG":{"Station":"MZG","City":"Magong","Lat":"23.568669","Long":"119.628311"},"MZI":{"Station":"MZI","City":"Mopti Ambodedjo","Lat":"14.512803","Long":"-4.07956"},"MZJ":{"Station":"MZJ","City":"Marana","Lat":"32.509833","Long":"-111.325332"},"MZK":{"Station":"MZK","City":"Marakei","Lat":"2.058611","Long":"173.271389"},"MZL":{"Station":"MZL","City":"Manizales","Lat":"5.029992","Long":"-75.465113"},"MZM":{"Station":"MZM","City":"Metz","Lat":"49.076389","Long":"6.133889"},"MZO":{"Station":"MZO","City":"Manzanillo","Lat":"20.288172","Long":"-77.089299"},"MZP":{"Station":"MZP","City":"Motueka","Lat":"-41.123332","Long":"172.988611"},"MZQ":{"Station":"MZQ","City":"Mkuze","Lat":"-27.626085","Long":"32.044275"},"MZR":{"Station":"MZR","City":"Mazar I Sharif","Lat":"36.706914","Long":"67.209678"},"MZT":{"Station":"MZT","City":"Mazatl\u00e1n","Lat":"23.161356","Long":"-106.266071"},"MZV":{"Station":"MZV","City":"Mulu","Lat":"4.050556","Long":"114.809167"},"MZY":{"Station":"MZY","City":"Mossel Bay","Lat":"-34.15861","Long":"22.055278"},"NAA":{"Station":"NAA","City":"Narrabri","Lat":"-30.319166","Long":"149.827222"},"NAC":{"Station":"NAC","City":"Naracoorte","Lat":"-36.985277","Long":"140.725"},"NAE":{"Station":"NAE","City":"Natitingou","Lat":"10.376944","Long":"1.360278"},"NAG":{"Station":"NAG","City":"Nagpur","Lat":"21.092192","Long":"79.047183"},"NAH":{"Station":"NAH","City":"Tahuna","Lat":"3.683214","Long":"125.528019"},"NAI":{"Station":"NAI","City":"Annai","Lat":"3.959442","Long":"-59.124167"},"NAJ":{"Station":"NAJ","City":"Nakhchivan","Lat":"39.188806","Long":"45.458442"},"NAK":{"Station":"NAK","City":"Nakhon Ratchasima","Lat":"14.949497","Long":"102.312736"},"NAL":{"Station":"NAL","City":"Nalchik","Lat":"43.512856","Long":"43.636583"},"NAN":{"Station":"NAN","City":"Nadi","Lat":"-17.755391","Long":"177.443378"},"NAO":{"Station":"NAO","City":"Nanchong","Lat":"30.754","Long":"106.062"},"NAP":{"Station":"NAP","City":"Naples","Lat":"40.886033","Long":"14.290781"},"NAQ":{"Station":"NAQ","City":"Qaanaaq","Lat":"77.48865","Long":"-69.38873"},"NAR":{"Station":"NAR","City":"Puerto Nare","Lat":"6.210019","Long":"-74.590588"},"NAS":{"Station":"NAS","City":"Nassau","Lat":"25.038958","Long":"-77.46623"},"NAT":{"Station":"NAT","City":"Natal","Lat":"-5.911416","Long":"-35.247716"},"NAU":{"Station":"NAU","City":"Napuka Island","Lat":"-14.176782","Long":"-141.267263"},"NAW":{"Station":"NAW","City":"Narathiwat","Lat":"6.519922","Long":"101.7434"},"NAY":{"Station":"NAY","City":"Beijing","Lat":"39.779444","Long":"116.386389"},"NBE":{"Station":"NBE","City":"Enfidha","Lat":"36.075833","Long":"10.438611"},"NBH":{"Station":"NBH","City":"Nambucca Heads","Lat":"-30.702777","Long":"152.978611"},"NBL":{"Station":"NBL","City":"Wannukandi","Lat":"9.250273","Long":"-78.118331"},"NBO":{"Station":"NBO","City":"Nairobi","Lat":"-1.319241","Long":"36.927775"},"NBS":{"Station":"NBS","City":"Baishan","Lat":"42.087778","Long":"127.548889"},"NBW":{"Station":"NBW","City":"Guant\u00e1namo","Lat":"19.906458","Long":"-75.207055"},"NBX":{"Station":"NBX","City":"Nabire","Lat":"-3.368182","Long":"135.496406"},"NCA":{"Station":"NCA","City":"Bottle Creek and Whitby","Lat":"21.917486","Long":"-71.939657"},"NCE":{"Station":"NCE","City":"Nice","Lat":"43.665278","Long":"7.215"},"NCG":{"Station":"NCG","City":"Nuevo Casas Grandes","Lat":"30.397439","Long":"-107.874968"},"NCH":{"Station":"NCH","City":"Nachingwea","Lat":"-10.357499","Long":"38.779167"},"NCI":{"Station":"NCI","City":"Necocli","Lat":"8.45","Long":"-76.783332"},"NCL":{"Station":"NCL","City":"Newcastle","Lat":"55.0375","Long":"-1.691666"},"NCN":{"Station":"NCN","City":"Chenega","Lat":"60.078561","Long":"-147.994734"},"NCS":{"Station":"NCS","City":"Newcastle","Lat":"-27.770585","Long":"29.976894"},"NCT":{"Station":"NCT","City":"Nicoya","Lat":"10.139444","Long":"-85.445832"},"NCU":{"Station":"NCU","City":"Nukus","Lat":"42.488411","Long":"59.623256"},"NCY":{"Station":"NCY","City":"Annecy","Lat":"45.930775","Long":"6.106289"},"NDB":{"Station":"NDB","City":"Nouadhibou","Lat":"20.933067","Long":"-17.029955"},"NDC":{"Station":"NDC","City":"Nanded","Lat":"19.181944","Long":"77.318611"},"NDD":{"Station":"NDD","City":"Sumbe","Lat":"-11.167921","Long":"13.847544"},"NDE":{"Station":"NDE","City":"Mandera","Lat":"3.933","Long":"41.85"},"NDG":{"Station":"NDG","City":"Qiqihar","Lat":"47.239628","Long":"123.918131"},"NDJ":{"Station":"NDJ","City":"N'Djamena","Lat":"12.133689","Long":"15.034019"},"NDK":{"Station":"NDK","City":"Namorik Atoll","Lat":"5.631667","Long":"168.125"},"NDL":{"Station":"NDL","City":"N'D\u00e9l\u00e9","Lat":"8.426667","Long":"20.635"},"NDM":{"Station":"NDM","City":"Mendi","Lat":"9.767","Long":"35.1"},"NDS":{"Station":"NDS","City":"Sandstone","Lat":"-27.977499","Long":"119.299722"},"NDU":{"Station":"NDU","City":"Rundu","Lat":"-17.95646","Long":"19.719439"},"NEC":{"Station":"NEC","City":"Necochea","Lat":"-38.483055","Long":"-58.817221"},"NEF":{"Station":"NEF","City":"Neftekamsk","Lat":"56.106944","Long":"54.347222"},"NEG":{"Station":"NEG","City":"Negril","Lat":"18.364202","Long":"-78.30561"},"NEJ":{"Station":"NEJ","City":"Nejjo","Lat":"9.55","Long":"35.467"},"NEK":{"Station":"NEK","City":"Nekemte","Lat":"9.05","Long":"36.6"},"NEU":{"Station":"NEU","City":"Sam Neua","Lat":"20.418358","Long":"104.066583"},"NEV":{"Station":"NEV","City":"Newcastle","Lat":"17.205642","Long":"-62.594002"},"NFO":{"Station":"NFO","City":"Angaha","Lat":"-15.570832","Long":"-175.633055"},"NGA":{"Station":"NGA","City":"Young","Lat":"-34.255555","Long":"148.248056"},"NGB":{"Station":"NGB","City":"Ningbo","Lat":"29.826683","Long":"121.461906"},"NGD":{"Station":"NGD","City":"The Settlement","Lat":"18.7275","Long":"-64.328055"},"NGE":{"Station":"NGE","City":"N'Gaound\u00e9r\u00e9","Lat":"7.357011","Long":"13.559242"},"NGI":{"Station":"NGI","City":"Ngau","Lat":"-18.115555","Long":"179.339722"},"NGO":{"Station":"NGO","City":"Nagoya","Lat":"34.858414","Long":"136.805408"},"NHD":{"Station":"NHD","City":"Minhad AB","Lat":"25.026819","Long":"55.366244"},"NHF":{"Station":"NHF","City":"New Halfa","Lat":"15.355552","Long":"35.727779"},"NHS":{"Station":"NHS","City":"Nushki","Lat":"29.539011","Long":"66.023339"},"NHT":{"Station":"NHT","City":"Northolt","Lat":"51.553","Long":"-0.418166"},"NHV":{"Station":"NHV","City":"Nuku Hiva","Lat":"-8.794721","Long":"-140.223055"},"NHX":{"Station":"NHX","City":"Foley","Lat":"30.389087","Long":"-87.635261"},"NIA":{"Station":"NIA","City":"Nimba","Lat":"7.5","Long":"-8.6"},"NIF":{"Station":"NIF","City":"Nifty","Lat":"-21.673888","Long":"121.595278"},"NIG":{"Station":"NIG","City":"Nikunau","Lat":"-1.314443","Long":"176.410278"},"NIK":{"Station":"NIK","City":"Niokolo-Koba","Lat":"13.0525","Long":"-12.727221"},"NIO":{"Station":"NIO","City":"Nioki","Lat":"-2.717499","Long":"17.684722"},"NIS":{"Station":"NIS","City":"Simberi Island","Lat":"-2.662499","Long":"151.998333"},"NIT":{"Station":"NIT","City":"Niort","Lat":"46.313422","Long":"-0.394432"},"NIX":{"Station":"NIX","City":"Nioro du Sahel","Lat":"15.238056","Long":"-9.57611"},"NJA":{"Station":"NJA","City":"Atsugi","Lat":"35.454611","Long":"139.450167"},"NJC":{"Station":"NJC","City":"Nizhnevartovsk","Lat":"60.949272","Long":"76.483617"},"NJF":{"Station":"NJF","City":"Al Najaf","Lat":"31.99","Long":"44.403"},"NKB":{"Station":"NKB","City":"Noonkanbah","Lat":"-18.491388","Long":"124.850833"},"NKC":{"Station":"NKC","City":"Nouakchott","Lat":"18.097856","Long":"-15.947955"},"NKG":{"Station":"NKG","City":"Nanjing","Lat":"31.742042","Long":"118.862025"},"NKU":{"Station":"NKU","City":"Nkaus","Lat":"-30.021666","Long":"28.196944"},"NKW":{"Station":"NKW","City":"Diego Garcia","Lat":"-7.313266","Long":"72.411089"},"NLA":{"Station":"NLA","City":"N'Dola","Lat":"-12.998138","Long":"28.664944"},"NLD":{"Station":"NLD","City":"Nuevo Laredo","Lat":"27.443918","Long":"-99.570459"},"NLE":{"Station":"NLE","City":"Niles","Lat":"41.835889","Long":"-86.225166"},"NLF":{"Station":"NLF","City":"Darnley Island","Lat":"-9.583332","Long":"143.766667"},"NLL":{"Station":"NLL","City":"Nullagine","Lat":"-21.911666","Long":"120.198333"},"NLO":{"Station":"NLO","City":"Kinshasa","Lat":"-4.326688","Long":"15.327342"},"NLP":{"Station":"NLP","City":"Nelspruit","Lat":"-25.502221","Long":"30.911667"},"NLS":{"Station":"NLS","City":"Nicholson","Lat":"-18.048888","Long":"128.905"},"NLV":{"Station":"NLV","City":"Nikolaev","Lat":"47.0579","Long":"31.919825"},"NMA":{"Station":"NMA","City":"Namangan","Lat":"40.984578","Long":"71.556742"},"NMC":{"Station":"NMC","City":"Norman's Cay","Lat":"24.594258","Long":"-76.820213"},"NME":{"Station":"NME","City":"Nightmute","Lat":"60.469171","Long":"-164.704036"},"NMS":{"Station":"NMS","City":"Namsang","Lat":"20.890492","Long":"97.735922"},"NNA":{"Station":"NNA","City":"Kenitra","Lat":"34.298864","Long":"-6.595877"},"NNG":{"Station":"NNG","City":"Nanning","Lat":"22.608267","Long":"108.172442"},"NNI":{"Station":"NNI","City":"Namutoni","Lat":"-18.807499","Long":"16.926944"},"NNK":{"Station":"NNK","City":"Naknek","Lat":"58.732881","Long":"-157.019919"},"NNL":{"Station":"NNL","City":"Nondalton","Lat":"59.98023","Long":"-154.839174"},"NNM":{"Station":"NNM","City":"Naryan Mar","Lat":"67.64","Long":"53.121944"},"NNT":{"Station":"NNT","City":"Nan","Lat":"18.807914","Long":"100.783419"},"NNU":{"Station":"NNU","City":"Nanuque","Lat":"-17.823268","Long":"-40.329907"},"NNY":{"Station":"NNY","City":"Nanyang","Lat":"32.980833","Long":"112.615278"},"NOA":{"Station":"NOA","City":"Nowra","Lat":"-34.948888","Long":"150.536944"},"NOB":{"Station":"NOB","City":"Nosara Beach","Lat":"9.976494","Long":"-85.652963"},"NOC":{"Station":"NOC","City":"Knock","Lat":"53.910297","Long":"-8.818491"},"NOE":{"Station":"NOE","City":"Norddeich","Lat":"53.633","Long":"7.183"},"NOI":{"Station":"NOI","City":"Krymskaya","Lat":"44.964444","Long":"38.001389"},"NOJ":{"Station":"NOJ","City":"Noyabrsk","Lat":"63.183056","Long":"75.269167"},"NOK":{"Station":"NOK","City":"Nova Xavantina","Lat":"-14.698332","Long":"-52.346388"},"NON":{"Station":"NON","City":"Nonouti","Lat":"-0.639721","Long":"174.427778"},"NOR":{"Station":"NOR","City":"Nor\u00f0fj\u00f6r\u00f0ur","Lat":"65.131944","Long":"-13.746388"},"NOS":{"Station":"NOS","City":"Nosy-B\u00e9","Lat":"-13.312066","Long":"48.314822"},"NOU":{"Station":"NOU","City":"Noum\u00e9a","Lat":"-22.016388","Long":"166.216111"},"NOV":{"Station":"NOV","City":"Huambo","Lat":"-12.808877","Long":"15.760547"},"NPH":{"Station":"NPH","City":"Nephi","Lat":"39.736583","Long":"-111.870055"},"NPL":{"Station":"NPL","City":"New Plymouth","Lat":"-39.00861","Long":"174.179167"},"NPO":{"Station":"NPO","City":"Nangapinoh","Lat":"-0.348868","Long":"111.747606"},"NPP":{"Station":"NPP","City":"Napperby","Lat":"-22.53111","Long":"132.763056"},"NPT":{"Station":"NPT","City":"Newport","Lat":"41.53244","Long":"-71.281543"},"NQL":{"Station":"NQL","City":"Niquel\u00e2ndia","Lat":"-14.434868","Long":"-48.491524"},"NQN":{"Station":"NQN","City":"Neuqu\u00e9n","Lat":"-38.948999","Long":"-68.15571"},"NQT":{"Station":"NQT","City":"Nottingham","Lat":"52.92","Long":"-1.079166"},"NQU":{"Station":"NQU","City":"Nuqu\u00ed","Lat":"5.7","Long":"-77.252777"},"NQY":{"Station":"NQY","City":"Newquay","Lat":"50.440833","Long":"-4.995277"},"NRK":{"Station":"NRK","City":"Norrk\u00f6ping","Lat":"58.586253","Long":"16.250622"},"NRL":{"Station":"NRL","City":"North Ronaldsay","Lat":"59.367222","Long":"-2.432777"},"NRM":{"Station":"NRM","City":"Nara","Lat":"15.217","Long":"-7.267"},"NRT":{"Station":"NRT","City":"Tokyo","Lat":"35.765278","Long":"140.385556"},"NSA":{"Station":"NSA","City":"Noosa","Lat":"-26.423332","Long":"153.063333"},"NSF":{"Station":"NSF","City":"Camp Springs","Lat":"38.810806","Long":"-76.867027"},"NSH":{"Station":"NSH","City":"Now Shahr","Lat":"36.663333","Long":"51.464722"},"NSK":{"Station":"NSK","City":"Noril'sk","Lat":"69.311053","Long":"87.332183"},"NSM":{"Station":"NSM","City":"Norseman","Lat":"-32.209166","Long":"121.756944"},"NSN":{"Station":"NSN","City":"Nelson","Lat":"-41.298332","Long":"173.221111"},"NSO":{"Station":"NSO","City":"Scone","Lat":"-32.037221","Long":"150.832222"},"NSP":{"Station":"NSP","City":"Sangley Point","Lat":"14.495364","Long":"120.904075"},"NST":{"Station":"NST","City":"Nakhon Si Thammarat","Lat":"8.539617","Long":"99.944725"},"NSV":{"Station":"NSV","City":"Noosaville","Lat":"-26.422777","Long":"153.064167"},"NSY":{"Station":"NSY","City":"Sigonella","Lat":"37.401664","Long":"14.922358"},"NTE":{"Station":"NTE","City":"Nantes","Lat":"47.156944","Long":"-1.607777"},"NTG":{"Station":"NTG","City":"Nantong","Lat":"32.070833","Long":"120.975556"},"NTI":{"Station":"NTI","City":"Bintuni","Lat":"-2.1","Long":"133.517"},"NTJ":{"Station":"NTJ","City":"Manti","Lat":"39.329128","Long":"-111.614639"},"NTL":{"Station":"NTL","City":"Newcastle","Lat":"-32.794999","Long":"151.834444"},"NTN":{"Station":"NTN","City":"Normanton","Lat":"-17.68361","Long":"141.070278"},"NTO":{"Station":"NTO","City":"Ponta do Sol","Lat":"17.202778","Long":"-25.090555"},"NTQ":{"Station":"NTQ","City":"Wajima","Lat":"37.293097","Long":"136.961853"},"NTR":{"Station":"NTR","City":"Monterrey","Lat":"25.865572","Long":"-100.237238"},"NTT":{"Station":"NTT","City":"Niuatoputapu","Lat":"-15.976666","Long":"-173.754999"},"NTX":{"Station":"NTX","City":"Natuna Ranai","Lat":"3.908714","Long":"108.387897"},"NUB":{"Station":"NUB","City":"Numbulwar","Lat":"-14.271666","Long":"135.716667"},"NUD":{"Station":"NUD","City":"En Nahud","Lat":"12.701944","Long":"28.435278"},"NUE":{"Station":"NUE","City":"N\u00fcrnberg","Lat":"49.4987","Long":"11.066897"},"NUK":{"Station":"NUK","City":"Nukutavake","Lat":"-19.284999","Long":"-138.772221"},"NUL":{"Station":"NUL","City":"Nulato","Lat":"64.729311","Long":"-158.074221"},"NUP":{"Station":"NUP","City":"Nunapitchuk","Lat":"60.906011","Long":"-162.44059"},"NUR":{"Station":"NUR","City":"Nullarbor Motel","Lat":"-31.44111","Long":"130.902222"},"NUS":{"Station":"NUS","City":"Norsup","Lat":"-16.079721","Long":"167.400556"},"NUU":{"Station":"NUU","City":"Nakuru","Lat":"-0.3","Long":"36.15"},"NUX":{"Station":"NUX","City":"Novy Urengoy","Lat":"66.069444","Long":"76.520278"},"NVA":{"Station":"NVA","City":"Neiva","Lat":"2.950422","Long":"-75.293982"},"NVI":{"Station":"NVI","City":"Navoi","Lat":"40.117778","Long":"65.175"},"NVJ":{"Station":"NVJ","City":"Navojoa","Lat":"26.990278","Long":"-109.41611"},"NVP":{"Station":"NVP","City":"Novo Aripuan\u00e3","Lat":"-5.118032","Long":"-60.364877"},"NVR":{"Station":"NVR","City":"Novgorod","Lat":"58.493611","Long":"31.241667"},"NVS":{"Station":"NVS","City":"Neveras","Lat":"47.003731","Long":"3.110742"},"NVT":{"Station":"NVT","City":"Navegantes","Lat":"-26.879998","Long":"-48.651389"},"NVY":{"Station":"NVY","City":"Neyveli","Lat":"11.612778","Long":"79.527222"},"NWA":{"Station":"NWA","City":"Moheli","Lat":"-12.298107","Long":"43.7664"},"NWH":{"Station":"NWH","City":"Newport","Lat":"43.387192","Long":"-72.187643"},"NWI":{"Station":"NWI","City":"Norwich","Lat":"52.675833","Long":"1.282778"},"NYA":{"Station":"NYA","City":"Nyagan","Lat":"62.110278","Long":"65.613611"},"NYE":{"Station":"NYE","City":"Nyeri","Lat":"-0.367","Long":"36.967"},"NYI":{"Station":"NYI","City":"Sunyani","Lat":"7.361828","Long":"-2.328755"},"NYK":{"Station":"NYK","City":"Nanyuki","Lat":"-0.067","Long":"37.033"},"NYM":{"Station":"NYM","City":"Nadym","Lat":"65.481667","Long":"72.698889"},"NYN":{"Station":"NYN","City":"Nyngan","Lat":"-31.55111","Long":"147.202778"},"NYU":{"Station":"NYU","City":"Nyaung-U (Nyaung Oo) \/ Bagan","Lat":"21.178756","Long":"94.930169"},"NZC":{"Station":"NZC","City":"Jacksonville","Lat":"30.218778","Long":"-81.877166"},"NZH":{"Station":"NZH","City":"Manzhouli","Lat":"49.566667","Long":"117.329444"},"OAG":{"Station":"OAG","City":"Orange","Lat":"-33.381666","Long":"149.133056"},"OAI":{"Station":"OAI","City":"Bagram","Lat":"34.946264","Long":"69.265031"},"OAJ":{"Station":"OAJ","City":"Jacksonville","Lat":"34.829167","Long":"-77.612138"},"OAK":{"Station":"OAK","City":"Oakland","Lat":"37.721306","Long":"-122.220721"},"OAL":{"Station":"OAL","City":"Cacoal","Lat":"-11.432843","Long":"-61.477699"},"OAX":{"Station":"OAX","City":"Oaxaca","Lat":"16.999906","Long":"-96.726638"},"OBC":{"Station":"OBC","City":"Obock","Lat":"11.968333","Long":"43.278611"},"OBF":{"Station":"OBF","City":"Oberpfaffenhofen","Lat":"48.081364","Long":"11.283067"},"OBI":{"Station":"OBI","City":"\u00d3bidos","Lat":"-1.867166","Long":"-55.514402"},"OBL":{"Station":"OBL","City":"Zoersel","Lat":"51.264722","Long":"4.753333"},"OBN":{"Station":"OBN","City":"Oban","Lat":"56.4635","Long":"-5.399666"},"OBO":{"Station":"OBO","City":"Obihiro","Lat":"42.733333","Long":"143.217222"},"OBS":{"Station":"OBS","City":"Aubenas","Lat":"44.539419","Long":"4.371733"},"OCA":{"Station":"OCA","City":"Key Largo","Lat":"25.325393","Long":"-80.274774"},"OCC":{"Station":"OCC","City":"El Coca","Lat":"-0.462885","Long":"-76.986841"},"OCE":{"Station":"OCE","City":"Ocean City","Lat":"38.310444","Long":"-75.123971"},"OCF":{"Station":"OCF","City":"Ocala","Lat":"29.171877","Long":"-82.224114"},"OCJ":{"Station":"OCJ","City":"Ocho Rios","Lat":"18.404247","Long":"-76.969016"},"OCN":{"Station":"OCN","City":"Oceanside","Lat":"33.217976","Long":"-117.351507"},"OCV":{"Station":"OCV","City":"Oca\u00f1a","Lat":"8.315061","Long":"-73.35833"},"ODA":{"Station":"ODA","City":"Ouadda","Lat":"8.010556","Long":"22.398611"},"ODB":{"Station":"ODB","City":"Cordoba","Lat":"37.842006","Long":"-4.848877"},"ODD":{"Station":"ODD","City":"Oodnadatta","Lat":"-27.560555","Long":"135.444444"},"ODE":{"Station":"ODE","City":"Odense","Lat":"55.476664","Long":"10.330933"},"ODL":{"Station":"ODL","City":"Cordillo Downs","Lat":"-26.745277","Long":"140.637778"},"ODN":{"Station":"ODN","City":"Long Seridan","Lat":"3.976111","Long":"115.063333"},"ODR":{"Station":"ODR","City":"Ord River","Lat":"-17.340832","Long":"128.911667"},"ODS":{"Station":"ODS","City":"Odessa","Lat":"46.426767","Long":"30.676464"},"ODW":{"Station":"ODW","City":"Oak Harbor","Lat":"48.251528","Long":"-122.673666"},"ODY":{"Station":"ODY","City":"Muang Xay","Lat":"20.68055","Long":"101.997223"},"OEM":{"Station":"OEM","City":"Paloemeu","Lat":"3.345278","Long":"-55.442499"},"OES":{"Station":"OES","City":"San Antonio Oeste","Lat":"-40.75122","Long":"-65.034285"},"OFI":{"Station":"OFI","City":"Ouango Fitini","Lat":"9.6","Long":"-4.05"},"OFJ":{"Station":"OFJ","City":"\u00d3lafsfj\u00f6r\u00f0ur","Lat":"66.083","Long":"-18.667"},"OFK":{"Station":"OFK","City":"Norfolk","Lat":"41.985472","Long":"-97.43511"},"OFU":{"Station":"OFU","City":"Ofu Village","Lat":"-14.18435","Long":"-169.670023"},"OGG":{"Station":"OGG","City":"Kahului","Lat":"20.89865","Long":"-156.430457"},"OGL":{"Station":"OGL","City":"Ogle","Lat":"6.806944","Long":"-58.104443"},"OGN":{"Station":"OGN","City":"Yonaguni Jima","Lat":"24.466944","Long":"122.977778"},"OGO":{"Station":"OGO","City":"Abengourou","Lat":"6.715556","Long":"-3.470277"},"OGR":{"Station":"OGR","City":"Bongor","Lat":"10.288056","Long":"15.381111"},"OGS":{"Station":"OGS","City":"Ogdensburg","Lat":"44.681861","Long":"-75.465499"},"OGX":{"Station":"OGX","City":"Ouargla","Lat":"31.931389","Long":"5.406667"},"OGZ":{"Station":"OGZ","City":"Vladikavkaz","Lat":"43.205114","Long":"44.606642"},"OHA":{"Station":"OHA","City":"Ohakea","Lat":"-40.206666","Long":"175.386944"},"OHD":{"Station":"OHD","City":"Ohrid","Lat":"41.179956","Long":"20.742325"},"OHE":{"Station":"OHE","City":"Mohe","Lat":"52.921111","Long":"122.420556"},"OHH":{"Station":"OHH","City":"Okha","Lat":"53.5175","Long":"142.880278"},"OHI":{"Station":"OHI","City":"Oshakati","Lat":"-17.796943","Long":"15.699167"},"OHO":{"Station":"OHO","City":"Okhotsk","Lat":"59.409444","Long":"143.056111"},"OHR":{"Station":"OHR","City":"Wyk Auf Foehr","Lat":"54.685329","Long":"8.531834"},"OIM":{"Station":"OIM","City":"Oshima","Lat":"34.782033","Long":"139.360306"},"OIR":{"Station":"OIR","City":"Okushiri","Lat":"42.071667","Long":"139.432911"},"OIT":{"Station":"OIT","City":"Oita","Lat":"33.479444","Long":"131.737222"},"OKA":{"Station":"OKA","City":"Okinawa","Lat":"26.195814","Long":"127.645869"},"OKC":{"Station":"OKC","City":"Oklahoma City","Lat":"35.393074","Long":"-97.600761"},"OKD":{"Station":"OKD","City":"Sapporo","Lat":"43.116139","Long":"141.38022"},"OKE":{"Station":"OKE","City":"Okino Erabu","Lat":"27.425522","Long":"128.700903"},"OKF":{"Station":"OKF","City":"Okaukuejo","Lat":"-19.149166","Long":"15.911667"},"OKG":{"Station":"OKG","City":"Okoyo","Lat":"-1.448332","Long":"15.073333"},"OKH":{"Station":"OKH","City":"Oakham","Lat":"52.735711","Long":"-0.648768"},"OKI":{"Station":"OKI","City":"Oki","Lat":"36.181125","Long":"133.324844"},"OKJ":{"Station":"OKJ","City":"Okayama","Lat":"34.756944","Long":"133.855278"},"OKN":{"Station":"OKN","City":"Okondja","Lat":"-0.665213","Long":"13.673133"},"OKO":{"Station":"OKO","City":"Tokyo","Lat":"35.748492","Long":"139.348483"},"OKR":{"Station":"OKR","City":"Masig Island","Lat":"-9.753332","Long":"143.405"},"OKT":{"Station":"OKT","City":"Oktyabrsky","Lat":"54.44","Long":"53.388333"},"OKU":{"Station":"OKU","City":"Mokuti Lodge","Lat":"-18.812777","Long":"17.058333"},"OKY":{"Station":"OKY","City":"Oakey","Lat":"-27.411388","Long":"151.735278"},"OLA":{"Station":"OLA","City":"Brekstad","Lat":"63.698908","Long":"9.604003"},"OLB":{"Station":"OLB","City":"Olbia","Lat":"40.898661","Long":"9.517628"},"OLC":{"Station":"OLC","City":"S\u00e3o Paulo de Oliven\u00e7a","Lat":"-3.465449","Long":"-68.918952"},"OLF":{"Station":"OLF","City":"Wolf Point","Lat":"48.0945","Long":"-105.575055"},"OLH":{"Station":"OLH","City":"Old Harbor","Lat":"57.218472","Long":"-153.269249"},"OLI":{"Station":"OLI","City":"","Lat":"70.49971","Long":"-149.879534"},"OLJ":{"Station":"OLJ","City":"Olpoi","Lat":"-14.881388","Long":"166.558056"},"OLL":{"Station":"OLL","City":"Oyo","Lat":"-1.221499","Long":"15.913583"},"OLP":{"Station":"OLP","City":"Olympic Dam","Lat":"-30.484999","Long":"136.876667"},"OMA":{"Station":"OMA","City":"Omaha","Lat":"41.303167","Long":"-95.894055"},"OMB":{"Station":"OMB","City":"Omboue","Lat":"-1.574732","Long":"9.262694"},"OMC":{"Station":"OMC","City":"Ormoc","Lat":"11.057997","Long":"124.565322"},"OMD":{"Station":"OMD","City":"Oranjemund","Lat":"-28.584721","Long":"16.446667"},"OME":{"Station":"OME","City":"Nome","Lat":"64.512194","Long":"-165.445277"},"OMF":{"Station":"OMF","City":"Mafraq","Lat":"32.356353","Long":"36.259181"},"OMG":{"Station":"OMG","City":"Omega","Lat":"-18.030277","Long":"22.190556"},"OMI":{"Station":"OMI","City":"Omidiyeh","Lat":"30.835167","Long":"49.534916"},"OMM":{"Station":"OMM","City":"Marmul","Lat":"18.136","Long":"55.182139"},"OMO":{"Station":"OMO","City":"Mostar","Lat":"43.2829","Long":"17.845878"},"OMR":{"Station":"OMR","City":"Oradea","Lat":"47.025278","Long":"21.9025"},"OND":{"Station":"OND","City":"Ondangwa","Lat":"-17.878213","Long":"15.9526"},"ONG":{"Station":"ONG","City":"Mornington Island","Lat":"-16.662499","Long":"139.178056"},"ONH":{"Station":"ONH","City":"Oneonta","Lat":"42.524778","Long":"-75.064471"},"ONJ":{"Station":"ONJ","City":"Odate Noshiro","Lat":"40.191872","Long":"140.371431"},"ONQ":{"Station":"ONQ","City":"Zonguldak","Lat":"41.506111","Long":"32.088611"},"ONR":{"Station":"ONR","City":"Monkira","Lat":"-24.81861","Long":"140.553056"},"ONT":{"Station":"ONT","City":"Ontario","Lat":"34.056","Long":"-117.601193"},"ONU":{"Station":"ONU","City":"Ono-I-Lau","Lat":"-20.65","Long":"-178.7"},"OOK":{"Station":"OOK","City":"Toksook Bay","Lat":"60.541333","Long":"-165.087193"},"OOL":{"Station":"OOL","City":"Coolangatta\/Gold Coast","Lat":"-28.164443","Long":"153.504722"},"OOM":{"Station":"OOM","City":"Cooma","Lat":"-36.300555","Long":"148.973889"},"OOR":{"Station":"OOR","City":"Mooraberree","Lat":"-25.244721","Long":"140.975556"},"OOT":{"Station":"OOT","City":"Onotoa","Lat":"-1.79611","Long":"175.526111"},"OPA":{"Station":"OPA","City":"K\u00f3pasker","Lat":"66.310833","Long":"-16.466666"},"OPF":{"Station":"OPF","City":"Miami","Lat":"25.907417","Long":"-80.278221"},"OPI":{"Station":"OPI","City":"Oenpelli","Lat":"-12.324999","Long":"133.005556"},"OPO":{"Station":"OPO","City":"Porto","Lat":"41.248055","Long":"-8.681388"},"OPS":{"Station":"OPS","City":"Sinop","Lat":"-11.884982","Long":"-55.586635"},"OPW":{"Station":"OPW","City":"Opuwa","Lat":"-18.054999","Long":"13.852222"},"ORA":{"Station":"ORA","City":"Or\u00e1n","Lat":"-23.152778","Long":"-64.329169"},"ORB":{"Station":"ORB","City":"\u00d6rebro","Lat":"59.223733","Long":"15.037956"},"ORD":{"Station":"ORD","City":"Chicago","Lat":"41.981649","Long":"-87.90667"},"ORF":{"Station":"ORF","City":"Norfolk","Lat":"36.894611","Long":"-76.201221"},"ORH":{"Station":"ORH","City":"Worcester","Lat":"42.267139","Long":"-71.87561"},"ORJ":{"Station":"ORJ","City":"Orinduik","Lat":"4.725271","Long":"-60.034999"},"ORK":{"Station":"ORK","City":"Cork","Lat":"51.841389","Long":"-8.49111"},"ORL":{"Station":"ORL","City":"Orlando","Lat":"28.545472","Long":"-81.332916"},"ORN":{"Station":"ORN","City":"Oran","Lat":"35.627222","Long":"-0.611388"},"ORP":{"Station":"ORP","City":"Orapa","Lat":"-21.266388","Long":"25.32"},"ORR":{"Station":"ORR","City":"Yorketown","Lat":"-35.003055","Long":"137.618889"},"ORU":{"Station":"ORU","City":"Oruro","Lat":"-17.962588","Long":"-67.076235"},"ORV":{"Station":"ORV","City":"Noorvik","Lat":"66.817528","Long":"-161.022249"},"ORW":{"Station":"ORW","City":"Ormara","Lat":"25.274742","Long":"64.585967"},"ORX":{"Station":"ORX","City":"Oriximina","Lat":"-1.714082","Long":"-55.836221"},"ORY":{"Station":"ORY","City":"Paris","Lat":"48.723333","Long":"2.379444"},"OSB":{"Station":"OSB","City":"Osage Beach","Lat":"38.110444","Long":"-92.680555"},"OSD":{"Station":"OSD","City":"\u00d6stersund","Lat":"63.194125","Long":"14.502008"},"OSH":{"Station":"OSH","City":"Oshkosh","Lat":"43.984491","Long":"-88.556934"},"OSI":{"Station":"OSI","City":"Osijek","Lat":"45.462667","Long":"18.810156"},"OSK":{"Station":"OSK","City":"Oskarshamn","Lat":"57.350453","Long":"16.497972"},"OSM":{"Station":"OSM","City":"Mosul","Lat":"36.309722","Long":"43.156667"},"OSN":{"Station":"OSN","City":"Osan","Lat":"37.090617","Long":"127.029594"},"OSP":{"Station":"OSP","City":"Slupsk","Lat":"54.478889","Long":"17.1075"},"OSS":{"Station":"OSS","City":"Osh","Lat":"40.608989","Long":"72.793269"},"OSW":{"Station":"OSW","City":"Orsk","Lat":"51.072506","Long":"58.595586"},"OSZ":{"Station":"OSZ","City":"Koszalin","Lat":"54.041111","Long":"16.264167"},"OTC":{"Station":"OTC","City":"Bol","Lat":"13.443333","Long":"14.739444"},"OTH":{"Station":"OTH","City":"North Bend","Lat":"43.416944","Long":"-124.247027"},"OTI":{"Station":"OTI","City":"Pitu","Lat":"2.045992","Long":"128.324708"},"OTM":{"Station":"OTM","City":"Ottumwa","Lat":"41.107181","Long":"-92.447072"},"OTP":{"Station":"OTP","City":"Bucharest","Lat":"44.572161","Long":"26.102178"},"OTS":{"Station":"OTS","City":"Anacortes","Lat":"48.4985","Long":"-122.662499"},"OTU":{"Station":"OTU","City":"Remedios","Lat":"7.010369","Long":"-74.715496"},"OTZ":{"Station":"OTZ","City":"Kotzebue","Lat":"66.884694","Long":"-162.598499"},"OUA":{"Station":"OUA","City":"Ouagadougou","Lat":"12.353194","Long":"-1.512416"},"OUE":{"Station":"OUE","City":"Ouesso","Lat":"1.615994","Long":"16.037917"},"OUG":{"Station":"OUG","City":"Ouahigouya","Lat":"13.562778","Long":"-2.423055"},"OUH":{"Station":"OUH","City":"Oudtshoorn","Lat":"-33.606966","Long":"22.188978"},"OUI":{"Station":"OUI","City":"Ban Houeisai","Lat":"20.258017","Long":"100.437083"},"OUL":{"Station":"OUL","City":"Oulu","Lat":"64.929167","Long":"25.355556"},"OUR":{"Station":"OUR","City":"Batouri","Lat":"4.475","Long":"14.3625"},"OUS":{"Station":"OUS","City":"Ourinhos","Lat":"-22.966499","Long":"-49.91328"},"OUT":{"Station":"OUT","City":"Bousso","Lat":"10.483","Long":"16.717"},"OVA":{"Station":"OVA","City":"Bekily","Lat":"-24.23611","Long":"45.305"},"OVB":{"Station":"OVB","City":"Novosibirsk","Lat":"55.012622","Long":"82.650656"},"OVD":{"Station":"OVD","City":"Oviedo\/Aviles","Lat":"43.563567","Long":"-6.034621"},"OWB":{"Station":"OWB","City":"Owensboro","Lat":"37.738834","Long":"-87.166828"},"OWD":{"Station":"OWD","City":"Norwood","Lat":"42.190528","Long":"-71.172943"},"OXB":{"Station":"OXB","City":"Bissau","Lat":"11.89485","Long":"-15.65368"},"OXF":{"Station":"OXF","City":"Oxford","Lat":"51.836944","Long":"-1.319999"},"OXR":{"Station":"OXR","City":"Oxnard","Lat":"34.200806","Long":"-119.207221"},"OXY":{"Station":"OXY","City":"Morney","Lat":"-25.35","Long":"141.433"},"OYA":{"Station":"OYA","City":"Goya","Lat":"-29.099471","Long":"-59.250582"},"OYE":{"Station":"OYE","City":"Oyem","Lat":"1.543108","Long":"11.581361"},"OYG":{"Station":"OYG","City":"Moyo","Lat":"3.644167","Long":"31.762778"},"OYK":{"Station":"OYK","City":"Oiapoque","Lat":"3.855486","Long":"-51.796866"},"OYL":{"Station":"OYL","City":"Moyale","Lat":"3.469444","Long":"39.101111"},"OYN":{"Station":"OYN","City":"Ouyen","Lat":"-35.088888","Long":"142.354722"},"OYO":{"Station":"OYO","City":"Tres Arroyos","Lat":"-38.38691","Long":"-60.32971"},"OYP":{"Station":"OYP","City":"St-Georges de l'Oyapok","Lat":"3.893333","Long":"-51.805555"},"OZC":{"Station":"OZC","City":"Ozamis City","Lat":"8.178508","Long":"123.841731"},"OZH":{"Station":"OZH","City":"Zaporozhye","Lat":"47.867003","Long":"35.315692"},"OZP":{"Station":"OZP","City":"Mor\u00f3n de la Frontera","Lat":"37.174917","Long":"-5.615943"},"OZZ":{"Station":"OZZ","City":"Ouarzazate","Lat":"30.939053","Long":"-6.90943"},"PAA":{"Station":"PAA","City":"Pa-an","Lat":"16.893714","Long":"97.674581"},"PAC":{"Station":"PAC","City":"Panam\u00e1 City","Lat":"8.973339","Long":"-79.555582"},"PAD":{"Station":"PAD","City":"Paderborn\/Lippstadt","Lat":"51.614089","Long":"8.616317"},"PAE":{"Station":"PAE","City":"Everett","Lat":"47.907","Long":"-122.281582"},"PAF":{"Station":"PAF","City":"Pakuba","Lat":"2.202222","Long":"31.554444"},"PAG":{"Station":"PAG","City":"Pagadian","Lat":"7.827197","Long":"123.458294"},"PAH":{"Station":"PAH","City":"Paducah","Lat":"37.060288","Long":"-88.772957"},"PAJ":{"Station":"PAJ","City":"Parachinar","Lat":"33.9","Long":"70.067"},"PAL":{"Station":"PAL","City":"Palanquero","Lat":"5.483611","Long":"-74.65736"},"PAP":{"Station":"PAP","City":"Port-au-Prince","Lat":"18.58005","Long":"-72.292541"},"PAS":{"Station":"PAS","City":"Paros","Lat":"37.010278","Long":"25.127778"},"PAT":{"Station":"PAT","City":"Patna","Lat":"25.591317","Long":"85.087992"},"PAU":{"Station":"PAU","City":"Pauk","Lat":"21.44916","Long":"94.486946"},"PAV":{"Station":"PAV","City":"Paulo Afonso","Lat":"-9.400877","Long":"-38.250574"},"PAX":{"Station":"PAX","City":"Port-de-Paix","Lat":"19.933611","Long":"-72.84861"},"PAZ":{"Station":"PAZ","City":"Poza Rica","Lat":"20.602671","Long":"-97.460838"},"PBC":{"Station":"PBC","City":"Puebla","Lat":"19.158144","Long":"-98.371446"},"PBD":{"Station":"PBD","City":"Porbandar","Lat":"21.648675","Long":"69.657219"},"PBE":{"Station":"PBE","City":"Puerto Berrio","Lat":"6.460344","Long":"-74.410474"},"PBI":{"Station":"PBI","City":"West Palm Beach","Lat":"26.683167","Long":"-80.095582"},"PBL":{"Station":"PBL","City":"Puerto Cabello","Lat":"10.4805","Long":"-68.073024"},"PBM":{"Station":"PBM","City":"Zanderij","Lat":"5.452831","Long":"-55.187782"},"PBN":{"Station":"PBN","City":"Porto Amboim","Lat":"-10.721955","Long":"13.765528"},"PBO":{"Station":"PBO","City":"Paraburdoo","Lat":"-23.17111","Long":"117.745278"},"PBQ":{"Station":"PBQ","City":"Pimenta Bueno","Lat":"-11.641563","Long":"-61.179105"},"PBR":{"Station":"PBR","City":"Puerto Barrios","Lat":"15.730878","Long":"-88.583766"},"PBU":{"Station":"PBU","City":"Putao","Lat":"27.329922","Long":"97.426269"},"PBZ":{"Station":"PBZ","City":"Plettenberg Bay","Lat":"-34.090278","Long":"23.327778"},"PCA":{"Station":"PCA","City":"Portage Creek","Lat":"58.906525","Long":"-157.711166"},"PCB":{"Station":"PCB","City":"Depok (Tangerang","Lat":"-6.336963","Long":"106.764561"},"PCD":{"Station":"PCD","City":"Prairie Du Chien","Lat":"43.019285","Long":"-91.123732"},"PCL":{"Station":"PCL","City":"Pucallpa","Lat":"-8.377938","Long":"-74.574296"},"PCN":{"Station":"PCN","City":"Picton","Lat":"-41.348332","Long":"173.955278"},"PCP":{"Station":"PCP","City":"Santo Ant\u00f3nio","Lat":"1.662936","Long":"7.411742"},"PCR":{"Station":"PCR","City":"Puerto Carre\u00f1o","Lat":"6.1875","Long":"-67.496666"},"PCS":{"Station":"PCS","City":"Picos","Lat":"-7.06206","Long":"-41.523718"},"PCT":{"Station":"PCT","City":"Princeton\/Rocky Hill","Lat":"40.399083","Long":"-74.658999"},"PCV":{"Station":"PCV","City":"Punta Chivato","Lat":"27.069167","Long":"-111.962221"},"PDA":{"Station":"PDA","City":"Puerto Inirida","Lat":"3.853531","Long":"-67.906171"},"PDB":{"Station":"PDB","City":"Pedro Bay","Lat":"59.796956","Long":"-154.129977"},"PDE":{"Station":"PDE","City":"Pandie Pandie","Lat":"-26.138055","Long":"139.392222"},"PDF":{"Station":"PDF","City":"Prado","Lat":"-17.296749","Long":"-39.271221"},"PDG":{"Station":"PDG","City":"Padang","Lat":"-0.874988","Long":"100.351881"},"PDL":{"Station":"PDL","City":"Ponta Delgada","Lat":"37.741184","Long":"-25.697869"},"PDO":{"Station":"PDO","City":"Pendopo","Lat":"-3.286068","Long":"103.8796"},"PDT":{"Station":"PDT","City":"Pendleton","Lat":"45.695056","Long":"-118.841443"},"PDU":{"Station":"PDU","City":"Paysandu","Lat":"-32.36341","Long":"-58.062135"},"PDX":{"Station":"PDX","City":"Portland","Lat":"45.588709","Long":"-122.596868"},"PDZ":{"Station":"PDZ","City":"Pedernales","Lat":"9.978717","Long":"-62.231266"},"PEE":{"Station":"PEE","City":"Perm","Lat":"57.914517","Long":"56.021214"},"PEF":{"Station":"PEF","City":"Peenem\u00fcnde","Lat":"54.157833","Long":"13.772667"},"PEG":{"Station":"PEG","City":"Perugia","Lat":"43.095906","Long":"12.513222"},"PEH":{"Station":"PEH","City":"Pehuajo","Lat":"-35.844591","Long":"-61.857552"},"PEI":{"Station":"PEI","City":"Pereira","Lat":"4.812778","Long":"-75.739443"},"PEK":{"Station":"PEK","City":"Beijing","Lat":"40.080111","Long":"116.584556"},"PEL":{"Station":"PEL","City":"Pelaneng","Lat":"-29.117","Long":"28.5"},"PEN":{"Station":"PEN","City":"George Town","Lat":"5.297139","Long":"100.276864"},"PEP":{"Station":"PEP","City":"Peppimenarti","Lat":"-14.144166","Long":"130.091111"},"PER":{"Station":"PER","City":"Perth","Lat":"-31.940277","Long":"115.966944"},"PES":{"Station":"PES","City":"Petrozavodsk","Lat":"61.885161","Long":"34.154744"},"PET":{"Station":"PET","City":"Pelotas","Lat":"-31.718352","Long":"-52.327688"},"PEU":{"Station":"PEU","City":"Puerto Lenpira","Lat":"15.262247","Long":"-83.781171"},"PEW":{"Station":"PEW","City":"Peshawar","Lat":"33.993911","Long":"71.514581"},"PEY":{"Station":"PEY","City":"Penong","Lat":"-31.922499","Long":"133.001111"},"PFB":{"Station":"PFB","City":"Passo Fundo","Lat":"-28.243988","Long":"-52.326557"},"PFJ":{"Station":"PFJ","City":"Patreksfj\u00f6r\u00f0ur","Lat":"65.555833","Long":"-23.964999"},"PFO":{"Station":"PFO","City":"Paphos","Lat":"34.718039","Long":"32.485731"},"PFQ":{"Station":"PFQ","City":"Parsabad","Lat":"39.603606","Long":"47.8815"},"PGA":{"Station":"PGA","City":"Page","Lat":"36.926083","Long":"-111.44836"},"PGC":{"Station":"PGC","City":"Petersburg","Lat":"38.994939","Long":"-79.145863"},"PGF":{"Station":"PGF","City":"Perpignan\/Rivesaltes","Lat":"42.740833","Long":"2.869722"},"PGH":{"Station":"PGH","City":"Pantnagar","Lat":"29.033408","Long":"79.473744"},"PGI":{"Station":"PGI","City":"Chitato","Lat":"-7.358888","Long":"20.804722"},"PGK":{"Station":"PGK","City":"Pangkalpinang","Lat":"-2.162199","Long":"106.139064"},"PGL":{"Station":"PGL","City":"Pascagoula","Lat":"30.462781","Long":"-88.529227"},"PGO":{"Station":"PGO","City":"Pagosa Springs","Lat":"37.28625","Long":"-107.055999"},"PGS":{"Station":"PGS","City":"Peach Springs","Lat":"35.527","Long":"-113.247416"},"PGU":{"Station":"PGU","City":"Asalouyeh","Lat":"27.379589","Long":"52.737667"},"PGV":{"Station":"PGV","City":"Greenville","Lat":"35.63525","Long":"-77.385305"},"PGX":{"Station":"PGX","City":"P\u00e9rigueux","Lat":"45.197489","Long":"0.815217"},"PGZ":{"Station":"PGZ","City":"Ponta Grossa","Lat":"-25.184713","Long":"-50.144091"},"PHA":{"Station":"PHA","City":"Phan Rang","Lat":"11.633489","Long":"108.951783"},"PHB":{"Station":"PHB","City":"Parna\u00edba","Lat":"-2.893746","Long":"-41.73196"},"PHE":{"Station":"PHE","City":"Port Hedland","Lat":"-20.377777","Long":"118.626389"},"PHF":{"Station":"PHF","City":"Newport News","Lat":"37.131889","Long":"-76.492971"},"PHI":{"Station":"PHI","City":"Pinheiro","Lat":"-2.474674","Long":"-45.105182"},"PHL":{"Station":"PHL","City":"Philadelphia","Lat":"39.872249","Long":"-75.240865"},"PHO":{"Station":"PHO","City":"Point Hope","Lat":"68.34875","Long":"-166.799277"},"PHS":{"Station":"PHS","City":"Phitsanulok","Lat":"16.782939","Long":"100.279122"},"PHW":{"Station":"PHW","City":"Phalaborwa","Lat":"-23.937165","Long":"31.15539"},"PHX":{"Station":"PHX","City":"Phoenix","Lat":"33.434278","Long":"-112.011582"},"PHY":{"Station":"PHY","City":"Phetchabun","Lat":"16.676028","Long":"101.195108"},"PIA":{"Station":"PIA","City":"Peoria","Lat":"40.664194","Long":"-89.693249"},"PIB":{"Station":"PIB","City":"Hattiesburg\/Laurel","Lat":"31.467139","Long":"-89.337055"},"PIC":{"Station":"PIC","City":"Pine Cay","Lat":"21.9","Long":"-72.1"},"PIE":{"Station":"PIE","City":"St. Petersburg-Clearwater","Lat":"27.909999","Long":"-82.687544"},"PIF":{"Station":"PIF","City":"Pingtung","Lat":"22.700239","Long":"120.482"},"PIH":{"Station":"PIH","City":"Pocatello","Lat":"42.909806","Long":"-112.595916"},"PIK":{"Station":"PIK","City":"Glasgow","Lat":"55.509444","Long":"-4.586666"},"PIN":{"Station":"PIN","City":"Parintins","Lat":"-2.673018","Long":"-56.777152"},"PIO":{"Station":"PIO","City":"Pisco","Lat":"-13.744863","Long":"-76.220283"},"PIR":{"Station":"PIR","City":"Pierre","Lat":"44.382694","Long":"-100.285971"},"PIT":{"Station":"PIT","City":"Pittsburgh","Lat":"40.491417","Long":"-80.232693"},"PIV":{"Station":"PIV","City":"Pirapora","Lat":"-17.316943","Long":"-44.860277"},"PIW":{"Station":"PIW","City":"Pikwitonei","Lat":"55.588886","Long":"-97.164168"},"PJA":{"Station":"PJA","City":"Pajala","Lat":"67.245639","Long":"23.068911"},"PJB":{"Station":"PJB","City":"Payson","Lat":"34.256836","Long":"-111.339255"},"PJG":{"Station":"PJG","City":"Panjgur","Lat":"26.954547","Long":"64.132517"},"PJM":{"Station":"PJM","City":"Puerto Jim\u00e9nez","Lat":"8.535556","Long":"-83.299721"},"PKB":{"Station":"PKB","City":"Parkersburg","Lat":"39.344972","Long":"-81.439305"},"PKC":{"Station":"PKC","City":"Petropavlovsk-Kamchatskiy","Lat":"53.167889","Long":"158.453669"},"PKE":{"Station":"PKE","City":"Parkes","Lat":"-33.131388","Long":"148.239167"},"PKG":{"Station":"PKG","City":"Pulau Pangkor","Lat":"4.244722","Long":"100.553333"},"PKH":{"Station":"PKH","City":"Porto Cheli","Lat":"37.299992","Long":"23.149445"},"PKJ":{"Station":"PKJ","City":"Playa Grande","Lat":"15.9975","Long":"-90.741666"},"PKK":{"Station":"PKK","City":"Pakokku","Lat":"21.333","Long":"95.1"},"PKN":{"Station":"PKN","City":"Pangkalanbuun","Lat":"-2.705196","Long":"111.673208"},"PKO":{"Station":"PKO","City":"Parakou","Lat":"9.356944","Long":"2.609167"},"PKP":{"Station":"PKP","City":"Puka Puka","Lat":"-14.809999","Long":"-138.81111"},"PKR":{"Station":"PKR","City":"Pokhara","Lat":"28.2","Long":"83.981667"},"PKT":{"Station":"PKT","City":"Port Keats","Lat":"-14.249999","Long":"129.529167"},"PKU":{"Station":"PKU","City":"Pekanbaru","Lat":"0.460786","Long":"101.444539"},"PKY":{"Station":"PKY","City":"Palangkaraya","Lat":"-2.225127","Long":"113.942661"},"PKZ":{"Station":"PKZ","City":"Pakse","Lat":"15.132053","Long":"105.781417"},"PLF":{"Station":"PLF","City":"Pala","Lat":"9.378056","Long":"14.925"},"PLH":{"Station":"PLH","City":"Plymouth","Lat":"50.422778","Long":"-4.105832"},"PLL":{"Station":"PLL","City":"Manaus","Lat":"-3.146041","Long":"-59.986299"},"PLM":{"Station":"PLM","City":"Palembang","Lat":"-2.898249","Long":"104.699903"},"PLN":{"Station":"PLN","City":"Pellston","Lat":"45.570917","Long":"-84.796721"},"PLO":{"Station":"PLO","City":"Port Lincoln","Lat":"-34.605277","Long":"135.880278"},"PLP":{"Station":"PLP","City":"La Palma","Lat":"8.406667","Long":"-78.141668"},"PLQ":{"Station":"PLQ","City":"Palanga","Lat":"55.973228","Long":"21.093856"},"PLS":{"Station":"PLS","City":"Providenciales","Lat":"21.773764","Long":"-72.268674"},"PLT":{"Station":"PLT","City":"Plato","Lat":"9.8","Long":"-74.783332"},"PLU":{"Station":"PLU","City":"Belo Horizonte","Lat":"-19.85118","Long":"-43.950627"},"PLV":{"Station":"PLV","City":"Poltava","Lat":"49.568611","Long":"34.397222"},"PLW":{"Station":"PLW","City":"Palu","Lat":"-0.918541","Long":"119.909642"},"PLX":{"Station":"PLX","City":"Semey","Lat":"50.351303","Long":"80.234361"},"PLY":{"Station":"PLY","City":"Plymouth","Lat":"41.365131","Long":"-86.300256"},"PLZ":{"Station":"PLZ","City":"Port Elizabeth","Lat":"-33.990013","Long":"25.610278"},"PMA":{"Station":"PMA","City":"Pemba","Lat":"-5.257263","Long":"39.811417"},"PMC":{"Station":"PMC","City":"Puerto Montt","Lat":"-41.438885","Long":"-73.093952"},"PMD":{"Station":"PMD","City":"Palmdale","Lat":"34.629389","Long":"-118.084552"},"PMI":{"Station":"PMI","City":"Palma de Mallorca","Lat":"39.551675","Long":"2.738808"},"PMK":{"Station":"PMK","City":"Palm Island","Lat":"-18.755277","Long":"146.581389"},"PML":{"Station":"PML","City":"Cold Bay","Lat":"56.005986","Long":"-160.560791"},"PMO":{"Station":"PMO","City":"Palermo","Lat":"38.175958","Long":"13.091019"},"PMQ":{"Station":"PMQ","City":"Perito Moreno","Lat":"-46.536388","Long":"-70.981943"},"PMR":{"Station":"PMR","City":"Palmerston North","Lat":"-40.320555","Long":"175.616944"},"PMS":{"Station":"PMS","City":"Palmyra","Lat":"34.557361","Long":"38.316889"},"PMV":{"Station":"PMV","City":"Porlamar","Lat":"10.912926","Long":"-63.96758"},"PMW":{"Station":"PMW","City":"Palmas","Lat":"-10.291524","Long":"-48.356971"},"PMX":{"Station":"PMX","City":"Palmer","Lat":"42.223287","Long":"-72.311386"},"PNB":{"Station":"PNB","City":"Porto Nacional","Lat":"-10.719416","Long":"-48.399735"},"PNC":{"Station":"PNC","City":"Ponca City","Lat":"36.731917","Long":"-97.099777"},"PND":{"Station":"PND","City":"Punta Gorda","Lat":"16.102222","Long":"-88.808055"},"PNG":{"Station":"PNG","City":"Paranagu\u00e1","Lat":"-25.540096","Long":"-48.53118"},"PNH":{"Station":"PNH","City":"Phnom Penh","Lat":"11.546556","Long":"104.844139"},"PNI":{"Station":"PNI","City":"Pohnpei","Lat":"6.9851","Long":"158.208988"},"PNK":{"Station":"PNK","City":"Pontianak","Lat":"-0.15071","Long":"109.403892"},"PNL":{"Station":"PNL","City":"Pantelleria","Lat":"36.816519","Long":"11.968864"},"PNO":{"Station":"PNO","City":"Pinotepa","Lat":"16.35","Long":"-98.062"},"PNQ":{"Station":"PNQ","City":"Pune","Lat":"18.582111","Long":"73.919697"},"PNR":{"Station":"PNR","City":"Pointe Noire","Lat":"-4.814721","Long":"11.886389"},"PNS":{"Station":"PNS","City":"Pensacola","Lat":"30.473426","Long":"-87.186611"},"PNU":{"Station":"PNU","City":"Panguitch","Lat":"37.845222","Long":"-112.391943"},"PNV":{"Station":"PNV","City":"Panevezys","Lat":"55.729444","Long":"24.460833"},"PNX":{"Station":"PNX","City":"Sherman\/Denison","Lat":"33.714111","Long":"-96.673666"},"POA":{"Station":"POA","City":"Porto Alegre","Lat":"-29.994427","Long":"-51.171427"},"POG":{"Station":"POG","City":"Port Gentil","Lat":"-0.711738","Long":"8.754383"},"POI":{"Station":"POI","City":"Potos\u00ed","Lat":"-19.543068","Long":"-65.723705"},"POJ":{"Station":"POJ","City":"Par\u00e1 de Minas","Lat":"-18.672749","Long":"-46.491191"},"POL":{"Station":"POL","City":"Pemba","Lat":"-12.986752","Long":"40.522492"},"POM":{"Station":"POM","City":"Port Moresby","Lat":"-9.443382","Long":"147.22005"},"PON":{"Station":"PON","City":"Popt\u00fan","Lat":"16.325833","Long":"-89.41611"},"POO":{"Station":"POO","City":"Po\u00e7os de Caldas","Lat":"-21.843013","Long":"-46.567916"},"POP":{"Station":"POP","City":"Puerto Plata","Lat":"19.7579","Long":"-70.570032"},"POR":{"Station":"POR","City":"Pori","Lat":"61.461686","Long":"21.799983"},"POS":{"Station":"POS","City":"Port of Spain","Lat":"10.595278","Long":"-61.337221"},"POT":{"Station":"POT","City":"Port Antonio","Lat":"18.198806","Long":"-76.534527"},"POU":{"Station":"POU","City":"Poughkeepsie","Lat":"41.626583","Long":"-73.884193"},"POV":{"Station":"POV","City":"Presov","Lat":"49.02972","Long":"21.315556"},"POZ":{"Station":"POZ","City":"Poznan","Lat":"52.421031","Long":"16.826325"},"PPE":{"Station":"PPE","City":"Punta Pe\u00f1asco","Lat":"31.351878","Long":"-113.525727"},"PPG":{"Station":"PPG","City":"Pago Pago","Lat":"-14.331659","Long":"-170.711502"},"PPI":{"Station":"PPI","City":"Port Pirie","Lat":"-33.238888","Long":"137.995"},"PPK":{"Station":"PPK","City":"Petropavlovsk","Lat":"54.774353","Long":"69.183994"},"PPL":{"Station":"PPL","City":"Phaplu","Lat":"27.517","Long":"86.6"},"PPM":{"Station":"PPM","City":"Pompano Beach","Lat":"26.247139","Long":"-80.111055"},"PPN":{"Station":"PPN","City":"Popay\u00e1n","Lat":"2.45455","Long":"-76.609005"},"PPP":{"Station":"PPP","City":"Proserpine","Lat":"-20.494999","Long":"148.552222"},"PPR":{"Station":"PPR","City":"Pasir Pangarayan","Lat":"0.845431","Long":"100.370292"},"PPS":{"Station":"PPS","City":"Puerto Princesa","Lat":"9.742119","Long":"118.758731"},"PPT":{"Station":"PPT","City":"Papeete","Lat":"-17.556666","Long":"-149.611388"},"PPW":{"Station":"PPW","City":"Papa Westray","Lat":"59.350833","Long":"-2.899999"},"PPY":{"Station":"PPY","City":"Pouso Alegre","Lat":"-22.289191","Long":"-45.919124"},"PQC":{"Station":"PQC","City":"Ph\u00fa Qu\u00f3c","Lat":"10.171667","Long":"103.991111"},"PQI":{"Station":"PQI","City":"Presque Isle","Lat":"46.688972","Long":"-68.044805"},"PQM":{"Station":"PQM","City":"Palenque","Lat":"17.533431","Long":"-91.984516"},"PQQ":{"Station":"PQQ","City":"Port Macquarie","Lat":"-31.435832","Long":"152.863333"},"PQS":{"Station":"PQS","City":"Pilot Station","Lat":"61.934556","Long":"-162.899555"},"PRC":{"Station":"PRC","City":"Prescott","Lat":"34.654833","Long":"-112.419221"},"PRD":{"Station":"PRD","City":"Pardoo","Lat":"-20.117499","Long":"119.59"},"PRH":{"Station":"PRH","City":"Phrae","Lat":"18.132169","Long":"100.164664"},"PRI":{"Station":"PRI","City":"Praslin Island","Lat":"-4.319291","Long":"55.691417"},"PRK":{"Station":"PRK","City":"Prieska","Lat":"-29.683","Long":"22.767"},"PRM":{"Station":"PRM","City":"Portim\u00e3o","Lat":"37.149331","Long":"-8.58396"},"PRN":{"Station":"PRN","City":"Pristina","Lat":"42.572778","Long":"21.035833"},"PRP":{"Station":"PRP","City":"Propriano","Lat":"41.661389","Long":"8.895"},"PRQ":{"Station":"PRQ","City":"Presidencia Roque S\u00e1enz Pe\u00f1a","Lat":"-26.756518","Long":"-60.493102"},"PRS":{"Station":"PRS","City":"Parasi","Lat":"-9.641666","Long":"161.425278"},"PRU":{"Station":"PRU","City":"Prome","Lat":"18.824478","Long":"95.266003"},"PRV":{"Station":"PRV","City":"Prerov","Lat":"49.425833","Long":"17.404722"},"PRW":{"Station":"PRW","City":"Prentice","Lat":"45.543019","Long":"-90.279315"},"PRY":{"Station":"PRY","City":"Pretoria","Lat":"-25.653857","Long":"28.224231"},"PSA":{"Station":"PSA","City":"Pisa","Lat":"43.683917","Long":"10.39275"},"PSD":{"Station":"PSD","City":"Port Said","Lat":"31.279444","Long":"32.24"},"PSE":{"Station":"PSE","City":"Ponce","Lat":"18.008306","Long":"-66.562999"},"PSG":{"Station":"PSG","City":"Petersburg","Lat":"56.801472","Long":"-132.946221"},"PSH":{"Station":"PSH","City":"St. Peter","Lat":"54.308998","Long":"8.686833"},"PSI":{"Station":"PSI","City":"Pasni","Lat":"25.290487","Long":"63.345083"},"PSJ":{"Station":"PSJ","City":"Poso","Lat":"-1.416752","Long":"120.657669"},"PSM":{"Station":"PSM","City":"Portsmouth","Lat":"43.077944","Long":"-70.823277"},"PSO":{"Station":"PSO","City":"Pasto","Lat":"1.396247","Long":"-77.291477"},"PSP":{"Station":"PSP","City":"Palm Springs","Lat":"33.829667","Long":"-116.506693"},"PSR":{"Station":"PSR","City":"Pescara","Lat":"42.431656","Long":"14.181067"},"PSU":{"Station":"PSU","City":"Putussibau","Lat":"0.835578","Long":"112.937144"},"PSV":{"Station":"PSV","City":"Papa Stour","Lat":"60.321667","Long":"-1.693055"},"PSW":{"Station":"PSW","City":"Passos","Lat":"-20.732241","Long":"-46.661771"},"PSY":{"Station":"PSY","City":"Stanley","Lat":"-51.685671","Long":"-57.777643"},"PSZ":{"Station":"PSZ","City":"Puerto Su\u00e1rez","Lat":"-18.97528","Long":"-57.820585"},"PTA":{"Station":"PTA","City":"Port Alsworth","Lat":"60.204333","Long":"-154.318872"},"PTF":{"Station":"PTF","City":"Malolo Lailai Island","Lat":"-17.777943","Long":"177.196722"},"PTG":{"Station":"PTG","City":"Polokwane","Lat":"-23.849646","Long":"29.456489"},"PTJ":{"Station":"PTJ","City":"Portland","Lat":"-38.318055","Long":"141.471111"},"PTK":{"Station":"PTK","City":"Pontiac","Lat":"42.665636","Long":"-83.420505"},"PTM":{"Station":"PTM","City":"Palmarito","Lat":"7.575706","Long":"-70.174327"},"PTO":{"Station":"PTO","City":"Pato Branco","Lat":"-26.217849","Long":"-52.694255"},"PTP":{"Station":"PTP","City":"Pointe-\u00e0-Pitre","Lat":"16.264167","Long":"-61.525832"},"PTQ":{"Station":"PTQ","City":"P\u00f4rto de Moz","Lat":"-1.741452","Long":"-52.236066"},"PTX":{"Station":"PTX","City":"Pitalito","Lat":"1.857769","Long":"-76.085718"},"PTY":{"Station":"PTY","City":"Panam\u00e1 City","Lat":"9.071364","Long":"-79.383452"},"PTZ":{"Station":"PTZ","City":"Shell","Lat":"-1.505238","Long":"-78.062674"},"PUB":{"Station":"PUB","City":"Pueblo","Lat":"38.289948","Long":"-104.498027"},"PUD":{"Station":"PUD","City":"Puerto Deseado","Lat":"-47.735291","Long":"-65.904096"},"PUG":{"Station":"PUG","City":"Port Augusta","Lat":"-32.506943","Long":"137.716667"},"PUJ":{"Station":"PUJ","City":"Punta Cana","Lat":"18.567367","Long":"-68.36343"},"PUK":{"Station":"PUK","City":"Pukarua","Lat":"-18.295555","Long":"-137.017221"},"PUN":{"Station":"PUN","City":"Punia","Lat":"-1.367","Long":"26.333"},"PUP":{"Station":"PUP","City":"Po","Lat":"11.179167","Long":"-1.148332"},"PUQ":{"Station":"PUQ","City":"Punta Arenas","Lat":"-53.002641","Long":"-70.854585"},"PUR":{"Station":"PUR","City":"Puerto Rico","Lat":"-11.107499","Long":"-67.548332"},"PUS":{"Station":"PUS","City":"Busan","Lat":"35.179528","Long":"128.938222"},"PUT":{"Station":"PUT","City":"Puttaparthi","Lat":"14.149267","Long":"77.791142"},"PUU":{"Station":"PUU","City":"Puerto Asis","Lat":"0.505","Long":"-76.500874"},"PUV":{"Station":"PUV","City":"Poum","Lat":"-20.289166","Long":"164.099444"},"PUW":{"Station":"PUW","City":"Pullman\/Moscow ID","Lat":"46.743861","Long":"-117.109582"},"PUX":{"Station":"PUX","City":"Puerto Varas","Lat":"-41.349166","Long":"-72.946943"},"PUY":{"Station":"PUY","City":"Pula","Lat":"44.893533","Long":"13.922192"},"PUZ":{"Station":"PUZ","City":"Puerto Cabezas","Lat":"14.047194","Long":"-83.386721"},"PVA":{"Station":"PVA","City":"Providencia","Lat":"13.356944","Long":"-81.358329"},"PVC":{"Station":"PVC","City":"Provincetown","Lat":"42.072278","Long":"-70.220721"},"PVD":{"Station":"PVD","City":"Providence","Lat":"41.723999","Long":"-71.42822"},"PVG":{"Station":"PVG","City":"Shanghai","Lat":"31.143378","Long":"121.805214"},"PVH":{"Station":"PVH","City":"Porto Velho","Lat":"-8.709293","Long":"-63.90228"},"PVI":{"Station":"PVI","City":"Paranavai","Lat":"-23.089891","Long":"-52.488521"},"PVN":{"Station":"PVN","City":"Pleven","Lat":"43.451111","Long":"24.503333"},"PVO":{"Station":"PVO","City":"Portoviejo","Lat":"-1.041646","Long":"-80.472205"},"PVR":{"Station":"PVR","City":"Puerto Vallarta","Lat":"20.680083","Long":"-105.254166"},"PVS":{"Station":"PVS","City":"Provideniya Bay","Lat":"64.378139","Long":"-173.243305"},"PVU":{"Station":"PVU","City":"Provo","Lat":"40.219194","Long":"-111.72336"},"PWE":{"Station":"PWE","City":"Pevek","Lat":"69.783283","Long":"170.597006"},"PWK":{"Station":"PWK","City":"Chicago\/Prospect Heights\/Wheeling","Lat":"42.114278","Long":"-87.901527"},"PWM":{"Station":"PWM","City":"Portland","Lat":"43.645643","Long":"-70.308615"},"PWN":{"Station":"PWN","City":"Pitts Town","Lat":"22.829722","Long":"-74.34611"},"PWQ":{"Station":"PWQ","City":"Pavlodar","Lat":"52.195","Long":"77.073889"},"PWT":{"Station":"PWT","City":"Bremerton","Lat":"47.49025","Long":"-122.764805"},"PXH":{"Station":"PXH","City":"Prominent Hill","Lat":"-29.717","Long":"135.521"},"PXL":{"Station":"PXL","City":"Polacca","Lat":"35.791611","Long":"-110.423388"},"PXM":{"Station":"PXM","City":"Puerto Escondido","Lat":"15.876861","Long":"-97.089116"},"PXO":{"Station":"PXO","City":"Porto Santo","Lat":"33.073386","Long":"-16.349974"},"PXR":{"Station":"PXR","City":"Surin","Lat":"14.868264","Long":"103.498256"},"PXU":{"Station":"PXU","City":"Pleiku","Lat":"14.004522","Long":"108.017158"},"PYA":{"Station":"PYA","City":"Puerto Boyaca","Lat":"5.939044","Long":"-74.456966"},"PYB":{"Station":"PYB","City":"Jeypore","Lat":"18.88","Long":"82.554"},"PYE":{"Station":"PYE","City":"Penrhyn Island","Lat":"-9.006666","Long":"-158.036666"},"PYH":{"Station":"PYH","City":"Puerto Ayacucho","Lat":"5.619992","Long":"-67.606102"},"PYJ":{"Station":"PYJ","City":"Polyarnyj","Lat":"66.400431","Long":"112.030325"},"PYR":{"Station":"PYR","City":"Pyrgos","Lat":"37.920708","Long":"21.292583"},"PZA":{"Station":"PZA","City":"Paz de Ariporo","Lat":"5.876147","Long":"-71.886602"},"PZB":{"Station":"PZB","City":"Pietermaritzburg","Lat":"-29.648974","Long":"30.398667"},"PZI":{"Station":"PZI","City":"Panzhihua","Lat":"26.54","Long":"101.799"},"PZL":{"Station":"PZL","City":"Phinda","Lat":"-27.849443","Long":"32.309722"},"PZO":{"Station":"PZO","City":"Puerto Ordaz","Lat":"8.288528","Long":"-62.76036"},"PZU":{"Station":"PZU","City":"Port Sudan","Lat":"19.433639","Long":"37.234075"},"QAK":{"Station":"QAK","City":"Barbacena","Lat":"-21.267166","Long":"-43.761055"},"QAM":{"Station":"QAM","City":"Amiens","Lat":"49.873103","Long":"2.386986"},"QAQ":{"Station":"QAQ","City":"L'Aquila","Lat":"42.379886","Long":"13.309231"},"QAR":{"Station":"QAR","City":"Arnhem","Lat":"52.060556","Long":"5.873056"},"QBC":{"Station":"QBC","City":"Bella Coola","Lat":"52.387501","Long":"-126.595832"},"QBQ":{"Station":"QBQ","City":"Besan\u00e7on","Lat":"47.274722","Long":"6.084167"},"QBX":{"Station":"QBX","City":"Sobral","Lat":"-3.678888","Long":"-40.33681"},"QCH":{"Station":"QCH","City":"Colatina","Lat":"-19.486991","Long":"-40.579416"},"QDV":{"Station":"QDV","City":"Jundia\u00ed","Lat":"-23.181696","Long":"-46.943471"},"QFD":{"Station":"QFD","City":"Boufarik","Lat":"36.545834","Long":"2.876111"},"QFH":{"Station":"QFH","City":"Saeby","Lat":"57.345833","Long":"10.407778"},"QFO":{"Station":"QFO","City":"Duxford","Lat":"52.090833","Long":"0.131944"},"QFR":{"Station":"QFR","City":"Frosinone","Lat":"41.648","Long":"13.295"},"QGA":{"Station":"QGA","City":"Guaira","Lat":"-24.081105","Long":"-54.191657"},"QGB":{"Station":"QGB","City":"Limeira","Lat":"-22.564443","Long":"-47.404721"},"QGS":{"Station":"QGS","City":"Alagoinhas","Lat":"-12.175052","Long":"-38.380185"},"QGU":{"Station":"QGU","City":"Gifu","Lat":"35.394078","Long":"136.869667"},"QHP":{"Station":"QHP","City":"Taubat\u00e9","Lat":"-23.040132","Long":"-45.51601"},"QIE":{"Station":"QIE","City":"Istres","Lat":"43.522394","Long":"4.924236"},"QIG":{"Station":"QIG","City":"Iguatu","Lat":"-6.346638","Long":"-39.293776"},"QJB":{"Station":"QJB","City":"Jubail","Lat":"27.039028","Long":"49.405083"},"QJD":{"Station":"QJD","City":"Jindabyne","Lat":"-36.426666","Long":"148.601667"},"QKC":{"Station":"QKC","City":"Karaj","Lat":"35.776094","Long":"50.826686"},"QKX":{"Station":"QKX","City":"Kautokeino","Lat":"69.05","Long":"23.05"},"QKZ":{"Station":"QKZ","City":"Konstanz","Lat":"47.681111","Long":"9.139167"},"QLD":{"Station":"QLD","City":"Blida","Lat":"36.503613","Long":"2.814167"},"QLF":{"Station":"QLF","City":"Lahti-Vesivehmaa","Lat":"61.144167","Long":"25.693056"},"QLS":{"Station":"QLS","City":"Lausanne","Lat":"46.545","Long":"6.616389"},"QMM":{"Station":"QMM","City":"Marina di Massa","Lat":"43.985833","Long":"10.143611"},"QND":{"Station":"QND","City":"Novi Sad","Lat":"45.385833","Long":"19.839167"},"QNM":{"Station":"QNM","City":"Namur","Lat":"50.488056","Long":"4.768889"},"QNX":{"Station":"QNX","City":"Macon","Lat":"46.295922","Long":"4.795858"},"QOB":{"Station":"QOB","City":"Ansbach-Petersdorf","Lat":"49.36","Long":"10.670833"},"QOE":{"Station":"QOE","City":"N\u00f6rvenich","Lat":"50.831","Long":"6.658"},"QOW":{"Station":"QOW","City":"Owerri","Lat":"5.427056","Long":"7.206031"},"QOX":{"Station":"QOX","City":"Memmingen","Lat":"47.983","Long":"10.233"},"QPA":{"Station":"QPA","City":"Padua","Lat":"45.395767","Long":"11.847903"},"QPD":{"Station":"QPD","City":"Pinar del R\u00edo","Lat":"22.421356","Long":"-83.678427"},"QPG":{"Station":"QPG","City":"Singapore","Lat":"1.360417","Long":"103.90953"},"QPM":{"Station":"QPM","City":"Polska Nowa Wies","Lat":"50.6325","Long":"17.782778"},"QRA":{"Station":"QRA","City":"Johannesburg","Lat":"-26.242505","Long":"28.151169"},"QRC":{"Station":"QRC","City":"Rancagua","Lat":"-34.173693","Long":"-70.775693"},"QRM":{"Station":"QRM","City":"Narromine","Lat":"-32.214721","Long":"148.225"},"QRO":{"Station":"QRO","City":"Quer\u00e9taro","Lat":"20.617289","Long":"-100.185657"},"QRR":{"Station":"QRR","City":"Warren","Lat":"-31.733332","Long":"147.8025"},"QRT":{"Station":"QRT","City":"Rieti","Lat":"42.433","Long":"12.85"},"QRW":{"Station":"QRW","City":"Warri","Lat":"5.596111","Long":"5.817778"},"QSA":{"Station":"QSA","City":"Sabadell","Lat":"41.520902","Long":"2.105028"},"QSR":{"Station":"QSR","City":"Salerno","Lat":"40.6204","Long":"14.911294"},"QTJ":{"Station":"QTJ","City":"Chartres","Lat":"48.458889","Long":"1.523889"},"QUB":{"Station":"QUB","City":"Ubari","Lat":"26.567492","Long":"12.823106"},"QUN":{"Station":"QUN","City":"Chun Chon City","Lat":"37.88375","Long":"127.717972"},"QUO":{"Station":"QUO","City":"Uyo","Lat":"4.875833","Long":"8.098889"},"QUT":{"Station":"QUT","City":"Nikko","Lat":"36.514544","Long":"139.870936"},"QUY":{"Station":"QUY","City":"Wyton","Lat":"52.357167","Long":"-0.107832"},"QVB":{"Station":"QVB","City":"Uni\u00e3o da Vit\u00f3ria","Lat":"-26.233352","Long":"-51.06783"},"QVE":{"Station":"QVE","City":"Forssa","Lat":"60.801944","Long":"23.645556"},"QVR":{"Station":"QVR","City":"Volta Redonda","Lat":"-22.497777","Long":"-44.084721"},"QWG":{"Station":"QWG","City":"Charlotte","Lat":"35.213755","Long":"-80.670067"},"QXD":{"Station":"QXD","City":"Cachoeiro do Itapemirim","Lat":"-20.83426","Long":"-41.185605"},"QZN":{"Station":"QZN","City":"Relizane","Lat":"35.752239","Long":"0.626272"},"QZO":{"Station":"QZO","City":"Arezzo","Lat":"43.455","Long":"11.847222"},"RAB":{"Station":"RAB","City":"Kokopo","Lat":"-4.340455","Long":"152.379667"},"RAE":{"Station":"RAE","City":"Arar","Lat":"30.906589","Long":"41.138217"},"RAG":{"Station":"RAG","City":"Raglan","Lat":"-37.804721","Long":"174.86"},"RAH":{"Station":"RAH","City":"Rafha","Lat":"29.626419","Long":"43.490614"},"RAI":{"Station":"RAI","City":"Praia","Lat":"14.941944","Long":"-23.484166"},"RAJ":{"Station":"RAJ","City":"Rajkot","Lat":"22.309183","Long":"70.779525"},"RAK":{"Station":"RAK","City":"Marrakech","Lat":"31.606886","Long":"-8.036299"},"RAM":{"Station":"RAM","City":"Ramingining","Lat":"-12.356388","Long":"134.8975"},"RAN":{"Station":"RAN","City":"Ravenna","Lat":"44.36425","Long":"12.224864"},"RAO":{"Station":"RAO","City":"Riber\u00e3o Preto","Lat":"-21.134166","Long":"-47.774188"},"RAP":{"Station":"RAP","City":"Rapid City","Lat":"44.045333","Long":"-103.05736"},"RAR":{"Station":"RAR","City":"Avarua","Lat":"-21.202738","Long":"-159.805555"},"RAT":{"Station":"RAT","City":"Raduzhnyi","Lat":"62.158572","Long":"77.328903"},"RAV":{"Station":"RAV","City":"Cravo Norte","Lat":"6.320556","Long":"-70.213055"},"RAZ":{"Station":"RAZ","City":"Rawala Kot","Lat":"33.849658","Long":"73.798147"},"RBA":{"Station":"RBA","City":"Rabat","Lat":"34.051467","Long":"-6.751518"},"RBF":{"Station":"RBF","City":"Big Bear City","Lat":"34.263778","Long":"-116.856027"},"RBJ":{"Station":"RBJ","City":"Rebun","Lat":"45.455","Long":"141.039167"},"RBK":{"Station":"RBK","City":"Murrieta\/Temecula","Lat":"33.574179","Long":"-117.128472"},"RBQ":{"Station":"RBQ","City":"Rurrenabaque","Lat":"-14.427499","Long":"-67.498055"},"RBR":{"Station":"RBR","City":"Rio Branco","Lat":"-9.869157","Long":"-67.894071"},"RBS":{"Station":"RBS","City":"Orbost","Lat":"-37.789999","Long":"148.612222"},"RBT":{"Station":"RBT","City":"Marsabit","Lat":"2.35","Long":"37.983"},"RBU":{"Station":"RBU","City":"Roebourne","Lat":"-20.760555","Long":"117.159167"},"RBV":{"Station":"RBV","City":"Ramata Island","Lat":"-8.168055","Long":"157.6425"},"RBX":{"Station":"RBX","City":"Rumbek","Lat":"6.825","Long":"29.669"},"RCB":{"Station":"RCB","City":"Richards Bay","Lat":"-28.741038","Long":"32.092111"},"RCE":{"Station":"RCE","City":"Roche Harbor","Lat":"48.612322","Long":"-123.138519"},"RCH":{"Station":"RCH","City":"Rio Hacha","Lat":"11.523556","Long":"-72.927138"},"RCL":{"Station":"RCL","City":"Redcliffe","Lat":"-15.472","Long":"167.835"},"RCM":{"Station":"RCM","City":"Richmond","Lat":"-20.701943","Long":"143.114722"},"RCO":{"Station":"RCO","City":"Rochefort","Lat":"45.889528","Long":"-0.982393"},"RCQ":{"Station":"RCQ","City":"Reconquista","Lat":"-29.210277","Long":"-59.679999"},"RCU":{"Station":"RCU","City":"Rio Cuarto","Lat":"-33.085127","Long":"-64.261313"},"RCY":{"Station":"RCY","City":"Port Nelson","Lat":"23.684378","Long":"-74.836185"},"RDA":{"Station":"RDA","City":"Rockhampton Downs","Lat":"-18.953332","Long":"135.200556"},"RDB":{"Station":"RDB","City":"Red Dog","Lat":"68.032111","Long":"-162.899193"},"RDC":{"Station":"RDC","City":"Reden\u00e7\u00e3o","Lat":"-8.033291","Long":"-49.979916"},"RDD":{"Station":"RDD","City":"Redding","Lat":"40.509","Long":"-122.293388"},"RDG":{"Station":"RDG","City":"Reading","Lat":"40.3785","Long":"-75.965249"},"RDN":{"Station":"RDN","City":"Redang","Lat":"5.765278","Long":"103.006944"},"RDS":{"Station":"RDS","City":"Rinc\u00f3n de los Sauces","Lat":"-37.390616","Long":"-68.90421"},"RDT":{"Station":"RDT","City":"Richard Toll","Lat":"16.4375","Long":"-15.657221"},"RDU":{"Station":"RDU","City":"Raleigh\/Durham","Lat":"35.877639","Long":"-78.787471"},"RDZ":{"Station":"RDZ","City":"Rodez","Lat":"44.4075","Long":"2.483333"},"REA":{"Station":"REA","City":"Reao","Lat":"-18.463332","Long":"-136.443055"},"REB":{"Station":"REB","City":"Rechlin","Lat":"53.306417","Long":"12.753139"},"REC":{"Station":"REC","City":"Recife","Lat":"-8.126793","Long":"-34.923038"},"REG":{"Station":"REG","City":"Reggio Calabria","Lat":"38.071206","Long":"15.651556"},"REI":{"Station":"REI","City":"R\u00e9gina","Lat":"4.314722","Long":"-52.131666"},"REL":{"Station":"REL","City":"Trelew","Lat":"-43.210499","Long":"-65.270318"},"REN":{"Station":"REN","City":"Orenburg","Lat":"51.795786","Long":"55.456744"},"RER":{"Station":"RER","City":"Retalhuleu","Lat":"14.521017","Long":"-91.697255"},"RES":{"Station":"RES","City":"Resistencia","Lat":"-27.449985","Long":"-59.056124"},"REU":{"Station":"REU","City":"Reus","Lat":"41.147392","Long":"1.167172"},"REX":{"Station":"REX","City":"Reynosa","Lat":"26.008908","Long":"-98.228512"},"REY":{"Station":"REY","City":"Reyes","Lat":"-14.305832","Long":"-67.35361"},"REZ":{"Station":"REZ","City":"Resende","Lat":"-22.478496","Long":"-44.480335"},"RFA":{"Station":"RFA","City":"Rafai","Lat":"4.988611","Long":"23.927778"},"RFD":{"Station":"RFD","City":"Chicago\/Rockford","Lat":"42.195361","Long":"-89.097221"},"RFK":{"Station":"RFK","City":"Rolling Fork","Lat":"32.954293","Long":"-90.845932"},"RFN":{"Station":"RFN","City":"Raufarh\u00f6fn","Lat":"66.406389","Long":"-15.918332"},"RFP":{"Station":"RFP","City":"Raiatea","Lat":"-16.72286","Long":"-151.465855"},"RFR":{"Station":"RFR","City":"Rio Frio","Lat":"10.317","Long":"-83.883"},"RGA":{"Station":"RGA","City":"Rio Grande","Lat":"-53.777666","Long":"-67.749388"},"RGH":{"Station":"RGH","City":"Balurghat","Lat":"25.261667","Long":"88.795556"},"RGI":{"Station":"RGI","City":"Rangiroa","Lat":"-14.955277","Long":"-147.657777"},"RGL":{"Station":"RGL","City":"Rio Gallegos","Lat":"-51.608874","Long":"-69.312635"},"RGN":{"Station":"RGN","City":"Yangon","Lat":"16.907305","Long":"96.133222"},"RGR":{"Station":"RGR","City":"Ranger","Lat":"32.451475","Long":"-98.681511"},"RGS":{"Station":"RGS","City":"Burgos","Lat":"42.357381","Long":"-3.613641"},"RGT":{"Station":"RGT","City":"Rengat","Lat":"-0.352807","Long":"102.334917"},"RHA":{"Station":"RHA","City":"Reykh\u00f3lar","Lat":"65.449722","Long":"-22.229999"},"RHE":{"Station":"RHE","City":"Reims-Champagne","Lat":"49.310278","Long":"4.050833"},"RHI":{"Station":"RHI","City":"Rhinelander","Lat":"45.6309","Long":"-89.466627"},"RHL":{"Station":"RHL","City":"Roy Hill","Lat":"-22.625277","Long":"119.958889"},"RHO":{"Station":"RHO","City":"Rhodos","Lat":"36.405419","Long":"28.086192"},"RIA":{"Station":"RIA","City":"Santa Maria","Lat":"-29.711357","Long":"-53.688152"},"RIC":{"Station":"RIC","City":"Richmond","Lat":"37.505167","Long":"-77.319666"},"RIE":{"Station":"RIE","City":"Rice Lake","Lat":"45.420111","Long":"-91.773332"},"RIG":{"Station":"RIG","City":"Rio Grande","Lat":"-32.082616","Long":"-52.166541"},"RIJ":{"Station":"RIJ","City":"Rioja","Lat":"-6.067863","Long":"-77.159982"},"RIM":{"Station":"RIM","City":"Rodriguez de Mendoza","Lat":"-6.392307","Long":"-77.501216"},"RIN":{"Station":"RIN","City":"Ringi Cove","Lat":"-8.126388","Long":"157.1425"},"RIS":{"Station":"RIS","City":"Rishiri","Lat":"45.242006","Long":"141.186431"},"RIW":{"Station":"RIW","City":"Riverton","Lat":"43.06425","Long":"-108.459832"},"RIX":{"Station":"RIX","City":"Riga","Lat":"56.923611","Long":"23.971111"},"RIY":{"Station":"RIY","City":"Riyan","Lat":"14.662639","Long":"49.375028"},"RJA":{"Station":"RJA","City":"Rajahmundry","Lat":"17.110361","Long":"81.818208"},"RJB":{"Station":"RJB","City":"Rajbiraj","Lat":"26.508611","Long":"86.737222"},"RJH":{"Station":"RJH","City":"Rajshahi","Lat":"24.437219","Long":"88.616511"},"RJI":{"Station":"RJI","City":"Rajouri","Lat":"33.377897","Long":"74.315239"},"RJK":{"Station":"RJK","City":"Rijeka","Lat":"45.216889","Long":"14.570267"},"RJL":{"Station":"RJL","City":"Logro\u00f1o","Lat":"42.460528","Long":"-2.320488"},"RJN":{"Station":"RJN","City":"Rafsanjan","Lat":"30.297714","Long":"56.051139"},"RKC":{"Station":"RKC","City":"Montague","Lat":"41.729983","Long":"-122.54448"},"RKD":{"Station":"RKD","City":"Rockland","Lat":"44.060074","Long":"-69.099256"},"RKH":{"Station":"RKH","City":"Rock Hill","Lat":"34.987833","Long":"-81.057166"},"RKS":{"Station":"RKS","City":"Rock Springs","Lat":"41.594222","Long":"-109.065193"},"RKV":{"Station":"RKV","City":"Reykjav\u00edk","Lat":"64.13","Long":"-21.940555"},"RKY":{"Station":"RKY","City":"Rokeby","Lat":"-13.643","Long":"142.64"},"RKZ":{"Station":"RKZ","City":"Shigatse","Lat":"29.351944","Long":"89.310278"},"RLT":{"Station":"RLT","City":"Arlit","Lat":"18.790833","Long":"7.365278"},"RMA":{"Station":"RMA","City":"Roma","Lat":"-26.544999","Long":"148.774722"},"RMB":{"Station":"RMB","City":"Buraimi","Lat":"24.233","Long":"55.783"},"RME":{"Station":"RME","City":"Rome","Lat":"43.233806","Long":"-75.407027"},"RMK":{"Station":"RMK","City":"Renmark","Lat":"-34.196388","Long":"140.673889"},"RMQ":{"Station":"RMQ","City":"Taichung","Lat":"24.264668","Long":"120.62058"},"RNB":{"Station":"RNB","City":"Ronneby","Lat":"56.266667","Long":"15.265"},"RNE":{"Station":"RNE","City":"Roanne","Lat":"46.052719","Long":"3.999614"},"RNG":{"Station":"RNG","City":"Rangely","Lat":"40.093972","Long":"-108.763055"},"RNI":{"Station":"RNI","City":"Corn Island","Lat":"12.171389","Long":"-83.060555"},"RNJ":{"Station":"RNJ","City":"Yoronjima","Lat":"27.043964","Long":"128.401517"},"RNN":{"Station":"RNN","City":"Bornholm","Lat":"55.063267","Long":"14.759558"},"RNO":{"Station":"RNO","City":"Reno","Lat":"39.499111","Long":"-119.76811"},"RNS":{"Station":"RNS","City":"Rennes","Lat":"48.071944","Long":"-1.732221"},"RNU":{"Station":"RNU","City":"Ranau","Lat":"5.958056","Long":"116.673611"},"RNZ":{"Station":"RNZ","City":"Rensselaer","Lat":"40.947824","Long":"-87.182647"},"ROA":{"Station":"ROA","City":"Roanoke","Lat":"37.325472","Long":"-79.975416"},"ROB":{"Station":"ROB","City":"Monrovia","Lat":"6.233789","Long":"-10.36231"},"ROC":{"Station":"ROC","City":"Rochester","Lat":"43.119142","Long":"-77.671868"},"ROD":{"Station":"ROD","City":"Robertson","Lat":"-33.81218","Long":"19.902828"},"ROH":{"Station":"ROH","City":"Robinhood","Lat":"-18.850277","Long":"143.711389"},"ROI":{"Station":"ROI","City":"Roi Et","Lat":"16.116761","Long":"103.773797"},"ROO":{"Station":"ROO","City":"Rondon\u00f3polis","Lat":"-16.585966","Long":"-54.724791"},"ROP":{"Station":"ROP","City":"Rota Island","Lat":"14.174355","Long":"145.241125"},"ROR":{"Station":"ROR","City":"Babelthuap Island","Lat":"7.367303","Long":"134.544277"},"ROS":{"Station":"ROS","City":"Rosario","Lat":"-32.90361","Long":"-60.784999"},"ROU":{"Station":"ROU","City":"Ruse","Lat":"43.694806","Long":"26.056722"},"ROV":{"Station":"ROV","City":"Rostov Na Donu","Lat":"47.258208","Long":"39.818089"},"ROW":{"Station":"ROW","City":"Roswell","Lat":"33.301556","Long":"-104.530555"},"ROY":{"Station":"ROY","City":"R\u00edo Mayo","Lat":"-45.703888","Long":"-70.243888"},"RPM":{"Station":"RPM","City":"Ngukurr","Lat":"-14.722777","Long":"134.7475"},"RPR":{"Station":"RPR","City":"Raipur","Lat":"21.180406","Long":"81.738753"},"RRE":{"Station":"RRE","City":"Marree","Lat":"-29.663055","Long":"138.066667"},"RRG":{"Station":"RRG","City":"Plaine Corail","Lat":"-19.757657","Long":"63.360983"},"RRK":{"Station":"RRK","City":"Rourkela","Lat":"22.25665","Long":"84.814567"},"RRV":{"Station":"RRV","City":"Robinson River","Lat":"-16.716943","Long":"136.944444"},"RSA":{"Station":"RSA","City":"Santa Rosa","Lat":"-36.588321","Long":"-64.275693"},"RSB":{"Station":"RSB","City":"Roseberth","Lat":"-25.833","Long":"139.65"},"RSD":{"Station":"RSD","City":"Rock Sound","Lat":"24.891703","Long":"-76.177777"},"RST":{"Station":"RST","City":"Rochester","Lat":"43.908278","Long":"-92.500027"},"RSU":{"Station":"RSU","City":"Yeosu","Lat":"34.842328","Long":"127.61685"},"RSW":{"Station":"RSW","City":"Fort Myers","Lat":"26.536167","Long":"-81.755166"},"RTA":{"Station":"RTA","City":"Elsee","Lat":"-12.482499","Long":"177.071111"},"RTB":{"Station":"RTB","City":"Roat\u00e1n","Lat":"16.316814","Long":"-86.52296"},"RTC":{"Station":"RTC","City":"Ratnagiri","Lat":"17.013625","Long":"73.327786"},"RTG":{"Station":"RTG","City":"Ruteng","Lat":"-8.59701","Long":"120.477061"},"RTI":{"Station":"RTI","City":"Baa","Lat":"-10.768332","Long":"123.073611"},"RTL":{"Station":"RTL","City":"Spirit Lake","Lat":"43.387463","Long":"-95.139161"},"RTM":{"Station":"RTM","City":"Rotterdam","Lat":"51.956944","Long":"4.437222"},"RTP":{"Station":"RTP","City":"Rutland Plains","Lat":"-15.633","Long":"141.833"},"RTS":{"Station":"RTS","City":"Rottnest Island","Lat":"-32.006666","Long":"115.539722"},"RTW":{"Station":"RTW","City":"Saratov","Lat":"51.565","Long":"46.046667"},"RTY":{"Station":"RTY","City":"Merty","Lat":"-28.582499","Long":"140.302778"},"RUA":{"Station":"RUA","City":"Arua","Lat":"3.05","Long":"30.917"},"RUH":{"Station":"RUH","City":"Riyadh","Lat":"24.95764","Long":"46.698776"},"RUI":{"Station":"RUI","City":"Ruidoso","Lat":"33.460944","Long":"-105.530138"},"RUK":{"Station":"RUK","City":"Rukumkot","Lat":"28.627","Long":"82.195"},"RUM":{"Station":"RUM","City":"Rumjatar","Lat":"27.303509","Long":"86.55043"},"RUN":{"Station":"RUN","City":"St-Denis","Lat":"-20.889999","Long":"55.516389"},"RUR":{"Station":"RUR","City":"Rurutu","Lat":"-22.434068","Long":"-151.360613"},"RUS":{"Station":"RUS","City":"Marau","Lat":"-9.861666","Long":"160.825278"},"RUT":{"Station":"RUT","City":"Rutland","Lat":"43.529917","Long":"-72.949638"},"RUV":{"Station":"RUV","City":"Rubelsanto","Lat":"15.992008","Long":"-90.44533"},"RUY":{"Station":"RUY","City":"Ruinas de Cop\u00e1n","Lat":"14.825556","Long":"-89.17361"},"RVA":{"Station":"RVA","City":"Farafangana","Lat":"-22.805285","Long":"47.820614"},"RVD":{"Station":"RVD","City":"Rio Verde","Lat":"-17.833199","Long":"-50.955316"},"RVH":{"Station":"RVH","City":"St. Petersburg","Lat":"59.98","Long":"30.585556"},"RVO":{"Station":"RVO","City":"Reivilo","Lat":"-27.547221","Long":"24.173056"},"RVR":{"Station":"RVR","City":"Green River","Lat":"38.961362","Long":"-110.227361"},"RVY":{"Station":"RVY","City":"Rivera","Lat":"-30.974568","Long":"-55.476188"},"RWI":{"Station":"RWI","City":"Rocky Mount","Lat":"35.856253","Long":"-77.891932"},"RXS":{"Station":"RXS","City":"Roxas City","Lat":"11.597669","Long":"122.751669"},"RYB":{"Station":"RYB","City":"Rybinsk","Lat":"58.104167","Long":"38.929444"},"RYG":{"Station":"RYG","City":"Moss","Lat":"59.378933","Long":"10.785389"},"RYK":{"Station":"RYK","City":"Rahim Yar Khan","Lat":"28.3839","Long":"70.279572"},"RYO":{"Station":"RYO","City":"R\u00edo Turbio","Lat":"-51.605277","Long":"-72.220555"},"RZA":{"Station":"RZA","City":"Santa Cruz","Lat":"-50.016549","Long":"-68.579196"},"RZR":{"Station":"RZR","City":"Ramsar","Lat":"36.909908","Long":"50.679589"},"SAB":{"Station":"SAB","City":"The Bottom","Lat":"17.645","Long":"-63.219999"},"SAF":{"Station":"SAF","City":"Santa F\u00e9","Lat":"35.617111","Long":"-106.089416"},"SAH":{"Station":"SAH","City":"Sana'a","Lat":"15.476258","Long":"44.219739"},"SAK":{"Station":"SAK","City":"Sau\u00f0\u00e1rkr\u00f3kur","Lat":"65.731667","Long":"-19.572777"},"SAL":{"Station":"SAL","City":"San Salvador","Lat":"13.440947","Long":"-89.055727"},"SAN":{"Station":"SAN","City":"San Diego","Lat":"32.733556","Long":"-117.189666"},"SAP":{"Station":"SAP","City":"San Pedro Sula","Lat":"15.452639","Long":"-87.923555"},"SAQ":{"Station":"SAQ","City":"Nicholl's Town","Lat":"25.053814","Long":"-78.048996"},"SAT":{"Station":"SAT","City":"San Antonio","Lat":"29.533958","Long":"-98.469056"},"SAV":{"Station":"SAV","City":"Savannah","Lat":"32.127583","Long":"-81.202138"},"SAY":{"Station":"SAY","City":"Siena","Lat":"43.256286","Long":"11.255036"},"SBA":{"Station":"SBA","City":"Santa Barbara","Lat":"34.426194","Long":"-119.841499"},"SBB":{"Station":"SBB","City":"Santa B\u00e1rbara de Barinas","Lat":"7.803514","Long":"-71.165716"},"SBF":{"Station":"SBF","City":"Sardeh Band","Lat":"33.320706","Long":"68.636561"},"SBG":{"Station":"SBG","City":"Sabang","Lat":"5.874131","Long":"95.339672"},"SBH":{"Station":"SBH","City":"Gustavia","Lat":"17.904444","Long":"-62.84361"},"SBI":{"Station":"SBI","City":"Koundara","Lat":"12.572735","Long":"-13.358532"},"SBJ":{"Station":"SBJ","City":"S\u00e3o Mateus","Lat":"-18.721341","Long":"-39.833746"},"SBK":{"Station":"SBK","City":"St-Brieuc","Lat":"48.537492","Long":"-2.856541"},"SBL":{"Station":"SBL","City":"Santa Ana","Lat":"-13.762207","Long":"-65.435157"},"SBN":{"Station":"SBN","City":"South Bend","Lat":"41.708222","Long":"-86.317332"},"SBP":{"Station":"SBP","City":"San Luis Obispo","Lat":"35.237266","Long":"-120.642596"},"SBQ":{"Station":"SBQ","City":"Sibi","Lat":"29.576111","Long":"67.841944"},"SBR":{"Station":"SBR","City":"Saibai Island","Lat":"-9.378332","Long":"142.625278"},"SBW":{"Station":"SBW","City":"Sibu","Lat":"2.261603","Long":"111.985322"},"SBY":{"Station":"SBY","City":"Salisbury","Lat":"38.340189","Long":"-75.509479"},"SCC":{"Station":"SCC","City":"Deadhorse","Lat":"70.195546","Long":"-148.465789"},"SCE":{"Station":"SCE","City":"State College","Lat":"40.849278","Long":"-77.848693"},"SCG":{"Station":"SCG","City":"Spring Creek","Lat":"-18.621666","Long":"144.568333"},"SCI":{"Station":"SCI","City":"San Crist\u00f3bal","Lat":"7.801317","Long":"-72.202846"},"SCL":{"Station":"SCL","City":"Santiago de Chile","Lat":"-33.392974","Long":"-70.785802"},"SCN":{"Station":"SCN","City":"Saarbr\u00fccken","Lat":"49.214553","Long":"7.109508"},"SCP":{"Station":"SCP","City":"Mont Dauphin - St-Crepin","Lat":"44.701667","Long":"6.600278"},"SCQ":{"Station":"SCQ","City":"Santiago de Compostela","Lat":"42.896333","Long":"-8.415143"},"SCT":{"Station":"SCT","City":"Socotra","Lat":"12.630672","Long":"53.905778"},"SCU":{"Station":"SCU","City":"Santiago de Cuba","Lat":"19.969769","Long":"-75.835413"},"SCW":{"Station":"SCW","City":"Syktyvkar","Lat":"61.64705","Long":"50.84505"},"SCY":{"Station":"SCY","City":"San Crist\u00f3bal","Lat":"-0.910205","Long":"-89.617449"},"SDB":{"Station":"SDB","City":"Saldanha Bay","Lat":"-32.968888","Long":"18.160278"},"SDF":{"Station":"SDF","City":"Louisville","Lat":"38.174086","Long":"-85.736498"},"SDG":{"Station":"SDG","City":"Sanandaj","Lat":"35.245856","Long":"47.009247"},"SDJ":{"Station":"SDJ","City":"Sendai","Lat":"38.139722","Long":"140.916944"},"SDK":{"Station":"SDK","City":"Sandakan","Lat":"5.900897","Long":"118.059486"},"SDL":{"Station":"SDL","City":"Sundsvall-H\u00e4rn\u00f6sand","Lat":"62.528125","Long":"17.443928"},"SDM":{"Station":"SDM","City":"San Diego","Lat":"32.572272","Long":"-116.98016"},"SDN":{"Station":"SDN","City":"Anda","Lat":"61.83","Long":"6.109444"},"SDQ":{"Station":"SDQ","City":"Santo Domingo","Lat":"18.429664","Long":"-69.668924"},"SDR":{"Station":"SDR","City":"Santander","Lat":"43.427064","Long":"-3.820005"},"SDS":{"Station":"SDS","City":"Sado Shima","Lat":"38.060181","Long":"138.413928"},"SDT":{"Station":"SDT","City":"Saidu Sharif","Lat":"34.813556","Long":"72.352814"},"SDU":{"Station":"SDU","City":"Rio de Janeiro","Lat":"-22.91046","Long":"-43.163132"},"SDV":{"Station":"SDV","City":"Tel Aviv","Lat":"32.114661","Long":"34.782239"},"SDX":{"Station":"SDX","City":"Sedona","Lat":"34.848583","Long":"-111.788443"},"SDY":{"Station":"SDY","City":"Sidney","Lat":"47.706861","Long":"-104.192555"},"SEA":{"Station":"SEA","City":"Seattle","Lat":"47.449889","Long":"-122.311777"},"SEB":{"Station":"SEB","City":"Sebha","Lat":"26.986964","Long":"14.472525"},"SEN":{"Station":"SEN","City":"Southend","Lat":"51.571389","Long":"0.695556"},"SEO":{"Station":"SEO","City":"Seguela","Lat":"7.96833","Long":"-6.710833"},"SEU":{"Station":"SEU","City":"Seronera","Lat":"-2.458055","Long":"34.8225"},"SEV":{"Station":"SEV","City":"Severodoneck","Lat":"48.900833","Long":"38.542778"},"SEW":{"Station":"SEW","City":"Siwa","Lat":"29.345533","Long":"25.506739"},"SEY":{"Station":"SEY","City":"Selibaby","Lat":"15.179692","Long":"-12.207271"},"SEZ":{"Station":"SEZ","City":"Mah\u00e9","Lat":"-4.674341","Long":"55.521839"},"SFA":{"Station":"SFA","City":"Sfax","Lat":"34.720556","Long":"10.688611"},"SFC":{"Station":"SFC","City":"St-Fran\u00e7ois","Lat":"16.257778","Long":"-61.262499"},"SFE":{"Station":"SFE","City":"San Fernando","Lat":"16.595589","Long":"120.303219"},"SFH":{"Station":"SFH","City":"San Felipe","Lat":"30.930222","Long":"-114.808638"},"SFI":{"Station":"SFI","City":"Safi","Lat":"32.283","Long":"-9.233"},"SFJ":{"Station":"SFJ","City":"Sondre Str\u00f8mfjord","Lat":"67.016969","Long":"-50.689324"},"SFK":{"Station":"SFK","City":"Soure","Lat":"-0.69943","Long":"-48.520982"},"SFN":{"Station":"SFN","City":"Santa Fe","Lat":"-31.711665","Long":"-60.811667"},"SFO":{"Station":"SFO","City":"San Francisco","Lat":"37.619105","Long":"-122.375236"},"SFS":{"Station":"SFS","City":"Subic Bay","Lat":"14.79445","Long":"120.271364"},"SFT":{"Station":"SFT","City":"Skellefte\u00e5","Lat":"64.624772","Long":"21.076892"},"SGA":{"Station":"SGA","City":"Sheghnan","Lat":"37.498753","Long":"71.507014"},"SGC":{"Station":"SGC","City":"Surgut","Lat":"61.343694","Long":"73.401842"},"SGD":{"Station":"SGD","City":"S\u00f8nderborg","Lat":"54.964367","Long":"9.791731"},"SGE":{"Station":"SGE","City":"Siegen","Lat":"50.707658","Long":"8.082969"},"SGF":{"Station":"SGF","City":"Springfield","Lat":"37.245667","Long":"-93.388638"},"SGI":{"Station":"SGI","City":"Sargodha","Lat":"32.048611","Long":"72.665"},"SGM":{"Station":"SGM","City":"San Ignacio","Lat":"27.296633","Long":"-112.93848"},"SGN":{"Station":"SGN","City":"Ho Chi Minh City","Lat":"10.818797","Long":"106.651856"},"SGO":{"Station":"SGO","City":"St. George","Lat":"-28.049721","Long":"148.595278"},"SGP":{"Station":"SGP","City":"Shay Gap","Lat":"-20.424721","Long":"120.140556"},"SGU":{"Station":"SGU","City":"St. George","Lat":"37.036389","Long":"-113.510305"},"SGX":{"Station":"SGX","City":"Songea","Lat":"-10.683","Long":"35.583"},"SGY":{"Station":"SGY","City":"Skagway","Lat":"59.460062","Long":"-135.315663"},"SGZ":{"Station":"SGZ","City":"Songkhla","Lat":"7.186564","Long":"100.608031"},"SHA":{"Station":"SHA","City":"Shanghai","Lat":"31.197875","Long":"121.336319"},"SHB":{"Station":"SHB","City":"Nakashibetsu","Lat":"43.5775","Long":"144.96"},"SHC":{"Station":"SHC","City":"Shire Indasilase","Lat":"14.078056","Long":"38.2725"},"SHD":{"Station":"SHD","City":"Staunton\/Waynesboro\/Harrisonburg","Lat":"38.263833","Long":"-78.896443"},"SHE":{"Station":"SHE","City":"Shenyang","Lat":"41.639842","Long":"123.483425"},"SHI":{"Station":"SHI","City":"Shimojishima","Lat":"24.826667","Long":"125.144722"},"SHJ":{"Station":"SHJ","City":"Sharjah","Lat":"25.328575","Long":"55.51715"},"SHK":{"Station":"SHK","City":"Sehonghong","Lat":"-29.729443","Long":"28.768056"},"SHM":{"Station":"SHM","City":"Nanki Shirahana","Lat":"33.662222","Long":"135.364444"},"SHO":{"Station":"SHO","City":"Sokcho","Lat":"38.142614","Long":"128.598556"},"SHP":{"Station":"SHP","City":"Qinhuangdao","Lat":"39.968056","Long":"119.731111"},"SHQ":{"Station":"SHQ","City":"Southport","Lat":"-27.921666","Long":"153.371389"},"SHR":{"Station":"SHR","City":"Sheridan","Lat":"44.769194","Long":"-106.980277"},"SHS":{"Station":"SHS","City":"Shashi","Lat":"30.324444","Long":"112.280556"},"SHT":{"Station":"SHT","City":"Shepparton","Lat":"-36.428888","Long":"145.3925"},"SHU":{"Station":"SHU","City":"Smith Point","Lat":"-11.15","Long":"132.15"},"SHV":{"Station":"SHV","City":"Shreveport","Lat":"32.446611","Long":"-93.82561"},"SHW":{"Station":"SHW","City":"Sharurah","Lat":"17.466875","Long":"47.121431"},"SHZ":{"Station":"SHZ","City":"Seshutes","Lat":"-29.266666","Long":"28.553611"},"SIA":{"Station":"SIA","City":"Xi'an","Lat":"34.376667","Long":"109.12"},"SID":{"Station":"SID","City":"Espargos","Lat":"16.741389","Long":"-22.949443"},"SIE":{"Station":"SIE","City":"Sines","Lat":"37.940556","Long":"-8.809443"},"SIF":{"Station":"SIF","City":"Simara","Lat":"27.159456","Long":"84.980122"},"SIH":{"Station":"SIH","City":"Silgadi Doti","Lat":"29.26313","Long":"80.936012"},"SII":{"Station":"SII","City":"Sidi Ifni","Lat":"29.368983","Long":"-10.180266"},"SIJ":{"Station":"SIJ","City":"Siglufj\u00f6r\u00f0ur","Lat":"66.133333","Long":"-18.916666"},"SIN":{"Station":"SIN","City":"Singapore","Lat":"1.350189","Long":"103.994433"},"SIP":{"Station":"SIP","City":"Simferopol","Lat":"45.052222","Long":"33.975139"},"SIQ":{"Station":"SIQ","City":"Singkep","Lat":"-0.479188","Long":"104.579283"},"SIR":{"Station":"SIR","City":"Sion","Lat":"46.219592","Long":"7.326764"},"SIS":{"Station":"SIS","City":"Sishen","Lat":"-27.648605","Long":"22.999278"},"SIT":{"Station":"SIT","City":"Sitka","Lat":"57.047139","Long":"-135.361582"},"SIW":{"Station":"SIW","City":"Parapat","Lat":"2.667","Long":"98.933"},"SIX":{"Station":"SIX","City":"Singleton","Lat":"-32.600832","Long":"151.193056"},"SJA":{"Station":"SJA","City":"San Juan","Lat":"-15.352499","Long":"-75.137221"},"SJC":{"Station":"SJC","City":"San Jos\u00e9","Lat":"37.362667","Long":"-121.92911"},"SJD":{"Station":"SJD","City":"Los Cabos","Lat":"23.15185","Long":"-109.721043"},"SJE":{"Station":"SJE","City":"San Jos\u00e9 del Guaviare","Lat":"2.579694","Long":"-72.639357"},"SJI":{"Station":"SJI","City":"San Jos\u00e9","Lat":"12.361517","Long":"121.046639"},"SJJ":{"Station":"SJJ","City":"Sarajevo","Lat":"43.824583","Long":"18.331467"},"SJK":{"Station":"SJK","City":"S\u00e3o Jos\u00e9 dos Campos","Lat":"-23.228171","Long":"-45.862738"},"SJL":{"Station":"SJL","City":"S\u00e3o Gabriel da Cachoeira","Lat":"-0.148418","Long":"-66.985588"},"SJO":{"Station":"SJO","City":"San Jos\u00e9","Lat":"9.993903","Long":"-84.208855"},"SJQ":{"Station":"SJQ","City":"Sesheke","Lat":"-17.476388","Long":"24.305556"},"SJS":{"Station":"SJS","City":"San Jos\u00e9 de Chiquitos","Lat":"-17.832221","Long":"-60.743055"},"SJT":{"Station":"SJT","City":"San Angelo","Lat":"31.35775","Long":"-100.496305"},"SJU":{"Station":"SJU","City":"San Juan","Lat":"18.439295","Long":"-66.002003"},"SJV":{"Station":"SJV","City":"San Javier","Lat":"-16.264443","Long":"-62.469999"},"SJW":{"Station":"SJW","City":"Shijiazhuang","Lat":"38.280686","Long":"114.6973"},"SJY":{"Station":"SJY","City":"Seinajoki","Lat":"62.692119","Long":"22.832328"},"SJZ":{"Station":"SJZ","City":"S\u00e3o Jorge Island","Lat":"38.6655","Long":"-28.175816"},"SKB":{"Station":"SKB","City":"Basseterre","Lat":"17.311389","Long":"-62.71861"},"SKD":{"Station":"SKD","City":"Samarkand","Lat":"39.700547","Long":"66.983829"},"SKF":{"Station":"SKF","City":"San Antonio","Lat":"29.384233","Long":"-98.581116"},"SKG":{"Station":"SKG","City":"Thessaloniki","Lat":"40.519725","Long":"22.97095"},"SKK":{"Station":"SKK","City":"Shaktoolik","Lat":"64.371083","Long":"-161.223971"},"SKO":{"Station":"SKO","City":"Sokoto","Lat":"12.916322","Long":"5.207189"},"SKP":{"Station":"SKP","City":"Skopje","Lat":"41.961622","Long":"21.621381"},"SKQ":{"Station":"SKQ","City":"Sekakes","Lat":"-30.038888","Long":"28.370278"},"SKS":{"Station":"SKS","City":"Vojens","Lat":"55.225553","Long":"9.263931"},"SKT":{"Station":"SKT","City":"Sialkot","Lat":"32.514444","Long":"74.528889"},"SKU":{"Station":"SKU","City":"Skiros","Lat":"38.967553","Long":"24.487228"},"SKV":{"Station":"SKV","City":"St. Catherine","Lat":"28.685278","Long":"34.0625"},"SLA":{"Station":"SLA","City":"Salta","Lat":"-24.855977","Long":"-65.486168"},"SLC":{"Station":"SLC","City":"Salt Lake City","Lat":"40.788388","Long":"-111.977772"},"SLD":{"Station":"SLD","City":"Sliac","Lat":"48.637839","Long":"19.134108"},"SLF":{"Station":"SLF","City":"Sulayel","Lat":"20.464744","Long":"45.619644"},"SLK":{"Station":"SLK","City":"Saranac Lake","Lat":"44.385306","Long":"-74.206193"},"SLL":{"Station":"SLL","City":"Salalah","Lat":"17.038719","Long":"54.091297"},"SLM":{"Station":"SLM","City":"Salamanca","Lat":"40.952117","Long":"-5.501985"},"SLN":{"Station":"SLN","City":"Salina","Lat":"38.790611","Long":"-97.652221"},"SLP":{"Station":"SLP","City":"San Luis Potos\u00ed","Lat":"22.254303","Long":"-100.930805"},"SLT":{"Station":"SLT","City":"Salida","Lat":"38.538278","Long":"-106.048638"},"SLU":{"Station":"SLU","City":"Castries","Lat":"14.02","Long":"-60.993055"},"SLV":{"Station":"SLV","City":"Shimla","Lat":"31.081803","Long":"77.067967"},"SLW":{"Station":"SLW","City":"Saltillo","Lat":"25.549497","Long":"-100.928668"},"SLX":{"Station":"SLX","City":"Salt Cay","Lat":"21.333","Long":"-71.2"},"SLY":{"Station":"SLY","City":"Salehard","Lat":"66.590753","Long":"66.611042"},"SLZ":{"Station":"SLZ","City":"S\u00e3o Luis","Lat":"-2.58536","Long":"-44.234138"},"SMB":{"Station":"SMB","City":"Cerro Sombrero","Lat":"-52.736667","Long":"-69.33361"},"SMF":{"Station":"SMF","City":"Sacramento","Lat":"38.695444","Long":"-121.590777"},"SML":{"Station":"SML","City":"Stella Maris","Lat":"23.581444","Long":"-75.270474"},"SMM":{"Station":"SMM","City":"Semporna","Lat":"4.449722","Long":"118.596389"},"SMR":{"Station":"SMR","City":"Santa Marta","Lat":"11.119722","Long":"-74.230832"},"SMS":{"Station":"SMS","City":"Sainte Marie","Lat":"-17.093888","Long":"49.815834"},"SMV":{"Station":"SMV","City":"St. Moritz","Lat":"46.534075","Long":"9.884106"},"SMW":{"Station":"SMW","City":"Smara","Lat":"26.731761","Long":"-11.68468"},"SMX":{"Station":"SMX","City":"Santa Maria","Lat":"34.899944","Long":"-120.458082"},"SMY":{"Station":"SMY","City":"Simenti","Lat":"13.05","Long":"-13.3"},"SMZ":{"Station":"SMZ","City":"Stoelmans Eiland","Lat":"4.351","Long":"-54.418"},"SNA":{"Station":"SNA","City":"Santa Ana","Lat":"33.675667","Long":"-117.868221"},"SNB":{"Station":"SNB","City":"Milikapiti","Lat":"-11.422777","Long":"130.653611"},"SNF":{"Station":"SNF","City":"San Felipe","Lat":"10.278728","Long":"-68.75521"},"SNG":{"Station":"SNG","City":"San Ignacio de Velasco","Lat":"-16.384443","Long":"-60.962777"},"SNI":{"Station":"SNI","City":"Sinoe","Lat":"5.034313","Long":"-9.066802"},"SNJ":{"Station":"SNJ","City":"Pinar Del Rio","Lat":"22.095294","Long":"-84.15201"},"SNM":{"Station":"SNM","City":"San Ignacio de Moxos","Lat":"-14.967","Long":"-65.633"},"SNN":{"Station":"SNN","City":"Shannon","Lat":"52.701978","Long":"-8.924816"},"SNO":{"Station":"SNO","City":"Sakon Nakhon","Lat":"17.195142","Long":"104.118625"},"SNQ":{"Station":"SNQ","City":"San Quint\u00edn","Lat":"30.528611","Long":"-115.94611"},"SNR":{"Station":"SNR","City":"St-Nazaire","Lat":"47.310556","Long":"-2.156666"},"SNT":{"Station":"SNT","City":"Sabana de Torres","Lat":"7.383219","Long":"-73.505449"},"SNU":{"Station":"SNU","City":"Santa Clara","Lat":"22.492192","Long":"-79.94361"},"SNV":{"Station":"SNV","City":"Santa Elena de Uairen","Lat":"4.554722","Long":"-61.144921"},"SNW":{"Station":"SNW","City":"Thandwe","Lat":"18.460731","Long":"94.300119"},"SNZ":{"Station":"SNZ","City":"Rio de Janeiro","Lat":"-22.932349","Long":"-43.719091"},"SOC":{"Station":"SOC","City":"Solo City","Lat":"-7.516088","Long":"110.756892"},"SOD":{"Station":"SOD","City":"Sorocaba","Lat":"-23.478035","Long":"-47.490002"},"SOF":{"Station":"SOF","City":"Sofia","Lat":"42.695194","Long":"23.406167"},"SOG":{"Station":"SOG","City":"Sogndal","Lat":"61.156111","Long":"7.136614"},"SOK":{"Station":"SOK","City":"Semonkong","Lat":"-29.838332","Long":"28.058056"},"SOM":{"Station":"SOM","City":"San Tom\u00e9","Lat":"8.945147","Long":"-64.151082"},"SON":{"Station":"SON","City":"Esp\u00edritu Santo","Lat":"-15.505766","Long":"167.221358"},"SOO":{"Station":"SOO","City":"S\u00f6derhamn","Lat":"61.261481","Long":"17.099053"},"SOP":{"Station":"SOP","City":"Pinehurst\/Southern Pines","Lat":"35.237992","Long":"-79.388305"},"SOQ":{"Station":"SOQ","City":"Sorong","Lat":"-0.926357","Long":"131.121194"},"SOT":{"Station":"SOT","City":"Sodankyl\u00e4","Lat":"67.395033","Long":"26.619133"},"SOU":{"Station":"SOU","City":"Southampton","Lat":"50.950261","Long":"-1.356802"},"SOW":{"Station":"SOW","City":"Show Low","Lat":"34.265472","Long":"-110.005666"},"SOX":{"Station":"SOX","City":"Sogamoso","Lat":"5.675556","Long":"-72.970277"},"SOZ":{"Station":"SOZ","City":"Solenzara","Lat":"41.926389","Long":"9.405278"},"SPC":{"Station":"SPC","City":"Santa Cruz de La Palma","Lat":"28.626478","Long":"-17.75561"},"SPD":{"Station":"SPD","City":"Said Pur","Lat":"25.759228","Long":"88.908869"},"SPE":{"Station":"SPE","City":"Sepulot","Lat":"4.712222","Long":"116.453611"},"SPI":{"Station":"SPI","City":"Springfield","Lat":"39.844222","Long":"-89.678082"},"SPJ":{"Station":"SPJ","City":"Sparta","Lat":"36.973892","Long":"22.526292"},"SPK":{"Station":"SPK","City":"Sapporo","Lat":"42.794475","Long":"141.666447"},"SPN":{"Station":"SPN","City":"Saipan","Lat":"15.120255","Long":"145.729984"},"SPP":{"Station":"SPP","City":"Menongue","Lat":"-14.657582","Long":"17.719833"},"SPR":{"Station":"SPR","City":"San Pedro","Lat":"17.913936","Long":"-87.971074"},"SPS":{"Station":"SPS","City":"Wichita Falls","Lat":"33.988803","Long":"-98.491902"},"SPU":{"Station":"SPU","City":"Split","Lat":"43.538944","Long":"16.297964"},"SPW":{"Station":"SPW","City":"Spencer","Lat":"43.165639","Long":"-95.202805"},"SPY":{"Station":"SPY","City":"San Pedro","Lat":"4.746717","Long":"-6.660816"},"SQA":{"Station":"SQA","City":"Santa Ynez","Lat":"34.606806","Long":"-120.075561"},"SQB":{"Station":"SQB","City":"Santa Ana","Lat":"4.75","Long":"-75.95"},"SQC":{"Station":"SQC","City":"Southern Cross","Lat":"-31.24111","Long":"119.359444"},"SQG":{"Station":"SQG","City":"Sintang","Lat":"0.063619","Long":"111.473428"},"SQH":{"Station":"SQH","City":"Son-La","Lat":"21.217","Long":"104.033"},"SQK":{"Station":"SQK","City":"Sidi Barrani","Lat":"31.466556","Long":"25.87795"},"SQM":{"Station":"SQM","City":"S\u00e3o Miguel de Aragao","Lat":"-13.331274","Long":"-50.197616"},"SQN":{"Station":"SQN","City":"Sanana Island","Lat":"-2.100277","Long":"125.965833"},"SQO":{"Station":"SQO","City":"Storuman","Lat":"64.960894","Long":"17.696583"},"SQR":{"Station":"SQR","City":"Soroako","Lat":"-2.531202","Long":"121.357639"},"SQV":{"Station":"SQV","City":"Sequim","Lat":"48.098148","Long":"-123.187122"},"SQZ":{"Station":"SQZ","City":"Scampton","Lat":"53.307778","Long":"-0.550832"},"SRA":{"Station":"SRA","City":"Santa Rosa","Lat":"-27.906743","Long":"-54.520377"},"SRE":{"Station":"SRE","City":"Sucre","Lat":"-19.007082","Long":"-65.288746"},"SRI":{"Station":"SRI","City":"Samarinda","Lat":"-0.48453","Long":"117.157111"},"SRJ":{"Station":"SRJ","City":"San Borja","Lat":"-14.857777","Long":"-66.737221"},"SRN":{"Station":"SRN","City":"Strahan","Lat":"-42.155832","Long":"145.29"},"SRP":{"Station":"SRP","City":"Stord","Lat":"59.791925","Long":"5.34085"},"SRQ":{"Station":"SRQ","City":"Sarasota\/Bradenton","Lat":"27.395444","Long":"-82.554388"},"SRW":{"Station":"SRW","City":"Salisbury","Lat":"35.645889","Long":"-80.520277"},"SRX":{"Station":"SRX","City":"Sert","Lat":"31.063457","Long":"16.595005"},"SRY":{"Station":"SRY","City":"Sary","Lat":"36.635833","Long":"53.193611"},"SSA":{"Station":"SSA","City":"Salvador","Lat":"-12.910993","Long":"-38.331043"},"SSD":{"Station":"SSD","City":"San Felipe","Lat":"-32.744999","Long":"-70.704166"},"SSE":{"Station":"SSE","City":"Sholapur","Lat":"17.627958","Long":"75.934842"},"SSG":{"Station":"SSG","City":"Malabo","Lat":"3.755267","Long":"8.708717"},"SSH":{"Station":"SSH","City":"Sharm el-Sheikh","Lat":"27.977286","Long":"34.39495"},"SSJ":{"Station":"SSJ","City":"Sandnessj\u00f8en","Lat":"65.956828","Long":"12.468944"},"SSK":{"Station":"SSK","City":"Sturt Creek","Lat":"-19.166388","Long":"128.174444"},"SSO":{"Station":"SSO","City":"S\u00e3o Louren\u00e7o","Lat":"-22.090905","Long":"-45.044527"},"SSQ":{"Station":"SSQ","City":"La Sarre","Lat":"48.917221","Long":"-79.178611"},"SST":{"Station":"SST","City":"Santa Teresita","Lat":"-36.542316","Long":"-56.721755"},"SSW":{"Station":"SSW","City":"Stuart Island","Lat":"48.672878","Long":"-123.175744"},"SSY":{"Station":"SSY","City":"M'Banza Congo","Lat":"-6.269896","Long":"14.247025"},"STB":{"Station":"STB","City":"Santa Barbara del Zulia","Lat":"8.974425","Long":"-71.943013"},"STC":{"Station":"STC","City":"St. Cloud","Lat":"45.546556","Long":"-94.059888"},"STD":{"Station":"STD","City":"Santo Domingo","Lat":"7.565111","Long":"-72.035124"},"STG":{"Station":"STG","City":"St. George","Lat":"56.577361","Long":"-169.663721"},"STH":{"Station":"STH","City":"Strathmore","Lat":"-17.867","Long":"142.55"},"STI":{"Station":"STI","City":"Santiago de los Caballeros","Lat":"19.406092","Long":"-70.604688"},"STL":{"Station":"STL","City":"St. Louis","Lat":"38.748697","Long":"-90.370028"},"STM":{"Station":"STM","City":"Santar\u00e9m","Lat":"-2.42243","Long":"-54.792788"},"STN":{"Station":"STN","City":"London","Lat":"51.885","Long":"0.235"},"STP":{"Station":"STP","City":"St. Paul","Lat":"44.934623","Long":"-93.060341"},"STQ":{"Station":"STQ","City":"St. Marys","Lat":"41.412478","Long":"-78.50263"},"STR":{"Station":"STR","City":"Stuttgart","Lat":"48.689878","Long":"9.221964"},"STS":{"Station":"STS","City":"Santa Rosa","Lat":"38.509","Long":"-122.812888"},"STT":{"Station":"STT","City":"Charlotte Amalie","Lat":"18.337306","Long":"-64.97336"},"STV":{"Station":"STV","City":"Surat","Lat":"21.114061","Long":"72.741792"},"STW":{"Station":"STW","City":"Stavropol","Lat":"45.109165","Long":"42.112778"},"STX":{"Station":"STX","City":"Christiansted","Lat":"17.701556","Long":"-64.801721"},"STY":{"Station":"STY","City":"Salto","Lat":"-31.43848","Long":"-57.985293"},"SUA":{"Station":"SUA","City":"Stuart","Lat":"27.181694","Long":"-80.221305"},"SUB":{"Station":"SUB","City":"Surabaya","Lat":"-7.37983","Long":"112.786858"},"SUD":{"Station":"SUD","City":"Stroud","Lat":"35.789583","Long":"-96.655666"},"SUE":{"Station":"SUE","City":"Sturgeon Bay","Lat":"44.843667","Long":"-87.421527"},"SUF":{"Station":"SUF","City":"Lamezia Terme","Lat":"38.905394","Long":"16.242269"},"SUG":{"Station":"SUG","City":"Surigao","Lat":"9.757567","Long":"125.479328"},"SUH":{"Station":"SUH","City":"Sur","Lat":"22.535556","Long":"59.476111"},"SUI":{"Station":"SUI","City":"Sukhumi","Lat":"42.858233","Long":"41.128144"},"SUJ":{"Station":"SUJ","City":"Satu Mare","Lat":"47.703275","Long":"22.8857"},"SUL":{"Station":"SUL","City":"Sui","Lat":"28.645142","Long":"69.176917"},"SUM":{"Station":"SUM","City":"Sumter","Lat":"33.995026","Long":"-80.361328"},"SUN":{"Station":"SUN","City":"Hailey","Lat":"43.503778","Long":"-114.295555"},"SUO":{"Station":"SUO","City":"Sunriver","Lat":"43.876306","Long":"-121.453055"},"SUQ":{"Station":"SUQ","City":"Suc\u00faa","Lat":"-2.467","Long":"-78.167"},"SUS":{"Station":"SUS","City":"St. Louis","Lat":"38.662111","Long":"-90.652055"},"SUT":{"Station":"SUT","City":"Sumbawanga","Lat":"-7.967","Long":"31.667"},"SUU":{"Station":"SUU","City":"Fairfield","Lat":"38.264537","Long":"-121.92413"},"SUV":{"Station":"SUV","City":"Suva","Lat":"-18.043266","Long":"178.559228"},"SUW":{"Station":"SUW","City":"Superior","Lat":"46.689684","Long":"-92.094641"},"SUX":{"Station":"SUX","City":"Sioux City","Lat":"42.402611","Long":"-96.38436"},"SVA":{"Station":"SVA","City":"Savoonga","Lat":"63.686278","Long":"-170.493166"},"SVB":{"Station":"SVB","City":"Sambava","Lat":"-14.27861","Long":"50.174721"},"SVC":{"Station":"SVC","City":"Silver City","Lat":"32.636547","Long":"-108.156384"},"SVD":{"Station":"SVD","City":"Kingstown","Lat":"13.144444","Long":"-61.210832"},"SVE":{"Station":"SVE","City":"Susanville","Lat":"40.375694","Long":"-120.572693"},"SVF":{"Station":"SVF","City":"Sav\u00e9","Lat":"8.018056","Long":"2.464444"},"SVG":{"Station":"SVG","City":"Stavanger","Lat":"58.876778","Long":"5.637856"},"SVH":{"Station":"SVH","City":"Statesville","Lat":"35.765","Long":"-80.953888"},"SVI":{"Station":"SVI","City":"San Vicente del Cagu\u00e1n","Lat":"2.15","Long":"-74.766666"},"SVJ":{"Station":"SVJ","City":"Svolv\u00e6r","Lat":"68.243333","Long":"14.669167"},"SVL":{"Station":"SVL","City":"Savonlinna","Lat":"61.943064","Long":"28.945136"},"SVN":{"Station":"SVN","City":"Savannah","Lat":"32.01002","Long":"-81.145987"},"SVO":{"Station":"SVO","City":"Moscow","Lat":"55.972642","Long":"37.414589"},"SVP":{"Station":"SVP","City":"Kuito","Lat":"-12.404632","Long":"16.947414"},"SVQ":{"Station":"SVQ","City":"Sevilla","Lat":"37.418","Long":"-5.893105"},"SVS":{"Station":"SVS","City":"Stevens Village","Lat":"66.017167","Long":"-149.05436"},"SVT":{"Station":"SVT","City":"Savuti","Lat":"-18.520555","Long":"24.076667"},"SVU":{"Station":"SVU","City":"Savusavu","Lat":"-16.802777","Long":"179.340556"},"SVW":{"Station":"SVW","City":"Sparrevohn","Lat":"61.097208","Long":"-155.574774"},"SVX":{"Station":"SVX","City":"Ekaterinburg","Lat":"56.743108","Long":"60.802728"},"SVZ":{"Station":"SVZ","City":"San Antonio del T\u00e1chira","Lat":"7.840831","Long":"-72.439741"},"SWA":{"Station":"SWA","City":"Shantou","Lat":"23.426944","Long":"116.761944"},"SWB":{"Station":"SWB","City":"Shaw River","Lat":"-21.510277","Long":"119.361944"},"SWC":{"Station":"SWC","City":"Stawell","Lat":"-37.071666","Long":"142.740556"},"SWD":{"Station":"SWD","City":"Seward","Lat":"60.130081","Long":"-149.416843"},"SWF":{"Station":"SWF","City":"Newburgh","Lat":"41.504111","Long":"-74.104832"},"SWH":{"Station":"SWH","City":"Swan Hill","Lat":"-35.375832","Long":"143.532778"},"SWM":{"Station":"SWM","City":"Alto Boa Vista","Lat":"-11.671666","Long":"-51.434721"},"SWN":{"Station":"SWN","City":"Sahiwal","Lat":"31.889444","Long":"72.309167"},"SWP":{"Station":"SWP","City":"Swakopmund","Lat":"-22.65833","Long":"14.566667"},"SWQ":{"Station":"SWQ","City":"Sumbawa Besar","Lat":"-8.489038","Long":"117.412119"},"SWS":{"Station":"SWS","City":"Swansea","Lat":"51.605333","Long":"-4.067832"},"SWT":{"Station":"SWT","City":"Strezhovoy","Lat":"60.709444","Long":"77.66"},"SWU":{"Station":"SWU","City":"Su Won City","Lat":"37.239406","Long":"127.007053"},"SWW":{"Station":"SWW","City":"Sweetwater","Lat":"32.467361","Long":"-100.466555"},"SWX":{"Station":"SWX","City":"Shakawe","Lat":"-18.373055","Long":"21.835556"},"SWY":{"Station":"SWY","City":"Sitiawan","Lat":"4.216389","Long":"100.698611"},"SXB":{"Station":"SXB","City":"Strasbourg","Lat":"48.543611","Long":"7.637222"},"SXE":{"Station":"SXE","City":"West Sale","Lat":"-38.091666","Long":"146.965278"},"SXF":{"Station":"SXF","City":"Berlin","Lat":"52.380001","Long":"13.5225"},"SXG":{"Station":"SXG","City":"Senanga","Lat":"-16.1","Long":"23.267"},"SXI":{"Station":"SXI","City":"Sirri Island","Lat":"25.908869","Long":"54.5394"},"SXJ":{"Station":"SXJ","City":"Shanshan","Lat":"42.911667","Long":"90.2475"},"SXK":{"Station":"SXK","City":"Saumlaki","Lat":"-7.98861","Long":"131.306111"},"SXL":{"Station":"SXL","City":"Sligo","Lat":"54.280214","Long":"-8.599207"},"SXM":{"Station":"SXM","City":"Philipsburg","Lat":"18.040953","Long":"-63.108899"},"SXN":{"Station":"SXN","City":"Suapan","Lat":"-20.55336","Long":"26.115778"},"SXO":{"Station":"SXO","City":"S\u00e3o Felix do Araguaia","Lat":"-11.632407","Long":"-50.689574"},"SXP":{"Station":"SXP","City":"Sheldon Point","Lat":"62.520417","Long":"-164.847638"},"SXQ":{"Station":"SXQ","City":"Soldotna","Lat":"60.474958","Long":"-151.038238"},"SXR":{"Station":"SXR","City":"Srinagar","Lat":"33.987139","Long":"74.77425"},"SXS":{"Station":"SXS","City":"Sahabat","Lat":"5.089444","Long":"119.087778"},"SXV":{"Station":"SXV","City":"Salem","Lat":"11.783314","Long":"78.065606"},"SXX":{"Station":"SXX","City":"S\u00e3o Felix de Xing\u00fa","Lat":"-6.641285","Long":"-51.952346"},"SXY":{"Station":"SXY","City":"Sidney","Lat":"42.302583","Long":"-75.415971"},"SXZ":{"Station":"SXZ","City":"Siirt","Lat":"37.978886","Long":"41.840436"},"SYA":{"Station":"SYA","City":"Shemya","Lat":"52.712275","Long":"174.113619"},"SYC":{"Station":"SYC","City":"Leon Velarde","Lat":"-11.9","Long":"-69.167"},"SYD":{"Station":"SYD","City":"Sydney","Lat":"-33.94611","Long":"151.177222"},"SYE":{"Station":"SYE","City":"Sadah","Lat":"16.966944","Long":"43.728611"},"SYH":{"Station":"SYH","City":"Syangboche","Lat":"27.810556","Long":"86.711944"},"SYI":{"Station":"SYI","City":"Shelbyville","Lat":"35.559389","Long":"-86.442471"},"SYJ":{"Station":"SYJ","City":"Sirjan","Lat":"29.550933","Long":"55.672708"},"SYK":{"Station":"SYK","City":"Stykkish\u00f3lmur","Lat":"65.058056","Long":"-22.794166"},"SYM":{"Station":"SYM","City":"Simao","Lat":"22.793333","Long":"100.959444"},"SYN":{"Station":"SYN","City":"Stanton","Lat":"44.475522","Long":"-93.016321"},"SYO":{"Station":"SYO","City":"Shonai","Lat":"38.812222","Long":"139.787222"},"SYP":{"Station":"SYP","City":"Santiago","Lat":"8.085597","Long":"-80.945252"},"SYQ":{"Station":"SYQ","City":"San Jos\u00e9","Lat":"9.957222","Long":"-84.142777"},"SYR":{"Station":"SYR","City":"Syracuse","Lat":"43.111194","Long":"-76.106305"},"SYT":{"Station":"SYT","City":"St-Yan","Lat":"46.406492","Long":"4.021097"},"SYV":{"Station":"SYV","City":"Sylvester","Lat":"31.556389","Long":"-83.894166"},"SYX":{"Station":"SYX","City":"Sanya","Lat":"18.302892","Long":"109.412269"},"SYY":{"Station":"SYY","City":"Stornoway","Lat":"58.215556","Long":"-6.33111"},"SYZ":{"Station":"SYZ","City":"Shiraz","Lat":"29.539242","Long":"52.589786"},"SZA":{"Station":"SZA","City":"Soyo","Lat":"-6.141085","Long":"12.371764"},"SZB":{"Station":"SZB","City":"Kuala Lumpur","Lat":"3.130583","Long":"101.549333"},"SZD":{"Station":"SZD","City":"Sheffield","Lat":"53.394256","Long":"-1.388485"},"SZF":{"Station":"SZF","City":"Samsun","Lat":"41.254481","Long":"36.567106"},"SZG":{"Station":"SZG","City":"Salzburg","Lat":"47.793304","Long":"13.004333"},"SZK":{"Station":"SZK","City":"Skukuza","Lat":"-24.960943","Long":"31.588731"},"SZL":{"Station":"SZL","City":"Knob Noster","Lat":"38.730306","Long":"-93.547863"},"SZN":{"Station":"SZN","City":"Santa Barbara","Lat":"34.060558","Long":"-119.915129"},"SZP":{"Station":"SZP","City":"Santa Paula","Lat":"34.346974","Long":"-119.061664"},"SZQ":{"Station":"SZQ","City":"S\u00e1enz Pe\u00f1a","Lat":"-26.815832","Long":"-60.448332"},"SZR":{"Station":"SZR","City":"Stara Zagora","Lat":"42.376667","Long":"25.655195"},"SZS":{"Station":"SZS","City":"Ryan's Creek","Lat":"-46.899721","Long":"168.101944"},"SZT":{"Station":"SZT","City":"San Crist\u00f3bal de las Casas","Lat":"16.690269","Long":"-92.530055"},"SZV":{"Station":"SZV","City":"Suzhou","Lat":"31.263056","Long":"120.400556"},"SZW":{"Station":"SZW","City":"Schwerin","Lat":"53.426997","Long":"11.783436"},"SZX":{"Station":"SZX","City":"Zhenzhen","Lat":"22.639258","Long":"113.810664"},"SZY":{"Station":"SZY","City":"Szczytno","Lat":"53.481858","Long":"20.937692"},"SZZ":{"Station":"SZZ","City":"Szczecin","Lat":"53.584731","Long":"14.902206"},"TAB":{"Station":"TAB","City":"Scarborough","Lat":"11.149722","Long":"-60.832221"},"TAC":{"Station":"TAC","City":"Tacloban","Lat":"11.227628","Long":"125.027758"},"TAD":{"Station":"TAD","City":"Trinidad","Lat":"37.259223","Long":"-104.340861"},"TAE":{"Station":"TAE","City":"Daegu","Lat":"35.894108","Long":"128.658856"},"TAF":{"Station":"TAF","City":"Oran","Lat":"35.542444","Long":"-0.532277"},"TAG":{"Station":"TAG","City":"Tagbilaran","Lat":"9.664081","Long":"123.853247"},"TAH":{"Station":"TAH","City":"Tanna","Lat":"-19.454999","Long":"169.223333"},"TAI":{"Station":"TAI","City":"Ta'izz","Lat":"13.685964","Long":"44.139056"},"TAK":{"Station":"TAK","City":"Takamatsu","Lat":"34.214167","Long":"134.015556"},"TAL":{"Station":"TAL","City":"Tanana","Lat":"65.174389","Long":"-152.10811"},"TAM":{"Station":"TAM","City":"Tampico","Lat":"22.29645","Long":"-97.86593"},"TAN":{"Station":"TAN","City":"Tangalooma","Lat":"-27.137499","Long":"153.364167"},"TAO":{"Station":"TAO","City":"Qingdao","Lat":"36.266108","Long":"120.374436"},"TAP":{"Station":"TAP","City":"Tapachula","Lat":"14.794339","Long":"-92.370024"},"TAQ":{"Station":"TAQ","City":"Tarcoola","Lat":"-30.702777","Long":"134.582778"},"TAR":{"Station":"TAR","City":"Taranto","Lat":"40.517514","Long":"17.403212"},"TAS":{"Station":"TAS","City":"Tashkent","Lat":"41.257861","Long":"69.281186"},"TAT":{"Station":"TAT","City":"Poprad","Lat":"49.073594","Long":"20.241142"},"TAV":{"Station":"TAV","City":"Tau Village","Lat":"-14.229166","Long":"-169.51111"},"TAW":{"Station":"TAW","City":"Tacuaremb\u00f3","Lat":"-31.74903","Long":"-55.925757"},"TAX":{"Station":"TAX","City":"Tikong","Lat":"-1.642499","Long":"124.558889"},"TAY":{"Station":"TAY","City":"Tartu","Lat":"58.307461","Long":"26.690428"},"TAZ":{"Station":"TAZ","City":"Dashoguz","Lat":"41.761111","Long":"59.826667"},"TBB":{"Station":"TBB","City":"Tuy H\u00f2a","Lat":"13.04955","Long":"109.333706"},"TBC":{"Station":"TBC","City":"Tuba City","Lat":"36.092639","Long":"-111.383082"},"TBF":{"Station":"TBF","City":"Tabiteuea North","Lat":"-1.224468","Long":"174.775614"},"TBG":{"Station":"TBG","City":"Tabubil","Lat":"-5.27861","Long":"141.225833"},"TBH":{"Station":"TBH","City":"Tablas","Lat":"12.310986","Long":"122.084503"},"TBJ":{"Station":"TBJ","City":"Tabarka","Lat":"36.98","Long":"8.876944"},"TBK":{"Station":"TBK","City":"Timber Creek","Lat":"-15.620277","Long":"130.447778"},"TBL":{"Station":"TBL","City":"Tableland","Lat":"-17.295555","Long":"126.912778"},"TBN":{"Station":"TBN","City":"Fort Leonard Wood","Lat":"37.741631","Long":"-92.140735"},"TBO":{"Station":"TBO","City":"Tabora","Lat":"-5.076388","Long":"32.833333"},"TBP":{"Station":"TBP","City":"Tumbes","Lat":"-3.552527","Long":"-80.381355"},"TBR":{"Station":"TBR","City":"Statesboro","Lat":"32.48275","Long":"-81.736943"},"TBS":{"Station":"TBS","City":"Tbilisi","Lat":"41.669167","Long":"44.954722"},"TBT":{"Station":"TBT","City":"Tabatinga","Lat":"-4.255668","Long":"-69.935827"},"TBU":{"Station":"TBU","City":"Nuku'alofa","Lat":"-21.237999","Long":"-175.137166"},"TBW":{"Station":"TBW","City":"Tambov","Lat":"52.806111","Long":"41.482778"},"TBY":{"Station":"TBY","City":"Tsabong","Lat":"-26.034166","Long":"22.401389"},"TBZ":{"Station":"TBZ","City":"Tabriz","Lat":"38.133889","Long":"46.235"},"TCA":{"Station":"TCA","City":"Tennant Creek","Lat":"-19.634443","Long":"134.183333"},"TCB":{"Station":"TCB","City":"Treasure Cay","Lat":"26.745336","Long":"-77.391268"},"TCC":{"Station":"TCC","City":"Tucumcari","Lat":"35.182778","Long":"-103.603193"},"TCE":{"Station":"TCE","City":"Tulcea","Lat":"45.062486","Long":"28.714311"},"TCG":{"Station":"TCG","City":"Tacheng","Lat":"46.6725","Long":"83.340833"},"TCL":{"Station":"TCL","City":"Tuscaloosa","Lat":"33.220628","Long":"-87.6114"},"TCM":{"Station":"TCM","City":"Tacoma","Lat":"47.137678","Long":"-122.476474"},"TCN":{"Station":"TCN","City":"Tehuac\u00e1n","Lat":"18.497189","Long":"-97.419941"},"TCO":{"Station":"TCO","City":"Tumaco","Lat":"1.814294","Long":"-78.749343"},"TCP":{"Station":"TCP","City":"Taba","Lat":"29.587778","Long":"34.778056"},"TCQ":{"Station":"TCQ","City":"Tacna","Lat":"-18.053332","Long":"-70.275832"},"TCR":{"Station":"TCR","City":"Thoothukudi","Lat":"8.724236","Long":"78.025819"},"TCS":{"Station":"TCS","City":"Truth Or Consequences","Lat":"33.235361","Long":"-107.269888"},"TCT":{"Station":"TCT","City":"Takotna","Lat":"62.992932","Long":"-156.029725"},"TCU":{"Station":"TCU","City":"Thaba Nchu","Lat":"-29.318055","Long":"26.823056"},"TCW":{"Station":"TCW","City":"Tocumwal","Lat":"-35.811666","Long":"145.608056"},"TCX":{"Station":"TCX","City":"Tabas","Lat":"33.66775","Long":"56.892675"},"TCZ":{"Station":"TCZ","City":"Tengchong","Lat":"24.938056","Long":"98.485556"},"TDA":{"Station":"TDA","City":"Trinidad","Lat":"5.432778","Long":"-71.662499"},"TDD":{"Station":"TDD","City":"Trinidad","Lat":"-14.818738","Long":"-64.918018"},"TDG":{"Station":"TDG","City":"Tandag","Lat":"9.072111","Long":"126.171444"},"TDJ":{"Station":"TDJ","City":"Tadjoura","Lat":"11.783","Long":"42.917"},"TDK":{"Station":"TDK","City":"Taldy Kurgan","Lat":"45.1225","Long":"78.4425"},"TDL":{"Station":"TDL","City":"Tandil","Lat":"-37.237391","Long":"-59.227921"},"TDO":{"Station":"TDO","City":"Toledo","Lat":"46.477168","Long":"-122.806478"},"TDR":{"Station":"TDR","City":"Theodore","Lat":"-24.986666","Long":"150.093056"},"TDV":{"Station":"TDV","City":"Tanandava","Lat":"-21.7","Long":"43.733"},"TDW":{"Station":"TDW","City":"Amarillo","Lat":"35.169889","Long":"-101.82586"},"TDX":{"Station":"TDX","City":"Trat","Lat":"12.274572","Long":"102.318958"},"TDZ":{"Station":"TDZ","City":"Toledo","Lat":"41.564944","Long":"-83.482221"},"TEA":{"Station":"TEA","City":"Tela","Lat":"15.775864","Long":"-87.475846"},"TEB":{"Station":"TEB","City":"Teterboro","Lat":"40.850111","Long":"-74.060832"},"TEC":{"Station":"TEC","City":"Telemaco Borba","Lat":"-24.317774","Long":"-50.651591"},"TED":{"Station":"TED","City":"Thisted","Lat":"57.0688","Long":"8.705225"},"TEE":{"Station":"TEE","City":"Tbessa","Lat":"35.4325","Long":"8.125556"},"TEF":{"Station":"TEF","City":"Telfer","Lat":"-21.714999","Long":"122.228611"},"TEG":{"Station":"TEG","City":"Tenkodogo","Lat":"11.802222","Long":"-0.371388"},"TEI":{"Station":"TEI","City":"Tezu","Lat":"27.941225","Long":"96.134447"},"TEK":{"Station":"TEK","City":"Tatitlek","Lat":"60.872389","Long":"-146.691166"},"TEL":{"Station":"TEL","City":"Telupid","Lat":"5.628611","Long":"117.125556"},"TEM":{"Station":"TEM","City":"Temora","Lat":"-34.421388","Long":"147.511667"},"TEQ":{"Station":"TEQ","City":"Tekirdag","Lat":"41.13825","Long":"27.919094"},"TER":{"Station":"TER","City":"Terceira","Lat":"38.761842","Long":"-27.090796"},"TES":{"Station":"TES","City":"Tessenei","Lat":"15.117","Long":"36.683"},"TET":{"Station":"TET","City":"Tete","Lat":"-16.104816","Long":"33.640181"},"TEU":{"Station":"TEU","City":"Te Anau","Lat":"-45.533055","Long":"167.65"},"TEX":{"Station":"TEX","City":"Telluride","Lat":"37.953806","Long":"-107.908749"},"TEY":{"Station":"TEY","City":"\u00deingeyri","Lat":"65.870278","Long":"-23.559999"},"TEZ":{"Station":"TEZ","City":"Tezpur","Lat":"26.709139","Long":"92.784739"},"TFF":{"Station":"TFF","City":"Tef\u00e9","Lat":"-3.382943","Long":"-64.724055"},"TFL":{"Station":"TFL","City":"Te\u00f3filo Otoni","Lat":"-17.892318","Long":"-41.513616"},"TFN":{"Station":"TFN","City":"Santa Cruz de Tenerife","Lat":"28.482653","Long":"-16.341535"},"TFS":{"Station":"TFS","City":"Granadilla de Abone","Lat":"28.044475","Long":"-16.572488"},"TGA":{"Station":"TGA","City":"Singapore","Lat":"1.387258","Long":"103.708719"},"TGD":{"Station":"TGD","City":"Podgorica","Lat":"42.359392","Long":"19.251894"},"TGE":{"Station":"TGE","City":"Tuskegee","Lat":"32.460472","Long":"-85.680027"},"TGG":{"Station":"TGG","City":"Kuala Terengganu","Lat":"5.382639","Long":"103.10336"},"TGH":{"Station":"TGH","City":"Tongoa Island","Lat":"-16.89111","Long":"168.551389"},"TGI":{"Station":"TGI","City":"Tingo Maria","Lat":"-9.289166","Long":"-76.004999"},"TGJ":{"Station":"TGJ","City":"Tiga","Lat":"-21.09611","Long":"167.803889"},"TGK":{"Station":"TGK","City":"Taganrog","Lat":"47.198056","Long":"38.848889"},"TGM":{"Station":"TGM","City":"Targu Mures","Lat":"46.46735","Long":"24.424731"},"TGN":{"Station":"TGN","City":"Traralgon","Lat":"-38.207221","Long":"146.470278"},"TGO":{"Station":"TGO","City":"Tongliao","Lat":"43.556667","Long":"122.199722"},"TGR":{"Station":"TGR","City":"Touggourt","Lat":"33.06","Long":"6.087222"},"TGS":{"Station":"TGS","City":"Chokw\u00e9","Lat":"-24.520555","Long":"32.965278"},"TGT":{"Station":"TGT","City":"Tanga","Lat":"-5.092357","Long":"39.071158"},"TGU":{"Station":"TGU","City":"Tegucigalpa","Lat":"14.060883","Long":"-87.217196"},"TGZ":{"Station":"TGZ","City":"Tuxtla Guti\u00e9rrez","Lat":"16.571389","Long":"-93.032221"},"THA":{"Station":"THA","City":"Tullahoma","Lat":"35.380016","Long":"-86.246689"},"THB":{"Station":"THB","City":"Thaba-Tseka","Lat":"-29.522777","Long":"28.615833"},"THC":{"Station":"THC","City":"Tchien","Lat":"6.067665","Long":"-8.133454"},"THE":{"Station":"THE","City":"Teresina","Lat":"-5.059941","Long":"-42.823477"},"THG":{"Station":"THG","City":"Thangool","Lat":"-24.493888","Long":"150.576111"},"THH":{"Station":"THH","City":"Taharoa","Lat":"-38.18111","Long":"174.708056"},"THI":{"Station":"THI","City":"Tichitt","Lat":"18.45","Long":"-9.517"},"THL":{"Station":"THL","City":"Tachilek","Lat":"20.483831","Long":"99.935353"},"THN":{"Station":"THN","City":"Trollh\u00e4ttan-V\u00e4nersborg","Lat":"58.318056","Long":"12.345"},"THO":{"Station":"THO","City":"\u00de\u00f3rsh\u00f6fn","Lat":"66.218333","Long":"-15.334721"},"THP":{"Station":"THP","City":"Thermopolis","Lat":"43.658289","Long":"-108.213153"},"THR":{"Station":"THR","City":"Tehran","Lat":"35.689167","Long":"51.313416"},"THS":{"Station":"THS","City":"Sukhothai","Lat":"17.237992","Long":"99.818183"},"THT":{"Station":"THT","City":"Tamchakett","Lat":"17.233","Long":"-10.817"},"THU":{"Station":"THU","City":"Pituffik","Lat":"76.531203","Long":"-68.70316"},"THV":{"Station":"THV","City":"York","Lat":"39.917","Long":"-76.873027"},"THZ":{"Station":"THZ","City":"Tahoua","Lat":"14.875658","Long":"5.265358"},"TIA":{"Station":"TIA","City":"Tiran\u00eb","Lat":"41.414742","Long":"19.720561"},"TIB":{"Station":"TIB","City":"Tibu","Lat":"8.634167","Long":"-72.733888"},"TIC":{"Station":"TIC","City":"Arno Atoll","Lat":"7.133333","Long":"171.916667"},"TID":{"Station":"TID","City":"Tiaret","Lat":"35.341389","Long":"1.466944"},"TIE":{"Station":"TIE","City":"Tippi","Lat":"7.117","Long":"35.383"},"TIF":{"Station":"TIF","City":"Taif","Lat":"21.483418","Long":"40.544334"},"TIH":{"Station":"TIH","City":"Tikehau Atoll","Lat":"-15.119616","Long":"-148.230696"},"TII":{"Station":"TII","City":"Tereen","Lat":"32.6","Long":"65.864"},"TIJ":{"Station":"TIJ","City":"Tijuana","Lat":"32.541064","Long":"-116.970157"},"TIK":{"Station":"TIK","City":"Oklahoma City","Lat":"35.41475","Long":"-97.386638"},"TIM":{"Station":"TIM","City":"Timika","Lat":"-4.528274","Long":"136.887375"},"TIN":{"Station":"TIN","City":"Tindouf","Lat":"27.7","Long":"-8.166666"},"TIP":{"Station":"TIP","City":"Tripoli","Lat":"32.663544","Long":"13.159011"},"TIQ":{"Station":"TIQ","City":"Tinian Island","Lat":"14.999203","Long":"145.61935"},"TIR":{"Station":"TIR","City":"Tirupati","Lat":"13.632492","Long":"79.543256"},"TIS":{"Station":"TIS","City":"Thursday Island","Lat":"-10.586388","Long":"142.29"},"TIU":{"Station":"TIU","City":"Timaru","Lat":"-44.302777","Long":"171.225278"},"TIV":{"Station":"TIV","City":"Tivat","Lat":"42.404664","Long":"18.723286"},"TIW":{"Station":"TIW","City":"Tacoma","Lat":"47.267944","Long":"-122.57811"},"TIX":{"Station":"TIX","City":"Titusville","Lat":"28.5148","Long":"-80.799227"},"TIY":{"Station":"TIY","City":"Tidjikja","Lat":"18.570103","Long":"-11.423546"},"TIZ":{"Station":"TIZ","City":"Tari","Lat":"-5.845","Long":"142.948"},"TJA":{"Station":"TJA","City":"Tarija","Lat":"-21.555735","Long":"-64.701324"},"TJG":{"Station":"TJG","City":"Tanjung Warukin","Lat":"-2.216555","Long":"115.436333"},"TJH":{"Station":"TJH","City":"Toyooka","Lat":"35.512778","Long":"134.786944"},"TJI":{"Station":"TJI","City":"Trujillo","Lat":"15.926847","Long":"-85.938249"},"TJK":{"Station":"TJK","City":"Tokat","Lat":"40.306281","Long":"36.371089"},"TJM":{"Station":"TJM","City":"Tyumen","Lat":"57.189567","Long":"65.3243"},"TJQ":{"Station":"TJQ","City":"Tanjung Pandan","Lat":"-2.745721","Long":"107.754917"},"TJS":{"Station":"TJS","City":"Tanjung Selor","Lat":"2.836406","Long":"117.373675"},"TJU":{"Station":"TJU","City":"Kulyab","Lat":"37.983417","Long":"69.800111"},"TJV":{"Station":"TJV","City":"Thanjavur","Lat":"10.722428","Long":"79.101567"},"TKA":{"Station":"TKA","City":"Talkeetna","Lat":"62.3205","Long":"-150.093693"},"TKC":{"Station":"TKC","City":"Tiko","Lat":"4.089192","Long":"9.360528"},"TKD":{"Station":"TKD","City":"Takoradi","Lat":"4.896056","Long":"-1.774755"},"TKF":{"Station":"TKF","City":"Truckee","Lat":"39.320042","Long":"-120.139562"},"TKG":{"Station":"TKG","City":"Bandar Lampung","Lat":"-5.242338","Long":"105.178939"},"TKH":{"Station":"TKH","City":"Takhli","Lat":"15.277306","Long":"100.295861"},"TKJ":{"Station":"TKJ","City":"Tok","Lat":"63.295483","Long":"-143.006116"},"TKK":{"Station":"TKK","City":"Weno Island","Lat":"7.461892","Long":"151.843021"},"TKN":{"Station":"TKN","City":"Tokunoshima","Lat":"27.836381","Long":"128.881253"},"TKO":{"Station":"TKO","City":"Tlokoeng","Lat":"-29.233","Long":"28.883"},"TKP":{"Station":"TKP","City":"Takapoto","Lat":"-14.709999","Long":"-145.247777"},"TKQ":{"Station":"TKQ","City":"Kigoma","Lat":"-4.886388","Long":"29.670833"},"TKR":{"Station":"TKR","City":"Thakurgaon","Lat":"26.016389","Long":"88.403611"},"TKS":{"Station":"TKS","City":"Tokushima","Lat":"34.132808","Long":"134.606639"},"TKT":{"Station":"TKT","City":"Tak","Lat":"16.895989","Long":"99.25335"},"TKU":{"Station":"TKU","City":"Turku","Lat":"60.514142","Long":"22.262808"},"TKV":{"Station":"TKV","City":"Tatakoto","Lat":"-17.355277","Long":"-138.444999"},"TKX":{"Station":"TKX","City":"Takaroa","Lat":"-14.455832","Long":"-145.026388"},"TKY":{"Station":"TKY","City":"Turkey Creek","Lat":"-17.040832","Long":"128.205833"},"TKZ":{"Station":"TKZ","City":"Tokoroa","Lat":"-38.236666","Long":"175.891944"},"TLA":{"Station":"TLA","City":"Teller","Lat":"65.240379","Long":"-166.339339"},"TLB":{"Station":"TLB","City":"Tarbela Dam","Lat":"33.986122","Long":"72.611397"},"TLC":{"Station":"TLC","City":"Toluca","Lat":"19.337072","Long":"-99.566007"},"TLE":{"Station":"TLE","City":"Tulear","Lat":"-23.383368","Long":"43.728453"},"TLF":{"Station":"TLF","City":"Telida","Lat":"63.393873","Long":"-153.268972"},"TLH":{"Station":"TLH","City":"Tallahassee","Lat":"30.39675","Long":"-84.35086"},"TLL":{"Station":"TLL","City":"Tallinn","Lat":"59.413317","Long":"24.832844"},"TLM":{"Station":"TLM","City":"Tlemcen","Lat":"35.015278","Long":"-1.450832"},"TLN":{"Station":"TLN","City":"Hyeres","Lat":"43.097344","Long":"6.146031"},"TLO":{"Station":"TLO","City":"Tol","Lat":"-4.980832","Long":"152.01"},"TLR":{"Station":"TLR","City":"Tulare","Lat":"36.156583","Long":"-119.326555"},"TLS":{"Station":"TLS","City":"Toulouse","Lat":"43.635","Long":"1.367778"},"TLT":{"Station":"TLT","City":"Tuluksak","Lat":"61.091619","Long":"-160.943052"},"TLU":{"Station":"TLU","City":"Tol\u00fa","Lat":"9.5","Long":"-75.583332"},"TLV":{"Station":"TLV","City":"Tel Aviv","Lat":"32.011389","Long":"34.886667"},"TLX":{"Station":"TLX","City":"Talca","Lat":"-35.377824","Long":"-71.60168"},"TLZ":{"Station":"TLZ","City":"Catal\u00e3o","Lat":"-18.216832","Long":"-47.899663"},"TMA":{"Station":"TMA","City":"Tifton","Lat":"31.428972","Long":"-83.488527"},"TMB":{"Station":"TMB","City":"Miami","Lat":"25.647564","Long":"-80.433224"},"TMC":{"Station":"TMC","City":"Tambolaka","Lat":"-9.409716","Long":"119.244494"},"TMD":{"Station":"TMD","City":"Timbedra","Lat":"16.233","Long":"-8.167"},"TME":{"Station":"TME","City":"Tame","Lat":"6.451036","Long":"-71.759916"},"TMG":{"Station":"TMG","City":"Tommanggong","Lat":"5.399722","Long":"118.646389"},"TMI":{"Station":"TMI","City":"Tumling Tar","Lat":"27.315","Long":"87.193333"},"TMJ":{"Station":"TMJ","City":"Termez","Lat":"37.286667","Long":"67.31"},"TML":{"Station":"TML","City":"Tamale","Lat":"9.557192","Long":"-0.863213"},"TMM":{"Station":"TMM","City":"Toamasina","Lat":"-18.109516","Long":"49.392536"},"TMN":{"Station":"TMN","City":"Tamana Island","Lat":"-2.485832","Long":"175.97"},"TMO":{"Station":"TMO","City":"Tumeremo","Lat":"7.249381","Long":"-61.528932"},"TMP":{"Station":"TMP","City":"Tampere","Lat":"61.415278","Long":"23.587778"},"TMR":{"Station":"TMR","City":"Tamanrasset","Lat":"22.811111","Long":"5.450833"},"TMS":{"Station":"TMS","City":"S\u00e3o Tom\u00e9","Lat":"0.378175","Long":"6.712153"},"TMT":{"Station":"TMT","City":"Porto Trombetas","Lat":"-1.489599","Long":"-56.396802"},"TMU":{"Station":"TMU","City":"Tambor","Lat":"9.739167","Long":"-85.01611"},"TMW":{"Station":"TMW","City":"Tamworth","Lat":"-31.083888","Long":"150.846667"},"TMX":{"Station":"TMX","City":"Timimoun","Lat":"29.241111","Long":"0.283611"},"TMZ":{"Station":"TMZ","City":"Thames","Lat":"-37.156666","Long":"175.550278"},"TNA":{"Station":"TNA","City":"Jinan","Lat":"36.857214","Long":"117.215992"},"TNC":{"Station":"TNC","City":"Tin City","Lat":"65.564033","Long":"-167.922457"},"TND":{"Station":"TND","City":"Trinidad","Lat":"21.788461","Long":"-79.997202"},"TNE":{"Station":"TNE","City":"Tanegashima","Lat":"30.605067","Long":"130.991231"},"TNF":{"Station":"TNF","City":"Toussus-Le-Noble","Lat":"48.749756","Long":"2.111178"},"TNG":{"Station":"TNG","City":"Tanger","Lat":"35.726917","Long":"-5.916888"},"TNH":{"Station":"TNH","City":"Tonghua","Lat":"42.253889","Long":"125.703889"},"TNI":{"Station":"TNI","City":"Satna","Lat":"24.562319","Long":"80.854933"},"TNJ":{"Station":"TNJ","City":"Tanjung Pinang","Lat":"0.922683","Long":"104.532311"},"TNK":{"Station":"TNK","City":"Tununak","Lat":"60.575547","Long":"-165.271647"},"TNL":{"Station":"TNL","City":"Ternopol","Lat":"49.524228","Long":"25.700058"},"TNN":{"Station":"TNN","City":"Tainan","Lat":"22.950361","Long":"120.205778"},"TNO":{"Station":"TNO","City":"Tamarindo","Lat":"10.315833","Long":"-85.812221"},"TNP":{"Station":"TNP","City":"Twentynine Palms","Lat":"34.131583","Long":"-115.945805"},"TNR":{"Station":"TNR","City":"Antananarivo","Lat":"-18.796949","Long":"47.478806"},"TNS":{"Station":"TNS","City":"Tungsten","Lat":"61.956944","Long":"-128.202777"},"TNT":{"Station":"TNT","City":"Miami","Lat":"25.861806","Long":"-80.896999"},"TNU":{"Station":"TNU","City":"Newton","Lat":"41.674417","Long":"-93.021721"},"TNV":{"Station":"TNV","City":"Tabuaeran Island","Lat":"3.899444","Long":"-159.388888"},"TNX":{"Station":"TNX","City":"Stung Treng","Lat":"13.531897","Long":"106.014531"},"TOA":{"Station":"TOA","City":"Torrance","Lat":"33.803389","Long":"-118.33961"},"TOB":{"Station":"TOB","City":"Tobruk","Lat":"31.861","Long":"23.907"},"TOC":{"Station":"TOC","City":"Toccoa","Lat":"34.592812","Long":"-83.296371"},"TOD":{"Station":"TOD","City":"Pulau Tioman","Lat":"2.818183","Long":"104.160019"},"TOE":{"Station":"TOE","City":"Tozeur","Lat":"33.939722","Long":"8.110556"},"TOF":{"Station":"TOF","City":"Tomsk","Lat":"56.380278","Long":"85.208333"},"TOG":{"Station":"TOG","City":"Togiak Village","Lat":"59.053626","Long":"-160.396923"},"TOH":{"Station":"TOH","City":"Loh\/Linua","Lat":"-13.328","Long":"166.638"},"TOI":{"Station":"TOI","City":"Troy","Lat":"31.860317","Long":"-86.012309"},"TOJ":{"Station":"TOJ","City":"Madrid","Lat":"40.496747","Long":"-3.445871"},"TOL":{"Station":"TOL","City":"Toledo","Lat":"41.586806","Long":"-83.807832"},"TOM":{"Station":"TOM","City":"Tombouctou","Lat":"16.730458","Long":"-3.007582"},"TOO":{"Station":"TOO","City":"San Vito de Java","Lat":"8.826111","Long":"-82.958884"},"TOP":{"Station":"TOP","City":"Topeka","Lat":"39.068667","Long":"-95.622499"},"TOQ":{"Station":"TOQ","City":"Tocopilla","Lat":"-22.141091","Long":"-70.062907"},"TOR":{"Station":"TOR","City":"Torrington","Lat":"42.064528","Long":"-104.152693"},"TOS":{"Station":"TOS","City":"Troms\u00f8","Lat":"69.683333","Long":"18.918919"},"TOT":{"Station":"TOT","City":"Totness","Lat":"5.865833","Long":"-56.327499"},"TOU":{"Station":"TOU","City":"Touho","Lat":"-20.789999","Long":"165.259444"},"TOW":{"Station":"TOW","City":"Toledo","Lat":"-24.686341","Long":"-53.697491"},"TOX":{"Station":"TOX","City":"Tobolsk","Lat":"58.135833","Long":"68.231944"},"TOY":{"Station":"TOY","City":"Toyama","Lat":"36.648333","Long":"137.1875"},"TOZ":{"Station":"TOZ","City":"Touba","Lat":"8.296111","Long":"-7.671388"},"TPA":{"Station":"TPA","City":"Tampa","Lat":"27.975472","Long":"-82.533249"},"TPC":{"Station":"TPC","City":"Tarapoa","Lat":"-0.122955","Long":"-76.337749"},"TPE":{"Station":"TPE","City":"Taipei","Lat":"25.077731","Long":"121.232822"},"TPG":{"Station":"TPG","City":"Taiping","Lat":"4.866389","Long":"100.715278"},"TPH":{"Station":"TPH","City":"Tonopah","Lat":"38.060194","Long":"-117.086805"},"TPL":{"Station":"TPL","City":"Temple","Lat":"31.1519","Long":"-97.407662"},"TPN":{"Station":"TPN","City":"Tiputini","Lat":"-0.77611","Long":"-75.526388"},"TPP":{"Station":"TPP","City":"Tarapoto","Lat":"-6.508741","Long":"-76.373246"},"TPQ":{"Station":"TPQ","City":"Tepic","Lat":"21.419453","Long":"-104.84258"},"TPR":{"Station":"TPR","City":"Tom Price","Lat":"-22.656","Long":"117.76"},"TPS":{"Station":"TPS","City":"Trapani","Lat":"37.911403","Long":"12.487961"},"TQL":{"Station":"TQL","City":"Tarko-Sale","Lat":"64.930833","Long":"77.818056"},"TQN":{"Station":"TQN","City":"Taluqan","Lat":"36.775267","Long":"69.532669"},"TQS":{"Station":"TQS","City":"Tres Esquinas","Lat":"0.7459","Long":"-75.234024"},"TRA":{"Station":"TRA","City":"Taramajima","Lat":"24.653889","Long":"124.675278"},"TRB":{"Station":"TRB","City":"Turbo","Lat":"8.116667","Long":"-76.716666"},"TRC":{"Station":"TRC","City":"Torre\u00f3n","Lat":"25.568278","Long":"-103.410582"},"TRD":{"Station":"TRD","City":"Trondheim","Lat":"63.457556","Long":"10.92425"},"TRE":{"Station":"TRE","City":"Tiree","Lat":"56.499167","Long":"-6.869166"},"TRF":{"Station":"TRF","City":"Sandefjord","Lat":"59.186703","Long":"10.258628"},"TRG":{"Station":"TRG","City":"Tauranga","Lat":"-37.671999","Long":"176.196083"},"TRH":{"Station":"TRH","City":"Trona","Lat":"35.812667","Long":"-117.326916"},"TRI":{"Station":"TRI","City":"Bristol\/Johnson\/Kingsport","Lat":"36.475194","Long":"-82.407416"},"TRK":{"Station":"TRK","City":"Tarakan","Lat":"3.326694","Long":"117.565569"},"TRL":{"Station":"TRL","City":"Terrell","Lat":"32.708494","Long":"-96.267093"},"TRM":{"Station":"TRM","City":"Palm Springs","Lat":"33.626667","Long":"-116.159666"},"TRN":{"Station":"TRN","City":"Turin","Lat":"45.200761","Long":"7.649631"},"TRO":{"Station":"TRO","City":"Taree","Lat":"-31.88861","Long":"152.513889"},"TRQ":{"Station":"TRQ","City":"Tarauac\u00e1","Lat":"-8.155255","Long":"-70.783268"},"TRR":{"Station":"TRR","City":"Trincomalee","Lat":"8.538514","Long":"81.181853"},"TRS":{"Station":"TRS","City":"Trieste","Lat":"45.8275","Long":"13.472222"},"TRU":{"Station":"TRU","City":"Trujillo","Lat":"-8.08141","Long":"-79.10876"},"TRV":{"Station":"TRV","City":"Trivandrum","Lat":"8.482122","Long":"76.920114"},"TRW":{"Station":"TRW","City":"Tarawa Island","Lat":"1.381636","Long":"173.147036"},"TRX":{"Station":"TRX","City":"Trenton","Lat":"40.083528","Long":"-93.590638"},"TRY":{"Station":"TRY","City":"Tororo","Lat":"0.681389","Long":"34.1675"},"TRZ":{"Station":"TRZ","City":"Tiruchirapally","Lat":"10.765364","Long":"78.709722"},"TSA":{"Station":"TSA","City":"Taipei","Lat":"25.069722","Long":"121.5525"},"TSB":{"Station":"TSB","City":"Tsumeb","Lat":"-19.261905","Long":"17.7325"},"TSC":{"Station":"TSC","City":"Taisha","Lat":"-2.381666","Long":"-77.502777"},"TSE":{"Station":"TSE","City":"Astana","Lat":"51.022222","Long":"71.466944"},"TSF":{"Station":"TSF","City":"Treviso","Lat":"45.6484","Long":"12.194422"},"TSG":{"Station":"TSG","City":"Tanacross","Lat":"63.374367","Long":"-143.335573"},"TSH":{"Station":"TSH","City":"Tshikapa","Lat":"-6.438332","Long":"20.794722"},"TSJ":{"Station":"TSJ","City":"Tsushima","Lat":"34.284889","Long":"129.33055"},"TSL":{"Station":"TSL","City":"Tamu\u00edn","Lat":"22.038292","Long":"-98.806502"},"TSM":{"Station":"TSM","City":"Taos","Lat":"36.458167","Long":"-105.672416"},"TSN":{"Station":"TSN","City":"Tianjin","Lat":"39.126389","Long":"117.358333"},"TSP":{"Station":"TSP","City":"Tehachapi","Lat":"35.134994","Long":"-118.439299"},"TSR":{"Station":"TSR","City":"Timisoara","Lat":"45.809861","Long":"21.337861"},"TST":{"Station":"TST","City":"Trang","Lat":"7.508744","Long":"99.616578"},"TSU":{"Station":"TSU","City":"Tabiteuea South","Lat":"-1.474443","Long":"175.064444"},"TSV":{"Station":"TSV","City":"Townsville","Lat":"-19.252499","Long":"146.765278"},"TSX":{"Station":"TSX","City":"Tanjung Santan","Lat":"-0.093214","Long":"117.439292"},"TSY":{"Station":"TSY","City":"Tasikmalaya","Lat":"-7.346602","Long":"108.246092"},"TSZ":{"Station":"TSZ","City":"Tsetserleg","Lat":"47.465556","Long":"101.477778"},"TTA":{"Station":"TTA","City":"Tan Tan","Lat":"28.448194","Long":"-11.161346"},"TTB":{"Station":"TTB","City":"Tortol\u00ec","Lat":"39.918761","Long":"9.682981"},"TTC":{"Station":"TTC","City":"Taltal","Lat":"-25.564277","Long":"-70.375871"},"TTD":{"Station":"TTD","City":"Portland","Lat":"45.549361","Long":"-122.401249"},"TTE":{"Station":"TTE","City":"Ternate","Lat":"0.831414","Long":"127.381486"},"TTG":{"Station":"TTG","City":"Tartagal","Lat":"-22.619166","Long":"-63.793188"},"TTH":{"Station":"TTH","City":"Thumrait","Lat":"17.666","Long":"54.024612"},"TTI":{"Station":"TTI","City":"Tetiaroa","Lat":"-17.013332","Long":"-149.586943"},"TTJ":{"Station":"TTJ","City":"Tottori","Lat":"35.530069","Long":"134.166553"},"TTN":{"Station":"TTN","City":"Trenton","Lat":"40.276694","Long":"-74.813471"},"TTO":{"Station":"TTO","City":"Britton","Lat":"45.815028","Long":"-97.742805"},"TTQ":{"Station":"TTQ","City":"Tortuquero","Lat":"10.567778","Long":"-83.513888"},"TTR":{"Station":"TTR","City":"Tana Toraja","Lat":"-3.044735","Long":"119.821536"},"TTT":{"Station":"TTT","City":"Taitung","Lat":"22.754986","Long":"121.101681"},"TTU":{"Station":"TTU","City":"Tetuan","Lat":"35.594333","Long":"-5.320018"},"TUA":{"Station":"TUA","City":"Tulc\u00e1n","Lat":"0.809506","Long":"-77.708055"},"TUB":{"Station":"TUB","City":"Tubuai","Lat":"-23.365352","Long":"-149.524071"},"TUC":{"Station":"TUC","City":"Tucum\u00e1n","Lat":"-26.84086","Long":"-65.104943"},"TUD":{"Station":"TUD","City":"Tambacounda","Lat":"13.736817","Long":"-13.653121"},"TUF":{"Station":"TUF","City":"Tours","Lat":"47.431944","Long":"0.723056"},"TUG":{"Station":"TUG","City":"Tuguegarao","Lat":"17.638311","Long":"121.730614"},"TUI":{"Station":"TUI","City":"Turaif","Lat":"31.692683","Long":"38.7312"},"TUK":{"Station":"TUK","City":"Turbat","Lat":"25.986369","Long":"63.030167"},"TUL":{"Station":"TUL","City":"Tulsa","Lat":"36.198389","Long":"-95.88811"},"TUM":{"Station":"TUM","City":"Tumut","Lat":"-35.262777","Long":"148.240833"},"TUN":{"Station":"TUN","City":"Tunis","Lat":"36.851111","Long":"10.226944"},"TUO":{"Station":"TUO","City":"Taupo","Lat":"-38.739721","Long":"176.084444"},"TUP":{"Station":"TUP","City":"Tupelo","Lat":"34.268999","Long":"-88.769892"},"TUQ":{"Station":"TUQ","City":"Tougan","Lat":"13.058889","Long":"-3.077221"},"TUR":{"Station":"TUR","City":"Tucuru\u00ed","Lat":"-3.786007","Long":"-49.720266"},"TUS":{"Station":"TUS","City":"Tucson","Lat":"32.116083","Long":"-110.941027"},"TUU":{"Station":"TUU","City":"Tabuk","Lat":"28.365417","Long":"36.618889"},"TUV":{"Station":"TUV","City":"Tucupita","Lat":"9.088994","Long":"-62.094174"},"TUX":{"Station":"TUX","City":"Tumbler Ridge","Lat":"55.025","Long":"-120.934721"},"TUY":{"Station":"TUY","City":"Tulum","Lat":"20.227336","Long":"-87.438205"},"TVC":{"Station":"TVC","City":"Traverse City","Lat":"44.741639","Long":"-85.58236"},"TVF":{"Station":"TVF","City":"Thief River Falls","Lat":"48.065667","Long":"-96.184999"},"TVI":{"Station":"TVI","City":"Thomasville","Lat":"30.901792","Long":"-83.881127"},"TVL":{"Station":"TVL","City":"South Lake Tahoe","Lat":"38.893889","Long":"-119.995332"},"TVU":{"Station":"TVU","City":"Matei","Lat":"-16.690555","Long":"-179.876943"},"TVY":{"Station":"TVY","City":"Dawe","Lat":"14.103886","Long":"98.203636"},"TWA":{"Station":"TWA","City":"Twin Hills","Lat":"59.074525","Long":"-160.275041"},"TWB":{"Station":"TWB","City":"Toowoomba","Lat":"-27.542777","Long":"151.916389"},"TWD":{"Station":"TWD","City":"Port Townsend","Lat":"48.053806","Long":"-122.810638"},"TWE":{"Station":"TWE","City":"Taylor","Lat":"65.679275","Long":"-164.798806"},"TWF":{"Station":"TWF","City":"Twin Falls","Lat":"42.481806","Long":"-114.487749"},"TWP":{"Station":"TWP","City":"Torwood","Lat":"-17.363332","Long":"143.75"},"TWU":{"Station":"TWU","City":"Tawau","Lat":"4.313369","Long":"118.121953"},"TWZ":{"Station":"TWZ","City":"Twizel","Lat":"-44.234999","Long":"170.118333"},"TXG":{"Station":"TXG","City":"Taichung","Lat":"24.186269","Long":"120.653775"},"TXK":{"Station":"TXK","City":"Texarkana","Lat":"33.453722","Long":"-93.991027"},"TXL":{"Station":"TXL","City":"Berlin","Lat":"52.56","Long":"13.288"},"TXM":{"Station":"TXM","City":"Teminabuan","Lat":"-1.444721","Long":"132.020556"},"TXN":{"Station":"TXN","City":"Huangshan","Lat":"29.733333","Long":"118.255833"},"TYA":{"Station":"TYA","City":"Tula","Lat":"54.238889","Long":"37.600278"},"TYB":{"Station":"TYB","City":"Tibooburra","Lat":"-29.45111","Long":"142.057778"},"TYD":{"Station":"TYD","City":"Tynda","Lat":"55.284167","Long":"124.779167"},"TYE":{"Station":"TYE","City":"Tyonek","Lat":"61.076662","Long":"-151.138069"},"TYF":{"Station":"TYF","City":"Torsby","Lat":"60.157622","Long":"12.991269"},"TYG":{"Station":"TYG","City":"Thylungra","Lat":"-26.095555","Long":"143.465556"},"TYL":{"Station":"TYL","City":"Talara","Lat":"-4.576638","Long":"-81.254138"},"TYM":{"Station":"TYM","City":"Staniel Cay","Lat":"24.169083","Long":"-76.439055"},"TYN":{"Station":"TYN","City":"Taiyuan","Lat":"37.746897","Long":"112.628428"},"TYP":{"Station":"TYP","City":"Tobermorey","Lat":"-22.255832","Long":"137.953333"},"TYR":{"Station":"TYR","City":"Tyler","Lat":"32.353833","Long":"-95.402693"},"TYS":{"Station":"TYS","City":"Knoxville","Lat":"35.810972","Long":"-83.994027"},"TYZ":{"Station":"TYZ","City":"Taylor","Lat":"34.452722","Long":"-110.115027"},"TZA":{"Station":"TZA","City":"Belize City","Lat":"17.516389","Long":"-88.194443"},"TZL":{"Station":"TZL","City":"Tuzla","Lat":"44.458656","Long":"18.724783"},"TZX":{"Station":"TZX","City":"Trabzon","Lat":"40.995108","Long":"39.789728"},"UAB":{"Station":"UAB","City":"Adana","Lat":"37.0021","Long":"35.425894"},"UAC":{"Station":"UAC","City":"San Luis R\u00edo Colorado","Lat":"32.445342","Long":"-114.797927"},"UAH":{"Station":"UAH","City":"Ua Huka","Lat":"-8.93611","Long":"-139.552221"},"UAI":{"Station":"UAI","City":"Suai","Lat":"-9.303971","Long":"125.286861"},"UAK":{"Station":"UAK","City":"Narsarsuaq","Lat":"61.160719","Long":"-45.425674"},"UAL":{"Station":"UAL","City":"Luau","Lat":"-10.715832","Long":"22.231111"},"UAM":{"Station":"UAM","City":"Andersen","Lat":"13.583884","Long":"144.930057"},"UAP":{"Station":"UAP","City":"Ua Pou","Lat":"-9.351666","Long":"-140.077777"},"UAQ":{"Station":"UAQ","City":"San Juan","Lat":"-31.571471","Long":"-68.418193"},"UAS":{"Station":"UAS","City":"Samburu","Lat":"0.533","Long":"37.533"},"UBA":{"Station":"UBA","City":"Uberaba","Lat":"-19.764999","Long":"-47.964777"},"UBB":{"Station":"UBB","City":"Mabuiag Island","Lat":"-9.949999","Long":"142.183333"},"UBJ":{"Station":"UBJ","City":"Ube","Lat":"33.93","Long":"131.278611"},"UBP":{"Station":"UBP","City":"Ubon Ratchathani","Lat":"15.251278","Long":"104.870231"},"UBS":{"Station":"UBS","City":"Columbus","Lat":"33.465333","Long":"-88.380749"},"UBT":{"Station":"UBT","City":"Ubatuba","Lat":"-23.44111","Long":"-45.075553"},"UBU":{"Station":"UBU","City":"Kalumburu","Lat":"-14.288055","Long":"126.634444"},"UCC":{"Station":"UCC","City":"Mercury","Lat":"36.945786","Long":"-116.037811"},"UCE":{"Station":"UCE","City":"Eunice","Lat":"30.466284","Long":"-92.423798"},"UCN":{"Station":"UCN","City":"Buchanan","Lat":"5.867","Long":"-10.05"},"UCT":{"Station":"UCT","City":"Ukhta","Lat":"63.566944","Long":"53.804722"},"UCY":{"Station":"UCY","City":"Union City","Lat":"36.379744","Long":"-88.985703"},"UCZ":{"Station":"UCZ","City":"Uchiza","Lat":"-8.467","Long":"-76.35"},"UDA":{"Station":"UDA","City":"Undarra","Lat":"-18.19111","Long":"144.610833"},"UDD":{"Station":"UDD","City":"Palm Springs","Lat":"33.748438","Long":"-116.274812"},"UDE":{"Station":"UDE","City":"Uden","Lat":"51.656389","Long":"5.708611"},"UDI":{"Station":"UDI","City":"Uberl\u00e2ndia","Lat":"-18.882843","Long":"-48.225593"},"UDJ":{"Station":"UDJ","City":"Uzhgorod","Lat":"48.634278","Long":"22.263356"},"UDN":{"Station":"UDN","City":"Udine","Lat":"46.033","Long":"13.183"},"UDR":{"Station":"UDR","City":"Udaipur","Lat":"24.617697","Long":"73.8961"},"UEE":{"Station":"UEE","City":"Queenstown","Lat":"-42.076","Long":"145.531"},"UEL":{"Station":"UEL","City":"Quelimane","Lat":"-17.855499","Long":"36.869106"},"UEO":{"Station":"UEO","City":"Kumejima","Lat":"26.363506","Long":"126.713806"},"UES":{"Station":"UES","City":"Waukesha","Lat":"43.041028","Long":"-88.237055"},"UET":{"Station":"UET","City":"Quetta","Lat":"30.251369","Long":"66.937764"},"UFA":{"Station":"UFA","City":"Ufa","Lat":"54.557511","Long":"55.874417"},"UGA":{"Station":"UGA","City":"Bulgan","Lat":"48.855639","Long":"103.474908"},"UGB":{"Station":"UGB","City":"Pilot Point","Lat":"57.425358","Long":"-157.739865"},"UGC":{"Station":"UGC","City":"Urgench","Lat":"41.584272","Long":"60.641708"},"UGN":{"Station":"UGN","City":"Chicago\/Waukegan","Lat":"42.42216","Long":"-87.867906"},"UGO":{"Station":"UGO","City":"U\u00edge","Lat":"-7.603066","Long":"15.027822"},"UGS":{"Station":"UGS","City":"Ugashik","Lat":"57.523425","Long":"-157.395993"},"UHE":{"Station":"UHE","City":"Uherske Hradiste","Lat":"49.029444","Long":"17.439722"},"UIB":{"Station":"UIB","City":"Quibd\u00f3","Lat":"5.690797","Long":"-76.641218"},"UIH":{"Station":"UIH","City":"Qui Nhon","Lat":"13.954986","Long":"109.042267"},"UII":{"Station":"UII","City":"\u00datila Island","Lat":"16.113056","Long":"-86.880277"},"UIK":{"Station":"UIK","City":"Ust-Ilimsk","Lat":"58.136111","Long":"102.565278"},"UIL":{"Station":"UIL","City":"Quillayute","Lat":"47.936583","Long":"-124.562633"},"UIN":{"Station":"UIN","City":"Quincy","Lat":"39.943017","Long":"-91.194462"},"UIO":{"Station":"UIO","City":"Quito","Lat":"-0.113332","Long":"-78.35861"},"UIP":{"Station":"UIP","City":"Quimper","Lat":"47.975","Long":"-4.167777"},"UIQ":{"Station":"UIQ","City":"Quion Hill","Lat":"-17.539999","Long":"168.441667"},"UIR":{"Station":"UIR","City":"Quirindi","Lat":"-31.490555","Long":"150.513889"},"UIT":{"Station":"UIT","City":"Jabor Jaluit Atoll","Lat":"5.906667","Long":"169.641667"},"UJE":{"Station":"UJE","City":"Ujae Atoll","Lat":"8.928056","Long":"165.7625"},"UKA":{"Station":"UKA","City":"Ukunda","Lat":"-4.296277","Long":"39.571139"},"UKB":{"Station":"UKB","City":"Kobe","Lat":"34.632778","Long":"135.223889"},"UKI":{"Station":"UKI","City":"Ukiah","Lat":"39.125944","Long":"-123.20086"},"UKK":{"Station":"UKK","City":"Ust-Kamenogorsk","Lat":"50.036597","Long":"82.494186"},"UKN":{"Station":"UKN","City":"Waukon","Lat":"43.280476","Long":"-91.469527"},"UKS":{"Station":"UKS","City":"Sevastopol","Lat":"44.691389","Long":"33.575278"},"UKT":{"Station":"UKT","City":"Quakertown","Lat":"40.435139","Long":"-75.381943"},"UKX":{"Station":"UKX","City":"Ust-Kut","Lat":"56.857778","Long":"105.728889"},"ULA":{"Station":"ULA","City":"San Julian","Lat":"-49.306774","Long":"-67.802588"},"ULD":{"Station":"ULD","City":"Ulundi","Lat":"-28.320585","Long":"31.416519"},"ULE":{"Station":"ULE","City":"Sule","Lat":"-4.974721","Long":"151.296944"},"ULG":{"Station":"ULG","City":"\u00d6lgii","Lat":"48.993333","Long":"89.9225"},"ULI":{"Station":"ULI","City":"Falalop Island","Lat":"10.016667","Long":"139.8"},"ULL":{"Station":"ULL","City":"Glenforsa","Lat":"56.517","Long":"-5.908"},"ULM":{"Station":"ULM","City":"New Ulm","Lat":"44.31975","Long":"-94.502332"},"ULN":{"Station":"ULN","City":"Ulan Bator","Lat":"47.843056","Long":"106.766639"},"ULO":{"Station":"ULO","City":"Ulaangom","Lat":"49.969722","Long":"92.080278"},"ULP":{"Station":"ULP","City":"Quilpie","Lat":"-26.612221","Long":"144.252778"},"ULQ":{"Station":"ULQ","City":"Tulu\u00e1","Lat":"4.088358","Long":"-76.235132"},"ULU":{"Station":"ULU","City":"Gulu","Lat":"2.805556","Long":"32.271792"},"ULV":{"Station":"ULV","City":"Ulyanovsk","Lat":"54.268333","Long":"48.223611"},"ULY":{"Station":"ULY","City":"Ulyanovsk","Lat":"54.401017","Long":"48.802656"},"ULZ":{"Station":"ULZ","City":"Uliastai","Lat":"47.714722","Long":"96.847222"},"UME":{"Station":"UME","City":"Ume\u00e5","Lat":"63.791828","Long":"20.282758"},"UMI":{"Station":"UMI","City":"Quince Mil","Lat":"-13.233332","Long":"-70.753332"},"UMM":{"Station":"UMM","City":"Summit","Lat":"63.331479","Long":"-149.127282"},"UMR":{"Station":"UMR","City":"Woomera","Lat":"-31.144166","Long":"136.816944"},"UMT":{"Station":"UMT","City":"Umiat","Lat":"69.371113","Long":"-152.134982"},"UMU":{"Station":"UMU","City":"Umuarama","Lat":"-23.798649","Long":"-53.313755"},"UMY":{"Station":"UMY","City":"Sumy","Lat":"50.858333","Long":"34.7625"},"UNA":{"Station":"UNA","City":"Una","Lat":"-15.355243","Long":"-38.99901"},"UND":{"Station":"UND","City":"Kunduz","Lat":"36.665111","Long":"68.910833"},"UNE":{"Station":"UNE","City":"Qacha's Nek","Lat":"-30.110832","Long":"28.671111"},"UNG":{"Station":"UNG","City":"Kiunga","Lat":"-6.125555","Long":"141.281944"},"UNI":{"Station":"UNI","City":"Union Island","Lat":"12.598611","Long":"-61.414721"},"UNK":{"Station":"UNK","City":"Unalakleet","Lat":"63.8885","Long":"-160.79911"},"UNN":{"Station":"UNN","City":"Ranong","Lat":"9.777622","Long":"98.585483"},"UNR":{"Station":"UNR","City":"\u00d6nd\u00f6rkhaan","Lat":"47.304722","Long":"110.608889"},"UNU":{"Station":"UNU","City":"Juneau","Lat":"43.426472","Long":"-88.70386"},"UOS":{"Station":"UOS","City":"Sewanee","Lat":"35.205146","Long":"-85.898146"},"UOX":{"Station":"UOX","City":"Oxford","Lat":"34.384333","Long":"-89.536805"},"UPB":{"Station":"UPB","City":"Havana","Lat":"23.032778","Long":"-82.579443"},"UPG":{"Station":"UPG","City":"Ujung Pandang","Lat":"-5.06163","Long":"119.554042"},"UPL":{"Station":"UPL","City":"Upala","Lat":"10.892186","Long":"-85.016155"},"UPN":{"Station":"UPN","City":"Uruapan","Lat":"19.396692","Long":"-102.039055"},"UPP":{"Station":"UPP","City":"Hawi","Lat":"20.265194","Long":"-155.859943"},"URA":{"Station":"URA","City":"Uralsk","Lat":"51.150833","Long":"51.543056"},"URB":{"Station":"URB","City":"Urubupunga","Lat":"-20.777066","Long":"-51.56476"},"URC":{"Station":"URC","City":"\u00dcr\u00fcmqi","Lat":"43.907106","Long":"87.474244"},"URE":{"Station":"URE","City":"Kuressaare","Lat":"58.229883","Long":"22.509494"},"URG":{"Station":"URG","City":"Uruguaiana","Lat":"-29.782177","Long":"-57.038188"},"URI":{"Station":"URI","City":"Uribe","Lat":"3.236944","Long":"-74.346666"},"URJ":{"Station":"URJ","City":"Uray","Lat":"60.103333","Long":"64.826667"},"URM":{"Station":"URM","City":"Uriman","Lat":"5.341667","Long":"-62.758332"},"URO":{"Station":"URO","City":"Rouen","Lat":"49.390833","Long":"1.183889"},"URR":{"Station":"URR","City":"Urrao","Lat":"6.333333","Long":"-76.166666"},"URS":{"Station":"URS","City":"Kursk","Lat":"51.750614","Long":"36.295586"},"URT":{"Station":"URT","City":"Surat Thani","Lat":"9.132603","Long":"99.135586"},"URY":{"Station":"URY","City":"Guriat","Lat":"31.411942","Long":"37.279469"},"USC":{"Station":"USC","City":"Union","Lat":"34.686953","Long":"-81.641166"},"USH":{"Station":"USH","City":"Ushuaia","Lat":"-54.843277","Long":"-68.295749"},"USK":{"Station":"USK","City":"Usinsk","Lat":"66.004722","Long":"57.367222"},"USL":{"Station":"USL","City":"Useless Loop","Lat":"-26.154999","Long":"113.395"},"USM":{"Station":"USM","City":"Koh Samui","Lat":"9.547794","Long":"100.062272"},"USN":{"Station":"USN","City":"Ulsan","Lat":"35.593494","Long":"129.351722"},"USQ":{"Station":"USQ","City":"Usak","Lat":"38.681478","Long":"29.471675"},"USS":{"Station":"USS","City":"Sancti Spiritus","Lat":"21.969969","Long":"-79.442691"},"UST":{"Station":"UST","City":"St. Augustine","Lat":"29.95925","Long":"-81.339721"},"USU":{"Station":"USU","City":"Busuanga","Lat":"12.121458","Long":"120.100031"},"UTA":{"Station":"UTA","City":"Mutare","Lat":"-18.997498","Long":"32.627224"},"UTB":{"Station":"UTB","City":"Muttaburra","Lat":"-22.583","Long":"144.533"},"UTD":{"Station":"UTD","City":"Nutwood Downs","Lat":"-15.817","Long":"134.15"},"UTG":{"Station":"UTG","City":"Quthing","Lat":"-30.407499","Long":"27.693333"},"UTH":{"Station":"UTH","City":"Udon Thani","Lat":"17.386436","Long":"102.788247"},"UTI":{"Station":"UTI","City":"Kouvola","Lat":"60.896394","Long":"26.938353"},"UTK":{"Station":"UTK","City":"Utirik Island","Lat":"11.233333","Long":"169.85"},"UTM":{"Station":"UTM","City":"Tunica","Lat":"34.685056","Long":"-90.347777"},"UTN":{"Station":"UTN","City":"Upington","Lat":"-28.399096","Long":"21.260239"},"UTO":{"Station":"UTO","City":"Utopia Creek","Lat":"65.992758","Long":"-153.703766"},"UTP":{"Station":"UTP","City":"Rayong","Lat":"12.679944","Long":"101.005028"},"UTT":{"Station":"UTT","City":"Umtata","Lat":"-31.547902","Long":"28.674289"},"UTW":{"Station":"UTW","City":"Queenstown","Lat":"-31.920196","Long":"26.882206"},"UUA":{"Station":"UUA","City":"Bugulma","Lat":"54.634722","Long":"52.799167"},"UUD":{"Station":"UUD","City":"Ulan Ude","Lat":"51.807764","Long":"107.437644"},"UUK":{"Station":"UUK","City":"Kuparuk","Lat":"70.330667","Long":"-149.598055"},"UUN":{"Station":"UUN","City":"Baruun-Urt","Lat":"46.660347","Long":"113.285328"},"UUS":{"Station":"UUS","City":"Yuzhno-Sakhalinsk","Lat":"46.888672","Long":"142.717531"},"UVA":{"Station":"UVA","City":"Uvalde","Lat":"29.211333","Long":"-99.743582"},"UVE":{"Station":"UVE","City":"Ouv\u00e9a","Lat":"-20.640555","Long":"166.572778"},"UVF":{"Station":"UVF","City":"St. Lucia","Lat":"13.732222","Long":"-60.951943"},"UVL":{"Station":"UVL","City":"El-Kharga","Lat":"25.473631","Long":"30.590706"},"UWA":{"Station":"UWA","City":"Ware","Lat":"42.282036","Long":"-72.214801"},"UYL":{"Station":"UYL","City":"Nyala","Lat":"12.053475","Long":"24.956178"},"UYN":{"Station":"UYN","City":"Yulin","Lat":"38.269167","Long":"109.731111"},"UYU":{"Station":"UYU","City":"Uyuni","Lat":"-20.467","Long":"-66.833"},"UZC":{"Station":"UZC","City":"Uzice","Lat":"43.898889","Long":"19.6975"},"UZU":{"Station":"UZU","City":"Curuz\u00fa Cuati\u00e1","Lat":"-29.770554","Long":"-57.978888"},"VAA":{"Station":"VAA","City":"Vaasa","Lat":"63.05065","Long":"21.762175"},"VAC":{"Station":"VAC","City":"Varrelbusch","Lat":"52.906826","Long":"8.040667"},"VAD":{"Station":"VAD","City":"Valdosta","Lat":"30.9687","Long":"-83.192963"},"VAF":{"Station":"VAF","City":"Valence","Lat":"44.915558","Long":"4.968744"},"VAG":{"Station":"VAG","City":"Varginha","Lat":"-21.590066","Long":"-45.473341"},"VAH":{"Station":"VAH","City":"Vallegrande","Lat":"-18.479166","Long":"-64.099443"},"VAI":{"Station":"VAI","City":"Vanimo","Lat":"-2.697166","Long":"141.302286"},"VAK":{"Station":"VAK","City":"Chevak","Lat":"61.540845","Long":"-165.600891"},"VAL":{"Station":"VAL","City":"Valen\u00e7a","Lat":"-13.29646","Long":"-38.992427"},"VAM":{"Station":"VAM","City":"Maamigili Island","Lat":"3.470556","Long":"72.835833"},"VAN":{"Station":"VAN","City":"Van","Lat":"38.468219","Long":"43.3323"},"VAO":{"Station":"VAO","City":"Suavanao","Lat":"-7.585555","Long":"158.730833"},"VAP":{"Station":"VAP","City":"Vi\u00f1a del Mar","Lat":"-33.067777","Long":"-71.557221"},"VAR":{"Station":"VAR","City":"Varna","Lat":"43.232072","Long":"27.825106"},"VAS":{"Station":"VAS","City":"Sivas","Lat":"39.813828","Long":"36.903497"},"VAU":{"Station":"VAU","City":"Vatukoula","Lat":"-17.499999","Long":"177.841667"},"VAV":{"Station":"VAV","City":"Vava'u","Lat":"-18.584666","Long":"-173.968499"},"VAW":{"Station":"VAW","City":"Vard\u00f8","Lat":"70.355392","Long":"31.044889"},"VBS":{"Station":"VBS","City":"Brescia","Lat":"45.428889","Long":"10.330556"},"VBY":{"Station":"VBY","City":"Visby","Lat":"57.662797","Long":"18.346211"},"VCA":{"Station":"VCA","City":"C\u00e2n Tho","Lat":"10.085119","Long":"105.711922"},"VCB":{"Station":"VCB","City":"Vacaville","Lat":"38.377778","Long":"-121.961582"},"VCD":{"Station":"VCD","City":"Victoria River Downs","Lat":"-16.404992","Long":"131.003326"},"VCE":{"Station":"VCE","City":"Venice","Lat":"45.505278","Long":"12.351944"},"VCH":{"Station":"VCH","City":"Vichadero","Lat":"-31.767","Long":"-54.617"},"VCL":{"Station":"VCL","City":"Chu Lai","Lat":"15.405944","Long":"108.705889"},"VCP":{"Station":"VCP","City":"Campinas","Lat":"-23.007382","Long":"-47.134521"},"VCR":{"Station":"VCR","City":"Carora","Lat":"10.175603","Long":"-70.065213"},"VCS":{"Station":"VCS","City":"Con Son Island","Lat":"8.731831","Long":"106.632589"},"VCT":{"Station":"VCT","City":"Victoria","Lat":"28.852546","Long":"-96.918488"},"VCV":{"Station":"VCV","City":"Victorville","Lat":"34.597472","Long":"-117.382999"},"VDA":{"Station":"VDA","City":"Eilat","Lat":"29.94025","Long":"34.93585"},"VDB":{"Station":"VDB","City":"Fagernes","Lat":"61.015556","Long":"9.288056"},"VDC":{"Station":"VDC","City":"Vitoria da Conquista","Lat":"-14.86276","Long":"-40.863105"},"VDE":{"Station":"VDE","City":"Valverde","Lat":"27.814847","Long":"-17.887055"},"VDH":{"Station":"VDH","City":"Dong Hoi","Lat":"17.515","Long":"106.590556"},"VDI":{"Station":"VDI","City":"Vidalia","Lat":"32.192722","Long":"-82.371166"},"VDM":{"Station":"VDM","City":"Viedma","Lat":"-40.869221","Long":"-63.000388"},"VDP":{"Station":"VDP","City":"Valle de la Pascua","Lat":"9.222028","Long":"-65.993582"},"VDR":{"Station":"VDR","City":"Villa Dolores","Lat":"-31.945182","Long":"-65.146282"},"VDS":{"Station":"VDS","City":"Vads\u00f8","Lat":"70.065278","Long":"29.844722"},"VDZ":{"Station":"VDZ","City":"Valdez","Lat":"61.134215","Long":"-146.244761"},"VEE":{"Station":"VEE","City":"Venetie","Lat":"67.008675","Long":"-146.366357"},"VEL":{"Station":"VEL","City":"Vernal","Lat":"40.440917","Long":"-109.509916"},"VER":{"Station":"VER","City":"Veracruz","Lat":"19.145931","Long":"-96.187266"},"VEV":{"Station":"VEV","City":"Barakoma","Lat":"-7.912777","Long":"156.706111"},"VEX":{"Station":"VEX","City":"Tioga","Lat":"48.380278","Long":"-102.89736"},"VEY":{"Station":"VEY","City":"Vestmannaeyjar","Lat":"63.425","Long":"-20.279166"},"VFA":{"Station":"VFA","City":"Victoria Falls","Lat":"-18.09588","Long":"25.839006"},"VGA":{"Station":"VGA","City":"Vijayawada","Lat":"16.530433","Long":"80.796847"},"VGD":{"Station":"VGD","City":"Vologda","Lat":"59.2825","Long":"39.944444"},"VGO":{"Station":"VGO","City":"Vigo","Lat":"42.2318","Long":"-8.626774"},"VGT":{"Station":"VGT","City":"Las Vegas","Lat":"36.210694","Long":"-115.194443"},"VGZ":{"Station":"VGZ","City":"Garz\u00f3n","Lat":"2.166667","Long":"-75.666666"},"VHC":{"Station":"VHC","City":"Saurimo","Lat":"-9.689066","Long":"20.431875"},"VHM":{"Station":"VHM","City":"Vilhelmina","Lat":"64.579083","Long":"16.833575"},"VHN":{"Station":"VHN","City":"Van Horn","Lat":"31.057833","Long":"-104.783805"},"VHY":{"Station":"VHY","City":"Vichy","Lat":"46.171783","Long":"3.404033"},"VHZ":{"Station":"VHZ","City":"Vahitahi","Lat":"-18.779999","Long":"-138.853332"},"VIB":{"Station":"VIB","City":"Ciudad Constituci\u00f3n","Lat":"25.053611","Long":"-111.614721"},"VIC":{"Station":"VIC","City":"Vicenza","Lat":"45.573411","Long":"11.52955"},"VID":{"Station":"VID","City":"Vidin","Lat":"44.022362","Long":"22.816111"},"VIE":{"Station":"VIE","City":"Wien","Lat":"48.110278","Long":"16.569722"},"VIG":{"Station":"VIG","City":"El Vigia","Lat":"8.6241","Long":"-71.672818"},"VIH":{"Station":"VIH","City":"Rolla\/Vichy","Lat":"38.127417","Long":"-91.769499"},"VII":{"Station":"VII","City":"Vinh City","Lat":"18.737569","Long":"105.670764"},"VIJ":{"Station":"VIJ","City":"Virgin Gorda","Lat":"18.448056","Long":"-64.42861"},"VIL":{"Station":"VIL","City":"Villa Cisneros","Lat":"23.718294","Long":"-15.931993"},"VIN":{"Station":"VIN","City":"Vinnitsa","Lat":"49.242222","Long":"28.614167"},"VIQ":{"Station":"VIQ","City":"Viqueque","Lat":"-8.883888","Long":"126.373056"},"VIR":{"Station":"VIR","City":"Durban","Lat":"-29.770605","Long":"31.058406"},"VIS":{"Station":"VIS","City":"Visalia","Lat":"36.318639","Long":"-119.39286"},"VIT":{"Station":"VIT","City":"Vitoria","Lat":"42.882836","Long":"-2.724468"},"VIU":{"Station":"VIU","City":"Viru","Lat":"-8.5","Long":"157.683"},"VIV":{"Station":"VIV","City":"Vivigani","Lat":"-9.303332","Long":"150.318889"},"VIX":{"Station":"VIX","City":"Vit\u00f3ria","Lat":"-20.258055","Long":"-40.286388"},"VJB":{"Station":"VJB","City":"Xai Xai","Lat":"-25.037777","Long":"33.627222"},"VJI":{"Station":"VJI","City":"Abingdon","Lat":"36.687103","Long":"-82.033326"},"VKG":{"Station":"VKG","City":"Rach Gia","Lat":"9.958056","Long":"105.1325"},"VKO":{"Station":"VKO","City":"Moscow","Lat":"55.591531","Long":"37.261486"},"VKS":{"Station":"VKS","City":"Vicksburg","Lat":"32.239139","Long":"-90.928193"},"VKT":{"Station":"VKT","City":"Vorkuta","Lat":"67.488611","Long":"63.993056"},"VLA":{"Station":"VLA","City":"Vandalia","Lat":"38.991306","Long":"-89.166221"},"VLC":{"Station":"VLC","City":"Valencia","Lat":"39.489314","Long":"-0.481624"},"VLD":{"Station":"VLD","City":"Valdosta","Lat":"30.781372","Long":"-83.276218"},"VLE":{"Station":"VLE","City":"Grand Canyon","Lat":"35.650646","Long":"-112.148053"},"VLG":{"Station":"VLG","City":"Villa Gesell","Lat":"-37.235407","Long":"-57.029238"},"VLI":{"Station":"VLI","City":"Port Vila","Lat":"-17.699324","Long":"168.319794"},"VLK":{"Station":"VLK","City":"Volgodonsk","Lat":"47.682778","Long":"42.076667"},"VLL":{"Station":"VLL","City":"Valladolid","Lat":"41.706111","Long":"-4.851943"},"VLM":{"Station":"VLM","City":"Villamontes","Lat":"-21.25523","Long":"-63.40561"},"VLN":{"Station":"VLN","City":"Valencia","Lat":"10.149733","Long":"-67.928399"},"VLR":{"Station":"VLR","City":"Vallenar","Lat":"-28.596402","Long":"-70.755996"},"VLS":{"Station":"VLS","City":"Valesdir","Lat":"-16.79611","Long":"168.176944"},"VLU":{"Station":"VLU","City":"Velikiye Luki","Lat":"56.381111","Long":"30.608056"},"VLV":{"Station":"VLV","City":"Valera","Lat":"9.340797","Long":"-70.584088"},"VLY":{"Station":"VLY","City":"Anglesey","Lat":"53.248097","Long":"-4.535338"},"VME":{"Station":"VME","City":"Villa Mercedes","Lat":"-33.725143","Long":"-65.378085"},"VNA":{"Station":"VNA","City":"Saravane","Lat":"15.709167","Long":"106.411389"},"VNC":{"Station":"VNC","City":"Venice","Lat":"27.071611","Long":"-82.440332"},"VNE":{"Station":"VNE","City":"Vannes","Lat":"47.719244","Long":"-2.723377"},"VNO":{"Station":"VNO","City":"Vilnius","Lat":"54.637075","Long":"25.287803"},"VNR":{"Station":"VNR","City":"Vanrook Stations","Lat":"-16.961388","Long":"141.951944"},"VNS":{"Station":"VNS","City":"Varanasi","Lat":"25.452358","Long":"82.859342"},"VNX":{"Station":"VNX","City":"Vilankulo","Lat":"-22.01843","Long":"35.313297"},"VNY":{"Station":"VNY","City":"Van Nuys","Lat":"34.209806","Long":"-118.489971"},"VOG":{"Station":"VOG","City":"Volgograd","Lat":"48.782528","Long":"44.345544"},"VOH":{"Station":"VOH","City":"Vohimarina","Lat":"-13.375833","Long":"50.002777"},"VOK":{"Station":"VOK","City":"Camp Douglas","Lat":"43.939238","Long":"-90.253162"},"VOL":{"Station":"VOL","City":"Volos","Lat":"39.219619","Long":"22.794339"},"VOT":{"Station":"VOT","City":"Votuporanga","Lat":"-20.463246","Long":"-50.004535"},"VOZ":{"Station":"VOZ","City":"Voronezh","Lat":"51.814211","Long":"39.229589"},"VPE":{"Station":"VPE","City":"Ongiva","Lat":"-17.043463","Long":"15.683822"},"VPN":{"Station":"VPN","City":"Vopnafj\u00f6r\u00f0ur","Lat":"65.720556","Long":"-14.850555"},"VPS":{"Station":"VPS","City":"Valparaiso","Lat":"30.483219","Long":"-86.526043"},"VPY":{"Station":"VPY","City":"Chimoio","Lat":"-19.151266","Long":"33.428958"},"VPZ":{"Station":"VPZ","City":"Valparaiso","Lat":"41.453972","Long":"-87.007082"},"VQS":{"Station":"VQS","City":"Isla De Vieques","Lat":"18.134811","Long":"-65.493616"},"VRA":{"Station":"VRA","City":"Varadero","Lat":"23.034445","Long":"-81.435277"},"VRB":{"Station":"VRB","City":"Vero Beach","Lat":"27.655556","Long":"-80.417943"},"VRC":{"Station":"VRC","City":"Virac","Lat":"13.576439","Long":"124.205672"},"VRE":{"Station":"VRE","City":"Vredendal","Lat":"-31.64096","Long":"18.544789"},"VRK":{"Station":"VRK","City":"Varkaus","Lat":"62.171111","Long":"27.868611"},"VRL":{"Station":"VRL","City":"Vila Real","Lat":"41.274334","Long":"-7.720471"},"VRN":{"Station":"VRN","City":"Verona","Lat":"45.395706","Long":"10.888533"},"VRS":{"Station":"VRS","City":"Versailles","Lat":"38.428278","Long":"-92.875277"},"VRU":{"Station":"VRU","City":"Vryburg","Lat":"-26.982407","Long":"24.728756"},"VSA":{"Station":"VSA","City":"Villahermosa","Lat":"17.997","Long":"-92.81736"},"VSE":{"Station":"VSE","City":"Viseu","Lat":"40.725539","Long":"-7.888991"},"VSF":{"Station":"VSF","City":"Springfield","Lat":"43.343722","Long":"-72.517277"},"VSG":{"Station":"VSG","City":"Lugansk","Lat":"48.417381","Long":"39.374125"},"VST":{"Station":"VST","City":"Stockholm","Lat":"59.589444","Long":"16.633611"},"VTB":{"Station":"VTB","City":"Vitebsk","Lat":"55.1265","Long":"30.349639"},"VTE":{"Station":"VTE","City":"Vientiane","Lat":"17.988322","Long":"102.563256"},"VTF":{"Station":"VTF","City":"Vatulele","Lat":"-18.512499","Long":"177.638889"},"VTG":{"Station":"VTG","City":"Vung Tau","Lat":"10.3725","Long":"107.094722"},"VTL":{"Station":"VTL","City":"Vittel","Lat":"48.223889","Long":"5.935278"},"VTN":{"Station":"VTN","City":"Valentine","Lat":"42.856694","Long":"-100.548971"},"VTS":{"Station":"VTS","City":"Ventspils","Lat":"57.357778","Long":"21.544167"},"VTU":{"Station":"VTU","City":"Las Tunas","Lat":"20.987642","Long":"-76.935799"},"VTZ":{"Station":"VTZ","City":"Vishakhapatnam","Lat":"17.721167","Long":"83.224483"},"VUP":{"Station":"VUP","City":"Valledupar","Lat":"10.435072","Long":"-73.24943"},"VVB":{"Station":"VVB","City":"Mahanoro","Lat":"-19.836388","Long":"48.799167"},"VVC":{"Station":"VVC","City":"Villavicencio","Lat":"4.167875","Long":"-73.61376"},"VVI":{"Station":"VVI","City":"Santa Cruz","Lat":"-17.644755","Long":"-63.135363"},"VVK":{"Station":"VVK","City":"V\u00e4stervik","Lat":"57.78","Long":"16.523611"},"VVO":{"Station":"VVO","City":"Vladivostok","Lat":"43.398953","Long":"132.148017"},"VVZ":{"Station":"VVZ","City":"Illizi","Lat":"26.723611","Long":"8.617778"},"VXC":{"Station":"VXC","City":"Lichinga","Lat":"-13.273985","Long":"35.266262"},"VXE":{"Station":"VXE","City":"S\u00e3o Pedro","Lat":"16.833689","Long":"-25.05466"},"VXO":{"Station":"VXO","City":"V\u00e4xj\u00f6","Lat":"56.929144","Long":"14.727994"},"VYD":{"Station":"VYD","City":"Vryheid","Lat":"-27.783","Long":"30.8"},"VYS":{"Station":"VYS","City":"Peru","Lat":"41.350139","Long":"-89.152943"},"WAA":{"Station":"WAA","City":"Wales","Lat":"65.622556","Long":"-168.094971"},"WAC":{"Station":"WAC","City":"Waca","Lat":"7.167","Long":"37.167"},"WAE":{"Station":"WAE","City":"Wadi Ad Dawasir","Lat":"20.504275","Long":"45.199556"},"WAF":{"Station":"WAF","City":"Wana","Lat":"32.304664","Long":"69.570433"},"WAG":{"Station":"WAG","City":"Wanganui","Lat":"-39.962221","Long":"175.025278"},"WAH":{"Station":"WAH","City":"Wahpeton","Lat":"46.244294","Long":"-96.607155"},"WAI":{"Station":"WAI","City":"Antsohihy","Lat":"-14.898749","Long":"47.993894"},"WAK":{"Station":"WAK","City":"Ankazoabo","Lat":"-22.295832","Long":"44.531111"},"WAL":{"Station":"WAL","City":"Wallops Island","Lat":"37.940194","Long":"-75.466388"},"WAM":{"Station":"WAM","City":"Ambatondrazaka","Lat":"-17.8","Long":"48.433"},"WAP":{"Station":"WAP","City":"Alto Palena","Lat":"-43.615277","Long":"-71.806943"},"WAQ":{"Station":"WAQ","City":"Antsalova","Lat":"-18.7","Long":"44.617"},"WAR":{"Station":"WAR","City":"Waris","Lat":"-3.233","Long":"140.967"},"WAT":{"Station":"WAT","City":"Waterford","Lat":"52.1872","Long":"-7.086963"},"WAV":{"Station":"WAV","City":"Wave Hill","Lat":"-17.393888","Long":"131.118611"},"WAW":{"Station":"WAW","City":"Warsaw","Lat":"52.16575","Long":"20.967122"},"WAX":{"Station":"WAX","City":"Zwara","Lat":"32.952269","Long":"12.015469"},"WAY":{"Station":"WAY","City":"Waynesburg","Lat":"39.901139","Long":"-80.130693"},"WAZ":{"Station":"WAZ","City":"Warwick","Lat":"-28.149443","Long":"151.943056"},"WBB":{"Station":"WBB","City":"Stebbins","Lat":"63.515972","Long":"-162.277999"},"WBD":{"Station":"WBD","City":"Befandriana","Lat":"-15.2","Long":"48.483"},"WBG":{"Station":"WBG","City":"Schleswig-Jagel","Lat":"54.459","Long":"9.516"},"WBM":{"Station":"WBM","City":"Wapenamanda","Lat":"-5.643302","Long":"143.895411"},"WBO":{"Station":"WBO","City":"Beroroha","Lat":"-21.6","Long":"45.133"},"WBQ":{"Station":"WBQ","City":"Beaver","Lat":"66.362222","Long":"-147.406499"},"WBR":{"Station":"WBR","City":"Big Rapids","Lat":"43.722639","Long":"-85.504055"},"WBU":{"Station":"WBU","City":"Boulder","Lat":"40.03943","Long":"-105.225821"},"WBW":{"Station":"WBW","City":"Wilkes-Barre","Lat":"41.297307","Long":"-75.85224"},"WCA":{"Station":"WCA","City":"Castro","Lat":"-42.488332","Long":"-73.774999"},"WCH":{"Station":"WCH","City":"Chait\u00e9n","Lat":"-42.932807","Long":"-72.699113"},"WCR":{"Station":"WCR","City":"Chandalar Lake","Lat":"67.504517","Long":"-148.483221"},"WCY":{"Station":"WCY","City":"Alcoota Station","Lat":"-22.801666","Long":"134.403056"},"WDA":{"Station":"WDA","City":"Wadi Ain","Lat":"14.867","Long":"45.55"},"WDG":{"Station":"WDG","City":"Enid","Lat":"36.378361","Long":"-97.788999"},"WDH":{"Station":"WDH","City":"Windhoek","Lat":"-22.479893","Long":"17.47095"},"WDI":{"Station":"WDI","City":"Wondai","Lat":"-26.283","Long":"151.85"},"WDR":{"Station":"WDR","City":"Winder","Lat":"33.982861","Long":"-83.667416"},"WEA":{"Station":"WEA","City":"Weatherford","Lat":"32.746287","Long":"-97.682451"},"WEF":{"Station":"WEF","City":"Weifang","Lat":"36.646667","Long":"119.118611"},"WEH":{"Station":"WEH","City":"Weihai","Lat":"37.187142","Long":"122.228897"},"WEI":{"Station":"WEI","City":"Weipa","Lat":"-12.67861","Long":"141.925278"},"WEL":{"Station":"WEL","City":"Welkom","Lat":"-27.997999","Long":"26.669586"},"WEW":{"Station":"WEW","City":"Wee Waa","Lat":"-30.258332","Long":"149.408333"},"WFI":{"Station":"WFI","City":"Fianarantsoa","Lat":"-21.441557","Long":"47.111736"},"WFK":{"Station":"WFK","City":"Frenchville","Lat":"47.2855","Long":"-68.312721"},"WGA":{"Station":"WGA","City":"Wagga Wagga","Lat":"-35.165277","Long":"147.466389"},"WGC":{"Station":"WGC","City":"Warrangal","Lat":"17.914442","Long":"79.602219"},"WGE":{"Station":"WGE","City":"Walgett","Lat":"-30.032777","Long":"148.125833"},"WGO":{"Station":"WGO","City":"Winchester","Lat":"39.143528","Long":"-78.144443"},"WGP":{"Station":"WGP","City":"Waingapu","Lat":"-9.669216","Long":"120.302006"},"WGT":{"Station":"WGT","City":"Wangaratta","Lat":"-36.415832","Long":"146.306944"},"WHF":{"Station":"WHF","City":"Wadi Halfa","Lat":"21.803889","Long":"31.524722"},"WHK":{"Station":"WHK","City":"Whakatane","Lat":"-37.920555","Long":"176.914167"},"WHM":{"Station":"WHM","City":"Wickham","Lat":"-20.675832","Long":"117.124722"},"WHO":{"Station":"WHO","City":"Franz Josef","Lat":"-43.363055","Long":"170.134444"},"WHP":{"Station":"WHP","City":"Los Angeles","Lat":"34.259325","Long":"-118.413432"},"WHS":{"Station":"WHS","City":"Whalsay","Lat":"60.376389","Long":"-0.927221"},"WHT":{"Station":"WHT","City":"Wharton","Lat":"29.254278","Long":"-96.154388"},"WHU":{"Station":"WHU","City":"Wuhu","Lat":"31.390556","Long":"118.409444"},"WIC":{"Station":"WIC","City":"Wick","Lat":"58.458889","Long":"-3.093055"},"WIE":{"Station":"WIE","City":"Wiesbaden","Lat":"50.049819","Long":"8.325397"},"WIG":{"Station":"WIG","City":"\u00cele-aux-Grues","Lat":"47.071111","Long":"-70.532777"},"WIK":{"Station":"WIK","City":"Surfdale","Lat":"-36.808332","Long":"175.085278"},"WIL":{"Station":"WIL","City":"Nairobi","Lat":"-1.321718","Long":"36.814833"},"WIN":{"Station":"WIN","City":"Winton","Lat":"-22.36361","Long":"143.085556"},"WIO":{"Station":"WIO","City":"Wilcannia","Lat":"-31.526388","Long":"143.374722"},"WIR":{"Station":"WIR","City":"Wairoa","Lat":"-39.006943","Long":"177.406667"},"WIX":{"Station":"WIX","City":"Tuxpan","Lat":"19.598425","Long":"-103.372085"},"WJF":{"Station":"WJF","City":"Lancaster","Lat":"34.741056","Long":"-118.218638"},"WJR":{"Station":"WJR","City":"Wajir","Lat":"1.733239","Long":"40.091606"},"WJU":{"Station":"WJU","City":"Wonju","Lat":"37.438081","Long":"127.960383"},"WKA":{"Station":"WKA","City":"Wanaka","Lat":"-44.722221","Long":"169.245556"},"WKB":{"Station":"WKB","City":"Warracknabeal","Lat":"-36.32111","Long":"142.419444"},"WKI":{"Station":"WKI","City":"Hwange","Lat":"-18.362493","Long":"26.516666"},"WKJ":{"Station":"WKJ","City":"Wakkanai","Lat":"45.404167","Long":"141.800833"},"WKK":{"Station":"WKK","City":"Aleknagik","Lat":"59.282556","Long":"-158.617866"},"WKR":{"Station":"WKR","City":"Walker's Cay","Lat":"27.267","Long":"-78.4"},"WLA":{"Station":"WLA","City":"Wallal Downs","Lat":"-19.774166","Long":"120.649722"},"WLC":{"Station":"WLC","City":"Walcha","Lat":"-31.007777","Long":"151.551111"},"WLD":{"Station":"WLD","City":"Winfield\/Arkansas City","Lat":"37.168611","Long":"-97.037527"},"WLG":{"Station":"WLG","City":"Wellington","Lat":"-41.327221","Long":"174.805278"},"WLH":{"Station":"WLH","City":"Walaha","Lat":"-15.412","Long":"167.691"},"WLK":{"Station":"WLK","City":"Selawik","Lat":"66.600139","Long":"-159.985749"},"WLL":{"Station":"WLL","City":"Wollogorang","Lat":"-17.219721","Long":"137.934167"},"WLO":{"Station":"WLO","City":"Waterloo","Lat":"-16.630277","Long":"129.321667"},"WLS":{"Station":"WLS","City":"Wallis Island","Lat":"-13.238332","Long":"-176.198888"},"WLW":{"Station":"WLW","City":"Willows","Lat":"39.51575","Long":"-122.217277"},"WMB":{"Station":"WMB","City":"Warrnambool","Lat":"-38.295277","Long":"142.446667"},"WMC":{"Station":"WMC","City":"Winnemucca","Lat":"40.896611","Long":"-117.805888"},"WMD":{"Station":"WMD","City":"Mandabe","Lat":"-21.033","Long":"44.95"},"WME":{"Station":"WME","City":"Mount Keith","Lat":"-27.286388","Long":"120.554722"},"WMH":{"Station":"WMH","City":"Mountain Home","Lat":"36.368942","Long":"-92.470527"},"WMI":{"Station":"WMI","City":"Modlin","Lat":"52.451131","Long":"20.651894"},"WML":{"Station":"WML","City":"Malaimbandy","Lat":"-20.35","Long":"45.55"},"WMN":{"Station":"WMN","City":"Maroantsetra","Lat":"-15.436665","Long":"49.688332"},"WMO":{"Station":"WMO","City":"White Mountain","Lat":"64.689194","Long":"-163.412749"},"WMR":{"Station":"WMR","City":"Mananara","Lat":"-16.163899","Long":"49.773753"},"WMX":{"Station":"WMX","City":"Wamena","Lat":"-4.10251","Long":"138.957372"},"WNA":{"Station":"WNA","City":"Napakiak","Lat":"60.690333","Long":"-161.978499"},"WND":{"Station":"WND","City":"Windarra","Lat":"-28.479999","Long":"122.244167"},"WNH":{"Station":"WNH","City":"Wenshan","Lat":"23.558056","Long":"104.325278"},"WNP":{"Station":"WNP","City":"Naga","Lat":"13.584886","Long":"123.270239"},"WNR":{"Station":"WNR","City":"Windorah Park","Lat":"-25.413055","Long":"142.667222"},"WNS":{"Station":"WNS","City":"Nawab Shah","Lat":"26.219442","Long":"68.390053"},"WNZ":{"Station":"WNZ","City":"Wenzhou","Lat":"27.912222","Long":"120.851944"},"WOL":{"Station":"WOL","City":"Wollongong","Lat":"-34.56111","Long":"150.788611"},"WOT":{"Station":"WOT","City":"Wang-an","Lat":"23.370833","Long":"119.494444"},"WOW":{"Station":"WOW","City":"Willow","Lat":"61.754189","Long":"-150.051738"},"WPC":{"Station":"WPC","City":"Pincher Creek","Lat":"49.520556","Long":"-113.997221"},"WPK":{"Station":"WPK","City":"Wrotham Park","Lat":"-16.658","Long":"144.001"},"WPO":{"Station":"WPO","City":"Paonia","Lat":"38.831306","Long":"-107.64586"},"WPR":{"Station":"WPR","City":"Porvenir","Lat":"-53.253699","Long":"-70.319227"},"WPU":{"Station":"WPU","City":"Puerto Williams","Lat":"-54.931071","Long":"-67.62626"},"WPW":{"Station":"WPW","City":"Keekorok","Lat":"-1.583","Long":"35.25"},"WRB":{"Station":"WRB","City":"Warner Robins","Lat":"32.640171","Long":"-83.59192"},"WRE":{"Station":"WRE","City":"Whangarei","Lat":"-35.768332","Long":"174.365"},"WRG":{"Station":"WRG","City":"Wrangell","Lat":"56.484333","Long":"-132.369832"},"WRI":{"Station":"WRI","City":"Wrightstown","Lat":"40.015583","Long":"-74.591699"},"WRL":{"Station":"WRL","City":"Worland","Lat":"43.962889","Long":"-107.950527"},"WRO":{"Station":"WRO","City":"Wroclaw","Lat":"51.102683","Long":"16.885836"},"WRW":{"Station":"WRW","City":"Warrawagine Station","Lat":"-20.842777","Long":"120.703056"},"WRY":{"Station":"WRY","City":"Aikerness","Lat":"59.350278","Long":"-2.949999"},"WRZ":{"Station":"WRZ","City":"Weerawila","Lat":"6.254494","Long":"81.235189"},"WSD":{"Station":"WSD","City":"White Sands","Lat":"32.341483","Long":"-106.402767"},"WSG":{"Station":"WSG","City":"Washington","Lat":"40.136472","Long":"-80.290193"},"WSH":{"Station":"WSH","City":"Shirley","Lat":"40.821944","Long":"-72.866916"},"WSM":{"Station":"WSM","City":"Wiseman","Lat":"67.404573","Long":"-150.122741"},"WSN":{"Station":"WSN","City":"South Naknek","Lat":"58.702083","Long":"-157.002582"},"WSP":{"Station":"WSP","City":"Waspam","Lat":"14.733","Long":"-83.967"},"WST":{"Station":"WST","City":"Westerly","Lat":"41.349633","Long":"-71.803416"},"WSY":{"Station":"WSY","City":"Airlie Beach","Lat":"-20.27611","Long":"148.755"},"WSZ":{"Station":"WSZ","City":"Westport","Lat":"-41.738055","Long":"171.580833"},"WTA":{"Station":"WTA","City":"Tambohorano","Lat":"-17.47611","Long":"43.972778"},"WTD":{"Station":"WTD","City":"West End","Lat":"26.685278","Long":"-78.974999"},"WTE":{"Station":"WTE","City":"Wotje Atoll","Lat":"9.466667","Long":"170.233333"},"WTK":{"Station":"WTK","City":"Noatak","Lat":"67.561167","Long":"-162.980416"},"WTL":{"Station":"WTL","City":"Tuntutuliak","Lat":"60.335346","Long":"-162.667008"},"WTN":{"Station":"WTN","City":"Waddington","Lat":"53.166167","Long":"-0.52381"},"WTO":{"Station":"WTO","City":"Wotho Island","Lat":"10.173333","Long":"166.002778"},"WTR":{"Station":"WTR","City":"Whiteriver","Lat":"33.810608","Long":"-109.985743"},"WTS":{"Station":"WTS","City":"Tsiroanomandidy","Lat":"-18.75","Long":"46.05"},"WTZ":{"Station":"WTZ","City":"Whitianga","Lat":"-36.831666","Long":"175.678611"},"WUA":{"Station":"WUA","City":"Wuhai","Lat":"39.794444","Long":"106.799444"},"WUD":{"Station":"WUD","City":"Wudinna","Lat":"-33.043332","Long":"135.447222"},"WUH":{"Station":"WUH","City":"Wuhan","Lat":"30.783758","Long":"114.2081"},"WUN":{"Station":"WUN","City":"Wiluna","Lat":"-26.629166","Long":"120.220556"},"WUS":{"Station":"WUS","City":"Wuyishan","Lat":"27.701944","Long":"118.001389"},"WUU":{"Station":"WUU","City":"Wau","Lat":"7.725556","Long":"27.979167"},"WUX":{"Station":"WUX","City":"Wuxi","Lat":"31.497222","Long":"120.430556"},"WUZ":{"Station":"WUZ","City":"Wuzhou","Lat":"23.456667","Long":"111.248056"},"WVB":{"Station":"WVB","City":"Walvis Bay","Lat":"-22.979888","Long":"14.645331"},"WVI":{"Station":"WVI","City":"Watsonville","Lat":"36.935722","Long":"-121.789638"},"WVK":{"Station":"WVK","City":"Manakara","Lat":"-22.119721","Long":"48.021667"},"WVL":{"Station":"WVL","City":"Waterville","Lat":"44.53325","Long":"-69.675527"},"WVN":{"Station":"WVN","City":"Wilhelmshaven","Lat":"53.503008","Long":"8.052828"},"WWA":{"Station":"WWA","City":"Wasilla","Lat":"61.571986","Long":"-149.539556"},"WWD":{"Station":"WWD","City":"Wildwood","Lat":"39.0085","Long":"-74.908582"},"WWI":{"Station":"WWI","City":"Woodie Woodie","Lat":"-21.662777","Long":"121.234444"},"WWK":{"Station":"WWK","City":"Wewak","Lat":"-3.583827","Long":"143.669186"},"WWR":{"Station":"WWR","City":"Woodward","Lat":"36.438","Long":"-99.522666"},"WWT":{"Station":"WWT","City":"Newtok","Lat":"60.939139","Long":"-164.641249"},"WWY":{"Station":"WWY","City":"West Wyalong","Lat":"-33.937221","Long":"147.191389"},"WXF":{"Station":"WXF","City":"Braintree","Lat":"51.971944","Long":"0.509444"},"WXN":{"Station":"WXN","City":"Wanxian","Lat":"30.836111","Long":"108.405556"},"WYA":{"Station":"WYA","City":"Whyalla","Lat":"-33.058888","Long":"137.514444"},"WYE":{"Station":"WYE","City":"Yengema","Lat":"8.610467","Long":"-11.045443"},"WYN":{"Station":"WYN","City":"Wyndham","Lat":"-15.511388","Long":"128.153056"},"WYS":{"Station":"WYS","City":"West Yellowstone","Lat":"44.688389","Long":"-111.117638"},"XAB":{"Station":"XAB","City":"Abbeville","Lat":"50.143056","Long":"1.8325"},"XAL":{"Station":"XAL","City":"\u00c1lamos","Lat":"27.035661","Long":"-108.948285"},"XAN":{"Station":"XAN","City":"Alen\u00e7on\/Valframbert","Lat":"48.4475","Long":"0.109167"},"XAP":{"Station":"XAP","City":"Chapec\u00f3","Lat":"-27.134218","Long":"-52.656552"},"XAR":{"Station":"XAR","City":"Aribinda","Lat":"14.217","Long":"-0.883"},"XAS":{"Station":"XAS","City":"Brevoort","Lat":"63.325169","Long":"-64.154663"},"XAU":{"Station":"XAU","City":"Sa\u00fcl","Lat":"3.613611","Long":"-53.204166"},"XBE":{"Station":"XBE","City":"Bearskin Lake","Lat":"53.966389","Long":"-91.026388"},"XBG":{"Station":"XBG","City":"Bogande","Lat":"12.983","Long":"-0.167"},"XBJ":{"Station":"XBJ","City":"Birjand","Lat":"32.898056","Long":"59.266111"},"XBO":{"Station":"XBO","City":"Boulsa","Lat":"12.658056","Long":"-0.568332"},"XBR":{"Station":"XBR","City":"Brockville","Lat":"44.639444","Long":"-75.750277"},"XCB":{"Station":"XCB","City":"Cambrai","Lat":"50.219167","Long":"3.152222"},"XCH":{"Station":"XCH","City":"Christmas Island","Lat":"-10.450555","Long":"105.690278"},"XCM":{"Station":"XCM","City":"Chatham-Kent","Lat":"42.306389","Long":"-82.081943"},"XCO":{"Station":"XCO","City":"Colac","Lat":"-38.286388","Long":"143.679722"},"XCP":{"Station":"XCP","City":"Compi\u00e8gne","Lat":"49.434444","Long":"2.806111"},"XCR":{"Station":"XCR","City":"Chalons-sur-Marne","Lat":"48.773333","Long":"4.206111"},"XCX":{"Station":"XCX","City":"Ch\u00e2tellerault","Lat":"46.781389","Long":"0.551944"},"XCZ":{"Station":"XCZ","City":"Charleville Mezieres","Lat":"49.785053","Long":"4.642808"},"XDE":{"Station":"XDE","City":"Diebougou","Lat":"10.95","Long":"-3.25"},"XDJ":{"Station":"XDJ","City":"Djibo","Lat":"14.1","Long":"-1.633"},"XDK":{"Station":"XDK","City":"Dunkerque-l\u00e8s-Moeres","Lat":"51.040556","Long":"2.550278"},"XEN":{"Station":"XEN","City":"Xingcheng","Lat":"40.579167","Long":"120.698333"},"XES":{"Station":"XES","City":"Lake Geneva","Lat":"42.614917","Long":"-88.389582"},"XFN":{"Station":"XFN","City":"Xiangyang","Lat":"32.150556","Long":"112.290833"},"XFW":{"Station":"XFW","City":"Hamburg","Lat":"53.535886","Long":"9.837025"},"XGG":{"Station":"XGG","City":"Gorom-Gorom","Lat":"14.45","Long":"-0.233"},"XGN":{"Station":"XGN","City":"Xangongo","Lat":"-16.755416","Long":"14.965344"},"XGR":{"Station":"XGR","City":"Kangiqsualujjuaq","Lat":"58.711389","Long":"-65.99361"},"XGT":{"Station":"XGT","City":"Gu\u00e9ret","Lat":"46.179167","Long":"1.958333"},"XIC":{"Station":"XIC","City":"Xichang","Lat":"27.989083","Long":"102.184361"},"XIL":{"Station":"XIL","City":"Xilinhot","Lat":"43.915556","Long":"115.963889"},"XIN":{"Station":"XIN","City":"Xingning","Lat":"24.149167","Long":"115.757778"},"XIY":{"Station":"XIY","City":"Xi'an","Lat":"34.447119","Long":"108.751592"},"XKA":{"Station":"XKA","City":"Kantchari","Lat":"12.467","Long":"1.5"},"XKH":{"Station":"XKH","City":"Xieng Khouang","Lat":"19.449997","Long":"103.158333"},"XKS":{"Station":"XKS","City":"Kasabonika","Lat":"53.525","Long":"-88.643"},"XLB":{"Station":"XLB","City":"Lac Brochet","Lat":"58.617496","Long":"-101.468886"},"XLN":{"Station":"XLN","City":"Laon","Lat":"49.595833","Long":"3.631667"},"XLR":{"Station":"XLR","City":"Libourne","Lat":"44.985","Long":"-0.13611"},"XLS":{"Station":"XLS","City":"St. Louis","Lat":"16.050761","Long":"-16.463171"},"XLW":{"Station":"XLW","City":"Lemwerder","Lat":"53.143222","Long":"8.623439"},"XMC":{"Station":"XMC","City":"Mallacoota","Lat":"-37.599443","Long":"149.72"},"XMD":{"Station":"XMD","City":"Madison","Lat":"44.016417","Long":"-97.08561"},"XMG":{"Station":"XMG","City":"Mahendranagar","Lat":"28.963196","Long":"80.147942"},"XMH":{"Station":"XMH","City":"Manihi","Lat":"-14.437499","Long":"-146.070832"},"XMI":{"Station":"XMI","City":"Masasi","Lat":"-10.733","Long":"38.767"},"XMJ":{"Station":"XMJ","City":"Mont de Marsan","Lat":"43.911389","Long":"-0.509999"},"XMK":{"Station":"XMK","City":"Montelimar","Lat":"44.583611","Long":"4.740556"},"XML":{"Station":"XML","City":"Minlaton","Lat":"-34.74361","Long":"137.528611"},"XMN":{"Station":"XMN","City":"Xiamen","Lat":"24.544036","Long":"118.127739"},"XMS":{"Station":"XMS","City":"Macas","Lat":"-2.299166","Long":"-78.120749"},"XMW":{"Station":"XMW","City":"Montauban","Lat":"44.0275","Long":"1.378333"},"XMY":{"Station":"XMY","City":"Yam Island","Lat":"-9.90111","Long":"142.775556"},"XNA":{"Station":"XNA","City":"Fayetteville","Lat":"36.281579","Long":"-94.307765"},"XNN":{"Station":"XNN","City":"Xining","Lat":"36.5275","Long":"102.042778"},"XNT":{"Station":"XNT","City":"Xingtai","Lat":"36.882778","Long":"114.429167"},"XNU":{"Station":"XNU","City":"Nouna","Lat":"12.75","Long":"-3.867"},"XPA":{"Station":"XPA","City":"Pama","Lat":"11.25","Long":"0.7"},"XPK":{"Station":"XPK","City":"Pukatawagan","Lat":"55.749167","Long":"-101.255277"},"XPL":{"Station":"XPL","City":"Comayagua","Lat":"14.382369","Long":"-87.62116"},"XPP":{"Station":"XPP","City":"Poplar River","Lat":"53","Long":"-97.267"},"XPR":{"Station":"XPR","City":"Pine Ridge","Lat":"43.022512","Long":"-102.511012"},"XQC":{"Station":"XQC","City":"Al Bakr","Lat":"33.940194","Long":"44.361583"},"XQP":{"Station":"XQP","City":"Quepos","Lat":"9.443164","Long":"-84.129771"},"XQU":{"Station":"XQU","City":"Qualicum Beach","Lat":"49.337222","Long":"-124.393888"},"XRH":{"Station":"XRH","City":"Richmond","Lat":"-33.600555","Long":"150.780833"},"XRR":{"Station":"XRR","City":"Ross River","Lat":"61.971","Long":"-132.426"},"XRY":{"Station":"XRY","City":"Jerez de la Frontera","Lat":"36.744622","Long":"-6.06011"},"XSC":{"Station":"XSC","City":"South Caicos Island","Lat":"21.515778","Long":"-71.528616"},"XSD":{"Station":"XSD","City":"Tonopah","Lat":"37.798869","Long":"-116.780732"},"XSE":{"Station":"XSE","City":"Sebba","Lat":"13.45","Long":"0.517"},"XSI":{"Station":"XSI","City":"South Indian Lake","Lat":"56.792778","Long":"-98.907221"},"XSJ":{"Station":"XSJ","City":"Peronne \/ St-Quentin","Lat":"49.868861","Long":"3.0296"},"XSL":{"Station":"XSL","City":"Sarlat-la-Can\u00e9da","Lat":"44.793333","Long":"1.244722"},"XSP":{"Station":"XSP","City":"Singapore","Lat":"1.41695","Long":"103.867653"},"XSU":{"Station":"XSU","City":"Saumur \/ St-Florent \/ St-Hilaire","Lat":"47.256731","Long":"-0.113552"},"XTB":{"Station":"XTB","City":"Tarbes","Lat":"43.216111","Long":"0.078611"},"XTG":{"Station":"XTG","City":"Thargomindah","Lat":"-27.986388","Long":"143.810833"},"XTL":{"Station":"XTL","City":"Tadoule Lake","Lat":"58.708607","Long":"-98.512778"},"XTO":{"Station":"XTO","City":"Taroom","Lat":"-25.80194","Long":"149.899445"},"XTR":{"Station":"XTR","City":"Tara","Lat":"-27.16361","Long":"150.476111"},"XUZ":{"Station":"XUZ","City":"Xuzhou","Lat":"34.288056","Long":"117.171389"},"XVS":{"Station":"XVS","City":"Valenciennes","Lat":"50.324792","Long":"3.465444"},"XWP":{"Station":"XWP","City":"H\u00e4ssleholm","Lat":"56.133611","Long":"13.878889"},"XXB":{"Station":"XXB","City":"Manchester","Lat":"53.338056","Long":"-2.148888"},"XYA":{"Station":"XYA","City":"Yandina","Lat":"-9.092777","Long":"159.218333"},"XYE":{"Station":"XYE","City":"Ye","Lat":"15.3","Long":"97.867"},"YAA":{"Station":"YAA","City":"Anahim Lake","Lat":"52.4525","Long":"-125.303332"},"YAB":{"Station":"YAB","City":"Arctic Bay","Lat":"73.005278","Long":"-85.033055"},"YAC":{"Station":"YAC","City":"Cat Lake","Lat":"51.727222","Long":"-91.824443"},"YAG":{"Station":"YAG","City":"Fort Frances","Lat":"48.654167","Long":"-93.439721"},"YAH":{"Station":"YAH","City":"La Grande IV","Lat":"53.754722","Long":"-73.675277"},"YAI":{"Station":"YAI","City":"Chill\u00e1n","Lat":"-36.582496","Long":"-72.031366"},"YAK":{"Station":"YAK","City":"Yakutat","Lat":"59.503306","Long":"-139.660249"},"YAL":{"Station":"YAL","City":"Alert Bay","Lat":"50.582222","Long":"-126.915555"},"YAM":{"Station":"YAM","City":"Sault Ste. Marie","Lat":"46.485001","Long":"-84.509444"},"YAO":{"Station":"YAO","City":"Yaound\u00e9","Lat":"3.836039","Long":"11.523461"},"YAP":{"Station":"YAP","City":"Yap Island","Lat":"9.498912","Long":"138.082496"},"YAS":{"Station":"YAS","City":"Yasawa Island","Lat":"-16.758888","Long":"177.545278"},"YAT":{"Station":"YAT","City":"Attawapiskat","Lat":"52.9275","Long":"-82.431943"},"YAU":{"Station":"YAU","City":"Kattiniq","Lat":"61.662222","Long":"-73.321388"},"YAW":{"Station":"YAW","City":"Halifax","Lat":"44.639721","Long":"-63.499443"},"YAY":{"Station":"YAY","City":"St. Anthony","Lat":"51.391944","Long":"-56.083055"},"YAZ":{"Station":"YAZ","City":"Tofino","Lat":"49.082222","Long":"-125.772499"},"YBA":{"Station":"YBA","City":"Banff","Lat":"51.208333","Long":"-115.540277"},"YBB":{"Station":"YBB","City":"Kugaaruk","Lat":"68.534444","Long":"-89.808055"},"YBC":{"Station":"YBC","City":"Baie-Comeau","Lat":"49.1325","Long":"-68.204443"},"YBE":{"Station":"YBE","City":"Uranium City","Lat":"59.561389","Long":"-108.481388"},"YBG":{"Station":"YBG","City":"Bagotville","Lat":"48.330555","Long":"-70.99639"},"YBI":{"Station":"YBI","City":"Black Tickle","Lat":"53.47","Long":"-55.787499"},"YBK":{"Station":"YBK","City":"Baker Lake","Lat":"64.298889","Long":"-96.077777"},"YBL":{"Station":"YBL","City":"Campbell River","Lat":"49.950832","Long":"-125.270832"},"YBN":{"Station":"YBN","City":"Borden","Lat":"44.266111","Long":"-79.918332"},"YBO":{"Station":"YBO","City":"Bob Quinn Lake","Lat":"56.967","Long":"-130.25"},"YBP":{"Station":"YBP","City":"Yibin","Lat":"28.800278","Long":"104.544444"},"YBR":{"Station":"YBR","City":"Brandon","Lat":"49.91","Long":"-99.951943"},"YBT":{"Station":"YBT","City":"Brochet","Lat":"57.889444","Long":"-101.678888"},"YBV":{"Station":"YBV","City":"Berens River","Lat":"52.358889","Long":"-97.016666"},"YBX":{"Station":"YBX","City":"Lourdes de Blanc Sablon","Lat":"51.443611","Long":"-57.185277"},"YBY":{"Station":"YBY","City":"Bonnyville","Lat":"54.304167","Long":"-110.743609"},"YCA":{"Station":"YCA","City":"Courtenay","Lat":"49.679444","Long":"-124.981666"},"YCB":{"Station":"YCB","City":"Cambridge Bay","Lat":"69.108055","Long":"-105.138332"},"YCC":{"Station":"YCC","City":"Cornwall","Lat":"45.092777","Long":"-74.563331"},"YCD":{"Station":"YCD","City":"Nanaimo","Lat":"49.05455","Long":"-123.870666"},"YCE":{"Station":"YCE","City":"Centralia","Lat":"43.285556","Long":"-81.508332"},"YCG":{"Station":"YCG","City":"Castlegar","Lat":"49.296389","Long":"-117.632499"},"YCH":{"Station":"YCH","City":"Miramichi","Lat":"47.007778","Long":"-65.449166"},"YCL":{"Station":"YCL","City":"Charlo","Lat":"47.990833","Long":"-66.330277"},"YCM":{"Station":"YCM","City":"St. Catharines","Lat":"43.191666","Long":"-79.171666"},"YCN":{"Station":"YCN","City":"Cochrane","Lat":"49.105556","Long":"-81.01361"},"YCO":{"Station":"YCO","City":"Kugluktuk","Lat":"67.816667","Long":"-115.143888"},"YCP":{"Station":"YCP","City":"Co-op Point","Lat":"52.116667","Long":"-119.283332"},"YCQ":{"Station":"YCQ","City":"Chetwynd","Lat":"55.687222","Long":"-121.626666"},"YCR":{"Station":"YCR","City":"Cross Lake","Lat":"54.609993","Long":"-97.760558"},"YCS":{"Station":"YCS","City":"Chesterfield Inlet","Lat":"63.345833","Long":"-90.727499"},"YCT":{"Station":"YCT","City":"Coronation","Lat":"52.075001","Long":"-111.445277"},"YCU":{"Station":"YCU","City":"Yuncheng","Lat":"35.018","Long":"110.993"},"YCW":{"Station":"YCW","City":"Chilliwack","Lat":"49.152779","Long":"-121.938889"},"YCX":{"Station":"YCX","City":"Gagetown","Lat":"45.833","Long":"-66.433"},"YCY":{"Station":"YCY","City":"Clyde River","Lat":"70.486111","Long":"-68.516666"},"YCZ":{"Station":"YCZ","City":"Fairmont Hot Springs","Lat":"50.330278","Long":"-115.873332"},"YDA":{"Station":"YDA","City":"Dawson City","Lat":"64.043056","Long":"-139.127777"},"YDB":{"Station":"YDB","City":"Burwash Landings","Lat":"61.371111","Long":"-139.040555"},"YDC":{"Station":"YDC","City":"Drayton Valley","Lat":"53.265833","Long":"-114.960277"},"YDF":{"Station":"YDF","City":"Deer Lake","Lat":"49.210833","Long":"-57.391387"},"YDG":{"Station":"YDG","City":"Digby","Lat":"44.545555","Long":"-65.788888"},"YDL":{"Station":"YDL","City":"Dease Lake","Lat":"58.422222","Long":"-130.032221"},"YDN":{"Station":"YDN","City":"Dauphin","Lat":"51.100834","Long":"-100.052499"},"YDO":{"Station":"YDO","City":"Dolbeau \/ St-F\u00e9licien","Lat":"48.7785","Long":"-72.374999"},"YDP":{"Station":"YDP","City":"Nain","Lat":"56.55","Long":"-61.683"},"YDQ":{"Station":"YDQ","City":"Dawson Creek","Lat":"55.742333","Long":"-120.182999"},"YDT":{"Station":"YDT","City":"Delta","Lat":"49.074167","Long":"-123.012221"},"YDV":{"Station":"YDV","City":"Bloodvein","Lat":"51.783","Long":"-96.7"},"YEC":{"Station":"YEC","City":"Yechon","Lat":"36.631933","Long":"128.35485"},"YED":{"Station":"YED","City":"Edmonton","Lat":"53.667","Long":"-113.467"},"YEG":{"Station":"YEG","City":"Edmonton","Lat":"53.309723","Long":"-113.579721"},"YEH":{"Station":"YEH","City":"Asaloyeh","Lat":"27.481425","Long":"52.615483"},"YEI":{"Station":"YEI","City":"Bursa","Lat":"40.255208","Long":"29.562569"},"YEK":{"Station":"YEK","City":"Arviat","Lat":"61.093889","Long":"-94.071666"},"YEL":{"Station":"YEL","City":"Elliot Lake","Lat":"46.351389","Long":"-82.561388"},"YEM":{"Station":"YEM","City":"Manitowaning","Lat":"45.842777","Long":"-81.858054"},"YEN":{"Station":"YEN","City":"Estevan","Lat":"49.210278","Long":"-102.965832"},"YEO":{"Station":"YEO","City":"Yeovilton","Lat":"51.009358","Long":"-2.638818"},"YER":{"Station":"YER","City":"Fort Severn","Lat":"56.018889","Long":"-87.676388"},"YES":{"Station":"YES","City":"Yasuj","Lat":"30.700478","Long":"51.545094"},"YET":{"Station":"YET","City":"Edson","Lat":"53.578888","Long":"-116.464999"},"YEU":{"Station":"YEU","City":"Eureka","Lat":"79.994722","Long":"-85.814166"},"YEV":{"Station":"YEV","City":"Inuvik","Lat":"68.304167","Long":"-133.482777"},"YEY":{"Station":"YEY","City":"Amos","Lat":"48.563889","Long":"-78.249721"},"YFA":{"Station":"YFA","City":"Fort Albany","Lat":"52.203333","Long":"-81.695832"},"YFB":{"Station":"YFB","City":"Iqaluit","Lat":"63.75639","Long":"-68.555831"},"YFC":{"Station":"YFC","City":"Fredericton","Lat":"45.868889","Long":"-66.537221"},"YFD":{"Station":"YFD","City":"Brantford","Lat":"43.13139","Long":"-80.342498"},"YFE":{"Station":"YFE","City":"Forestville","Lat":"48.746111","Long":"-69.097221"},"YFG":{"Station":"YFG","City":"Fontanges","Lat":"54.553611","Long":"-71.173332"},"YFH":{"Station":"YFH","City":"Fort Hope","Lat":"51.561382","Long":"-87.906943"},"YFO":{"Station":"YFO","City":"Flin Flon","Lat":"54.678055","Long":"-101.681666"},"YFR":{"Station":"YFR","City":"Fort Resolution","Lat":"61.180832","Long":"-113.689721"},"YFS":{"Station":"YFS","City":"Fort Simpson","Lat":"61.760153","Long":"-121.236524"},"YFX":{"Station":"YFX","City":"St. Lewis","Lat":"52.372778","Long":"-55.673888"},"YGA":{"Station":"YGA","City":"Gagnon","Lat":"51.955556","Long":"-68.139166"},"YGB":{"Station":"YGB","City":"Gillies Bay","Lat":"49.694167","Long":"-124.517777"},"YGC":{"Station":"YGC","City":"Grande Cache","Lat":"53.916944","Long":"-118.874443"},"YGH":{"Station":"YGH","City":"Fort Good Hope","Lat":"66.240833","Long":"-128.650832"},"YGJ":{"Station":"YGJ","City":"Yonago","Lat":"35.492222","Long":"133.236389"},"YGK":{"Station":"YGK","City":"Kingston","Lat":"44.225277","Long":"-76.596943"},"YGL":{"Station":"YGL","City":"La Grande","Lat":"53.625278","Long":"-77.704166"},"YGM":{"Station":"YGM","City":"Gimli","Lat":"50.628056","Long":"-97.043332"},"YGO":{"Station":"YGO","City":"God's Narrows","Lat":"54.560268","Long":"-94.493613"},"YGP":{"Station":"YGP","City":"Gasp\u00e9","Lat":"48.775278","Long":"-64.47861"},"YGQ":{"Station":"YGQ","City":"Geraldton","Lat":"49.778332","Long":"-86.939444"},"YGR":{"Station":"YGR","City":"\u00celes de la Madeleine","Lat":"47.424721","Long":"-61.778055"},"YGS":{"Station":"YGS","City":"Germansen Landing","Lat":"55.767","Long":"-124.7"},"YGT":{"Station":"YGT","City":"Igloolik","Lat":"69.364722","Long":"-81.816388"},"YGV":{"Station":"YGV","City":"Havre St-Pierre","Lat":"50.281944","Long":"-63.611388"},"YGW":{"Station":"YGW","City":"Kuujjuarapik","Lat":"55.281389","Long":"-77.758055"},"YGX":{"Station":"YGX","City":"Gillam","Lat":"56.358056","Long":"-94.708055"},"YGZ":{"Station":"YGZ","City":"Grise Fiord","Lat":"76.426111","Long":"-82.909166"},"YHB":{"Station":"YHB","City":"Hudson Bay","Lat":"52.816666","Long":"-102.311389"},"YHD":{"Station":"YHD","City":"Dryden","Lat":"49.831667","Long":"-92.744166"},"YHE":{"Station":"YHE","City":"Hope","Lat":"49.367","Long":"-121.483"},"YHF":{"Station":"YHF","City":"Hearst","Lat":"49.714167","Long":"-83.68611"},"YHG":{"Station":"YHG","City":"Charlottetown","Lat":"52.764722","Long":"-56.109443"},"YHI":{"Station":"YHI","City":"Ulukhaktok","Lat":"70.762778","Long":"-117.80611"},"YHK":{"Station":"YHK","City":"Gjoa Haven","Lat":"68.635556","Long":"-95.849721"},"YHM":{"Station":"YHM","City":"Hamilton","Lat":"43.173611","Long":"-79.934999"},"YHN":{"Station":"YHN","City":"Hornepayne","Lat":"49.193056","Long":"-84.758887"},"YHO":{"Station":"YHO","City":"Hopedale","Lat":"55.45","Long":"-60.233"},"YHP":{"Station":"YHP","City":"Poplar Hill","Lat":"52.113","Long":"-94.255"},"YHR":{"Station":"YHR","City":"Harrington Harbour","Lat":"50.468889","Long":"-59.636666"},"YHT":{"Station":"YHT","City":"Haines Junction","Lat":"60.789167","Long":"-137.545555"},"YHU":{"Station":"YHU","City":"Montr\u00e9al","Lat":"45.5175","Long":"-73.416943"},"YHY":{"Station":"YHY","City":"Hay River","Lat":"60.839722","Long":"-115.782777"},"YHZ":{"Station":"YHZ","City":"Halifax","Lat":"44.880833","Long":"-63.508609"},"YIB":{"Station":"YIB","City":"Atikokan","Lat":"48.773888","Long":"-91.63861"},"YIF":{"Station":"YIF","City":"Pakuashipi","Lat":"51.211666","Long":"-58.658332"},"YIH":{"Station":"YIH","City":"Yichang","Lat":"30.671","Long":"111.441"},"YIK":{"Station":"YIK","City":"Ivujivik","Lat":"62.417333","Long":"-77.925277"},"YIN":{"Station":"YIN","City":"Yining","Lat":"43.955833","Long":"81.330278"},"YIO":{"Station":"YIO","City":"Pond Inlet","Lat":"72.683334","Long":"-77.966666"},"YIP":{"Station":"YIP","City":"Detroit","Lat":"42.239304","Long":"-83.530964"},"YIV":{"Station":"YIV","City":"Island Lake","Lat":"53.857","Long":"-94.654"},"YIW":{"Station":"YIW","City":"Yiwu","Lat":"29.344722","Long":"120.032222"},"YJA":{"Station":"YJA","City":"Jasper","Lat":"52.996667","Long":"-118.059443"},"YJF":{"Station":"YJF","City":"Fort Liard","Lat":"60.235556","Long":"-123.469721"},"YJM":{"Station":"YJM","City":"Fort St. James","Lat":"54.397221","Long":"-124.262777"},"YJN":{"Station":"YJN","City":"St. Jean","Lat":"45.294445","Long":"-73.28111"},"YJS":{"Station":"YJS","City":"Samjiyon","Lat":"41.907222","Long":"128.409722"},"YJT":{"Station":"YJT","City":"Stephenville","Lat":"48.544167","Long":"-58.549998"},"YKA":{"Station":"YKA","City":"Kamloops","Lat":"50.702222","Long":"-120.444443"},"YKC":{"Station":"YKC","City":"Collins Bay","Lat":"58.235833","Long":"-103.677221"},"YKD":{"Station":"YKD","City":"Kincardine","Lat":"44.201389","Long":"-81.606666"},"YKE":{"Station":"YKE","City":"Knee Lake","Lat":"54.915","Long":"-94.798332"},"YKF":{"Station":"YKF","City":"Kitchener","Lat":"43.460833","Long":"-80.37861"},"YKG":{"Station":"YKG","City":"Kangirsuk","Lat":"60.027222","Long":"-69.999166"},"YKJ":{"Station":"YKJ","City":"Key Lake","Lat":"57.25","Long":"-105.617"},"YKL":{"Station":"YKL","City":"Schefferville","Lat":"54.805278","Long":"-66.805277"},"YKM":{"Station":"YKM","City":"Yakima","Lat":"46.568167","Long":"-120.544055"},"YKN":{"Station":"YKN","City":"Yankton","Lat":"42.916694","Long":"-97.385943"},"YKQ":{"Station":"YKQ","City":"Waskaganish","Lat":"51.473611","Long":"-78.758055"},"YKS":{"Station":"YKS","City":"Yakutsk","Lat":"62.09325","Long":"129.770672"},"YKU":{"Station":"YKU","City":"Chisasibi","Lat":"53.805556","Long":"-78.916943"},"YKX":{"Station":"YKX","City":"Kirkland Lake","Lat":"48.210278","Long":"-79.981388"},"YKY":{"Station":"YKY","City":"Kindersley","Lat":"51.5175","Long":"-109.180832"},"YKZ":{"Station":"YKZ","City":"Toronto","Lat":"43.862221","Long":"-79.369999"},"YLB":{"Station":"YLB","City":"Lac La Biche","Lat":"54.770279","Long":"-112.031666"},"YLC":{"Station":"YLC","City":"Kimmirut","Lat":"62.847778","Long":"-69.877499"},"YLD":{"Station":"YLD","City":"Chapleau","Lat":"47.82","Long":"-83.346666"},"YLG":{"Station":"YLG","City":"Yalgoo","Lat":"-28.354721","Long":"116.678889"},"YLH":{"Station":"YLH","City":"Lansdowne House","Lat":"52.195","Long":"-87.933332"},"YLI":{"Station":"YLI","City":"Ylivieska","Lat":"64.054722","Long":"24.725278"},"YLJ":{"Station":"YLJ","City":"Meadow Lake","Lat":"54.125278","Long":"-108.522777"},"YLL":{"Station":"YLL","City":"Lloydminster","Lat":"53.309166","Long":"-110.072499"},"YLP":{"Station":"YLP","City":"Mingan","Lat":"50.281389","Long":"-64.099443"},"YLQ":{"Station":"YLQ","City":"La Tuque","Lat":"47.409721","Long":"-72.788888"},"YLR":{"Station":"YLR","City":"Leaf Rapids","Lat":"56.513333","Long":"-99.985277"},"YLS":{"Station":"YLS","City":"Lebel-sur-Qu\u00e9villon","Lat":"49.030278","Long":"-77.017221"},"YLT":{"Station":"YLT","City":"Alert","Lat":"82.517778","Long":"-62.280555"},"YLW":{"Station":"YLW","City":"Kelowna","Lat":"49.956112","Long":"-119.377777"},"YLY":{"Station":"YLY","City":"Langley","Lat":"49.101","Long":"-122.631"},"YMA":{"Station":"YMA","City":"Mayo","Lat":"63.616389","Long":"-135.868332"},"YMB":{"Station":"YMB","City":"Merritt","Lat":"50.122778","Long":"-120.747221"},"YMC":{"Station":"YMC","City":"Maricourt","Lat":"61.6","Long":"-71.967"},"YME":{"Station":"YME","City":"Matane","Lat":"48.856945","Long":"-67.453332"},"YMG":{"Station":"YMG","City":"Manitouwadge","Lat":"49.083889","Long":"-85.860555"},"YMJ":{"Station":"YMJ","City":"Moose Jaw","Lat":"50.330278","Long":"-105.559166"},"YML":{"Station":"YML","City":"La Malbaie","Lat":"47.5975","Long":"-70.223891"},"YMM":{"Station":"YMM","City":"Fort McMurray","Lat":"56.653333","Long":"-111.221943"},"YMO":{"Station":"YMO","City":"Moosonee","Lat":"51.291111","Long":"-80.607777"},"YMP":{"Station":"YMP","City":"Port McNeill","Lat":"50.575556","Long":"-127.02861"},"YMS":{"Station":"YMS","City":"Yurimaguas","Lat":"-5.893771","Long":"-76.11821"},"YMT":{"Station":"YMT","City":"Chibougamau","Lat":"49.771944","Long":"-74.528055"},"YMW":{"Station":"YMW","City":"Maniwaki","Lat":"46.272778","Long":"-75.990555"},"YMX":{"Station":"YMX","City":"Montr\u00e9al","Lat":"45.681944","Long":"-74.005277"},"YNA":{"Station":"YNA","City":"Natashquan","Lat":"50.19","Long":"-61.789166"},"YNB":{"Station":"YNB","City":"Yanbu","Lat":"24.144244","Long":"38.06335"},"YNC":{"Station":"YNC","City":"Wemindji","Lat":"53.010833","Long":"-78.830277"},"YND":{"Station":"YND","City":"Ottawa","Lat":"45.521694","Long":"-75.563588"},"YNE":{"Station":"YNE","City":"Norway House","Lat":"53.957778","Long":"-97.844166"},"YNG":{"Station":"YNG","City":"Youngstown\/Warren","Lat":"41.261583","Long":"-80.68036"},"YNH":{"Station":"YNH","City":"Hudson's Hope","Lat":"56.035556","Long":"-121.975832"},"YNJ":{"Station":"YNJ","City":"Yanji","Lat":"42.8828","Long":"129.451258"},"YNL":{"Station":"YNL","City":"Points North Landing","Lat":"58.276667","Long":"-104.082499"},"YNM":{"Station":"YNM","City":"Matagami","Lat":"49.761667","Long":"-77.802777"},"YNO":{"Station":"YNO","City":"North Spirit Lake","Lat":"52.490556","Long":"-92.973055"},"YNP":{"Station":"YNP","City":"Natuashish","Lat":"55.913889","Long":"-61.184443"},"YNR":{"Station":"YNR","City":"Arnes","Lat":"50.836111","Long":"-96.957221"},"YNS":{"Station":"YNS","City":"N\u00e9miscau","Lat":"51.690833","Long":"-76.134999"},"YNT":{"Station":"YNT","City":"Yantai","Lat":"37.401667","Long":"121.371667"},"YNY":{"Station":"YNY","City":"Yangyang","Lat":"38.061311","Long":"128.669164"},"YNZ":{"Station":"YNZ","City":"Yancheng","Lat":"33.425833","Long":"120.203056"},"YOA":{"Station":"YOA","City":"Ekati","Lat":"64.698889","Long":"-110.614721"},"YOC":{"Station":"YOC","City":"Old Crow","Lat":"67.570556","Long":"-139.839166"},"YOD":{"Station":"YOD","City":"Cold Lake","Lat":"54.404999","Long":"-110.279443"},"YOH":{"Station":"YOH","City":"Oxford House","Lat":"54.933048","Long":"-95.278609"},"YOJ":{"Station":"YOJ","City":"High Level","Lat":"58.621389","Long":"-117.164721"},"YOL":{"Station":"YOL","City":"Yola","Lat":"9.257553","Long":"12.430422"},"YOO":{"Station":"YOO","City":"Oshawa","Lat":"43.922779","Long":"-78.894999"},"YOP":{"Station":"YOP","City":"Rainbow Lake","Lat":"58.491389","Long":"-119.408332"},"YOS":{"Station":"YOS","City":"Owen Sound","Lat":"44.590279","Long":"-80.837499"},"YOT":{"Station":"YOT","City":"Yotvata","Lat":"29.906172","Long":"35.06665"},"YOW":{"Station":"YOW","City":"Ottawa","Lat":"45.3225","Long":"-75.669166"},"YPA":{"Station":"YPA","City":"Prince Albert","Lat":"53.214167","Long":"-105.672777"},"YPB":{"Station":"YPB","City":"Port Alberni","Lat":"49.321944","Long":"-124.93111"},"YPC":{"Station":"YPC","City":"Paulatuk","Lat":"69.361111","Long":"-124.058609"},"YPD":{"Station":"YPD","City":"Parry Sound","Lat":"45.2575","Long":"-79.829721"},"YPE":{"Station":"YPE","City":"Peace River","Lat":"56.226944","Long":"-117.447221"},"YPG":{"Station":"YPG","City":"Portage","Lat":"49.903056","Long":"-98.273888"},"YPH":{"Station":"YPH","City":"Inukjuak","Lat":"58.471667","Long":"-78.077221"},"YPJ":{"Station":"YPJ","City":"Aupaluk","Lat":"59.296944","Long":"-69.599721"},"YPK":{"Station":"YPK","City":"Pitt Meadows","Lat":"49.21611","Long":"-122.709999"},"YPL":{"Station":"YPL","City":"Pickle Lake","Lat":"51.446388","Long":"-90.214166"},"YPM":{"Station":"YPM","City":"Pikangikum","Lat":"51.82","Long":"-93.973"},"YPN":{"Station":"YPN","City":"Port-Menier","Lat":"49.836389","Long":"-64.28861"},"YPO":{"Station":"YPO","City":"Peawanuck","Lat":"54.983","Long":"-85.433"},"YPQ":{"Station":"YPQ","City":"Peterborough","Lat":"44.23","Long":"-78.363332"},"YPR":{"Station":"YPR","City":"Prince Rupert","Lat":"54.28611","Long":"-130.444721"},"YPS":{"Station":"YPS","City":"Port Hawkesbury","Lat":"45.656667","Long":"-61.368055"},"YPU":{"Station":"YPU","City":"Puntzi Mountain","Lat":"52.112778","Long":"-124.144721"},"YPW":{"Station":"YPW","City":"Powell River","Lat":"49.847778","Long":"-124.499166"},"YPX":{"Station":"YPX","City":"Povungnituk","Lat":"60.050556","Long":"-77.286943"},"YPY":{"Station":"YPY","City":"Fort Chipewyan","Lat":"58.767223","Long":"-111.117221"},"YPZ":{"Station":"YPZ","City":"Burns Lake","Lat":"54.376389","Long":"-125.951388"},"YQA":{"Station":"YQA","City":"Muskoka","Lat":"44.974722","Long":"-79.303332"},"YQB":{"Station":"YQB","City":"Qu\u00e9bec","Lat":"46.791111","Long":"-71.393332"},"YQC":{"Station":"YQC","City":"Quaqtaq","Lat":"61.046389","Long":"-69.617777"},"YQD":{"Station":"YQD","City":"The Pas","Lat":"53.971389","Long":"-101.09111"},"YQF":{"Station":"YQF","City":"Red Deer","Lat":"52.182222","Long":"-113.894443"},"YQG":{"Station":"YQG","City":"Windsor","Lat":"42.275556","Long":"-82.955555"},"YQH":{"Station":"YQH","City":"Watson Lake","Lat":"60.116389","Long":"-128.822499"},"YQI":{"Station":"YQI","City":"Yarmouth","Lat":"43.826944","Long":"-66.088055"},"YQK":{"Station":"YQK","City":"Kenora","Lat":"49.788334","Long":"-94.363055"},"YQL":{"Station":"YQL","City":"Lethbridge","Lat":"49.630278","Long":"-112.799721"},"YQM":{"Station":"YQM","City":"Moncton","Lat":"46.112221","Long":"-64.67861"},"YQN":{"Station":"YQN","City":"Nakina","Lat":"50.182777","Long":"-86.696387"},"YQQ":{"Station":"YQQ","City":"Comox","Lat":"49.710833","Long":"-124.886666"},"YQR":{"Station":"YQR","City":"Regina","Lat":"50.431944","Long":"-104.665832"},"YQS":{"Station":"YQS","City":"St. Thomas","Lat":"42.77","Long":"-81.110831"},"YQT":{"Station":"YQT","City":"Thunder Bay","Lat":"48.371944","Long":"-89.323888"},"YQU":{"Station":"YQU","City":"Grande Prairie","Lat":"55.179722","Long":"-118.884999"},"YQV":{"Station":"YQV","City":"Yorkton","Lat":"51.264721","Long":"-102.461666"},"YQW":{"Station":"YQW","City":"North Battleford","Lat":"52.769167","Long":"-108.243609"},"YQX":{"Station":"YQX","City":"Gander","Lat":"48.936944","Long":"-54.568055"},"YQY":{"Station":"YQY","City":"Sydney","Lat":"46.161388","Long":"-60.047778"},"YQZ":{"Station":"YQZ","City":"Quesnel","Lat":"53.026112","Long":"-122.510277"},"YRA":{"Station":"YRA","City":"Gam\u00e8ti","Lat":"64.115278","Long":"-117.309721"},"YRB":{"Station":"YRB","City":"Resolute Bay","Lat":"74.716944","Long":"-94.969443"},"YRC":{"Station":"YRC","City":"Chicoutimi","Lat":"48.520833","Long":"-71.050555"},"YRF":{"Station":"YRF","City":"Cartwright","Lat":"53.683","Long":"-57.033"},"YRG":{"Station":"YRG","City":"Rigolet","Lat":"54.179444","Long":"-58.456943"},"YRI":{"Station":"YRI","City":"Rivi\u00e8re-du-Loup","Lat":"47.764444","Long":"-69.584721"},"YRJ":{"Station":"YRJ","City":"Roberval","Lat":"48.52","Long":"-72.265555"},"YRL":{"Station":"YRL","City":"Red Lake","Lat":"51.066944","Long":"-93.793055"},"YRM":{"Station":"YRM","City":"Rocky Mountain House","Lat":"52.429722","Long":"-114.904166"},"YRO":{"Station":"YRO","City":"Ottawa","Lat":"45.460278","Long":"-75.64611"},"YRQ":{"Station":"YRQ","City":"Trois-Rivi\u00e8res","Lat":"46.352779","Long":"-72.679443"},"YRS":{"Station":"YRS","City":"Red Sucker Lake","Lat":"54.166939","Long":"-93.55944"},"YRT":{"Station":"YRT","City":"Rankin Inlet","Lat":"62.81139","Long":"-92.115832"},"YRV":{"Station":"YRV","City":"Revelstoke","Lat":"50.966667","Long":"-118.183332"},"YSB":{"Station":"YSB","City":"Sudbury","Lat":"46.625","Long":"-80.798888"},"YSC":{"Station":"YSC","City":"Sherbrooke","Lat":"45.438611","Long":"-71.691388"},"YSD":{"Station":"YSD","City":"Suffield","Lat":"50.271944","Long":"-111.193332"},"YSE":{"Station":"YSE","City":"Squamish","Lat":"49.783","Long":"-123.167"},"YSF":{"Station":"YSF","City":"Stony Rapids","Lat":"59.25","Long":"-105.841"},"YSH":{"Station":"YSH","City":"Smith Falls","Lat":"44.945833","Long":"-75.940555"},"YSJ":{"Station":"YSJ","City":"Saint John","Lat":"45.316111","Long":"-65.890277"},"YSK":{"Station":"YSK","City":"Sanikiluaq","Lat":"56.537778","Long":"-79.246666"},"YSL":{"Station":"YSL","City":"St. Leonard","Lat":"47.157501","Long":"-67.834721"},"YSM":{"Station":"YSM","City":"Fort Smith","Lat":"60.020278","Long":"-111.961943"},"YSN":{"Station":"YSN","City":"Salmon Arm","Lat":"50.682777","Long":"-119.22861"},"YSO":{"Station":"YSO","City":"Postville","Lat":"54.910278","Long":"-59.784999"},"YSP":{"Station":"YSP","City":"Marathon","Lat":"48.755278","Long":"-86.344443"},"YSR":{"Station":"YSR","City":"Nanisivik","Lat":"72.982222","Long":"-84.61361"},"YST":{"Station":"YST","City":"Ste. Theresa Point","Lat":"53.846","Long":"-94.852"},"YSU":{"Station":"YSU","City":"Summerside","Lat":"46.440556","Long":"-63.83361"},"YSV":{"Station":"YSV","City":"Saglek","Lat":"58.473889","Long":"-62.653888"},"YSY":{"Station":"YSY","City":"Sachs Harbour","Lat":"71.993889","Long":"-125.242499"},"YTA":{"Station":"YTA","City":"Pembroke","Lat":"45.864445","Long":"-77.251666"},"YTD":{"Station":"YTD","City":"Thicket Portage","Lat":"55.317","Long":"-97.7"},"YTE":{"Station":"YTE","City":"Cape Dorset","Lat":"64.23","Long":"-76.526666"},"YTF":{"Station":"YTF","City":"Alma","Lat":"48.508888","Long":"-71.641944"},"YTH":{"Station":"YTH","City":"Thompson","Lat":"55.801111","Long":"-97.864165"},"YTJ":{"Station":"YTJ","City":"Terrace Bay","Lat":"48.813332","Long":"-87.099443"},"YTL":{"Station":"YTL","City":"Big Trout","Lat":"53.8175","Long":"-89.896943"},"YTM":{"Station":"YTM","City":"Mont-Tremblant","Lat":"46.409444","Long":"-74.779999"},"YTQ":{"Station":"YTQ","City":"Tasiujuaq","Lat":"58.667778","Long":"-69.965832"},"YTR":{"Station":"YTR","City":"Trenton","Lat":"44.118889","Long":"-77.528055"},"YTS":{"Station":"YTS","City":"Timmins","Lat":"48.569721","Long":"-81.376666"},"YTT":{"Station":"YTT","City":"Tisdale","Lat":"52.836666","Long":"-104.066666"},"YTZ":{"Station":"YTZ","City":"Toronto","Lat":"43.627499","Long":"-79.396166"},"YUB":{"Station":"YUB","City":"Tuktoyaktuk","Lat":"69.433334","Long":"-133.026388"},"YUD":{"Station":"YUD","City":"Umiujaq","Lat":"56.536111","Long":"-76.518332"},"YUE":{"Station":"YUE","City":"Yuendumu","Lat":"-22.254166","Long":"131.782222"},"YUL":{"Station":"YUL","City":"Montr\u00e9al","Lat":"45.470556","Long":"-73.740832"},"YUM":{"Station":"YUM","City":"Yuma","Lat":"32.656583","Long":"-114.605971"},"YUT":{"Station":"YUT","City":"Repulse Bay","Lat":"66.521389","Long":"-86.224721"},"YUV":{"Station":"YUV","City":"Longstaff Bluff","Lat":"68.933","Long":"-75.283"},"YUW":{"Station":"YUW","City":"Dewar Lakes","Lat":"68.633","Long":"-71.133"},"YUX":{"Station":"YUX","City":"Hall Beach","Lat":"68.776111","Long":"-81.24361"},"YUY":{"Station":"YUY","City":"Rouyn-Noranda","Lat":"48.206111","Long":"-78.835555"},"YVA":{"Station":"YVA","City":"Moroni","Lat":"-11.71081","Long":"43.243856"},"YVB":{"Station":"YVB","City":"Bonaventure","Lat":"48.071111","Long":"-65.460277"},"YVC":{"Station":"YVC","City":"La Ronge","Lat":"55.15139","Long":"-105.261943"},"YVE":{"Station":"YVE","City":"Vernon","Lat":"50.248056","Long":"-119.330555"},"YVG":{"Station":"YVG","City":"Vermilion","Lat":"53.355833","Long":"-110.823889"},"YVM":{"Station":"YVM","City":"Qikiqtarjuaq","Lat":"67.546667","Long":"-64.031666"},"YVO":{"Station":"YVO","City":"Val d'Or","Lat":"48.053333","Long":"-77.782777"},"YVP":{"Station":"YVP","City":"Kuujjuaq","Lat":"58.096111","Long":"-68.426943"},"YVQ":{"Station":"YVQ","City":"Norman Wells","Lat":"65.281617","Long":"-126.798218"},"YVR":{"Station":"YVR","City":"Vancouver","Lat":"49.193889","Long":"-123.184443"},"YVT":{"Station":"YVT","City":"Buffalo Narrows","Lat":"55.841944","Long":"-108.417499"},"YVV":{"Station":"YVV","City":"Wiarton","Lat":"44.745834","Long":"-81.107221"},"YVZ":{"Station":"YVZ","City":"Deer Lake","Lat":"52.656","Long":"-94.062"},"YWA":{"Station":"YWA","City":"Petawawa","Lat":"45.952221","Long":"-77.319167"},"YWB":{"Station":"YWB","City":"Kangiqsujuaq","Lat":"61.588611","Long":"-71.929443"},"YWG":{"Station":"YWG","City":"Winnipeg","Lat":"49.910036","Long":"-97.239885"},"YWH":{"Station":"YWH","City":"Victoria","Lat":"48.422778","Long":"-123.387499"},"YWJ":{"Station":"YWJ","City":"Deline","Lat":"65.210556","Long":"-123.435832"},"YWK":{"Station":"YWK","City":"Wabush","Lat":"52.921944","Long":"-66.864443"},"YWL":{"Station":"YWL","City":"Williams Lake","Lat":"52.183056","Long":"-122.054166"},"YWO":{"Station":"YWO","City":"Lupin","Lat":"65.759167","Long":"-111.249999"},"YWP":{"Station":"YWP","City":"Webequie","Lat":"52.959721","Long":"-87.368888"},"YWY":{"Station":"YWY","City":"Wrigley","Lat":"63.209444","Long":"-123.436666"},"YXC":{"Station":"YXC","City":"Cranbrook","Lat":"49.612222","Long":"-115.781943"},"YXD":{"Station":"YXD","City":"Edmonton","Lat":"53.5725","Long":"-113.520555"},"YXE":{"Station":"YXE","City":"Saskatoon","Lat":"52.170834","Long":"-106.699721"},"YXH":{"Station":"YXH","City":"Medicine Hat","Lat":"50.01889","Long":"-110.720832"},"YXJ":{"Station":"YXJ","City":"Fort St. John","Lat":"56.238056","Long":"-120.740277"},"YXK":{"Station":"YXK","City":"Rimouski","Lat":"48.478056","Long":"-68.496943"},"YXL":{"Station":"YXL","City":"Sioux Lookout","Lat":"50.113889","Long":"-91.905277"},"YXN":{"Station":"YXN","City":"Whale Cove","Lat":"62.233","Long":"-92.6"},"YXP":{"Station":"YXP","City":"Pangnirtung","Lat":"66.145","Long":"-65.71361"},"YXQ":{"Station":"YXQ","City":"Beaver Creek","Lat":"62.41","Long":"-140.867"},"YXR":{"Station":"YXR","City":"Earlton","Lat":"47.695","Long":"-79.848888"},"YXS":{"Station":"YXS","City":"Prince George","Lat":"53.889444","Long":"-122.678888"},"YXT":{"Station":"YXT","City":"Terrace","Lat":"54.468508","Long":"-128.576218"},"YXU":{"Station":"YXU","City":"London","Lat":"43.033056","Long":"-81.15111"},"YXX":{"Station":"YXX","City":"Abbotsford","Lat":"49.025278","Long":"-122.360555"},"YXY":{"Station":"YXY","City":"Whitehorse","Lat":"60.709553","Long":"-135.067268"},"YXZ":{"Station":"YXZ","City":"Wawa","Lat":"47.966667","Long":"-84.786666"},"YYB":{"Station":"YYB","City":"North Bay","Lat":"46.363611","Long":"-79.422777"},"YYC":{"Station":"YYC","City":"Calgary","Lat":"51.113888","Long":"-114.020277"},"YYD":{"Station":"YYD","City":"Smithers","Lat":"54.824722","Long":"-127.182777"},"YYE":{"Station":"YYE","City":"Fort Nelson","Lat":"58.836389","Long":"-122.596943"},"YYF":{"Station":"YYF","City":"Penticton","Lat":"49.463056","Long":"-119.602221"},"YYG":{"Station":"YYG","City":"Charlottetown","Lat":"46.290001","Long":"-63.12111"},"YYH":{"Station":"YYH","City":"Taloyoak","Lat":"69.546667","Long":"-93.576666"},"YYI":{"Station":"YYI","City":"Rivers","Lat":"50.007222","Long":"-100.31361"},"YYJ":{"Station":"YYJ","City":"Victoria","Lat":"48.646944","Long":"-123.425832"},"YYL":{"Station":"YYL","City":"Lynn Lake","Lat":"56.863888","Long":"-101.076109"},"YYM":{"Station":"YYM","City":"Cowley","Lat":"49.636383","Long":"-114.094443"},"YYN":{"Station":"YYN","City":"Swift Current","Lat":"50.291944","Long":"-107.690555"},"YYO":{"Station":"YYO","City":"Wynyard","Lat":"51.809166","Long":"-104.169166"},"YYQ":{"Station":"YYQ","City":"Churchill","Lat":"58.739167","Long":"-94.064999"},"YYR":{"Station":"YYR","City":"Goose Bay","Lat":"53.319168","Long":"-60.425832"},"YYT":{"Station":"YYT","City":"St. Johns","Lat":"47.61861","Long":"-52.751944"},"YYU":{"Station":"YYU","City":"Kapuskasing","Lat":"49.413889","Long":"-82.467499"},"YYW":{"Station":"YYW","City":"Armstrong","Lat":"50.290279","Long":"-88.90972"},"YYY":{"Station":"YYY","City":"Mont-Joli","Lat":"48.608612","Long":"-68.208055"},"YYZ":{"Station":"YYZ","City":"Toronto","Lat":"43.677223","Long":"-79.630555"},"YZD":{"Station":"YZD","City":"Toronto","Lat":"43.7425","Long":"-79.465555"},"YZE":{"Station":"YZE","City":"Gore Bay","Lat":"45.885277","Long":"-82.567777"},"YZF":{"Station":"YZF","City":"Yellowknife","Lat":"62.462778","Long":"-114.440277"},"YZG":{"Station":"YZG","City":"Salluit","Lat":"62.179167","Long":"-75.666943"},"YZH":{"Station":"YZH","City":"Slave Lake","Lat":"55.293056","Long":"-114.777221"},"YZP":{"Station":"YZP","City":"Sandspit","Lat":"53.254333","Long":"-131.813832"},"YZR":{"Station":"YZR","City":"Sarnia","Lat":"42.999444","Long":"-82.308888"},"YZS":{"Station":"YZS","City":"Coral Harbour","Lat":"64.193333","Long":"-83.359443"},"YZT":{"Station":"YZT","City":"Port Hardy","Lat":"50.680556","Long":"-127.366666"},"YZU":{"Station":"YZU","City":"Whitecourt","Lat":"54.14389","Long":"-115.786666"},"YZV":{"Station":"YZV","City":"Sept-\u00celes","Lat":"50.223333","Long":"-66.265555"},"YZW":{"Station":"YZW","City":"Teslin","Lat":"60.172779","Long":"-132.742777"},"YZX":{"Station":"YZX","City":"Greenwood","Lat":"44.984444","Long":"-64.916943"},"YZY":{"Station":"YZY","City":"Mackenzie","Lat":"55.304444","Long":"-123.132221"},"YZZ":{"Station":"YZZ","City":"Trail","Lat":"49.055556","Long":"-117.609166"},"ZAC":{"Station":"ZAC","City":"York Landing","Lat":"56.09","Long":"-96.089"},"ZAD":{"Station":"ZAD","City":"Zadar","Lat":"44.108269","Long":"15.346697"},"ZAG":{"Station":"ZAG","City":"Zagreb","Lat":"45.742931","Long":"16.068778"},"ZAH":{"Station":"ZAH","City":"Zahedan","Lat":"29.475686","Long":"60.906189"},"ZAJ":{"Station":"ZAJ","City":"Zaranj","Lat":"30.969167","Long":"61.867028"},"ZAL":{"Station":"ZAL","City":"Valdivia","Lat":"-39.649955","Long":"-73.08611"},"ZAM":{"Station":"ZAM","City":"Zamboanga","Lat":"6.922419","Long":"122.059633"},"ZAO":{"Station":"ZAO","City":"Cahors","Lat":"44.350542","Long":"1.478586"},"ZAR":{"Station":"ZAR","City":"Zaria","Lat":"11.130192","Long":"7.685806"},"ZAT":{"Station":"ZAT","City":"Zhaotong","Lat":"27.325556","Long":"103.755"},"ZAZ":{"Station":"ZAZ","City":"Zaragoza","Lat":"41.666242","Long":"-1.041552"},"ZBE":{"Station":"ZBE","City":"Z\u00e1breh","Lat":"49.928333","Long":"18.071111"},"ZBF":{"Station":"ZBF","City":"Bathurst","Lat":"47.629723","Long":"-65.738888"},"ZBM":{"Station":"ZBM","City":"Bromont","Lat":"45.290833","Long":"-72.741385"},"ZBO":{"Station":"ZBO","City":"Bowen","Lat":"-20.018055","Long":"148.214722"},"ZBR":{"Station":"ZBR","City":"Chah-Bahar","Lat":"25.44335","Long":"60.382114"},"ZBY":{"Station":"ZBY","City":"Sayaboury","Lat":"19.233","Long":"101.733"},"ZCD":{"Station":"ZCD","City":"Bamberg","Lat":"49.920433","Long":"10.914233"},"ZCL":{"Station":"ZCL","City":"Zacatecas","Lat":"22.897112","Long":"-102.686889"},"ZCN":{"Station":"ZCN","City":"Celle","Lat":"52.591","Long":"10.022"},"ZCO":{"Station":"ZCO","City":"Temuco","Lat":"-38.766818","Long":"-72.637096"},"ZCQ":{"Station":"ZCQ","City":"Curic\u00f3","Lat":"-34.965832","Long":"-71.21611"},"ZEC":{"Station":"ZEC","City":"Seconda","Lat":"-26.524082","Long":"29.170144"},"ZEL":{"Station":"ZEL","City":"Bella Bella","Lat":"52.139722","Long":"-128.06361"},"ZEM":{"Station":"ZEM","City":"Eastmain","Lat":"52.225833","Long":"-78.522499"},"ZER":{"Station":"ZER","City":"Zero","Lat":"27.588283","Long":"93.828061"},"ZFA":{"Station":"ZFA","City":"Faro","Lat":"62.2075","Long":"-133.375832"},"ZFD":{"Station":"ZFD","City":"Fond Du Lac","Lat":"59.333611","Long":"-107.182219"},"ZFM":{"Station":"ZFM","City":"Fort McPherson","Lat":"67.4075","Long":"-134.860555"},"ZFN":{"Station":"ZFN","City":"Fort Norman\/Tulita","Lat":"64.917","Long":"-125.567"},"ZFW":{"Station":"ZFW","City":"Fairview","Lat":"56.08139","Long":"-118.434721"},"ZGC":{"Station":"ZGC","City":"Lanzhou","Lat":"36.515242","Long":"103.620775"},"ZGF":{"Station":"ZGF","City":"Grand Forks","Lat":"49.015556","Long":"-118.430555"},"ZGI":{"Station":"ZGI","City":"Gods River","Lat":"54.84","Long":"-94.079"},"ZGL":{"Station":"ZGL","City":"South Galway","Lat":"-25.683","Long":"142.1"},"ZGM":{"Station":"ZGM","City":"Ngoma","Lat":"-15.965832","Long":"25.933333"},"ZGR":{"Station":"ZGR","City":"Little Grand Rapids","Lat":"52.045551","Long":"-95.465835"},"ZHA":{"Station":"ZHA","City":"Zhanjiang","Lat":"21.214444","Long":"110.358333"},"ZHI":{"Station":"ZHI","City":"Grenchen","Lat":"47.181628","Long":"7.417189"},"ZHM":{"Station":"ZHM","City":"Shamshernagar","Lat":"24.417","Long":"91.883"},"ZHP":{"Station":"ZHP","City":"High Prairie","Lat":"55.393612","Long":"-116.475277"},"ZIC":{"Station":"ZIC","City":"Victoria","Lat":"-38.245555","Long":"-72.34861"},"ZIG":{"Station":"ZIG","City":"Ziguinchor","Lat":"12.555617","Long":"-16.281782"},"ZIH":{"Station":"ZIH","City":"Ixtapa\/Zihuatanejo","Lat":"17.601569","Long":"-101.460535"},"ZIN":{"Station":"ZIN","City":"Interlaken","Lat":"46.676542","Long":"7.879203"},"ZJG":{"Station":"ZJG","City":"Jenpeg","Lat":"54.519444","Long":"-98.046386"},"ZJI":{"Station":"ZJI","City":"Locarno","Lat":"46.161667","Long":"8.878611"},"ZJN":{"Station":"ZJN","City":"Swan River","Lat":"52.120556","Long":"-101.236388"},"ZKB":{"Station":"ZKB","City":"Kasaba Bay","Lat":"-8.525","Long":"30.663"},"ZKE":{"Station":"ZKE","City":"Kashechewan","Lat":"52.2825","Long":"-81.677777"},"ZKM":{"Station":"ZKM","City":"Sette Cama","Lat":"-2.533","Long":"9.767"},"ZKP":{"Station":"ZKP","City":"Chingola","Lat":"-12.572777","Long":"27.89395"},"ZLO":{"Station":"ZLO","City":"Manzanillo","Lat":"19.144778","Long":"-104.55863"},"ZLR":{"Station":"ZLR","City":"Linares","Lat":"-35.860277","Long":"-71.547499"},"ZLT":{"Station":"ZLT","City":"La Tabati\u00e8re","Lat":"50.830833","Long":"-58.975555"},"ZMH":{"Station":"ZMH","City":"108 Mile Ranch","Lat":"51.736111","Long":"-121.332777"},"ZMM":{"Station":"ZMM","City":"Zamora de Hidalgo","Lat":"20.045036","Long":"-102.275954"},"ZMT":{"Station":"ZMT","City":"Massett","Lat":"54.0275","Long":"-132.125277"},"ZNA":{"Station":"ZNA","City":"Nanaimo","Lat":"49.183","Long":"-123.95"},"ZNE":{"Station":"ZNE","City":"Newman","Lat":"-23.417777","Long":"119.802778"},"ZNF":{"Station":"ZNF","City":"Hanau","Lat":"50.169189","Long":"8.961586"},"ZNZ":{"Station":"ZNZ","City":"Zanzibar Island","Lat":"-6.222024","Long":"39.224886"},"ZOS":{"Station":"ZOS","City":"Osorno","Lat":"-40.611207","Long":"-73.061041"},"ZOW":{"Station":"ZOW","City":"Nordhorn Range","Lat":"52.4575","Long":"7.1825"},"ZPB":{"Station":"ZPB","City":"Sachigo Lake","Lat":"53.890553","Long":"-92.195273"},"ZPC":{"Station":"ZPC","City":"Pucon","Lat":"-39.292793","Long":"-71.915855"},"ZPH":{"Station":"ZPH","City":"Zephyrhills","Lat":"28.228136","Long":"-82.155924"},"ZPO":{"Station":"ZPO","City":"Pinehouse Lake","Lat":"55.528","Long":"-106.582"},"ZPQ":{"Station":"ZPQ","City":"Rheine Bentlage","Lat":"52.291","Long":"7.387"},"ZQN":{"Station":"ZQN","City":"Queenstown","Lat":"-45.02111","Long":"168.739167"},"ZQV":{"Station":"ZQV","City":"Worms","Lat":"49.606511","Long":"8.3684"},"ZQW":{"Station":"ZQW","City":"Zweibr\u00fccken","Lat":"49.209525","Long":"7.400647"},"ZRH":{"Station":"ZRH","City":"Z\u00fcrich","Lat":"47.464722","Long":"8.549167"},"ZRJ":{"Station":"ZRJ","City":"Round Lake","Lat":"52.943611","Long":"-91.312777"},"ZSA":{"Station":"ZSA","City":"Cockburn Town","Lat":"24.063128","Long":"-74.523649"},"ZSE":{"Station":"ZSE","City":"St-Pierre","Lat":"-21.321666","Long":"55.425556"},"ZSJ":{"Station":"ZSJ","City":"Sandy Lake","Lat":"53.064","Long":"-93.344"},"ZSS":{"Station":"ZSS","City":"Sassandra","Lat":"4.928333","Long":"-6.132777"},"ZST":{"Station":"ZST","City":"Stewart","Lat":"55.933334","Long":"-129.983332"},"ZTA":{"Station":"ZTA","City":"Tureia","Lat":"-20.770555","Long":"-138.56861"},"ZTB":{"Station":"ZTB","City":"T\u00eate-\u00e0-La Baleine","Lat":"50.674444","Long":"-59.38361"},"ZTH":{"Station":"ZTH","City":"Zakinthos","Lat":"37.750853","Long":"20.88425"},"ZTM":{"Station":"ZTM","City":"Shamattawa","Lat":"55.861107","Long":"-92.082221"},"ZTU":{"Station":"ZTU","City":"Zaqatala","Lat":"41.562222","Long":"46.666944"},"ZUC":{"Station":"ZUC","City":"Ignace","Lat":"49.429722","Long":"-91.717777"},"ZUD":{"Station":"ZUD","City":"Ancud","Lat":"-41.903888","Long":"-73.797499"},"ZUH":{"Station":"ZUH","City":"Zhuhai","Lat":"22.006667","Long":"113.376389"},"ZUL":{"Station":"ZUL","City":"Zilfi","Lat":"26.35","Long":"44.833"},"ZUM":{"Station":"ZUM","City":"Churchill Falls","Lat":"53.561944","Long":"-64.106388"},"ZVA":{"Station":"ZVA","City":"Miandrivazo","Lat":"-19.562777","Long":"45.450832"},"ZVG":{"Station":"ZVG","City":"Springvale","Lat":"-17.786943","Long":"127.67"},"ZVK":{"Station":"ZVK","City":"Savannakh\u00e9t","Lat":"16.556594","Long":"104.759531"},"ZWA":{"Station":"ZWA","City":"Andapa","Lat":"-14.651666","Long":"49.620556"},"ZWL":{"Station":"ZWL","City":"Wollaston Lake","Lat":"58.106944","Long":"-103.172221"},"ZYI":{"Station":"ZYI","City":"Zunyi","Lat":"27.59","Long":"106.999722"},"ZYL":{"Station":"ZYL","City":"Sylhet","Lat":"24.963242","Long":"91.866783"},"ZZU":{"Station":"ZZU","City":"Mzuzu","Lat":"-11.444749","Long":"34.011776"},"ZZV":{"Station":"ZZV","City":"Zanesville","Lat":"39.944444","Long":"-81.892082"},"SWO":{"Station":"SWO","City":"Stillwater","Lat":"36.161389","Long":"-97.085888"},"TGC":{"Station":"TGC","City":"Tanjung Manis","Lat":"2.177778","Long":"111.201944"},"TPF":{"Station":"TPF","City":"Tampa","Lat":"27.915444","Long":"-82.449388"},"XAC":{"Station":"XAC","City":"Arcachon","Lat":"44.598611","Long":"-1.114721"},"XDA":{"Station":"XDA","City":"Dax\/Seyresse","Lat":"43.689167","Long":"-1.068888"},"XOG":{"Station":"XOG","City":"Orange","Lat":"44.140089","Long":"4.868581"},"XXN":{"Station":"XXN","City":"Riyadh","Lat":"24.709833","Long":"46.725166"},"XYT":{"Station":"XYT","City":"Toulouse","Lat":"43.568889","Long":"1.480833"},"YEE":{"Station":"YEE","City":"Midland","Lat":"44.683334","Long":"-79.928332"},"YGD":{"Station":"YGD","City":"Goderich","Lat":"43.766945","Long":"-81.710555"},"YMH":{"Station":"YMH","City":"Mary's Harbour","Lat":"52.303","Long":"-55.847"},"YRP":{"Station":"YRP","City":"Carp","Lat":"45.319168","Long":"-76.022221"},"YWV":{"Station":"YWV","City":"Wainwright","Lat":"52.795834","Long":"-110.857499"},"ZNC":{"Station":"ZNC","City":"Nyac","Lat":"60.980655","Long":"-159.993684"},"ZND":{"Station":"ZND","City":"Zinder","Lat":"13.778997","Long":"8.983761"},"LCQ":{"Station":"LCQ","City":"\tLake City","Lat":"30.182056","Long":"-82.57686"},"CWF":{"Station":"CWF","City":"\tLake Charles","Lat":"30.210583","Long":"-93.143193"},"IBR":{"Station":"IBR","City":"\tTsuchiura","Lat":"36.181083","Long":"140.415444"},"SEL":{"Station":"SEL","City":"Seoul","Lat":"37.558311","Long":"126.790586"},"BSL":{"Station":"BSL","City":"Basel","Lat":"47.59","Long":"7.529167"},"DVK":{"Station":"DVK","City":"Danville","Lat":"37.577575","Long":"-84.769497"},"NYC":{"Station":"NYC","City":"New York","Lat":"40.712","Long":"-74.02916"},"AMI":{"Station":"AMI","City":"","Lat":"-8.56069","Long":"116.086"},"VQQ":{"Station":"VQQ","City":"Jacksonville","Lat":"30.218611","Long":"-81.876667"},"WOE":{"Station":"WOE","City":"Bergen op Zoom","Lat":"51.448889","Long":"4.341667"},"YTN":{"Station":"YTN","City":"Trenton","Lat":"45.611944","Long":"-62.621111"},"NLU":{"Station":"NLU","City":"Mexico City","Lat":"19.756667","Long":"-99.015278"},"TQO":{"Station":"TQO","City":"Tulum","Lat":"20.166666","Long":"-87.666666"}}}; /** * Sector log JS code */ var sectorLog = { api: "/elog/sectorlog/api.php", stations: undefined, dtlocal: "en-CA", nextRecordId: 1, flightRegkey: "", flightRegkeyFlag: false, flightFinRegkey: "", flightFinRegkeyFlag: false, flightRegSearchInProgress: false, userIsCaptain: false, // Sector log help title and content helpTitle: `Sector log`, helpContent: `

Sector Log allows you to enter a flight sector to populate your logbook ahead of importing your monthly flight summaries.  Sector Log will save you considerable time if you plan to have an accurate a legal logbook.

Once you import your summaries, the system will compare your Sector Log entries with the imported sectors and merge the import to complete your log.  After this is complete, merged sectors will be removed from your Sector Log page.

Sector Log sectors will be shown along with your normal flight sectors in your logbook.  These sectors will have a yellow background shade.

`, // Format date to string e.g. 10 Jan dateObj: (date) => { var result = new Date(date); if(Number.isNaN(result.getMonth())) { var arr = date.split(/[- :]/); result = new Date(arr[0], (arr[1] * 1) -1, arr[2], arr[3], arr[4], arr[5]); } return result; }, formatDate: (date) => { var dateDT = sectorLog.dateObj(date); return dateDT.toLocaleString(sectorLog.dtlocal, {"day": "numeric"}) + " " + dateDT.toLocaleString(sectorLog.dtlocal, {"month": "short"}) + " " + dateDT.getFullYear(); }, // Extract only date e.g. 2022-10-11 onlyDate: (date) => { var dateDT = sectorLog.dateObj(date); var day = ('0' + dateDT.getDate()).slice(-2); var month = ('0' + (dateDT.getMonth() + 1)).slice(-2); return dateDT.getFullYear() + '-' + month + '-' + day; }, // Extract only time e.g. 11:30 onlyTime: (date) => { var dateDT = sectorLog.dateObj(date); var timeStr = dateDT.toLocaleString(sectorLog.dtlocal, {"hour": "2-digit", "hourCycle": "h24", "minute": "2-digit"}); return timeStr && timeStr != '24:00' ? timeStr : '00:00'; }, // Get the different between two UTC time getDiffTime: (from, to, delimiter = ':') => { from = sectorLog.onlyTime(from); to = sectorLog.onlyTime(to); if (from == to && from == '00:00') { return '00:00'; } var [fhour, fmins] = from.split(':'); var [thour, tmins] = to.split(':'); var ftime = fhour * 60 + parseInt(fmins); var ttime = thour * 60 + parseInt(tmins); if (ftime >= ttime) { ttime = ttime + 1440; } var diff = ttime - ftime; var hour = Math.floor(diff / 60); var min = Math.round(diff - (hour * 60)); min = ("00" + min).substr(-2); return ("00" + hour).substr(-2) + delimiter + min; }, //Send to debug debugLog: (data) => { if (navigator.onLine) { data.action = "Debug"; data.eid = idb.authCheck.eid; data.userid = idb.authCheck.userid; data.devid = idb.authCheck.devid; $.ajax({ url: sectorLog.api, type: 'post', data: data }); } }, // Get latest flight registrations from the DB refreshFightRegs: () => { if (navigator.onLine) { $.ajax({ url: sectorLog.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "FightRegs" }, success: function (resp) { var transaction = idb.dbh.transaction(["flightRegByFin"], "readwrite"); var objectStore = transaction.objectStore("flightRegByFin"); resp.forEach(function (sdata) { objectStore.put(sdata); }); } }); } }, // Get logs from the DB refreshLogs: () => { if (navigator.onLine && !sectorLog.localChangesPresent) { $.ajax({ url: sectorLog.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "List" }, success: function (resp) { var wipeTransaction = idb.dbh.transaction(["sectorLogData"], "readwrite"); var wipeObjectStore = wipeTransaction.objectStore("sectorLogData"); wipeObjectStore.clear().onsuccess = function (event) { var transaction = idb.dbh.transaction(["sectorLogData"], "readwrite"); var objectStore = transaction.objectStore("sectorLogData"); if (typeof resp !== "undefined" && resp.length > 0) { resp.forEach(function (sdata, index) { var entryTrans = objectStore.put(sdata); if (resp.length <= (index + 1)) { entryTrans.onsuccess = () => { if ($("#logedit_r").length <= 0 || $("#logedit_r").is(":hidden")) { sectorLog.updateLogs(); } }; } }); } else { if ($("#logedit_r").length <= 0 || $("#logedit_r").is(":hidden")) { sectorLog.updateLogs(); } } }; } }); } else { if (sectorLog.localChangesPresent) { setTimeout(sectorLog.refreshLogs, 1000); } else { sectorLog.updateLogs(); } } }, // Get the logs from the IndexedDB getLogs: () => { return new Promise((resolve, reject) => { if (typeof idb === "undefined" || typeof idb.dbh === "undefined") { reject([]); } var logs = []; sectorLog.nextRecordId = 1; idb.dbh.transaction(["sectorLogData"]) .objectStore("sectorLogData") .openCursor() .onsuccess = (event) => { var cursor = event.target.result; if (cursor) { var log = cursor.value; var timeDiff = sectorLog.getDiffTime(log.Depart, log.Arrive); var [timeDiffh, timDiffmins] = timeDiff.split(':'); log.DateDisplay = sectorLog.formatDate(log.Depart); log.Date = sectorLog.onlyDate(log.Depart); log.From = sectorLog.onlyTime(log.Depart); log.Depart_L = log.From + "z"; log.To = sectorLog.onlyTime(log.Arrive); log.Arrive_L = log.To + "z"; log.Time = timeDiff; log.AC_Fin = log.Fin; log.AC_Reg = log.Reg; log.AC_Equip = log.Equip; log.AC_MS = "Multi"; log.IsDH = false; log.Flightno = log.Flight_Num; log.Crew = log.OtherCrew; log.MOD_note = log.Remarks; log.MOD_Flags = log.tol; log.SectorLog = 1; log.TO = /T\/O/.test(log.tol)? 1 : 0; log.LND = /LND/.test(log.tol)? 1 : 0; log.DNTotal = parseInt(timeDiffh) * 60 + parseInt(timDiffmins); log.LSD_recordid = 's' + log.recordid; log.PosAC = log.Position + ' ' + log.Equip; logs.push(log); sectorLog.nextRecordId = log.recordid + 1; cursor.continue(); } else { resolve(logs.sort((item1, item2) => { var item1Date = new Date(item1.Date); var item2Date = new Date(item2.Date); return item1Date > item2Date ? 1 : item1Date < item2Date ? -1 : 0; })); } }; }); }, addSectorsToElog: (elogs, fields, dre) => { return new Promise((resolve, reject) => { sectorLog.getLogs() .then((logs) => { logs.forEach((log) => { elogs = elogs.filter(elog => { return elog.LSD_recordid !== log.LSD_recordid; }); for (ifield in fields) { if (log[fields[ifield]].match(dre)) { elogs.push(log); break; } } }); resolve(elogs.sort((item1, item2) => { var item1Date = new Date(item1.Depart); var item2Date = new Date(item2.Depart); return item1Date > item2Date ? 1 : item1Date < item2Date ? -1 : 0; })); }) .catch((err) => { reject(err); }); }); }, searchSectorlogs: (sresult, match, sval, dre) => { return new Promise((resolve, reject) => { sectorLog.getLogs() .then((logs) => { logs.forEach((log) => { crew = log.Crew.toLowerCase(); pic = log.PIC.toLowerCase(); if (crew.match(sval)) { foo = log.Crew.split("~"); match++; for (i in foo) { ifoo = foo[i].split("|"); if (ifoo[0]) { n = ifoo[1]+" "+ifoo[2]; } else { ifoo[2] = ifoo[1]; n = ifoo[1]; } if (dre.test(ifoo[1]) && typeof(mresults[n])=='undefined') { mresults[n] = {v:ifoo[2],type:"Crew"}; } } } if (pic.match(sval)) { foo=log.PIC.split("|"); if (dre.test(foo[0])) { match++; if (! foo[1]) { foo[1]=foo[0]; n=foo[0]; } else { n=foo[0]+" "+foo[1]; } if (typeof(mresults[n])=='undefined') { mresults[n]={v:foo[1],type:"Crew"}; } } } if (dre.test(log.D_Stn)) { match++; if (typeof(mresults[log.D_Stn])=='undefined') { mresults[log.D_Stn]={v:log.D_Stn,type:"Station"}; } } if (dre.test(log.A_Stn)) { match++; if (typeof(mresults[log.A_Stn])=='undefined') { mresults[log.A_Stn]={v:log.A_Stn,type:"Station"}; } } if (dre.test(log.AC_Fin)) { match++; if (typeof(mresults[log.AC_Fin])=='undefined') { mresults[log.AC_Fin]={v:log.AC_Fin,type:"Aircraft"}; } } if (dre.test(log.AC_Reg)) { match++; if (typeof(mresults[log.AC_Reg])=='undefined') { mresults[log.AC_Reg]={v:log.AC_Reg,type:"Aircraft"}; } } }); resolve({"result": sresult, "total": match}); }) .catch((err) => { reject(err); }); }); }, synchTimer: undefined, synchInProcess: false, localChangesPresent: false, // Synch the changes from IndexedDB to crewsware.logbook_sectors_log table processSyncRecords: () => { if (!navigator.onLine) { return; } if (!sectorLog.synchInProcess) { sectorLog.synchInProcess = true; processSyncRecords = []; var synchStore = idb.dbh.transaction(["sectorLogSync"]) .objectStore("sectorLogSync"); synchStore.openCursor() .onsuccess = (event) => { var cursor = event.target.result; if (cursor) { processSyncRecords.push({ "key": cursor.key, "record": cursor.value }); cursor.continue(); } else { if (processSyncRecords.length > 0) { $.ajax({ url: sectorLog.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "Sync", "changes": processSyncRecords }, success: function (resp) { var sectorLogStore = idb.dbh.transaction(["sectorLogData"], "readwrite") .objectStore("sectorLogData"); if ("added" in resp && Object.keys(resp.added).length > 0) { $.each(resp.added, (key, log) => { sectorLogStore.delete(parseInt(log.recordid)).onerror = (event) => { }; var tmpRecordid = log.recordid; log.recordid = parseInt(log.actualRecordid); $('#' + tmpRecordid + 'R').attr('data-log', JSON.stringify(log)); sectorLogStore.put(log).onsuccess = (event) => { }; }); } sectorLog.clearSyncRecord(); sectorLog.synchInProcess = false; }, error: function (xhr, ajaxOptions, thrownError) { sectorLog.synchInProcess = false; } }); } else { sectorLog.synchInProcess = false; } } }; } }, // Clear the synch change table to indexedDB clearSyncRecord: () => { sectorLog.localChangesPresent = false; idb.dbh.transaction(["sectorLogSync"], "readwrite") .objectStore("sectorLogSync") .clear(); }, // Add the change to the synch table addSyncRecord: (action, log) => { sectorLog.localChangesPresent = true; return new Promise((resolve, reject) => { if (typeof idb === "undefined" || typeof idb.dbh === "undefined") { reject([]); } var request = idb.dbh.transaction(["sectorLogSync"], "readwrite") .objectStore("sectorLogSync") .put({ "action": action, "log": log }); request.onsuccess = (event) => { resolve(); }; request.onerror = (event) => { reject(event); }; }); }, // Save the sector log save: (log, action) => { return new Promise((resolve, reject) => { if (typeof idb === "undefined" || typeof idb.dbh === "undefined") { reject([]); } var request = idb.dbh.transaction(["sectorLogData"], "readwrite") .objectStore("sectorLogData") .put(log); request.onsuccess = (event) => { sectorLog.addSyncRecord(action, log); resolve(); }; request.onerror = (event) => { reject(event); }; }); }, // Delete the sector log delete: (recordid) => { return new Promise((resolve, reject) => { if (typeof idb === "undefined" || typeof idb.dbh === "undefined") { reject([]); } var request = idb.dbh.transaction(["sectorLogData"], "readwrite") .objectStore("sectorLogData") .delete(recordid); request.onsuccess = (event) => { sectorLog.addSyncRecord("delete", { "recordid": parseInt(recordid) }); resolve(); }; request.onerror = (event) => { reject(event); }; }); }, // Check the user is a captain checkCaptain: () => { if (!navigator.onLine) { setTimeout(sectorLog.checkCaptain, 1000); return; } $.ajax({ url: sectorLog.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "IsCaptain" }, success: function (resp) { if (typeof resp !== "undefined" && "Captain" in resp) { sectorLog.userIsCaptain = resp.Captain; } } }); }, // Confirmation popup confirmation: (msg, yesCallback) => { $("#overlay").hide(); $("#confirmationSectorLog").hide().html(''); if ($("#confirmationSectorLog").length === 0) { $("body").append("
"); } $("#overlay").show(); html = `
${msg}
`; $("#confirmationSectorLog") .html(html) .width($(window).width() * .8); $("#confirmationSectorLog") .css({ top: ($(window).height() - $("#confirmationSectorLog").outerHeight()) / 2 + "px", left: ($(window).width() - $("#confirmationSectorLog").outerWidth()) / 2 + "px" }) .show(); var closeConfirmation = () => { $("#confirmationSectorLog").hide().html(''); $("#overlay").hide(); $(".closeConfirmationSectorLog, #overlay").off(); }; $(".closeConfirmationSectorLog, #overlay").off(); $(".closeConfirmationSectorLog, #overlay").on('click', function () { closeConfirmation(); }); $(".yesConfirmed").off(); $(".yesConfirmed").on('click', function () { if (typeof yesCallback === "function") { yesCallback(); } closeConfirmation(); }); }, // Update the display of the sector logs updateLogs: () => { var baseTemplate = `
Back to eLog
Sector Log
#
Date
Aircraft
Type
Reg.
FIN
Departure
From
UTC
Arrival
To
UTC
Flt #
Time
Crew
Position
PIC
Other
T/O
Landing
Remarks
 
 
Add
`; $("#sectorLog").html(baseTemplate); $("#exitSectorLog, .showSectorLogHelp").off(); $("#exitSectorLog").on('click', function () { $("#sectorLog").html(""); $("#sectorLog").hide(); $("#elogSearch").val(""); $("#resultsPanel").hide(); $("#flightMonth").hide(); var source = 'LOCAL'; if (typeof $("#flightSummary").data("source") !== "undefined") { source = $("#flightSummary").data("source"); } elog_summary(source); $("#flightSummary").show(); // if (typeof $("#flightSummary").data("source") !== "undefined") { // elog_summary($("#flightSummary").data("source")); // } }); $(".showSectorLogHelp").on('click', function () { $("#overlay").hide(); $("#helpscreen").hide().html(''); $("#overlay").show(); html = `
${sectorLog.helpTitle}
${sectorLog.helpContent}
`; $("#helpscreen") .html(html) .width($(window).width() * .9); $("#helpscreen") .css({ top: ($(window).height() - $("#helpscreen").outerHeight()) / 2 + "px", left: ($(window).width() - $("#helpscreen").outerWidth()) / 2 + "px" }) .show(); $(".closeSectorLogHelp, #overlay").off(); $(".closeSectorLogHelp, #overlay").on('click', function () { $("#helpscreen").hide().html(''); $("#overlay").hide(); $(".closeSectorLogHelp, #overlay").off(); }); }); sectorLog.getLogs().then((logs) => { sectorLog.clearRows(); logs.forEach(function (log) { sectorLog.addRow(log.recordid, [ log.DateDisplay, log.Aircraft, log.Reg, log.Fin, log.D_Stn, log.From + "z", log.A_Stn, log.To + "z", log.Flight_Num, log.Time, log.Position, log.PIC, log.OtherCrew, log.tol, log.Remarks ], log); }); sectorLog.resizeTable(); }); }, // Check the button on the edit forms updateActions: () => { $("#logedit_save").addClass("disabled"); $(".elog_input, .elog_time, [data-group='pos']").removeClass("has-value"); $(".required-info").show(); if ($.trim($("#elog_date").val()).length && (new Date($("#elog_date").val())) != "Invalid Date") { $("#elog_date").addClass("has-value"); } if ($.trim($("#elog_city_from").val()).length >= 3 && !$("#elog_city_from").hasClass("invalid")) { $("#elog_city_from").addClass("has-value"); } if ($.trim($("#elog_city_to").val()).length >= 3 && !$("#elog_city_to").hasClass("invalid")) { $("#elog_city_to").addClass("has-value"); } if ($.trim($("#elog_flightnumber").val()).length >= 4) { $("#elog_flightnumber").addClass("has-value"); } if ($.trim($("#elog_city_to_utc").val()).length >= 5) { $(".elog_time[data-input-id=elog_city_to_utc]").addClass("has-value"); } if ($.trim($("#elog_city_from_utc").val()).length >= 5) { $(".elog_time[data-input-id=elog_city_from_utc]").addClass("has-value"); } if ($.trim($("#elog_fin").val()).length >= 3) { $("#elog_fin").addClass("has-value"); } if ($.trim($("#elog_Aircraft").val()).length) { $("#elog_Aircraft").addClass("has-value"); } if ($("[data-group='pos'][data-on='1']").length) { $("[data-group='pos']").addClass("has-value"); } if ($.trim($("#elog_pic").val()).length) { $("#elog_pic").addClass("has-value"); } if ($.trim($("#elog_Reg").val()).length) { $("#elog_Reg").addClass("has-value"); } if ($(".required:not(.has-value)").length === 0) { $(".required-info").hide(); $("#logedit_save").removeClass("disabled"); } }, prevFlightReg: "", // Look up the flight reg depending on the user input updateFlightReg: () => { if (sectorLog.flightRegSearchInProgress) { setTimeout(sectorLog.updateFlightReg, 1000); return; } var fin = $.trim($("#elog_fin").val()); if (fin.length >= 3 && sectorLog.flightFinRegkey !== fin) { sectorLog.flightFinRegkey = ("0000" + fin).slice(-4); sectorLog.flightRegSearchInProgress = true; // sectorLog.prevFlightReg = $("#elog_Reg").val(); $("#elog_Reg").val(""); $(".elog_aircraft_row").hide(); $("#elog_Reg").attr("placeholder", "Searching..."); sectorLog.updateActions(); var request = idb.dbh.transaction(["flightRegByFin"]) .objectStore("flightRegByFin") .get(sectorLog.flightFinRegkey); request.onsuccess = (event) => { if (typeof event.target.result !== "undefined" && "aircraft" in event.target.result) { $("#elog_Reg").val(event.target.result.registration); $("#elog_Reg").attr("placeholder", ""); $("#elog_Aircraft").val(event.target.result.aircraft); $(".elog_aircraft_row").hide(); } else { $("#elog_Reg").attr("placeholder", "Not found"); $("#elog_Aircraft").val(''); $(".elog_aircraft_row").show(); } sectorLog.flightRegSearchInProgress = false; sectorLog.updateActions(); }; request.onerror = (event) => { $("#elog_Reg").attr("placeholder", "Not found"); $("#elog_Aircraft").val(''); $(".elog_aircraft_row").show(); sectorLog.flightRegSearchInProgress = false; sectorLog.updateActions(); }; return; } }, // Adding the sector log panel content init: () => { sectorLog.refreshFightRegs(); $("#quad_container").remove(); $("#flightSummary").hide(); $("#flightMonth").hide(); $("#sectorLog").css('width', 'auto'); $("#sectorLog").html(`
Loading sectors from Crewsware
`); sectorLog.refreshLogs(); $("#sectorLog").show(); sectorLog.resizeTable(); sectorLog.checkCaptain(); }, // Add a cell to sector log row addCell: (row, col, value, cssStyle = '') => { row.append(`
${value}
`); }, // Remove all the rows clearRows: () => { $(".itr.slog-row").remove(); }, // Add sector log row addRow: (id, values, log) => { var noffset = $("#quad_2 .itr[data-offset]:not([data-offset=new])").length + 1; var quad2Row = $(`
${noffset}
`); var quad3Row = $(`
`); $.each(values, (col, value) => { var cssStyle = ''; if (col === 12 || col === 13) { cssStyle = 'font-size: 10px;'; } if (col === 0) { sectorLog.addCell(quad2Row, col + 1, value, cssStyle); } else { sectorLog.addCell(quad3Row, col + 1, value, cssStyle); } }); quad2Row.insertBefore("#quad_2 .itr.addnewitr"); quad3Row.insertBefore("#quad_3 .itr.addnewitr"); }, // Resize the sector log table based on the columns resizeTable: () => { if (!$("#quad_container").length) { return; } var maxColWidths = []; for (i = 0; i < 20; i++) { maxColWidths[i] = 0; } $(".itd").each(function () { var cWidth = $(this).width(); var colIndex = $(this).data('col'); if (cWidth > maxColWidths[colIndex]) { maxColWidths[colIndex] = cWidth; } }); $(".itd").each(function () { if (typeof $(this).data('col') !== "undefined" && $(this).data('col') in maxColWidths) { $(this).width(maxColWidths[$(this).data('col')]); } }); var colIndex = 0; $(".ith").each(function () { var cWidth = maxColWidths[colIndex]; var pad = 0; for (var i = 1; i < $(this).data("span"); i++) { colIndex++; cWidth += maxColWidths[colIndex] + 17; pad = 16; } $(this).width(cWidth + pad); colIndex++; }); lw = $("#quad_0").position().left + $("#quad_0").width(); th = $("#quad_0").position().top + $("#quad_0").height(); $("#quad_1").css({left: lw}); $("#quad_2").css({top: th}); $("#quad_3").css({top: th, left: lw, 'xpadding-left': lw, 'xpadding-top': th}); $("#quad_0").attr("data-scroll", 0); $("#quad_1").attr("data-scroll", 0); $("#quad_2").attr("data-scroll", 0); $("#quad_container").attr("data-lw", lw); $("#quad_container").attr("data-th", th); tw = lw + $("#quad_1").outerWidth(); $("#quad_container").width(tw); h = $("#quad_0").height(); h += $("#quad_2").height(); h = (h < $(window).height() ? $(window).height() : h); $("#quad_container").height(h + 200 - 15); $("#quad_leftbar").height(h + 200); $("#sectorLog").height(h + 200); w = $("#quad_0").width(); w += $("#quad_1").width(); w = (w < $(window).width() ? $(window).width() : w); if ($("#quad_1").width() > $("#quad_3").width()) { $("#quad_3").width($("#quad_1").width()); } $("#quad_topbar").width(w); $("#sectorLog, #quad_container").width(w); $(window).scrollTop(0); $(window).scrollLeft(0); $(".addNewSLog").on("click", function () { sectorLog.addEditorForm($(this).closest('.itr').data('offset')); $(this).hide(); }) $(".editSLog, .editSLogChildrens .itd").on("click", function () { var offset = $(this).hasClass('itr') ? $(this).data('offset') : $(this).closest('.itr').data('offset'); sectorLog.addEditorForm(offset); $(".addNewSLog").show(); }) }, // Add sector log edit form addEditorForm: (offset, refreshCallback) => { var rowQ2 = $("#quad_2 .itr[data-offset=" + offset + "]"); var rowQ3 = $("#quad_3 .itr[data-offset=" + offset + "]"); var slog = rowQ3.is("[data-log]") ? rowQ3.data('log') : []; if (typeof slog === "string") { slog = JSON.parse(slog); } var rowQ2Width = rowQ2.width(); rowQ2.css({height: 'auto'}); $(".logedit").remove(); var labelHtml = `
UTC Date:
Flight No:
From:
To:
FIN:
Position:
T/O Landing:
PIC:
Other Crew:
Remarks:
`; rowQ2.append(labelHtml); var formHtml = `
Red Fields are Required
UTC:
${'From' in slog ? slog["From"] : '00:00'}
UTC:
${'To' in slog ? slog["To"] : '00:00'}
Registration:
CA
FO
RP
Augment
T/O
Land
Right Seat
Cancel
Save
${'recordid' in slog ? '
Delete
' : ''}
`; rowQ3.append(formHtml); if ($.trim(sectorLog.flightRegkey) === '') { sectorLog.flightRegkey = $.trim($("#elog_date").val()) + $.trim($("#elog_city_from").val()) + $.trim($("#elog_city_to").val()) + ("0000" + $.trim($("#elog_flightnumber").val())).slice(-4); } if ($.trim(sectorLog.flightFinRegkey) === '') { sectorLog.flightFinRegkey = ("0000" + $.trim($("#elog_fin").val())).slice(-4); } sectorLog.updateActions(); $("#logedit_cancel, .elog_time, .elog_editbtn, input, #logedit_save, #logedit_delete, #elog_Aircraft, .elog_input").off(); $("#logedit_cancel").on("click", function () { sectorLog.confirmation("Confirm you want to cancel this edit?", () => { if ($(this).hasClass("disabled")) { return; } if (typeof refreshCallback !== "undefined") { refreshCallback(); } else { sectorLog.updateLogs(); } }); }); $("#logedit_save").on("click", function () { if ($(this).hasClass("disabled")) { return; } var tols = []; $(".elog_toland[data-on='1']").each(function () { tols.push($(this).data("val")); }); var arrival = $("#elog_date").val() + " " + $("#elog_city_to_utc").val() + ":00"; if ($("#elog_city_to_utc").val() == '00:00' && $("#elog_city_to_utc").val() == $("#elog_city_from_utc").val()) { } else { if (parseInt($("#elog_city_from_utc").val().replace(':', '')) >= parseInt($("#elog_city_to_utc").val().replace(':', ''))) { var dateDT = new Date(sectorLog.dateObj($("#elog_date").val()).getTime() + (24 * 60 * 60 * 1000)); var day = ('0' + dateDT.getDate()).slice(-2); var month = ('0' + (dateDT.getMonth() + 1)).slice(-2); arrival = dateDT.getFullYear() + '-' + month + '-' + day + " " + $("#elog_city_to_utc").val() + ":00"; } } var recordid = $("#elog_recordid").val(); var currentLog = $(this).closest(".itr[data-offset]").data('log'); var action = "update"; if ($.trim(recordid) === '') { action = "add"; recordid = sectorLog.nextRecordId + 1000; sectorLog.nextRecordId++; } var updateLog = { "recordid": parseInt(recordid), "actualRecordid": action === "update" ? parseInt(recordid) : "", "Flight_Num": $("#elog_flightnumber").val(), "Aircraft": $("#elog_Aircraft").val(), "D_Stn": $("#elog_city_from").val(), "Depart": $("#elog_date").val() + " " + $("#elog_city_from_utc").val() + ":00", "Arrive": arrival, "A_Stn": $("#elog_city_to").val(), "Date": $("#elog_date").val(), "From": $("#elog_city_from_utc").val(), "To": $("#elog_city_to_utc").val(), "Fin": $("#elog_fin").val(), "Reg": $("#elog_Reg").val(), "Position": $("[data-group='pos'][data-on='1']").data("val"), "tol": tols.join(","), "PIC": $("#elog_pic").val(), "OtherCrew": $("#elog_crew").val(), "Remarks": $("#elog_note").val() }; if (typeof currentLog !== "undefined") { updateLog = { ...currentLog, ...updateLog }; } sectorLog.save(updateLog, action).then(function () { if (typeof refreshCallback !== "undefined") { refreshCallback(); } else { sectorLog.updateLogs(); } }); }); $("#logedit_delete").on("click", function () { if ($(this).hasClass("disabled")) { return; } sectorLog.confirmation("Confirm you want to delete this sector?", () => { var recordid = $("#elog_recordid").val(); if ($.trim(recordid) !== '') { sectorLog .delete(parseInt(recordid)) .then(function () { if (typeof refreshCallback !== "undefined") { refreshCallback(); } else { sectorLog.updateLogs(); } }); } }); }); if (typeof $(".elog_stations").autocomplete("instance") !== "undefined") { $(".elog_stations").autocomplete("destroy"); } if (typeof sectorLog.stations === "undefined") { sectorLog.stations = allStations(); } $(".elog_stations").autocomplete({ position: { my: "left bottom", at: "left top", }, source: function (request, response) { var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex($.trim(request.term)), "i"); var results = $.grep(Object.keys(sectorLog.stations), function (item) { return matcher.test(item); }); response(results.slice(0, 24)); // Max of 24 station are shown in Autocomplete }, select: function (event, ui) { $(this).val(ui.item.value); $(this).blur(); } }); $(".elog_stations").on("propertychange change keyup paste input", function () { var selectedValue = $.trim($(this).val()).toUpperCase(); if (selectedValue !== $(this).val()) { $(this).val(selectedValue); return; } $(this).removeClass("invalid"); if (!(selectedValue in sectorLog.stations)) { $(this).addClass("invalid"); } }); $(".elog_editbtn").on("click", function (e) { e.stopPropagation(); if ($(".elog_editbtn[data-group='" + $(this).attr("data-group") + "']").length > 1) { $(".elog_editbtn[data-group='" + $(this).attr("data-group") + "']").attr("data-on", 0); } $(this).attr("data-on", $(this).attr("data-on") * 1 ? 0 : 1); sectorLog.updateActions(); }); $(".elog_seat").on("click", function (e) { // If the user sects CA or captain as the position, the PIC field should auto fill with “Self”. They can override it if they want aby deleting and entering something else. if($("[data-group='pos'][data-on='1']").data("val")==="CA"){ $("#elog_pic").val('Self'); sectorLog.updateActions(); } }); $("#elog_Aircraft, #elog_Reg").on("input", function () { $(this).val($(this).val().toUpperCase()); }); $("input[data-maxlength]").on("input", function () { $(this).val($(this).val().slice(0, $(this).data("maxlength"))); }); $("input[data-maxlength]").on("blur", function () { $(this).val(("0000" + $(this).val()).slice(-1 * $(this).data("maxlength"))); sectorLog.updateFlightReg(); sectorLog.updateActions(); }); $("input[data-maxlength]").on("focus", function () { $(this).val(parseInt($(this).val())); }); $(".elog_time").on("click", function () { var ta = {}; var iv = $(this).attr("data-value").replace(/\D/g, ''); ta.stime = new Date(2000, 0, 1, iv.substr(0, 2) * 1, iv.substr(-2) * 1, 0, 0); ta.st = new Date(2000, 0, 1, 0, 0, 0, 0); ta.end = new Date(2000, 0, 1, 23, 59, 59, 0); var kpa = { title: 'Duty Day Start', xival: $(this).val().substr(0, 2) + ":" + $(this).val().substr(-2), onSet: (xdate) => { var d = ("00" + xdate.getHours()).substr(-2) + ':' + ("00" + xdate.getMinutes()).substr(-2); $(this).html(d); $(this).attr("data-value", d); $("#" + $(this).data('input-id')).val(d); sectorLog.updateActions(); }, stime: ta.stime, st: ta.st, end: ta.end, utco: 0 }; keypad(kpa); }); $("input").on("input change", function () { sectorLog.updateFlightReg(); sectorLog.updateActions(); }); } }; // Sector logs sync timer and process if (navigator.onLine) { sectorLog.synchTimer = setInterval(sectorLog.processSyncRecords, 10000); } window.addEventListener("online", function () { sectorLog.synchTimer = setInterval(sectorLog.processSyncRecords, 10000); sectorLog.refreshLogs(); sectorLog.refreshFightRegs(); }); window.addEventListener("offline", function () { clearInterval(sectorLog.synchTimer); }); function loadmenu() { html=""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""; $("#content_panels").html(html); html=""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""; $("#menu").html(html); } $(document).ready(function() { loadmenu(); displayVersion(); displayEnv(); server_offset.so=0; server_offset(); sendChanges.ajaxId=0; sendChanges.retry=0; sendChanges.urgent=false; pb_scroll.cnt=0; v=46; syslog.v=v; $("#ver").html(v); // console.log("Version "+v); login.clickcount=0; $("#ostatus").html("Online "+swEnabled); syslog("Document Ready"); $("#menu_btn").click(function() { menuToggle(); }); $("#menu_close").click(function() { menuToggle(); }); $(".menu_item").click(function() { menuHandler(this); }); $("#pgreload").click(function() { location.reload(); }); $("#supportButton").hide(); pb_scroll.noshow=0; hassw=('serviceWorker' in navigator)?1:0; if (location.href.match(/ForceReload/)) { document.location="/"; } if (! hassw) { // console.log("NO SW"); ua=navigator.userAgent; $(".splash_state").hide(); if (ua.match(/iPad|iPhone/)) { $("#splash_state_nosw").show(); } else { $("#splash_state_incompatible").show(); } return; } $("#cw_wm").click(function() { reloadPage(); }); $("#cw_logo").click(function() { login.clickcount++; if (login.clickcount>=5) { $("#adminID").show(); $("#adminPWD").show(); $("#adminUserID").show(); } }); $("#setUserid").keydown(function(event) { if (event.keyCode==13) { $("#setUserid").blur(); idb("setUserid"); } }); $(window).scroll( function(event) { $("#top_bar").attr("data-scroll",($(window).scrollTop()>0?1:0)); if ($("#quad_container").length) { lw=$("#quad_container").attr("data-lw")*1; th=$("#quad_container").attr("data-th")*1; $("#quad_1").css({left:lw-$(window).scrollLeft()}); $("#quad_2").css({top:th-$(window).scrollTop()}); $("#quad_3").css({top:th-$(window).scrollTop(),left:lw-$(window).scrollLeft()}); ds=0; if ($(window).scrollTop()>0) { ds++; } if ($(window).scrollLeft()>0) { ds+=2; } $("#quad_0").attr("data-scroll",ds); $("#quad_1").attr("data-scroll",ds); $("#quad_2").attr("data-scroll",ds); $("#quad_3").attr("data-scroll",ds); } if (idb.currentView=='pb') { pb_scroll(1); } if ((idb.currentView.match(/pd|cc/))&&($(window).scrollTop()>0)) { $("#pd_top_btn").show(); clearTimeout(pb_scroll.tid); pb_scroll.tid=setTimeout(function() { $("#pd_top_btn").fadeOut(4000); },4000); } if (idb.currentView=='mc') { mc_fxhead(); $("#top_bar").attr("data-scroll",0); } }); $(window).resize(function() { if (idb.currentView=='mc') { mc_init(true); } }); // window.addEventListener("orientationchange", function() { // if (idb.currentView=='mc') { // mc_init(true); // } //}); window.addEventListener('popstate', function(e) { // console.log("BACK "+menuHandler.history.join(", ")); if ((e.isTrusted)&&(menuHandler.history.length>1)) { menuHandler.history.pop(); mh=menuHandler.history.pop(); // console.log("HERE "+mh); if (mh) { menuHandler(mh); } window.history.forward(); } }); menuHandler.history=[]; addHistory(); idb.standalone=(window.matchMedia('(displayemode: standalone)').matches)?1:0; hbeat.initialized=false; idb(); zids={ 'YVR':'PT', 'YYC':'MT', 'YQR':'CST', 'YWG':'CT', 'YYZ':'ET', 'YHZ':'AT', 'YYT':'NT' } }); function addHistory() { history.pushState({init:true}, null, null); } function menuToggle() { obj=$("#menu"); if ($(obj).attr("data-open")==1) { $("#menu").hide(); $("#overlay").hide(); $(obj).attr("data-open",0); $("#overlay").unbind(); } else { $("#overlay").show(); $("#menu").show(); $(obj).attr("data-open",1); $("#overlay").click(function() { menuToggle(); }); } } function reloadPage() { scrolltop(); setView("loading"); location.reload(); } function getPosition() { if ("xxgeolocation" in navigator) { navigator.geolocation.getCurrentPosition(function(position) { $.get("/php/handler.php?coords",position).done(function(data) { // console.log(data); }); return; vars=["latitude","longitude","altitude","accuracy","altitudeAccuracy","heading","speed","timestamp"]; pos=[]; // console.log("GEO"); for (i in vars) { pos[vars[i]]=position.coords[vars[i]]; // console.log(vars[i]+" "+position.coords[vars[i]]); } // console.log(JSON.stringify(pos)); }); } } function scrolltop() { pb_scroll.noshow=1; $(window).scrollTop(0); pb_scroll.noshow=0; } function menuHandler(obj) { toggle=true; if (obj.id) { id=obj.id.replace("menu_",""); } else { id=obj; toggle=false; } // $.get("/sw/loaded",function(data) { // $("#vinfo").html("Crewsware "+data+" "+idb.authCheck.admin); // }); // console.log("Menu "+id); supportBtn.state=false; $("#supportButton").hide(); if (id=='clear') { $("#overlay").show(); $.get(idb.handler+"?ping") .done(function() { $("#overlay").hide(); setView('initial'); idb("rebuild",obj.id); return; }) .fail(function() { alert("Crewsware Mobile cannot reload offline"); $("#overlay").hide(); menuToggle(); }); } if (id=='logout') { setView('initial'); idb("logout",obj.id); return; } if (id=='user') { $(".menu_item").attr("data-on",0); $(obj).attr("data-on",1); $("#setUserid").val(idb.authCheck.userid); $("#setUserid").show(); $("#changeUserid").show(); $("#setUserid").focus(); $("#setUserid").select(); // if (toggle) { menuToggle(); } // scrolltop(); } else { $("#changeUserid").hide(); } if (id=='ddx') { $(".menu_item").attr("data-on",0); $(obj).attr("data-on",1); //showDDC(); ddcalc.init(); if (toggle) { menuToggle(); } scrolltop(); } if (id.match(/^pb|elog|dd|crewrest|pd|mc|cc|order$/)) { setView('initial'); idb.currentView=id; i=idb("setView"); i=idb("getView"); // console.log("View "+i); idb.checksum.order=0; scrolltop(); idb("authLoad","menu"); url=idb.handler+"?accessFeature="+id+ "&eid="+idb.authCheck.eid+ "&userid="+idb.authCheck.userid; $.get(url); if (toggle) { menuToggle(); } if (id=='elog') { $("#flightMonth").hide(); $("#flightSummary").show(); } } if (id=='delpairing') { if (toggle) { menuToggle(); } $(".menu_item").attr("data-on",0); $(obj).attr("data-on",1); scrolltop(); delPairings(); } if (id=='addpairing') { if (toggle) { menuToggle(); } $(".menu_item").attr("data-on",0); $(obj).attr("data-on",1); scrolltop(); addPairings(); } if (id=='XXXakey') { if (toggle) { menuToggle(); } $(".menu_item").attr("data-on",0); $(obj).attr("data-on",1); scrolltop(); iosKey(); } if (id=='akey') { if (toggle) { menuToggle(); } iosKey(); } if (id=='notify') { if (toggle) { menuToggle(); } } } function showDDC() { setView("loading"); $(".display_panel").hide(); $("#ddcalc").show(); ddcalc.init(); setView("display"); } function syslog(stat) { $("#syslog").html(syslog.v+" "+stat); } if ((0)&&('serviceWorker' in navigator)){ navigator.serviceWorker.addEventListener('message', function(event){ js=JSON.stringify(event.data); // console.log("MESSAGE:"+js); }); } function displayNotification() { if (Notification.permission == 'granted') { navigator.serviceWorker.getRegistration().then(function(reg) { reg.showNotification('Hello world!'); }); } } function registerUser(data) { // console.log("Start Register User "); data['registerUser']=1; data['eid']='093175'; // console.log("Register User "+data.endpoint); $.get("/php/handler.php",data).done(function(resp) { //console.log(resp); }); } async function idb(cmd,src) { idb.handler="/php/handler.php"; idb.stores=['elogData','elogSync','elogUpdates','sectorLogData','sectorLogSync','flightRegByFin']; idb.VER=18; if (typeof(idb.dcache)=='undefined') { idb.dcache={}; } if (typeof(src)=='undefined') { src=false; } if (typeof(idb.dbh)=='undefined') { idb.dbh=false; } if (typeof(idb.writing)=='undefined') { idb.writing=false; } if (typeof(idb.location)=='undefined') { idb.location=false; } if (typeof(idb.preload)=='undefined') { idb.preload=false; } if (typeof(idb.pushcheck)=='undefined') { idb.pushcheck=false; } if (typeof(cmd)=='undefined') { cmd=false; } if (typeof(idb.checksum)=='undefined') { idb.checksum={ mc:0, pb:0, pd:0, elog:0, dd:0, crewrest:0, cc:0, order:0 }; } // console.log("IDB: "+cmd+" src:"+src); // syslog("IDB "+cmd+" src:"+src); if (! idb.dbh) { setLoadState("Load Local DB"); // console.log("Connect: "+data); var request = indexedDB.open("Crewsware",idb.VER); request.onerror = function(event) { // alert("No indexedDB"); }; request.onupgradeneeded = function(event) { //console.log("ELOG Upgrade DB from "+event.oldVersion); var db = event.target.result; for (i in idb.stores) { if (db.objectStoreNames.contains(idb.stores[i])) { // console.log("Delete "+stores[i]); var objectStore = db.deleteObjectStore(idb.stores[i]); } } // console.log("Recreate"); var objectStore = db.createObjectStore("elogData", { keyPath: "LSD_recordid" }); objectStore.createIndex("Depart", "Depart", {unique:false}); var objectStore = db.createObjectStore("elogSync", { keyPath: "Action" }); var objectStore = db.createObjectStore("elogUpdates", { autoIncrement: true }); db.createObjectStore("sectorLogData", { keyPath: "recordid" }); db.createObjectStore("sectorLogSync", { autoIncrement: true }); db.createObjectStore("flightRegByFin", { keyPath: "fin" }); }; request.onsuccess = function(event) { // console.log("ELOG DB Opened"); syslog("ELOG DB Opened"); idb.dbh = event.target.result; // console.log("indexedDB = "+idb.dbh); // idb.src="Local Data... Retrieving New Data"; helpHTML=getRec("elogSync","helpHTML"); $.get(idb.handler+"?helpHTML",function(data) { // console.log(data); rdata=JSON.parse(data); rdata.Action='helpHTML'; helpHTML=rdata; putRec("elogSync","helpHTML",rdata); }); setLoadState("Open Local DB"); idb("load"); }; } if ((cmd=='rebuild')||(cmd=='logout')) { // console.log("REBUILD "+cmd); if (idb.db) { idb.db.close(); } $.get("/sw/"+cmd+(idb.standalone?"/standalone":"")) .done(function(data) { // console.log("GET DONE "+cmd); // console.log(data); if (cmd=='logout') { // Kill m.crewsware.com $.get(idb.handler+"?killsession").done(function() { location.reload(); }); url=(location.host.match(/m\.crewsware\.com/))?"https://www.crewsware.com":"http://crewsware.caselab.com"; url+="/prog/logbook/m.elog.php?logout"; } else { location.reload(); } }) .fail(function(xhr,ts,et) { // console.log("REBUILD FAIL "+ts+" "+et+" swenabled:"+swEnabled); }); if (cmd=='logout') { } } if (cmd=='setUserid') { $("#changeUserid").hide(); id=$("#setUserid").val()*1; id="000000"+id; idb.authCheck.userid=id.substr(-6); idb.authCheck.splash=""; idb.authCheck.splashed=0; transaction = idb.dbh.transaction(["elogSync"], "readwrite"); objectStore = transaction.objectStore("elogSync"); setView("loading"); menuToggle(); rec=objectStore.get("authtoken").onsuccess=function() { updateRequest = objectStore.put(idb.authCheck); $.get("/sw/rebuild").done(function(data) { $("#flightSummary").html(""); $("#flightMonth").html(""); $("#pairingBrief").html(""); idb("load","setuser"); }); }; } if ((cmd=='load')&&(idb.dbh)) { // console.log("authTokens"); setLoadState("Authorize Device"); $.get("/sw/authTokens"+(idb.standalone?"/standalone":"")).done(function(data) { setLoadState("Device Authorized"); syslog("AUTH:"+data); authCheck=JSON.parse(data); idb.authCheck=authCheck; // hbeat(1); // console.log("AUTH:"+JSON.stringify(authCheck)); if (idb.authCheck.group=='ACP') { $("#menu_elog").show(); } else { $("#menu_elog").hide(); } if (idb.authCheck.qualtrial) { $("#menu_order").html("Start Free Trial "); } else { $("#menu_order").html("Renew Subscription"); } sdata={ src:src, auth:JSON.stringify(authCheck) } if ("xxgeolocation" in navigator) { navigator.geolocation.getCurrentPosition(function(position) { idb.position=position.coords; $.get(idb.handler+"?storepos&eid="+idb.authCheck.eid,position); }); } if (authCheck.stored) { setView("loading"); location.reload(); } else if (authCheck.auth) { // console.log("Tokens:"+JSON.stringify(authCheck)); if (authCheck.admin>0) { $("#menu_user").show(); } sendChanges(1,0); if ((authCheck.splash)&&(! authCheck.splashed)) { $(".display_panel").hide(); setView("display"); $("#splash").html(authCheck.splash); $("#splash").show(); $("#loading").hide(); } else { idb("authLoad",(src?src:"auth")); } } else { data={ authfailed:1, auth:authCheck }; $.get(idb.handler,data); setView("register"); } }) .fail(function(xhr,ts,et) { setLoadState("Authorize Failed"); // console.log("AUTH FAIL"); syslog("AUTH FAIL"); setView("wait"); setTimeout(function() { location.reload(); },1000); }); } if (cmd=='getView') { pcheck=async function() { return new Promise(function(resolve) { var transaction = idb.dbh.transaction(["elogSync"], "readwrite"); var store=transaction.objectStore("elogSync").get("pushData").onsuccess=function(event) { return resolve(event.target.result); }; }); }; cview=async function() { return new Promise(function(resolve) { var transaction = idb.dbh.transaction(["elogSync"], "readwrite"); var store=transaction.objectStore("elogSync").get("currentView").onsuccess=function(event) { return resolve(event.target.result); }; }); }; if (! idb.pushcheck) { pc=await pcheck(); idb.pushcheck=true; if ((typeof(pc)!='undefined')&&(! pc.actioned)) { idb.pushcheck=pc; if (pc.pushData.page) { idb.currentView=pc.pushData.page; i=await idb("setView"); } pc.actioned=true; putRec("elogSync","pushData",pc); $("#overlay").hide(); $("#helpscreen").hide(); drawHelpScreen({alert:true,title:"Crewsware Notification",HTML:"
"+pc.pushData.splash+"
"}); return(idb.currentView); } } cv=await cview(); if (typeof(cv)=='undefined') { idb.currentView='pb'; i=await idb("setView"); } else { idb.currentView=cv.View; } return(idb.currentView); } if (cmd=='setView') { var itransaction = idb.dbh.transaction(["elogSync"], "readwrite"); var iobjectStore = itransaction.objectStore("elogSync"); rec=iobjectStore.get("currentView").onsuccess=function() { // console.log("OSEC "+idb.currentView); updateRequest = iobjectStore.put({ Action:'currentView', View:idb.currentView }); }; return(idb.currentView); } if ((cmd=='authLoad')&&(idb.dbh)) { i=await idb("getView"); // console.log("AUTHLOAD idb.cv="+idb.currentView); l=menuHandler.history.length; // console.log("hist: l:"+l+" mh:"+menuHandler.history[l-1]+" cv:"+idb.currentView); if ((l<1)||(menuHandler.history[l-1]!=idb.currentView)) { menuHandler.history.push(idb.currentView); } nolocal=src.match(/delete|add|setuser/); if (! nolocal) { setView("display"); } $(".menu_item").attr("data-on",0); $("#menu_"+idb.currentView).attr("data-on",1); if (idb.currentView=='dd') { idb.src="Loaded from Crewsware"; idb("display_dd","DB"); return; } else if (idb.currentView=='XXcrewrest') { idb("display_crewrest","DB"); } else { hv=idb.currentView; if (typeof(hv)=='undefined') { hv='pb'; idb.currentView='pb'; idb("setView"); } if ((hv.match(/mc|pd/))&&(src!='changes')) { $.get("/sw/getBulk/",function(data) { mc_init.bulk=JSON.parse(data); // console.log("BULK:"+mc_init.bulk.equip+" "+mc_init.bulk.updated); }); idb("loadbulk"); } $.get("/sw/getData"+(idb.standalone?"/standalone":"")) .done(function(data) { // console.log("SW getData Done = "+data+" hv:"+hv+" cv:"+idb.currentView); if (hv!=idb.currentView) { return; } setView("display"); try { rdata=JSON.parse(data); } catch(err) { return; } if (authCheck.expired) { // console.log("EXPIRED"); $(".menu_item_mba").hide(); // pd, cc available to expired users if ($("#menu_"+idb.currentView).hasClass("menu_item_mba")) { // console.log("EXPIRED NOT PD"); idb.currentView="mc"; i=idb("setView"); idb("authLoad","menu"); return; } } else { $(".menu_item_mba").show(); } // console.log("SW getData Auth:"+JSON.stringify(authCheck)); if ((authCheck.splash)&&(! authCheck.splashed)) { $(".display_panel").hide(); setView("display"); $("#splash").html(authCheck.splash); $("#splash").show(); $("#loading").hide(); return; } if (rdata.view=='elog') { idb.src="Loaded from Crewsware"; $("#debout").html("getData DONE"); idb("display_elog","DB"+(rdata.data?"":"X")); } if (rdata.view=='pb') { idb.src="Loaded from Crewsware"; idb("display_pb","DB"+(rdata.data?"":"X")); } if (rdata.view=='pd') { idb("display_pd","DB"+(rdata.data?"":"X")); } if (rdata.view=='crewrest') { idb("display_crewrest","DB"+(rdata.data?"":"X")); } if (rdata.view=='mc') { idb("display_mc","DB"+(rdata.data?"":"X")); } if (rdata.view=='cc') { idb("display_cc","DB"+(rdata.data?"":"X")); } if (rdata.view=='order') { idb("display_order","DB"+(rdata.data?"":"X")); } }) .fail(function(xhr,ts,et) { // console.log("SW getData FAIL"); $("#debout").html("getData FAIL "+ts+" "+et+" swenabled:"+swEnabled); setView("display"); // nonSWLoad(); }); } // console.log("SHOW stored "+idb.currentView); $("#menu_addpairing").hide(); $("#menu_delpairing").hide(); mi="menu_"+idb.currentView; mix=document.getElementById(mi); // console.log("menu:"+mi+" "+mix+" "+$(mix).length); if (authCheck.expired) { $(".menu_item_mba").hide(); if ($("#menu_"+idb.currentView).hasClass("menu_item_mba")) { idb.currentView="mc"; i=idb("setView"); } } else { $(".menu_item_mba").show(); } if (idb.currentView=='elog') { setView("loading"); // $("#debout").html("Loading Local"); // console.log("End Load"); // idb.src="Local Data"; setDatasource('LOCAL'); idb("display_elog","LOCAL"); } if (idb.currentView=='pb') { $("#menu_addpairing").show(); $("#menu_delpairing").show(); if (! nolocal) { idb("display_pb","LOCAL"); } } if (idb.currentView=='crewrest') { idb("display_crewrest","LOCAL"); } if (idb.currentView=='pd') { idb("display_pd","LOCAL"); } if (idb.currentView=='mc') { idb("display_mc","LOCAL"); } if (idb.currentView=='cc') { idb("display_cc","LOCAL"); } if (idb.currentView=='order') { idb("display_order","LOCAL"); } } if ((cmd=='splashed')&&(idb.dbh)) { idb.authCheck.splashed=1; url=idb.handler+"?splashed="+src+ "&stime="+Date.now()+ "&eid="+idb.authCheck.eid+ "&userid="+idb.authCheck.userid; $.get(url,function(data) { // console.log(url+" "+data); }); putRec("elogSync","authtoken",idb.authCheck); } if ((cmd=='display_dd')&&(idb.dbh)) { // console.log("DISPLAY DD"); setDatasource('DB'); ddcalc.init(); $(".display_panel").hide(); $("#ddcalc").show(); setView("display"); } if ((cmd=='display_crewrest')&&(idb.dbh)) { if (src!='DB') { setDatasource('LOCAL'); } else { setDatasource('DB'); } crewRest(); $(".display_panel").hide(); $("#crewrest").show(); setView("display"); } if ((cmd=='loadbulk')&&(idb.dbh)) { bulk=async function() { // console.log("get mcBULK"); return new Promise(function(resolve) { var transaction = idb.dbh.transaction(["elogSync"], "readwrite"); var store=transaction.objectStore("elogSync").get("bulk").onsuccess=function(event) { return resolve(event.target.result); }; }); }; mcbulk=await bulk(); // console.log("HERE:"+mcbulk.equip) mc_init.bulk=mcbulk; } if ((cmd=='display_mc')&&(idb.dbh)) { //console.log("DISPAY_MC "+src); mcHTML=async function() { // console.log("get mcHTML"); return new Promise(function(resolve) { var transaction = idb.dbh.transaction(["elogSync"], "readwrite"); var store=transaction.objectStore("elogSync").get("mcHTML").onsuccess=function(event) { return resolve(event.target.result); }; }); }; mcdata=await mcHTML(); if (! mcdata) { idb.writing=false; return; } if (! src.match(/DB/)) { setDatasource('LOCAL'); mc_init.src='LOCAL'; } else { setDatasource('DB'); mc_init.src='DB'; } // console.log("CRC "+src+":"+mcdata.VARS.CHECKSUM+" v:"+idb.checksum.mc); mc_init.checksum=(idb.checksum.mc==mcdata.VARS.CHECKSUM); idb.checksum.mc=mcdata.VARS.CHECKSUM; if ((src=='DB')&&(mc_init.checksum)) { return; } mc_init.cust_alert=mcdata.VARS.cust_alert; mc_init.cust_ltz=mcdata.VARS.cust_ltz; mc_init.awards=mcdata.VARS.awards; mc_init.mcal=mcdata.VARS.mcal; mc_init.odata=mcdata.VARS.odata; mc_init.src=mcdata.VARS.src; mc_init.equip=mcdata.VARS.equip; mc_init.base=mcdata.VARS.base; // console.log(src+" DMC HERE "+mc_init.equip+" "+mc_init.base); // console.log("html:"+mcdata.HTML.substr(0,100)); var loadCal = () => { // Only load the calendar if calendar menu is selected if ($("#menu_mc").data("on") == 1) { // Only refresh calendar if edit screen is not visible if (!$("#mc_mcal_edit").is(":visible")) { if (typeof mc_init.timeoutCall !== "undefined") { clearTimeout(mc_init.timeoutCall); } $(".display_panel").hide(); $("#mcalendar").hide(); $("#mcalendar").html(mcdata.HTML); $("#mcalendar").show(); mc_draw(); mc_init(); } else { mc_init.timeoutCall = setTimeout(loadCal, 300); } } else { //fallback to clear timeout call if navigated to different screen if (typeof mc_init.timeoutCall !== "undefined") { clearTimeout(mc_init.timeoutCall); } } } loadCal(); // console.log(src+" DMC DONE"); } if ((cmd=='display_pd')&&(idb.dbh)) { if (typeof(pd_init.usebulk)!='undefined') { $(".display_panel").hide(); // console.log("USEBULK SET: Skip Load"); setDatasource("DB"); pd_init(); return; } pdHTML=async function() { return new Promise(function(resolve) { var transaction = idb.dbh.transaction(["elogSync"], "readwrite"); var store=transaction.objectStore("elogSync").get("pdHTML").onsuccess=function(event) { return resolve(event.target.result); }; }); }; pddata=await pdHTML(); if (! pddata) { idb.writing=false; return; } pd=pddata.HTML; pd_init.aircraft=pddata.VARS.aircraft; $(".display_panel").hide(); $("#pairingDisplay").html(pd); ivar=(src!='DB'?'LOCAL':'DB'); // console.log("DISPLAY PD: "+src+" "+ivar); setDatasource(ivar); $(".pcount").html(""); pd_init(); } if ((cmd=='display_cc')&&(idb.dbh)) { if (src=='LOCAL') { $(".display_panel").hide(); $("#loading").show(); return; } ccHTML=async function() { return new Promise(function(resolve) { var transaction = idb.dbh.transaction(["elogSync"], "readwrite"); var store=transaction.objectStore("elogSync").get("ccHTML").onsuccess=function(event) { return resolve(event.target.result); }; }); }; ccdata=await ccHTML(); if (! ccdata) { idb.writing=false; return; } cc=ccdata.HTML; cc_init.rates=ccdata.VARS.RATES; cc_init.asof=ccdata.VARS.ASOF; $(".display_panel").hide(); $("#cconv").html(""); $("#cconv").show(); if (src!='DB') { setDatasource('LOCAL'); } else { setDatasource('DB'); } $("#loading").hide(); cc_init(); } if ((cmd=='display_pb')&&(idb.dbh)) { // console.log("DISPLAY PB "+src); if (idb.writing) { // setTimeout(function() { idb('display_pb','WAIT'); },1000); // return; } idb.writing=true; pbHTML=async function() { return new Promise(function(resolve) { var transaction = idb.dbh.transaction(["elogSync"], "readwrite"); var store=transaction.objectStore("elogSync").get("pbHTML").onsuccess=function(event) { return resolve(event.target.result); }; }); }; pbdata=await pbHTML(); if (! pbdata) { if (src=='LOCAL') { setView('loading'); } idb.writing=false; return; } if (src!='DB') { setDatasource('LOCAL'); } else { setDatasource('DB'); } // console.log("CRC "+src+":"+pbdata.VARS.CHECKSUM+" v:"+idb.checksum.pb); if ((idb.checksum.pb==pbdata.VARS.CHECKSUM)&&(src.match=="DB")) { return; } idb.checksum.pb=pbdata.VARS.CHECKSUM; pb=pbdata.HTML; // console.log("PBHTML "+pbdata.VARS.HTML); // console.log("PBHTML "+pb+" SRC:"+src); $(".display_panel").hide(); $("#pairingBrief").attr("data-cv","pb"); $("#pairingBrief").html(pb); $("#pairingBrief").show(); $(".current_flag").each(function() { io=$(this).offset().top+($(this).height()/2)-($(window).innerHeight()/2); // console.log("Centre "+this.id+" "+io); $(window).scrollTop(io); }); pb_init(); pb_scroll.cnt=0; pb_scroll.noshow=1; pb_scroll(2); pb_scroll.noshow=0; idb.writing=false; } if ((cmd=='display_elog')&&(idb.dbh)) { if (idb.writing) { // setTimeout(function() { idb('display_elog','WAIT'); },1000); // return; } if (!$("#sectorLog").is(":visible") && !$("#ypanel_year").is(":visible") && !$("#ypanel_stns").is(":visible") && !$("#ypanel_equip").is(":visible") && !$("#flightMonth").is(":visible")) { $(".display_panel").hide(); $("#flightSummary").show(); elog_summary(src); } else { $("#flightSummary").attr("data-source", src); } } if ((cmd=='display_order')&&(idb.dbh)) { if (src!='DB') { setDatasource('LOCAL'); } else { setDatasource('DB'); } orderHTML=async function() { return new Promise(function(resolve) { var transaction = idb.dbh.transaction(["elogSync"], "readwrite"); var store=transaction.objectStore("elogSync").get("orderHTML").onsuccess=function(event) { return resolve(event.target.result); }; }); }; var orderdata=await orderHTML(); if ((! orderdata)||(orderdata.VARS.NOSHOW)) { if (src=='LOCAL') { setView('loading'); } idb.writing=false; return; } // console.log("CRC "+src+":"+orderdata.VARS.CHECKSUM+" v:"+idb.checksum.order); order_init.checksum=(idb.checksum.order==orderdata.VARS.CHECKSUM); idb.checksum.order=orderdata.VARS.CHECKSUM; $(".display_panel").hide(); $("#order").show(); // console.log("diplay_order: "+src+" "+JSON.stringify(orderdata.VARS.tokens)); order_init.orderdata=orderdata; order_init.src=src; order_init(); } } function clearSplash(obj) { var scr=$(obj).attr("data-screen"); idb("splashed",scr); if (scr=='EXPIRED') { menuHandler("order"); } } async function getRec(ostore,key) { // console.log("getRec:"+ostore+" key:"+key); grf=async function(key) { return new Promise(function(resolve) { var transaction = idb.dbh.transaction([ostore], "readwrite"); // console.log("GET:"+key); var store=transaction.objectStore(ostore).get(key).onsuccess=function(event) { return resolve(event.target.result); }; }); }; var data=await grf(key); return(data); } async function putRec(ostore,key,data) { var prf=async function(ostore,key,data) { if (! key) { // console.log("putRec:"+ostore+" NO key - data:"+data); return new Promise(function(resolve) { var transaction = idb.dbh.transaction([ostore], "readwrite"); var objectStore = transaction.objectStore(ostore); var request = objectStore.add(data).onsuccess=function(event) { // console.log("ONSUCCESS putRec:"+ostore+" nokey data:"+data); return resolve(event.target.result); }; }); } else { // console.log("putRec:"+ostore+" key:"+key+" data:"+data); return new Promise(function(resolve) { var transaction = idb.dbh.transaction([ostore], "readwrite"); var objectStore = transaction.objectStore(ostore); var rec=objectStore.get(key).onsuccess=function(event) { // console.log("ONSUCCESS putRec:"+ostore+" key:"+key+" data:"+data); // console.log(JSON.stringify(data)); var updateRequest = objectStore.put(data); return resolve(event.target.result); }; }); return(2); } }; var rdata=await prf(ostore,key,data); // console.log("DONE "+ostore); return(rdata); } function keypad(args) { // console.log("keypad:"+JSON.stringify(args)); var unitc={ m:"Minutes", h:"Hours", d:"Days", w:"Weeks" }; var setTimeBox=function() { if (keypad.numeric) { foo=(keypad.tval).split(""); } else { foo=(keypad.tval.substr(0,2)+":"+keypad.tval.substr(-2)).split(""); if ((keypad.tval_st<1000)&&(keypad.tval_end<1000)&&(keypad.tval_end>keypad.tval_st)&&(! keypad.cpos)) { keypad.cpos++; } } str=""; if (keypad.args.prefix) { str+="
"+keypad.args.prefix+"
"; } for (i in foo) { if (keypad.numeric) { idx=i; str+="
"+(foo[i]==" "?"_":foo[i])+"
"; } else { idx=(i>1?i-1:i); str+="
"+(foo[i]==" "?"_":foo[i])+"
"; } } if (keypad.hrmin) { ok=1; f=2; // console.log('hrmin:'+keypad.args.itype+" "+keypad.tval+" "+keypad.args.min+" "+keypad.args.max); if (keypad.tval*1) { if ((keypad.args.itype.match(/min|range/))&&(keypad.tval>keypad.args.max.replace(":",""))) { ok=0; } if ((keypad.args.itype.match(/max|range/))&&(keypad.tvalkeypad.args.max*1)) { ok=0; } if ((keypad.args.itype=='max')&&(keypad.tval*1=keypad.tval_st)&&(keypad.tval<=keypad.tval_end))?1:0; f=1; } else { ok=((keypad.tval>=keypad.tval_st)||(keypad.tval<=keypad.tval_end))?1:0; f=2; if (keypad.tval"; } $("#numbox").html(str); // console.log(keypad.tval+" "+keypad.tval_st+" "+keypad.tval_end+" f:"+f+" ok:"+ok); $("#numbox").attr("data-ok",ok); $(".timebox").unbind(); $("#alert_tz").unbind(); $("#alert_tz").click(function() { event.stopPropagation(); if ($(this).html()=='UTC') { $(this).html(keypad.base); keypad.tz=''; } else { $(this).html('UTC'); keypad.tz='UTC'; } }); $(".timebox").click(function() { keypad.cpos=$(this).attr("data-idx")*1; setTimeBox(); }); keypad.tval_ok=ok; }; var kphtml=function(args) { $(".num_keypad").detach(); keypad.args=args; keypad.alert=(typeof(args.alert)=='undefined')?0:args.alert; keypad.base=args.base; keypad.tz=args.tz; keypad.cpos=0; keypad.kbactive='numbox'; var idate=new Date; keypad.hrmin=((typeof(args.kptype)!='undefined')&&(args.kptype=='hm')); keypad.numeric=((typeof(args.kptype)!='undefined')&&(args.kptype=='num')); keypad.istime=((typeof(args.kptype)!='undefined')&&(args.kptype=='time')); if (keypad.hrmin) { foo=args.ival.split(":"); keypad.hrmin={ hlen:foo[0].length, h:foo[0]*1, m:foo[1]*1 }; keypad.tval=(("0").repeat(keypad.hrmin.hlen)+keypad.hrmin.h).substr(-2)+("00"+keypad.hrmin.m).substr(-2); tval_st='00:00'; tval_end='23:50'; // console.log(keypad.tval+" "+JSON.stringify(keypad.hrmin)); } else if (keypad.numeric) { keypad.tval=args.ival+""; } else if (keypad.istime) { keypad.tval=args.stime.toTimeString().substr(0,5).replace(":",""); keypad.tval_i=args.stime.toTimeString().substr(0,5).replace(":",""); } else { // console.log("STIME:"+args.stime.toTimeString()); keypad.tval=args.stime.toTimeString().substr(0,5).replace(":",""); foo={'tval':args.stime,'tval_i':args.stime,'tval_st':args.st,'tval_end':args.end}; for (i in foo) { idate.setTime(foo[i].getTime()); keypad[i]=idate.toTimeString().substr(0,5).replace(":",""); } } // console.log(JSON.stringify(args)+" "+keypad.tval_i+" "+keypad.tval_st+" "+keypad.tval_end); var kp="
"+ "
"+args.title+"
"; if (keypad.alert==1) { keypad.kbactive='anumbox'; keypad.anumbox='init'; kp+="
"+ "
"+args.before_v+"
"+ "
"+ "
"+unitc[args.before_u]+"
"+ "
"; } if (keypad.alert==2) { kp+="
"+args.before_v+"
"+ "
"+unitc[args.before_u]+"
"+ "
"; } if (keypad.alert) { kp+="
Before"+(keypad.alert==2?" at":"")+"
"; } if ((keypad.alert!=1)&&(! keypad.hrmin)&&(! keypad.numeric)&&(! keypad.istime)) { kp+="
"+ "
"+keypad.tval_st.substr(0,2)+":"+keypad.tval_st.substr(-2)+"
"+ "
"+keypad.tval_end.substr(0,2)+":"+keypad.tval_end.substr(-2)+(keypad.tval_end"+ "
"; } if ((keypad.alert!=1)&&(keypad.hrmin||keypad.numeric)) { kp+="
"+ "
"+(keypad.args.prefix?keypad.args.prefix:"")+args.min+"
"+ "
"+(keypad.args.prefix?keypad.args.prefix:"")+args.max+"
"+ "
"; } if (keypad.alert!=1) { kp+="
"; } if (keypad.alert) { kp+="
Notify By
"+ "
"+ ""+ "
Email
"+ "
SMS
"+ "
"; } kp+="
1
2
3
"+ "
4
5
6
"+ "
7
8
9
"+ "
"+ "
"+ "
0
"+ "
"+ "
"+ "
"+ "
Cancel
"+ "
OK
"+ "
"; $("body").append(kp); $("#keypad").css({top: (($(window).height()-$("#keypad").height())/2)+$(window).scrollTop(), left:(($(window).width()-$("#keypad").width())/2)}); setTimeBox(); $("#numbox").unbind(); $("#anumbox").unbind(); $(".cust_alert").unbind(); $("#cust_alertunit").unbind(); $(".numkey").unbind(); $("#anumbox").click(function() { keypad.kbactive='anumbox'; keypad.anumbox='init'; keypad.acpos=0; $(".timebox").attr("data-cursor",0); $(this).html("
"+$(this).attr("data-val")+"
"); }); $("#numbox").click(function() { keypad.kbactive='numbox'; $(".timebox").attr("data-cursor",0); setTimeBox(); }); $(".cust_alert").click(function() { $(this).attr("data-on",($(this).attr("data-on")==1?0:1)); }); $("#cust_alertunit").click(function() { units={ m:{text:'Minutes',next:'h'}, h:{text:'Hours',next:'d'}, d:{text:'Days',next:'w'}, w:{text:'Weeks',next:'m'} }; if (keypad.alert==2) { units.w.next='d'; } c=$(this).attr("data-unit"); $(this).attr("data-unit",units[c].next); $(this).html(units[units[c].next].text); }); $(".numkey").click(function() { if ($(this).attr("data-key")=="CANC") { $(".num_keypad").detach(); } else if ($(this).attr("data-key")=="OK") { if (! keypad.tval_ok) { return; } if (keypad.hrmin) { var rv=args; rv.ival=keypad.tval.substr(0,2)+":"+keypad.tval.substr(-2); if (args.onSet) { args.onSet(rv); } $(".num_keypad").detach(); return; } if (keypad.numeric) { var rv=args; rv.ival=keypad.tval.replace(" ",""); if (args.onSet) { args.onSet(rv); } $(".num_keypad").detach(); return; } if (keypad.istime) { // console.log(keypad.tval+" "+args.stime); var rv=timeCopy(args.stime); rv.setHours(keypad.tval.substr(0,2)*1); rv.setMinutes(keypad.tval.substr(2,2)*1); if (args.onSet) { args.onSet(rv); } $(".num_keypad").detach(); return; } itd=(keypad.tval.substr(0,2)*60)+(keypad.tval.substr(-2)*1); ist=(keypad.tval_st.substr(0,2)*60)+(keypad.tval_st.substr(-2)*1); idiff=(itd"+(foo[i]==' '?' ':foo[i])+"
"; } $("#anumbox").html(h); } if (keypad.kbactive=='numbox') { if (keypad.numeric) { if ($(this).attr("data-key")=="F") { if (keypad.cpos+1==keypad.tval.length) { if ((keypad.tval!="0")&&(keypad.tval.substr(-1)!=" ")) { keypad.tval+=" "; keypad.cpos++; } } else { keypad.cpos++; } } else if ($(this).attr("data-key")=="B") { foo=keypad.tval.split(""); // console.log(keypad.cpos+" "+JSON.stringify(foo)); i=foo.splice(keypad.cpos,1); // console.log(i+" "+JSON.stringify(foo)); keypad.tval=foo.join(""); if (! keypad.tval.length) { keypad.tval="0"; } if (keypad.cpos==keypad.tval.length) { keypad.cpos--; } } else if ((keypad.cpos)||($(this).attr("data-key")!="0")) { foo=keypad.tval.split(""); foo[keypad.cpos]=$(this).attr("data-key"); keypad.tval=foo.join(""); keypad.cpos++; if (keypad.cpos==keypad.tval.length) { keypad.tval+=" "; } } foo=keypad.tval.split(""); // console.log(keypad.cpos+" "+JSON.stringify(foo)); setTimeBox(); } else if (($(this).attr("data-key")=="F")||($(this).attr("data-key")=="B")) { if ($(this).attr("data-key")=="F") { keypad.cpos+=(keypad.cpos<3?1:-3); } if ($(this).attr("data-key")=="B") { keypad.cpos-=(keypad.cpos>0?1:-3); } setTimeBox(); } else if (keypad.cpos < 4) { kv=$(this).attr("data-key")*1; foo=keypad.tval.split(""); // console.log(kv+" "+JSON.stringify(foo)); // Sanity Checks if (keypad.hrmin) { if ((keypad.cpos==2)&&(kv>5)) { return; } } else { if ((! keypad.cpos)&&(kv>2)) { return; } if ((! keypad.cpos)&&(keypad.istime)&&(kv>2)) { return; } if ((! keypad.cpos)&&(kv==2)) { foo[1]=(foo[1]>(keypad.istime?3:4)?0:foo[1]); } if ((keypad.cpos==1)&&(foo[0]*1==2)&&(kv>3)) { return; } if ((keypad.cpos==2)&&(kv>5)) { return; } } itv=foo.join(""); tv=itv.substr(0,keypad.cpos)+$(this).attr("data-key")+itv.substr(keypad.cpos+1); keypad.tval=tv; keypad.cpos+=(keypad.cpos==3?-3:1); setTimeBox(); } } }); }; kphtml(args); } function numberpad(args) { var r; var c; var kp; // console.log("numberpad:"+JSON.stringify(args)); var isNum=function(v) { return((((v*1)||(v=='0')||(v=='.'))?true:false)); }; var calcDisplay=function() { var str=""; var io; var isop; var chrs={"+":"+","-":"-","*":"×","/":"÷","=":"="}; if (numberpad.init) { foo=numberpad.entry.split(""); str=""; for (i in foo) { str+=""+foo[i]+""; } str+=""; } else { foo=numberpad.entry.split(""); // console.log(numberpad.offset+" "+JSON.stringify(foo)); numberpad.answer=false; for (i in foo) { var v=foo[i]; if (isNum(v)) { str+=""+v+""; } else { str+=""+chrs[v]+""; } } if (foo[foo.length-1]=="=") { var ic=""; for (i=0;i 0)&&(ans !== Infinity)) { str+=""+ans.toFixed(2)+""; numberpad.answer=ans; } else { str+=" Error"; } } if (! str) { str="0"; } } // console.log(str); $("#npad_calcdisplay").html(str+numberpad.suffix); $(".npad_c").unbind(); $(".xnpad_c").click(function(event) { // console.log("offset:"+$(this).attr("data-offset")); event.stopPropagation(); numberpad.init=false; numberpad.offset=$(this).attr("data-offset")*1; calcDisplay(); }); }; var updateDisplay=function() { var str=""; // console.log("upd:"+numberpad.entry); foo=numberpad.entry.toString().split(""); if (numberpad.init) { str=""; for (i in foo) { str+=""+foo[i]+""; } str+=""; } else { // console.log(numberpad.offset+" "+JSON.stringify(foo)); numberpad.answer=""; for (i in foo) { var v=foo[i]; str+=""+v+""; } } if (str.length==0) { str=" "; } $(numberpad.target).html(str+numberpad.suffix); $(".npad_c").unbind(); $(".xnpad_c").click(function() { numberpad.init=false; numberpad.offset=$(this).attr("data-offset")*1; updateDisplay(); }); }; var div="
"; div+="
"; if ((args)&&(args.type=='CALC')) { numberpad.calc=true; // numberpad.entry="10"; numberpad.init=true; numberpad.offset=0; numberpad.answer=false; } else if (args) { if (numberpad.target) { $(numberpad.target).html(numberpad.entry); } args.val*=1; if (args.val <= .001) { dp=6; } else if (args.val <= .01) { dp=4; } else if (args.val >= 1000) { dp=0; } else { dp=2; } // console.log(args.val+" "+dp); numberpad.calc=false; numberpad.onset=args.onset; numberpad.target=args.target; numberpad.init=true; numberpad.entry=args.val.toFixed(dp); numberpad.initialval=args.val; numberpad.suffix=args.suffix; numberpad.scrollto=(typeof(args.scrollto)!='undefined'?args.scrollto:0); $(".npad_target").removeClass("npad_target"); $(numberpad.target).addClass("npad_target"); } if (numberpad.calc) { div+="
"+ "
"+ "
"; kp=[ [{txt:"OK",val:"OK"},{txt:"Exit",val:"EXIT"},{txt:"C",val:"CLR"},{txt:"",val:"EQUALS"}], [{txt:"7"},{txt:"8"},{txt:"9"},{txt:"",val:"PLUS"}], [{txt:"4"},{txt:"5"},{txt:"6"},{txt:"",val:"MINUS"}], [{txt:"1"},{txt:"2"},{txt:"3"},{txt:"",val:"DIV"}], [{txt:"",val:"BS"},{txt:"0"},{txt:"."},{txt:"",val:"TIMES"}], ]; } else { kp=[ [{txt:"7"},{txt:"8"},{txt:"9"},{txt:"C",val:"CLR"}], [{txt:"4"},{txt:"5"},{txt:"6"},{txt:"",val:"BS"}], [{txt:"1"},{txt:"2"},{txt:"3"},{txt:"Exit",val:"EXIT"}], [{txt:"",val:"CALC"},{txt:"0"},{txt:"."},{txt:"OK",val:"OK"}] ]; } for (r in kp) { div+="
"; for (c in kp[r]) { div+="
"+kp[r][c].txt+"
"; } div+="
"; } div+="
"; div+="
"; $("#numberpad").detach(); $('#cconv').append(div); var t=$(window).innerHeight()-$("#numberpad").outerHeight(); $("#numberpad").css({top:t,left:0}); $(".npad_btn").unbind(); if (numberpad.calc) { calcDisplay(); } else { updateDisplay(); } if (numberpad.scrollto) { $(window).scrollTop(numberpad.scrollto+$("#numberpad").outerHeight()); } $(".npad_btn").click(function() { var v=$(this).attr("data-val"); var chrs={PLUS:"+",MINUS:"-",TIMES:"*",DIV:"/",EQUALS:"="}; if (v=='CALC') { numberpad({type:v}); return; } if ((v=='EXIT')||(v=="OK")) { $("#numberpad").detach(); $(".npad_target").removeClass("npad_target"); // $(numberpad.target).html(numberpad.entry); numberpad.target=false; // console.log(v+" A OK:"+numberpad.calc+" "+numberpad.answer); if ((v=="OK")&&(numberpad.onset)) { if (numberpad.calc) { if (numberpad.answer) { numberpad.onset(numberpad.answer); } } else { numberpad.onset(numberpad.entry); } } if ((v=="EXIT")&&(numberpad.onset)) { numberpad.onset(numberpad.initialval); } return; } var keyproc=false; if (isNum(v)) { if ((numberpad.init)||(numberpad.answer)) { numberpad.entry=v; numberpad.offset=0; } else { numberpad.entry+=v; numberpad.offset++; } numberpad.init=false; keyproc=true; } else if (v=='BS') { if (numberpad.entry.length>0) { if (numberpad.init) { numberpad.entry=""; } else { foo=numberpad.entry.split(""); foo.splice(numberpad.offset,1); numberpad.entry=foo.join(""); if (numberpad.offset>0) { numberpad.offset--; } } numberpad.init=false; } keyproc=true; } else if (v=='CLR') { numberpad.entry=""; numberpad.init=false; keyproc=true; } if (numberpad.calc) { if (! keyproc) { if (numberpad.answer) { numberpad.entry=numberpad.answer+(chrs[v]=="="?"":chrs[v]); numberpad.offset=numberpad.entry.length-1; } else if (numberpad.entry.length==0) { // } else if (isNum(numberpad.entry.substr(-1))) { numberpad.entry+=chrs[v]; numberpad.offset+=(numberpad.init?numberpad.entry.length-1:1); } else { foo=numberpad.entry.split(""); foo.pop(); foo.push(chrs[v]); numberpad.entry=foo.join(""); } numberpad.init=false; } if (numberpad.offset>=numberpad.entry.length) { numberpad.offset=numberpad.entry.length-1; } calcDisplay(); } else { updateDisplay(); } }); } function timeslider(args) { if (typeof(timeslider.cfg)=='undefined') { timeslider.cfg={}; } msm=60*1000; slide="#"+args.prefix+"_slide"; slider=slide+"r"; slideline=slide+"line"; args.slide=slide; args.slider=slider; args.slideline=slideline; args.minc=(typeof(args.minc)=='undefined'?5:args.minc); args.nokeypad=(typeof(args.nokeypad)=='undefined'?false:args.nokeypad); args.dateref=(typeof(args.dateref)=='undefined'?false:args.dateref); timeslider.cfg[args.prefix+"_slider"]=args; // console.log("timeslider: "+JSON.stringify(timeslider.cfg[args.prefix+"_slider"])); st=timeCopy(args.st); end=timeCopy(args.end); stime=timeCopy(args.stime); $("#"+args.div).attr("data-prefix",args.prefix); $("#"+args.div).css({background:'LemonChiffon'}); st.setTime(st.getTime()+(crewRest.cfg.utcoffset*3600*1000*args.utc)); end.setTime(end.getTime()+(crewRest.cfg.utcoffset*3600*1000*args.utc)); stime.setTime(stime.getTime()+(crewRest.cfg.utcoffset*3600*1000*args.utc)); // console.log(args.prefix+" "+st+" "+end); $(slideline).attr("data-st",st.getTime()); $(slideline).attr("data-end",end.getTime()); $(slider).attr("data-time",stime.getTime()); io=((args.end.getTime()-args.st.getTime())/(msm*60)<10?1:0); zsuff=function(ist) { if (! crewRest.cfg.zulu) { return(""); } str="z"; if ((! args.isref)&&(args.dateref)&&(ist.getTime() < args.dateref.getTime()+(crewRest.cfg.utcoffset*3600*1000*args.utc))) { // console.log("next day: "+ist+" v "+args.dateref) // console.log(args.isref+" "+ist.getHours()+" v "+args.st.getHours()+" "+ist+" v "+args.st); // console.log(args.isref+" "+ist.getHours()+" v "+args.st.getHours()+" "+ist+" v "+args.st); str+="+1"; } return(str); }; $("#"+args.div).html((args.utc?stime.toTimeString().substr(0,5)+zsuff(stime):stime.toTimeString().substr(1,4))); // console.log(args.utc+" "+args.div+" time:"+stime+" st:"+st+" end:"+end); w=$(slide).width(); w-=$(slider).width(); $(slideline).width(w); $(slideline).css({left:$(slider).width()/2}); w=$(slideline).width(); ist=new Date(); tms=end.getTime()-st.getTime(); var imi=tms/(msm*60); if (imi<5) { sc_inc=30; } else if (imi<12) { sc_inc=60; } else { sc_inc=120; } ist.setTime(st.getTime()); ist.setSeconds(0); ru=ist.getMinutes(); if (sc_inc==30) { ru=(ru<30?30:60)-ru; } else { ru=60-ru; } ist.setTime(ist.getTime()+(ru*msm)); // console.log(slider+" "+w); alt=false; $(".cr_hind_"+args.prefix).detach(); i=0; // console.log(ist+" "+end); while (ist < end) { l=(ist.getTime()-st.getTime())/tms*w; l+=($(slide).width()-w)/2; if (sc_inc==30) { h=ist.toTimeString().substr(0,5); } else { h=ist.toTimeString().substr(0,2); } // console.log(h+" "+l+" ist:"+ist.getTime()+" st:"+st.getTime()+" tms:"+tms+" w:"+w); idiv="
"+h+"
"; $(slide).append(idiv); ist.setTime(ist.getTime()+(sc_inc*60*1000)); alt=(! alt); i++; } $(".cr_hind_"+args.prefix).each(function() { l=$(this).position().left-($(this).width()/2) $(this).css({left:l}); }); pct=(stime.getTime()-st.getTime())/(end.getTime()-st.getTime()) // console.log(stime+" st:"+st+" end:"+end); l=($(slide).width()-$(slideline).width()-$(slider).width())/2; l+=pct*$(slideline).width(); // console.log(pct+" "+l+" utc:"+crewRest.cfg.utcoffset); $(slider).css({left:l+"px"}); $(slider).draggable({ containment:'parent', axis:'x', start: function() { // console.log("start drag: "+this.id); }, drag: function() { args=timeslider.cfg[this.id]; w=$(args.slide).width()-$(args.slider).width(); l=$(args.slider).position().left; pct=l/w; msec=pct*(args.end.getTime()-args.st.getTime()); utco=(crewRest.cfg.utcoffset*3600*1000*args.utc); cl=new Date(); cl.setTime(args.st.getTime()+msec); m=cl.getMinutes(); m-=m%args.minc; cl.setMinutes(m); cl.setSeconds(0); cl.setMilliseconds(0); crewRest.cfg[args.dvar]=cl; icl=new Date; icl.setTime(cl.getTime()+utco); io=((args.end.getTime()-args.st.getTime())/(msm*60)<10?1:0); $("#"+args.div).html((args.utc?icl.toTimeString().substr(0,5)+zsuff(icl):icl.toTimeString().substr(1,4))); $("#"+args.div).css({background:'yellow'}); if (args.ufunction) { // console.log("HERE UFUNC"); args.ufunction(); } }, stop: function() { args=timeslider.cfg[this.id]; // console.log("Stop: "+args.dvar+" = "+crewRest.cfg[args.dvar]); // console.log(crewRest.cfg.landing+" "+crewRest.cfg.utcoffset); crewRest.cfg.timerstarted=0; putRec("elogSync","crewRest",crewRest.cfg); $("#"+args.div).css({background:'white'}); crewRest('timecalc'); crewRest('time'); }, }); if (args.nokeypad) { return; } $("#"+args.div).click(function() { ipref=$(this).attr("data-prefix"); icfg=timeslider.cfg[ipref+"_slider"]; utco=(crewRest.cfg.utcoffset*3600*1000*icfg.utc); var iargs={ stime:timeCopy(icfg.stime), st:timeCopy(icfg.st), end:timeCopy(icfg.end), title:icfg.title, utco:utco, isref:icfg.isref }; iargs.onSet=function(xdate) { crewRest.cfg[args.dvar]=timeCopy(xdate); crewRest.cfg.timerstarted=0; // console.log("Here:"+args.dvar+" xdate = "+xdate+" "+crewRest.cfg[args.dvar]); putRec("elogSync","crewRest",crewRest.cfg); crewRest('timecalc'); crewRest('time'); }; foo=['stime','st','end']; // console.log("iargs:"+JSON.stringify(iargs)); for (i in foo) { // console.log(foo[i]+" "+iargs[foo[i]]+" "+iargs[foo[i]].getTime()+" "+utco); iargs[foo[i]].setTime(iargs[foo[i]].getTime()+utco); } // console.log("iargs:"+JSON.stringify(iargs)); keypad(iargs); }); // console.log("SLIDER DONE"); } function timeCopy(srcdt) { dt=new Date(); dt.setTime(srcdt.getTime()); return(dt); } function iosKey() { url=idb.handler+"?ioskey"+ "&eid="+idb.authCheck.eid+ "&userid="+idb.authCheck.userid+ "&auth="+idb.authCheck.auth; // console.log(url); $.get(url,function(data) { // console.log(data); // if (data) { txt="Apple iOS Authentication Key:
"+data+"
"; } // else { txt="Key Generation Failed"; } if (data) { txt="
"+data+"
"; } else { txt="Key Generation Failed"; } drawHelpScreen({title:"Apple iOS Authentication Key",HTML:txt}); }); } function supportBtn() { if (typeof(supportBtn.state)=='undefined') { supportBtn.state=false; } if (! supportBtn.state) { $(".display_panel").each(function() { if ($(this).is(":visible")) { // console.log("--> "+this.id); supportBtn.restore=this; } }); $(".display_panel").hide(); $("#supportPanel").show(); ihtml=helpHTML[idb.currentView].support; idiv="
"; idiv+="
"+ihtml.title+"
"; $("#supportPanel").html(idiv+ihtml.HTML); $("#supportPanel").show(); supportBtn.state=true; } else { $("#supportPanel").hide(); $(supportBtn.restore).show(); supportBtn.state=false; } } function setMenu(icond) { // Not Active if (icond=='na') { } } function setLoadState(istate) { $("#splash_state_message").html(istate); } function setView(view) { if (typeof(setView.tid)=='undefined') { setView.tid=0; } setView.cview=view; // console.log("setView "+setView.cview); $(".elog_panel").hide(); $(".splash_state").hide(); var cstate=function() { if (setView.cview!='loading') { clearTimeout(setView.tid); return; } setView.tid=setTimeout(function() { $.get("/sw/loadState",function(resp) { setLoadState(resp); cstate(); }); },1000); }; if (view=='register') { $("#elog_splash").show(); $("#splash_state_login").show(); } if (view=='wait') { $("#elog_splash").show(); $("#splash_state_wait").show(); } if (view=='display') { $("#elog_display").show(); } if (view=='initial') { $("#elog_splash").show(); $("#splash_state_init").show(); } if (view=='loading') { clearTimeout(setView.tid); $("#elog_splash").show(); $("#splash_state_loading").show(); cstate(); } if (view=='expired') { $("#elog_splash").show(); $("#splash_state_expired").show(); } } function login(obj) { data={ user:$("#userID").val(), token:$("#userPWD").val() }; $.get("/php/handler.php",data).done(function(data) { if (data) { location.reload(); } else { $("#userID").css({color:'red'}); $("#userPWD").css({color:'red'}); } }); return; v=$("#iosKey").val(); if ((0)&&(v!="")) { url=idb.handler+"?IOSKEY="; // console.log("LOGIN "+url); document.location=url; } else { if (obj.id=='expired_btn') { url="https://"+(idb.authCheck.group=="ACIF"?"inflight":"www")+".crewsware.com/account"; document.location=url; } else { url=idb.handler; var data={ userID: $("#userID").val(), userPWD: $("#userPWD").val(), login: 1 }; console.log("SEND:"+JSON.stringify(data)); $.get(url,data).done(function(resp) { rdata=JSON.parse(resp); console.log("RCV:"+JSON.stringify(rdata)); var auth=getRec("elogSync","authtoken"); console.log("AUTH:"+JSON.stringify(auth)); // putRec("elogSync","pushData",pc); // helpHTML=getRec("elogSync","helpHTML"); }); } } // console.log("LOGIN "+url); // document.location=url; } function setDatasource(src) { // console.log("setDatasource:"+src); $("#cw_datasource").html(""); s=0; if (src=='DB') { $("#cw_datasource").html(" Loaded from Crewsware"); $("#data_state").attr("data-online",1); is=1; } if (src=='LOCAL') { $("#cw_datasource").html(" Using Local Data"); $("#data_state").attr("data-online",0); is=1; } if (s) { w=($("#cw_datasource").outerWidth()?$("#cw_datasource").outerWidth():150); l=$(window).innerWidth()-w-25; // console.log('ds: '+l+" "+$(window).width()+" "+w); $("#cw_datasource").css({left:l+"px"}); } } function timeSelect(tval) { opt=""; for (hr=0;hr<23;hr++) { for (m=0;m<60;m+=30) { v=("00"+hr).substr(-2)+":"+("00"+m).substr(-2); opt+=""; } } return(opt); } function date_format(idate) { foo=idate.split("-"); if ((typeof(idate)=='undefined')||(foo.length!=3)) { return(idate); } monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; df=monthNames[foo[1]*1-1].substr(0,3)+" "+(foo[2]*1)+", "+foo[0]; return(df); } function timespan(ievt) { foo={time:'',alarm:'',text:''}; if (ievt.pairno!='CUST') { return(foo); } if (typeof(ievt.disp_tz)=='undefined') { return(foo); } // console.log(JSON.stringify(ievt)); // return(""); tst=ievt.start; tend=ievt.end; tst=tst.substr(11,5).replace(":",""); tend=tend.substr(11,5).replace(":",""); alarms=((ievt.alerts)&&(ievt.alerts.length))?"":""; if ((tst=='0000')&&(tend=='0000')) { foo.alarm=alarms; foo.text=alarms; return(foo); } if (tst==tend) { itime=tst; } else { if (tst.substr(-2)=='00') { tst=tst.substr(0,2); } itime=tst+"-"+tend; } foo.alarm=alarms; foo.time=itime+(ievt.disp_tz=='UTC'?'Z':(ievt.disp_tz==''?'':' '+zids[ievt.disp_tz])), foo.text=foo.alarm+foo.time; return(foo); } function drawquads() { if (! $("#quad_container").length) { return; } lw=$("#quad_0").position().left+$("#quad_0").width(); th=$("#quad_0").position().top+$("#quad_0").height(); $("#quad_1").css({left:lw}); $("#quad_2").css({top:th}); $("#quad_3").css({top:th,left:lw,'xpadding-left':lw,'xpadding-top':th}); $("#quad_0").attr("data-scroll",0); $("#quad_1").attr("data-scroll",0); $("#quad_2").attr("data-scroll",0); $("#quad_container").attr("data-lw",lw); $("#quad_container").attr("data-th",th); tw=lw+$("#quad_1").outerWidth(); $("#quad_container").width(tw); h=$("#quad_0").height(); h+=$("#quad_2").height(); h=(h<$(window).height()?$(window).height():h); $("#quad_container").height(h+200-15); $("#quad_leftbar").height(h+200); $("#flightMonth").height(h+200); w=$("#quad_0").width(); w+=$("#quad_1").width(); w=(w<$(window).width()?$(window).width():w); $("#quad_topbar").width(w); $("#flightMonth").width(w); $(window).scrollTop(0); $(window).scrollLeft(0); } function server_offset() { server_offset.so=0; return; tcv=[]; stime=function() { ro={send:Date.now()}; iserr=0; $.ajax({ url: '/php/handler.php?ttest=1', type: 'get', datatype: 'html', async:false, success: function(resp) { ro['receive']=Date.now(); ro['stime']=resp; ro['diff']=(resp*1000)-((ro['send']+ro['receive'])/2); tcv.push(ro); }, error: function (xhr, ajaxOptions, thrownError) { iserr=1; } }); if (iserr) { return; } if (tcv.length<10) { stime(); } }; stime(); server_offset.so=0; if (! tcv.length) { return; } for (i=0;i300) { nt=60; } else if (ss>60) { nt=30; } else { nt=2; } // console.log("Error Fail:"+sendChanges.fail+" Last:"+sendChanges.lastAttempt+" fails:"+ss+" retry in "+nt); sendChanges.retry=setTimeout(function() { sendChanges(0); },nt*1000); } }); } }; } function ostatus() { $("#ostatus").html(($("#ostatus").attr("data-online")=='1'?'Offline':'Online')); $("#ostatus").attr("data-online",($("#ostatus").attr("data-online")=='1'?'0':'1')); sendChanges(1); } // This is for browsers that don't support Service Workers function nonSWLoad() { $.get(idb.handler) .done(function(data) { // console.log("GET DONE"); var transaction = idb.dbh.transaction(["elogData"], "readwrite"); var objectStore = transaction.objectStore("elogData"); rdata=JSON.parse(data); transaction = idb.dbh.transaction(["elogData"], "readwrite"); objectStore = transaction.objectStore("elogData"); rdata.sectors.forEach(function(fdata) { var request = objectStore.put(fdata); }); transaction = idb.dbh.transaction(["elogSync"], "readwrite"); objectStore = transaction.objectStore("elogSync"); rec=objectStore.get("lastSync").onsuccess=function() { updateRequest = objectStore.put({ Action:"lastsync", mtime:rdata.mtime*1000, minDepart:rdata.minDepart, maxDepart:rdata.maxDepart }); }; setDatasource("DB"); idb("display_elog","LOAD"); }) .fail(function() { // console.log("GET FAIL"); // console.log("NO DATA"); idb.src="Using your Local Data"; setDatasource("LOCAL"); // $("#idb_src").html(idb.src); }); } function urlBase64ToUint8Array(base64String) { var padding = '='.repeat((4 - base64String.length % 4) % 4); var base64 = (base64String + padding) .replace(/\-/g, '+') .replace(/_/g, '/'); var rawData = window.atob(base64); var outputArray = new Uint8Array(rawData.length); for (var i = 0; i < rawData.length; ++i) { outputArray[i] = rawData.charCodeAt(i); } return outputArray; } function killHover() { if (('ontouchstart' in document.documentElement) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)) { try { // prevent exception on browsers not supporting DOM styleSheets properly for (var si in document.styleSheets) { var styleSheet = document.styleSheets[si]; if (!styleSheet.rules) continue; for (var ri = styleSheet.rules.length - 1; ri >= 0; ri--) { if (!styleSheet.rules[ri].selectorText) continue; if (styleSheet.rules[ri].selectorText.match(':hover')) { styleSheet.deleteRule(ri); } } } } catch (ex) {} } } function h2m(t) { var foo=t.split(":"); return((foo[0]*60)+(foo[1]*1)); } function m2h(t,blank) { if (typeof(blank)=='undefined') { blank='00:00'; } if ((t==null)||(t=='')) { return(blank); } h=parseInt(t/60); m="00"+(t%60); return(h+":"+m.substr(-2)); }; function m2hm(t) { t=Math.floor(t); var h=("00"+Math.floor(t/60)).substr(-2); var m=("00"+(t%60)).substr(-2); return(h+":"+m); } function m2hms(t) { var secs=Math.floor((t%1)*60); t=Math.floor(t); var r=m2hm(t); var s=""; if (t <= 2) { s=":"+("00"+secs).substr(-2); } return(r+s); } function dt2time(ts,src) { // console.log(src+" "+ts); // if (! ts) { return(0); } its=ts.replace(/-/g,"/"); ist=new Date(its); s=ist.getTime()/1000; // $("#mcDebug").append("ts: "+its+" ist: "+ist+" s: "+s+"
"); return(s); } function dtString(dt) { ts=dt.getFullYear()+"-"+ ("00"+(dt.getMonth()*1+1)).substr(-2)+"-"+ ("00"+dt.getDate()).substr(-2)+" "+ ("00"+dt.getHours()).substr(-2)+":"+ ("00"+dt.getMinutes()).substr(-2)+":"+ ("00"+dt.getSeconds()).substr(-2); return(ts); } function recurStr(idate) { if (! idate) { return; } var id=new Date(idate.substr(0,8).replace(/-/g,"/")+"01 00:00:00"); var sm=id.getMonth(); var ma=[]; var dowc=[0,0,0,0,0,0,0]; // console.log("RECURSTR:"+idate+" "+sm); dstr=""; var ic=0; var ido=-1; while (id.getMonth()==sm) { dowc[id.getDay()]++; dstr=id.getFullYear()+"-"+ ("00"+(id.getMonth()*1+1)).substr(-2)+"-"+ ("00"+id.getDate()).substr(-2); if (idate==dstr) { ido=ma.length; } // console.log("dstr:"+dstr); ma.push({ date:dstr, dc: ic+1, dow:id.getDay(), dowc:dowc[id.getDay()], first:(ic<7?1:0), last:0, ldm:0 }); id.setDate(id.getDate() + 1); ic++; } ma[ma.length-1].ldm=1; for (i=1;i<=7;i++) { ma[ma.length-i].last=1; } // console.log(JSON.stringify(ma)); // console.log(idate+" => "+JSON.stringify(ma[ido])); var dvs=ma[ido]; rstr=""; var ords=["","st","nd","rd","th"]; var wds=["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; rstr+=dvs.dowc+ords[dvs.dowc>3?4:dvs.dowc]; rstr+=" "+wds[dvs.dow]; rstr+=" "+months[sm].substr(0,3); rstr+=" "+dvs.dc+ords[dvs.dc>3?4:dvs.dc]; rstr+=" "+dvs.last; rstr+=" "+dvs.ldm; rstr+=" "+dvs.dowc; rstr+=" "+dvs.dc; rstr+=" "+(sm+1); return(rstr); } function helpScreen(obj) { iq=$(obj).attr('data-q'); $("#overlay").hide(); $("#helpscreen").hide(); if (! iq) { return; } drawHelpScreen(helpHTML[iq]); } function drawHelpScreen(iarr) { $("#overlay").show(); html="
"+iarr.title+"
"+ ""+ "
"+iarr.HTML+"
"; $("#helpscreen").html(html); $("#helpscreen").show(); t=($(window).height()-$("#helpscreen").outerHeight())/2; w=$(window).innerWidth()*.95; l=($(window).innerWidth()-w)/2; $("#helpscreen").css({top:t+"px",left:l+"px",width:w+"px"}); $("#helpscreen").unbind(); if (iarr.alert) { $("#helpscreen").click(function() { $("#overlay").hide(); $(this).hide(); }); } } function hbeat(init) { var ival=15; if (init) { if (hbeat.initialized) { return; } hbeat.initialized=true; hbeat.offline=0; } url=idb.handler+"?"+ "eid="+idb.authCheck.eid+ "&devid="+idb.authCheck.devid+ "&offline="+hbeat.offline+ "&hbeat="+Date.now(); $.get(url) .done(function(data) { hbeat.offline=0; }) .fail(function() { hbeat.offline++; }); // console.log(init+" "+hbeat.initialized+" "+url); // hbeat.tid=setTimeout(function() { hbeat(false); },60000); ival=60; hbeat.tid=setTimeout(function() { hbeat(false); },ival*1000); } async function doAjax(url,data) { let result; try { result = await $.ajax({ url: url, type: 'POST', data: data }); return result; } catch (error) { return "ERROR"; } } function displayVersion() { if (typeof window.getManifest !== "undefined") { window.getManifest() .then((manifest) => { var versionDisplay = []; if (typeof manifest.short_name !== "undefined") { versionDisplay.push(manifest.short_name); } if (typeof manifest.version !== "undefined") { versionDisplay.push(manifest.version); } if (typeof manifest.last_modified !== "undefined") { $modifiedDate = new Date(); var modifiedTimestamp = Date.parse(manifest.last_modified); if(!isNaN(modifiedTimestamp)) { versionDisplay.push((new Date(modifiedTimestamp)).toDateString()); } } $("#vinfo").html(versionDisplay.join(" ")); }) .catch((e) => {}) } } function displayEnv() { var domainEnvs = { 'localhost': 'Dev', 'local.crewsware.com': 'Dev', 'mtest.crewsware.com': 'Test', 'm.crewsware.com': false //Not to show the Environment } var hostname = window.location.hostname; if( hostname in domainEnvs && domainEnvs[hostname]) { $(""+domainEnvs[hostname]+"").insertAfter('#cw_wm'); } } function idbReloadHTML(html) { return new Promise((resolve, reject) => { var url=idb.handler+"?"+ html + "&eid="+idb.authCheck.eid+ "&userid="+idb.authCheck.userid+ "&auth="+idb.authCheck.auth + "&group="+idb.authCheck.group+ "&devid="+idb.authCheck.devid+ "&preload="+idb.preload; $.getJSON(url,(hdata) => { hdata.VARS.src=url; transaction = idb.dbh.transaction(["elogSync"], "readwrite"); objectStore = transaction.objectStore("elogSync"); var updateHtml = objectStore.put({ Action: html, TIMESTAMP: hdata.VARS.TIMESTAMP, HTML: hdata.HTML, VARS: hdata.VARS }); updateHtml.onsuccess = () => { return resolve(hdata); }; updateHtml.onerror = (event) => { return reject({"error": "Failed to update local DB."}); } }).fail(() => { return reject({"error": "Failed to retrive html for " + html + "."}); }); }); } async function cc_init() { // $("#crow_CAD").width($("#crow_USD").width()); prefs=await getRec("elogSync","ccPrefs"); if (typeof(prefs)=='undefined') { prefs={Action:'ccPrefs'}; prefs.main={ iso_country:'CA', iso:'CAD' }; prefs.list=[ {iso_country:"US" ,iso:"USD"} // {iso_country:"US" ,iso:"USD"}, // {iso_country:"GB" ,iso:"GBP"}, // {iso_country:"MX" ,iso:"MXN"}, // {iso_country:"HK" ,iso:"HKD"}, // {iso_country:"CN" ,iso:"CNP"} ]; prefs.amt=10; prefs.fee=.02; putRec("elogSync","ccPrefs",prefs); } if (typeof(cc_init.cfocus)=='undefined') { cc_init.cfocus={iso:false,iso_country:false}; } if (cc_init.cfocus.iso) { iadd=true; for (c in prefs.list) { if ((prefs.list[c].iso==cc_init.cfocus.iso)&&(prefs.list[c].iso_country==cc_init.cfocus.iso_country)) { iadd=false; break; } } if (iadd) { prefs.list.push({iso_country:cc_init.cfocus.iso_country,iso:cc_init.cfocus.iso}); putRec("elogSync","ccPrefs",prefs); } } var rates=cc_init.rates; var main_rate; for (i in rates) { if (rates[i].iso!=prefs.main.iso) { continue; } main_rate=rates[i]; main_rate.offset=i; break; } var crow=function(ir,icl) { var c=rates[ir]; var rid="crow_"+c.iso_country+"_"+c.iso; var bmi=""; if (c.bmi) { var bmcp=c.bmcp/(1-(ir==main_rate.offset?0:prefs.fee)); var bmi=main_rate.bmcp/bmcp; bmi="
=$"+bmcp.toFixed(2)+" "+ (c.iso!='CAD'?"1:"+bmi.toFixed(2)+"":"")+ "
"; } var cr="
"+ "
"+ "
"+ "
"+c.country+"
"+ "
"+ (c.iso_flag?"
":"")+ c.iso+" ("+c.cname+")"+bmi+ "
"+ "
"+ "
"+ "
"+ "
"+ "
"+ (c.commodity?'$/':'')+ c.csymbol+ "
"+ "
"; return(cr); }; var ivals=function(obj) { c=rates[$(obj).attr("data-offset")]; var xv; if (c.commodity) { xv=1/c.exchange*(1-prefs.fee); $(obj).attr("data-ro",1); } else { $(obj).attr("data-ro",0); xv=c.exchange*prefs.amt*(c.iso!=prefs.main.iso?1-prefs.fee:1); } var exp=6; while (xv < 10**exp) { exp--; } var dc; if (exp>2) { dc=0; } else if (exp>-2) { dc=2; } else { dc=5; } // console.log(xv+" "+exp+" "+(10**exp)); $(obj).attr("data-xv",xv); xv=xv.toFixed(dc); if (xv>=1000) { xv=xv.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } $(obj).html(xv); }; var feeslider=function() { $("#cc_slider").css({left: ((prefs.fee/.10*280)+5)+"px"}); $("#cc_tail").width(prefs.fee/.10*290); $(".cc_fee").html((prefs.fee*100).toFixed(1)+"%"); }; var cheads=function() { var cnt={}; $(".cc_cdiv").each(function() { i=$(this).attr("data-sort"); io=$(this).attr("data-isfav")*1; if (typeof(cnt[i])=='undefined') { cnt[i]=0; } if (! io) { cnt[i]++; } }); $(".cc_chead").each(function() { if (cnt[$(this).attr("data-sort")]) { $(this).show(); } else { $(this).hide(); } }); }; cch="
"; // Main Currency cch+="
"+crow(main_rate.offset,'')+ ""+ "
"; // Favorites cch+="
"; cch+="
"+ ""+ " Add Currencies"+ "
"+ ""+ "
Rates as of "+cc_init.asof+"
"+ "
Conversion Fee
"+ "
"+ "
"; // console.log("list:"+JSON.stringify(prefs.list)); var isfav={}; usew=""; var jump=false; for (c in prefs.list) { for (i in rates) { if (rates[i].iso==prefs.main.iso) { continue; } if ((rates[i].iso_country==prefs.list[c].iso_country)&&(rates[i].iso==prefs.list[c].iso)) { cch+="
"+crow(i,'cc_drow')+"
"; usew=rates[i].iso_country+"_"+rates[i].iso; isfav[usew]=1; } if ((prefs.list[c].iso==cc_init.cfocus.iso)&&(prefs.list[c].iso_country==cc_init.cfocus.iso_country)) { jump="crow_"+prefs.list[c].iso_country+"_"+prefs.list[c].iso; } } } cc_init.cfocus={iso:false,iso_country:false}; // console.log(JSON.stringify(isfav)); cch+="
"; cch+=""; cch+="
"; cch+=""; $("#cconv").html(cch); cheads(); feeslider(); $(".cc_row").attr("data-isfav",0); for (i in isfav) { $("#crow_"+i).attr("data-isfav",1); } $(".cc_input").each(function() { ivals(this); }); // console.log("usew:"+usew); // $("#ccContainer").css({'padding-bottom':$(window).height()}); if (usew) { $("#crow_CA_CAD").width($("#crow_"+usew).width()); $(".cc_clabel").width($("#crow_"+usew).width()-185); } $(".cc_input").unbind(); $(".cc_input").click(function() { obj=this; if ($(obj).attr("data-ro")*1) { return; } if ($(obj).attr("data-edit")*1) { return; } $(".cc_input").attr("data-edit",0); $(obj).attr("data-edit",1); c=rates[$(obj).attr("data-offset")]; args={ target:obj, val:$(obj).attr("data-xv"), suffix:"", scrollto:$(obj).offset().top-$(window).height()+$(obj).outerHeight()+5, onset:function(val) { nv=val*1; if (c.iso!=prefs.main.iso) { nv/=(c.exchange*(1-prefs.fee)); } prefs.amt=nv; putRec("elogSync","ccPrefs",prefs); $(".cc_input").each(function() { ivals(this); }); $(obj).attr("data-edit",0); // console.log(c.iso+" "+nv+" "+val+" "+$(obj).attr("data-xdiv")); } }; numberpad(args); }); $("#cc_addbtn").unbind(); $("#cc_addbtn").click(function() { $("#cc_fav").hide(); $("#cc_nonfav").show(); $("#numberpad").detach(); $("#cc_done").show(); cc_init.refresh=false; }); $("#cc_donebtn").unbind(); $("#cc_donebtn").click(function() { if (cc_init.refresh) { cc_init(); } else { $("#cc_fav").show(); $("#cc_nonfav").hide(); $("#numberpad").detach(); $("#cc_done").hide(); $(window).scrollTop(0); } }); $("#cc_slider").unbind(); $("#cc_slider").draggable({ containment:'parent', axis:'x', drag: function(event,ui) { prefs.fee=Math.round(ui.position.left/272*20)/200; feeslider(); }, stop: function(event,ui) { putRec("elogSync","ccPrefs",prefs); $(".cc_input").each(function() { ivals(this); }); } }); $(".cc_drow").unbind(); $(".cc_drow").draggable({ handle: '.XXcc_clabel, .flags', containment: [ 0, 0, $("#crow_CA_CAD").width(), $(document).height() ], start: function(event,ui) { dir=0; start_l=ui.position.left; start_t=ui.position.top; start_tpos=$(this).position().top; $(this).draggable('option', 'axis', ($(this).attr("data-isfav")*1?'':'x')); $(this).attr("data-dconf",0); $(this).css({'z-index':2}); }, drag: function(event,ui) { if (! dir) { ld=ui.position.left-start_l; td=Math.abs(ui.position.top-start_t); if (ld>10||td>10) { if (ld>td) { $(this).draggable('option', 'axis', "x"); dir="l"; } else { $(this).draggable('option', 'axis', "y"); dir="t"; } } } else if (dir=='l') { $(window).scrollLeft(0); ld=ui.position.left-start_l; if (ld.25?($(this).attr("data-isfav")*1?1:2):0)); } }, stop: function(event,ui) { if ($(this).attr("data-dconf")*1) { $(this).fadeOut(600,function() { foo=this.id.split("_"); if ($(this).attr("data-isfav")*1) { prefs.list=prefs.list.filter(function(iarr) { if ((iarr.iso_country==foo[1])&&(iarr.iso==foo[2])) { return(false); } return(true); }); $("#"+this.id.replace("crow","cc")).attr("data-isfav",0); } else { prefs.list.push({iso_country:foo[1],iso:foo[2]}); $(this).attr("data-isfav",1); cc_init.refresh=true; } cheads(); putRec("elogSync","ccPrefs",prefs); $(this).detach(); $("#loading").hide(); }); } else if (dir=='t') { tid=this.id; $("#loading").show(); $(this).fadeOut(600,function() { blid={abv:[],blo:[]}; $(".cc_row[data-isfav='1']").each(function() { // console.log(this.id+" "+$(this).position().top+" "+(start_tpos+ui.position.top)); if ((this.id!=tid)&&($(this).position().top <= start_tpos+ui.position.top)) { foo=this.id.split("_"); blid.abv.push({iso_country:foo[1],iso:foo[2]}); } if ((this.id!=tid)&&($(this).position().top > start_tpos+ui.position.top)) { foo=this.id.split("_"); blid.blo.push({iso_country:foo[1],iso:foo[2]}); } }); nitems=[]; foo=tid.split("_"); for (i in blid.abv) { nitems.push(blid.abv[i]); } nitems.push({iso_country:foo[1],iso:foo[2]}); for (i in blid.blo) { nitems.push(blid.blo[i]); } prefs.list=nitems; putRec("elogSync","ccPrefs",prefs); // console.log("==> "+JSON.stringify(nitems)); $(this).detach(); cc_init(); }); } else { $("#loading").hide(); $(this).css({'z-index':'auto',left:start_l,top:start_t}); } // ui.position.top=start_t; } }); if (jump) { // console.log("Jump:"+jump+" "+$("#"+jump).position().top); $(window).scrollTop($("#"+jump).position().top); } else { $(window).scrollTop(0); } w=$(window).width()-45-85-35-65; $(".cc_clabel").css({'max-width':w}); $("#loading").hide(); } function crewrest_sblb() { // sbs, sbe var ret={}; var lblen; var sblen; var tblen; var sbs; var sbe; var lbl; var sbl; var day=24*3600*1000; sblen=crewRest.cfg.tod.getTime()-crewRest.cfg.toc.getTime(); console.log(sblen+" tod:"+crewRest.cfg.tod+" toc:"+crewRest.cfg.toc); if (sblen>day) { sblen-=day; } else if (sblen < 0) { sblen+=day; } sblen-=(crewRest.cfg.pdb*60*1000); console.log("tod:"+crewRest.cfg.tod+" toc:"+crewRest.cfg.toc); sblen-=(sblen%60*1000); tblen=sblen; sblen/=crewRest.cfg.nbr*crewRest.cfg.nteams; sbs=new Date(2000,0,1,0,0,0,0); sbe=new Date(2000,0,1,0,0,0,0); sbe.setTime(sbe.getTime()+sblen); if ((! crewRest.cfg.sblen)||(crewRest.cfg.sblen>sbe)) { crewRest.cfg.sblen=timeCopy(sbe); } ret.maxsb=sblen; lbl=new Date(2000,0,1,0,0,0,0); sblen=crewRest.cfg.sblen.getTime()-sbs.getTime(); ret.sblen=sblen; sbc=0; for (i=0;i0) { foo=[3600,60,1]; itime=[]; for (i=0;i<3;i++) { r=Math.floor(tr/foo[i]); tr-=r*foo[i]; if (i) { r=("00"+r).substr(-2); } itime[i]=r; } $("#cr_time_r").html(itime.join(":")); } else { $("#cr_time_r").html("Landed"); } if (crewRest.cfg.timerstarted) { dt=new Date(); et=dt.getTime()-crewRest.cfg.timerstarted.getTime(); h=0; io=0; $(".cr_tddur").each(function() { dur=$(this).attr("data-dur")*1; if (iotod_end)) { tod_st.setDate(tod_st.getDate()+1); tod_end.setDate(tod_end.getDate()+1); } console.log("TOC:"+toc+" "+toc_st+" "+toc_end); console.log("TOD:"+tod+" "+tod_st+" "+tod_end); stime=new Date(2000,0,1,0,45,0,0); fbtime=new Date(2000,0,1,0,5,0,0); var data={ Action:'crewRest', start:dt, end:end, landing:ltime, utcoffset:utco, toc:toc, toc_st:toc_st, toc_end:toc_end, tod:timeCopy(tod), tod_st:tod_st, tod_end:tod_end, srem:1, stime1:timeCopy(stime), stime2:timeCopy(stime), psb:0, nbr:2, bls:[0,0,0], pbb:0, pdb:0, bp:"0", pbp:[], nteams:2, sblen:0, fbtime:fbtime, timerstarted:0, zulu:zulu }; // console.log("Putrec:"+JSON.stringify(data)); i=await putRec("elogSync","crewRest",data); crewRest.cfg=data; } if (crewRest.cfg.timerstarted) { crewRest('recalculate'); $("#cr_configpanel").hide(); $("#cr_respanel").show(); } else { $("#cr_configpanel").show(); $("#cr_respanel").hide(); } crewRest("initcalc"); } if (cmd=='timecalc') { crewRest('initcalc'); } if ((cmd=='initcalc')&&(idb.authCheck.group=='ACIF')) { $(".num_keypad").detach(); $(".cr_srem").attr("data-on",0); $("#cr_srem_"+crewRest.cfg.srem).attr("data-on",1); if (crewRest.cfg.srem>1) { $("#cr_slider_stime2").show(); } else { $("#cr_slider_stime2").hide(); } $(".cr_psb").attr("data-on",0); $("#cr_psb_"+crewRest.cfg.psb).attr("data-on",1); $(".cr_nbr").attr("data-on",0); $("#cr_nbr_"+crewRest.cfg.nbr).attr("data-on",1); $(".cr_pbb").attr("data-on",0); $("#cr_pbb_"+crewRest.cfg.pbb).attr("data-on",1); tsz=new Date(2000,0,1,0,0,0,0); tss=new Date(2000,0,1,0,30,0,0); tse=new Date(2000,0,1,2,30,0,0); if (crewRest.cfg.srem<2) { $("#cr_breakpattern").hide(); } else { ibp=crewRest.cfg.bp+""; if (ibp.substr(0,1)!=crewRest.cfg.nbr) { ibp=crewRest.cfg.nbr+"1"; // console.log(ibp.substr(0,1)+" - "+crewRest.cfg.nbr+" = "+ibp); crewRest.cfg.bp=ibp; // console.log("Initcalc_BP putrec"); await putRec("elogSync","crewRest",crewRest.cfg); } $(".cr_bpg").hide(); $("#cr_bpg_"+crewRest.cfg.nbr).show(); $(".cr_bp").attr("data-on",0); $("#cr_bp_"+ibp).attr("data-on",1); if (crewRest.cfg.nbr<3) { $("#cr_breakpattern").hide(); } else { $("#cr_breakpattern").show(); } } timeslider({ prefix:"tr", dvar:"landing", div:"cr_time_l", utc:1, st:timeCopy(crewRest.cfg.start), end:timeCopy(crewRest.cfg.end), stime:timeCopy(crewRest.cfg.landing), title:"Landing Time" }); timeslider({ prefix:"stime1", dvar:"stime1", div:"cr_time_stime1", utc:0, st:timeCopy(tss), end:timeCopy(tse), stime:timeCopy(crewRest.cfg.stime1), title:"Service 1 Length" }); timeslider({ prefix:"stime2", dvar:"stime2", div:"cr_time_stime2", utc:0, st:timeCopy(tss), end:timeCopy(tse), stime:timeCopy(crewRest.cfg.stime2), title:"Service 2 Length" }); timeslider({ prefix:"fbtime", dvar:"fbtime", div:"cr_time_fbtime", utc:0, st:timeCopy(tsz), end:timeCopy(tse), stime:timeCopy(crewRest.cfg.fbtime), title:"First Break Begins In" }); if (! crewRest.cfg.timerstarted) { $("#cr_viewtable").hide(); precheck=await crewRest('precheck'); if (precheck<5) { $("#cr_timealert").show(); $("#cr_calculate").hide(); } else { $("#cr_timealert").hide(); $("#cr_calculate").html("Calculate Breaks"); $("#cr_calculate").show(); } } else { $("#cr_calculate").html("Re-Calculate Breaks"); $("#cr_viewtable").show(); } } if ((cmd=='initcalc')&&(idb.authCheck.group=='ACP')) { // console.log("HERE "+idb.authCheck.group); $(".num_keypad").detach(); $(".cr_nbr").attr("data-on",0); $("#cr_nbr_"+crewRest.cfg.nbr).attr("data-on",1); $(".cr_nteams").attr("data-on",0); $("#cr_nteams_"+crewRest.cfg.nteams).attr("data-on",1); $(".cr_pdb").attr("data-on",0); $("#cr_pdb_"+crewRest.cfg.pdb).attr("data-on",1); ist=timeCopy(crewRest.cfg.start); ist.setTime(ist.getTime()-(2*3600*1000)); iend=timeCopy(crewRest.cfg.start); iend.setTime(iend.getTime()+(2*3600*1000)); s=0; if (crewRest.cfg.nbr < 2) { $("#cr_bls").hide(); $("#cr_sblen").hide(); $("#cr_lblen").show(); crewRest.cfg.bls=[0,0,0]; } else { $("#cr_bls").show(); $(".cr_bls").show(); s=0; sbc=0; for (i=1;i<=crewRest.cfg.nbr;i++) { s+=crewRest.cfg.bls[i-1]; if (s>=crewRest.cfg.nbr) { crewRest.cfg.bls[i-1]=0; } sbc+=crewRest.cfg.bls[i-1]; $("#cr_bls_"+i).attr("data-length",(crewRest.cfg.bls[i-1]?"s":"l")); } for (i=crewRest.cfg.nbr+1;i<=3;i++) { $("#cr_bls_"+i).hide(); } if (s) { $("#cr_sblen").show(); $("#cr_lblen").hide(); } else { $("#cr_sblen").hide(); $("#cr_lblen").show(); } } var sblb=crewrest_sblb(); console.log(JSON.stringify(sblb)); bpr=""; tid=["","A","B","C"]; if (crewRest.cfg.pbp.length!=crewRest.cfg.nteams*crewRest.cfg.nbr) { crewRest.cfg.pbp=[]; for (i=0;iLengthStartEnd"+ ((crewRest.cfg.nbr>1&&crewRest.cfg.nteams>2)?"/
To Next":"")+ ""; for (io in brks) { n=0; for (i=(io*1)+1;i2)) { nbx=new Date(2000,0,1,0,0,0,0); nbx.setTime(nbx.getTime()+n.getTime()-brks[io].end.getTime()); brks[io].tonext=nbx.toTimeString().substr(1,4) } ic=(brks[io].ls?"s":"l"); bpr+="
"+ "
"+tid[brks[io].team]+" #"+brks[io].brk+"
"+ "
"; bpr+=""+(crewRest.cfg.pbp[io]?sblb.sb_txt:sblb.lb_txt)+""; bpr+=""+brks[io].st.toTimeString().substr(0,5)+"z"; bpr+=""+brks[io].end.toTimeString().substr(0,5)+"z"+ (brks[io].tonext?"
"+brks[io].tonext:"")+""; } bpr+=""; $("#cr_pat").html(bpr); $(".cr_blsb").click(function() { foo=[]; b=$(this).attr("data-break")*1; t=$(this).attr("data-team")*1; for (i=b+1;i<=crewRest.cfg.nbr;i++) { foo.push(i-1); } for (i=1;iLengthStartEnd"; for (i in pat) { if (pat[i]=="d") { dur=cfg.fbtime.getTime()-tsz.getTime(); // itab+="
First Break Starts: "+(dur/msm)+" mins
"; itab+=""; toff+=dur; continue; } itab+=""; if (pat[i]=="b") { if ((cfg.pbb)&&(brk>1)) { dur=cfg.pbb*msm; itab+=""+ "
Pre-Break Buffer "+cfg.pbb+" mins
"; toff+=cfg.pbb*msm; } itab+=""; dur=bl; itab+=""+ "#"+brk+""; itab+=""+ms2time(dur)+""; idate=new Date(); idate.setTime(ct.getTime()+(cfg.utcoffset*msm*60)+toff); itab+=""+idate.toTimeString().substr(0,5)+""; idate.setTime(ct.getTime()+(cfg.utcoffset*msm*60)+toff+dur); itab+=""+idate.toTimeString().substr(0,5)+""; toff+=dur; brk++; itab+=""; } if (pat[i]=="s") { if (cfg.psb) { dur=cfg.psb*msm; itab+=""+ "
Pre-Service Buffer "+cfg.psb+" mins
"; } itab+=""; toff+=cfg.psb*msm; dur=cfg["stime"+serv].getTime()-tsz.getTime(); itab+=""+ "#"+serv+""; itab+=""+ms2time(dur)+""; idate=new Date(); idate.setTime(ct.getTime()+(cfg.utcoffset*msm*60)+toff); itab+=""+idate.toTimeString().substr(0,5)+""; idate.setTime(ct.getTime()+(cfg.utcoffset*msm*60)+toff+dur); itab+=""+idate.toTimeString().substr(0,5)+""; toff+=dur; serv++; itab+=""; } } itab+=""; $("#cr_resttable").html(itab); $("#cr_configpanel").hide(); $("#cr_respanel").show(); $("#cr_calculate").html("Re-calculate Breaks"); $("#cr_viewtable").show(); if ($("#cr_table_hr").length) { $("#cr_table_progress").width($("#cr_table_hr").outerWidth()); $("#cr_table_progress").css({top:$("#cr_table_hr").position().top+$("#cr_table_hr").outerHeight(),left:$("#cr_table_hr").position().left}); } idate=new Date(); idate.setTime(cfg.timerstarted.getTime()+(cfg.utcoffset*msm*60)); $("#cr_time_ts").html(idate.toTimeString().substr(0,5)); } } var eLogHelpContent = { "SectorLog": { "title": "Sector log", "HTML": `

Sector Log flights are highlighted in yellow. These are Pending sectors that are waiting for you to upload your associated flight & pay summary. Once you upload, the Day, Night will be generated and the sector will be completed.

Please note that Day and Night that is listed on your summary is not the true day and night as defined by CARs, rather it’s the contractual day and night for pay purposes only. Transport Canada will not recognise the pay summary day and night as valid.

` } } async function elog_init() { $(".elog_edit").unbind(); $(".plink").unbind(); $("#exitMonth").unbind(); $(".itr").unbind(); $(".elog_edit").keyup(function(event) { if (event.keyCode==13) { elog_change(this); return; } if ($(this).val()!=$(this).attr("data-v")) { $(this).attr("data-changed",1); } $(this).attr("data-v",$(this).val()); }); // $(".elog_edit").focus(function() { console.log("focus:"+this.id); }); $(".elog_edit").blur(function(event) { // console.log("blur:"+this.id); if ($(this).attr("data-changed")==1) { elog_change(this); } }); $("#exitMonth").click(function() { if (elog_sectors.changes) { idb("display_elog","DB"); return; } $("#elogSearch").val(""); $("#resultsPanel").hide(); $("#flightMonth").hide(); $("#flightSummary").show(); }); $("#btn_sector_log").unbind(); $("#btn_sector_log").click(function(){ //Sector Log button click sector_log(); }); $(".plink").click(function() { menuHandler.history.push(idb.currentView); elog_sectors.changes=false; elog_sectors({type:$(this).attr("data-type"),val:$(this).attr("data-val"),year:$(this).attr("data-year"),month:$(this).attr("data-month")}); }); $(".yp_menu").click(function() { $(".yp_menu").attr("data-on",0); $(this).attr("data-on",1); $(".esection").hide(); $("#ypanel_"+$(this).attr("data-section")).show(); }); $(".itr").click(function() { var tstamp = new Date(); tstamp = dtString(tstamp); if ($(this).attr("data-open") * 1) { return; } $(".itr").attr("data-open", 0); $(".logedit").detach(); $(".itr").css({height: 'auto'}); if (elog_sectors.results[$(this).attr("data-offset")].SRC == 'users') { return; } elog_offset = $(this).attr("data-offset"); iid = this.id; e = iid.substr(-1); oid = iid.replace(e, (e == 'R' ? 'L' : 'R')); rdiv = document.getElementById((e == 'R' ? iid : oid)); ldiv = document.getElementById((e == 'R' ? oid : iid)); $(ldiv).attr("data-open", 1); $(rdiv).attr("data-open", 1); if (!/^s/.test(this.id)) { html = elog_sectoredit(elog_sectors.results[$(this).attr("data-offset")]); lw = $(ldiv).width(); rw = $(rdiv).width(); $(ldiv).append(html['l']); $(rdiv).append(html['r']); $("#logedit_l").width(lw - 10); $(window).scrollLeft(0); $(".elog_editbtn").unbind(); $(".elog_editbtn").click(function () { event.stopPropagation(); jqf = ".elog_editbtn[data-group='" + $(this).attr("data-group") + "']"; io = ($(this).attr("data-on") * 1 ? 0 : 1); $(jqf).attr("data-on", 0); $(this).attr("data-on", io); }); $("#logedit_cancel").click(function () { event.stopPropagation(); elog_sectors('redraw'); elog_init(); return; }); $("#logedit_undo").click(async function () { event.stopPropagation(); cf = ($(this).attr("data-confirm") * 1 ? 1 : 0); if (!cf) { $(this).attr("data-confirm", 1); $(this).html("Click to Confirm"); $(this).mouseleave(function () { $(this).attr("data-confirm", 0); $(this).html("Clear Changes"); }); return; } var v = {}; for (i in elog_sectors.results[elog_offset]) { w = 0; if (i.substr(0, 4) == 'MOD_') { elog_sectors.results[elog_offset][i] = null; w++; } if (i == 'modified') { elog_sectors.results[elog_offset][i] = 0; w++; } } d = await putRec("elogData", elog_sectors.results[elog_offset].LSD_recordid, elog_sectors.results[elog_offset]); var data = { cmd: 'elog_mod', action: 'elog_undo', FlightKey: elog_sectors.results[elog_offset].FlightKey, tstamp: tstamp }; d = await putRec("elogUpdates", 0, data); sendChanges(1, 0); // console.log(elog_offset+" -> "+JSON.stringify(elog_sectors.results[elog_offset])); elog_sectors.changes = true; elog_sectors('redraw'); elog_init(); return; }); $("#elog_fin").blur(async function () { // pad fin with leading 0 fin = ("0000" + $("#elog_fin").val()).substr(-4, 4); $("#elog_fin").val(fin); $.ajax({ url: '/php/handler.php?getreg=1&fin=' + fin, type: 'get', datatype: 'html', async: false, success: function (resp) { if (resp != "") { $("#elog_reg").html(resp); } }, error: function (xhr, ajaxOptions, thrownError) { iserr = 1; } }); }); $("#logedit_save").click(async function () { event.stopPropagation(); var vals = { AC_Fin: $("#elog_fin").val(), AC_Reg: $("#elog_reg").html(), Position: "", TO: 0, LND: 0, RS: 0, PIC: $("#elog_pic").val(), Crew: $("#elog_crew").val(), note: $("#elog_note").val(), modified: 1 }; $(".elog_toland").each(function () { vals[$(this).attr("data-val")] = $(this).attr("data-on") * 1; }); $(".elog_seat").each(function () { if ($(this).attr("data-on") == 1) { vals.Position = $(this).attr("data-val"); } }); for (iv in vals) { elog_sectors.results[elog_offset]["MOD_" + iv] = vals[iv]; } vals.cmd = 'elog_mod'; vals.action = 'elog_change'; vals.FlightKey = elog_sectors.results[elog_offset].FlightKey; vals.tstamp = tstamp; d = await putRec("elogData", elog_sectors.results[elog_offset].LSD_recordid, elog_sectors.results[elog_offset]); d = await putRec("elogUpdates", 0, vals); sendChanges(1, 0); // console.log(elog_offset+" -> "+JSON.stringify(elog_sectors.results[elog_offset])); elog_sectors.changes = true; elog_sectors('redraw'); elog_init(); return; }); } else { sectorLog.addEditorForm(elog_offset, () => { elog_sectors('redraw'); elog_init(); return; }); } }); } async function elog_summary(src) { if (! $("#elogSearch").length) { $("#flightSummary").html( "
"+ "
"+ "
Sector Log
"+ "
My Globe
"+ "
"+ "
"+ "
"+ "
"+ ""+ "
"+ "
"+ ""+ "
"+ "
"+ "
"+ ""+ "
" ); $("#elogSearch").keydown(function(event) { if (event.keyCode==13) { $("#elogSearch").blur(); elog_search(); } }); } idb.writing=true; var objectStore = idb.dbh.transaction("elogData").objectStore("elogData"); divs=""; if (src=='LOCAL') { // console.log("HERE "+src); setDatasource("LOCAL"); // $("#OlightSummary").html("
"+idb.src+"
"); } cols=[ {title:"Period",width:80,k:"period"}, {title:"Takeoffs",width:80,k:"takeoffs"}, {title:"Landings",width:80,k:"landings"}, {title:"Landings",width:80,k:"time"}, ]; var myIndex = objectStore.index('Depart'); var ydivs={}; var periods=[]; var edivs={}; var equiplist=[]; var yearlist=[]; var stnlist={}; var ccount=0; var globeStartYear=99999; var globeEndYear=0; var globeData=[]; var globeYearData={}; var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var elog_summary_display = () => { d=""; ly=0; divs=[]; divc=0; scount=0; equiplist.sort(function(a,b) { if (a.positionb.position) { return(1); } if (a.equipb.equip) { return(1); } return(0); }); if (typeof(edivs['ALL'])=='undefined') { spanels=[]; } else { yearlist.sort((a,b) => b.year - a.year); spanels=[ {title:"Equipment",arr:equiplist,name:"equip"}, {title:"Year",arr:yearlist,name:"year"} ]; } periods.sort(function(a,b){ return (b.p * 1) - (a.p * 1); }); $(".showGlobeBtn").attr("data-globe", JSON.stringify(globeData)); var globeTitle = "Years: " + globeStartYear + " to " + globeEndYear; if ( globeStartYear == globeEndYear) { globeTitle = "Year: " + globeStartYear; } if (globeStartYear === 99999 || globeEndYear === 0) { globeTitle = "My Globe"; } $(".showGlobeBtn").attr("data-globe-title", globeTitle); for (ipanel in spanels) { p=spanels[ipanel]; spanel="
"+ "
"+p.title+" Summary
"+ "
"+ "
"+p.title+"
"+ "
Flights
"+ "
Takeoffs
"+ "
Landings
"+ "
Time
"+ "
"; for (i in p.arr) { eq=p.arr[i].ivar; if (p.name=='year') { d="data-type='Depart' data-month='' data-year='"+eq+"'"; } else { d="data-type='PosAC' data-val='"+eq+"'"; } spanel+=""; } spanel+="
"+ "
Total
"+ "
"+edivs['ALL'].flights+"
"+ "
"+edivs['ALL'].takeoffs+"
"+ "
"+edivs['ALL'].landings+"
"+ "
"+m2h(edivs['ALL'].time," ")+"
"+ "
"; spanel+="
"; if ($("#ypanel_"+p.name).length) { $("#ypanel_"+p.name).replaceWith(spanel); } else { $("#flightSummary").append("
"+spanel+"
"); } } foo=Object.keys(stnlist); foo.sort(); spanel="
"+ "
Airport Summary
"+ "
"+ "
Station
"+ "
Count
"+ "
Date Range
"+ "
"; for (i in foo) { if (! foo[i]) { continue; } istn=stnlist[foo[i]]; ist=months[(istn['st'].substr(5,2)-1)].substr(0,3)+" "+istn['st'].substr(0,4); iend=months[(istn['end'].substr(5,2)-1)].substr(0,3)+" "+istn['end'].substr(0,4); rng=ist+(iend==ist?"":" - "+iend); // console.log("stn:"+foo[i]+" "+stnlist[foo[i]]['count']+" "+rng); spanel+=""; } spanel+="
"; if ($("#ypanel_stns").length) { $("#ypanel_stns").replaceWith(spanel); } else { $("#flightSummary").append("
"+spanel+"
"); } if (! $("#ypanel_months").length) { $("#flightSummary").append("
"); } for (p in periods) { p=periods[p]; if (p.year!=ly) { divs.push({year:p.year,html:''}); } divs[divs.length-1].html+=""; ly=p.year; scount++; } html=""; for (i in divs) { var hidePanelClass = 'hide-ypanel'; if (i < 2) { hidePanelClass = ''; } panel="
"+ "
" + "
" + "" + "
" + "
"+ "
"+ "
"+ "
Month
"+ "
Flights
"+ "
Takeoffs
"+ "
Landings
"+ "
Time
"+ "
"+ divs[i].html+ ""+ "
"+ "
"; if ($("#ypanel"+divs[i].year).length) { $("#ypanel"+divs[i].year).replaceWith(panel); } else { yp=[]; $(".ypanel").each(function() { yp.push(this.id); }); ok=0; for (ii in yp) { if (yp[ii]<"ypanel"+divs[i].year) { ok=1; $("
"+panel+"
").insertBefore($("#"+yp[ii])); break; } } if (! ok) { $("#ypanel_months").append("
"+panel+"
"); $("#flightSummary").show(); } } } if (src!='DB') { setDatasource("LOCAL"); if (! scount) { $("#dataAlert").html(" No stored data, loading from Crewsware
"); $("#dataAlert").show(); } } else { setDatasource("DB"); if (! scount) { $("#dataAlert").html(" Can't get data from Crewsware, please try back later."); $("#dataAlert").show(); } } if (scount) { $("#dataAlert").hide(); $("#ypanel_menu").show(); } $(".esection").hide(); $("#ypanel_months").show(); $(".yp_menu").attr("data-on",0); $("#yp_menu_months").attr("data-on",1); $(".showGlobeBtn").off(); $(".showGlobeBtn").on("click", function () { var globeTitle = "My Globe"; if (typeof $(this).data('globe-title') !== 'undefined') { globeTitle = $(this).data('globe-title'); } GlobeMapBox.show($(this).data('globe'), globeTitle); }); $(".toggle-year-ypanel").off(); $(".toggle-year-ypanel").on("click", function () { $(this).closest(".ypanel").toggleClass("hide-ypanel"); }); setView('display') elog_init(); idb.writing=false; } var classificationLog = (vals) => { y=vals.Depart.substr(0,4); m=vals.Depart.substr(5,2); if (!('IsDH' in vals) || !vals.IsDH) { // console.log(y+" "+m); if (typeof (ydivs[y]) == 'undefined') { ydivs[y] = {}; } if (typeof (ydivs[y][m]) == 'undefined') { ydivs[y][m] = {period: y + " " + m, flights: 0, takeoffs: 0, landings: 0, time: 0}; periods.push({year: y, month: m, p: y + "" + m}); } i_to = (vals.MOD_TO != null ? vals.MOD_TO : vals.TO); i_lnd = (vals.MOD_LND != null ? vals.MOD_LND : vals.LND); i_pos = (vals.MOD_Position != null ? vals.MOD_Position : vals.Position); i_eq = (vals.MOD_AC_Equip != null ? vals.MOD_AC_Equip : vals.AC_Equip); //eq=i_pos+" "+vals.AC_Equip; eq = (i_eq != null) ? i_pos + " " + i_eq : i_pos; if (typeof (edivs[eq]) == 'undefined') { equiplist.push({ivar: eq, eq: eq, position: i_pos, equip: i_eq}); } if (typeof (edivs[y]) == 'undefined') { yearlist.push({ivar: y, year: y}); } ydivs[y][m].flights++; ydivs[y][m].takeoffs += i_to; ydivs[y][m].landings += i_lnd; ydivs[y][m].time += vals.DNTotal; m = 'ALL'; if (typeof (ydivs[y][m]) == 'undefined') { ydivs[y][m] = {period: "Total", flights: 0, takeoffs: 0, landings: 0, time: 0}; } ydivs[y][m].flights++; ydivs[y][m].takeoffs += i_to; ydivs[y][m].landings += i_lnd; ydivs[y][m].time += vals.DNTotal; vlist = [eq, y, "ALL"]; for (i in vlist) { iv = vlist[i]; if (typeof (edivs[iv]) == 'undefined') { edivs[iv] = {equip: eq, flights: 0, takeoffs: 0, landings: 0, time: 0}; } edivs[iv].flights++; edivs[iv].takeoffs += i_to; edivs[iv].landings += i_lnd; edivs[iv].time += vals.DNTotal; } if (typeof (stnlist[vals.A_Stn]) == 'undefined') { stnlist[vals.A_Stn] = {stn: vals.A_Stn, st: vals.Depart, end: vals.Depart, count: 0}; } if (vals.Depart < stnlist[vals.A_Stn].st) { stnlist[vals.A_Stn].st = vals.Depart; } if (vals.Depart > stnlist[vals.A_Stn].end) { stnlist[vals.A_Stn].end = vals.Depart; } stnlist[vals.A_Stn].count++; } var gdata = { "source": vals.D_Stn, "destination": vals.A_Stn, "date": formatGlobeDate(vals.Depart), "dh": vals.IsDH, "aircraft": vals.Aircraft }; if (!(y in globeYearData)) { globeYearData[y] = []; } globeData.push(gdata); globeYearData[y].push(gdata); globeStartYear = globeStartYear > y ? y : globeStartYear; globeEndYear = globeEndYear < y ? y : globeEndYear; } myIndex.openCursor(null,'prev').onsuccess = function(event) { var cursor = event.target.result; if (cursor) { ccount++; classificationLog(cursor.value); cursor.continue(); } else { sectorLog.getLogs() .then((logs) => { logs.forEach((log) => { classificationLog(log); }); elog_summary_display(); }) .catch((err) => { elog_summary_display(); }) } }; } function elog_sectoredit(vals) { // console.log(JSON.stringify(vals)); var html={}; var r='r'; var l='l'; var c=''; var seats={CA:'CA',FO:'FO',RP:'RP',AUG:'Augment'}; var tland={TO:"T/O",LND:"Land",RS:"Right Seat"}; for (i in vals) { if ((i.substr(0,3)=='MOD')&&(vals[i]!=null)) { vals[i.substr(4)]=vals[i]; } } // console.log(JSON.stringify(vals)); foo=vals['Crew'].split("~"); // console.log("Crew:"+vals['Crew']); for (ii in foo) { ifoo=foo[ii].split("|"); if (ifoo.length>1) { if (ifoo[1]) { c+=(c?",":"")+ifoo[0]+" "+ifoo[1]; } } else { c+=(c?",":"")+foo[ii]; } } vals['Crew']=c; foo=vals['PIC'].split("|"); vals['PIC']=foo[0]; var prow=""; var pinput="
"+ ""+ "
"; if (0) { prow="
Photo:
"; pinput="
Photo:
"; } html[l]="
"+ "
FIN:
"+ "
Position:
"+ "
T/O Landing:
"+ "
PIC:
"+ "
Other Crew:
"+ "
Remarks:
"+ prow+ "
"+ "
"; html[r]="
"; html[r]+="
"+ ""+ "  Registration: "+vals.AC_Reg.replace("'","\\'")+""+ "
"; html[r]+="
"; for (i in seats) { html[r]+="
"+seats[i]+"
"; } html[r]+="
"; html[r]+="
"; for (i in tland) { html[r]+="
"+tland[i]+"
"; } html[r]+="
"; html[r]+="
"+ ""+ "
"; html[r]+="
"+ ""+ "
"; html[r]+="
"+ ""+ "
"; //html[r]+=pinput; html[r]+="
"+ "
Cancel
"+ "
Save
"+ (vals.modified?"
Clear Changes
":""); "
"; html[r]+="
"; return(html); } function sector_log(){ sectorLog.init(); } function elog_helpScreen(obj) { iq=$(obj).attr('data-q'); $("#overlay").hide(); $("#helpscreen").hide(); if (! iq && !(iq in eLogHelpContent)) { return; } drawHelpScreen(eLogHelpContent[iq]); } function formatGlobeDate(date) { var dateDT = sectorLog.dateObj(date); return dateDT.toLocaleString(sectorLog.dtlocal, {"month": "short"}) + " " + dateDT.toLocaleString(sectorLog.dtlocal, {"day": "numeric"}) + ", " + dateDT.getFullYear().toString().substring(2, 4); } function elog_sectors(args) { if (typeof(elog_sectors.results)=='undefined') { elog_sectors.results=[]; } var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var objectStore = idb.dbh.transaction("elogData").objectStore("elogData"); var myIndex = objectStore.index('Depart'); addYear=true; iorder='prev'; if (args.type=='Depart') { dre="^"+args.year+"-"+args.month; title=(args.month?months[(args.month*1)-1]+" ":"Year: ")+args.year; fields=[args.type]; addYear=false; iorder='next'; } if (args.type=='Station') { fields=['A_Stn','D_Stn']; dre="^"+args.val+"$"; title="Station: "+args.val; } if (args.type=='PosAC') { fields=['PosAC']; dre="^"+args.val+"$"; title="Position/AircraftPosition: "+args.val; } if (args.type=='Aircraft') { fields=['AC_Reg','AC_Fin']; dre="^"+args.val+"$"; title="Aircraft: "+args.val; } if (args.type=='Crew') { fields=['PIC','Crew']; dre=args.val; title="EID: "+args.val; } if (args.type=='MOD_Crew') { fields=['MOD_Crew']; dre=args.val; title="Crew: "+args.val; } var showMonth=function(arr) { elog_sectors.results=arr; // console.log("ShowMonth:"+JSON.stringify(elog_sectors.results)); cols=['num','Date','AC_Equip','AC_Reg','AC_Fin','D_Stn', 'Depart_L','A_Stn','Arrive_L','Flightno','AC_MS', 'IFR','VFR','Day','Night', 'Position','PIC','Crew','TL','note' ]; head=[ {l:"#",span:1}, {l:"Date",span:1}, {l:"Aircraft",span:3,sub:["Type","Reg.","FIN"]}, {l:"Departure",span:2,sub:["From","UTC"]}, {l:"Arrival",span:2,sub:["To","UTC"]}, {l:"Flt #",span:1}, {l:"Multi
Single",span:1}, {l:"Flight Conditions",span:4,sub:["IFR","VFR","Day","Night"]}, {l:"Crew",span:3,sub:["Position","PIC","Other"]}, {l:"T/O
Landing",span:1}, {l:"Remarks",span:1}, ]; d="
"; d+=`
`; d+="
"+ "
"+ " Back to Summary
"+ "
"+title+"
"+ "
"+ "
"; d+="
"; d+="
"; tdata=[[],[],[],[]]; io=0; leftcols=2; rd=["",""]; for (i in head) { quad=(io1) { td="
"+head[i]['l']+"
"; for (ii in head[i]['sub']) { td+="
"+head[i]['sub'][ii]+"
"; } td+="
"; rd[quad]+="
"+td+"
"; } else { td=head[i]['l']; rd[quad]+="
"+td+"
"; } io+=head[i]['span']; } tdata[0]=[{id:"",td:rd[0]}]; tdata[1]=[{id:"",td:rd[1]}]; // console.log(JSON.stringify(tdata)); // d+="
"; num=0; ctt=['IFR','VFR','Day','Night']; var globeData = []; for (i in arr) { var iarr={}; for (ii in arr[i]) { if ((ii.substr(0,3)=='MOD')&&(arr[i][ii]!=null)) { iarr[ii.substr(4)]=arr[i][ii]; // console.log(i+" "+ii+" = "+arr[i][ii]); } else { iarr[ii]=arr[i][ii]; } } globeData.push({ "source": iarr.D_Stn, "destination": iarr.A_Stn, "date": formatGlobeDate(iarr.Depart), "dh": iarr.IsDH, "aircraft": iarr.Aircraft }); if (!('IsDH' in iarr) || !iarr.IsDH) { num++; if (iarr.SRC == 'users') { iarr['num'] = "
" + num + "
"; } else if (iarr.modified) { iarr['num'] = "
" + num + "
"; } else { iarr['num'] = num; } iarr['Date'] = months[iarr.Depart.substr(5, 2) - 1].substr(0, 3) + " " + (iarr.Depart.substr(8, 2) * 1) + (addYear ? " " + iarr.Depart.substr(0, 4) : ""); iarr['TL'] = (iarr['TO'] * 1 ? "T" : "") + (iarr['LND'] * 1 ? "L" : "") + (iarr['RS'] * 1 ? "R" : ""); // console.log(i+" "+iarr['TL']+" "+JSON.stringify(iarr)); if (iarr['IFVR'] == 'VFR') { iarr['VFR'] = iarr['DNTotal']; iarr['IFR'] = 0; } else { iarr['IFR'] = iarr['DNTotal']; iarr['VFR'] = 0; } c = ""; if (iarr['Crew']) { foo = iarr['Crew'].split("~"); for (ii in foo) { ifoo = foo[ii].split("|"); if (ifoo.length > 1) { c += (c ? "," : "") + ifoo[0] + " " + ifoo[1]; } else { c += (c ? "," : "") + foo[ii]; } } } iarr['Crew'] = c; foo = iarr['PIC'].split("|"); iarr['PIC'] = foo[0]; for (iif in ctt) { iarr[ctt[iif]] = m2h(iarr[ctt[iif]], " "); } ic = 0; rd = ["", ""]; cols.forEach(function (f) { quad = (ic < leftcols ? 0 : 1); sty = ""; if (f == 'Crew') { sty = 'font-size:10px;'; } if (f == 'PIC') { sty = 'font-size:10px;'; } rd[quad] += "
"; if ((typeof (f) === "object") && (f !== null)) { var v = (iarr[f.col] == null ? '' : iarr[f.col]); d += ""; } else { var v = (iarr[f] == null ? '' : iarr[f]); var v = (iarr[f] ? iarr[f] : ' '); rd[quad] += v; } rd[quad] += "
"; ic++; }); tdata[2].push({id: iarr.LSD_recordid + "L", offset: i, td: rd[0], log: arr[i]}); tdata[3].push({id: iarr.LSD_recordid + "R", offset: i, td: rd[1], log: arr[i]}); // d+="
"; } } itable=""; for (iquad in tdata) { pos=(iquad==3?'absolute':'fixed'); pos='fixed'; zi=(iquad==0?3:(iquad==3?1:2)); if (iquad==0) { bsty="border-top:2px solid black;border-left:2px solid black;border-top-left-radius:10px;overflow:hidden;"; } if (iquad==1) { bsty="border-top:2px solid black;border-right:2px solid black;border-top-right-radius:10px;overflow:hidden;"; } if (iquad==2) { bsty="border-bottom:2px solid black;border-left:2px solid black;border-bottom-left-radius:10px;overflow:hidden;"; } if (iquad==3) { bsty="border-bottom:2px solid black;border-right:2px solid black;border-bottom-right-radius:10px;overflow:hidden;"; } itable+="
"; alt=false; for (i in tdata[iquad]) { sty=(alt?"color:var(--monthheadbgrd);":""); var cssClass = ('log' in tdata[iquad][i] && 'SectorLog' in tdata[iquad][i]['log']) ? 'itr sectoritr' : 'itr'; itable+="
"+tdata[iquad][i]['td']+"
"; alt=(! alt); } itable+="
"; } d+=itable; d+=""; d+=""; $("#flightMonth").html(d); $("#flightSummary").hide(); if(!title.match(/^Station:/)) { $("#flightMonth #quad_topbar_title").append("
" + " My Globe
"); $(".showGlobeBtn").off(); $(".showGlobeBtn").on("click", function () { var globeTitle = $("#quad_topbar_title .quad_topbar_title_text").html(); if (typeof $(this).data('globe-title') !== 'undefined') { globeTitle = $(this).data('globe-title'); } GlobeMapBox.show($(this).data('globe'), globeTitle); }); } $("#flightMonth").show(); maxc=[]; for (i=0;imaxc[ic]) { maxc[ic]=w; } }); // console.log(JSON.stringify(maxc)); $(".itd").each(function() { ic=$(this).attr('data-col'); $(this).width(maxc[ic]); }); io=0; $(".ith").each(function() { w=maxc[io]; pad=0; for (i=1;i<$(this).attr("data-span");i++) { io++; w+=maxc[io]+17; pad=16; } $(this).width(w+pad); io++; }); // console.log(JSON.stringify(elog_sectors.results)); drawquads(); elog_init(); }; if (args=='redraw') { //showMonth(elog_sectors.results); sectorLog.addSectorsToElog(elog_sectors.results, fields, dre) .then((elogs) => { showMonth(elogs); }) .catch((err) => { showMonth(elog_sectors.results); }); return; } mresults=[]; myIndex.openCursor(null,iorder).onsuccess = function(event) { var cursor = event.target.result; if (cursor) { var vals=cursor.value; vals['KEY']=cursor.primaryKey; vals['PosAC']=(vals.MOD_Position!=null?vals.MOD_Position:vals.Position)+" "+vals.AC_Equip; ok=false; for (ifield in fields) { if (typeof vals[fields[ifield]] !== "undefined" && vals[fields[ifield]] !== null && vals[fields[ifield]].match(dre)) { ok=true; break; } } if (ok) { mresults.push(vals); } // console.log("results:"+mresults.length); if ((0)&&(mresults.length>=100)) { showMonth(mresults); return; } cursor.continue(); } else { // showMonth(mresults); sectorLog.addSectorsToElog(mresults, fields, dre) .then((elogs) => { showMonth(elogs); }) .catch((err) => { showMonth(mresults); }); } }; } function elog_search() { sval=$("#elogSearch").val().toLowerCase(); if (sval=='') { $("#resultsPanel").hide(); return; } $("#elogResults").html("
Searching
"); $("#resultsPanel").show(); mresults={}; var objectStore = idb.dbh.transaction("elogData").objectStore("elogData"); var myIndex = objectStore.index('Depart'); dre=new RegExp(sval,"i"); tre=new RegExp("^"+sval+"$","i"); icount=0; match=0; myIndex.openCursor(null,'prev').onsuccess = function(event) { var cursor = event.target.result; if (cursor) { vals=cursor.value; // console.log(JSON.stringify(vals)); crew=vals.Crew.toLowerCase(); pic=vals.PIC.toLowerCase(); if (crew.match(sval)) { foo=vals.Crew.split("~"); match++; for (i in foo) { ifoo=foo[i].split("|"); if (ifoo[0]) { n=ifoo[1]+" "+ifoo[2]; } else { ifoo[2]=ifoo[1]; n=ifoo[1]; } if (dre.test(ifoo[1])) { if (typeof(mresults[n])=='undefined') { mresults[n]={v:ifoo[2],type:"Crew"}; } } } } if (pic.match(sval)) { foo=vals.PIC.split("|"); if (dre.test(foo[0])) { match++; if (! foo[1]) { foo[1]=foo[0]; n=foo[0]; } else { n=foo[0]+" "+foo[1]; } if (typeof(mresults[n])=='undefined') { mresults[n]={v:foo[1],type:"Crew"}; } } } if (dre.test(vals.MOD_Crew)) { match++; if (typeof(mresults[vals.MOD_Crew])=='undefined') { mresults[vals.MOD_Crew]={v:vals.MOD_Crew,type:"MOD_Crew"}; } } if (dre.test(vals.D_Stn)) { match++; if (typeof(mresults[vals.D_Stn])=='undefined') { mresults[vals.D_Stn]={v:vals.D_Stn,type:"Station"}; } } if (dre.test(vals.A_Stn)) { match++; if (typeof(mresults[vals.A_Stn])=='undefined') { mresults[vals.A_Stn]={v:vals.A_Stn,type:"Station"}; } } if (dre.test(vals.AC_Fin)) { match++; if (typeof(mresults[vals.AC_Fin])=='undefined') { mresults[vals.AC_Fin]={v:vals.AC_Fin,type:"Aircraft"}; } } if (dre.test(vals.AC_Reg)) { match++; if (typeof(mresults[vals.AC_Reg])=='undefined') { mresults[vals.AC_Reg]={v:vals.AC_Reg,type:"Aircraft"}; } } icount++; cursor.continue(); } else { var renderSearchResult = (sresults, smatch) => { html=""; for (i in sresults) { if (sresults[i]['type']=='Station') { icon='map-marker-alt'; } else if (sresults[i]['type']=='Aircraft') { icon='plane'; } else { icon='user-tie'; } html+="
"+ ""+ i+"
"; } if (! smatch) { html="
No Results
"; } $("#elogResults").html(html); $("#resultsPanel").show(); $(".sresult").unbind(); $(".sresult").click(function() { $("#elogResults").html("
Searching
"); elog_sectors({type:$(this).attr("data-stype"),val:$(this).attr("data-val")}); }); }; sectorLog.searchSectorlogs(mresults, match, sval, dre) .then((response) => { renderSearchResult(response.result, response.total); }) .catch((err) => { renderSearchResult(mresults, match); }) } }; } function elog_change(obj) { foo=obj.id.split("."); $(obj).attr("data-changed",0); var transaction = idb.dbh.transaction(["elogData"], "readwrite"); var objectStore = transaction.objectStore("elogData"); var rec=objectStore.get(foo[0]); // console.log("Update "+obj.id+" "+$(obj).val()+" get:"+foo[0]); rec.onsuccess=function(event) { // console.log("success"); if (! event.target.result) { return; } irec=event.target.result; data={ update:1, key:foo[0], field:foo[1], value:$(obj).val(), lsd:irec.LSD_recordid, lsdu:irec.LSDU_recordid, mtime:Date.now(), so:server_offset.so }; utransaction = idb.dbh.transaction(["elogUpdates"], "readwrite"); uobjectStore = utransaction.objectStore("elogUpdates"); var request = uobjectStore.add(data); request.onsuccess=function(event) { // console.log("WROTE TO LOG"); }; irec[foo[1]]=$(obj).val(); irec.updated=1; var updateRequest = objectStore.put(irec); updateRequest.onerror=function(event) { // console.log(foo[0]+" "+foo[1]+" Update ERROR!"); }; updateRequest.onsuccess=function(event) { // for (i in irec) { console.log(i+" = "+irec[i]); } sendChanges(1); }; if (0) { console.log(data.lsd+" "+data.field+" "+data.value); const headers = new Headers({'Content-Type': 'application/json'}); const body = JSON.stringify(data); return fetch('/php/handler.php?cache', { method: 'POST', headers: headers, body: body }); } }; rec.onerror=function(event) { // console.log("ERROR!"); }; } function mc_fxhead() { if ($(window).scrollTop()>0) { h=""; $(".mcal_h").each(function() { stt=$(window).scrollTop() - $(this).position().top; stb=$(window).scrollTop() - $(this).position().top + $(this).height(); mh=$("#mc_fxheader").height(); if (stt>=mh*-1) { h=$(this).html(); } // console.log(this.id+" "+stt+" "+stb+" "+mh); }); $("#mc_fxheader").html(h); $("#mc_fxheader").show(); } else { $("#mc_fxheader").hide(); } } function mc_draw() { for (ik in mc_init.awards) { for (wk in mc_init.awards[ik].weeks) { wst=dt2time(mc_init.awards[ik].weeks[wk].start,1); wend=dt2time(mc_init.awards[ik].weeks[wk].end,2); cust=[]; for (i in mc_init.mcal) { mc=mc_init.mcal[i]; f=0; if (mc.edit=='DEL') { f=1; } if (mc.type=='deleted') { f=2; } if (mc.start>=mc_init.awards[ik].weeks[wk].end) { f=3; } if (mc.end<=mc_init.awards[ik].weeks[wk].start) { f=4; } if (f) { continue; } siw=1; eiw=1; st=mc.start; end=mc.end; if (mc.startmc_init.awards[ik].weeks[wk].end) { eiw=0; end=mc_init.awards[ik].weeks[wk].end; } if (mc.pairno=='CUST') { f=0; if (mc.startd>mc_init.awards[ik].weeks[wk].wend) { f=1; } if (mc.enddwend) { continue; } if (lendwend?wend:lend); lw=(lend-lst)/(end-st); ll=(lst-st)/(end-st); txt+="
"+lo.stn+"
"; } } // console.log("Award:"+ik+" week:"+wk+" - "+mc.pairno+" "+st+" "+end); // console.log("week:"+wk+" "+wst+" "+wend+" - "+mc.pairno+" "+st+" "+end); if (typeof(mc.bgcolour)!='undefined') { bgc=mc.bgcolour; } else if (typeof(mc_init.odata.colour[mc.pairno])!='undefined') { bgc=mc_init.odata.colour[mc.pairno]; } else { bgc='silver'; } bimg=""; if (mc.reserve=='off') { bimg="background-image:url('/assets/rsv_"+(mc.pairno.substr(0,1)=='G'?'g':'o')+".jpg');"; } ediv="
"+txt+"
"+ "
"+mc.pairno+"
"; w=(wk*1); w++; // console.log(ik+" "+w+" "+ediv); $("#tr_"+ik+"_"+w).append(ediv); if (0) { ediv=ediv.replace(/>/g,">"); ediv=ediv.replace(/"); } } cust.sort(function(a,b) { if (a.wstartb.wstart) { return(-1); } if (a.wendb.wend) { return(-1); } if ((a.os)&&(! b.os)) { return(1); } if ((! a.os)&&(b.os)) { return(-1); } return((a.text1) { txt="
"+foo.join("
")+"
"; } else { txt=cust[ic].icon.text; } icon="
"+ "
"+txt+"
"+ "
"; $("#tdi_"+ik+"_"+cust[ic].startd) .addClass('has-cust-icon') .append(icon); // maxd[v][c]+=foo.length; maxd[v][c]+=foo.length; } // console.log(JSON.stringify(maxd)) mdi=0; for (i=0;i<7;i++) { h=(maxd.it[i]*25)+(maxd.io[i]*15); mdi=(h>mdi?h:mdi); } // console.log("MAXD:"+ik+" "+wk+" mdi:"+mdi+" "+JSON.stringify(maxd)); edivs=[]; // console.log(JSON.stringify(cust)); for (ic in cust) { // console.log(JSON.stringify(mc_init.awards[ik].weeks[wk].dates)); if ((typeof(cust[ic].icon)!='undefined')&&(cust[ic].icon.type=='it')) { continue; } md=0; iw=0; clines=(cust[ic].etime.time?2:1); for (i=mc_init.awards[ik].weeks[wk].dates[cust[ic].wstartd];i<=mc_init.awards[ik].weeks[wk].dates[cust[ic].wendd];i++) { // console.log(i+" "+cust[ic].wstart+" "+cust[ic].wend); md=(maxd.c[i]>md?maxd.c[i]:md); iw++; } st=dt2time(cust[ic].wstart,7); end=dt2time(cust[ic].wend,8); spos=(end-st)/(wend-wst)*300; cust[ic].etime.text+=(cust[ic].etime.time?"~":(cust[ic].etime.alarm?" ":"")); // console.log(ic+" "+cust[ic].text+" -> "+cust[ic].etime.text); edivs.push({ col:mc_init.awards[ik].weeks[wk].dates[cust[ic].wstartd], w:iw, md:md, lines:clines, background:cust[ic].bgcolour, color:cust[ic].colour, left:spos+"px", width:(iw/7*300)+"px", text:cust[ic].etime.text+cust[ic].text }); w=(wk*1); w++; md+=clines; for (i=mc_init.awards[ik].weeks[wk].dates[cust[ic].wstartd];i<=mc_init.awards[ik].weeks[wk].dates[cust[ic].wendd];i++) { maxd.c[i]=md; } } w=(wk*1); w++; wordbreakStyle="word-break: normal;overflow: visible;overflow-wrap: anywhere;white-space: break-spaces;"; for (i=0;i1) { foo=edivs[i].text.split("~"); edivs[i].text="
"+foo.join("
")+"
"; edivs[i].md++; st="height:fit-content;"; } else { edivs[i].text="
"+edivs[i].text+"
"; } ediv="
"+ edivs[i].text+ "
"; $("#tr_"+ik+"_"+w).append(ediv); } // console.log(ik+" "+wk+" "+w+" "+md+" "+JSON.stringify(maxd)); } } } mc_init.loadingText = `
Loading Calendar
`; function mc_init(flip) { if (typeof(flip)=='undefined') { flip=false; } if (typeof(mc_edit.mode)=='undefined') { mc_edit.mode=''; } if ((typeof(mc_edit.equip)=='undefined')&&(typeof(mc_init.bulk)!='undefined')) { mc_init.equip=mc_init.bulk.equip; mc_init.bulkv="bulk"; } $(".tdhc").unbind(); $("#mc_calcfg_btn").unbind(); $(".mc_calmod_btn").unbind(); // $("#mc_mcal_import_btn").unbind(); $(".cal_week").unbind(); $(".calrbtn").unbind(); $(".cc_btn").unbind(); w=$('body').width(); // $("#devwidth").html(" "+$('body').width()+" "+$('body').height()); cc=Math.floor(w/306); cc=1; aw=w-(cc>1?(cc-1)*4:0); cw=aw/cc; tdw=cw/7; mc_cust.tdw=tdw; // console.log("dims:"+w+" "+aw+" "+cc+" "+cw+" "+tdw); $(".td").css({width:tdw+"px"}); $(".cevent").each(function() { l=$(this).attr("data-col")*tdw; w=$(this).attr("data-w")*tdw-2; $(this).css({left:l,width:w}); }); $(".cal_week").css({width:(cw-10)+"px"}); $(".event").each(function() { l=$(this).attr("data-l")*cw; w=$(this).attr("data-w")*cw; $(this).css({left:l,width:w}); }); $(".event_text").each(function() { l=$(this).attr("data-c")*cw; maxl=cw-($(this).outerWidth()/2)-2 l=(l>maxl?maxl:l); $(this).css({left:l}); }); $(".event_lo").each(function() { tw=$(this).parent().width(); l=tw*$(this).attr("data-l"); w=tw*$(this).attr("data-w"); $(this).css({left:l,width:w}); }); mc_fxhead(); $(".tr").each(function () { var rowHeight = 75; var baseHeight = $(this).find(".has-cust-icon").length > 0 ? $(this).find(".has-cust-icon").position().top + $(this).find(".has-cust-icon").height() + 15 : $(this).find(".event_text").length > 0 ? 40 : 20; var colHeight = [baseHeight, baseHeight, baseHeight, baseHeight, baseHeight, baseHeight, baseHeight]; for (i=0;i<7;i++) { $(this).find(".cevent[data-col="+i+"]").each(function () { var eventBottom = (colHeight[i] - baseHeight); $(this).css('bottom', eventBottom + 'px'); var eventTop = baseHeight + eventBottom + $(this).outerHeight(); for(j = 0; j < $(this).data('w'); j++) { colHeight[i + j] = colHeight[i + j] < eventTop ? eventTop : colHeight[i + j]; } }); rowHeight = colHeight[i] > rowHeight ? colHeight[i] : rowHeight; } $(this).find('.td').css('height', rowHeight + 'px'); }) $(".tdhc").click(function() { $(".tdhc").attr("data-on",0); $(this).attr("data-on",1); mc_cust(this); }); $(".mc_calmod_btn").click(function() { event.stopPropagation(); $(".tdhc").attr("data-on",0); $(".cal_week").hide(); $(this).closest('.tr').css('margin-bottom', "0px"); }); $("#mc_calcfg_btn").click(function() { $(".mc_panel").hide(); $("#mc_mcal_cfg").show(); $(window).scrollTop(0); }); // $("#mc_mcal_import_btn").click(function() { // $(".mc_panel").hide(); // $("#mc_mcal_import").show(); // $(window).scrollTop(0); // }); $(".cal_week").click(function() { mc_edit.scrolltop=$(window).scrollTop(); mc_edit(this); }); $(".calrbtn").click(function() { $(this).attr("data-on",($(this).attr("data-on")==1?0:1)); }); $(".cc_btn").click(function() { if ($(this).attr("data-ok")==0) { $(".mc_panel").hide(); $("#mc_mcal_display").show(); return; } cfg=""; $(".calrbtn[data-on='1']").each(function() { cfg+=(cfg?",":"")+$(this).attr("data-id"); }); url=idb.handler+"?usercal="+cfg+ "&eid="+idb.authCheck.eid+ "&userid="+idb.authCheck.userid+ "&group="+idb.authCheck.group; $("#mc_mcal_cfg").hide(); $("#loading").show(); $.get(url,function(data) { idb("authLoad","menu"); $("#loading").hide(); }); }); } async function mc_edit(obj) { function alertList(allday,iarr) { txt=""; units={ m:'Minutes', h:'Hours', d:'Days', w:'Weeks' }; for (i in iarr) { ia=iarr[i]; if ((ia.notify_allday)&&(! allday)) { continue; } if ((! ia.notify_allday)&&(allday)) { continue; } txt+="
"; txt+="
"+ "
"; txt+="
"+ "
"; txt+=" " txt+=ia.before_v+" "+units[ia.before_u]+" Before"; if (ia.notify_allday) { txt+=" @ "+ia.before_time+(ia.before_time_tz?" "+ia.before_time_tz:""); } if (ia.notify_by.match(/Ixx/)) { txt+=" "; } if (ia.notify_by.match(/E/)) { txt+=" "; } if (ia.notify_by.match(/S/)) { txt+=" "; } txt+="
"; } return(txt); } function custAlert(obj) { custAlert.iobj=obj; h=0; m=0; if ($("#cust_etype_allday").attr("data-on")*1) { foo=mc_init.cust_alert.cust_allday.split(" "); before_v=foo[0]; before_u=foo[1]; foo=foo[2].split(":"); h=foo[0]; m=foo[1]; } else { foo=mc_init.cust_alert.cust_timed.split(" "); before_v=foo[0]; before_u=foo[1]; } var sbt=new Date(2000,0,1,h,m,0); var sbs=new Date(2000,0,1,0,0,0); var sbe=new Date(2000,0,1,23,59,0); if (! mc_init.cust_alert.cust_alert.match(/[ES]/)) { mc_init.cust_alert.cust_alert="IE"; } var iargs={ title:"Create Alert", stime:sbt, st:sbs, end:sbe, atypes:mc_init.cust_alert.cust_alert, utco:0, alert:($("#cust_etype_allday").attr("data-on")*1+1), base:imc.base, tz:mc_init.cust_alert.cust_tz, before_v:before_v, before_u:before_u, onSet:function(irv) { mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1].alerts.push(irv); mc_init.cust_alert.cust_alert=irv.notify_by; $("#mc_cust_alerts").html(alertList($("#cust_etype_allday").attr("data-on")*1,mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1].alerts)); } }; // console.log(iargs); keypad(iargs); return; } if ($(obj).attr("data-action")=='editAlert') { ialert=mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1].alerts[$(obj).attr("data-offset")*1]; console.log("Alert: "+JSON.stringify(ialert)); foo=ialert.before_time.split(":"); var sbt=new Date(2000,0,1,foo[0],foo[1],0); var sbs=new Date(2000,0,1,0,0,0); var sbe=new Date(2000,0,1,23,59,0); var iargs={ title:"Edit Alert", stime:sbt, st:sbs, end:sbe, atypes:ialert.notify_by, utco:0, alert:ialert.notify_allday*1+1, base:imc.base, tz:ialert.time_tz, before_v:ialert.before_v, before_u:ialert.before_u, onSet:function(irv) { mc_init.cust_alert.cust_alert=irv.notify_by; mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1].alerts[$(obj).attr("data-offset")*1]=irv; $("#mc_cust_alerts").html(alertList($("#cust_etype_allday").attr("data-on")*1,mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1].alerts)); } }; // console.log(iargs); keypad(iargs); return; } if ($(obj).attr("data-action")=='deleteAlert') { if (typeof(mc_edit.delalert)=='undefined') { mc_edit.delalert=false; } if ($(obj).attr("data-confirm")==1) { clearTimeout(mc_edit.delconfirm); mc_init.mcal[mc_edit.io].alerts.splice($(mc_edit.delalert).attr("data-offset")*1,1); $("#mc_cust_alerts").html(alertList($("#cust_etype_allday").attr("data-on")*1,mc_init.mcal[mc_edit.io].alerts)); mc_edit.delalert=false; } else { clearTimeout(mc_edit.delconfirm); if (mc_edit.delalert) { $(mc_edit.delalert).html(""); $(mc_edit.delalert).attr("data-confirm",0); } $(obj).html($(obj).html()+" Confirm"); $(obj).attr("data-confirm",1); mc_edit.delalert=obj; mc_edit.delconfirm=setTimeout( function() { $(mc_edit.delalert).html(""); $(mc_edit.delalert).attr("data-confirm",0); }, 2500 ); } return; } if ($(obj).attr("data-action")=='cancel') { em=mc_edit.mode; // console.log("Cancel:"+em); mc_edit.mode=''; if (em=="CUST") { mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1]=mc_edit.imc_safe; // console.log("IO:"+$("#mc_edit_CUST").attr('data-io')+" IMC:"+JSON.stringify(mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1])); } if ((em!='')&&(em!='week')) { if (mc_edit.sid) { for (i=0;i"+foo[i]+""; } txt="
"+$("#mc_mcal_edit_items").attr("data-datefmt")+"
"; txt+="
"; txt+="
Reserve Period
"; txt+="
"+ "
Type:
"+ "
"+str+"
"+ "
"; txt+="
"; $("#mc_mcal_edit_items").html(txt); $(".mc_rsv").click(function() { $(".mc_rsv").attr("data-on",0); $(this).attr("data-on",1); }); mc_edit.mode="RSV"; } else if (($(obj).attr("data-confirm")==1)&&($(obj).attr("data-io").match(/vac|grds/))) { dlim=$(obj).attr("data-opts")*1; opts=""; i=0; for (d in mc_init.awards[$("#mc_mcal_edit_items").attr("data-award")].dates) { if (mc_init.awards[$("#mc_mcal_edit_items").attr("data-award")].dates[d].d < $("#mc_mcal_edit_items").attr("data-date")) { continue; } i++; opts+=""; if (dlim-i<=0) { break; } } txt="
"+$("#mc_mcal_edit_items").attr("data-datefmt")+"
"; if ($(obj).attr("data-io")=='vac') { txt+="
"; txt+="
Vacation
"; txt+="
"+ "
# Days:
"+ "
"+ "
"; txt+="
"; $("#mc_mcal_edit_items").html(txt); mc_edit.mode="VAC" } if ($(obj).attr("data-io")=='grds') { txt+="
"; txt+="
Ground School
"; txt+="
"+ "
# Days:
"+ "
"+ "
"; txt+="
"+ "
Type:
"+ "
"+ "
Ground School
"+ "
Rouge GrdS
"+ "
Overseas GrdS
"+ "
"; txt+="
"; $("#mc_mcal_edit_items").html(txt); mc_edit.mode="GRDS" $(".mc_rsv").click(function() { $(".mc_rsv").attr("data-on",0); $(this).attr("data-on",1); }); } } else if (($(obj).attr("data-confirm")==1)&&($(obj).attr("data-io").match(/sim|art/))) { txt="
"+$("#mc_mcal_edit_items").attr("data-datefmt")+"
"; txt+="
"; txt+="
"+($(obj).attr("data-io")=='art'?'ART':'Simulator')+"
"; txt+="
Start Time:
"+ "
"+ ""+ "
"+ "
"; txt+="
End Time:
"+ "
"+ ""+ "
"+ "
"; if ($(obj).attr("data-io")!='art') { txt+="
"+ "
Type:
"+ "
"+ "
Simulator (SIM)
"+ "
Instructor (iSIM)
"+ "
Volunteer (vSIM)
"+ "
"; } txt+="
"; $("#mc_mcal_edit_items").html(txt); mc_edit.mode=$(obj).attr("data-io").toUpperCase(); $(".mc_sim").click(function() { $(".mc_sim").attr("data-on",0); $(this).attr("data-on",1); }); } else if (($(obj).attr("data-confirm")==1)&&($(obj).attr("data-io")=='other')) { txt="
"+$("#mc_mcal_edit_items").attr("data-datefmt")+"
"; txt+="
"; txt+="
Other
"; txt+="
"+ "
Type:
"+ "
"+ "
Office (Offc)
"+ "
Fail to Fly(F2F)
"+ "
ITC (ITC)
"+ "
"; txt+="
"; $("#mc_mcal_edit_items").html(txt); mc_edit.mode=$(obj).attr("data-io").toUpperCase(); $(".mc_sim").click(function() { $(".mc_sim").attr("data-on",0); $(this).attr("data-on",1); }); } else if ($(obj).attr("data-confirm")==1) { imc=mc_init.mcal[$(obj).attr('data-io')*1]; mc_edit.io=$(obj).attr('data-io')*1; mc_edit.imc_safe={}; for (i in imc) { mc_edit.imc_safe[i]=imc[i]; } // console.log("EDIT:"+$(obj).attr('data-io')+" "+imc.pairno+" safe:"+JSON.stringify(mc_edit.imc_safe)); if (imc.pairno=='CUST') { console.log("EDIT:"+JSON.stringify(imc)); txt="
"+$("#mc_mcal_edit_items").attr("data-datefmt")+"
"; txt+="
"; txt+="
"; txt+="
"; sty="background:"+imc.bgcolour+";color:"+imc.colour; txt+="
"+ "
"+ ""+ ""+ "
"; txt+="
"; nr=0; // console.log(JSON.stringify(imc)); txt+="
"+ (imc.recur?"First ":"")+"Date:
"+ "
"+ (imc.recur?date_format(imc.recur_st)+(imc.recur_end>imc.recur_st?" to "+date_format(imc.recur_end):""):date_format(imc.startd)+(imc.endd>imc.startd?" to "+date_format(imc.endd):""))+ "
"+ "
"; txt+="
Event:
"+ "
All Day
"+ "
Timed
"+ "
"; if ((imc.allday*1)||(imc.end.substr(11,5)=='00:00')) { cst="08:00"; cend="09:00"; } else { cst=imc.start.substr(11,5); cend=imc.end.substr(11,5); } otz=[ {label:"Base (Curently "+imc.base+")",dvalue:imc.base,value:'',on:(imc.disp_tz==''?1:0)}, {label:"Pacific",dvalue:'PT',value:'YVR',on:(imc.disp_tz=='YVR'?1:0)}, {label:"Mountain",dvalue:'MT',value:'YYC',on:(imc.disp_tz=='YYC'?1:0)}, {label:"Saskatchewan",dvalue:'CST',value:'YQR',on:(imc.disp_tz=='YQR'?1:0)}, {label:"Central",dvalue:'CT',value:'YWG',on:(imc.disp_tz=='YWG'?1:0)}, {label:"Eastern",dvalue:'ET',value:'YYZ',on:(imc.disp_tz=='YYZ'?1:0)}, {label:"Atlantic",dvalue:'AT',value:'YHZ',on:(imc.disp_tz=='YHZ'?1:0)}, {label:"Newfoundland",dvalue:'NT',value:'YYT',on:(imc.disp_tz=='YYT'?1:0)} ]; cz=""; for (i in otz) { dval=otz[i].dvalue; cz+="
"+otz[i].label+"
"; } dtz=(imc.allday*1?mc_init.cust_ltz:imc.disp_tz); txt+="
"+ "
Time:
"+ "
"+cst+"
to "+ "
"+cend+"
"+ "
"+ (dtz==''?imc.base:zids[dtz])+ "
"+ "
UTC
"+ ""+ "
"; txt+="
Repeat:
"; txt+="
Alert:
Alert
"+ "
"+alertList(imc.allday*1,imc.alerts)+"
"+ "
"; txt+="
"; mc_edit.mode="CUST"; $("#mc_mcal_edit_items").html(txt); $("#mc_cpicker").attr("data-colour",imc.bgcolour); $("#mc_cpicker").attr("data-tcolour",imc.colour); $("#mc_cpicker").css({color:imc.colour,background:imc.bgcolour}); $("#mc_cpicker").click(function() { if ($("#mc_cpicker").attr("data-on")==1) { return; } // console.log("CC OPEN"); $("#mc_cpicker").attr("data-on",1); $("#mc_cpicker").html($("#ctext_colours").html()); $("#mc_cpicker_c").css({color:$("#mc_cpicker").attr("data-tcolour"),background:$("#mc_cpicker").attr("data-colour")}); $("#mc_cpicker_c").attr("data-colour",$("#mc_cpicker").attr("data-colour")); $(".mc_cpicker_c").attr("data-current",0); $("#cpick_"+$("#mc_cpicker").attr("data-colour")).attr("data-current",1); }); $(".cust_etype").click(function() { $(".cust_etype").attr("data-on",0); $(this).attr("data-on",1); if (this.id=='cust_etype_allday') { $("#mc_stend").hide(); } else { $("#mc_stend").show(); } $("#mc_cust_alerts").html(alertList($("#cust_etype_allday").attr("data-on")*1,mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1].alerts)); }); mc_cust_date_set(); $("#mc_cust_text").keypress(function(event) { if(event.which == '13') { return false; } }); $("#mc_cust_text").keyup(function() { mc_cust_text_len(); }); $(".cust_zone_o").click(function() { $("#cust_zone_base").attr("data-display",$(this).attr("data-val")); $("#cust_zone_base").html($(this).attr("data-dval")); $("#cust_zone_other").hide(); $(".cust_zone_o").attr("data-on",0); $(this).attr("data-on",1); }); $(".cust_zone").click(function() { ison=$(this).attr("data-on")*1; isex=$(this).attr("data-expand")*1; if ((ison==1)&&(isex==0)) { $("#cust_zone_other").show(); } else { $("#cust_zone_other").hide(); } $(".cust_zone").attr("data-on",0); $(this).attr("data-on",1); }); $("#cust_alert").click(function() { custAlert(); }); $(".cust_time").click(function() { foo=$(this).html().split(":"); iobj=this; var sbt=new Date(2000,0,1,foo[0]*1,foo[1]*1,0,0); var sbs=new Date(2000,0,1,0,0,0); var sbe=new Date(2000,0,1,23,59,0); var iargs={ title:(this.id.match(/end/)?"End":"Start")+" Time", stime:sbt, st:sbs, end:sbe, utco:0, onSet:function(idate) { // console.log(iobj.id+" = "+idate); $(iobj).html(idate.toTimeString().substr(0,5)); console.log(iobj.id+" "+$(iobj).html()+" "+$("#cust_end_time").html()); if ((! iobj.id.match(/end/))&&($(iobj).html()>$("#cust_end_time").html())) { $("#cust_end_time").html($(iobj).html()); } } }; keypad(iargs); }); // $("#ctext_colours").show(); } if (imc.pairno=='MED') { txt="
"+$("#mc_mcal_edit_items").attr("data-datefmt")+"
"; txt+="
"; txt+="
Type:
"+ "
Medical
"+ "
"; txt+="
Time:
"+ "
"+ ""+ "
"+ "
"; txt+="
"; $("#mc_mcal_edit_items").html(txt); mc_edit.mode="MED"; } } else { id=$(obj).attr("data-id"); btns="
"+ "
"+ "
"+ "
"; $(obj).parent().html(btns); } return; } if (($(obj).attr("data-action")=='del') ||($(obj).attr("data-action")=='delrx') ||($(obj).attr("data-action")=='delr') ||($(obj).attr("data-action")=='reinsert')) { mc_edit.mode=''; i=$(obj).attr("data-io")*1; idate=$("#mc_mcal_edit_items").attr("data-date"); if ((mc_init.mcal[i].recur)&&($(obj).attr("data-action")=='del')) { id=$(obj).attr("data-id"); btns="
"+ " Delete All
"+ "
"+ " Delete "+idate+" ONLY
"+ "
"; $(obj).parent().css({display:'block'}); // console.log($(obj).parent().attr("data-id")); $(obj).replaceWith(btns); $("#mc_edit_btn_save").show(); return; } if (($(obj).attr("data-action")=='delrx')||($(obj).attr("data-action")=='delr')) { data={ cmd:'mod', action:'recur_'+$(obj).attr("data-action"), srcid:mc_init.mcal[i].srcid, pairno:mc_init.mcal[i].pairno, type:mc_init.mcal[i].type, date:$(obj).attr("data-date") }; mc_init.mcal[i].sid=mc_edit.sid; mc_init.mcal[i].type='deleted'; } else if ($(obj).attr("data-recurx")==1) { data={ cmd:'mod', action:'recur_restore', srcid:mc_init.mcal[i].srcid, pairno:mc_init.mcal[i].pairno, type:mc_init.mcal[i].type, date:$(obj).attr("data-date") }; mc_init.mcal[i].sid=mc_edit.sid; mc_init.mcal[i].type=($(obj).attr("data-action")=='del'?'deleted':'other'); } else { mc_init.mcal[i].sid=mc_edit.sid; mc_init.mcal[i].type=($(obj).attr("data-action")=='del'?'deleted':'award'); data={ cmd:'mod', action:$(obj).attr("data-action"), srcid:mc_init.mcal[i].srcid, pairno:mc_init.mcal[i].pairno, type:mc_init.mcal[i].type, start:mc_init.mcal[i].start, end:mc_init.mcal[i].end }; } $(obj).parent().hide(); mc_edit.changes.push(data); mc_edit.redraw=true; mc_edit(mc_edit.obj); $("#mc_edit_btn_save").show(); return; } if ($(obj).attr("data-action")=='insert') { is=($(obj).attr("data-confirm")==1?1:0); // console.log("insert:"+mc_edit.sid); if ((! is)&&($(obj).attr("data-type")=='pairing')) { $(".viewphtml").hide(); $(".viewphtmldiv").width($("#mc_mcal_edit").width()-20); $(".mc_inscbtn").attr("data-confirm",0); $("#phtml_"+$(obj).attr("data-ip")).show(); $(obj).attr("data-confirm",1); return; } if ($(obj).attr("data-type")=='pairing') { ip=$(obj).attr("data-ip")*1; d=$(obj).attr("data-d")*1; p=mc_init[mc_init.bulkv].pairings[ip]; pd=mc_init[mc_init.bulkv].pairings[ip].dates[d]; std=dt2time(pd.checkin,9); id=new Date(); los=[]; for (il in p.layovers) { id.setTime((std+(p.layovers[il].start*60))*1000); st=dtString(id); id.setTime((std+(p.layovers[il].end*60))*1000); en=dtString(id); los.push({start:st,end:en,stn:p.layovers[il].stn}); // console.log(il+" "+std+" "+st+" "+p.layovers[il].stn+" "+dtString(id)); } io={ pairno:p.pairno, start:pd.checkin, end:pd.checkout, type:'award', offset:'', bgcolour:'var(--calpairing)', text:p.pairno, layover:los, os:0, edit:'', srcid:'mcal.'+p.pairno+'.'+p.award+'.'+pd.checkin.substr(0,10)+'.'+mc_init[mc_init.bulkv].equip, startd:pd.checkin.substr(0,10), endd:pd.checkout.substr(0,10), range:pd.checkin.substr(0,10)+" to "+pd.checkout.substr(0,10), sid:mc_edit.sid }; data={ cmd:'mod', action:'insert', srcid:io.srcid, pairno:io.pairno, type:'pairing', start:io.start, end:io.end }; // console.log(JSON.stringify(io)); mc_edit.changes.push(data); mc_init.mcal.push(io); mc_edit.redraw=true; mc_edit(mc_edit.obj); $("#mc_edit_btn_save").show(); } else { $("#mc_edit_btn_save").hide(); } return; } mc_edit.sid=Date.now(); if (typeof(mc_edit.redraw)=='undefined') { mc_edit.redraw=false; } mc_edit.obj=obj; if (! mc_edit.redraw) { mc_edit.changes=[]; } mc_edit.redraw=false; idate=$(obj).attr("data-date"); awd=$(obj).attr("data-award"); $(".mc_panel").hide(); txt=""; dfmt=""; for (i in mc_init.awards[awd].dates) { if (mc_init.awards[awd].dates[i].d==idate) { txt="
"+mc_init.awards[awd].dates[i].txt+"
"; dfmt=mc_init.awards[awd].dates[i].txt; // console.log("DFMT:"+dfmt); break; } } // txt+="
HERE
"; // Gaps: Pairing, VAC, GrdS Added evs=[]; for (i in mc_init.mcal) { mc_init.mcal[i].skip=1; mc_init.mcal[i].canreinsert=0; if (mc_init.mcal[i]['os'] == 1 || mc_init.mcal[i]['srcid'] == 'IMPCAL') { continue; } if (mc_init.mcal[i].type == 'deleted') { continue; } mc_init.mcal[i].skip=0; keep=1; imc=mc_init.mcal[i]; if (imc.pairno=='CUST') { keep=0; } if (imc.pairno=='ART') { keep=0; } if (imc.pairno.match(/SIM/)) { keep=0; } if ((imc.pairno=='GrdS')&&(! imc.srcid.match(/CPDM/))) { keep=0; } if ((imc.reserve=='off')&&(! imc.srcid.match(/CPDM/))) { keep=0; } if (keep) { evs.push(imc); } } evs.sort(function(a,b) { if (a.start < b.start) { return(-1); } if (b.start < a.start) { return(1); } if (a.end< b.end) { return(-1); } if (b.end< a.end) { return(1); } }); st=""; end=""; for (i in mc_init.awards) { if (! st) { st=mc_init.awards[i].start; } end=mc_init.awards[i].end; } gaps=[{start:st,end:end}]; dgaps=[]; for (i in evs) { ev=evs[i]; // console.log("Ev: "+i+" "+evs[i].pairno+" st:"+evs[i].start+" end:"+evs[i].end); en=gaps[gaps.length-1]; if (ev.endidate) { continue; } if (gaps[i].end.substr(0,10)=gaps[i].start)&&(idate+" 23:59:59"<=gaps[i].end)) { dt=new Date(gaps[i].end.replace(/-/g,"/")).getTime(); dt-=new Date(idate.replace(/-/g,"/")+" 00:00:00").getTime(); // dfree=(dt/(24*60*60*1000)); dfree=0; for (d in mc_init.awards[awd].dates) { if ((mc_init.awards[awd].dates[d].d>=idate)&& (mc_init.awards[awd].dates[d].in)&& (mc_init.awards[awd].dates[d].d+" 23:59:59"<=gaps[i].end)) { dfree++; } } // console.log("DFREE:"+dfree); } // console.log(idate+" "+gaps[i].start); if ((idate>=gaps[i].start.substr(0,10))&&(idate<=gaps[i].end.substr(0,10))) { eg=new Date(gaps[i].end).getTime(); // console.log("gap:"+JSON.stringify(gaps[i])); for (ir in rsv) { rend=new Date(idate+" "+rsv[ir].st).getTime() + (rsv[ir].hrs*60*60*1000); if ((rend <= eg)&&(idate+" "+rsv[ir].st >= gaps[i].start)) { // console.log("rsv:"+gaps[i].start+" "+gaps[i].end+" "+JSON.stringify(rsv[ir])) rsvcodes.push(rsv[ir].code); } } } dgaps.push(gaps[i]); gtxt+="
"+gaps[i].start+" - "+gaps[i].end+"
"; } // console.log("gaps:"+JSON.stringify(gaps)); // console.log("dgaps:"+JSON.stringify(dgaps)); seen={}; for (i in mc_init.mcal) { c=0; // Exception in Recur if ((mc_init.mcal[i].pairno=='CUST')&&(mc_init.mcal[i].recurx)) { c=(mc_init.mcal[i].type=='deleted'?2:0); rx=1; } else if (mc_init.mcal[i].type=='deleted') { c=1; rx=0; } if (! c) { continue; } mc=mc_init.mcal[i]; if ((c<3)&&(mc.startd>idate)) { continue; } if ((c<3)&&(mc.endd0)?" ":""; cgap=1; lab=mc.pairno; if (mc.pairno=='CUST') { cgap=0; lab=mc.text; } // console.log("reins:"+i+" "+cgap+" "+lab+" st:"+mc.start+" "+mc.end); reins="
"+ "
"+ "
"+ " Reinsert:"+lab+nic+"
"; if (! cgap) { mc_init.mcal[i].canreinsert=reins; continue; } for (ig in dgaps) { b=0; if ((mc.start>=dgaps[ig].start)&&(mc.end<=dgaps[ig].end)) { mc_init.mcal[i].canreinsert=reins; // console.log(JSON.stringify(dgaps[ig])); // console.log("Reins:"+JSON.stringify(mc_init.mcal[i])); break; b=1; } if (b) { break; } } } for (i in mc_init.mcal) { imc=mc_init.mcal[i]; // console.log(JSON.stringify(imc)); if (imc['srcid'].match(/LSD/)) { continue; } if (imc.canreinsert) { // console.log(JSON.stringify(imc)); txt+=imc.canreinsert; continue; } if (imc.skip) { continue; } ok=""; if ((imc['startd']<=idate)&&(imc['endd']>=idate)) { // console.log(JSON.stringify(imc)); ok="OK "; cc++; // console.log(cc+" "+i+" "+mc_init.mcal[i]['startd']+" "+mc_init.mcal[i]['endd']+" v "+idate+" "+mc_init.mcal[i]['text']); // console.log(JSON.stringify(mc_init.mcal[i])); itime=timespan(imc); itime.text+=(itime.text?" ":""); txt+="
"+ "
"+ "
"+ "
"+ "
"+itime.text+ imc[(imc.pairno=='CUST'?'text':'pairno')]+ "
"; } // console.log(i+" "+ok+imc.skip+" "+imc.canreinsert+" "+imc.startd+" "+imc.endd+" "+idate); } ptxt=""; for (ip in mc_init[mc_init.bulkv].pairings) { if (mc_init[mc_init.bulkv].pairings[ip].first > idate) { continue; } if (mc_init[mc_init.bulkv].pairings[ip].last < idate) { continue; } b=mc_init[mc_init.bulkv].pairings[ip]; for (d in b.dates) { if (b.dates[d].checkin.substr(0,10)!=idate) { continue; } ok=0; for (i in dgaps) { if ((b.dates[d].checkin>=dgaps[i].start)&&(b.dates[d].checkout<=dgaps[i].end)) { igap=dgaps[i].start+" "+gaps[i].end; ok=1; break; } } if (ok) { br=b.route; ih=b.html; ih=ih.replace("
","");
				ih=ih.replace("
",""); foo=ih.split("
"); ph=[] for (iline in foo) { ph.push(foo[iline].substr(0,88)); } ptxt+=""+ "
"+ " "+b.pairno+"
"+ ""+br+" "+""+ ""+ ""+ "
"+ph.join("
")+"
"; } } } eopts=""; for (ip in mc_init.bulk.positions) { p=mc_init.bulk.positions[ip]; s=(p.pos==mc_init.equip?" selected":""); eopts+=""; } foo=[]; if (ptxt) { foo.push({code:'pairing',desc:'Pairing',limit:0}); } foo.push({code:'cust',desc:'Custom Text',limit:0}); foo.push({code:'med',desc:'Medical',limit:0}); if (dfree) { if (idb.authCheck.group!='ACIF') { foo.push({code:'sim',desc:'SIM',limit:1}); } foo.push({code:'art',desc:'ART',limit:1}); foo.push({code:'vac',desc:'Vacation',limit:dfree}); foo.push({code:'grds',desc:'Ground School',limit:dfree}); foo.push({code:'other',desc:'Other',limit:dfree}); } if (rsvcodes.length) { foo.push({code:'rsv',desc:'Reserve Period',limit:rsvcodes.join(",")}); } inst="
"; for (i in foo) { inst+=(inst?" ":"")+ "
"+ " "+ foo[i].desc+"
"; } inst+="
"; txt+="
"+inst+"
"+ ""; $("#mc_mcal_edit_items").attr("data-date",idate); $("#mc_mcal_edit_items").attr("data-datefmt",dfmt); $("#mc_mcal_edit_items").attr("data-award",awd); $("#mc_mcal_edit_items").html(txt); $("#mc_edit_btn_save").hide(); $("#mc_mcal_edit").show(); $(".mc_add_btn").click(function() { event.stopPropagation(); did=$(this).attr("data-id"); if (did == 'pairing') { if ($(this).attr('data-on') == 0) { $("#mc_edit_btn_save").hide(); } else { $("#mc_edit_btn_save").show(); } } if (did.match(/rsv|vac|grds|sim|art|other/)) { idiv=$("
"); if ($(this).attr('data-on') == 0) { $("#mc_edit_btn_save").show(); } mc_edit(idiv); return; } if ((did=='cust')||(did=='med')) { edate=$("#mc_mcal_edit_items").attr("data-date"); idt=new Date(edate+" 00:00:00"); idt.setDate(idt.getDate() - idt.getDay()); ets=idt.getFullYear()+"-"+ ("00"+(idt.getMonth()*1+1)).substr(-2)+"-"+ ("00"+idt.getDate()).substr(-2); srcid='mcal.CUST.'+edate+'.'+mc_init.mcal.length; data={ pairno:did.toUpperCase(), startd:edate, endd:edate, start:edate+" 00:00:00", end:ets+" 00:00:00", type:"other", text:"", recur:"", recur_st:"", recur_end:"", alerts:[], bgcolour:"khaki", colour:"black", offset:mc_init.mcal.length, os:0, edit:"", srcid:srcid, reserve:"", sid:mc_edit.sid, allday:1, base:mc_init.base, disp_tz:mc_init.cust_ltz, recurx:0, range:'' }; mc_init.mcal.push(data); idiv=$("
"); if (did=='med' && $(this).attr('data-on') == 0) { $("#mc_edit_btn_save").show(); } mc_edit(idiv); return; } on=($(this).attr('data-on')==1); $(".mc_add_btn").attr('data-on',0); $(".mc_add_panel").hide(); if (! on) { $(this).attr('data-on',1); $("#mc_add_"+$(this).attr('data-id')).show(); } }); $(window).scrollTop(0); } function mc_cust_text_len() { d=$("#mc_cust_text").attr("data-days")*1; if (d==1) { ml=20; } else if (d==2) { ml=40; } else if (d==3) { ml=50; } else { ml=100; } v=$("#mc_cust_text").val(); v=v.replace(/\n/g,""); l=v.length; // if (l>ml) { v=v.substr(0,ml); } // $("#mc_cust_text").val(v); l=v.length; ic=((l>=ml)||(!l))?" ":""; $("#mc_cust_text_used").html(ic+l+"/"+ml+" Characters Used"); if (! l) { $("#mc_edit_btn_save").hide(); } else { $("#mc_edit_btn_save").show(); } } function mc_cust_date_set(srcid) { // console.log("DATE SET "+srcid); recur={except:"",opts:""}; if (srcid=='mc_cust_date') { imc=mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1]; imc.startd=$("#mc_cust_date").attr("data-startd"); imc.endd=$("#mc_cust_date").attr("data-endd"); imc.recur=""; imc.recur_st=""; imc.recur_end=""; mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1]=imc; } if (srcid=='mc_recur_until') { imc=mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1]; until=$("#mc_recur_until").attr("data-startd"); iu=(until==0?"":";UNTIL="+until); recur=imc.recur; if (recur.match(/UNTIL/)) { recur=recur.replace(/;UNTIL=[0-9|-]*/,iu); } else if (iu) { recur+=iu; } mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1].recur=recur; // console.log("Recur:"+recur+" -- until:"+until+" iu:"+iu); } obj=document.getElementById('mc_cust_date'); imc=mc_init.mcal[$(obj).attr('data-io')*1]; diff=new Date(($(obj).attr("data-endd")<$(obj).attr("data-startd")?$(obj).attr("data-startd"):$(obj).attr("data-endd"))).getTime(); diff-=new Date($(obj).attr("data-startd")).getTime(); diff/=(24*60*60*1000); diff++; $("#mc_cust_text").attr("data-days",diff); if (diff==1) { lh=1; mxc=20; } else if (diff==2) { lh=2; mxc=40; } else if (diff==3) { lh=2; mxc=50; } else { lh=4; mxc=100; } $("#mc_cust_text").height(lh*20); mc_cust_text_len(); $("#mc_cust_date").attr("data-norange",(imc.recur?0:0)); recur=customRecur(recurStr($(obj).attr("data-startd")),imc.recur); if (recur.until<=$(obj).attr("data-startd")) { recur.until=""; } txt=(recur.opts?"":""); txt+="
"; if (imc.recur) { txt+="
Until
"+ "
"+ "
"+(recur.until?recur.until:"Forever")+ "
"+ "
"+ (recur.until?"
Clear
":""); } txt+="
"; txt+="
"; if (recur.except.length) { txt+="
Except
"; for (i in recur.except) { txt+="
"+ "
"+recur.except[i]+ "
"; } txt+="
"; } txt+=""; $("#mc_cust_recur").html(txt); } function mk_cal_evt(obj,onset) { if (obj.id=='mc_cust_recur_str') { $(".mk_cal").detach(); $(".mk_cal_parent").show(); $("#mc_cust_recur_except").html(""); mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1].recur=$(obj).val(); if ($(obj).val()) { $("#cust_date_label").html("First Date:"); } else { $("#cust_date_label").html("Date:"); } mc_cust_date_set(); } if (obj.id=='mc_recur_until_clear') { $('#mc_recur_until_clear').detach(); $('#mc_recur_until').attr("data-startd",""); // mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1]=imc; recur=$("#mc_cust_recur_str").val(); xs=""; $(".mc_recurexcept").each(function() { xs+=(xs?",":"")+$(this).attr("data-date"); }); if (xs) { recur+=";EXCEPT="+xs; } mc_init.mcal[$("#mc_edit_CUST").attr('data-io')*1].recur=recur; mc_cust_date_set(); } else if (typeof($(obj).attr("data-startd"))!='undefined') { $(".mk_cal").detach(); $(".mk_cal_parent").show(); $(obj).hide(); // console.log("recur:"+$("#mc_cust_recur_str").val()+" pid:"+$(obj).parent().id); nr=0; if ($("#mc_cust_recur_str").val()) { nr=1; } mk=mk_cal({ pid:obj.id, month:($(obj).attr("data-month")?$(obj).attr("data-month"):$(obj).attr("data-startd")), start:$(obj).attr("data-startd"), end:$(obj).attr("data-endd"), norange:($(obj).attr("data-norange")*1?1:0), click:0, change:0 }); // console.log("HERE"); mk_cal_evt.onset=(onset?onset:false); mk_cal_evt.start=$(obj).attr("data-startd"); mk_cal_evt.end=$(obj).attr("data-endd"); $(obj).parent().attr("data-display",$(obj).parent().css("display")); $(obj).parent().css({display:'block'}); $(obj).parent().append(mk); } else if ($(obj).attr("data-month")) { p=$(obj).parent().parent(); mk=mk_cal({ pid:$(p).attr("data-pid"), month:$(obj).attr("data-month"), start:$(p).attr("data-start"), end:$(p).attr("data-end"), click:$(p).attr("data-click"), norange:$(p).attr("data-norange"), change:0 }); $(p).replaceWith(mk); } else if ($(obj).attr("data-date")) { p=$(obj).parent().parent(); // console.log(p.id+" clicked:"+$(p).attr("data-click")+" norange:"+$(p).attr("data-norange")); if (($(p).attr("data-click")*1==0)||($(p).attr("data-norange")*1==1)) { st=$(obj).attr("data-date"); en=$(obj).attr("data-date"); cl=($(p).attr("data-norange")*1==1?0:1); } else { st=$(p).attr("data-start"); en=$(obj).attr("data-date"); cl=0; if (st>en) { i=en; en=st; st=i; } } par=document.getElementById($(p).attr("data-pid")); $(par).attr("data-startd",st); $(par).attr("data-endd",en); mk=mk_cal({ pid:$(p).attr("data-pid"), month:$(obj).attr("data-date"), start:st, end:en, click:cl, norange:$(p).attr("data-norange"), change:1 }); $(p).replaceWith(mk); } else if ($(obj).attr("data-set")) { p=$(obj).parent().parent(); par=document.getElementById($(p).attr("data-pid")); isok=false; if ($(obj).attr("data-set")=='ok') { st=$(p).attr("data-start"); en=$(p).attr("data-end"); isok=true; } else { st=mk_cal_evt.start; en=mk_cal_evt.end; } // console.log(p.id+" "+isok+" "+st+" to "+en); $(par).parent().css({display:$(par).parent().attr("data-display")}); // $(par).parent().css({display:'inline-block'}); $(par).attr("data-startd",st); $(par).attr("data-endd",en); $(par).html(date_format(st)+(en>st?" to "+date_format(en):"")); if ((isok)&&(mk_cal_evt.onset)) { // console.log("Trigger ONSET"); mk_cal_evt.onset(); } $(".mk_cal").detach(); $(".mk_cal_parent").show(); mc_cust_date_set(); } } function mk_cal(args) { dfmt=function(fd) { ts=fd.getFullYear()+"-"+ ("00"+(fd.getMonth()*1+1)).substr(-2)+"-"+ ("00"+fd.getDate()).substr(-2); return(ts); }; mos={ "01":"Jan", "02":"Feb", "03":"Mar", "04":"Apr", "05":"May", "06":"Jun", "07":"Jul", "08":"Aug", "09":"Sep", "10":"Oct", "11":"Nov", "12":"Dec" }; wds=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; imo=args.month.substr(0,7); idate=imo+"-01 00:00:00"; idate=idate.replace(/-/g,"/"); dt=new Date(idate); idt=new Date(idate); idt.setDate(idt.getDate() - 1); pm=dfmt(idt); idt.setDate(idt.getDate() + 32); nm=dfmt(idt); idt=new Date(idate); idt.setDate(idt.getDate() - idt.getDay()); dts=[]; ll=0; while (ll<50) { ts=idt.getFullYear()+"-"+ ("00"+(idt.getMonth()*1+1)).substr(-2)+"-"+ ("00"+idt.getDate()).substr(-2); ts=dfmt(idt); dts.push(ts); idt.setDate(idt.getDate() + 1); ll++; if ((idt.getDate()>dt.getDate())&& (idt.getMonth()!=dt.getMonth())&& (! idt.getDay())) { break; } } // console.log("HERE"); // console.log("args:"+JSON.stringify(args)); str="
"; str+="
"+ "
"+mos[pm.substr(5,2)]+"
"+ "
"+mos[idate.substr(5,2)]+" "+idate.substr(0,4)+"
"+ "
"+mos[nm.substr(5,2)]+"
"+ "
"; for (i in wds) { str+="
"+wds[i]+"
"; } str+="
"; for (i=0;iargs.start)) { st='leadout'; } else { st=''; } oc=(st.match(/disabled|leadin/)?'':" onclick='mk_cal_evt(this)'"); // console.log(d+" "+st+" "+mco+" "+args.norange+" "+(args.norange*1)+" "+((args.norange*1)?"norange":"range")); str+="
"+(st=='disabled'?' ':(d.substr(-2)*1))+"
"; } str+="
"; } str+="
"+ "
Cancel
"+ "
Submit
"+ "
"; str+=""; return(str); } function mc_cust(iobj) { idate=$(iobj).attr("data-date"); iweek=$(iobj).attr("data-week"); iawd=$(iobj).attr("data-award"); $(iobj).closest('.tr').css('margin-bottom', "0px"); if ((0)&&($(iobj).attr("data-hascust")!=1)) { $(".cal_week").hide(); $(".tdhc").attr("data-on",0); return; } if ($("#week_"+iawd+"_"+iweek).attr("data-date")==idate) { $("#week_"+iawd+"_"+iweek).attr("data-date",""); $("#week_"+iawd+"_"+iweek).hide(); $(".tdhc").attr("data-on",0); return; } iday=$(iobj).attr("data-day"); $(".cal_week").hide(); $(".cal_week").closest('.tr').css('margin-bottom', "0px"); io=iday*mc_cust.tdw-11+(mc_cust.tdw/2); txt="
"; // console.log("mc_cust:"+idate+" "+iweek); cc=0; itxt=""; for (i in mc_init.mcal) { // console.log(i+" "+mc_init.mcal[i].pairno+" "+mc_init.mcal[i].type); if ((mc_init.mcal[i]['startd']<=idate)&&(mc_init.mcal[i]['endd']>=idate)) { cc++; nic=(mc_init.mcal[i].sid>0)?" ":""; // console.log(cc+" "+i+" "+mc_init.mcal[i]['startd']+" "+mc_init.mcal[i]['endd']+" v "+idate+" "+mc_init.mcal[i]['text']); // console.log(JSON.stringify(mc_init.mcal[i])); itime=timespan(mc_init.mcal[i]); itime.text+=(itime.text?" ":""); if (mc_init.mcal[i].type=='deleted') { itxt+=(mc_init.mcal[i].pairno=='CUST'?"":"
"+ "
"+mc_init.mcal[i].range+"
"+ "
Deleted: "+itime.text+mc_init.mcal[i].pairno+nic+"
"+ "
"); } else { c=(mc_init.mcal[i]['bgcolour']?mc_init.mcal[i]['bgcolour']:'silver'); itxt+="
"+ "
"+mc_init.mcal[i]['range']+"
"+ "
"+itime.text+ (typeof(mc_init.mcal[i]['longtext'])!='undefined'?mc_init.mcal[i]['longtext'].replace(/\|/g," "):mc_init.mcal[i]['text'])+nic+ "
"+ "
"; } } } txt+=(itxt?"
Click to Add/Edit
"+itxt:"
No Events, Click to Add
"); $("#week_"+iawd+"_"+iweek).attr("data-date",idate); $("#weektxt_"+iawd+"_"+iweek).html(txt); $("#week_"+iawd+"_"+iweek).closest('.tr').css('margin-bottom', ($("#week_"+iawd+"_"+iweek).outerHeight() + 8) + "px"); $("#week_"+iawd+"_"+iweek).show(); // console.log("==> "+$(iobj).offset().top+" "+$(iobj).height()); if (1) { ob=$(iobj).offset().top -$(window).scrollTop() +$("#week_"+iawd+"_"+iweek).height() +$(iobj).height() +30 -$('body').height(); if (ob>0) { $(window).scrollTop($(window).scrollTop()+ob); /* console.log("MV BH:"+$('body').height()+" "+ "T:"+$(iobj).offset().top+" "+ "TH:"+$(iobj).height()+" "+ "ST:"+$(window).scrollTop()+" "+ "H:"+$("#week_"+iweek).height()+" -> "+ob); */ } } } function customRecur(dstr,val) { foo=dstr.split(" "); // console.log(JSON.stringify(foo)); // 0 1 2 3 4 5 6 7 8 // 2nd Sat Mar 10th Last DOW Last DOM 2 10 3 opts=new Array(); ucwd=foo[1].substr(0,2).toUpperCase(); opts.push({ical:"",desc:"Non-Recurring"}); opts.push({ical:"FREQ=WEEKLY;BYDAY="+ucwd,desc:"Weekly ["+foo[1]+"]"}); opts.push({ical:'FREQ=MONTHLY;BYMONTHDAY='+foo[7],desc:"Monthly ["+foo[3]+"]"}); opts.push({ical:'FREQ=MONTHLY;BYDAY='+foo[6]+ucwd,desc:"Monthly ["+foo[0]+" "+foo[1]+"]"}); if (foo[4]>0) { opts.push({ical:'FREQ=MONTHLY;BYDAY=-1'+ucwd,desc:"Monthly [Last "+foo[1]+"]"}); } if (foo[5]>0) { opts.push({ical:'FREQ=MONTHLY;BYMONTHDAY=-1',desc:"Monthly [Last Day of Month]"}); } opts.push({ical:'FREQ=YEARLY',desc:"Yearly ["+foo[2]+" "+foo[3]+"]"}); opts.push({ical:'FREQ=YEARLY;BYMONTH='+foo[8]+';BYDAY='+foo[6]+ucwd,desc:"Yearly ["+foo[0]+" "+foo[1]+" in "+foo[2]+"]"}); if (foo[4]>0) { opts.push({ical:'FREQ=YEARLY;BYMONTH='+foo[8]+';BYDAY=-1'+ucwd,desc:"Yearly [Last "+foo[1]+" in "+foo[2]+"]"}); } str=""; sel=false; ival=""; except=[]; until=""; if (val) { v=val.split(";"); for (i in v) { if (v[i].match(/EXCEPT/)) { except=v[i].replace("EXCEPT=","").split(","); } else if (v[i].match(/UNTIL/)) { until=v[i].replace("UNTIL=",""); } else { ival+=(ival?";":"")+v[i]; } } } for (i in opts) { s=''; if (opts[i].ical==ival) { sel=true; s='selected'; } str+=""; } foo={opts:str,except:except,until:until}; return(foo); } function pb_scroll(src) { if ((typeof(pb_scroll.pmap)=='undefined')||(src==2)) { pmap=[]; min=false; max=false; i=0; $(".pb_pairing").each(function() { i++; pmap.push({ pairno:$(this).attr('data-pairno'), date:$(this).attr('data-date'), t:$(this).position().top, h:$(this).height(), id:"pmap"+i, ref:this.id }); if (min===false) { min=$(this).position().top; } max=$(this).position().top+$(this).height(); }); wh=$(window).height()-min; // console.log("min:"+min+" max:"+max+" wh:"+wh); idiv=""; $("#pmap").detach(); $("body").append(idiv); $(".pb_map").unbind(); $(".pb_map").click(function() { st=$("#"+$(this).attr('data-ref')).position().top-min; $(window).scrollTop(st); }); pb_scroll.pmap={ min:min, max:max, map:pmap }; return; } pb_scroll.cnt++; // console.log("NOSHOW:"+pb_scroll.noshow); if (pb_scroll.noshow) { return; } if (pb_scroll.cnt<2) { return; } $(".pb_map").attr("data-on",0); $("#pmap").stop(); $("#pmap").show(); $("#pmap").css({opacity:.8}); if (typeof(pb_scroll.tid)!='undefined') { clearTimeout(pb_scroll.tid); } st=$(window).scrollTop()+pb_scroll.pmap.min; wh=st+$(window).height(); for (i in pb_scroll.pmap.map) { // console.log(i+" window "+st+" "+wh+" v "+pb_scroll.pmap.map[i].t+" "+pb_scroll.pmap.map[i].h); if ((wh>=pb_scroll.pmap.map[i].t+pb_scroll.pmap.map[i].h)&&(st<=pb_scroll.pmap.map[i].t)) { $("#"+pb_scroll.pmap.map[i].id).attr("data-on",2); } else if ((wh>=pb_scroll.pmap.map[i].t)&&(st<=pb_scroll.pmap.map[i].t+pb_scroll.pmap.map[i].h)) { $("#"+pb_scroll.pmap.map[i].id).attr("data-on",1); } } pb_scroll.tid=setTimeout(function() { $("#pmap").fadeOut(2000); },1000); } function pb_init() { $(".pb_hassub").unbind(); $(".pb_tab").unbind(); $(".pb_icon").unbind(); $(".pb_details").unbind(); $(".pb_ddcalc").unbind(); $(".pb_ccalc").unbind(); $("#pb_view_btn").unbind(); $(".cal_week").unbind(); $(".calrbtn").unbind(); $(".cc_btn").unbind(); $(".pb_hassub").click(function() { sub=document.getElementById(this.id.replace("head","sub")); if ($(this).attr("data-open")==1) { $(sub).hide(); $(this).attr("data-open",0); } else { $(sub).show(); $(this).attr("data-open",1); } }); $(".pb_tag").click(function() { ion=($(this).attr("data-on")==1?true:false); $(".pb_details").hide(); $(".pb_icon").attr("data-on",0); $(".pb_tag").attr("data-on",0); if (! ion) { $(this).attr("data-on",1); $("#"+this.id.replace("tag_","")).show(); } }); $(".pb_icon").click(function() { isub=$(this).attr("data-sub"); itype=$(this).attr("data-type"); ion=($(this).attr("data-on")==1?true:false); $(".pb_details").hide(); $(".pb_icon").attr("data-on",0); $(".pb_tag").attr("data-on",0); if (! ion) { $(this).attr("data-on",1); $("#pbd_"+isub+"_"+itype).show(); } }); $(".pb_details").click(function() { $(".pb_details").hide(); $(".pb_icon").attr("data-on",0); $(".pb_tag").attr("data-on",0); }); $(".pb_ddcalc").click(function(event) { event.stopPropagation(); //ddTree.cfg=$(this).attr("data-calc"); menuHandler("dd"); }); $(".pb_ccalc").click(function(event) { event.stopPropagation(); cc_init.cfocus={ iso_country:$(this).attr("data-iso_country"), iso:$(this).attr("data-iso") }; console.log("PB focus json:"+JSON.stringify(cc_init.cfocus)); menuHandler("cc"); }); $("#pb_view_btn").click(function() { clearTimeout(pb_init.nsto); pb_scroll.noshow=1; if ($("#pb_view").attr("data-view")=="list") { pb_init.st_list=$(window).scrollTop(); // console.log("top:"+pb_init.st_list); $(".pb_view").hide(); $("#pb_view").removeClass("fa-calendar-alt"); $("#pb_view").addClass("fa-list-ul"); $("#pb_view_cal").show(); $("#pb_view").attr("data-view","cal"); $(window).scrollTop(0); } else { // console.log("top:"+pb_init.st_list); $(".pb_view").hide(); $("#pb_view").removeClass("fa-list-ul"); $("#pb_view").addClass("fa-calendar-alt"); $("#pb_view_list").show(); $("#pb_view").attr("data-view","list"); $(window).scrollTop(pb_init.st_list); } url=idb.handler+"?accessFeature="+"pb:"+$("#pb_view").attr("data-view")+ "&eid="+idb.authCheck.eid+ "&userid="+idb.authCheck.userid; $.get(url); pb_init.nsto=setTimeout(function() { // console.log("clear noshow"); pb_scroll.noshow=0; },2000); }); } async function pd_setPref(pref,v) { pi=false; if (pref=='equip') { s_equip=pd_init.pd_prefs.equip; if (idb.authCheck.group=='ACIF') { foo=v.split(" "); if (foo.length>3) { foo.pop(); } iv=foo.join(" "); ifoo=pd_init.pd_prefs.equip.split(" "); gb=false; for (i=0;i<3;i++) { if (ifoo[i]!=foo[i]) { gb=true; } } if (pd_init.equip!=iv) { pd_init.usebulk=0; } else { pd_init.usebulk=1; } console.log(v+" s:'"+foo.join(" ")+"' pdi:'"+pd_init.equip+"' ub:"+pd_init.usebulk); foo.push(foo.shift()); console.log(foo.join(" ")); iv=foo.join(" "); pd_init.pd_prefs.equip=v; } else { if (v=='ALL-A') { v=""; } pd_init.usebulk=(pd_init.equip==v?1:0); pd_init.pd_prefs.equip=v; gb=(pd_init.pd_prefs.equip==v); iv=v; } if ((! pd_init.usebulk)&&(gb)) { data=await getRec("elogSync","bulkx"); if (typeof(data)=='undefined') { data={ Action:'bulkx', requip:iv, equip:'' } } console.log("getbulk:"+iv+" vs "+gb+" "+bulk.equip); data.requip=iv; putRec("elogSync","bulkx",data); $("#loading").show(); $.get("/sw/getBulkx/").done(function(data) { mc_init.bulkx=JSON.parse(data); pd_blankprefs(); pd_init(); }) .fail(function(xhr,ts,et) { alert("Can't reach Crewsware"), pd_init.prefs.equip=s_equip; pd_init(); }); return; } pd_blankprefs(); pd_init(); return; } else if (pref=='award') { pd_init.pd_prefs=false; pd_init.award=v; } else if (pref=='route') { pd_init.pd_prefs.route.route=v; } else { pd_init.pd_prefs[pref]=v; } if ((1)||(pd_init.usebulk)) { pd_search(); } else { pd_init(pi); } } function pd_blankprefs(ibtn) { if (typeof(ibtn)=='undefined') { ibtn=false; } if (! ibtn) { pd_init.pd_prefs.ac=""; pd_init.pd_prefs.acx=0; pd_init.pd_prefs.route={type:"lo",route:"ALL"}; pd_init.pd_prefs.days=[]; pd_init.pd_prefs.dates={type:"start",dates:[],wkdays:[]}; pd_init.pd_prefs.dranges=[]; pd_init.pd_prefs.credit={min:0,max:0} pd_init.pd_prefs.expenses={min:0,max:0} pd_init.pd_prefs.dh="X"; $("#prefs_dates").html(bulkawd.calendar); } var rbtns={ "dh":{class:".dhbtn",val:'X'}, "acx":{class:".acxbtn",val:'0'}, "route":{class:".routebtn",val:'lo',route:"ALL"} }; for (ivar in rbtns) { if ((ibtn)&&(ivar!=ibtn)) { continue; } if ((ibtn)&&(ivar=='route')) { pd_init.pd_prefs.route={type:rbtns[ivar].val,route:rbtns[ivar].route}; } else if (ibtn) { pd_init.pd_prefs[ivar]=rbtns[ivar].val; } iclass=rbtns[ivar].class; $(iclass).attr("data-on",0); $(iclass+"[data-v='"+rbtns[ivar].val+"']").attr("data-on",1); $(iclass).removeClass("fa-check-circle"); $(iclass).addClass("fa-circle"); $(iclass+"[data-v='"+rbtns[ivar].val+"']").removeClass("fa-circle"); $(iclass+"[data-v='"+rbtns[ivar].val+"']").addClass("fa-check-circle"); } } function pd_setDatePref() { v=$(".datebtn[data-on='1']").attr("data-v"); pd_init.pd_prefs.dates.type=v; wd=[]; $(".calhbtn[data-on='1']").each(function() { wkd=$(this).attr("data-wkday")*1; if ((wkd>=1)&&(wkd<=7)) { wd.push(wkd); } }); if (wd.length) { pd_init.pd_prefs.dates.wkdays=wd; pd_init.pd_prefs.dates.dates=[]; } else { v=[]; $(".calbtn[data-on='1']").each(function() { v.push($(this).attr("data-v")); }); pd_init.pd_prefs.dates.dates=v; pd_init.pd_prefs.dates.wkdays=[]; } ond=[]; dranges=[]; var bon=[]; $(".calbtn[data-on='1']").each(function() { bon.push({v:$(this).attr("data-v"),seq:$(this).attr("data-seq")}); }); if (wd.length) { $(".calpad").each(function() { console.log("pad "+wd.includes($(this).attr("data-wkday")*1)+" "+$(this).attr("data-wkday")+" "+$(this).attr("data-v")+" "+$(this).attr("data-seq")); if (wd.includes($(this).attr("data-wkday")*1)) { bon.push({v:$(this).attr("data-v"),seq:$(this).attr("data-seq")}); } }); } last=0; console.log(JSON.stringify(bon)); for (i in bon) { iarr=bon[i]; iseq=iarr.seq*1; v=iarr.v; if (wd.length) { if ((dranges.length>0)&&(iseq - last==1)) { dranges[dranges.length-1].end=v+" 23:59:59"; } else { dranges.push({start:v+" 00:00:00",end:v+" 23:59:59"}); } last=iseq; } else { if (! dranges.length) { dranges.push({start:v+" 00:00:00",end:v+" 23:59:59"}); } else { dranges[0].end=v+" 23:59:59"; } } } console.log(JSON.stringify(dranges)); pd_init.pd_prefs.dranges=dranges; pd_search(); // pd_init("count"); } function pd_getrecent(obj) { setRecent=function(recent) { // console.log("setRecent:"+JSON.stringify(recent)); $("#pdview_recent").html(recent.html); if (recent.count>0) { $("#pd_vselect").show(); $(".pdview").hide(); $("#pdview_"+pd_init.pd_cview).show(); $(".pd_vbtn").attr("data-on",0); $("#pd_vbtn_"+pd_init.pd_cview).attr("data-on",1); } else { pd_init.pd_cview="filter"; $("#pd_vselect").hide(); $(".pdview").hide(); $("#pdview_filter").show(); } }; idata={getrecent:1,pd_prefs:pd_init.pd_prefs}; if (typeof(obj)!='undefined') { // console.log("OBJ:"+typeof(obj)); if ($(obj).attr("data-type").match(/html|pdf/)) { idata={getresults:$(obj).attr("data-type"),offset:$(obj).attr("data-offset"),pd_prefs:pd_init.pd_prefs}; // console.log($(obj).attr("data-type")+" -> "+JSON.stringify(idata)); pd_getpairings(idata); return; } if ($(obj).attr("data-type")=="delete") { idata.delete=$(obj).attr("data-delete"); } else if ($(obj).attr("data-type")=="clear") { idata.delete="ALL"; } $("#loading").show(); } // console.log(JSON.stringify(idata)); $.get(pd_init.url,idata).done(function(data) { rdata=JSON.parse(data); setRecent(rdata); $("#loading").hide(); }); } function pd_getpairings(idata) { ua=navigator.userAgent; ios=(ua.match(/iPad|iPhone/))?1:0; if (idata.getresults=='pdf') { $("#loading").show(); idata.ios=ios; var BULK=(pd_init.usebulk?mc_init.bulk:mc_init.bulkx); for (i in idata.pairs) { idata.pairs[i]=BULK.pairings[idata.pairs[i]].pairno; } $.ajax({ url:pd_init.url, method:'GET', data:idata, xhrFields: { responseType: (ios?'':'blob') }, success:function(data) { dt=new Date(); ts=dt.getFullYear()+"-"+ ("00"+(dt.getMonth()*1+1)).substr(-2)+"-"+ ("00"+dt.getDate()).substr(-2)+"-"+ ("00"+dt.getHours()).substr(-2)+ ("00"+dt.getMinutes()).substr(-2)+ ("00"+dt.getSeconds()).substr(-2); fn=pd_init.pd_prefs.award+" "+pd_init.pd_prefs.equip+" "+ts+".pdf"; // alert("Here iOS: "+ios); if (ios) { url=pd_init.url+"?fetchpdf="+data+"&fn="+encodeURIComponent(fn); // alert(url); // window.open(url,"_blank"); // $("#loading").hide(); document.location=url; } else { $("#pdfdata").detach(); url = window.URL.createObjectURL(data); $("#phtml").html(""); $("#phtml").show(); $("#pdfdata").attr("href",url); $("#pdfdata").attr("download",fn); document.getElementById('pdfdata').removeAttribute('target'); document.getElementById('pdfdata').click(); window.URL.revokeObjectURL(url); $("#loading").hide(); pd_recent('update'); } } }); } else { pd_search(); $("#loading").show(); $.get(pd_init.url,idata).done(function(data) { // console.log(data); $("#phtml").html(data); $("#phtml").show(); $("#phtml").focus(); $("#loading").hide(); $(window).scrollTop($("#phtml").position().top); pd_getrecent(); }); } } function pd_search(usepref) { if ((0)&&(! pd_init.usebulk)) { pd_init(false); return; } console.log("dranges:"+pd_init.pd_prefs.dranges.length); var pcount=0; var prefs=(usepref?usepref:pd_init.pd_prefs); if (usepref) { if (! prefs.dates.dates) { prefs.dates.dates=[]; } if (! prefs.dates.wkdays) { prefs.dates.wkdays=[]; } if (! prefs.credit) { prefs.credit={min:0,max:0}; } if (! prefs.expenses) { prefs.expenses={min:0,max:0}; } if (! prefs.dh) { prefs.dh="X"; } if (! prefs.days) { prefs.days=[]; } prefs.dranges=[]; if (prefs.dates.wkdays.length) { for (i in prefs.dates.wkdays) { prefs.dates.wkdays[i]=prefs.dates.wkdays[i]+""; } var bon=[]; $(".calbtn").each(function() { if (prefs.dates.wkdays.includes($(this).attr("data-wkday"))) { bon.push({v:$(this).attr("data-v"),seq:$(this).attr("data-seq")}); } }); $(".calpad").each(function() { if (prefs.dates.wkdays.includes($(this).attr("data-wkday"))) { bon.push({v:$(this).attr("data-v"),seq:$(this).attr("data-seq")}); } }); var dranges=[]; var last=0; for (i in bon) { iarr=bon[i]; iseq=iarr.seq*1; v=iarr.v; if ((dranges.length>0)&&(iseq - last==1)) { dranges[dranges.length-1].end=v+" 23:59:59"; } else { dranges.push({start:v+" 00:00:00",end:v+" 23:59:59"}); } last=iseq; } prefs.dranges=dranges; } } var stats; var mlr; var base; var award; $("#phtml").html(""); var BULK=(pd_init.usebulk?mc_init.bulk:mc_init.bulkx); if (! BULK) { return; } if (idb.authCheck.group=='ACIF') { if (prefs.equip) { stats=pd_init.pd_prefs.equip.split(" "); mlr=stats.shift(); base=stats.shift(); } else { stats=BULK.equip.split(" "); mlr=stats.pop(); base=stats.shift(); } } else { if (prefs.equip) { mlr=(prefs.equip.match(/[0-9]{2}R/)?"R":"ML"); } else { mlr=(BULK.equip.match(/[0-9]{2}R/)?"R":"ML"); } } if (prefs.award) { award=prefs.award; } else if (typeof(BULK.awards)!='undefined') { award=""; for (i in BULK.awards) { if (i>award) { award=i; } } } // console.log("award:"+award+" mlr:"+mlr+" base:"+base+" stats:"+JSON.stringify(stats)); var mpairs=[]; var opts={lo:{},land:{},days:{},ac:{},acx:{},stat:{},expenses:{min:false,max:false},credit:{min:false,max:false},dh:{}}; var fail={award:0,mlr:0,stat:0,ac:0,acx:0,date:0,route:0,days:0,credit:0,expenses:0,dh:0}; if (prefs.ac=="ALL-A") { prefs.ac=""; } console.log("prefs:"+JSON.stringify(prefs)); if ((prefs.expenses.min>prefs.expenses.max)&&(prefs.expenses.max)) { imax=prefs.expenses.min; prefs.expenses.min=prefs.expenses.max; prefs.expenses.max=imax; } for (ip in BULK.pairings) { var pair=BULK.pairings[ip]; if (pair.award!=award) { fail.award++; continue; } if (pair.search.mlr!=mlr) { fail.mlr++; continue; } ok=true; for (i in stats) { if (! pair.search.stat[stats[i]]) { fail.stat++; ok=false; break; } } if (! ok) { continue; } ok=true; // // Credit // if ((ok)&&(prefs.credit.min||prefs.credit.max)) { if ((prefs.credit.min>prefs.credit.max)&&(prefs.credit.max)) { imax=prefs.credit.min; prefs.credit.min=prefs.credit.max; prefs.credit.max=imax; } if ((prefs.credit.min)&&(pair.search.credit < prefs.credit.min)) { ok=false; } if ((prefs.credit.max)&&(pair.search.credit > prefs.credit.max)) { ok=false; } if (! ok) { fail.credit++; } } // // Expenses // if ((ok)&&(prefs.expenses.min||prefs.expenses.max)) { if ((prefs.expenses.min)&&(pair.search.expenses < prefs.expenses.min)) { ok=false; } if ((prefs.expenses.max)&&(pair.search.expenses > prefs.expenses.max)) { ok=false; } if (! ok) { fail.expenses++; } } // // Aircraft // if ((ok)&&(prefs.ac)) { if ((prefs.acx*1)&&(prefs.ac)&&(pair.search.equip[prefs.ac])) { ok=false; fail.acx++; } if ((! prefs.acx*1)&&(! pair.search.equip[prefs.ac])) { ok=false; fail.ac++; } } // // Deadhead // if ((ok)&&(prefs.dh!="X")) { if (prefs.dh!=pair.search.dh) { ok=false; fail.dh++; } } // // Date Ranges // if ((ok)&&(prefs.dranges.length)) { itype=prefs.dates.type; if (itype=='notouch') { for (d in pair.dates) { ok=true; for (dr in prefs.dranges) { if ((pair.dates[d].checkin>=prefs.dranges[dr].start)&&(pair.dates[d].checkin<=prefs.dranges[dr].end)) { ok=false; break; } if ((pair.dates[d].checkout>=prefs.dranges[dr].start)&&(pair.dates[d].checkout<=prefs.dranges[dr].end)) { ok=false; break; } if ((pair.dates[d].checkin<=prefs.dranges[dr].start)&&(pair.dates[d].checkout>=prefs.dranges[dr].end)) { ok=false; break; } } if (ok) { console.log(pair.pairno+" "+JSON.stringify(pair.dates[d])); break; } } } else { ok=false; for (d in pair.dates) { for (dr in prefs.dranges) { if ((itype=='dep')&&(pair.dates[d].checkin>=prefs.dranges[dr].start)&&(pair.dates[d].checkout<=prefs.dranges[dr].end)) { ok=true; break; } if ((itype=='start')&&(pair.dates[d].checkin>=prefs.dranges[dr].start)&&(pair.dates[d].checkin<=prefs.dranges[dr].end)) { ok=true; break; } if ((itype=='touch')&&(pair.dates[d].checkin<=prefs.dranges[dr].end)&&(pair.dates[d].checkout>=prefs.dranges[dr].start)) { ok=true; break; } } if (ok) { break; } } } if (! ok) { fail.date++; continue; } } // // Route // if ((ok)&&(prefs.route.route!='ALL')) { if (! pair.search[prefs.route.type][prefs.route.route]) { ok=false; fail.route++; } // console.log(pair.pairno+" "+ok+" "+prefs.route.route+" "+prefs.route.type+" "+JSON.stringify(pair.search[prefs.route.type])); } // // Days // if (ok) { opts.days[pair.search.days]++; } if ((ok)&&(prefs.days.length)) { ok=false; for(i in prefs.days) { if (pair.search.days==prefs.days[i]) { ok=true; break; } } if (! ok) { fail.days++; } } if (ok) { for (i in pair.search.stat) { opts.stat[i]++; } for (i in pair.search.lo) { opts.lo[i]++; } for (i in pair.search.land) { opts.land[i]++; } for (i in pair.search.equip) { opts.ac[i]++; } opts.dh[pair.search.dh]++; pair.search.credit*=1; pair.search.expenses*=1; if ((! opts.credit.min)||(pair.search.creditopts.credit.max)) { opts.credit.max=pair.search.credit; } if (pair.search.expenses) { if ((! opts.expenses.min)||(pair.search.expensesopts.expenses.max)) { opts.expenses.max=pair.search.expenses; } } mpairs.push(ip); } if (((prefs.acx)&&(! prefs.ac)&&(ok))||((prefs.acx)&&(prefs.ac))) { for (i in pair.search.equip) { opts.acx[i]++; } } } pd_search.mpairs=mpairs; if (usepref) { return(mpairs); } console.log("fail: "+JSON.stringify(fail)); var fixpref={ac:(((prefs.ac)&&(! prefs.acx))?1:0),route:(prefs.route.route!="ALL"?1:0),days:[]}; for (iis in opts) { if (iis=='credit') { continue; } if (iis=='expenses') { continue; } for (i in opts[iis]) { opts[iis][i]=1; if ((iis==prefs.route.type)&&(i==prefs.route.route)) { fixpref.route=0; } if ((iis=='ac')&&(opts[iis][i]==prefs.ac)) { fixpref.ac=0; } } } for (i in prefs.days) { if (! opts.days[prefs.days[i]]) { opts.days[prefs.days[i]]=1; } } if (fixpref.ac) { opts.ac[prefs.ac]=1; } if (fixpref.route) { opts[prefs.route.type][prefs.route.route]=1; } console.log(JSON.stringify(fixpref)); var BULK=(pd_init.usebulk?mc_init.bulk:mc_init.bulkx); bulkawd=BULK.awards[pd_init.award]; // console.log(JSON.stringify(pd_init.aircraft)); console.log("opts.ac "+JSON.stringify(opts.ac)); console.log("opts.acx "+JSON.stringify(opts.acx)); var html={ac:"",rte:"",award:"",days:""}; for (i in pd_init.aircraft) { ac=pd_init.aircraft[i]; ok=0; if (ac.key=="ALL-A") { if (prefs.acx) { s=(prefs.ac)?"":" selected"; html.ac+=""; continue; } ok=1; } else if (prefs.acx) { if (opts.acx[ac.key]) { ok=1; } } else if (opts.ac[ac.key]) { ok=1; } if (ok) { s=""; if (((ac.key=="ALL-A")&&(prefs.ac==""))||(ac.key==prefs.ac)) { s=" selected"; } html.ac+=""; } else { // console.log("No "+ac.key+" in ac list"); } } html.rte=""; io=[]; for (i in opts[prefs.route.type]) { io.push(i); } io.sort(function(a,b) { sa=a.substr(0,1); sb=b.substr(0,1); if ((sa=='r')&&(sb!='r')) { return(-1); } if ((sa!='r')&&(sb=='r')) { return(1); } return ((a"+(io[i].substr(0,1)=='r'?'Region: ':'')+io[i].substr((prefs.route.type=='lo'?3:2))+""; } for (i in mc_init.bulk.awards) { s=(i==pd_init.award?" selected":""); html.award+=""; } // console.log("avail days:"+JSON.stringify(opts.days)); // console.log("prefs days:"+JSON.stringify(prefs.days)); // console.log("opts days:"+JSON.stringify(opts.days)); pd_setpdays(Object.keys(opts.days)); if (! prefs.dranges.length) { $("#dateOpts").hide(); $("#datebtnOpts").show(); } else { $("#dateOpts").show(); $("#datebtnOpts").show(); } $("#prefs_equip").val(pd_init.pd_prefs.equip); $("#prefs_ac").html(html.ac); $("#prefs_rte").html(html.rte); $("#prefs_award").html(html.award); $(".pcount").html(mpairs.length); pd_init.ranges={credit:opts.credit,expenses:opts.expenses}; $("#prefs_credit_min").html((prefs.credit.min?m2hm(prefs.credit.min):"Any")); $("#prefs_credit_max").html((prefs.credit.max?m2hm(prefs.credit.max):"Any")); $("#prefs_expenses_min").html((prefs.expenses.min?"$"+prefs.expenses.min:"Any")); $("#prefs_expenses_max").html((prefs.expenses.max?"$"+prefs.expenses.max:"Any")); if (prefs.dh!='X') { $("#pd_dh_x").show(); } else { $("#pd_dh_x").hide(); } if (prefs.expenses.min||prefs.expenses.max) { $("#pd_expenses_x").show(); } else { $("#pd_expenses_x").hide(); } if (prefs.credit.min||prefs.credit.max) { $("#pd_credit_x").show(); } else { $("#pd_credit_x").hide(); } if (prefs.route.route!="ALL") { $("#pd_route_x").show(); } else { $("#pd_route_x").hide(); } if (prefs.ac) { $("#pd_ac_x").show(); } else { $("#pd_ac_x").hide(); } if (prefs.days.length) { $("#pd_days_x").show(); } else { $("#pd_days_x").hide(); } if (prefs.dh=='X') { if (opts.dh.Y) { $("#pd_dh_Y").show(); } else { $("#pd_dh_Y").hide(); } if (opts.dh.N) { $("#pd_dh_N").show(); } else { $("#pd_dh_N").hide(); } } else { $("#pd_dh_Y").show(); $("#pd_dh_N").show(); } console.log("Search:"+mpairs.length+"/"+mc_init.bulk.pairings.length); return(mpairs); // console.log(JSON.stringify(aircraft)); // var idata={psdebug:1,jspairs:mpairs}; // $.post(idb.handler,idata); // console.log(JSON.stringify(opts)); } function pd_seteopts(ieq) { var bulkawd=mc_init.bulk.awards[pd_init.award]; var eopts=bulkawd.equipopts; var eoh=""; // console.log("EOPTS:"+JSON.stringify(eopts)); if (idb.authCheck.group=='ACIF') { last={mlr:"",base:"",stat:""}; } else { last={mlr:"",base:"",stat:""}; } for (i in eopts) { io=0; for (ii in last) { if (eopts[i][ii]!=last[ii]) { st=""; if (i) { eoh+=""; } if (! io) { lab=" << "+eopts[i][ii]+" >> "; st=" style='text-align:center;'"; } else { lab=(">").repeat(io)+" "+eopts[i][ii]; } eoh+=""; } last[ii]=eopts[i][ii]; io++; } st=""; pref=""; if (eopts[i].code==ieq) { st="font-weight:bold;"; pref="* "; } c=(eopts[i].mlr.substr(0,1)=='R'?'red':'blue'); pref+=(eopts[i].mlr.substr(0,1)=='R'?'Rouge ':''); eoh+=""; } eoh+=""; return(eoh); } function pd_setpdays(odays) { var prefs=pd_init.pd_prefs; for (i in odays) { odays[i]*=1; } // console.log("pdays:"+JSON.stringify(odays)); $(".pdays").each(function() { v=$(this).attr("data-v")*1; if (v=='ALL') { $(this).attr("data-on",(prefs.days.length?0:1)); } else if (! odays.includes(v)) { $(this).attr("data-on",0); $(this).hide(); } else { io=0; for (i in prefs.days) { if (prefs.days[i]*1==v*1) { io=1; break; } } $(this).attr("data-on",io); $(this).show(); } }); } async function pd_recent(cmd) { if (typeof(cmd)=='undefined') { cmd=false; } var rhist=function(recent) { str="
Your Recent "+pd_init.pd_prefs.equip+" Downloads
"; istr=""; for (i in recent) { ir=recent[i]; d="data-recent='1' data-delete='0' data-offset='"+i+"' data-equip='"+pd_init.pd_prefs.equip+"' data-clear='0'"; istr+="
"+ "
"+ "
Show
"+ "
PDF
"+ "
"+pd_prefs(ir)+"
"+ "
"; } if (istr) { str+=istr; str+="
"+ "
Clear All
"; } else { str+="
No downloads stored
"; } return(str); }; if (typeof(cmd)=="object") { var isave=false; var idata=await getRec("elogSync","pdRecent"); var io=$(cmd).attr("data-offset")*1; if ($(cmd).attr("data-type").match(/html|pdf/)) { var prefs=idata.recent[pd_init.pd_prefs.equip][io]; idata.recent[pd_init.pd_prefs.equip].splice(io,1); idata.recent[pd_init.pd_prefs.equip].unshift(prefs); d=await putRec("elogSync","pdRecent",idata); pd_recent('update'); prefs.equip=pd_init.pd_prefs.equip; var pairs=pd_search(prefs); if ($(cmd).attr("data-type")=='pdf') { prefs.cwgroup=idb.authCheck.group; prefs.award=pd_init.award; idata={getresults:'pdf',pd_prefs:prefs,award:pd_init.award,pairs:pairs}; pd_getpairings(idata); } else { pd_displaySearch(pairs,prefs); } isave=true; } if ($(cmd).attr("data-type")=='delete') { idata.recent[pd_init.pd_prefs.equip].splice(io,1); d=await putRec("elogSync","pdRecent",idata); pd_recent('update'); isave=true; } if ($(cmd).attr("data-type")=='clear') { idata.recent[pd_init.pd_prefs.equip]=[]; d=await putRec("elogSync","pdRecent",idata); pd_recent('update'); $("#phtml").html(""); isave=true; } if (isave) { pd_recent('saverecent'); } return; } if (cmd=='store') { var idata=await getRec("elogSync","pdRecent"); if (! idata) { idata={ Action:'pdRecent', src:'device', recent:{} } } if (! idata.recent) { idata.recent={}; } if (! idata.recent[pd_init.pd_prefs.equip]) { idata.recent[pd_init.pd_prefs.equip]=[]; } var pref=pd_init.pd_prefs; if (1) { var svars={ eid:idb.authCheck.eid, userid:idb.authCheck.userid, pdPrefs:pref }; $.get(idb.handler,svars); } var cprefs={ ac:pref.ac, acx:pref.acx, route:pref.route, days:pref.days, dates:{ type:pref.dates.type, wkdays:pref.dates.wkdays, }, credit:pref.credit, expenses:pref.expenses, dh:pref.dh } var npref=[cprefs]; var adiff=function(a,b,lvl) { var rv=0; var i; var ii; var hasv; // console.log("A:"+lvl+":"+JSON.stringify(a)); // console.log("B:"+lvl+":"+JSON.stringify(b)); for (i in a) { if (Array.isArray(a[i])) { if (! a[i].length) { continue; } if (typeof(b[i])!="object") { rv="a "+i+" Z"; break; } if (! b[i].length) { rv="a "+i+" Z"; break; } rv=adiff(a[i],b[i],lvl+1); if (rv) { rv="a "+i+" "+rv; break; } continue; } if (typeof(a[i])=="object") { hasv=0; for (ii in a[i]) { if(a[i][ii]) { hasv=1; break; } } if (! hasv) { continue; } if (typeof(b[i])!="object") { rv="a "+i+" X"; break; } rv=adiff(a[i],b[i],lvl+1); if (rv) { rv="a "+i+" "+rv; break; } continue; } if (! a[i]) { continue; } if (a[i]!=b[i]) { rv="a "+i+" "+a[i]+" "+b[i]; break; } } if (rv) { return(rv); } for (i in b) { if (i=='equip') { continue; } if (Array.isArray(b[i])) { if (! b[i].length) { continue; } if (typeof(a[i])!="object") { rv="b "+i+" Z"; break; } if (! a[i].length) { rv="b "+i+" Z"; break; } rv=adiff(a[i],b[i],lvl+1); if (rv) { rv="b "+i+" "+rv; break; } continue; } if (typeof(b[i])=="object") { hasv=0; for (ii in b[i]) { if(b[i][ii]) { hasv=1; break; } } if (! hasv) { continue; } if (typeof(a[i])!="object") { rv="b "+i+" X"; break; } rv=adiff(a[i],b[i],lvl+1); if (rv) { rv="b "+i+" "+rv; break; } continue; } if (! b[i]) { continue; } if (a[i]!=b[i]) { rv="b "+i+" "+a[i]+" "+b[i]; break; } } return(rv); }; console.log(JSON.stringify(cprefs)); for (i in idata.recent[pd_init.pd_prefs.equip]) { diff=adiff(cprefs,idata.recent[pd_init.pd_prefs.equip][i],0); // console.log(i+" "+(diff?"DIFF":"SAME")+" "+diff+" "+JSON.stringify(idata.recent[pd_init.pd_prefs.equip][i])); if (diff) { npref.push(idata.recent[pd_init.pd_prefs.equip][i]); } if (npref.length>=10) { break; } } idata.recent[pd_init.pd_prefs.equip]=npref; d=await putRec("elogSync","pdRecent",idata); pd_recent('update'); pd_recent('saverecent'); return; } if (cmd=='saverecent') { var idata=await getRec("elogSync","pdRecent"); var data={ cmd:'pd_recent', equip:pd_init.pd_prefs.equip, recent:idata.recent[pd_init.pd_prefs.equip] }; d=await putRec("elogUpdates",0,data); sendChanges(1,0); return; } if (cmd=='update') { data=await getRec("elogSync","pdRecent"); if (! data.recent) { data.recent={}; } if ((data.recent[pd_init.pd_prefs.equip])&&(data.recent[pd_init.pd_prefs.equip].length)) { rh=rhist(data.recent[pd_init.pd_prefs.equip]); $("#pdview_recent").html(rh); $("#pd_vselect").show(); } else { $("#pd_vselect").hide(); $("#pdview_recent").hide(); $("#pdview_filter").show(); $("#pd_vbtn_filter").click(); } // console.log("pdRecent:"+pd_init.pd_prefs.equip+" "+JSON.stringify(data.recent[pd_init.pd_prefs.equip])); return; } // putRec("elogSync","crewRest",data); var url=idb.handler+"?pdRecent"+ "&eid="+idb.authCheck.eid+ "&userid="+idb.authCheck.userid+ "&auth="+idb.authCheck.auth; // console.log(url); $.get(url).done(function(data) { var rdata=JSON.parse(data); var idata={Action:'pdRecent',recent:rdata}; putRec("elogSync","pdRecent",idata); pd_recent('update'); }) .fail(function() { pd_recent('update'); }); } async function pd_share(imulti) { var pairnos=[]; if (imulti) { pairnos=imulti; } else { var pair=mc_init[(pd_init.usebulk?"bulk":"bulkx")].pairings[pd_share.io]; pairnos.push(pair.pairno); } var sharedata={ makelink:'sharePairing', action:'sharePairing', award:pd_init.award, eid:idb.authCheck.eid, cwgroup:idb.authCheck.group, pairno:pairnos }; // alert("data:"+JSON.stringify(sharedata)); svars={}; oc=""; resp=await doAjax(idb.handler,sharedata); if (resp=='ERROR') { var linkid=idb.authCheck.eid+"."+Date.now(); sharedata.linkid=linkid; d=putRec("elogUpdates",0,sharedata); sendChanges.urgent=true; sendChanges(1); var url=(location.host.match(/crewsware\.com/))?"https://public.crewsware.com":"http://crewsware.caselab.com"; url+="/share?"+linkid; // alert(url); svars={ title:"Shared Pairings", url:url, text:"Shared Pairings" }; } else { svars=JSON.parse(resp); } // alert(oc+":"+JSON.stringify(svars)); if (! navigator.share) { alert("Sharing not enabled"); return; } navigator.share(svars) .then(() => console.log('Successful share')) .catch((error) => console.log('Error sharing', error)); } async function pd_list(obj) { var chkArray=function() { var sl=false; var reset=0; if ((typeof(pd_init.userList)=='undefined')||(reset)) { pd_init.userList={ Action:'pdUserList' }; sl=true; } if (typeof(pd_init.userList[pd_init.award])=='undefined') { pd_init.userList[pd_init.award]={}; sl=true; } if (typeof(pd_init.userList[pd_init.award][pd_init.equip])=='undefined') { pd_init.userList[pd_init.award][pd_init.equip]={ list:[], ab:[] }; sl=true; } if (sl) { putRec("elogSync","pdUserList",pd_init.userList); } console.log("userList:"+JSON.stringify(pd_init.userList)); }; chkArray(); var bulk=mc_init[(pd_init.usebulk?"bulk":"bulkx")].pairings; if (typeof(obj)=='undefined') { if (pd_init.pd_cview!='list') { return; } console.log("userList:"+JSON.stringify(pd_init.userList)); var phtml="
"; var html; cnt=0; for (i in bulk) { if (pd_init.userList[pd_init.award][pd_init.equip].list.includes(i)) { d=" data-ldelete='"+i+"'"; cnt++; phtml+="
"+ ""+ bulk[i].html+ "
"; } } phtml+="
"; if (cnt) { btn=""; if ((pd_init.debugShare)||(navigator.share)) { btn="
Share
"; } html="
"+ "
Clear List
"+ btn+ "
"+ phtml; } else { html="
You have not added any pairings to your list.
"; } $("#phtml").html(html); $("#phtml").show(); return; } if ($(obj).attr("data-ldelete")) { pd_init.userList[pd_init.award][pd_init.equip].list=pd_init.userList[pd_init.award][pd_init.equip].list.filter(function(iv) { return((iv!=$(obj).attr("data-ldelete"))); }); pd_init.userList[pd_init.award][pd_init.equip].list=pd_init.userList[pd_init.award][pd_init.equip].list.sort(); putRec("elogSync","pdUserList",pd_init.userList); pd_list(); return; } if ($(obj).attr("data-action")=='clear') { pd_init.userList[pd_init.award][pd_init.equip]={ list:[], ab:[] }; putRec("elogSync","pdUserList",pd_init.userList); pd_list(); return; } if ($(obj).attr("data-action")=='resadd') { for (i in pd_search.mpairs) { if (! pd_init.userList[pd_init.award][pd_init.equip].list.includes(pd_search.mpairs[i])) { pd_init.userList[pd_init.award][pd_init.equip].list.push(pd_search.mpairs[i]); } } pd_init.userList[pd_init.award][pd_init.equip].list=pd_init.userList[pd_init.award][pd_init.equip].list.sort(); putRec("elogSync","pdUserList",pd_init.userList); $(obj).detach(); return; } if ($(obj).attr("data-action")=='resdel') { pd_init.userList[pd_init.award][pd_init.equip].list=pd_init.userList[pd_init.award][pd_init.equip].list.filter(function(iv) { return ((pd_search.mpairs.includes(iv)?false:true)); }); pd_init.userList[pd_init.award][pd_init.equip].list=pd_init.userList[pd_init.award][pd_init.equip].list.sort(); $(".pd_pairing").attr("data-onlist",0); putRec("elogSync","pdUserList",pd_init.userList); $(obj).detach(); return; } if ($(obj).attr("data-action")=='slist') { foo=[] for (i in pd_init.userList[pd_init.award][pd_init.equip].list) { foo.push(bulk[pd_init.userList[pd_init.award][pd_init.equip].list[i]].pairno); } pd_share(foo); return; } if ($(obj).attr("data-action")=='resshare') { foo=[]; for (i in pd_search.mpairs) { foo.push(bulk[pd_search.mpairs[i]].pairno); } pd_share(foo); return; } var pair=mc_init[(pd_init.usebulk?"bulk":"bulkx")].pairings[pd_share.io]; if (pd_init.userList[pd_init.award][pd_init.equip].list.includes(pd_share.io)) { pd_init.userList[pd_init.award][pd_init.equip].list=pd_init.userList[pd_init.award][pd_init.equip].list.filter(function(iv) { return((iv!=pd_share.io)); }); $(obj).html(" Add to My List"); $(pd_share.cobj).attr("data-onlist",0); } else { pd_init.userList[pd_init.award][pd_init.equip].list.push(pd_share.io); $(obj).html(" Remove From My List"); $(pd_share.cobj).attr("data-onlist",1); } pd_init.userList[pd_init.award][pd_init.equip].list=pd_init.userList[pd_init.award][pd_init.equip].list.sort(); putRec("elogSync","pdUserList",pd_init.userList); } function pd_displaySearch(pairs,prefs) { $("#phtml").hide(); var html=""; console.log("displaySearch"); $("#phtml").html(html); var BULK=mc_init[(pd_init.usebulk?"bulk":"bulkx")]; var sbtn=""; if ((pairs.length<=100)&&((pd_init.debugShare)||(navigator.share))) { sbtn="
Share
"; } html="
"+ BULK.awards[pd_init.award].awardtext + " — "+ "
"+pd_prefs(prefs)+"
"+ "
Clear
"+ "
"+ "
"+ "
Add to My List
"+ ""+ sbtn+ "
"; html+="
"; var rembtn=false; for (i in pairs) { // console.log(JSON.stringify(BULK.pairings[pairs[i]])); d="data-pair='"+pairs[i]+"'"; str=""; if (pd_init.userList[pd_init.award][pd_init.equip].list.includes(pairs[i])) { // str=""; } d+=" data-onlist='"+((pd_init.userList[pd_init.award][pd_init.equip].list.includes(pairs[i]))?1:0)+"'"; rembtn+=((pd_init.userList[pd_init.award][pd_init.equip].list.includes(pairs[i]))?1:0); html+="
"+ BULK.pairings[pairs[i]].html+str+ "
"; } html+="
"; // console.log(html); $("#phtml").html(html); $("#phtml").show(); if (rembtn) { $("#pd_resdel").show(); } $(".pd_pairing").unbind(); $(".pd_pairing").click(function() { $("#pairShare").detach(); pd_share.io=$(this).attr("data-pair"); pd_share.cobj=this; var pair=mc_init[(pd_init.usebulk?"bulk":"bulkx")].pairings[pd_share.io]; var lbtn; if (pd_init.userList[pd_init.award][pd_init.equip].list.includes(pd_share.io)) { lbtn=" Remove From My List"; } else { lbtn=" Add to My List"; } var plistb="
"+lbtn+"
"+ ""; if ((pd_init.debugShare)||(navigator.share)) { plistb+="
Share Pairing
"; } var plist="
"+plistb+"
"; $(this).append(plist); }); } async function pd_init(cmd) { if (typeof(cmd)=='undefined') { cmd=false; } if (typeof(pd_init.pd_prefs)=='undefined') { pd_init.pd_prefs=false; } if (typeof(pd_init.pd_cview)=='undefined') { pd_init.pd_cview='filter'; } pd_init.debugShare=true; console.log("HERE PD_INIT "+cmd+" "+pd_init.equip); if ((typeof(pd_init.equip)=='undefined')||(! pd_init.equip)) { var award=""; for (i in mc_init.bulk.awards) { if (i>award) { award=i; } console.log(i+" "+typeof(i)); } if (idb.authCheck.group=='ACIF') { foo=mc_init.bulk.equip.split(" "); foo.unshift(foo.pop()); pd_init.equip=foo.join(" "); } else { pd_init.equip=mc_init.bulk.equip; } pd_init.award=award; pd_init.ac=''; eoh=pd_seteopts(pd_init.equip); $("#prefs_equip").html(eoh); pd_init.usebulk=1; if (location.host.match(/m.*\.crewsware\.com/)) { pd_init.url="https://www.crewsware.com/prog/pairing_display/mobile.lib.php"; } else { pd_init.url="http://crewsware.caselab.com/prog/pairing_display/mobile.lib.php"; } pd_init.userList=await getRec("elogSync","pdUserList"); pd_list(); $("#pd_vbtn_list").show(); } // console.log("bulk:"+pd_init.award+" "+pd_init.equip); // console.log(JSON.stringify(mc_init.bulk.awards)); bulkawd=mc_init.bulk.awards[pd_init.award]; // console.log("bulk:"+pd_init.award+" "+pd_init.equip+" "+typeof(bulkawd)); cmd=(cmd=='count'?false:cmd); // console.log(cmd); if (cmd=='pclear') { $("#phtml").html(""); return; } if (! cmd) { $(".pcount").html(""); $("#loading").show(); if (! pd_init.pd_prefs) { pd_init.pd_prefs={ mobile:2, eid:idb.authCheck.userid, cwgroup:idb.authCheck.group, award:pd_init.award, equip:pd_init.equip, ac:"", acx:0, route:{type:"lo",route:"ALL"}, days:[], dates:{type:"start",dates:[],wkdays:[]}, dranges:[], credit:{min:0,max:0}, expenses:{min:0,max:0}, dh:"X" } pd_blankprefs(); } // Using local Bulk console.log("init ! cmd"); $("#phtml").html(""); pd_search(); pd_init(1); pd_recent(); $("#loading").hide(); $("#pairingDisplay").show(); if (pd_init.pd_cview=="list") { pd_list(); } return; } $(".oselect").unbind(); $(".pdays").unbind(); $(".calbtn").unbind(); $(".calhbtn").unbind(); $("#plookup").unbind(); $("#plookupcont").unbind(); $("#clearfilter").unbind(); $("#calclear").unbind(); $(".checkbox").unbind(); $(".genpdf").unbind(); $(".pd_vbtn").unbind(); $(".pd_range").unbind(); $(".pd_vbtn").click(function() { pd_init.pd_cview=$(this).attr("data-type"); $(".pdview").hide(); $("#pdview_"+pd_init.pd_cview).show(); $("#phtml").html(""); $(".pd_vbtn").attr("data-on",0); $(this).attr("data-on",1); if (pd_init.pd_cview!='filter') { $("#clearfilter").hide(); pd_list(); } else { $("#clearfilter").show(); } }); $(".xgenpdf").click(function() { pdp=pd_init.pd_prefs; idata={getresults:$(this).attr('data-type'),pd_prefs:pdp,award:pd_init.award}; // console.log(JSON.stringify(idata)); pd_getpairings(idata); }); $(".genpdf").click(function() { pd_recent('store'); var pairs=pd_search(); if ($(this).attr('data-type')=='html') { pd_displaySearch(pairs,pd_init.pd_prefs); $(window).scrollTop($("#phtml").position().top); } else { pdp=pd_init.pd_prefs; var pairs=pd_search(); idata={getresults:$(this).attr('data-type'),pd_prefs:pdp,award:pd_init.award,pairs:pairs}; pd_getpairings(idata); } }); $(".oselect").change(function() { $(this).blur(); pd_setPref($(this).attr("data-pref"),$(this).val()); }); $(".pdays").click(function() { v=$(this).attr("data-v"); if (v=='ALL') { $(".pdays").attr("data-on",0); $(this).attr("data-on",1); } else { $(this).attr("data-on",($(this).attr("data-on")==1?0:1)); ion=0; $(".pdays").each(function() { v=$(this).attr("data-v"); if ($(this).attr("data-on")==1) { ion++; } }); $(".pdays[data-v='ALL']").attr("data-on",(ion?0:1)); } iv=[]; $(".pdays[data-on='1']").each(function() { v=$(this).attr("data-v"); if (v!='ALL') { iv.push(v); } }); pd_setPref("days",iv); }); $(".calbtn").click(function() { $(this).attr("data-on",($(this).attr("data-on")==1?0:1)); min=0; max=0; $(".calhbtn").attr("data-on",0); io=0; $(".calbtn[data-on='1']").each(function() { io++; v=$(this).attr("data-v"); if ((! min)||(vmax)) { max=v; } }); if (io) { $("#datebtnOpts").show(); } else { $("#datebtnOpts").hide(); } $(".calbtn").attr("data-on",0); $(".calbtn").attr("data-span",0); if (min) { $(".calbtn").each(function() { v=$(this).attr("data-v"); if ((v==min)||(v==max)) { $(this).attr("data-on",1); } else if ((v>=min)&&(v<=max)) { $(this).attr("data-span",1); } }); } pd_setDatePref(); }); $("#plookup").keyup(function(event) { if (event.keyCode === 13) { url=pd_init.url+"?psearch="+$(this).val()+ "&award="+pd_init.award+ "&cwgroup="+pd_init.pd_prefs.cwgroup; // console.log(url); $(this).blur(); $("#loading").show(); $.get(url,function(data) { $("#phtml").html(data); $("#phtml").show(); $("#loading").hide(); $("#phtml").focus(); $(window).scrollTop($("#phtml").position().top); }); return; } }); $("#clearfilter").click(function() { pd_blankprefs(); pd_init(); }); $("#calclear").click(function() { $(".calhbtn").attr("data-on",0); $(".calbtn").attr("data-on",0); $(".calbtn").attr("data-span",0); pd_setDatePref(); }) $(".calhbtn").click(function() { ison=($(this).attr("data-on")==1?0:1); console.log("calhbtn:"+ison); $(this).attr("data-on",ison); t=$(this).attr("data-wkday"); spans=0; $(".calbtn[data-span='1']").each(function() { spans++; } ); ons=0; $(".calbtn[data-on='1']").each(function() { ons++; } ); if ((spans)||(ons==1||ons==2)) { $(".calbtn").attr("data-on",0); $(".calbtn").attr("data-span",0); } if ((t=='wd')||(t=='we')) { ist=(t=='wd'?1:6); iend=(t=='wd'?5:7); for (i=ist;i<=iend;i++) { $(".calhbtn[data-wkday='"+i+"']").attr("data-on",ison); $(".calbtn[data-wkday='"+i+"']").attr("data-on",ison); $(".calbtn[data-wkday='"+i+"']").attr("data-span",0); } } else { $(".calbtn[data-wkday='"+t+"']").attr("data-on",ison); $(".calbtn[data-wkday='"+t+"']").attr("data-span",0); ist=(t<6?1:6); iend=(t<6?5:7); c=0; for (i=ist;i<=iend;i++) { $(".calhbtn[data-wkday='"+i+"']").each(function() { if ($(this).attr("data-on")==1) { c++; } }); } if (t<6) { $(".calhbtn[data-wkday='wd']").attr("data-on",(c==5?1:0)); } else { $(".calhbtn[data-wkday='we']").attr("data-on",(c==2?1:0)); } } pd_setDatePref(); }); $(".checkbox").click(function() { gr="[data-group='"+$(this).attr("data-group")+"']"; // console.log(gr); $(".checkbox"+gr).attr("data-on",0); $(".checkbox"+gr).removeClass("fa-check-circle"); $(".checkbox"+gr).removeClass("fa-circle"); $(".checkbox"+gr).addClass("fa-circle"); $(this).attr("data-on",1); $(this).removeClass("fa-circle"); $(this).addClass("fa-check-circle"); if ($(this).hasClass("datebtn")) { pd_setDatePref(); } else if ($(this).hasClass("routebtn")) { pd_init.pd_prefs.route.route="ALL"; pd_init.pd_prefs.route.type=$(this).attr("data-v"); pd_search(); } else if ($(this).hasClass("acxbtn")) { pd_init.pd_prefs.acx=$(this).attr("data-v")*1; pd_search(); } else if ($(this).hasClass("dhbtn")) { console.log("DHBTN "+$(this).attr("data-v")); pd_init.pd_prefs.dh=$(this).attr("data-v"); pd_search(); } }); $(".pd_x").click(function() { if ($(this).attr("data-var")=='ac') { pd_init.pd_prefs.ac=""; } if ($(this).attr("data-var")=='route') { pd_init.pd_prefs.route.route="ALL"; } if ($(this).attr("data-var")=='days') { pd_init.pd_prefs.days=[]; } if ($(this).attr("data-var")=='dh') { pd_blankprefs("dh"); // pd_init.pd_prefs.dh="X"; // $(".dhbtn").attr("data-on",0); // $(".dhbtn[data-v='0']").attr("data-on",1); // $(".dhbtn").removeClass("fa-check-circle"); // $(".dhbtn").addClass("fa-circle"); // $(".dhbtn[data-v='X']").removeClass("fa-circle"); // $(".dhbtn[data-v='X']").addClass("fa-check-circle"); } pd_search(); return; }); $(".pd_range").click(function() { if ($(this).attr('data-v')=='x') { pd_init.pd_prefs[$(this).attr("data-var")]={min:0,max:0}; pd_search(); return; } var ivar=$(this).attr("data-var"); m=pd_init.pd_prefs[ivar][$(this).attr('data-v')]; if (ivar=='expenses') { ival=m*1; imin=pd_init.ranges[ivar].min; imax=pd_init.ranges[ivar].max; } else { ival=m2hm(m); imin=m2hm(pd_init.ranges[ivar].min); imax=m2hm(pd_init.ranges[ivar].max); } var iargs={ title:($(this).attr('data-v')=='min'?"MIN":"MAX")+" "+$(this).parent().attr("data-title"), kptype:$(this).parent().attr("data-type"), objid:this.id, prefix:(ivar=='expenses'?"$":""), min:imin, max:imax, ival:ival, ivar:ivar, itype:$(this).attr('data-v'), onSet:function(irv) { console.log(JSON.stringify(irv)); if (irv.ivar=='expenses') { v=irv.ival*1; } else { foo=irv.ival.split(":"); v=(foo[0]*60)+(foo[1]*1); } pd_init.pd_prefs[irv.ivar][irv.itype]=v; pd_search(); } }; console.log(JSON.stringify(iargs)); keypad(iargs); }); } function pd_prefs(prefs) { var rtxt=""; // console.log(JSON.stringify(prefs)); if (! prefs.dates.dates) { prefs.dates.dates=[]; } if (! prefs.dates.wkdays) { prefs.dates.wkdays=[]; } if (! prefs.credit) { prefs.credit={min:0,max:0}; } if (! prefs.expenses) { prefs.expenses={min:0,max:0}; } if (! prefs.dh) { prefs.dh="X"; } if (! prefs.days) { prefs.days=[]; } if (prefs.ac) { for (i in pd_init.aircraft) { ac=pd_init.aircraft[i]; if (ac.key==prefs.ac) { break; } } rtxt+="
"+ (prefs.acx?"Excludes ":"")+ ac.ac+ "
"; } if (prefs.route.route!="ALL") { rtxt+="
"; rtxt+=(prefs.route.type=='lo'?"Layover":"Land")+" "; foo=prefs.route.route.split("."); if (foo[0].substr(0,1)=='r') { rtxt+="Region: "; } rtxt+=foo[1]; rtxt+="
"; } if (prefs.days.length) { rtxt+="
"; prefs.days.sort(); rtxt+=prefs.days.join(", ")+" days"; rtxt+="
"; } if (prefs.credit.min||prefs.credit.max) { rtxt+="
"+ (prefs.credit.min?m2h(prefs.credit.min):"Any")+" to "+ (prefs.credit.max?m2h(prefs.credit.max):"Any")+ "
"; } if (prefs.expenses.min||prefs.expenses.max) { rtxt+="
"+ (prefs.expenses.min?"$"+prefs.expenses.min:"Any")+" to "+ (prefs.expenses.max?"$"+prefs.expenses.max:"Any")+ "
"; } if (prefs.dh!='X') { rtxt+="
"+ (prefs.dh=='Y'?'Has ':'No ')+"Deadheads"+ "
"; } if (prefs.dates.dates.length+prefs.dates.wkdays.length) { rtxt+="
"; if (prefs.dates.type=='start') { rtxt+="Starts "; } else if (prefs.dates.type=='dep') { rtxt+="Depart/Arrive "; } else if (prefs.dates.type=='notouch') { rtxt+="Doesn't operate "; } else { rtxt+="Touches "; } if (prefs.dates.wkdays.length) { wkdayon={wd:0,we:0}; for (i=1;i<=7;i++) { wkdayon[i]=0; } prefs.dates.wkdays.sort(); for (i in prefs.dates.wkdays) { if (prefs.dates.wkdays[i]<6) { wkdayon.wd++; } if (prefs.dates.wkdays[i]>5) { wkdayon.we++; } wkdayon[prefs.dates.wkdays[i]]=1; } if (wkdayon.wd==5) { rtxt+="Weekdays "; } if (wkdayon.we==2) { rtxt+="Weekends "; } w=["","Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; for (i in prefs.dates.wkdays) { if ((prefs.dates.wkdays[i]<6)&&(wkdayon.wd==5)) { continue; } if ((prefs.dates.wkdays[i]>5)&&(wkdayon.we==2)) { continue; } rtxt+=w[prefs.dates.wkdays[i]]+" "; } } else { mos=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; rtxt+=mos[prefs.dates.dates[0].substr(5,2)*1-1]+" "+(prefs.dates.dates[0].substr(-2)*1); if (prefs.dates.dates[1]) { rtxt+=" - "+mos[prefs.dates.dates[1].substr(5,2)*1-1]+" "+(prefs.dates.dates[1].substr(-2)*1); } } rtxt+="
"; } if (! rtxt) { rtxt="
All
"; } return(rtxt); } async function order_init() { console.log("INIT: "+order_init.checksum); if (order_init.checksum) { order_enable(); return; } var html=""; var odata=order_init.orderdata.VARS; // html+=JSON.stringify(order_init.orderdata); // console.log("INIT:"+JSON.stringify(order_init.orderdata.VARS.tokens)); var ccicon={ amex: '', mc: '', visa: '' }; order_init.ccEditMode=false; order_init.orderVars={ transaction_tag: "", authorization_num: "", amount: 0, tax1_amount: 0, tax1_ref: 0, customer_ref: "", trial: 0, promo: "", order: false, }; var promoDiff=function() { var tlab={d:" day",h:"h",m:"m",s:"s"}; var tseg={d:24*60*60*1000,h:60*60*1000,m:60*1000,s:1000}; var toff={d:0,h:0,m:0,s:0}; var d_now=new Date(); var diff=Date.parse(odata.promo.endtime)-d_now.getTime(); var str=""; for (i in tseg) { toff[i]=Math.floor(diff/tseg[i]); suff=((i=='d')&&(toff[i]>1))?"s":""; diff-=toff[i]*tseg[i]; str+=(i=='d'?"":(i=='h'?' + ':' : '))+toff[i]+tlab[i]+suff; } $("#order_timer").html("Sale ends in "+str+""); // console.log("DIFF:"+d_now.getTime()+" "+d_now+" diff:"+diff+" "+str+" "+JSON.stringify(toff)); setTimeout(function() { promoDiff(); },1000); }; var updateDisplay=function() { $(".order_tax_code").html(""); $("#order_confirm_tax").html("$0.00"); $("#order_confirm_taxcode").html("n/a"); $("#order_confirm_qty").html(""); $("#order_confirm_price").html(""); $("#order_confirm_total").html(""); var mc=0 var amt=false; if (order_init.selectedCard) { cc=order_init.selectedCard; $("#order_confirm_payment").html(cc.card+" "+cc.reference_3+"..."+cc.cc_number.replace(/#/g,"")); $(".order_tax_code").html(order_init.orderVars.tax_code?" + "+order_init.orderVars.tax_code+"ST":""); mc++; } if (order_init.orderVars.customer_ref) { amt=order_init.orderVars.order; $("#order_confirm_qty").html(amt.qty); $("#order_confirm_price").html("$"+amt.total.toFixed(2)); var itotal=(amt.total*1); $("#order_confirm_total").html("$"+itotal.toFixed(2)); mc++; } if ((mc==2)&&(amt)) { var tx=((amt.total*1)*order_init.orderVars.tax_rate).toFixed(2); var phtml=""+ ""+ ""; if (tx*1) { var itotal=(amt.total*1)+(tx*1); // alert("Here:"+mc+" "+amt.total+" "+order_init.orderVars.tax_code+" "+tx+" "+itotal); $("#order_confirm_tax").html("$"+tx); $("#order_confirm_total").html("$"+(itotal*1).toFixed(2)); $("#order_confirm_taxcode").html("["+order_init.orderVars.tax_prov+" "+order_init.orderVars.tax_code+"ST "+(order_init.orderVars.tax_rate*100).toFixed(0)+"%]"); order_init.orderVars.amount=itotal.toFixed(2); order_init.orderVars.tax1_amount=tx*1; order_init.orderVars.tax1_ref=order_init.orderVars.tax1_amount+order_init.orderVars.tax_ref; order_init.orderVars.tax1_code=order_init.orderVars.tax1_amount+order_init.orderVars.tax_code; } else { order_init.orderVars.tax1_amount=0; order_init.orderVars.tax1_ref=order_init.orderVars.tax_ref; order_init.orderVars.tax1_code=order_init.orderVars.tax_ref; } phtml+=""; phtml+=""; phtml+=""; phtml+="
Access Months"+amt.qty+"
Price"+"$"+amt.total.toFixed(2)+"
Tax "+$("#order_confirm_taxcode").html()+""+$("#order_confirm_tax").html()+"
Total$"+(itotal*1).toFixed(2)+"
Paid By"+$("#order_confirm_payment").html()+"
"; } // console.log('updateDisplay '+JSON.stringify(order_init.orderVars)); }; var selectOrder=function(cby) { var odata=order_init.orderdata.VARS; amt=false; $(".order_amt").each(function() { // console.log("AMT:"+$(this).attr("data-io")); if ($(this).attr("data-selected")==1) { if ($(this).attr("data-io")=='R') { amt=odata.pricegrid[0]; amt.qty=$("#retmonths").val(); amt.mqty=amt.qty; amt.total=(amt.qty*amt.permonth); amt.code=amt.qty+"M"; $('#retsave').html("Save $"+(amt.qty*(amt.bpermonth-amt.permonth)).toFixed(2)); } else { amt=odata.pricegrid[$(this).attr("data-io")*1]; } return; } }); if (! amt) { // $(".order_debug").html(cby+" No AMT?"); order_init.orderVars.customer_ref=false; return; } // $(".order_debug").html(cby+" -> "+JSON.stringify(amt)); order_init.orderVars.amount=(amt.total*1).toFixed(2); order_init.orderVars.tax1_amount=0; order_init.orderVars.customer_ref=amt.code; order_init.orderVars.trial=amt.trial; order_init.orderVars.order=amt; order_init.orderVars.promo=(odata.promo?odata.promo.code+":"+odata.promo.title:""); updateDisplay(); }; var selectCard=function(id) { var odata=order_init.orderdata.VARS; var cc=false; id=id.replace("cc_",""); for (i in odata.tokens) { // console.log("COMP:"+odata.tokens[i].authorization_num+" v "+id); if (odata.tokens[i].authorization_num==id) { cc=odata.tokens[i]; } } if (! cc) { order_init.selectedCard=false; return; } order_init.selectedCard=cc; order_init.selectedCard.tax=false; order_init.orderVars.tax_code=""; order_init.orderVars.tax_rate=0; if (cc.reference_3=='3') { cc.card='Amex'; } else if (cc.reference_3=='4') { cc.card='Visa'; } else { cc.card='MasterCard'; } order_init.orderVars.authorization_num=cc.authorization_num; order_init.orderVars.transaction_tag=cc.transaction_tag; order_init.orderVars.reference_3=cc.reference_3; order_init.orderVars.cc_number=cc.cc_number.replace(/#/g,""); order_init.orderVars.tax_ref="XZ"; order_init.orderVars.tax_code=""; order_init.orderVars.tax_rate=""; order_init.orderVars.tax_prov=""; for (i in odata.sarray.province) { if (odata.sarray.province[i].code==cc.prov) { if (odata.sarray.province[i].tax.code) { order_init.selectedCard.tax=odata.sarray.province[i].tax; order_init.orderVars.tax_ref=odata.sarray.province[i].tax.code+","+odata.sarray.province[i].code+".CAZ"; order_init.orderVars.tax_code=odata.sarray.province[i].tax.code; order_init.orderVars.tax_rate=odata.sarray.province[i].tax.rate; order_init.orderVars.tax_prov=odata.sarray.province[i].code.substr(-2); } else { order_init.orderVars.tax_ref=odata.sarray.province[i].code+"Z"; } } } // console.log("SELECT CARD "+JSON.stringify(cc)); console.log("ORDER:"+JSON.stringify(order_init.orderVars)); updateDisplay(); }; var showOrder=function() { var odata=order_init.orderdata.VARS; var h=""; var baseyear=""; for (i in odata.pricegrid) { if (odata.pricegrid[i].yr==1) { baseyear=i; break; } } var hd=""; for (i in odata.head.text) { hd+=(i*1?"
":"")+odata.head.text[i]+(i*1?"
":""); } h+="
"+hd+"
"; if (odata.promo) { h+=""; promoDiff(); } for (i in odata.pricegrid) { pg=odata.pricegrid[i]; if (pg.trial) { h+="
"+ "
Start 1 Month Free Trial Only
"+ "
"; continue; } // console.log(JSON.stringify(pg)); h+="
"+ "
"; var pr=(pg.total!=pg.btotal)? "$"+pg.btotal.toFixed(2)+" $"+pg.total.toFixed(2)+"": "$"+pg.total.toFixed(2); if (pg.free.length) { h+="
"+pg.mqty+"
Access Months
"; for (f in pg.free) { h+="
+ "+pg.free[f].qty+"
"+pg.free[f].title+" Month"+(pg.free[f].qty>1?"s":"")+"
"; //qty is set in account/order.lib.php line 164 } h+="
"; h+="
"+ "
"+ "
= "+pg.qty+"
Access Months for "+pr+ "
"+ "
"+ "
"; } else { h+="
"+pg.qty+" Access Months for "+pr+"
"+ "
"+ "
"; } h+="
"+ "Only $"+pg.permonth.toFixed(2)+"/Month"+ "
"; if (pg.by!=pg.permonth) { h+="
"+ "Save $"+pg.savings.toFixed(2)+ "
"; } h+="
"; // console.log("order:"+i); } if (idb.authCheck.retpurch<1) { // # of time user can use less than 12 purchase pg=odata.pricegrid[0]; var rm=""; sv=""; if (pg.bpermonth!=pg.permonth) { pms=pg.bpermonth-pg.permonth; sv="
"+ "Save $"+(2*pms).toFixed(2)+ "
"; } h+="
"+ "
"+ "For those retiring in under 12 months."+ "
"+ "
"+ rm+" Access Months @ $"+pg.permonth.toFixed(2)+"/month"+ sv+ "
"+ "If you are not really retiring, you can only use this feature
once, after that it will be locked out for you permanently."+ "
"+ "
"+ "
"; } h+="
"+ "
"+ " Loading Payment System"+ "
"+ "
"; h+="
"; $("#order_options").html(h); if (order_init.src.match(/DB/)) { order_enable(); } var w=0; $(".order_pgrid").each(function() { if ($(this).outerWidth()>w) { w=$(this).outerWidth(); } }); $(".order_pgrid").each(function() { $(this).outerWidth(w); }); $(".order_amt").unbind(); $(".order_amt").click(function() { $(".order_amt").attr("data-selected",0); $(this).attr("data-selected",1); if ($(this).attr("data-trial")==1) { $("#order_purchase_btntxt").html("Start Trial"); $("#order_payment_header").html("Trial"); } else { $("#order_purchase_btntxt").html("Purchase"); $("#order_payment_header").html("Payment"); } selectOrder(1); }); $("#retmonths").unbind(); $("#retmonths").change(function() { selectOrder(2); }); $("#order_back_btn").unbind() $("#order_back_btn").click(function() { $("#order_select").show(); $("#order_purchase").hide(); $("#order_trial").hide(); }); }; var ccManage=function() { var odata=order_init.orderdata.VARS; io=false; cc=0; iem=order_init.ccEditMode; if (! odata.tokens.length) { order_init.ccEditMode=true; mc=1; } else { $(".order_cc").each(function() { if ($(this).attr("data-selected")==1) { io=true; return; } }); mc=2; } $("#cc_edit").attr("data-on",(order_init.ccEditMode?1:0)); // console.log("ccManage:"+iem+" -> "+order_init.ccEditMode+" mc:"+mc+" io:"+io+" len:"+odata.tokens.length); $("#order_confirm").hide(); if (order_init.ccEditMode) { $("#occ_manage").show(); $("#cc_manage_add").show(); if (! odata.tokens.length) { $("#cc_manage_cancel").hide(); } else { $("#cc_manage_cancel").show(); } $(".order_cc").attr("data-delete",1); } else { $(".order_cc").attr("data-delete",0); $("#occ_manage").hide(); if (io) { $("#order_confirm").show(); } } updateDisplay(); }; var showCards=function() { var h=""; var odata=order_init.orderdata.VARS; if (typeof(order_init.selectedCard)=='undefined') { order_init.selectedCard=false; } h+="
Select Payment Method "+ "
"+ " Edit"+ "
"; var hascc=false; for (i in odata.tokens) { var cc=odata.tokens[i]; if (cc.reference_3=='3') { ic='amex'; } else if (cc.reference_3=='4') { ic='visa'; } else { ic='mc'; } // console.log("showCards:"+i+" "+JSON.stringify(cc)); if (cc.primary*1) { selectCard(cc.authorization_num); hascc=true; } h+="
"+ "
"+ccicon[ic]+"
"+ "
"+ " Card Ending: "+cc.cc_number.replace(/#| /g,"")+ " Expiry: "+cc.cc_expiry+ "
"+ (cc.primary?"":"")+ "
"; } if (! odata.tokens.length) { h="
No Payment Methods Stored
"; } if (! hascc) { order_init.orderVars.authorization_num=""; order_init.orderVars.transaction_tag=""; order_init.orderVars.reference_3=""; order_init.orderVars.cc_number=""; order_init.orderVars.tax_code=""; order_init.orderVars.tax_ref=""; order_init.orderVars.tax_rate=0; order_init.selectedCard=false; } $("#occ_cardinfo").hide(); $("#occ_stored").html(h); $("#occ_stored").show(); $("#cc_edit").unbind(); $("#cc_edit").click(function() { $(this).attr("data-on",($(this).attr("data-on")==1?0:1)); order_init.ccEditMode=($(this).attr("data-on")==1); $(".order_cc").attr("data-selected",0); ccManage(); }); $(".order_cc").unbind(); $(".order_cc").click(function() { if ($(this).attr("data-delete")==0) { $(".order_cc").attr("data-selected",0); $(this).attr("data-selected",1); selectCard(this.id); ccManage(); return; } if ($(this).attr("data-delete")==1) { $(".order_cc").attr("data-delete",1); $(this).attr("data-delete",2); return; } if ($(this).attr("data-delete")==2) { var ccd={ token:'delete', eid:idb.authCheck.eid, userid:idb.authCheck.userid, group:idb.authCheck.group, oadmin:idb.authCheck.admin, ids:[this.id.replace("cc_","")] } var iobj=this; $("#loading").show(); order_init.ccEditMode=false; $.get(idb.handler,ccd).done(function(resp) { console.log(resp); order_init.orderdata.VARS.tokens=JSON.parse(resp); putRec("elogSync","orderHTML",order_init.orderdata); $("#cc_message").attr("data-ok",1); $("#cc_message").html("Card Deleted"); $("#cc_message").show(); setTimeout(function() { $("#cc_message").fadeOut(1000); },5000); ccManage(); showCards(); $("#loading").hide(); }); return; } }); ccManage(); updateDisplay(); }; var ccValidate=function() { // // Card No // var done=true; var cv=$("#cc_cc").val().replace(/[^0-9]/g,""); var ok=0; var foo=["0"]; if (cv) { foo=cv.split(""); var io=(foo[0]=='3'?[4,9]:[4,8,12]); var str=""; for (i=0;i12)||(cv.substr(0,2)*1<1)) { ok=0; e=3; } else if (cv.substr(2,2)*1>mm[1]*1+7) { ok=0; e=4; } // Expriry Limit 7 years out else { ok=1; } } if (! ok) { done=false; } $("#cc_expiry").parent().attr("data-ok",(ok?1:0)); // console.log(ok+" => "+$("#cc_expiry").parent().attr("data-ok")+" "+e+" cv:"+cv+" "+JSON.stringify(mm)+" m:"+idate.getMonth()+" y:"+idate.getYear()+" im:"+cv.substr(0,2)+" iy:"+cv.substr(2,2)); // // CCID // var cv=$("#cc_ccid").val().replace(/[^0-9]/g,""); ok=0; if ((foo[0]=='3')&&(cv.match(/^[0-9]{4}$/))) { ok=1; } if ((foo[0].match(/[45]/))&&(cv.match(/^[0-9]{3}$/))) { ok=1; } $("#cc_ccid").parent().attr("data-ok",ok); if (! ok) { done=false; } var flds=['ccn','address_1','city','pcode']; for (i in flds) { if ($("#cc_"+flds[i]).val().length>=2) { ok=1; } else { ok=0; done=false; } $("#cc_"+flds[i]).parent().attr("data-ok",ok); } if (done) { $("#cc_add_enter").show(); } else { $("#cc_add_enter").hide(); } }; var editOpts=function(setc) { if (setc) { odata.address.country=$("#cc_country").val(); // console.log("SET "+odata.address.country); } $("#cc_prov> option").each(function() { if ($(this).attr("data-country")!=odata.address.country) { $(this).hide(); } else { $(this).show(); } }); v=""; for (i in odata.sarray.province) { if (odata.sarray.province[i].text==odata.address.prov) { if (odata.sarray.province[i].code.substr(0,2)==$("#cc_country").val()) { v=odata.sarray.province[i].code; } } } $("#cc_prov").val(v); if (odata.address.country) { $("#cc_prov_row").show(); } else { $("#cc_prov_row").hide(); } }; var profileStr=function() { var str="
"+odata.address.firstname+" "+odata.address.lastname+"
"; var flds=['address_1','address_2','city','prov','pcode','country']; str+="
"; var astr=""; for (i in flds) { astr+=(odata.address[flds[i]]?(astr?", ":"")+odata.address[flds[i]]:""); } str+=astr+"
"; return(str); }; var opts={prov:"",country:""}; opts.prov+=""; for (i in odata.sarray.province) { opts.prov+=""; } for (i in odata.sarray.country) { opts.country+=""; } var sselect=""; // Do not display when Admin user uses Set User see pilot's data if (idb.authCheck.admin && idb.authCheck.eid==idb.authCheck.userid) { sselect="
Server:
"+ " Demo "+ " Live"+ "
"; } console.log("Userinfo: "+JSON.stringify(odata.userinfo)); html+="
"+ "
"+odata.userinfo.spromo+"
"+ "
Your Account
"+ "
"+profileStr()+"
"+ "
Account Status:
"+ "
"+odata.userinfo.tstatus+"
"+ "
Access Months Remaining:
"+odata.userinfo.abal+"
"+ sselect+ ""+ "
"; html+="
"+ "
Order
"+ "
"+ "
"; html+=""; html+=""; html+=""; $("#order").html(html); editOpts(); showCards(); showOrder(); showCards(); selectOrder(0); $("#cc_country").unbind(); $("#cc_country").change(function() { editOpts(1); }); $("#order_editprofile").unbind(); $("#order_editprofile").click(function() { $("#order_profile").show(); }); $(".demoMode").unbind(); $(".demoMode").click(function() { var ccd={ token:'demoMode', eid:idb.authCheck.eid, userid:idb.authCheck.userid, group:idb.authCheck.group, demo:$(this).attr("data-demo")*1 }; $("#loading").show(); $("#order").html("Reloading"); order_init.orderdata.VARS.NOSHOW=true; putRec("elogSync","orderHTML",order_init.orderdata); $.get(idb.handler,ccd).done(function(resp) { reloadPage(); }); }); $("#cc_manage_add").unbind(); $("#cc_manage_add").click(function() { var odata=order_init.orderdata.VARS; $("#cc_manage_add").hide(); $("#cc_manage_cancel").show(); $("#occ_stored").hide(); var foo=[ 'ccn', 'address_1', 'address_2', 'city', 'pcode', ]; for (i in foo) { $("#cc_"+foo[i]).val(odata.address[foo[i]]); } $("#cc_country").val(odata.address.country.match(/CA|US/)?odata.address.country:""); var prov=""; if ((odata.address.prov)||(odata.address.country.match(/CA|US/))) { var plist=order_init.orderdata.VARS.sarray.province; for (i in plist) { if (plist[i].text==odata.address.prov) { prov=plist[i].code; break; } } } $("#cc_prov").val(prov); $("#cc_cc").val(""); $("#cc_ccid").val(""); $("#cc_expiry").val(""); $("#occ_cardinfo").show(); ccValidate(); }); $("#cc_manage_cancel").unbind(); $("#cc_manage_cancel").click(function() { order_init.ccEditMode=false; showCards(); }); $("#cc_manage_delete").unbind(); $("#cc_manage_delete").mouseleave(function() { $("#cc_manage_confirm").attr("data-confirm",0); }); $(".cci_input").unbind(); $(".cci_input").keyup(function() { if (this.id=='cc_cc') { var cci=false; var ccid=false; if ($(this).val().match(/test.v/i)) { cci='4111111111111111'; ccid="456"; } if ($(this).val().match(/test.m/i)) { cci='5500000000000004'; ccid="123"; } if ($(this).val().match(/test.a/i)) { cci='378282246310005'; ccid="1234"; } if (cci) { $("#cc_cc").val(cci); $("#cc_ccid").val(ccid); $("#cc_expiry").val("1223"); } } ccValidate(); }); $("#cc_add_enter").unbind(); $("#cc_add_enter").click(function() { $("#loading").show(); $("#odebout").html("
Sending...
"); var odata=order_init.orderdata.VARS; var foo=[ 'address_1', 'address_2', 'city', 'prov', 'pcode', 'country' ]; var add=""; for (i in foo) { if ($("#cc_"+foo[i]).val().trim().length) { add+=(add.length?" ":"")+$("#cc_"+foo[i]).val().trim(); } } var ccd={ token:'store', eid:idb.authCheck.eid, userid:idb.authCheck.userid, group:idb.authCheck.group, oadmin:idb.authCheck.admin, cc:$("#cc_cc").val().replace(/[^0-9]/g,""), ccx:$("#cc_expiry").val().replace(/[^0-9]/g,""), ccv:$("#cc_ccid").val().replace(/[^0-9]/g,""), ccn:$("#cc_ccn").val(), useradd:add, userpcode:$("#cc_pcode").val(), usercountry:$("#cc_country").val(), userprov:$("#cc_prov").val() }; // console.log(JSON.stringify(ccd)); order_init.ccEditMode=false; $.get(idb.handler,ccd).done(function(resp) { rdata=JSON.parse(resp); console.log("Result:"+JSON.stringify(rdata)); if (rdata.result) { $("#cc_message").attr("data-ok",0); $("#cc_message").html("Error: "+rdata.result.bank_message); } else { $("#cc_message").attr("data-ok",1); $("#cc_message").html("Credit Card Added"); } $("#cc_message").show(); setTimeout(function() { $("#cc_message").fadeOut(1000); },5000); order_init.orderdata.VARS.tokens=rdata.tokens; putRec("elogSync","orderHTML",order_init.orderdata); order_init.ccEditMode=false; ccManage(); showCards(); $("#loading").hide(); }); ccManage(); }); $(".order_place").unbind(); $(".order_place").click(function() { if (! $("#cc_email").val().match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/)) { $("#cc_email").animate({'background-color': 'red'},300,function() { $(this).animate({'background-color':'white'}) } ); return; } if ($(this).attr("data-confirm")<1) { $(this).attr("data-confirm",1); optid=setTimeout(function() { $(".order_place").attr("data-confirm",0); }, 6000); return; } clearTimeout(optid); $(this).attr("data-confirm",2); var ccd={ token:'purchase', eid:idb.authCheck.eid, userid:idb.authCheck.userid, group:idb.authCheck.group, oadmin:idb.authCheck.admin, orderVars:order_init.orderVars, email:$("#cc_email").val() }; // To force decline 5200 = Not authoriezed // order_init.orderVars.amount=5200; // console.log(JSON.stringify(ccd)); $("#loading").show(); $.get(idb.handler,ccd).done(function(resp) { // console.log(resp); rdata=JSON.parse(resp); // rdata.RESP = Non Array Error // rdata.transaction_approved=1 => rdata.ctr = receipt if (rdata.TRIAL) { $(".ddoption").hide(); h="
"+ " "+ "Your Trial has been Started"+ "
"+ "
"+ "
"+ " Return to Ordering"+ "
"+ "
"; $("#order_receipt_text").html(h); $("#order_receipt").show(); } else { $(".ddoption").hide(); if (! rdata.RESP) { h="
"+ " "+ "Thanks for your Order."+ "
"+ "
"+ "An email confirmation has been sent to "+ccd.email+ "
"; } else { h="
"+ "Transaction Could not Be Processed"+ "
"; } h+="
"+rdata.ctr+"
"+ "
"+ "
"+ " Return to Ordering"+ "
"+ "
"; $("#order_receipt_text").html(h); $("#order_receipt").show(); } $("#loading").hide(); $("#odebout").html(JSON.stringify(rdata)); }); }); } function order_enable() { var odata=order_init.orderdata.VARS; $("#order_submit").html("
"+ " Purchase"+ "
"); $("#order_purchase_btn").unbind(); $("#order_purchase_btn").click(function() { var oh=""; $(".order_amt").each(function() { if ($(this).attr("data-selected")==1) { oh=this; return; } }); if ($(oh).attr("data-io")=="R") { $("#occ_order").html($("#retmonths").val()+" Pre-Retirement Access Months @ $"+odata.baserate[1].toFixed(2)+"/month") $("#occ_order").append($("#retsave").clone()); } else { $("#occ_order").html($(oh).html()); } $("#order_select").hide(); $("#order_purchase").show(); if (order_init.orderVars.order.trial) { $("#occ_purchase_order").hide(); $("#occ_purchase_trial").show(); } else { $("#occ_purchase_trial").hide(); $("#occ_purchase_order").show(); } }); $("#order_timer").show(); } var GlobeMapBox = { userApi: "/user/api.php", // Globe log help title and content helpTitle: `Globe Help`, helpContent: `

Show Dead Head (DH) sectors will increase a stations sector count.

`, container: ".globe-contianer", globeElement: "#globeGoesHere", accessToken: "pk.eyJ1IjoidnRzcjYwIiwiYSI6ImNsYTA1NnF2MTBtZHczb2s2ZTFoZW5tYjMifQ.MgXstX70BXr3S54luKG49A", routes: [], map: undefined, fogStyle: {}, mapPopup: undefined, highlightRouteId: undefined, animationInterval: undefined, defaultGlobeStyle: 'satellite-streets-v11', globeStyle: 'satellite-streets-v11', iconColor: 'lightgray', defaultSpaceColor: '#0B1026', defaultHighColor: '#041B81', defaultLowColor: '#6C7FD5', defaultShowMarker: 1, defaultShowAirplane: 0, defaultMarkerColor: '#14789A', defaultShowDH: 0, defaultDHColor: '#0066A4', markerColor: '#14789A', showMarker: 1, showAirplane: 0, showDH: 0, dhColor: '#0066A4', markers: {}, stations: JSData.StationLatLongs, globeFogStyle: { //'range': [-1, 2], 'horizon-blend': 0.3, 'color': '#6C7FD5', 'high-color': '#041B81', 'space-color': '#0B1026', 'star-intensity': 0.9 }, aircraftsColor: { "_other": '#30C5FF' }, getEncodeDataFromGlobeSyle: () => { var prefsData = [ 'gs='+GlobeMapBox.globeStyle, 'c='+GlobeMapBox.globeFogStyle['color'], 'hc='+GlobeMapBox.globeFogStyle['high-color'], 'sc='+GlobeMapBox.globeFogStyle['space-color'], 'mc='+GlobeMapBox.markerColor, 'sm='+(GlobeMapBox.showMarker ? 1 : 0), 'sa='+(GlobeMapBox.showAirplane ? 1 : 0), 'dh='+(GlobeMapBox.showDH ? 1 : 0), 'dhc='+GlobeMapBox.dhColor ]; return prefsData.join('~'); }, setGlobeSyleFromEncodeData: (data) => { var prefsData = data.split("~"); prefsData.forEach((item, index) => { var [key, value] = item.split("="); switch (key) { case "gs": GlobeMapBox.globeStyle = value; break; case "c": GlobeMapBox.globeFogStyle['color'] = value; break; case "hc": GlobeMapBox.globeFogStyle['high-color'] = value; break; case "sc": GlobeMapBox.globeFogStyle['space-color'] = value; break; case "mc": GlobeMapBox.markerColor = value; break; case "sm": GlobeMapBox.showMarker = value * 1; break; case "sa": GlobeMapBox.showAirplane = value * 1; break; case "dh": GlobeMapBox.showDH = value * 1; break; case "dhc": GlobeMapBox.dhColor = value; break; } }); }, saveGlobeStyleToDB: (data) => { if (!navigator.onLine) { return; } $.ajax({ url: GlobeMapBox.userApi, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "SaveGlobePrefs", "prefs": data }, success: function (resp) {}, error: function (xhr, ajaxOptions, thrownError) {} }); }, getGlobeStyleToDB: () => { return new Promise((resolve, reject) => { if (!navigator.onLine) { reject({"error": "Offline"}); } $.ajax({ url: GlobeMapBox.userApi, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "GetGlobePrefs" }, success: function (resp) { if ("Token_Value" in resp) { return resolve(resp.Token_Value); } return reject({"error": "Missing Token value"}) }, error: function (xhr, ajaxOptions, thrownError) { return reject({"error": "Could not retrive token"}) } }); }); }, saveGlobeStyle: (skipDBSave = false) => { return new Promise(function(resolve) { var prefsData = GlobeMapBox.getEncodeDataFromGlobeSyle(); var transaction = idb.dbh.transaction(["elogSync"], "readwrite"); transaction.objectStore("elogSync").put({ "Action": "GlobeStylePrefs", "Data": prefsData }).onsuccess=function(event) { if (!skipDBSave) { GlobeMapBox.saveGlobeStyleToDB(prefsData); } return resolve(event.target.result); }; }); }, getGlobeStyle: () => { var loadGlobeStyleDB = new Promise((resolve, reject) => { GlobeMapBox.getGlobeStyleToDB() .then((data) => { GlobeMapBox.setGlobeSyleFromEncodeData(data); GlobeMapBox.saveGlobeStyle(true) .then((localData) => {}); return resolve(data); }) .catch((error) => { return reject(error); }) }); return new Promise((resolve, reject) => { var synchTable = idb.dbh.transaction(["elogSync"], "readwrite"); var transaction = synchTable.objectStore("elogSync").get("GlobeStylePrefs"); transaction.onerror = (error) => { loadGlobeStyleDB .then((data) => { return resolve(data); }) .catch((error) => { return reject(error); }); }; transaction.onsuccess = (event) => { if (typeof event.target.result !== 'undefined' && "Data" in event.target.result) { GlobeMapBox.setGlobeSyleFromEncodeData(event.target.result.Data); return resolve(event.target.result); } loadGlobeStyleDB .then((data) => { return resolve(data); }) .catch((error) => { return reject(error); }); }; }); }, getAircraftColorsFromDB: () => { return new Promise((resolve, reject) => { if (!navigator.onLine) { reject({"error": "Offline"}); } $.ajax({ url: GlobeMapBox.userApi, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "AircraftColorsPrefs" }, success: function (resp) { if ("Token_Value" in resp) { return resolve(resp.Token_Value); } return reject({"error": "Missing Token value"}) }, error: function (xhr, ajaxOptions, thrownError) { return reject({"error": "Could not retrive token"}) } }); }); }, getAircraftColors: () => { var loadColorsDB = new Promise((resolve, reject) => { GlobeMapBox.getAircraftColorsFromDB() .then((data) => { var colors = { "_other": "#30C5FF" } data.split('~').forEach((item) => { var [key, value] = item.split('='); colors[key] = value; }) var synchTable = idb.dbh.transaction(["elogSync"], "readwrite"); var writeTransaction = synchTable.objectStore("elogSync").put({ Action: "AircraftColorsPrefs", Data: colors }); writeTransaction.onsuccess = (result) => { resolve(colors); } writeTransaction.onerror = (error) => { resolve(colors); } }) .catch((error) => { return reject(error); }) }); return new Promise((resolve, reject) => { var synchTable = idb.dbh.transaction(["elogSync"]); var transaction = synchTable.objectStore("elogSync").get("AircraftColorsPrefs"); transaction.onerror = (error) => { loadColorsDB .then((data) => resolve(data)) .catch((error) => reject(error)); }; transaction.onsuccess = (event) => { if (typeof event.target.result !== 'undefined' && "Data" in event.target.result) { loadColorsDB.then((data) => {}); return resolve(event.target.result.Data); } loadColorsDB .then((data) => resolve(data)) .catch((error) => reject(error)); }; }); }, getDirectionIcons: (route, start, end, lineString, steps = 50) => { var lineDistance = turf.length(lineString); var directionIcons = []; for (var i = 0; i < lineDistance; i += lineDistance / steps) { var point = turf.along(lineString, i); point.properties.name = route.name; directionIcons.push(point); } directionIcons.push(turf.point(end, {"name": route.name})); var prevPoint = turf.point(start); var nextPoint = null; for (var iconIndex = 0; iconIndex < directionIcons.length; iconIndex++) { nextPoint = turf.point(end); if (iconIndex + 1 < directionIcons.length) { nextPoint = directionIcons[iconIndex + 1]; } prevPoint = turf.point(start); if (iconIndex - 1 > 0) { prevPoint = directionIcons[iconIndex - 1]; } directionIcons[iconIndex].properties.bearing = turf.bearing(prevPoint,nextPoint); } return directionIcons; }, getRoute: (route) => { if (typeof route !== 'undefined' && 'source' in route && route.source in GlobeMapBox.stations && 'destination' in route && route.destination in GlobeMapBox.stations && (!route.dh || GlobeMapBox.showDH)) { var source = [GlobeMapBox.stations[route.source].Long, GlobeMapBox.stations[route.source].Lat]; var destination = [GlobeMapBox.stations[route.destination].Long, GlobeMapBox.stations[route.destination].Lat]; if (!(route.source in GlobeMapBox.markers)) { GlobeMapBox.markers[route.source] = { "LatLong" : source, "City": GlobeMapBox.stations[route.source].City, "routes" : [] }; } if (!(route.destination in GlobeMapBox.markers)) { GlobeMapBox.markers[route.destination] = { "LatLong" : destination, "City": GlobeMapBox.stations[route.destination].City, "routes" : [] }; } GlobeMapBox.markers[route.source].routes.push(route); if (route.source != route.destination) { GlobeMapBox.markers[route.destination].routes.push(route); } var arc = turf.greatCircle(source, destination); var directionIcons = []; if (arc.geometry.type === "MultiLineString") { var subSteps = Math.round(50/arc.geometry.coordinates.length); arc.geometry.coordinates.forEach((coordinate) => { var subIcons = GlobeMapBox.getDirectionIcons(route, source, destination, turf.lineString(coordinate), subSteps); directionIcons = directionIcons.concat(subIcons); }); } else { directionIcons = GlobeMapBox.getDirectionIcons(route, source, destination, arc); } return { "Line": arc, "Icons": directionIcons, "aircraft": typeof route.aircraft === "string" ? route.aircraft :"_other" }; } return null; }, addRoutes: () => { var lines = {"_other": []}, icons = [], dataIcons = [], showIndexs = []; GlobeMapBox.markers = {}; GlobeMapBox.routes.forEach((route) => { if (route.source != route.destination) { var routeLine = GlobeMapBox.getRoute(route); if (routeLine != null) { if (!(routeLine.aircraft in lines)) { lines[routeLine.aircraft] = []; } lines[routeLine.aircraft].push(routeLine.Line); icons.push(routeLine.Icons); dataIcons.push(routeLine.Icons[0]); showIndexs.push(0); } } }); for (const aircraft in lines){ var cleanAircraft = aircraft.replace(/[^0-9a-z]/gi, ''); GlobeMapBox.map.addLayer({ "id": "route"+aircraft, "source": { "type": "geojson", "data": turf.featureCollection(lines[aircraft]) }, "type": "line", "paint": { "line-width": 1, "line-color": aircraft in GlobeMapBox.aircraftsColor ? GlobeMapBox.aircraftsColor[aircraft] : cleanAircraft in GlobeMapBox.aircraftsColor ? GlobeMapBox.aircraftsColor[cleanAircraft] : "#30C5FF" } }); } GlobeMapBox.map.addLayer({ 'id': 'airplanicons', 'source': { "type": "geojson", "data": turf.featureCollection(dataIcons) }, 'type': 'symbol', 'layout': { 'icon-image': 'airport-15', 'icon-size': 1.5, 'icon-rotate': ['get', 'bearing'], 'icon-rotation-alignment': 'map', 'icon-allow-overlap': true, 'icon-ignore-placement': true, 'visibility': GlobeMapBox.showAirplane ? 'visible' : 'none' }, 'paint': { 'icon-color': GlobeMapBox.iconColor } }); for (var markerKey in GlobeMapBox.markers) { var marker = GlobeMapBox.markers[markerKey]; var markerTotal = marker.routes.length; var markerCount = marker.routes.filter((item) => { return item.destination == markerKey; }).length; var markerTitle = marker.City + "
" + markerKey + " Count: " + markerCount; if (marker.routes.length === 1 || marker.routes[0].date == marker.routes[markerTotal - 1].date) { markerTitle += "
" + marker.routes[0].date; } else if (marker.routes[0].date != marker.routes[markerTotal - 1].date) { var dateRangeTitle = "
" + marker.routes[0].date + " - " + marker.routes[markerTotal - 1].date; if((new Date(marker.routes[markerTotal - 1].date)) < (new Date(marker.routes[0].date))) { dateRangeTitle = "
" + marker.routes[markerTotal - 1].date + " - " + marker.routes[0].date; } markerTitle += dateRangeTitle; } var popupid = markerKey+'-popup'; var poptext = `

${markerTitle}

`; var pageIndex = 0; marker.routes.forEach((route, index) => { if(index % 6 === 0) { pageIndex++; } poptext += ` `; }); poptext += ` `; poptext += "
From To Date
${route.source} ${route.destination} ${route.date}
Prev Next
"; var popup = new mapboxgl.Popup({ offset: 25, maxWidth: '80%', popupid: popupid, }).setHTML(poptext); var marker = new mapboxgl.Marker({ color: '#3adcb7', scale: .7 }).setLngLat(marker.LatLong) .setPopup(popup) .addTo(GlobeMapBox.map); marker.getElement().className += " airportMarker"; popup.on('open', function() { var currentPopupid = "#" + this.options.popupid; $(currentPopupid).find(".popupRow, .popupPageNavRow, .popupPageNavLeft, .popupPageNavRight").hide(); $(currentPopupid).find(".popupPageNavRight").show(); $(currentPopupid).data('current-page', 1); $(currentPopupid).find(".popupRow[data-page=1]").show(); if ($(currentPopupid).find(".popupRow").length > 6) { $(currentPopupid).find(".popupPageNavRow").show(); } $(".popupPageNav").off("click"); $(currentPopupid).find(".popupPageNav").on("click", (event) => { var currentPage = $(currentPopupid).data('current-page') * 1 + $(event.currentTarget).data('direction') * 1; var nextPage = currentPage + 1; var prevPage = currentPage - 1; $(currentPopupid).find(".popupRow, .popupPageNav").hide(); $(currentPopupid).find(".popupRow[data-page=" + currentPage + "]").show(); if ($(currentPopupid).find(".popupRow[data-page=" + nextPage + "]").length > 0) { $(currentPopupid).find(".popupPageNavRight").show(); } if (prevPage > 0) { $(currentPopupid).find(".popupPageNavLeft").show(); } $(currentPopupid).data('current-page', currentPage); }); }); } var animateIcons = () => { if (typeof GlobeMapBox.map.getSource('airplanicons') !== 'undefined') { dataIcons = []; for (var i = 0; i < icons.length; i++) { showIndexs[i]++; if (!(showIndexs[i] in icons[i])) { showIndexs[i] = 0; } dataIcons.push(icons[i][showIndexs[i]]); } GlobeMapBox.map.getSource('airplanicons').setData(turf.featureCollection(dataIcons)); } }; if (typeof GlobeMapBox.animationInterval !== 'undefined') { clearInterval(GlobeMapBox.animationInterval); } GlobeMapBox.animationInterval = setInterval(() => { requestAnimationFrame(animateIcons); }, 1000/10); }, hide: () => { $(GlobeMapBox.container).hide(); var index = 0; GlobeMapBox.routes.forEach((route) => { index++; GlobeMapBox.map.off('click', 'route' + index); }); $(GlobeMapBox.globeElement).html(""); }, show: (routes = [], title = '') => { if (typeof title !== 'undefined') { $("#globeTitle").html("

" + title + "

"); } function MapCloseButtonControl() { } MapCloseButtonControl.prototype.onAdd = function(map) { this._map = map; this._container = document.createElement('div'); this._container.className = 'mapboxgl-ctrl mapboxgl-ctrl-group'; this._container.innerHTML = ``; this._container.onclick = () => { GlobeMapBox.hide(); return false; } return this._container; }; MapCloseButtonControl.prototype.onRemove = function () { this._container.parentNode.removeChild(this._container); this._map = undefined; }; GlobeMapBox.routes = routes; $(GlobeMapBox.globeElement).attr("data-routes", JSON.stringify(routes)); $(GlobeMapBox.container).show(); mapboxgl.accessToken = GlobeMapBox.accessToken; var loadMap = () => { var initMap = () => { if (typeof GlobeMapBox.animationInterval !== 'undefined') { clearInterval(GlobeMapBox.animationInterval); } $(".airportMarker").remove(); $(GlobeMapBox.globeElement).off(); $(GlobeMapBox.globeElement).html(""); GlobeMapBox.map = new mapboxgl.Map({ container: $(GlobeMapBox.globeElement).attr("id"), style: 'mapbox://styles/mapbox/' + GlobeMapBox.globeStyle, center: [-79.347015, 43.651070], // starting position [lng, lat] zoom: 2, // starting zoom projection: 'globe', // display the map as a 3D globe attributionControl: false }) GlobeMapBox.map.addControl(new MapCloseButtonControl()); GlobeMapBox.map.addControl(new mapboxgl.NavigationControl({ visualizePitch: false }), 'top-right'); GlobeMapBox.map.on('style.load', () => { GlobeMapBox.map.setFog(GlobeMapBox.globeFogStyle); GlobeMapBox.addRoutes(); $(".airportMarker").hide(); if (GlobeMapBox.showMarker) { $(".airportMarker").show(); } $(".airportMarker path[fill]").attr('fill', GlobeMapBox.markerColor); }); }; initMap(); $("#globeSettingBtn").off(); $("#globeSettingBtn").on("click", function () { var fogSetting = GlobeMapBox.map.getFog(); $("[name=globeSpaceColor]").val(fogSetting['space-color']); $("[name=globeHighAtmosphereColor]").val(fogSetting['high-color']); $("[name=globeLowAtmosphereColor]").val(fogSetting['color']); $("[name=globeAirportMarkerColor]").val($(".airportMarker path[fill]").attr('fill')); $("[name=globeShowAirplane]").prop("checked", GlobeMapBox.map.getLayoutProperty('airplanicons', 'visibility') == 'visible'); $("[name=globeShowAirportMarker]").prop("checked", $('.airportMarker').is(":visible")); $("[name=globeShowDH]").prop("checked", GlobeMapBox.showDH); $("[name=globeDHColor]").val(GlobeMapBox.dhColor); $("[name=globeStyle] option").prop("selected", false); var styleURL = GlobeMapBox.map.getStyle().sprite; $("[name=globeStyle] option[value=\"" + styleURL.substring(styleURL.lastIndexOf('/') + 1) + "\"]").prop("selected", true); $("#globeControllers").show(); return false; }); $("#globeCancelSettings").on("click", function () { $("#globeControllers").hide(); return false; }); $("#globeResetSettings").on("click", function () { var fogSetting = GlobeMapBox.map.getFog(); fogSetting['space-color'] = GlobeMapBox.defaultSpaceColor; fogSetting['high-color'] = GlobeMapBox.defaultHighColor; fogSetting['color'] = GlobeMapBox.defaultLowColor; GlobeMapBox.globeFogStyle = fogSetting; GlobeMapBox.showAirplane = GlobeMapBox.defaultShowAirplane; GlobeMapBox.showMarker = GlobeMapBox.defaultShowMarker; GlobeMapBox.showDH = GlobeMapBox.defaultShowDH; GlobeMapBox.markerColor = GlobeMapBox.defaultMarkerColor; var resetMap = false; if (GlobeMapBox.globeStyle !== GlobeMapBox.defaultGlobeStyle) { GlobeMapBox.globeStyle = GlobeMapBox.defaultGlobeStyle; resetMap = true; } if (GlobeMapBox.showDH != $("[name=globeShowDH]").prop("checked")) { GlobeMapBox.showDH = $("[name=globeShowDH]").prop("checked"); resetMap = true; } if (GlobeMapBox.dhColor != GlobeMapBox.defaultDHColor) { GlobeMapBox.dhColor = GlobeMapBox.defaultDHColor; resetMap = true; } GlobeMapBox.saveGlobeStyle(); if (resetMap) { initMap(); } else { GlobeMapBox.map.setFog(GlobeMapBox.globeFogStyle); GlobeMapBox.map.setLayoutProperty('airplanicons', 'visibility', GlobeMapBox.showAirplane ? 'visible' : 'none'); $(".airportMarker").hide(); if (GlobeMapBox.showMarker) { $(".airportMarker").show(); } $(".airportMarker path[fill]").attr('fill', GlobeMapBox.markerColor); } $("[name=globeSpaceColor]").val(fogSetting['space-color']); $("[name=globeHighAtmosphereColor]").val(fogSetting['high-color']); $("[name=globeLowAtmosphereColor]").val(fogSetting['color']); $("[name=globeAirportMarkerColor]").val(GlobeMapBox.markerColor); $("[name=globeShowAirplane]").prop("checked", GlobeMapBox.defaultShowAirplane); $("[name=globeShowAirportMarker]").prop("checked", GlobeMapBox.defaultShowMarker); $("[name=globeShowDH]").prop("checked", GlobeMapBox.defaultShowDH); $("[name=globeStyle] option").prop("selected", false); $("[name=globeStyle] option[value=\"" + GlobeMapBox.globeStyle + "\"]").prop("selected", true); return false; }); $("#globeSaveSettings").on("click", function () { var fogSetting = GlobeMapBox.map.getFog(); fogSetting['space-color'] = $("[name=globeSpaceColor]").val(); fogSetting['high-color'] = $("[name=globeHighAtmosphereColor]").val(); fogSetting['color'] = $("[name=globeLowAtmosphereColor]").val(); GlobeMapBox.globeFogStyle = fogSetting; GlobeMapBox.showAirplane = $("[name=globeShowAirplane]").prop("checked"); GlobeMapBox.showMarker = $("[name=globeShowAirportMarker]").prop("checked"); GlobeMapBox.markerColor = $("[name=globeAirportMarkerColor]").val(); var styleURL = GlobeMapBox.map.getStyle().sprite; var resetMap = false; GlobeMapBox.globeStyle = styleURL.substring(styleURL.lastIndexOf('/') + 1); if (GlobeMapBox.globeStyle !== $("[name=globeStyle]").val()) { GlobeMapBox.globeStyle = $("[name=globeStyle]").val(); resetMap = true; } if (GlobeMapBox.showDH != $("[name=globeShowDH]").prop("checked")) { GlobeMapBox.showDH = $("[name=globeShowDH]").prop("checked"); resetMap = true; } if (GlobeMapBox.dhColor != $("[name=globeDHColor]").val()) { GlobeMapBox.dhColor = $("[name=globeDHColor]").val(); resetMap = true; } GlobeMapBox.saveGlobeStyle(); if (resetMap) { initMap(); } else { GlobeMapBox.map.setFog(GlobeMapBox.globeFogStyle); GlobeMapBox.map.setLayoutProperty('airplanicons', 'visibility', GlobeMapBox.showAirplane ? 'visible' : 'none'); $(".airportMarker").hide(); if (GlobeMapBox.showMarker) { $(".airportMarker").show(); } $(".airportMarker path[fill]").attr('fill', GlobeMapBox.markerColor); } $("#globeControllers").hide(); return false; }); }; GlobeMapBox.getGlobeStyle().then((style) => { GlobeMapBox.getAircraftColors().then((colors) => { GlobeMapBox.aircraftsColor = colors; loadMap(); }).catch((error) => { loadMap(); }) }).catch((error) => { loadMap(); }); } }; $(document).ready(function () { if ($(".globe-contianer").length === 0) { $("body").append(` `); var currentZIndex = 9; $(".showGlobeHelp").on('click', function () { $("#overlay").hide(); $("#helpscreen").hide().html(''); currentZIndex = $("#overlay").css('z-index'); $("#overlay").css('z-index', 59).show(); html = `
${GlobeMapBox.helpTitle}
${GlobeMapBox.helpContent}
`; $("#helpscreen") .html(html) .width($(window).width() * .9); $("#helpscreen") .css({ top: ($(window).height() - $("#helpscreen").outerHeight()) / 2 + "px", left: ($(window).width() - $("#helpscreen").outerWidth()) / 2 + "px" }) .show(); $(".closeSectorLogHelp, #overlay").off(); $(".closeSectorLogHelp, #overlay").on('click', function () { $("#helpscreen").hide().html(''); $("#overlay").hide(); $("#overlay").css('z-index', currentZIndex); $(".closeSectorLogHelp, #overlay").off(); }); }); } }); window.addEventListener("online", function () { GlobeMapBox.saveGlobeStyle() }); // Offset select field options function utcopts(sel) { offsets = [ {offset: '-12:00', mins: '-720'}, {offset: '-11:00', mins: '-660'}, {offset: '-10:30', mins: '-570'}, {offset: '-10:00', mins: '-600'}, {offset: '-9:00', mins: '-540'}, {offset: '-8:00', mins: '-480'}, {offset: '-7:00', mins: '-420'}, {offset: '-6:00', mins: '-360'}, {offset: '-5:00', mins: '-300'}, {offset: '-4:30', mins: '-210'}, {offset: '-4:00', mins: '-240'}, {offset: '-3:30', mins: '-150'}, {offset: '-3:00', mins: '-180'}, {offset: '-2:30', mins: '-150'}, {offset: '-2:00', mins: '-120'}, {offset: '-1:00', mins: '-60'}, {offset: '0:00', mins: '0'}, {offset: '+1:00', mins: '60'}, {offset: '+2:00', mins: '120'}, {offset: '+2:30', mins: '120'}, {offset: '+3:00', mins: '180'}, {offset: '+3:30', mins: '210'}, {offset: '+4:00', mins: '240'}, {offset: '+4:30', mins: '270'}, {offset: '+5:00', mins: '300'}, {offset: '+5:30', mins: '330'}, {offset: '+5:45', mins: '345'}, {offset: '+6:00', mins: '360'}, {offset: '+6:30', mins: '390'}, {offset: '+7:00', mins: '420'}, {offset: '+8:00', mins: '480'}, {offset: '+8:30', mins: '510'}, {offset: '+8:45', mins: '525'}, {offset: '+9:00', mins: '540'}, {offset: '+9:30', mins: '570'}, {offset: '+10:00', mins: '600'}, {offset: '+10:30', mins: '630'}, {offset: '+11:00', mins: '660'}, {offset: '+12:00', mins: '720'}, {offset: '+12:45', mins: '765'}, {offset: '+13:00', mins: '780'}, {offset: '+13:45', mins: '825'}, {offset: '+14:00', mins: '840'} ]; opts = ""; for (i in offsets) { opts += ""; } return (opts); }; // MBA graph function async function mba(args) { if (typeof (args) == 'undefined') { args = false; } var mspm = 60000; var mba_calc = function () { mba.cfg.ddend.setTime(mba.cfg.ddstart.getTime() + (mba.cfg.dd * mspm)); mba.cfg.mba.setTime(mba.cfg.ddend.getTime() - (mba.cfg.pft * mspm) - (mba.cfg.taxi * mspm) - (mba.cfg.sd * mspm)); }; var mba_reset = function () { var d = new Date(); d.setMinutes(0); d.setSeconds(0); d.setHours(d.getHours() - 2); // d.setHours(8); // d.setMinutes(46); var utco = new Date().getTimezoneOffset() * -1; mba.cfg = { Action: 'mba', ddstart: d, ddend: new Date(), mba: new Date(), taxi: 15, sd: 15, pft: 7 * 60, dd: 11 * 60, ddcars: 11 * 60, ddcon: 11 * 60, timerid: false, useutc: (idb.authCheck.group == 'ACP'), dh: false, utcOffset: utco, standalone: false, ready: false }; putRec("elogSync", "mba", mba.cfg); // console.log("Reset:"+JSON.stringify(mba.cfg)); }; if (args.pbcfg) { if (!mba.cfg) { // console.log("STORE ARGS:"+JSON.stringify(args)); mba.pbcfg = args; return; } // console.log("ARGS:"+JSON.stringify(args)); mba_reset(); var d = new Date(); d.setSeconds(0); d.setMinutes(args.ddstart.substr(-2)); d.setHours(args.ddstart.substr(0, 2)); mba.cfg.ddstart = d; if (args.pft) { mba.cfg.pft = args.pft * 1; } if (args.dd) { mba.cfg.dd = args.dd * 1; } // if (args.ddcars) { // mba.cfg.ddcars = args.ddcars * 1; // } // if (args.ddcon) { // mba.cfg.ddcon = args.ddcon * 1; // } if (args.utcOffset) { mba.cfg.utcOffset = args.utcOffset; } if (typeof (args.ready) != 'undefined') { mba.cfg.ready = args.ready; } mba_calc(); putRec("elogSync", "mba", mba.cfg); return; } var mba_init = function () { mba_calc(); putRec("elogSync", "mba", mba.cfg); // console.log("MBAINIT:"+JSON.stringify(mba.cfg)); }; var mba_vars = function () { var v = {w: {}, st: {}, time: {}}; var sd = (mba.cfg.dh ? 0 : mba.cfg.sd); var utco = new Date().getTimezoneOffset() * -1; if (!mba.cfg.utcOffset) { mba.cfg.utcOffset = utco; } v.ddstart = timeCopy(mba.cfg.ddstart); v.ddend = timeCopy(mba.cfg.ddend); v.now = new Date(); v.takeoff = new Date(); v.land = new Date(); v.land.setTime(v.ddend.getTime() - (mba.cfg.taxi * mspm) - (sd * mspm)); v.sd = new Date(); v.sd.setTime(v.ddend.getTime() - (sd * mspm)); v.mba = new Date(); v.mba.setTime(v.ddend.getTime() - (mba.cfg.pft * mspm) - (mba.cfg.taxi * mspm) - (sd * mspm)); if ((utco != mba.cfg.utcOffset) && (mba.cfg.useutc)) { var adj = (mba.cfg.utcOffset * 1) - (utco * 1); var iadj = adj * -1; iadj *= mspm; v.ddstart.setTime(v.ddstart.getTime() + iadj); v.ddend.setTime(v.ddend.getTime() + iadj); v.land.setTime(v.land.getTime() + iadj); v.sd.setTime(v.sd.getTime() + iadj); v.mba.setTime(v.mba.getTime() + iadj); } else if (utco != mba.cfg.utcOffset) { var adj = (mba.cfg.utcOffset * 1) - (utco * 1); var iadj = adj * 1; iadj *= mspm; v.now.setTime(v.now.getTime() + iadj); } if (mba.cfg.useutc) { v.time.now = v.now.toUTCString().substr(17, 5) + "z"; v.time.ddstart = v.ddstart.toUTCString().substr(17, 5) + "z"; v.time.ddend = v.ddend.toUTCString().substr(17, 5) + "z"; v.time.mba = v.mba.toUTCString().substr(17, 5) + "z"; v.time.land = v.land.toUTCString().substr(17, 5) + "z"; } else { v.time.now = v.now.toTimeString().substr(0, 5) + (utco != mba.cfg.utcOffset ? " Local" : ""); v.time.ddstart = v.ddstart.toTimeString().substr(0, 5); v.time.ddend = v.ddend.toTimeString().substr(0, 5); v.time.mba = v.mba.toTimeString().substr(0, 5); v.time.land = v.land.toTimeString().substr(0, 5); } v.w.tlen = v.ddend - v.ddstart; v.st.mba = (v.mba - v.ddstart) / v.w.tlen; v.st.land = (v.land - v.ddstart) / v.w.tlen; v.w.land = (mba.cfg.taxi * mspm) / v.w.tlen; v.st.taxi = v.st.land; v.w.taxi = (mba.cfg.taxi * mspm) / v.w.tlen; v.st.sd = (v.sd - v.ddstart) / v.w.tlen; v.w.sd = (sd * mspm) / v.w.tlen; v.st.flt = 1 - ((mba.cfg.pft * mspm) / v.w.tlen) - v.w.taxi - v.w.sd; v.w.flt = (mba.cfg.pft * mspm) / v.w.tlen; v.st.now = (v.now - v.ddstart) / v.w.tlen; v.minstogo = (v.mba.getTime() - v.now.getTime()) / mspm; v.time.mtg = m2hms(v.minstogo); // console.log("mba cfg: '"+mba.cfg.utcOffset+"' "+JSON.stringify(mba.cfg)); v.mbatxt = "
" + (v.st.mba > .4 ? "" + v.time.mba + " MBA " : "") + "" + (v.st.mba > .4 ? "" : " " + v.time.mba + " MBA") + "
"; if (v.now >= v.mba) { ic = 'red'; v.ctime = "
" + "Will exceed duty day limits
"; } else { var ic = (v.minstogo > 5 ? 'green' : 'orange'); v.ctime = "
" + "Must Be Airborne in " + v.time.mtg + " @ " + v.time.mba + "
"; } v.st.inow = v.st.now; if (v.st.now < 0) { v.st.inow = .01; } if (v.st.now > 1) { v.st.inow = .99; } if ((v.st.now >= 0) && (v.st.now <= 1)) { v.ctime += "
"; } v.ctime += "
"; if (v.st.now > .5) { v.ctime += "
" + "" + v.time.now + " " + " " + (v.st.now > 1 ? "  " : "") + "
"; } else { v.ctime += "
" + (v.st.now < 0 ? " " : "") + " " + "" + v.time.now + "" + "
"; } v.ctime += "
"; if (0) { v.xctime = "
" + (v.rl.match(/right/) ? '' : v.com + " ") + "" + v.time.now + " " + (v.rl.match(/right/) ? " " + v.com : "") + "
" + ""; } return (v); }; if (typeof (mba.cfg) == 'undefined') { mba.cfg = await getRec("elogSync", "mba"); if (!mba.cfg) { mba_reset(); } mba.cfg.ready = false; if (mba.pbcfg) { // console.log("MBACFG: "+JSON.stringify(mba.pbcfg)); mba(mba.pbcfg); mba.pbcfg = false; } mba_init(); } if (args == 'timer') { var v = mba_vars(); if (mba.cfg.timerid) { clearTimeout(mba.cfg.timerid); } if (mba.pbcfg) { var foo = {}; for (i in mba.pbcfg) { foo[i] = mba.pbcfg[i]; } // console.log("retry: "+JSON.stringify(foo)); mba.pbcfg = false; mba(foo); mba('html'); } $("#mba_ct").html(v.ctime); mba.cfg.timerid = setTimeout( function () { mba('timer'); }, 1000 ); return; } if (args == 'reset') { mba_reset(); return; } if (args == 'redraw') { mba_calc(); mba('html'); mba('timer'); // console.log("REDRAW ready:"+mba.cfg.ready); if (mba.cfg.ready) { $("#mba_panel").show(); } else { $("#mba_panel").hide(); } return; } if (args == 'events') { $("#mba_dds").unbind(); $("#mba_dds").click(function () { var kpa = { title: 'Duty Day Start', onSet: function (xdate) { mba.cfg.ddstart.setHours(xdate.getHours()); mba.cfg.ddstart.setMinutes(xdate.getMinutes()); mba('redraw'); }, stime: mba.cfg.ddstart, kptype: 'time', utco: 0 }; keypad(kpa); }); $("#mba_dd").unbind(); $("#mba_dd").click(function () { var kpa = { title: 'Duty Day', onSet: function (xdate) { // console.log("mba_dd:"+xdate.ival); mba.cfg.dd = h2m(xdate.ival); mba('redraw'); }, min: '06:00', max: '20:00', itype: 'range', ival: m2h(mba.cfg.dd), kptype: 'hm', utco: 0 }; keypad(kpa); }); $("#mba_pft").unbind(); $("#mba_pft").click(function () { var kpa = { title: 'Air Time', onSet: function (xdate) { // console.log("mba_pft:"+xdate.ival); mba.cfg.pft = h2m(xdate.ival); mba('redraw'); }, ival: m2h(mba.cfg.pft), kptype: 'hm', itype: 'range', min: '00:30', max: ("00" + m2h(((mba.cfg.ddend - mba.cfg.ddstart) / mspm) - mba.cfg.taxi)).substr(-5), utco: 0 }; keypad(kpa); }); $("#mba_dh").unbind(); $("#mba_dh").click(function () { $(this).attr("data-on", ($(this).attr('data-on') == '1' ? 0 : 1)); mba.cfg.dh = ($(this).attr("data-on") == 1 ? true : false); putRec("elogSync", "mba", mba.cfg); mba_calc(); mba('html'); }); $("#mba_utc").unbind(); $("#mba_utc").change(function () { // console.log("HERE mba utc"); mba.cfg.utcOffset = $(this).val(); putRec("elogSync", "mba", mba.cfg); mba_calc(); mba('html'); }); $("#mba_useutc").unbind(); $("#mba_useutc").click(function () { $(this).attr("data-on", ($(this).attr('data-on') == '1' ? 0 : 1)); mba.cfg.useutc = ($(this).attr("data-on") == 1 ? true : false); putRec("elogSync", "mba", mba.cfg); mba_calc(); mba('html'); }); $("#mba_taxi").unbind(); $("#mba_taxi").click(function () { var kpa = { title: 'Taxi Time', onSet: function (xdate) { // console.log("mba_taxi:"+xdate.ival); mba.cfg.taxi = h2m(xdate.ival); mba('redraw'); }, ival: m2h(mba.cfg.taxi), kptype: 'hm', itype: 'range', min: '00:00', max: ("00" + m2h(((mba.cfg.ddend - mba.cfg.ddstart) / mspm) - mba.cfg.pft)).substr(-5), utco: 0 }; keypad(kpa); }); $("#mba_reset").unbind(); $("#mba_reset").click(function () { mba_reset(); mba.cfg.ready = true; mba_init(); mba_calc(); mba('html'); mba('timer'); }); $(".ddbutton.ddusecarsbutton").unbind(); $(".ddbutton.ddusecarsbutton").click(function () { mba.cfg.dd = $(this).data("dd") * 1; mba_calc(); mba('html'); }); return; } if (args == 'html') { var v = mba_vars(); var html = "
"; html += ""; html += "
Must Be Airborne
"; if (mba.cfg.standalone) { html += "" + "" + "" + "" + "" + ""; if (idb.authCheck.group == 'ACP') { html += "" + "" + "" + ""; } } html += "" + "" + "" + "" + "" + "" + ""; if (idb.authCheck.group == 'ACIF') { html += ""; } if (idb.authCheck.group == 'ACP') { html += ""; } // if (idb.authCheck.group == 'ACP' && mba.cfg.ddcars !== mba.cfg.ddcon) { // html += ` // // `; // } html += "
Duty Day Start
(Local Time)
" + v.time.ddstart.replace(":", "") + "
Duty Day
" + m2h(mba.cfg.dd) + "
UTC Offset
Air Time
" + m2h(mba.cfg.pft) + "
Taxi Time
" + m2h(mba.cfg.taxi) + "
Deadhead
Show Times in UTC
// // // // // // // // //
Use CARs FPD Limit for MBA?
//
"; html += "
" + v.ctime + "
" + "
" + "
" + v.time.ddstart + " Duty Day Start
" + "
End " + v.time.ddend + "
" + "
" + "
" + "
" + "
" + "
" + "
" + v.mbatxt + "
" + "
" + v.time.land + " Taxi
" + "
"; html += "
" + (mba.cfg.standalone ? "
Reset
" : "") + "
"; html += "
"; html += ""; mba('timer'); $("#mba_panel").replaceWith(html); if (!mba.cfg.ready) { $("#mba_panel").hide(); } var d = new Date(); // alert("HTML:"+d+" "+mba.cfg.ready); } } /** * Duty Day Calculator JS core file */ var ddcalc = { // DDC help title and content helpTitle: `Acclimatization`, helpContent: `

Acclimatization occurs when a flight crew member's biorhythm is aligned with local time.  The local time at home base is the reference point to where the flight crew member is acclimatized when they first report for duty.

  1. If your start and end time zones are less than 4 time zones apart, you need 24 hours for each time zone difference to become acclimatized to the arrival station
  2. If your start and end time zones are 4 time zones apart, you need to rest for 72 hours to become acclimatized to the arrival station
  3. If your start and end time zones are 5 or more time zones apart, you need to rest for 96 hours to become acclimatized to the arrival station
`, ddstartchecked: false, //Start time has been selected ddstart: undefined, //Start time utcOffset: undefined, // Default UTC offset tree: undefined, // Rules tree currentNode: undefined, // User current node ynWaitingAns: false, // Yes or no node yesNoNode: undefined, // Yes or no node legIndex: undefined, // selected leg index currentAllYesNode: {},// All yes node for yes/no option currentNoNode: {},// No node for yes/no option stations: undefined,// Stations for the autocomplete stationNode: undefined,// Station node startStationOffset: undefined,// Selected starting station offset endStationOffset: undefined,// Selected ending station offset adj: 0, FRMSWaitingAns: false, // Waiting for FRMS Yes or no isFRMS: 0, // FRMS dhxWaitingAns: false, dhx: 0, // 2 is assigned If DHX option is selected dhxLimit: 0, // 2 is assigned If DHX option is selected ddTime: 0, // Time value given to mba graph // Reset all the node option called when start time changed resetNodeOptions: () => { $('#ddNodeOptions').html(''); ddcalc.dhx = 0; ddcalc.dhxLimit = ''; mba({ pbcfg: 1, ddstart: ddcalc.ddstart }); }, // Add option to the ddc addOption: (type, cond, desc, readonly) => { desc = (typeof desc === 'string' ? '
' + desc : ''); $('#ddNodeOptions').append(`
${type} ${cond}${desc}
`); }, // Add yes or no option addYesNoOptions: (nodeName, nodeOption) => { if (typeof nodeOption.ddstart !== "undefined" && typeof nodeOption.node !== "undefined") { var [start, end] = nodeOption.ddstart; if (ddcalc.ddstart < start || ddcalc.ddstart > end) { var [inTime, outTime] = Object.keys(nodeOption.node); ddcalc.currentNode = nodeOption.node[outTime]; ddcalc.addItem(outTime, ddcalc.currentNode, true); ddcalc.updateMaxDutyBlock(); return; } } var desc = (typeof nodeOption.desc === 'string' ? '
' + nodeOption.desc : ''); var conds = nodeOption.cond; for (var cIndex in conds) { var yb = ``; var nb = ``; $('#ddNodeOptions').append(`
0 ? "style='display:none'" : ""}>
${yb} ${nb} ${conds[cIndex]}${desc}
`); } var keys = Object.keys(nodeOption.node); if (keys.length > 1) { ddcalc.currentAllYesNode[nodeName] = [keys[0], nodeOption.node[keys[0]]]; ddcalc.currentNoNode[nodeName] = [keys[1], nodeOption.node[keys[1]]]; } else if (keys.length === 1) { ddcalc.currentAllYesNode[nodeName] = [nodeName, nodeOption]; ddcalc.currentNoNode[nodeName] = [keys[0], nodeOption.node[keys[0]]]; } ddcalc.ynWaitingAns = true; }, // Get station select field getStationSelect: (nodeName, extraClass) => { return ``; }, // Add start and end station option addStationsOption: (nodeName, nodeOption) => { var desc = (typeof nodeOption.desc === 'string' ? '
' + nodeOption.desc : ''); var startField = ddcalc.getStationSelect(nodeName, 'ddstartstation'); var endField = ddcalc.getStationSelect(nodeName, 'ddendstation'); $('#ddNodeOptions').append(`
Start airport ${startField} for the first sector of the day.${desc}
Ending airport ${endField} for the last sector of the day.${desc}
`); ddcalc.startStationOffset = undefined; ddcalc.endStationOffset = undefined; ddcalc.stationNode = nodeName in ddcalc.currentNode.node ? ddcalc.currentNode.node[nodeName] : ddcalc.currentNode; ddcalc.currentNode = ddcalc.stationNode; if (typeof $(".ddstationauto").autocomplete("instance") !== "undefined") { $(".ddstationauto").autocomplete("destroy"); } $(".ddstationauto").autocomplete({ position: { my: "left bottom", at: "left top", }, source: function (request, response) { var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex($.trim(request.term)), "i"); var results = $.grep(Object.keys(ddcalc.stations), function (item) { return matcher.test(item); }); response(results.slice(0, 24)); // Max of 24 station are shown in Autocomplete }, select: function (event, ui) { $(this).val(ui.item.value); $(this).blur(); } }); return true; }, // Add option header used for "Select one" header addOptionHeader: (title) => { $('#ddNodeOptions').append(`
${title}
`); }, // Add one of the multiple option comes under select one addSelectOneOption: (nodeName, nodeOption) => { ddcalc.addOption( "", nodeOption.cond, nodeOption.desc ); }, // Add label option which not require user action addLabelOption: (nodeName, nodeOption) => { ddcalc.addOption( "", nodeOption.cond, nodeOption.desc, true ); if (typeof nodeOption.node !== undefined) { ddcalc.currentNode = nodeOption; ddcalc.updateOptionItems(); ddcalc.updateMaxDutyBlock(); } return true; }, // Add number of legs option addLegsOption: (nodeName, nodeOption) => { var desc = (typeof nodeOption.desc === 'string' ? '
' + nodeOption.desc : ''); var legOpts = []; var dataOn = 1; if (typeof nodeOption.legs === "object") { for (index in nodeOption.legs) { legOpts.push(`
${nodeOption.legs[index]}
`); if (dataOn === 1) { ddcalc.legIndex = index; } dataOn = 0; } } else { legOpts.push(`
${nodeOption.legs}
`); } ddcalc.currentNode = nodeOption; ddcalc.updateMaxDutyBlock(); $('#ddNodeOptions').append(`
${legOpts.join(' / ')} ${nodeOption.cond}${desc}
`); ddcalc.currentNode = nodeOption; return true; }, // Add check in time option depending on start time selected addCheckInOption: (nodeName, nodeOption) => { var [start, end] = nodeOption.ddstart; if (ddcalc.ddstart >= start && ddcalc.ddstart <= end) { ddcalc.addOption( "", nodeOption.cond, nodeOption.desc, true ); if (typeof nodeOption.node !== undefined) { ddcalc.currentNode = nodeOption; // ddcalc.updateMaxDutyBlock(); ddcalc.updateOptionItems(); } return true; } return false; }, // Add FRMS option addFRMSOption: (efdp) => { if (typeof ddcalc.currentNode !== 'undefined' && typeof ddcalc.tree.FRMS.cond !== 'undefined' && typeof efdp !== 'undefined') { if ($(".ddFRMSbuttons").length <= 0) { var cond = ddcalc.tree.FRMS.cond; var yb = ``; var nb = ``; $('#ddNodeFRMSOptions').append(`
${yb} ${nb} ${cond}
`); ddcalc.FRMSWaitingAns = true; } } else { $(".ddFRMSbuttons").remove(); ddcalc.FRMSWaitingAns = false; } }, // Add DHX option addDHXOption: (efdp) => { if (typeof ddcalc.currentNode !== 'undefined' && typeof ddcalc.tree.dhx.cond !== 'undefined' && typeof ddcalc.currentNode.adddhx !== 'undefined' && typeof efdp !== 'undefined' && !ddcalc.FRMSWaitingAns && efdp < 18 && ddcalc.currentNode.adddhx > 0) { if ($(".dddhxbuttons").length <= 0) { var conds = ddcalc.tree.dhx.cond; var desc = typeof ddcalc.tree.dhx.desc === "string" ? ddcalc.tree.dhx.desc : ""; for (var cIndex in conds) { var yb = ``; var nb = ``; $('#ddNodeDHXOptions').append(`
0 ? "style='display:none'" : ""}>
${yb} ${nb} ${conds[cIndex]}${desc}
`); } ddcalc.dhxWaitingAns = true; } } else { $(".dddhxbuttons, .dhxhelp").remove(); ddcalc.dhxWaitingAns = false; ddcalc.dhx = 0; ddcalc.dhxLimit = ''; } }, // Add option item based on the node given addItem: (nodeName, nodeOption, headerAdded) => { processNext = true; if (nodeOption.cond === 'Other') { processNext = false; } else if (typeof nodeOption.cond === 'object') { ddcalc.addYesNoOptions(nodeName, nodeOption) } else if (typeof nodeOption.ddstart !== 'undefined') { processNext = !ddcalc.addCheckInOption(nodeName, nodeOption); } else if (typeof nodeOption.legs !== 'undefined') { processNext = !ddcalc.addLegsOption(nodeName, nodeOption); } else if (typeof nodeOption.tzdiff !== 'undefined') { processNext = !ddcalc.addStationsOption(nodeName, nodeOption); } else if (typeof ddcalc.currentNode.node !== "undefined" && Object.keys(ddcalc.currentNode.node).length === 1) { processNext = !ddcalc.addLabelOption(nodeName, nodeOption); } else { if (!headerAdded) { headerAdded = true; ddcalc.addOptionHeader('Select One'); } ddcalc.addSelectOneOption(nodeName, nodeOption); } return [processNext, headerAdded]; }, // Main method to change the options depending on user action updateOptionItems: () => { if (typeof ddcalc.currentNode === 'undefined') { return; } if (typeof ddcalc.currentNode.node !== 'undefined') { var headerAdded = false; var processNext = true; //.log("Adding options", Object.keys(ddcalc.currentNode.node).length); $.each(ddcalc.currentNode.node, (index, nodeOption) => { if (processNext) { [processNext, headerAdded] = ddcalc.addItem(index, nodeOption, headerAdded); } }); } }, // Load the DD calc tree JSON and stations offset JSON. Check the dutyday.js.php file if you want to change the rules. loadData: () => { if (typeof ddcalc.tree === 'undefined' && !ddcalc.tree) { ddcalc.tree = ddCalcTree(); } if (typeof ddcalc.stations === 'undefined' && !ddcalc.stations) { ddcalc.stations = ddCalcStations(); } }, // Method to handle change in start time; updateStartTime: () => { var value = $("#ddstart").attr("data-value") + ""; if (value < 0 || value >= 2400 || value.slice(-2) > 59) { value = ""; } value = "0000" + value; ddcalc.ddstart = value.slice(-4); $("#ddstart").val(ddcalc.ddstart); var mfaStart = new Date(); mfaStart.setSeconds(0); mfaStart.setMinutes(value.substr(-2)); mfaStart.setHours(value.substr(0, 2)); mba.cfg.ddstart = mfaStart; ddcalc.travelDownNode(); }, // Handle the yes or no option selection handleDHXNode: (hourIndex, waitForAns = true) => { ddcalc.dhxWaitingAns = waitForAns; if (hourIndex in ddcalc.tree.dhx.hour) { ddcalc.dhx = ddcalc.tree.dhx.hour[hourIndex]; ddcalc.dhxLimit = ddcalc.tree.dhx.text[hourIndex]; } else { ddcalc.dhx = 0; ddcalc.dhxLimit = ''; } }, // Handle the yes or no option selection handleYesNoNode: (currentIndex, allYesSelected = false) => { if (typeof currentIndex === 'undefined' || currentIndex === '') { return; } if (typeof ddcalc.currentNoNode[currentIndex] === 'undefined') { return; } if (typeof ddcalc.currentAllYesNode[currentIndex] === "undefined" && allYesSelected) { return; } [nodeIndex, ddcalc.currentNode] = ddcalc.currentNoNode[currentIndex]; if (allYesSelected) { [nodeIndex, ddcalc.currentNode] = ddcalc.currentAllYesNode[currentIndex]; } ddcalc.ynWaitingAns = false; if (typeof ddcalc.currentNode !== "undefined" && nodeIndex !== currentIndex) { ddcalc.addItem(nodeIndex, ddcalc.currentNode, true); } }, // Travel down the tree based on given index travelDownNode: (currentIndex) => { if (typeof currentIndex === 'undefined' || currentIndex === '') { ddcalc.currentNode = Object.assign({}, ddcalc.tree); ddcalc.resetNodeOptions(); } else if (typeof ddcalc.currentNode.node !== 'undefined' && currentIndex in ddcalc.currentNode.node) { ddcalc.currentNode = ddcalc.currentNode.node[currentIndex]; } if (!ddcalc.ddstartchecked) { ddcalc.updateMaxDutyBlock(); return; } ddcalc.updateOptionItems(); ddcalc.updateMaxDutyBlock(); }, // Find the parent node based on the node index findParentNode: (nodeIndex) => { var currentIndex = ''; var searchNode = Object.assign({}, ddcalc.tree); var parentNode = false; for (var key of nodeIndex.split('')) { currentIndex += key; if (currentIndex in searchNode.node) { parentNode = searchNode; searchNode = searchNode.node[currentIndex]; } } return parentNode; }, // Travel up the tree based on given index travelUpNode: (currentIndex) => { if (typeof currentIndex === 'undefined' || currentIndex === '') { ddcalc.currentNode = Object.assign({}, ddcalc.tree); ddcalc.resetNodeOptions(); } else { ddcalc.currentNode = ddcalc.findParentNode(currentIndex); } if (!ddcalc.ddstartchecked) { ddcalc.updateMaxDutyBlock(); return; } ddcalc.updateOptionItems(); ddcalc.updateMaxDutyBlock(); }, // Format time from float value formatTime: (value, delimiter = ':') => { hour = Math.floor(value); min = Math.round((value - hour) * 60); min = ("00" + min).substr(-2); return hour + delimiter + min; }, // Add DHX to the given value addDHX: (value) => { if (ddcalc.dhx > 0) { value += 2.0; } return ddcalc.formatTime(value); }, // Update EFDP and PFDP based on the selected node updateDDMax: (efdp, pfdp) => { var maxefdp = ddcalc.formatTime(efdp); if (ddcalc.dhx > 0) { maxefdp = "" + maxefdp + " "; } $(".ddhelpInfo").remove(); $("#ddmaxefdp").html(maxefdp); var maxpfdp = ddcalc.formatTime(pfdp); if (ddcalc.dhx > 0) { maxpfdp += " + 2:00 = " + ddcalc.addDHX(pfdp); } $("#ddmaxpfdp").html(maxpfdp); hour = Math.floor(pfdp); min = (pfdp - hour) * 60; if (ddcalc.dhx > 0) { hour = Math.floor(pfdp + 2); } ddcalc.ddcTime = (hour * 60) + min; hour = Math.floor(efdp); min = (efdp - hour) * 60; ddcalc.ddTime = (hour * 60) + min; return hour; }, // Update the reference based on the selected node updateRef: (ref) => { $("#ddmaxref").html(''); if (typeof ref !== 'undefined') { var [rtype, row, subRow] = ref.split(" "); var refText = '' if (rtype === 'CARs') { refText = ref; } else { refText = "Table " + rtype + " Row " + row + (typeof subRow !== "undefined" ? " SubRow " + subRow : ""); } refText += ddcalc.dhx > 0 && typeof ddcalc.tree.dhx.ref !== "undefined" ? ddcalc.tree.dhx.ref : ""; $("#ddmaxref").html(refText); } }, // Update the expire based on the selected node updateExpire: (efdp) => { var max = efdp; if (ddcalc.dhx > 0) { max += 2.0; } foo = [0, ddcalc.utcOffset / 60 * -100]; for (i in foo) { var startTime = parseInt(ddcalc.ddstart.slice(0, 2)) + parseFloat((ddcalc.ddstart.slice(-2) / 60).toFixed(2)) + parseFloat(max); st = parseInt(ddcalc.formatTime(startTime, '')); st += foo[i]; d = 0; while (st >= 2400) { d++; st -= 2400; } st = "0000" + st; st = st.substr(-4); st = st.substr(0, 2) + ":" + st.substr(-2) + (d ? "+" + d : ""); foo[i] = st; } ; $("#ddexpire").html("Expire: " + foo[0] + "   " + foo[1] + "z" + ""); }, // Replace the help keywords in the limits text keywordsReplace: (limit) => { if (typeof ddcalc.tree.keywords !== "undefined") { $.each(ddcalc.tree.keywords, function (keyword, helpText) { limit = limit.replace( new RegExp('(' + keyword + ')', 'gi'), "$1 ") }); } return limit; }, // Update the limits based on the selected node updateLimits: (limits) => { $("#ddmaxlimits").html(''); if (typeof limits !== 'undefined') { $("#ddmaxlimits").html("
Limits
"); for (var limit of limits) { $("#ddmaxlimits").append("
" + ddcalc.keywordsReplace(limit) + "
"); } if (ddcalc.dhx > 0 && ddcalc.dhxLimit !== "") { $("#ddmaxlimits").append("
" + ddcalc.dhxLimit + "
"); } } }, // Updated the MLA graph updateMLA: () => { if (typeof ddcalc.currentNode !== 'undefined' && typeof ddcalc.currentNode.pfdp !== 'undefined' && !ddcalc.ynWaitingAns && !ddcalc.FRMSWaitingAns && !ddcalc.dhxWaitingAns) { mba({ pbcfg: 1, ddstart: ddcalc.ddstart, dd: ddcalc.isFRMS?ddcalc.ddcTime:ddcalc.ddTime, utcOffset: ddcalc.utcOffset, standalone: false, ready: true }); } else { mba({ pbcfg: 1, ddstart: ddcalc.ddstart, utcOffset: ddcalc.utcOffset, standalone: false, ready: false }); } if (typeof mba.cfg != 'undefined') { mba('redraw'); } }, // Update Max Duty Block updateMaxDutyBlock: () => { var efdp = undefined; var pfdp = undefined; var ref = undefined; var limits = undefined; if (typeof ddcalc.currentNode !== 'undefined' && typeof ddcalc.currentNode.efdp !== 'undefined') { efdp = ddcalc.currentNode.efdp; pfdp = ddcalc.currentNode.pfdp; ref = ddcalc.currentNode.ref; limits = ddcalc.currentNode.limits; if (typeof efdp === "object") { if (ddcalc.legIndex in efdp) { efdp = efdp[ddcalc.legIndex]; pfdp = pfdp[ddcalc.legIndex]; ref = ref[ddcalc.legIndex]; limits = limits[ddcalc.legIndex]; } } } ddcalc.addFRMSOption(efdp); ddcalc.addDHXOption(efdp); if (typeof ddcalc.currentNode !== 'undefined' && typeof efdp !== 'undefined' && !ddcalc.ynWaitingAns && !ddcalc.FRMSWaitingAns && !ddcalc.dhxWaitingAns) { ddcalc.updateDDMax(efdp, pfdp); ddcalc.updateRef(ref); ddcalc.updateExpire(efdp); ddcalc.updateLimits(limits); if(ddcalc.isFRMS){ $("#divmaxefdp").hide(); $("#divmaxpfdp").show(); }else{ $("#divmaxefdp").show(); $("#divmaxpfdp").hide(); } $("#ddMaxDutyBlock").show(); } else { $("#ddMaxDutyBlock").hide(); } ddcalc.updateMLA(); }, // Add all the event handlers addEventHandlers: () => { // Disable all existing event handler $("#ddcalc, #ddstart, #ddstartok").off(); // Add handler when OH button is clicked $("#ddstartok").on('click', function () { $(this).hide(); ddcalc.ddstartchecked = true; ddcalc.travelDownNode(); }); // Add handler to change the start time $("#ddstart").on('click', function () { var ta = {}; var iv = $(this).attr("data-value"); ta.stime = new Date(2000, 0, 1, iv.substr(0, 2) * 1, iv.substr(-2) * 1, 0, 0); ta.st = new Date(2000, 0, 1, 0, 0, 0, 0); ta.end = new Date(2000, 0, 1, 23, 59, 59, 0); var kpa = { title: 'Duty Day Start', xival: $(this).val().substr(0, 2) + ":" + $(this).val().substr(-2), onSet: function (xdate) { var d = ("00" + xdate.getHours()).substr(-2) + ("00" + xdate.getMinutes()).substr(-2); $("#ddstart").html(d); $("#ddstart").attr("data-value", d); ddcalc.ddstartchecked = true; $("#ddstartok").hide(); ddcalc.updateStartTime(); }, stime: ta.stime, st: ta.st, end: ta.end, utco: 0 }; keypad(kpa); }); // Changing the time offset $("#utcopts").on('change', function () { ddcalc.utcOffset = $(this).val(); ddcalc.updateMaxDutyBlock(); }); // Add handler when select one option is changed $("#ddcalc").on('click', '.ddbutton:not(.ddyesnobutton, .ddusecarsbutton)', function () { var currentIndex = $(this).data("node"); if ($(this).hasClass('selected')) { if ($(this).data('type') === 'SelectOne' && $(this).hasClass('fa-check-square')) { $(this).removeClass('fas fa-check-square selected') .addClass('far fa-question-square'); } $('[data-node^="' + currentIndex + '"]').each(function () { $(this).closest('.ddoption').removeClass('fixed'); }); $('.ddoption:not(.fixed), .ddoptheader').remove(); ddcalc.travelUpNode(currentIndex); } else { $(this).closest('.ddoption').addClass('fixed'); if ($(this).data('type') === 'SelectOne' && $(this).hasClass('fa-question-square')) { $(this).removeClass('far fa-question-square') .addClass('fas fa-check-square selected'); } $('.ddoption:not(.fixed), .ddoptheader, .dddhxbuttons').remove(); ddcalc.travelDownNode(currentIndex); } }); // Add handler when yes/no option is changed $("#ddcalc").on('click', '.ddbutton.ddyesnobutton', function () { if (!$(this).hasClass('selected')) { $(this).closest('.ddoption').addClass('fixed'); $(this).closest('.ddoption') .find('[data-index]') .removeClass('fas selected') .addClass('far'); $(this).removeClass('far') .addClass('fas selected'); var currentNode = $(this).data("node"); $('[data-node^="' + currentNode + '"]').each(function () { if ($(this).data('node') !== currentNode) { $(this).closest('.ddoption').removeClass('fixed'); } else { $(this).closest('.ddoption').addClass('fixed'); } }); var nextIndex = $(this).data('index') + 1; if ($(this).is('[data-type=YesOption]') && $('.ddyesnobutton[data-index=' + nextIndex + ']').length > 0) { $('.ddyesnobutton[data-index=' + nextIndex + ']') .closest('.ddoption') .show(); } else { for (var i = nextIndex; i <= $(this).data('total'); i++) { $('.ddyesnobutton[data-index=' + i + ']') .removeClass('fas selected') .addClass('far') .closest('.ddoption') .hide(); } } if ($(this).hasClass('dddhxbutton')) { ddcalc.handleDHXNode( $('.dddhxbuttons').find('[data-type=YesOption].selected').length, $('.dddhxbuttons:visible').length != $('.dddhxbuttons').find('.dddhxbutton.selected').length ); ddcalc.updateMaxDutyBlock(); } else { if ($(this).hasClass('ddFRMSbutton')) { // Is your duty under FRMS rules? ddcalc.FRMSWaitingAns = false; ddcalc.isFRMS = $('.ddFRMSbuttons').find('[data-type=YesOption].selected').length; ddcalc.updateMaxDutyBlock(); }else{ $('.ddoption:not(.fixed), .ddoptheader, .dddhxbuttons').remove(); if ($(this).is('[data-type=NoOption]')) { ddcalc.handleYesNoNode(currentNode); ddcalc.updateMaxDutyBlock(); } else if ($('.ddyesnobutton[data-node=' + currentNode + '][data-type=YesOption].selected').length >= $(this).data('total')) { ddcalc.handleYesNoNode(currentNode, true); ddcalc.updateMaxDutyBlock(); } } } } }); // Add handler when leg option is changed $("#ddcalc").on('click', '.ddlegbtn', function () { $(this).closest('.ddoption').find('.ddlegbtn').attr('data-on', '0'); $(this).attr('data-on', '1'); ddcalc.legIndex = $(this).data('leg-index'); ddcalc.updateMaxDutyBlock(); }); // Add handler when start and end stations option is changed $('#ddcalc').on('propertychange change keyup paste input', '.ddstationauto', function (evt, params) { $(this).removeClass("invalid"); var selectedValue = $.trim($(this).val()).toUpperCase(); if (selectedValue !== $(this).val()) { $(this).val(selectedValue); return; } if (!(selectedValue in ddcalc.stations)) { $(this).addClass("invalid"); } if ($(this).hasClass("ddstartstation")) { ddcalc.startStationOffset = selectedValue in ddcalc.stations ? ddcalc.stations[selectedValue].utc_offset : undefined; } else if ($(this).hasClass("ddendstation")) { ddcalc.endStationOffset = selectedValue in ddcalc.stations ? ddcalc.stations[selectedValue].utc_offset : undefined; } var currentIndex = $(this).data("node"); if (typeof ddcalc.startStationOffset !== "undefined" && typeof ddcalc.endStationOffset !== "undefined") { $('[data-node^="' + currentIndex + '"]').each(function () { if ($(this).data("node") !== currentIndex) { $(this).closest('.ddoption').removeClass('fixed'); } }); $('.ddoption:not(.fixed), .ddoptheader, .dddhxbuttons').remove(); var nextIndex = Math.abs(ddcalc.startStationOffset - ddcalc.endStationOffset) < 4 ? currentIndex + "<4" : currentIndex + ">=4"; ddcalc.currentNode = ddcalc.stationNode.node[nextIndex]; ddcalc.addItem(nextIndex, ddcalc.currentNode, true); } else { $('[data-node^="' + currentIndex + '"]').each(function () { if ($(this).data("node") !== currentIndex) { $(this).closest('.ddoption').removeClass('fixed'); } }); $('.ddoption:not(.fixed), .ddoptheader, .dddhxbuttons').remove(); ddcalc.currentNode = ddcalc.stationNode; ddcalc.updateMaxDutyBlock(); } }); // Add handler for the help dropdown $("#ddcalc").on('click', '.ddhelp', function () { $('.ddhelpInfo').css("min-height", "auto") .slideUp("normal", function () { $(this).remove(); }); $(this).toggleClass("show-info"); if ($(this).hasClass("show-info")) { $("") .insertAfter($(this).parent()); $('.ddhelpInfo').slideDown("normal", () => { $('.ddhelpInfo').css("min-height", "2.5rem"); }); } }); $(".showDDCHelp").on('click', function () { $("#overlay").hide(); $("#helpscreen").hide().html(''); $("#overlay").show(); html = `
${ddcalc.helpTitle}
${ddcalc.helpContent}
`; $("#helpscreen") .html(html) .width($(window).width() * .9); $("#helpscreen") .css({ top: ($(window).height() - $("#helpscreen").outerHeight()) / 2 + "px", left: ($(window).width() - $("#helpscreen").outerWidth()) / 2 + "px" }) .show(); $(".closeSectorLogHelp, #overlay").off(); $(".closeSectorLogHelp, #overlay").on('click', function () { $("#helpscreen").hide().html(''); $("#overlay").hide(); $(".closeSectorLogHelp, #overlay").off(); }); }); }, // Initialize the Duty day calculator. init: () => { ddcalc.loadData(); if (typeof ddcalc.ddstart === 'undefined') { ddcalc.ddstart = "1700"; ddcalc.ddstartchecked = false; } if (typeof ddcalc.utcOffset === 'undefined') { ddcalc.utcOffset = new Date().getTimezoneOffset() * -1; } // DD calc DOM structure $("#ddcalc").html(`
${(ddcalc.ddstartchecked ? "" : "")}
Duty Day Start
(Acclimatized Time)
${ddcalc.ddstart}
UTC Offset
OK
`); mba(); ddcalc.addEventHandlers(); } } /** * Sector log JS code */ var sectorLog = { api: "/elog/sectorlog/api.php", stations: undefined, dtlocal: "en-CA", nextRecordId: 1, flightRegkey: "", flightRegkeyFlag: false, flightFinRegkey: "", flightFinRegkeyFlag: false, flightRegSearchInProgress: false, userIsCaptain: false, // Sector log help title and content helpTitle: `Sector log`, helpContent: `

Sector Log allows you to enter a flight sector to populate your logbook ahead of importing your monthly flight summaries.  Sector Log will save you considerable time if you plan to have an accurate a legal logbook.

Once you import your summaries, the system will compare your Sector Log entries with the imported sectors and merge the import to complete your log.  After this is complete, merged sectors will be removed from your Sector Log page.

Sector Log sectors will be shown along with your normal flight sectors in your logbook.  These sectors will have a yellow background shade.

`, // Format date to string e.g. 10 Jan dateObj: (date) => { var result = new Date(date); if(Number.isNaN(result.getMonth())) { var arr = date.split(/[- :]/); result = new Date(arr[0], (arr[1] * 1) -1, arr[2], arr[3], arr[4], arr[5]); } return result; }, formatDate: (date) => { var dateDT = sectorLog.dateObj(date); return dateDT.toLocaleString(sectorLog.dtlocal, {"day": "numeric"}) + " " + dateDT.toLocaleString(sectorLog.dtlocal, {"month": "short"}) + " " + dateDT.getFullYear(); }, // Extract only date e.g. 2022-10-11 onlyDate: (date) => { var dateDT = sectorLog.dateObj(date); var day = ('0' + dateDT.getDate()).slice(-2); var month = ('0' + (dateDT.getMonth() + 1)).slice(-2); return dateDT.getFullYear() + '-' + month + '-' + day; }, // Extract only time e.g. 11:30 onlyTime: (date) => { var dateDT = sectorLog.dateObj(date); var timeStr = dateDT.toLocaleString(sectorLog.dtlocal, {"hour": "2-digit", "hourCycle": "h24", "minute": "2-digit"}); return timeStr && timeStr != '24:00' ? timeStr : '00:00'; }, // Get the different between two UTC time getDiffTime: (from, to, delimiter = ':') => { from = sectorLog.onlyTime(from); to = sectorLog.onlyTime(to); if (from == to && from == '00:00') { return '00:00'; } var [fhour, fmins] = from.split(':'); var [thour, tmins] = to.split(':'); var ftime = fhour * 60 + parseInt(fmins); var ttime = thour * 60 + parseInt(tmins); if (ftime >= ttime) { ttime = ttime + 1440; } var diff = ttime - ftime; var hour = Math.floor(diff / 60); var min = Math.round(diff - (hour * 60)); min = ("00" + min).substr(-2); return ("00" + hour).substr(-2) + delimiter + min; }, //Send to debug debugLog: (data) => { if (navigator.onLine) { data.action = "Debug"; data.eid = idb.authCheck.eid; data.userid = idb.authCheck.userid; data.devid = idb.authCheck.devid; $.ajax({ url: sectorLog.api, type: 'post', data: data }); } }, // Get latest flight registrations from the DB refreshFightRegs: () => { if (navigator.onLine) { $.ajax({ url: sectorLog.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "FightRegs" }, success: function (resp) { var transaction = idb.dbh.transaction(["flightRegByFin"], "readwrite"); var objectStore = transaction.objectStore("flightRegByFin"); resp.forEach(function (sdata) { objectStore.put(sdata); }); } }); } }, // Get logs from the DB refreshLogs: () => { if (navigator.onLine && !sectorLog.localChangesPresent) { $.ajax({ url: sectorLog.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "List" }, success: function (resp) { var wipeTransaction = idb.dbh.transaction(["sectorLogData"], "readwrite"); var wipeObjectStore = wipeTransaction.objectStore("sectorLogData"); wipeObjectStore.clear().onsuccess = function (event) { var transaction = idb.dbh.transaction(["sectorLogData"], "readwrite"); var objectStore = transaction.objectStore("sectorLogData"); if (typeof resp !== "undefined" && resp.length > 0) { resp.forEach(function (sdata, index) { var entryTrans = objectStore.put(sdata); if (resp.length <= (index + 1)) { entryTrans.onsuccess = () => { if ($("#logedit_r").length <= 0 || $("#logedit_r").is(":hidden")) { sectorLog.updateLogs(); } }; } }); } else { if ($("#logedit_r").length <= 0 || $("#logedit_r").is(":hidden")) { sectorLog.updateLogs(); } } }; } }); } else { if (sectorLog.localChangesPresent) { setTimeout(sectorLog.refreshLogs, 1000); } else { sectorLog.updateLogs(); } } }, // Get the logs from the IndexedDB getLogs: () => { return new Promise((resolve, reject) => { if (typeof idb === "undefined" || typeof idb.dbh === "undefined") { reject([]); } var logs = []; sectorLog.nextRecordId = 1; idb.dbh.transaction(["sectorLogData"]) .objectStore("sectorLogData") .openCursor() .onsuccess = (event) => { var cursor = event.target.result; if (cursor) { var log = cursor.value; var timeDiff = sectorLog.getDiffTime(log.Depart, log.Arrive); var [timeDiffh, timDiffmins] = timeDiff.split(':'); log.DateDisplay = sectorLog.formatDate(log.Depart); log.Date = sectorLog.onlyDate(log.Depart); log.From = sectorLog.onlyTime(log.Depart); log.Depart_L = log.From + "z"; log.To = sectorLog.onlyTime(log.Arrive); log.Arrive_L = log.To + "z"; log.Time = timeDiff; log.AC_Fin = log.Fin; log.AC_Reg = log.Reg; log.AC_Equip = log.Equip; log.AC_MS = "Multi"; log.IsDH = false; log.Flightno = log.Flight_Num; log.Crew = log.OtherCrew; log.MOD_note = log.Remarks; log.MOD_Flags = log.tol; log.SectorLog = 1; log.TO = /T\/O/.test(log.tol)? 1 : 0; log.LND = /LND/.test(log.tol)? 1 : 0; log.DNTotal = parseInt(timeDiffh) * 60 + parseInt(timDiffmins); log.LSD_recordid = 's' + log.recordid; log.PosAC = log.Position + ' ' + log.Equip; logs.push(log); sectorLog.nextRecordId = log.recordid + 1; cursor.continue(); } else { resolve(logs.sort((item1, item2) => { var item1Date = new Date(item1.Date); var item2Date = new Date(item2.Date); return item1Date > item2Date ? 1 : item1Date < item2Date ? -1 : 0; })); } }; }); }, addSectorsToElog: (elogs, fields, dre) => { return new Promise((resolve, reject) => { sectorLog.getLogs() .then((logs) => { logs.forEach((log) => { elogs = elogs.filter(elog => { return elog.LSD_recordid !== log.LSD_recordid; }); for (ifield in fields) { if (log[fields[ifield]].match(dre)) { elogs.push(log); break; } } }); resolve(elogs.sort((item1, item2) => { var item1Date = new Date(item1.Depart); var item2Date = new Date(item2.Depart); return item1Date > item2Date ? 1 : item1Date < item2Date ? -1 : 0; })); }) .catch((err) => { reject(err); }); }); }, searchSectorlogs: (sresult, match, sval, dre) => { return new Promise((resolve, reject) => { sectorLog.getLogs() .then((logs) => { logs.forEach((log) => { crew = log.Crew.toLowerCase(); pic = log.PIC.toLowerCase(); if (crew.match(sval)) { foo = log.Crew.split("~"); match++; for (i in foo) { ifoo = foo[i].split("|"); if (ifoo[0]) { n = ifoo[1]+" "+ifoo[2]; } else { ifoo[2] = ifoo[1]; n = ifoo[1]; } if (dre.test(ifoo[1]) && typeof(mresults[n])=='undefined') { mresults[n] = {v:ifoo[2],type:"Crew"}; } } } if (pic.match(sval)) { foo=log.PIC.split("|"); if (dre.test(foo[0])) { match++; if (! foo[1]) { foo[1]=foo[0]; n=foo[0]; } else { n=foo[0]+" "+foo[1]; } if (typeof(mresults[n])=='undefined') { mresults[n]={v:foo[1],type:"Crew"}; } } } if (dre.test(log.D_Stn)) { match++; if (typeof(mresults[log.D_Stn])=='undefined') { mresults[log.D_Stn]={v:log.D_Stn,type:"Station"}; } } if (dre.test(log.A_Stn)) { match++; if (typeof(mresults[log.A_Stn])=='undefined') { mresults[log.A_Stn]={v:log.A_Stn,type:"Station"}; } } if (dre.test(log.AC_Fin)) { match++; if (typeof(mresults[log.AC_Fin])=='undefined') { mresults[log.AC_Fin]={v:log.AC_Fin,type:"Aircraft"}; } } if (dre.test(log.AC_Reg)) { match++; if (typeof(mresults[log.AC_Reg])=='undefined') { mresults[log.AC_Reg]={v:log.AC_Reg,type:"Aircraft"}; } } }); resolve({"result": sresult, "total": match}); }) .catch((err) => { reject(err); }); }); }, synchTimer: undefined, synchInProcess: false, localChangesPresent: false, // Synch the changes from IndexedDB to crewsware.logbook_sectors_log table processSyncRecords: () => { if (!navigator.onLine) { return; } if (!sectorLog.synchInProcess) { sectorLog.synchInProcess = true; processSyncRecords = []; var synchStore = idb.dbh.transaction(["sectorLogSync"]) .objectStore("sectorLogSync"); synchStore.openCursor() .onsuccess = (event) => { var cursor = event.target.result; if (cursor) { processSyncRecords.push({ "key": cursor.key, "record": cursor.value }); cursor.continue(); } else { if (processSyncRecords.length > 0) { $.ajax({ url: sectorLog.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "Sync", "changes": processSyncRecords }, success: function (resp) { var sectorLogStore = idb.dbh.transaction(["sectorLogData"], "readwrite") .objectStore("sectorLogData"); if ("added" in resp && Object.keys(resp.added).length > 0) { $.each(resp.added, (key, log) => { sectorLogStore.delete(parseInt(log.recordid)).onerror = (event) => { }; var tmpRecordid = log.recordid; log.recordid = parseInt(log.actualRecordid); $('#' + tmpRecordid + 'R').attr('data-log', JSON.stringify(log)); sectorLogStore.put(log).onsuccess = (event) => { }; }); } sectorLog.clearSyncRecord(); sectorLog.synchInProcess = false; }, error: function (xhr, ajaxOptions, thrownError) { sectorLog.synchInProcess = false; } }); } else { sectorLog.synchInProcess = false; } } }; } }, // Clear the synch change table to indexedDB clearSyncRecord: () => { sectorLog.localChangesPresent = false; idb.dbh.transaction(["sectorLogSync"], "readwrite") .objectStore("sectorLogSync") .clear(); }, // Add the change to the synch table addSyncRecord: (action, log) => { sectorLog.localChangesPresent = true; return new Promise((resolve, reject) => { if (typeof idb === "undefined" || typeof idb.dbh === "undefined") { reject([]); } var request = idb.dbh.transaction(["sectorLogSync"], "readwrite") .objectStore("sectorLogSync") .put({ "action": action, "log": log }); request.onsuccess = (event) => { resolve(); }; request.onerror = (event) => { reject(event); }; }); }, // Save the sector log save: (log, action) => { return new Promise((resolve, reject) => { if (typeof idb === "undefined" || typeof idb.dbh === "undefined") { reject([]); } var request = idb.dbh.transaction(["sectorLogData"], "readwrite") .objectStore("sectorLogData") .put(log); request.onsuccess = (event) => { sectorLog.addSyncRecord(action, log); resolve(); }; request.onerror = (event) => { reject(event); }; }); }, // Delete the sector log delete: (recordid) => { return new Promise((resolve, reject) => { if (typeof idb === "undefined" || typeof idb.dbh === "undefined") { reject([]); } var request = idb.dbh.transaction(["sectorLogData"], "readwrite") .objectStore("sectorLogData") .delete(recordid); request.onsuccess = (event) => { sectorLog.addSyncRecord("delete", { "recordid": parseInt(recordid) }); resolve(); }; request.onerror = (event) => { reject(event); }; }); }, // Check the user is a captain checkCaptain: () => { if (!navigator.onLine) { setTimeout(sectorLog.checkCaptain, 1000); return; } $.ajax({ url: sectorLog.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "IsCaptain" }, success: function (resp) { if (typeof resp !== "undefined" && "Captain" in resp) { sectorLog.userIsCaptain = resp.Captain; } } }); }, // Confirmation popup confirmation: (msg, yesCallback) => { $("#overlay").hide(); $("#confirmationSectorLog").hide().html(''); if ($("#confirmationSectorLog").length === 0) { $("body").append("
"); } $("#overlay").show(); html = `
${msg}
`; $("#confirmationSectorLog") .html(html) .width($(window).width() * .8); $("#confirmationSectorLog") .css({ top: ($(window).height() - $("#confirmationSectorLog").outerHeight()) / 2 + "px", left: ($(window).width() - $("#confirmationSectorLog").outerWidth()) / 2 + "px" }) .show(); var closeConfirmation = () => { $("#confirmationSectorLog").hide().html(''); $("#overlay").hide(); $(".closeConfirmationSectorLog, #overlay").off(); }; $(".closeConfirmationSectorLog, #overlay").off(); $(".closeConfirmationSectorLog, #overlay").on('click', function () { closeConfirmation(); }); $(".yesConfirmed").off(); $(".yesConfirmed").on('click', function () { if (typeof yesCallback === "function") { yesCallback(); } closeConfirmation(); }); }, // Update the display of the sector logs updateLogs: () => { var baseTemplate = `
Back to eLog
Sector Log
#
Date
Aircraft
Type
Reg.
FIN
Departure
From
UTC
Arrival
To
UTC
Flt #
Time
Crew
Position
PIC
Other
T/O
Landing
Remarks
 
 
Add
`; $("#sectorLog").html(baseTemplate); $("#exitSectorLog, .showSectorLogHelp").off(); $("#exitSectorLog").on('click', function () { $("#sectorLog").html(""); $("#sectorLog").hide(); $("#elogSearch").val(""); $("#resultsPanel").hide(); $("#flightMonth").hide(); var source = 'LOCAL'; if (typeof $("#flightSummary").data("source") !== "undefined") { source = $("#flightSummary").data("source"); } elog_summary(source); $("#flightSummary").show(); // if (typeof $("#flightSummary").data("source") !== "undefined") { // elog_summary($("#flightSummary").data("source")); // } }); $(".showSectorLogHelp").on('click', function () { $("#overlay").hide(); $("#helpscreen").hide().html(''); $("#overlay").show(); html = `
${sectorLog.helpTitle}
${sectorLog.helpContent}
`; $("#helpscreen") .html(html) .width($(window).width() * .9); $("#helpscreen") .css({ top: ($(window).height() - $("#helpscreen").outerHeight()) / 2 + "px", left: ($(window).width() - $("#helpscreen").outerWidth()) / 2 + "px" }) .show(); $(".closeSectorLogHelp, #overlay").off(); $(".closeSectorLogHelp, #overlay").on('click', function () { $("#helpscreen").hide().html(''); $("#overlay").hide(); $(".closeSectorLogHelp, #overlay").off(); }); }); sectorLog.getLogs().then((logs) => { sectorLog.clearRows(); logs.forEach(function (log) { sectorLog.addRow(log.recordid, [ log.DateDisplay, log.Aircraft, log.Reg, log.Fin, log.D_Stn, log.From + "z", log.A_Stn, log.To + "z", log.Flight_Num, log.Time, log.Position, log.PIC, log.OtherCrew, log.tol, log.Remarks ], log); }); sectorLog.resizeTable(); }); }, // Check the button on the edit forms updateActions: () => { $("#logedit_save").addClass("disabled"); $(".elog_input, .elog_time, [data-group='pos']").removeClass("has-value"); $(".required-info").show(); if ($.trim($("#elog_date").val()).length && (new Date($("#elog_date").val())) != "Invalid Date") { $("#elog_date").addClass("has-value"); } if ($.trim($("#elog_city_from").val()).length >= 3 && !$("#elog_city_from").hasClass("invalid")) { $("#elog_city_from").addClass("has-value"); } if ($.trim($("#elog_city_to").val()).length >= 3 && !$("#elog_city_to").hasClass("invalid")) { $("#elog_city_to").addClass("has-value"); } if ($.trim($("#elog_flightnumber").val()).length >= 4) { $("#elog_flightnumber").addClass("has-value"); } if ($.trim($("#elog_city_to_utc").val()).length >= 5) { $(".elog_time[data-input-id=elog_city_to_utc]").addClass("has-value"); } if ($.trim($("#elog_city_from_utc").val()).length >= 5) { $(".elog_time[data-input-id=elog_city_from_utc]").addClass("has-value"); } if ($.trim($("#elog_fin").val()).length >= 3) { $("#elog_fin").addClass("has-value"); } if ($.trim($("#elog_Aircraft").val()).length) { $("#elog_Aircraft").addClass("has-value"); } if ($("[data-group='pos'][data-on='1']").length) { $("[data-group='pos']").addClass("has-value"); } if ($.trim($("#elog_pic").val()).length) { $("#elog_pic").addClass("has-value"); } if ($.trim($("#elog_Reg").val()).length) { $("#elog_Reg").addClass("has-value"); } if ($(".required:not(.has-value)").length === 0) { $(".required-info").hide(); $("#logedit_save").removeClass("disabled"); } }, prevFlightReg: "", // Look up the flight reg depending on the user input updateFlightReg: () => { if (sectorLog.flightRegSearchInProgress) { setTimeout(sectorLog.updateFlightReg, 1000); return; } var fin = $.trim($("#elog_fin").val()); if (fin.length >= 3 && sectorLog.flightFinRegkey !== fin) { sectorLog.flightFinRegkey = ("0000" + fin).slice(-4); sectorLog.flightRegSearchInProgress = true; // sectorLog.prevFlightReg = $("#elog_Reg").val(); $("#elog_Reg").val(""); $(".elog_aircraft_row").hide(); $("#elog_Reg").attr("placeholder", "Searching..."); sectorLog.updateActions(); var request = idb.dbh.transaction(["flightRegByFin"]) .objectStore("flightRegByFin") .get(sectorLog.flightFinRegkey); request.onsuccess = (event) => { if (typeof event.target.result !== "undefined" && "aircraft" in event.target.result) { $("#elog_Reg").val(event.target.result.registration); $("#elog_Reg").attr("placeholder", ""); $("#elog_Aircraft").val(event.target.result.aircraft); $(".elog_aircraft_row").hide(); } else { $("#elog_Reg").attr("placeholder", "Not found"); $("#elog_Aircraft").val(''); $(".elog_aircraft_row").show(); } sectorLog.flightRegSearchInProgress = false; sectorLog.updateActions(); }; request.onerror = (event) => { $("#elog_Reg").attr("placeholder", "Not found"); $("#elog_Aircraft").val(''); $(".elog_aircraft_row").show(); sectorLog.flightRegSearchInProgress = false; sectorLog.updateActions(); }; return; } }, // Adding the sector log panel content init: () => { sectorLog.refreshFightRegs(); $("#quad_container").remove(); $("#flightSummary").hide(); $("#flightMonth").hide(); $("#sectorLog").css('width', 'auto'); $("#sectorLog").html(`
Loading sectors from Crewsware
`); sectorLog.refreshLogs(); $("#sectorLog").show(); sectorLog.resizeTable(); sectorLog.checkCaptain(); }, // Add a cell to sector log row addCell: (row, col, value, cssStyle = '') => { row.append(`
${value}
`); }, // Remove all the rows clearRows: () => { $(".itr.slog-row").remove(); }, // Add sector log row addRow: (id, values, log) => { var noffset = $("#quad_2 .itr[data-offset]:not([data-offset=new])").length + 1; var quad2Row = $(`
${noffset}
`); var quad3Row = $(`
`); $.each(values, (col, value) => { var cssStyle = ''; if (col === 12 || col === 13) { cssStyle = 'font-size: 10px;'; } if (col === 0) { sectorLog.addCell(quad2Row, col + 1, value, cssStyle); } else { sectorLog.addCell(quad3Row, col + 1, value, cssStyle); } }); quad2Row.insertBefore("#quad_2 .itr.addnewitr"); quad3Row.insertBefore("#quad_3 .itr.addnewitr"); }, // Resize the sector log table based on the columns resizeTable: () => { if (!$("#quad_container").length) { return; } var maxColWidths = []; for (i = 0; i < 20; i++) { maxColWidths[i] = 0; } $(".itd").each(function () { var cWidth = $(this).width(); var colIndex = $(this).data('col'); if (cWidth > maxColWidths[colIndex]) { maxColWidths[colIndex] = cWidth; } }); $(".itd").each(function () { if (typeof $(this).data('col') !== "undefined" && $(this).data('col') in maxColWidths) { $(this).width(maxColWidths[$(this).data('col')]); } }); var colIndex = 0; $(".ith").each(function () { var cWidth = maxColWidths[colIndex]; var pad = 0; for (var i = 1; i < $(this).data("span"); i++) { colIndex++; cWidth += maxColWidths[colIndex] + 17; pad = 16; } $(this).width(cWidth + pad); colIndex++; }); lw = $("#quad_0").position().left + $("#quad_0").width(); th = $("#quad_0").position().top + $("#quad_0").height(); $("#quad_1").css({left: lw}); $("#quad_2").css({top: th}); $("#quad_3").css({top: th, left: lw, 'xpadding-left': lw, 'xpadding-top': th}); $("#quad_0").attr("data-scroll", 0); $("#quad_1").attr("data-scroll", 0); $("#quad_2").attr("data-scroll", 0); $("#quad_container").attr("data-lw", lw); $("#quad_container").attr("data-th", th); tw = lw + $("#quad_1").outerWidth(); $("#quad_container").width(tw); h = $("#quad_0").height(); h += $("#quad_2").height(); h = (h < $(window).height() ? $(window).height() : h); $("#quad_container").height(h + 200 - 15); $("#quad_leftbar").height(h + 200); $("#sectorLog").height(h + 200); w = $("#quad_0").width(); w += $("#quad_1").width(); w = (w < $(window).width() ? $(window).width() : w); if ($("#quad_1").width() > $("#quad_3").width()) { $("#quad_3").width($("#quad_1").width()); } $("#quad_topbar").width(w); $("#sectorLog, #quad_container").width(w); $(window).scrollTop(0); $(window).scrollLeft(0); $(".addNewSLog").on("click", function () { sectorLog.addEditorForm($(this).closest('.itr').data('offset')); $(this).hide(); }) $(".editSLog, .editSLogChildrens .itd").on("click", function () { var offset = $(this).hasClass('itr') ? $(this).data('offset') : $(this).closest('.itr').data('offset'); sectorLog.addEditorForm(offset); $(".addNewSLog").show(); }) }, // Add sector log edit form addEditorForm: (offset, refreshCallback) => { var rowQ2 = $("#quad_2 .itr[data-offset=" + offset + "]"); var rowQ3 = $("#quad_3 .itr[data-offset=" + offset + "]"); var slog = rowQ3.is("[data-log]") ? rowQ3.data('log') : []; if (typeof slog === "string") { slog = JSON.parse(slog); } var rowQ2Width = rowQ2.width(); rowQ2.css({height: 'auto'}); $(".logedit").remove(); var labelHtml = `
UTC Date:
Flight No:
From:
To:
FIN:
Position:
T/O Landing:
PIC:
Other Crew:
Remarks:
`; rowQ2.append(labelHtml); var formHtml = `
Red Fields are Required
UTC:
${'From' in slog ? slog["From"] : '00:00'}
UTC:
${'To' in slog ? slog["To"] : '00:00'}
Registration:
CA
FO
RP
Augment
T/O
Land
Right Seat
Cancel
Save
${'recordid' in slog ? '
Delete
' : ''}
`; rowQ3.append(formHtml); if ($.trim(sectorLog.flightRegkey) === '') { sectorLog.flightRegkey = $.trim($("#elog_date").val()) + $.trim($("#elog_city_from").val()) + $.trim($("#elog_city_to").val()) + ("0000" + $.trim($("#elog_flightnumber").val())).slice(-4); } if ($.trim(sectorLog.flightFinRegkey) === '') { sectorLog.flightFinRegkey = ("0000" + $.trim($("#elog_fin").val())).slice(-4); } sectorLog.updateActions(); $("#logedit_cancel, .elog_time, .elog_editbtn, input, #logedit_save, #logedit_delete, #elog_Aircraft, .elog_input").off(); $("#logedit_cancel").on("click", function () { sectorLog.confirmation("Confirm you want to cancel this edit?", () => { if ($(this).hasClass("disabled")) { return; } if (typeof refreshCallback !== "undefined") { refreshCallback(); } else { sectorLog.updateLogs(); } }); }); $("#logedit_save").on("click", function () { if ($(this).hasClass("disabled")) { return; } var tols = []; $(".elog_toland[data-on='1']").each(function () { tols.push($(this).data("val")); }); var arrival = $("#elog_date").val() + " " + $("#elog_city_to_utc").val() + ":00"; if ($("#elog_city_to_utc").val() == '00:00' && $("#elog_city_to_utc").val() == $("#elog_city_from_utc").val()) { } else { if (parseInt($("#elog_city_from_utc").val().replace(':', '')) >= parseInt($("#elog_city_to_utc").val().replace(':', ''))) { var dateDT = new Date(sectorLog.dateObj($("#elog_date").val()).getTime() + (24 * 60 * 60 * 1000)); var day = ('0' + dateDT.getDate()).slice(-2); var month = ('0' + (dateDT.getMonth() + 1)).slice(-2); arrival = dateDT.getFullYear() + '-' + month + '-' + day + " " + $("#elog_city_to_utc").val() + ":00"; } } var recordid = $("#elog_recordid").val(); var currentLog = $(this).closest(".itr[data-offset]").data('log'); var action = "update"; if ($.trim(recordid) === '') { action = "add"; recordid = sectorLog.nextRecordId + 1000; sectorLog.nextRecordId++; } var updateLog = { "recordid": parseInt(recordid), "actualRecordid": action === "update" ? parseInt(recordid) : "", "Flight_Num": $("#elog_flightnumber").val(), "Aircraft": $("#elog_Aircraft").val(), "D_Stn": $("#elog_city_from").val(), "Depart": $("#elog_date").val() + " " + $("#elog_city_from_utc").val() + ":00", "Arrive": arrival, "A_Stn": $("#elog_city_to").val(), "Date": $("#elog_date").val(), "From": $("#elog_city_from_utc").val(), "To": $("#elog_city_to_utc").val(), "Fin": $("#elog_fin").val(), "Reg": $("#elog_Reg").val(), "Position": $("[data-group='pos'][data-on='1']").data("val"), "tol": tols.join(","), "PIC": $("#elog_pic").val(), "OtherCrew": $("#elog_crew").val(), "Remarks": $("#elog_note").val() }; if (typeof currentLog !== "undefined") { updateLog = { ...currentLog, ...updateLog }; } sectorLog.save(updateLog, action).then(function () { if (typeof refreshCallback !== "undefined") { refreshCallback(); } else { sectorLog.updateLogs(); } }); }); $("#logedit_delete").on("click", function () { if ($(this).hasClass("disabled")) { return; } sectorLog.confirmation("Confirm you want to delete this sector?", () => { var recordid = $("#elog_recordid").val(); if ($.trim(recordid) !== '') { sectorLog .delete(parseInt(recordid)) .then(function () { if (typeof refreshCallback !== "undefined") { refreshCallback(); } else { sectorLog.updateLogs(); } }); } }); }); if (typeof $(".elog_stations").autocomplete("instance") !== "undefined") { $(".elog_stations").autocomplete("destroy"); } if (typeof sectorLog.stations === "undefined") { sectorLog.stations = allStations(); } $(".elog_stations").autocomplete({ position: { my: "left bottom", at: "left top", }, source: function (request, response) { var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex($.trim(request.term)), "i"); var results = $.grep(Object.keys(sectorLog.stations), function (item) { return matcher.test(item); }); response(results.slice(0, 24)); // Max of 24 station are shown in Autocomplete }, select: function (event, ui) { $(this).val(ui.item.value); $(this).blur(); } }); $(".elog_stations").on("propertychange change keyup paste input", function () { var selectedValue = $.trim($(this).val()).toUpperCase(); if (selectedValue !== $(this).val()) { $(this).val(selectedValue); return; } $(this).removeClass("invalid"); if (!(selectedValue in sectorLog.stations)) { $(this).addClass("invalid"); } }); $(".elog_editbtn").on("click", function (e) { e.stopPropagation(); if ($(".elog_editbtn[data-group='" + $(this).attr("data-group") + "']").length > 1) { $(".elog_editbtn[data-group='" + $(this).attr("data-group") + "']").attr("data-on", 0); } $(this).attr("data-on", $(this).attr("data-on") * 1 ? 0 : 1); sectorLog.updateActions(); }); $(".elog_seat").on("click", function (e) { // If the user sects CA or captain as the position, the PIC field should auto fill with “Self”. They can override it if they want aby deleting and entering something else. if($("[data-group='pos'][data-on='1']").data("val")==="CA"){ $("#elog_pic").val('Self'); sectorLog.updateActions(); } }); $("#elog_Aircraft, #elog_Reg").on("input", function () { $(this).val($(this).val().toUpperCase()); }); $("input[data-maxlength]").on("input", function () { $(this).val($(this).val().slice(0, $(this).data("maxlength"))); }); $("input[data-maxlength]").on("blur", function () { $(this).val(("0000" + $(this).val()).slice(-1 * $(this).data("maxlength"))); sectorLog.updateFlightReg(); sectorLog.updateActions(); }); $("input[data-maxlength]").on("focus", function () { $(this).val(parseInt($(this).val())); }); $(".elog_time").on("click", function () { var ta = {}; var iv = $(this).attr("data-value").replace(/\D/g, ''); ta.stime = new Date(2000, 0, 1, iv.substr(0, 2) * 1, iv.substr(-2) * 1, 0, 0); ta.st = new Date(2000, 0, 1, 0, 0, 0, 0); ta.end = new Date(2000, 0, 1, 23, 59, 59, 0); var kpa = { title: 'Duty Day Start', xival: $(this).val().substr(0, 2) + ":" + $(this).val().substr(-2), onSet: (xdate) => { var d = ("00" + xdate.getHours()).substr(-2) + ':' + ("00" + xdate.getMinutes()).substr(-2); $(this).html(d); $(this).attr("data-value", d); $("#" + $(this).data('input-id')).val(d); sectorLog.updateActions(); }, stime: ta.stime, st: ta.st, end: ta.end, utco: 0 }; keypad(kpa); }); $("input").on("input change", function () { sectorLog.updateFlightReg(); sectorLog.updateActions(); }); } }; // Sector logs sync timer and process if (navigator.onLine) { sectorLog.synchTimer = setInterval(sectorLog.processSyncRecords, 10000); } window.addEventListener("online", function () { sectorLog.synchTimer = setInterval(sectorLog.processSyncRecords, 10000); sectorLog.refreshLogs(); sectorLog.refreshFightRegs(); }); window.addEventListener("offline", function () { clearInterval(sectorLog.synchTimer); }); var CalendarImport = { api: "/calendar/api.php", hasChanged: false, // Handle import action import: () => { return new Promise((resolve, reject) => { if (!navigator.onLine) { reject({"error": "Offline"}); } $('.has-error').addClass('has-error'); var calName = $.trim($('[name=calname]').val()); var icsURL = $.trim($('[name=icsurl]').val()); if (calName === '' || ($('[name=icsfile]')[0].files.length === 0 && icsURL === '')) { if (calName === '') { $('[name=calname]').addClass('has-error'); } if ($('[name=icsfile]')[0].files.length === 0 && icsURL === '') { $('[name=icsfile], [name=icsurl]').addClass('has-error'); } return reject({ "error": "Please enter all the required fields.", "reload": false }); } var fdata = new FormData(); fdata.append('action', "ImportCalendar"); fdata.append('eid', idb.authCheck.eid); fdata.append('userid', idb.authCheck.userid); fdata.append('devid', idb.authCheck.devid); fdata.append('name', calName); fdata.append('event_bg_color', $.trim($('[name=event_bg_color]').val())); fdata.append('event_text_color', $.trim($('[name=event_text_color]').val())); if ($('[name=icsfile]')[0].files.length > 0) { var files = $('[name=icsfile]')[0].files[0]; fdata.append('icsfile', files); } else if ($.trim($('[name=icsurl]').val()) !== '') { fdata.append('icsurl', $.trim($('[name=icsurl]').val())); } $.ajax({ url: CalendarImport.api, type: 'post', data: fdata, processData: false, contentType: false, success: (resp) => { if ("error" in resp) { return reject(resp); } idbReloadHTML('mcHTML') .then((hdata) => { return resolve(hdata); }) .catch((error) => { return reject(resp); }); }, error: (xhr, ajaxOptions, thrownError) => { return reject({"error": "Could not import calendar"}) } }); }); }, // Handle delete actions delete: (recordid) => { return new Promise((resolve, reject) => { if (!navigator.onLine) { reject({"error": "Offline"}); } $.ajax({ url: CalendarImport.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "DeleteCalendar", "recordid": recordid }, success: (resp) => { if (typeof resp === "object" && "error" in resp) { return reject(resp); } return resolve(resp); }, error: (xhr, ajaxOptions, thrownError) => { return reject({"error": "Could not import calendar"}) } }); }); }, // Handle update action update: (recordid, params) => { return new Promise((resolve, reject) => { if (!navigator.onLine) { reject({"error": "Offline"}); } $.ajax({ url: CalendarImport.api, type: 'post', data: { "eid": idb.authCheck.eid, "userid": idb.authCheck.userid, "devid": idb.authCheck.devid, "action": "UpdateCalendar", "recordid": recordid, "params": JSON.stringify(params) }, success: (resp) => { if (typeof resp === "object" && "error" in resp) { return reject(resp); } return resolve(resp); }, error: (xhr, ajaxOptions, thrownError) => { return reject({"error": "Could not import calendar"}) } }); }); }, // Reload the calendar reloadCalendar: () => { $("#mcalendar").html(mc_init.loadingText); idb("display_mc", "DBX"); $(window).scrollTop(mc_edit.scrolltop); }, closeImportCalendar: () => { $(".mc_panel").hide(); if (CalendarImport.hasChanged) { $("#mcalendar").html(mc_init.loadingText); idbReloadHTML('mcHTML') .then((hdata) => { CalendarImport.reloadCalendar(); }) .catch((error) => { CalendarImport.reloadCalendar(); }); } else { $("#mc_mcal_display").show(); } $("#mc_mcal_import_btn").removeClass("opened"); }, // Init calendar import init: () => { if (!navigator.onLine) { $("#mc_mcal_import_btn").hide(); return false; } // Setup required event $("#mc_mcal_import_btn, .mc_mcal_import_actions .ic_btn, .mc_mcal_import_close").off(); $("#mc_mcal_import_btn").on('click', function () { if ($(this).hasClass("opened")) { CalendarImport.closeImportCalendar(); } else { CalendarImport.hasChanged = false; $(".mc_panel").hide(); $("#mc_mcal_import").show(); $(this).addClass("opened"); } $(window).scrollTop(0); }); $(".mc_mcal_import_actions .cr_genbtn, .mc_mcal_import_close").on('click', function () { $(".mc_error_msg").remove(); if ($(this).attr("data-ok") == 0) { CalendarImport.closeImportCalendar(); return; } $("#loading").show(); CalendarImport.import() .then((resp) => { $("#loading").hide(); CalendarImport.reloadCalendar(); }) .catch((resp) => { $("#loading").hide(); if ("error" in resp) { CalendarImport.showError(resp.error); } else { CalendarImport.showError("Failed to import the calendar. Please try again later."); } if ("reload" in resp && !resp.reload) { return; } CalendarImport.reloadCalendar(); }); }); $("#mc_mcal_import").on('click', '.ic-delete-calendar', function (event) { event.preventDefault(); CalendarImport.confirmation("Are you sure you want to delete this calendar?", () => { $("#loading").show(); CalendarImport.delete($(this).data('cal-id')) .then((table) => { CalendarImport.hasChanged = true; $(".mc_mcal_import_table").html(table); $("#loading").hide(); }) .catch((error) => { CalendarImport.showError("Failed to remove the calendar. Please try again later"); $("#loading").hide(); }); }); return false; }); $("#mc_mcal_import").on('change', '.update-cal-color', function (event) { event.preventDefault(); $("#loading").show(); var params = {}; params[$(this).attr("name")] = $(this).val(); CalendarImport.update($(this).data('cal-id'), params) .then((table) => { CalendarImport.hasChanged = true; $(".mc_mcal_import_table").html(table); $("#loading").hide(); }) .catch((error) => { CalendarImport.showError("Failed to remove the calendar. Please try again later"); $("#loading").hide(); }); return false; }); }, // Show the error message showError: (msg) => { $("body").append("

" + msg + "

") setTimeout(() => { $(".mc_error_msg").remove(); }, 3000) }, // Confirmation popup confirmation: (msg, yesCallback) => { $("#overlay").hide(); $("#confirmationCalMsg").hide().html(''); if ($("#confirmationCalMsg").length === 0) { $("body").append("
"); } $("#overlay").show(); html = `
${msg}
`; $("#confirmationCalMsg") .html(html) .width($(window).width() * .8); $("#confirmationCalMsg") .css({ top: ($(window).height() - $("#confirmationCalMsg").outerHeight()) / 2 + "px", left: ($(window).width() - $("#confirmationCalMsg").outerWidth()) / 2 + "px" }) .show(); var closeConfirmation = () => { $("#confirmationCalMsg").hide().html(''); $("#overlay").hide(); $(".closeConfirmationCalMsg, #overlay").off(); }; $(".closeConfirmationCalMsg, #overlay").off(); $(".closeConfirmationCalMsg, #overlay").on('click', function () { closeConfirmation(); }); $(".yesConfirmedCalMsg").off(); $(".yesConfirmedCalMsg").on('click', function () { if (typeof yesCallback === "function") { yesCallback(); } closeConfirmation(); }); } };