// Great Circle Mapper
// Copyright (C) 2008-2011
// Karl L. Swartz

function mapui_window_wh(){var w,d,d2;if(typeof(w=window.innerWidth)=='number'){return[w,window.innerHeight];}
d=document;if(((d2=d.documentElement)&&d2.clientWidth&&d2.clientHeight)||((d2=d.body)&&d2.clientWidth&&d2.clientHeight)){return[d2.clientWidth,d2.clientHeight];}
return[0,0];}
function mapui_mr_tick(img,h,delta,i){var d=document;var s;var fn,id;if(delta!==0){fn='mapui_mr_step('+delta;id='';}else if(i>=0){fn='mapui_mr_pick('+i;id=' id="mr_'+i;id+='"';}else{fn='';id='';}
s='<tr><td>'
+(fn===''?'':'<a href="javascript:'+fn+');">')
+'<img src="/images/mr-'+img
+'.gif" border=0 width=14 height='+h+id+'>'
+(fn===''?'':'</a>')
+'</td></tr>';d.writeln(s);}
var map_img,map_res,map_typ,map_init,map_curr;function mapui_mr_html(res){var d=document;var i,n,m;map_img=[];map_typ=[];map_res=res.split(",");map_init=-1;n=map_img.length=map_typ.length=--map_res.length;for(i=0;i<n;++i){if(m=/^(.*):n(.*)$/.exec(map_res[i]),m!==null){map_res[i]=m[1]+m[2];map_typ[i]="fade";}else{map_typ[i]="opt";}
if(m=/^(.*):i(.*)$/.exec(map_res[i]),m!==null){map_res[i]=m[1]+m[2];map_curr=map_init=i;}}
d.writeln('<table cellspacing=0 cellpadding=0 border=0>');mapui_mr_tick('world',18,-1,0);for(i=0;i<n;++i){if(i>map_init){mapui_mr_tick("fade",12,0,-1);}else{mapui_mr_tick(i==map_init?"pick":map_typ[i],12,0,i);}}
mapui_mr_tick('close',18,1,0);d.write('</table><br>');}
function mapui_mr_pick(i){var url,img,m,d;if(map_curr==i){return;}
if((img=map_img[i])===undefined){url=map_img[map_init].src;if((m=/^(.*&MR=)[0-9]*(.*)$/.exec(url))===undefined){alert("mapui_mr_pick(): parse failed on "+url);return;}
img=new Image();img.src=m[1]+map_res[i]+m[2];map_img[i]=img;}
d=document;d.images.map_image.src=img.src;d.getElementById("mr_"+map_curr).src="/images/mr-opt.gif";d.getElementById("mr_"+i).src="/images/mr-pick.gif";map_curr=i;}
function mapui_mr_step(dir){var i=map_curr+dir;if(i>=0&&i<=map_init&&document.getElementById("mr_"+i)!==undefined){mapui_mr_pick(i);}}
function mapui_mr_init(){var img=new Image();img.src=document.images.map_image.src;map_img[map_init]=img;}
function mapui_mr_reset(){if(map_init===undefined){return;}
map_img=[];map_init=map_curr;mapui_mr_init();}
function mapui_ms_pick(ms){var d=document;var url,img,m;url=d.images.map_image.src;if(m=/^(.*)&MS=([a-z0-9]*)(.*)$/.exec(url),m===null){url=url+'&MS='+ms;}else if(ms==m[2]){return;}else{url=m[1]+'&MS='+ms+m[3];}
img=new Image();img.src=url;d.images.map_image.src=img.src;mapui_mr_reset();if(d.dash.MS===undefined){var e=d.createElement("input")
e.setAttribute("type","hidden");e.setAttribute("name","MS");e.setAttribute("value",ms);d.dash.appendChild(e);}else{d.dash.MS.value=ms;}
d.mapui.MS.value=ms;}
function mapui_ms_tick(d,ms,desc){var s,href;href='<a href="javascript:mapui_ms_pick('+"'"+ms+"'"+');">';s=''+href
+'<img src="/images/ms-'+ms
+'.gif" border=0 width=14 height=14>'
+'</a> '+href+desc+'</a>';d.write(s);}
function mapui_ms_html(ms){var d=document;d.write('<span class="ms-intro">Map Style:</span>');mapui_ms_tick(d,'wls','Plain');mapui_ms_tick(d,'wls2','Light');mapui_ms_tick(d,'bm','Blue Marble');}
function mapui_mo_fade(t){var tn='mo'+t;document.getElementById(tn+"t").className="mofade";document.getElementById(tn).className="mohide";}
function mapui_mo_focus(t){var tn='mo'+t;document.getElementById(tn+"t").className="mofocus";document.getElementById(tn).className="moshow";glue_save_state('m',t);}
function mapui_mo_pick(t){var i;for(i=1;i<=4;++i){if(i!=t)
mapui_mo_fade(i);}
mapui_mo_focus(t);}
function mapui_mo_init(){var t=glue_load_state('m');var motabs=document.getElementById('motabs');if(motabs!==null){motabs.className='dshow';if(t===undefined||t<1||t>4){mapui_mo_pick(1);}else{mapui_mo_pick(t);}}}
function mapui_select_update(name,upd,vals){var i,v;var d=document;var s;s='<select name="'+name+'"';if(upd!==undefined){if(upd===''){upd='mapui_update();';}
s+=' onChange="javascript:'+upd+'"';}
s+='>';d.writeln(s);for(i=0;i<vals.length;){if((v=vals[i++])!==null){v=' value="'+v+'"';}else{v='';}
d.writeln('<option'+v+'>'+vals[i++]);}
d.writeln('</select>');}
function mapui_select(name,vals){mapui_select_update(name,undefined,vals);}
function mapui_select_rgb(name){mapui_select_update(name,'',Array('','(default)',null,'red',null,'orange',null,'yellow',null,'green',null,'blue',null,'violet',null,'navy',null,'cyan',null,'magenta',null,'black',null,'white'));}
function mapui_markers_html(){var d=document;d.write('<table cellspacing=0 cellpadding=0 border=0>'+'<tr><td><table class="optbox" cellspacing=0 cellpadding=0 border=0>'+'<tr valign=middle>'+'<td nowrap align=center colspan=2><div><span class="mapopt2">Point Type</span>'+'</td>'+'<td colspan=7>');mapui_select_update('PM_p','mapui_load_ui();',Array('p','point (solitary)','o','origin of path','d','destination of path','m','midpoint of path','w','waypoint (unnamed)','r','range center'));d.write('<br>'+'</div></td></tr>'+'<tr valign=middle>'+'<td rowspan=4 nowrap>&nbsp;&nbsp;&nbsp;&nbsp;</td>'+'<td class="mapopt2">Same as&nbsp;</td>'+'<td colspan=7>');mapui_select_update('PM_l','mapui_pick_link();',Array('','-','p','point (solitary)','e','endpoint of path','m','midpoint of path','w','waypoint (unnamed)'));d.write('</td></tr>'+'<tr valign=middle><td class="mapopt2">Symbol&nbsp;</td>'+'<td>');mapui_select_update('PM_s_typ','mapui_pick_symbol(1);',Array(null,'disc',null,'diamond',null,'square',null,'box',null,'ring','ringb','ring (bold)',null,'star','cstar','circled star','6star','6-point star','7star','7-point star',null,'pyramid',null,'pentagon',null,'hexagon','','(none)'));d.write('</td>'+'<td nowrap rowspan=9>&nbsp;&nbsp;</td>'+'<td nowrap class="mapopt2">Label&nbsp;</td>'+'<td colspan=4>');mapui_select_update('PM_t_str','mapui_pick_text(1);',Array('%U','user-entered code','%I','ICAO code','%T','IATA code','%F','FAA or local code','%i','best code, prefer ICAO','%t','best code, prefer IATA','%N','city name','%A','airport name','%N%, S%, C','city, state, country','%U% (N','user-entered code + (city name)','%i% (N','ICAO/best + (city name)','%t% (N','IATA/best + (city name)','','(none)'));d.write('</td></tr>'+'<tr valign=middle>'+'<td class="mapopt2">Color</td>'+'<td>');mapui_select_rgb('PM_s_rgb');d.write('</td>'+'<td class="mapopt2">Color</td>'+'<td>');mapui_select_rgb('PM_t_rgb');d.write('</td>'+'<td nowrap rowspan=9>&nbsp;&nbsp;</td>'+'<td class="mapopt2">Halo</td>'+'<td>');mapui_select_rgb('PM_t_halo');d.write('</td></tr>'+'<tr valign=middle>'+'<td class="mapopt2">Size</td>'+'<td>');mapui_select_update('PM_s_siz','',Array(null,3,null,4,null,5,null,6,null,7,null,8,null,9,null,10,null,11,null,12,null,13,null,14,null,15,null,16,null,17,null,18,null,19));d.write('</td>'+'<td class="mapopt2">Size</td>'+'<td>');mapui_select_update('PM_t_siz','',Array(null,10,null,12,null,13,null,14,null,16,null,18,null,20,null,24,null,28));d.write('</td>'+'<td class="mapopt2">Face</td>'+'<td>');mapui_select_update('PM_t_face','',Array('','(default)','r','roman','b','bold','i','italic','bi','bold italic'));d.write('</td></tr>'+'</table></td></tr>'+'</td></tr>'+'</table>');}
function mapui_evu_html(){var d=document;d.write('<br><center><span class="mapopt2">or</span><br>'+'<select name="EVU" onChange="mapui_evu_nominal(this);">'+'<option value="">(pick aircraft)'+'<option value="389">Boeing 757'+'<option value="410">Boeing 777'+'<option value="370">Gulfstream IV and V'+'<option value="343">Bombardier Challenger'+'<option value="215">ATR 42-500 and 72-500'+'</select></center>');}
function mapui_evu_nominal(p){if(p.value===""){return;}
var f=p.form;var n=f.length;var e=f.elements;var i,nm;for(i=1;i<=n;++i){nm=e[i].name;if(nm=="EV"){e[i].value=p.value;}else if(nm=="EU"){e[i].value="kts";}}}
function mapui_show_all_html(){document.writeln('<button type="button" onclick="javascript: mapui_show_all();">Show All Controls</button>');}
function mapui_show_all(){return item_setlist(Array("P","R","PM","PS_","RS_","DU_","E_","MP_"),1);}
var mapui_cf_len="podmwr".length;var mapui_cf=new Array(mapui_cf_len);var mapui_def_symsiz=7;var mapui_def_txtsiz=14;var mapui_def_txtface='b';function mapui_parse_color(s){var m,typ;if(m=/^:?#([0-9a-fA-f]{6})\b(.*)/.exec(s),m!==null){typ="rgb6";}else if(m=/^:?#([0-9a-fA-f]{3})\b(.*)/.exec(s),m!==null){typ="rgb3";}else if(m=/^:([a-zA-Z]{2,})\b(.*)/.exec(s),m!==null){typ="name";}else{return undefined;}
m[0]=typ;return m;}
function mapui_parse_color_spec(s){var m,c1,c2;if(m=/^:([PpMmTt])\b(.*)/.exec(s),m!==null){m[0]="link";return m;}
if((c1=mapui_parse_color(s))===undefined){return undefined;}
s=c1[2];if(m=/^\/(.*)/.exec(s),m!==null){if((c2=mapui_parse_color(m[1]))!==undefined){c1[2]="halo";return c1.concat(c2);}}else if(m=/^([:#].*)/.exec(s),m!==null){if((c2=mapui_parse_color(m[1]))!==undefined){c1[2]="color2";return c1.concat(c2);}}
return c1;}
function mapui_parse_text(s){var m;var txt,siz,font,face,bold,ital,rose,rgb;siz='14';if(m=/^(%[A-Za-z])\b(.*)$/.exec(s),m!==null){txt=m[1];s=m[2];}else if(m=/^"([^"]*)"(.*)$/.exec(s),m!==null){txt=m[1];s=m[2];while(/^[a-zA-Z0-9]/.test(s)){if(m=/^(\d+)(.*)/.exec(s),m!==null){siz=m[1];}else if(m=/^([HT])(.*)/i.exec(s),m!==null){font=m[1].toLowerCase();}else if(m=/^(R)(.*)/i.exec(s),m!==null){face=bold=ital='';}else if(m=/^(B)(.*)/i.exec(s),m!==null){bold='b';face='';}else if(m=/^(I)(.*)/i.exec(s),m!==null){ital='i';face='';}else if(m=/^([ACEW]|[NS][EW]?)(.*)/i.exec(s),m!==null){rose=m[1].toLowerCase();}else{s=s.substr(1);continue;}
s=m[2];}
if(face!==undefined){if(bold!==undefined){face=bold;}
if(ital!==undefined){face+=ital;}
if(face===''){face='r';}}
if((rgb=mapui_parse_color_spec(s))!==undefined){s=rgb.pop();}}else{return undefined;}
if(face===undefined){face='';}
return Array(txt,siz,font,face,rose,rgb,s);}
function mapui_parse_symbol(s){var m;var sym,siz,rgb;if(m=/^[-0](.*)$/.exec(s),m!==null){return Array('',m[1]);}
if(m=/^([a-z0-9]*[a-z])([0-9]*)(.*)$/i.exec(s),m!==null){sym=m[1].toLowerCase();siz=m[2]!==''?m[2]:undefined;s=m[3];if(rgb=mapui_parse_color(s),rgb!==undefined){s=rgb.pop();}
return Array(sym,siz,rgb,s);}
return undefined;}
function mapui_parse_pem(s){var m,i;var a=[];s=s.toLowerCase();s=s.replace(/b/g,"pemr");s=s.replace(/a/g,"pemwr");s=s.replace(/e/g,"od");for(i=0;i<mapui_cf_len;++i){if(s.indexOf("podmwr".substr(i,1))>=0){a[a.length++]=i;}}
return a;}
function mapui_parse_marker(s){var pem,sym,txt;var m,i,cf;if(s===''||(m=/^([peodmwrba]+):(.*)$/i.exec(s),m===null)){return undefined;}
s=m[2];pem=mapui_parse_pem(m[1]);if((sym=mapui_parse_symbol(s))!==undefined){s=sym.pop();if(m=/^\+(.*)$/.exec(s),m===null){txt=undefined;}else if((txt=mapui_parse_text(m[1]))!==undefined){s=txt.pop();}}else if((txt=mapui_parse_text(s))!==undefined){s=txt.pop();if(m=/^\+(.*)$/.exec(s),m===null){sym=undefined;}else if((sym=mapui_parse_symbol(m[1]))!==undefined){s=sym.pop();}}else{return undefined;}
for(i=0;i<pem.length;++i){cf=mapui_cf[pem[i]];if(sym!==undefined){cf.sym=sym;}
if(txt!==undefined){cf.txt=txt;}
cf.lnk=(i===0)?undefined:pem[0];}
return Array(sym,txt,s);}
function mapui_parse_raw(){var ui=document.mapui;var s=ui.PM.value;var i,m;for(i=0;i<mapui_cf.length;++i){if(mapui_cf[i]===undefined){mapui_cf[i]=[];}
mapui_cf[i].sym=['',mapui_def_symsiz,undefined];mapui_cf[i].txt=['',mapui_def_txtsiz,'','','',undefined,''];mapui_cf[i].lnk=undefined;}
if(s==="*"){s="b:disc7+%U";}
while((m=mapui_parse_marker(s))!==undefined){s=m[2];if(m=/^ *[,;] *(.+)/.exec(s),m===null){break;}
s=m[1];}}
function mapui_quick_marker(){var ui=document.mapui;ui.PM.value=ui.PM_q.value;mapui_init();}
function mapui_update(){var ui=document.mapui;var cf;var s,s2,i,j;var raw=new Array(mapui_cf_len);mapui_save_ui();for(i=0;i<mapui_cf_len;++i){s='';cf=mapui_cf[i];if(cf.lnk!==undefined){raw[i]=raw[cf.lnk];continue;}
if(cf.sym!==undefined&&cf.sym[0]!==''){s=cf.sym[0]+cf.sym[1];if(cf.sym[2]!==undefined){s+=':'+cf.sym[2];}
if(cf.txt!==undefined&&cf.txt[0]!==''){s+='+';}}
if(cf.txt!==undefined&&cf.txt[0]!==''){s2='';if(cf.txt[1]!==''&&cf.txt[1]!='14'){s2+=cf.txt[1];}
if(cf.txt[3]!==''&&cf.txt[3]!=mapui_def_txtface){s2+=cf.txt[3];}
if(cf.txt[5]!==undefined){s2+=':'+cf.txt[5][1];if(cf.txt[5].length>2&&cf.txt[5][2]=='halo'&&cf.txt[5][4]!==''){s2+='/:'+cf.txt[5][4];}}
if(s2===''&&/^%[A-Za-z]$/.test(cf.txt[0])){s+=cf.txt[0];}else{s+='"'+cf.txt[0]+'"'+s2;}}
raw[i]=s;}
s='';for(i=0;i<mapui_cf_len;++i){if(raw[i]===''){continue;}
s+="podmwr".substr(i,1);for(j=i+1;j<mapui_cf_len;++j){if(raw[j]!=raw[i]){continue;}
s+="podmwr".substr(j,1);raw[j]='';}
s=s.replace(/od/,"e");if(s=="pemr"){s="b";}else if(s=="pemwr"){s="a";}
s+=':'+raw[i]+',';}
if(s!==''){s=s.substr(0,s.length-1);}
ui.PM.value=s;mapui_load_quick();}
function mapui_pick_link(){var ui=document.mapui;var cf=mapui_cf[mapui_parse_pem(ui.PM_p.value)[0]];if(ui.PM_l.value===''){cf.lnk=undefined;}else{cf.lnk=mapui_parse_pem(ui.PM_l.value)[0];}
mapui_load_ui();mapui_update();}
function mapui_pick_symbol(update){var ui=document.mapui;ui.PM_s_rgb.disabled=ui.PM_s_siz.disabled=ui.PM_s_typ.disabled||(ui.PM_s_typ.value==='');if(update){mapui_update();}}
function mapui_pick_text(update){var ui=document.mapui;ui.PM_t_rgb.disabled=ui.PM_t_siz.disabled=ui.PM_t_halo.disabled=ui.PM_t_face.disabled=ui.PM_t_str.disabled||(ui.PM_t_str.value==='');if(update){mapui_update();}}
function mapui_default(val,def){if(val!==undefined){return val;}
return def;}
function mapui_set_select(sel,val,txt){var i;for(i=0;i<sel.length;++i){if(sel[i].value==val){sel.value=val;return;}}
++sel.length;if(sel[i-1].value===''){sel[i].value=sel[i-1].value;sel[i].text=sel[i-1].text;--i;}
sel[i].value=val;sel[i].text=txt;sel.value=val;}
function mapui_load_quick(){var ui=document.mapui;mapui_set_select(ui.PM_q,ui.PM.value,'custom: '+ui.PM.value);}
function mapui_load_ui(){var ui=document.mapui;var cf=mapui_cf[mapui_parse_pem(ui.PM_p.value)[0]];var lnk,rgb,i,disabled;disabled=0;for(i=1;i<ui.PM_l.length;++i){if(ui.PM_l[i].value==ui.PM_p.value){disabled=1;}
ui.PM_l[i].disabled=disabled||mapui_cf[i-1].lnk!==undefined;}
if((lnk=cf.lnk)===undefined){ui.PM_l.value='';}else{cf=mapui_cf[lnk];ui.PM_l.value="podmwr".substr(lnk,1);}
ui.PM_s_typ.disabled=ui.PM_t_str.disabled=(lnk!==undefined);if(cf.sym===undefined){ui.PM_s_typ.value='';ui.PM_s_siz.value=mapui_def_symsiz;ui.PM_s_rgb.value='';}else{mapui_set_select(ui.PM_s_typ,cf.sym[0],cf.sym[0]);ui.PM_s_siz.value=mapui_default(cf.sym[1],mapui_def_txtsiz);if((rgb=cf.sym[2])===undefined){ui.PM_s_rgb.value='';}else{ui.PM_s_rgb.value=rgb[1];}}
mapui_pick_symbol(0);if(cf.txt===undefined){ui.PM_t_str.value='';ui.PM_t_siz.value=14;ui.PM_t_face.value='';ui.PM_t_rgb.value='';ui.PM_t_halo.value='';}else{for(i=0;i<ui.PM_t_str.length;++i){if(ui.PM_t_str[i].value==cf.txt[0]){break;}
if(i+1==ui.PM_t_str.length){i=ui.PM_t_str.length++;ui.PM_t_str[i].value=cf.txt[0];ui.PM_t_str[i].text='custom: '+cf.txt[0];break;}}
ui.PM_t_str.value=cf.txt[0];ui.PM_t_siz.value=mapui_default(cf.txt[1],14);ui.PM_t_face.value=mapui_default(cf.txt[3],'');if((rgb=cf.txt[5])===undefined){ui.PM_t_rgb.value='';}else{ui.PM_t_rgb.value=rgb[1];if(rgb.length==2||rgb[2]!="halo"){ui.PM_t_halo.value='';}else{ui.PM_t_halo.value=rgb[4];}}}
mapui_pick_text(0);}
function mapui_save_ui(){var ui=document.mapui;var cf=mapui_cf[mapui_parse_pem(ui.PM_p.value)[0]];var rgb;if(ui.PM_s_typ.value===''){cf.sym=undefined;}else{rgb=ui.PM_s_rgb.value!==''?ui.PM_s_rgb.value:undefined;cf.sym=[ui.PM_s_typ.value,ui.PM_s_siz.value,rgb];}
if(ui.PM_t_str.value===''){cf.txt=undefined;}else{if(ui.PM_t_str.value===''||ui.PM_t_rgb.value===''){rgb=undefined;}else{rgb=['name',ui.PM_t_rgb.value];if(ui.PM_t_halo!==''){rgb.length+=3;rgb[2]='halo';rgb[3]='name';rgb[4]=ui.PM_t_halo.value;}}
cf.txt=[ui.PM_t_str.value,ui.PM_t_siz.value,undefined,ui.PM_t_face.value,undefined,rgb];}}
function mapui_init(){mapui_parse_raw();mapui_load_ui();mapui_load_quick();mapui_mr_reset();}
function mapui_submit(){var ui=document.mapui;var e=ui.elements;var i;ui.PM_p.disabled=1;ui.PM_q.disabled=1;ui.PM_l.disabled=1;ui.PM_s_typ.disabled=1;ui.PM_s_rgb.disabled=1;ui.PM_s_siz.disabled=1;ui.PM_t_str.disabled=1;ui.PM_t_rgb.disabled=1;ui.PM_t_halo.disabled=1;ui.PM_t_siz.disabled=1;ui.PM_t_face.disabled=1;if(ui.PM.value==='*'){ui.PM.disabled=1;}
ui.EVU.disabled=1;for(i=0;i<e.length;++i){if(!e[i].disabled&&e[i].value===''){e[i].disabled=1;}}
if(ui.EV.disabled){ui.EU.disabled=1;}
if(ui.SG.disabled){ui.SU.disabled=1;}}
