// PL-VACC ONLINE TRAFFIC
// PREVIEW [DEV VERSION]
// (C) Marcin Dziadowiec
$(document).ready(function(){if(!Array.prototype.indexOf){Array.prototype.indexOf=function(a){var b=this.length>>>0;var c=Number(arguments[1])||0;c=(c<0)?Math.ceil(c):Math.floor(c);if(c<0)c+=b;for(;c<b;c++){if(c in this&&this[c]===a)return c}return-1}}Array.prototype.clean=function(a){for(var i=0;i<this.length;i++){if(this[i]==a){this.splice(i,1);i--}}return this};var g=[{featureType:"administrative",stylers:[{visibility:"off"},{lightness:41}]},{featureType:"poi",stylers:[{visibility:"off"}]},{featureType:"road",stylers:[{visibility:"off"}]},{featureType:"landscape",stylers:[{visibility:"off"}]},{featureType:"administrative.country",stylers:[{visibility:"simplified"}]},{}];var h=new google.maps.LatLng(52.1,19);var k={zoom:4,center:h,mapTypeId:google.maps.MapTypeId.ROADMAP,draggable:false,disableDefaultUI:true,disableDoubleClickZoom:true,styles:g,scrollwheel:false};var l=new google.maps.Map(document.getElementById("map_canvas"),k);Sct={};Sct.EXTERNAL_CTR=['LKAA_A','ESAA','EDMM_A','UKLV_A','UMMV','EYVL','UMKK','EDWW_A','LZBB_A'];Sct.EPWW_CTR=['EPWW_G','EPWW_D','EPWW_J','EPWW_D','EPWW_B','EPWW_S','EPWW_T','EPWW_C','EPWW_J','EPWW_R','EPWW_E','LOA1'];Sct.EPGD_APP=['EPGD_E'];Sct.EPKK_APP=['EPKK_APP'];Sct.EPWA_APP=['CTA2'];Sct.EPPO_APP=['EPPO_D'];var m=[['EPWA',52.165833,20.967222],['EPKK',50.077778,19.784722],['EPKT',50.474167,19.08],['EPGD',54.3775,18.466111],['EPWR',51.102778,16.885833],['EPPO',52.421111,16.826389],['EPRZ',50.11,22.018889],['EPLL',51.721944,19.398056],['EPSC',53.584722,14.902222],['EPBY',53.096667,17.977778],['EPZG',52.138611,15.798611]];var n={};n.SizeByAlt=true;n.artpIconSize=new google.maps.Size(3,3);n.acftIconWidth=14;n.acftIconHeight=13;var o={};o.offline=new google.maps.MarkerImage('images/map/apt_off.png',null,null,new google.maps.Point(2,2),n.artpIconSize);o.twr=new google.maps.MarkerImage('images/map/twr_online.gif',null,null,new google.maps.Point(2,2),n.artpIconSize);o.gnd=new google.maps.MarkerImage('images/map/gnd_online.gif',null,null,new google.maps.Point(2,2),n.artpIconSize);o.twrgnd=new google.maps.MarkerImage('images/map/twrgnd_online.gif',null,null,new google.maps.Point(2,2),n.artpIconSize);var p={};p.arpt=null;var q=[];var r=[];var s=[];var t=[];function arptFilter(a){var b=false;var c=p.arpt;if(c==a.dep||c==a.dest){b=true}else if(c==null){b=true}else if(c=='EP'){if(a.dep!=undefined&&a.dest!=undefined){if(c==a.dep.substr(0,2)||c==a.dest.substr(0,2)){b=true}else{b=false}}}else{b=false}return b}function isTwrOnline(c){var d=false;if(t.atc_online){$.each(t.atc_online,function(a,b){if(c==b.icao&&b.type=='TWR')d=true})}return d}function isGndOnline(c){var d=false;if(t.atc_online){$.each(t.atc_online,function(a,b){if(c==b.icao&&b.type=='GND')d=true})}return d}function loadOnlineData(){$.ajax({url:"map/json.php",async:false,cache:false,dataType:'json',success:function(a){t=a}})}function acftIconSize(a){var b=new google.maps.Size(n.acftIconWidth,n.acftIconHeight);if(a<5000){b=new google.maps.Size(n.acftIconWidth-4,n.acftIconHeight-4)}else if(a>5000&&a<10000){b=new google.maps.Size(n.acftIconWidth-3,n.acftIconHeight-3)}else if(a>10000&&a<20000){b=new google.maps.Size(n.acftIconWidth-2,n.acftIconHeight-2)}else if(a>20000&&a<30000){b=new google.maps.Size(n.acftIconWidth-1,n.acftIconHeight-1)}return b}function createAcftMarker(a){var b=new google.maps.Size(19,18);var c=l;if(n.SizeByAlt===true){b=acftIconSize(a.alt)}if(arptFilter(a)===false){c=null}var d=new google.maps.Marker({position:new google.maps.LatLng(a.lat,a.lon),map:c,ZIndex:0,icon:{url:"images/map/acft_"+a.hdg+".png",scaledSize:b,anchor:new google.maps.Point(9,9)},title:a.title+" \n"+a.dep+"-"+a.dest,cid:a.cid,hdg:a.hdg,dep:a.dep,dest:a.dest});q.push(d)}function setSectorsStates(){if(s&&t.atc_online){var a;var b=[];var c={};c.CTR={fillOpacity:0.04,strokeColor:"#BC0000"};c.APP={fillOpacity:0.2,strokeColor:"#BC0000"};for(j=0;j<t.atc_online.length;j++){a=t.atc_online[j].icao+'_'+t.atc_online[j].type;if(a in Sct){for(z=0;z<s.length;z++){if(s[z].position==a){b.push(z);s[z].setOptions(c[t.atc_online[j].type])}}}}for(var y=0;y<s.length;y++){if(b.indexOf(y)<0){s[y].setOptions({fillOpacity:0,strokeColor:"#808080"})}}}}function createSector(b,c,d){var e=[];$.each(b,function(i,a){e[i]=new google.maps.LatLng(a.lat,a.lon)});var f=new google.maps.Polygon({paths:e,map:l,strokeWeight:0.5,fillOpacity:0.0,fillColor:"#BC0000",strokeColor:"#808080"});f.name=c;f.position=d;s.push(f)}function createAirports(){for(i=0;i<m.length;i++){var a='offline';if(isTwrOnline(m[i][0])===true&&isGndOnline(m[i][0])===false){a='twr'}else if(isTwrOnline(m[i][0])===false&&isGndOnline(m[i][0])===true){a='gnd'}else if(isTwrOnline(m[i][0])===true&&isGndOnline(m[i][0])===true){a='twrgnd'}var b=new google.maps.Marker({position:new google.maps.LatLng(m[i][1],m[i][2]),map:l,ZIndex:1,optimized:false,icon:o[a],title:m[i][0]});r.push(b)}}function refreshArptsState(){for(y=0;y<r.length;y++){var a='offline';if(isTwrOnline(r[y].title)===true&&isGndOnline(r[y].title)===false){a='twr'}else if(isTwrOnline(r[y].title)===false&&isGndOnline(r[y].title)===true){a='gnd'}else if(isTwrOnline(r[y].title)===true&&isGndOnline(r[y].title)===true){a='twrgnd'}r[y].setIcon(o[a])}}function loadAircrafts(b){$.each(t.acfts,function(i,a){createAcftMarker(a,b)})}function acftDisplayedPosUpdate(a){var b=false;for(i=0;i<q.length;i++){if(a.cid==q[i].cid){var c=new google.maps.LatLng(a.lat,a.lon);if(a.hdg!=q[i].hdg){var d=new google.maps.Size(14,13);if(n.SizeByAlt===true){d=acftIconSize(a.alt)}var e=new google.maps.MarkerImage("images/map/acft_"+a.hdg+".png",null,null,new google.maps.Point(9,9),d);q[i].setIcon(e)}q[i].setPosition(c);b=true}}return b}function removeAcfts(){for(i=0;i<q.length;i++){var a=false;for(j=0;j<t.acfts.length;j++){if(q[i].cid==t.acfts[j].cid)a=true}if(a==false){q[i].setMap(null);delete q[i]}}}function updateAircrafts(){$.each(t.acfts,function(i,a){if(acftDisplayedPosUpdate(a)===false){createAcftMarker(a,true)}});removeAcfts();q.clean(undefined)}function activateArptFilter(){for(i=0;i<q.length;i++){if(arptFilter(q[i])===true){q[i].setMap(l)}else{q[i].setMap(null)}}}$.ajax({url:"../jev/ol_map_data/fir.json",async:false,dataType:'json',success:function(b){$.each(b.sectors,function(i,a){for(var j in Sct){if(Sct[j].indexOf(i)>=0)createSector(a,i,j)}})}});var u=document.createElement('DIV');filterList=document.createElement('select');filterList.className='map_list';filterList.options.add(new Option("off","null"));filterList.options.add(new Option("EP**","EP"));for(i=0;i<m.length;i++){filterList.options.add(new Option(m[i][0],m[i][0]))}u.appendChild(filterList);l.controls[google.maps.ControlPosition.TOP_RIGHT].push(u);loadOnlineData();loadAircrafts();createAirports();setSectorsStates();var v=120;setInterval(function(){v--;$("#counter").html("auto update in: "+v);if(v<1){loadOnlineData();updateAircrafts();setSectorsStates();refreshArptsState();v=120}},1000);google.maps.event.addDomListener(filterList,'change',function(){p.arpt=filterList.value;if(p.arpt=="null")p.arpt=null;activateArptFilter()})});
