var project={"_id":"59ef8882df4fb1d0b2954851","id":"35529c84a6a34a061e6402b5de23240474dd7488","name":"RS Go Team Missions","user":"57dfeb1654955f1127d5672b","description":"Public website with the RST list","created":"2016-01-08T22:15:38.599Z","shared":false,"server":"micro","datafiles":[{"file":{"link":"https://spreadsheets.google.com/feeds/list/1f9eIvRBz39nG7br0u2GOiSaTbTiE88pb3SquXpohyj0/default/public/full?alt=json","type":"URL/API","url":"https://spreadsheets.google.com/feeds/list/1f9eIvRBz39nG7br0u2GOiSaTbTiE88pb3SquXpohyj0/default/public/full?alt=json","message":{"error":false,"text":""}},"varname":"rst","title":"Runway Safety Go Team Missions","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":"","sendtojs":true},{"file":{"link":" https://v4p4sz5ijk.execute-api.us-east-1.amazonaws.com/anbdata/airports/locations/allindicators-list","type":"URL/API","url":" https://v4p4sz5ijk.execute-api.us-east-1.amazonaws.com/anbdata/airports/locations/allindicators-list","message":{"error":false,"text":""}},"varname":"allairports","title":"Aerodromes","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":""},{"file":{"link":"https://v4p4sz5ijk.execute-api.us-east-1.amazonaws.com/anbdata/airports/locations/operational-list?api_key=7c3cb620-ed23-11e5-a5f9-adff4fb3e3e1","type":"URL/API","url":"https://v4p4sz5ijk.execute-api.us-east-1.amazonaws.com/anbdata/airports/locations/operational-list?api_key=7c3cb620-ed23-11e5-a5f9-adff4fb3e3e1","message":{"error":false,"text":""}},"varname":"aerodromes","title":"AllAirports","activated":true,"name":"datafile","linkedtofile":true,"optional":true,"content":""}],"packs":["bootstrap","jquery","Datatables"],"container":"mainpart","js":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"},"depurl":"https://quipslibistars.s3.amazonaws.com/prod/35529c84a6a34a061e6402b5de23240474dd7488/script.js"},"title":"Javascript","activated":true,"name":"js","linkedtofile":false,"optional":true,"content":"  var map = new google.maps.Map(document.getElementById('map'), {\n    center: {lat: 20, lng: 20},\n    //scrollwheel: false,\n    zoom: 1\n  });\nvar icon = {\n    url: \"https://s3.amazonaws.com/istarsshare/airplane_icon.png\", // url\n    scaledSize: new google.maps.Size(20, 20), // scaled size\n    origin: new google.maps.Point(0,0), // origin\n    anchor: new google.maps.Point(10, 30) // anchor\n};\n\n$(\"tr.airports\").each(function(i,v){\n      var ap=JSON.parse($(v).attr(\"ap\"))\n      \n  if (ap) {\n        var marker = new google.maps.Marker({\n            position: {lat:ap.latitude,lng:ap.longitude},\n            map: map,\n            icon:icon,\n            title: ap.airportCode\n        });\n        marker.addListener('click', function() {\n            var infowindow = new google.maps.InfoWindow({\n                content: ap.airportName+\" (\"+ap.airportCode+\")\"\n            });\n            infowindow.open(map, marker);\n        });\n}\n  })\nvar newrst=[],mem=[]\nrst.feed.entry.forEach(function(v){var code=v.gsx$aerodrome.$t.toUpperCase().trim();if (mem.indexOf(code)<0){newrst.push(v)};mem.push(code)})\n\nvar clock = $('.counter').FlipClock(newrst.length, {\n\t\tclockFace: 'Counter'\n\t});\n\n  $(\"#rstlist\").dataTable()\n"},"css":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"}},"title":"Cascading Style Sheet (CSS)","activated":false,"name":"css","linkedtofile":false,"optional":true},"jade":{"file":{"type":"","url":"","link":"","message":{"error":true,"text":"File not defined"},"depurl":"https://quipslibistars.s3.amazonaws.com/prod/35529c84a6a34a061e6402b5de23240474dd7488/main.jade"},"title":"Jade","activated":true,"name":"jade","linkedtofile":false,"optional":false,"content":".container(style=\"width:600px\")\n    //h1.text-center Runway Safety Teams\n    - var newrst=[],mem=[]\n    - rst.feed.entry.forEach(function(v){var code=v.gsx$aerodrome.$t.toUpperCase().trim();if (mem.indexOf(code)<0){newrst.push(v)};mem.push(code)})\n    br\n    .counter(style=\"margin-left:200px\")\n    h2.text-center Completed ICAO Runway Safety Go-Team Missions\n    \n    div(style=\"margin:auto\")\n        #map(style=\"width:600px;height:300px\")\n    br\n    table#rstlist.display(style=\"width:100%\")\n        thead\n            tr\n                td Airport Code\n                td Name\n                td Country\n                td Go-Team Mission Date\n        tbody\n            for r in newrst\n                - var code=r.gsx$aerodrome.$t.toUpperCase().trim()\n                - if (code.length==3) {var x=aerodromes.filter(function(d){return d.iatacode==code})[0];code=(x?x.airportCode:code)}\n                - var ap=aerodromes.filter(function(d){return (d.airportCode==code)})[0]\n                - ap=(ap?ap:{airportName:\"\",countryName:\"\"})\n                tr.airports(ap=JSON.stringify(ap))\n                    td=code\n                    td=ap.airportName\n                    td=ap.countryName\n                    td=r.gsx$datesofmission.$t"},"google maps apikey":"","capture":"https://quipslibistars.s3.amazonaws.com/prod/35529c84a6a34a061e6402b5de23240474dd7488/capture.png","prod":true,"sharedwith":["57dfeb1654955f1127d5672b"],"morejs":[{"url":"https://maps.googleapis.com/maps/api/js?key=AIzaSyDIwmr3eZMyXQsnn3H11aIC-_XvUs-_hZE&libraries=visualization"},{"url":"https://cdnjs.cloudflare.com/ajax/libs/flipclock/0.7.8/flipclock.min.js"}],"morecss":[{"url":"https://cdnjs.cloudflare.com/ajax/libs/flipclock/0.7.8/flipclock.min.css"}],"deploydate":"2017-10-27T16:22:14.300Z","libs":[{"_id":"5672b285f36b083214f3e63b","description":"A sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development.","key":"","version":"3.3.6","link":"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css,https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js","name":"bootstrap","__v":0,"haskey":false,"required":false,"website":"http://www.getbootstrap.com"},{"_id":"5672b602f36b083214f3e63e","description":"The Write Less, Do More, JavaScript Library","key":"","version":"2.1.1","link":"https://code.jquery.com/jquery-2.1.4.js","name":"jquery","__v":0,"required":true,"haskey":false,"website":"https://jquery.com"},{"_id":"568eb9222043a726661b0ad2","required":false,"description":"A plug-in for the jQuery Javascript Library. It is a highly flexible tool, based upon the foundations of progressive enhancement, and will add advanced interaction controls to any HTML table.","haskey":false,"version":"1.10.10","link":"https://cdn.datatables.net/s/dt/dt-1.10.10/datatables.min.css,https://cdn.datatables.net/s/dt/dt-1.10.10/datatables.min.js","name":"Datatables","__v":0,"website":"https://www.datatables.net"}],"host":"https://quips.anbdata.com","version":"prod"}
function loadjquery(url,callback) {
if(typeof jQuery=='undefined') {
loadScript(url,callback)
}
else {
callback()
}
}
    function loadScript(url, callback) {
        var script = document.createElement("script")
        script.type = "text/javascript";
        if (script.readyState) { //IE
            script.onreadystatechange = function () {
                if (script.readyState == "loaded" || script.readyState == "complete") {
                    script.onreadystatechange = null;
                    callback();
                }
            };
        } else { //Others
            script.onload = function () {
                callback();
            };
        }
        script.src = url;
        document.getElementsByTagName("head")[0].appendChild(script);
    }
(function () {
    
    loadjquery("https://code.jquery.com/jquery-2.1.4.js", function () {
         //jQuery loaded
	$("#"+project.container).html(" ")	
	var libs=[]
	$(project.libs).each(function(i,v){
		if (v.name!="jquery") {
		$(v.link.split(",")).each(function(j,u){
			if (u.slice(-2)=="js") {
				libs.push(u+(v.haskey?"?key="+project[v.name+"key"]:""))
			}
			else {
				$("head").append("")
			}
		})
		}
	})
	if (project.morejs) {
	$(project.morejs).each(function(i,v){
		if ((v.url.substring(0,2)=="//")||(v.url.substring(0,8)=="https://")||(v.url.substring(0,7)=="http://")) {
			libs.push(v.url)
		}
	})
	}
	if (project.morecss) {
	$(project.morecss).each(function(i,v){
		$("head").append("")
	})	
	}
	loadlibs(libs.reverse())
    });
})();
function loadlibs(libs){
if (libs.length>0) {
	var l=libs.pop()
	loadScript(l,function(){
	//$.getScript(l,function(res){
		loadlibs(libs)
	})
	//.fail(function(e){
	//	loadlibs(libs)
	//	
	//})
}
else {
	start()
}
}
function putscriptcontent(content){
        var script = document.createElement("script")
        script.type = "text/javascript";
        $(script).text(content)
        document.getElementsByTagName("head")[0].appendChild(script);
}
function start(){
//load jade
$.getJSON(project.host+"/project/"+project.version+"/"+project.id+"/render?callback=?"+(project.datachange?"&data="+project.datachange:""),function(res){
	$("#"+project.container).html(res.html)
	if (project.css.activated) {
		if (project.css.linkedtofile) {
			$("head").append("")}
		else {
			$("head").append("")}
	}
			
	if (project.js.activated) {
		if (project.js.linkedtofile) {	
			$.getScript(project.js.file[(project.prod?"depurl":"url")])}
		else {
			putscriptcontent(project.js.content)}
		if (project.mainjs) {
			window[project.mainjs]()
		}
	}
})
}
")	
	var libs=[]
	$(project.libs).each(function(i,v){
		if (v.name!="jquery") {
		$(v.link.split(",")).each(function(j,u){
			if (u.slice(-2)=="js") {
				libs.push(u+(v.haskey?"?key="+project[v.name+"key"]:""))
			}
			else {
				$("head").append("")
			}
		})
		}
	})
	if (project.morejs) {
	$(project.morejs).each(function(i,v){
		if ((v.url.substring(0,2)=="//")||(v.url.substring(0,8)=="https://")||(v.url.substring(0,7)=="http://")) {
			libs.push(v.url)
		}
	})
	}
	if (project.morecss) {
	$(project.morecss).each(function(i,v){
		$("head").append("")
	})	
	}
	loadlibs(libs.reverse())
    });
})();
function loadlibs(libs){
if (libs.length>0) {
	var l=libs.pop()
	loadScript(l,function(){
	//$.getScript(l,function(res){
		loadlibs(libs)
	})
	//.fail(function(e){
	//	loadlibs(libs)
	//	
	//})
}
else {
	start()
}
}
function putscriptcontent(content){
        var script = document.createElement("script")
        script.type = "text/javascript";
        $(script).text(content)
        document.getElementsByTagName("head")[0].appendChild(script);
}
function start(){
//load jade
$.getJSON(project.host+"/project/"+project.version+"/"+project.id+"/render?callback=?"+(project.datachange?"&data="+project.datachange:""),function(res){
	$("#"+project.container).html(res.html)
	if (project.css.activated) {
		if (project.css.linkedtofile) {
			$("head").append("")}
		else {
			$("head").append("")}
	}
			
	if (project.js.activated) {
		if (project.js.linkedtofile) {	
			$.getScript(project.js.file[(project.prod?"depurl":"url")])}
		else {
			putscriptcontent(project.js.content)}
		if (project.mainjs) {
			window[project.mainjs]()
		}
	}
})
}