﻿var whichTab = 1; var mapTop, mapLeft; var GMapsInitialized = false; var endSearchLoop = false; var IFRLAERLayer = null; var sectionalsLayer = null; function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function () { oldonload(); func(); } } }
function $get(o) { return document.getElementById(o); }
function processTab(eee, uuu) { var a = uuu.panel.id; var b = String(a).length - 1; activePanel = uuu.panel; activePanel.style.overflow = "auto"; whichTab = parseInt(a.substring(b, b + 1)); updateTab(); }
function serviceProxy(serviceUrl) {
    var _I = this; this.serviceUrl = serviceUrl; this.invoke = function (method, data, callback, error, bare) {
        var json = JSON.stringify(data); var url = _I.serviceUrl + method; $.ajax({ url: url, data: json, type: "POST", processData: false, contentType: "application/json", timeout: 10000, dataType: "text", success:
function (res) {
    if (!callback) return; var result = JSON.parse(res); if (bare)
    { callback(result); return; }
    for (var property in result)
    { callback(result[property]); break; }
}, error: function (xhr) {
    if (!error) return; if (xhr.responseText) {
        var err = JSON.parse(xhr.responseText); if (err)
            error(err); else
            error({ Message: "Unknown server error." })
    }
    return;
}
        });
    }
}
var Proxy = new serviceProxy("/ws/fi.asmx/"); var p2 = new serviceProxy("https://fboweb.com/ws/fi.asmx/"); function error(m) {
    alert(m)
}; function smp() { var a = $get('mapContainer'); var b = findPos(a); mapTop = b[1]; mapLeft = b[0]; }
function findPos(obj) {
    var curleft = curtop = 0; if (obj.offsetParent) {
        do
        { curleft += obj.offsetLeft; curtop += obj.offsetTop; }
        while (obj = obj.offsetParent);
    }
    return [curleft, curtop];
}
function goHistory() { $get('histGo').href = '/s/h/activity.aspx?i=' + fib.Ident.toString(); }
function searchByDest(ident) { document.getElementById('flightID').value = ''; document.getElementById('dept').value = ''; document.getElementById('dest').value = ident; document.getElementById('acType').value = ''; document.getElementById('GA').checked = true; document.getElementById('Comm').checked = true; document.getElementById('Cargo').checked = true; document.getElementById('AirTaxi').checked = true; document.getElementById('cbOther').checked = true; document.getElementById('ActiveOnly').checked = true; findFlight(); }
function searchByDept(ident) { document.getElementById('flightID').value = ''; document.getElementById('dept').value = ident; document.getElementById('dest').value = ''; document.getElementById('acType').value = ''; document.getElementById('GA').checked = true; document.getElementById('Comm').checked = true; document.getElementById('Cargo').checked = true; document.getElementById('AirTaxi').checked = true; document.getElementById('cbOther').checked = true; document.getElementById('ActiveOnly').checked = true; findFlight(); }
function searchSingleFlight(ident) { document.getElementById('flightID').value = ident; document.getElementById('dept').value = ''; document.getElementById('dest').value = ''; document.getElementById('acType').value = ''; document.getElementById('GA').checked = true; document.getElementById('Comm').checked = true; document.getElementById('Cargo').checked = true; document.getElementById('AirTaxi').checked = true; document.getElementById('cbOther').checked = true; document.getElementById('ActiveOnly').checked = true; findFlight(); }
function findFlight() {
    $get('warningMsg').innerHTML = ""; $get('searchResults').innerHTML = ""; var flight = document.getElementById('flightID'); raFlight = document.getElementById('raFlight'); var dp = document.getElementById('dept').value.toUpperCase(); var ds = document.getElementById('dest').value.toUpperCase(); var ac = document.getElementById('acType').value.toUpperCase(); var c1 = document.getElementById('GA').checked; var c2 = document.getElementById('Comm').checked; var c3 = document.getElementById('Cargo').checked; var c4 = document.getElementById('AirTaxi').checked; var c5 = document.getElementById('cbOther').checked; var c6 = document.getElementById('ActiveOnly').checked; if (raFlight.checked) {
        flight = flight.value.toUpperCase(); if (dp != '' || ds != '' || ac != '' || flight.indexOf('%', 0) > 0) { document.getElementById('searchButton').disabled = true; Proxy.invoke("SearchFlights", { uuu: timeCode, ident: flight, dept: dp, dest: ds, actype: ac, c1: c1, c2: c2, c3: c3, c4: c4, c5: c5, c6: c6 }, onSearchFlights); } else { findSingleFlight(flight); }
    } else {
        var al = document.getElementById('flightNam').options[document.getElementById('flightNam').selectedIndex].value; var fn = document.getElementById('flightNum').value; if (dp != '' || ds != '' || ac != '' || fn == '') { if (fn == '') fn = '%'; flight = al + fn; document.getElementById('searchButton').disabled = true; Proxy.invoke("SearchFlights", { uuu: timeCode, ident: flight, dept: dp, dest: ds, actype: ac, c1: c1, c2: c2, c3: c3, c4: c4, c5: c5, c6: c6 }, onSearchFlights); } else { flight = al + fn; findSingleFlight(flight); }
    }
}
function findSingleFlight(flight) { acIdent = flight.toUpperCase(); getFlightInfoBlock(); }
function onSearchFlights(results) { document.getElementById('searchButton').disabled = false; $get('footer').style.display = 'none'; $get('searchResults').innerHTML = results + '<br><br><br>'; $get('searchPanel').style.display = 'block'; $get('leftblock').style.visibility = 'visible'; }
function switchToTrackingScreen() { $get('gaTowerAds').style.display = 'none'; $get('searchPanel').style.display = 'none'; $get('trackPanel').style.display = 'inline'; $get('footer').style.display = 'none'; $get('leftblock').style.display = 'none'; document.body.style.background = 'white'; $get('newflight').focus(); $get('newflight').select(); smp(); showTwitter(true); }
function selectPhotosTab() { $('#pnPhoto').dialog("close"); $("#jqtabs > ul").tabs("select", '#tab-8'); }
function switchToSearchScreen() { document.body.style.background = 'url(/i/bg/01.gif) repeat-y'; $get('gaTowerAds').style.display = 'block'; $get('searchPanel').style.display = 'inline'; $get('trackPanel').style.display = 'none'; $get('footer').style.display = 'none'; $get('leftblock').style.display = 'inline'; $get('flightID').focus(); $get('flightID').select(); showTwitter(false); }
function setSearch(a, b) {
    document.getElementById(a).style.display = 'none'; document.getElementById(b).style.display = 'inline'; if (!airlinesLoaded) { Proxy.invoke("LoadAirlines", {}, onloadAirlines); }
}
function onloadAirlines(results) {
    airlinesLoaded = true; selectbox = document.getElementById('flightNam'); for (var i in results) { var optn = document.createElement("OPTION"); optn.text = results[i].Airline.toString(); optn.value = results[i].TLA.toString(); selectbox.options.add(optn); }
}
function getFixes() { whichTab = 2; Proxy.invoke("GetFixes", { ident: acIdent }, ongetFixes); }
function ongetFixes(results) { $get('fixList').innerHTML = results; }
function liveATCFeedClick() { whichTab = 6; Proxy.invoke("GetATCFeeds", { ident: acIdent }, onliveATCFeedClick); }
function onliveATCFeedClick(results) { $get('liveATC').innerHTML = results; }
function trackLogClick() { whichTab = 5; Proxy.invoke("GetTracks", { u: timeCode, ident: acIdent }, ontrackLogClick); }
function ontrackLogClick(results) { $get('tab-5').innerHTML = results; }
function getFlightPlans() { whichTab = 1; Proxy.invoke("GetFlightPlans", { user: timeCode, ident: acIdent }, ongetFlightPlans); }
function ongetFlightPlans(results) { $get('flightPlans').innerHTML = results; }
function getPastFlights() { whichTab = 3; Proxy.invoke("GetPastFlights", { user: timeCode, ident: fib.Ident.toString() }, ongetPastFlights); goHistory(); }
function ongetPastFlights(results) { $get('pastFlights').innerHTML = results; }
function atclogClick() { whichTab = 4; Proxy.invoke("GetATCLog", { ident: acIdent }, onATCLogResults); }
function onATCLogResults(results) { $get('atclog').innerHTML = '<PRE>' + results + '</PRE>'; }
function getFlightInfoBlock() { Proxy.invoke("FIBStatic", { u: timeCode, ident: acIdent, mapwidth: mapwidth, mapheight: mapheight }, ongetFlightInfoBlock); }
function getHomeBase() { Proxy.invoke("GetHomeBase", { ident: acIdent }, ongetHomeBase); }
function ongetHomeBase(results) {
    if (results != '') { lbBase.innerHTML = ', based out of ' + results; }
}
function poopie(msg) { var t = 1; }
function ongetFlightInfoBlock(results) {
    if (results != null) {
        if (results == 1) { $get('warningMsg').innerHTML = "<p class='errMsg'>This flight is blocked</p><p class='text4'>This flight's activity has been requested to be blocked by the aircraft owner/operator. &nbsp;Click for <a href='/pu/info/barr.aspx'>more information on blocked aircraft</a>.</p>"; $get('searchPanel').style.display = 'inline'; $get('trackPanel').style.display = 'none'; } else {
            if (results == 2) { $get('warningMsg').innerHTML = "<p class='errMsg'>This flight is outside our coverage area</p><p class='text4'>This flight is either currently being tracked by London, UK radar facilities, or its last known activity data originated from that area, and its information is restricted. &nbsp;If you're trying to track a flight that enters or departs the UK or nearby airspace, try your request again when the flight is in or near US airspace.</p>"; $get('searchPanel').style.display = 'inline'; $get('trackPanel').style.display = 'none'; } else {
                fib = results; updateTab(); $get('newflight').value = fib.Ident.toString(); $get('warningMsg').innerHTML = ""; if (fib.PrimaryPhoto.toString() == '') { $get('lnImgUp').href = "/s/iu/iu.aspx?i=" + fib.Ident.toString(); $get('imPhotoThumb').src = "/i/ico/up.jpg"; } else {
                    $get('lnImgUp').href = "javascript:showPhoto('" + fib.PrimaryPhoto.toString() + "');"
                    $get('imPhotoThumb').src = "http://photos.fboweb.com/f/th.ashx?t=1&File=" + fib.PrimaryPhoto.toString();
                }
                setMapMode(mapMode); getDynamicFIB(acIdent); switchToTrackingScreen(); setupTrackingScreen(fib);
            }
        }
    } else { if (endSearchLoop) { $get('searchPanel').style.display = 'inline'; $get('trackPanel').style.display = 'none'; $get('warningMsg').innerHTML = "<p class='errMsg'>Flight not found</p>"; endSearchLoop = false; } else { Proxy.invoke("SearchFlights", { uuu: timeCode, ident: acIdent, dept: "", dest: "", actype: "", c1: true, c2: true, c3: true, c4: true, c5: true, c6: true }, onSearchFlights); }; }
}
function setupTrackingScreen(fib) {
    var dept, dest; var qt = "'"; lbOwner.innerHTML = fib.Owner.toString(); lbFlightID.innerHTML = fib.Ident.toString(); getHomeBase(fib.Ident.toString()); if (!fib.VFR) {
        setNoVFRDisplay(); dept = fib.Dept.toString(); dest = fib.Dest.toString(); lbDeptID.innerHTML = airportLink(dept, dept); lbDeptName.innerHTML = fib.DeptName.toString(); lbDeptTime.innerHTML = fib.DepartureTime.toString(); lbDestName.innerHTML = fib.DestName.toString(); lbDestID.innerHTML = airportLink(dest, dest); lbRadioCall.innerHTML = fib.RadioCall.toString(); if (fib.ACType) {
            if (fib.ACType.toString() == "XXXX") {
                lbACType.innerHTML = "Not Specified by ATC"
            } else { lbACType.innerHTML = '<a style="font-size:10pt;" href="javascript:showACType(' + qt + fib.ACType.toString() + qt + ');">' + fib.ACType.toString() + '/' + fib.EquipCode.toString() + '</A> &nbsp;' + fib.ACTypeString.toString(); }
        }
        document.getElementById('atsumDeptLink').href = "/s/s/as.aspx?ident=" + dept; document.getElementById('atsumDestLink').href = "/s/s/as.aspx?ident=" + dest; document.getElementById('atInfoDeptLink').href = "/airport/" + dept + ".html"; document.getElementById('atInfoDestLink').href = "/airport/" + dest + ".html";
    } else { setVFRDisplay(); dept = ""; dest = ""; }
    mapbbox = fib.BBOX.toString(); mapbbox_initial = mapbbox; var coords = mapbbox.split(","); xmin = coords[0] * 1; ymin = coords[1] * 1; xmax = coords[2] * 1; ymax = coords[3] * 1; xmin_initial = xmin; ymin_initial = ymin; xmax_initial = xmax; ymax_initial = ymax; if (!fib.Historical) { imgMaplayer = "/f/pm2.aspx?s=" + sss + "&cc=1&nt=1&w=" + mapwidth + "&h=" + mapheight + "&d=" + dept + "," + dest; imgMaplayer_initial = imgMaplayer; imgAClayer = "/f/da4.aspx?s=" + sss + "&w=" + mapwidth + "&h=" + mapheight + "&i=" + fib.Ident.toString(); imgAClayer_initial = imgAClayer; } else {
        switch (mapMode) {
            case 2:
                if (ge) ge.getFeatures().removeChild(networkLink); makeTrackRequest(acIdent); break; default:
                imgMaplayer = "/f/pm2.aspx?s=" + sss + "&cc=1&nt=1&w=" + mapwidth + "&h=" + mapheight + "&hi=" + fib.HistoryNumber.toString(); imgMaplayer_initial = imgMaplayer; imgAClayer = "/f/da4.aspx?s=" + sss + "&w=" + mapwidth + "&h=" + mapheight + "&hi=" + fib.HistoryNumber.toString(); imgAClayer_initial = imgAClayer; break;
        }
    }
    reloadImage(); reloadACImage(); loadWX(); document.title = fib.Ident.toString() + ';  Flight tracking with Flightwise';
}
function setVFRDisplay() { $get('deptInfo1').style.display = "none"; $get('deptInfo2').style.display = "none"; $get('deptInfo3').style.display = "none"; $get('deptInfo4').style.display = "none"; $get('deptInfo5').style.display = "none"; $get('destInfo1').style.display = "none"; $get('destInfo2').style.display = "none"; $get('destInfo3').style.display = "none"; $get('destInfo4').style.display = "none"; $get('VFRInfo1').style.display = "block"; $get('VFRInfo2').style.display = "block"; }
function setNoVFRDisplay() { $get('deptInfo1').style.display = ""; $get('deptInfo2').style.display = ""; $get('deptInfo3').style.display = ""; $get('deptInfo4').style.display = ""; $get('deptInfo5').style.display = ""; $get('destInfo1').style.display = ""; $get('destInfo2').style.display = ""; $get('destInfo3').style.display = ""; $get('destInfo4').style.display = ""; $get('VFRInfo1').style.display = "none"; $get('VFRInfo2').style.display = "none"; }
function updateData() {
    getDynamicFIB(acIdent); if (!fib.Historical) {
        if (flightStatusCode == 5) {
            if (mapMode == 0) { if (flightStatusCode == 5) ACImageTimeout = setTimeout('reloadACImage(i)', 60000); } else { UpdateDataTimeout = setTimeout('updateData();', 60000); }
        } else { UpdateDataTimeout = setTimeout('updateData();', 60000); }
    }
}
function reloadACImage() { var now = new Date(); var ii = imgACLayer; ii.src = imgAClayer + '&bbox=' + mapbbox + '&tt=' + now.getTime(); }
function airportLink(ident, string) { return '<a href="/airport/' + ident + '.html" target=_top>' + string + '</a>'; }
function getDynamicFIB(ident) { Proxy.invoke("FIBDynamic", { ident: ident }, ongetDynamicFIB); }
function ongetDynamicFIB(results) {
    fibDynamic = results; lbETA.innerHTML = fibDynamic.ETA; lbAltitude.innerHTML = fibDynamic.Alt.toString(); lbGS.innerHTML = fibDynamic.Speed.toString(); if (flightStatusCode != fibDynamic.Status.toString()) { flightStatusCode = fibDynamic.Status.toString(); getFlightInfoBlock(); } else {
        flightStatusCode = fibDynamic.Status.toString(); if (mapMode == 1) { if (aircraftMarker) aircraftMarker.setPoint(new google.maps.LatLng(fibDynamic.Lat, fibDynamic.Lon)); }
        var fs = document.getElementById('flightStatus'); switch (flightStatusCode) {
            case "5":
                fs.innerHTML = 'IN FLIGHT'; fs.style.color = 'green'; if (!fib.VFR) { document.getElementById('statusDetails').innerHTML = fibDynamic.ProgressBar; } else { $get('statusDetails').innerHTML = ''; }
                document.getElementById('arrivalType').innerHTML = 'ETA:'; lbETA.innerHTML = fibDynamic.ETA; break; case "9":
                fs.innerHTML = 'LANDED'; fs.style.color = 'blue'; var sd = document.getElementById('statusDetails')
                var ad = fibDynamic.ArrivalMinsDelta; var aad = ''; if (fibDynamic.NextDeparture != '') { aad = "<br>Another scheduled departure @ " + fibDynamic.NextDeparture; }
                if (ad == 0) sd.innerHTML = 'This flight just arrived.' + aad; if (ad >= 1 && ad <= 59) sd.innerHTML = 'This flight arrived ' + fibDynamic.ArrivalMinsDelta + ' minutes ago.' + aad; if (ad >= 60 && ad <= 119) sd.innerHTML = 'This flight arrived over an hour ago.' + aad; if (ad >= 120 && ad <= 1439) sd.innerHTML = 'This flight arrived over ' + parseInt(ad / 60) + ' hours ago.' + aad; if (ad >= 1440 && ad <= 10080) sd.innerHTML = 'This flight arrived over ' + parseInt(ad / 60 / 24) + ' days ago.' + aad; if (ad >= 10081) sd.innerHTML = 'This flight arrived ' + fibDynamic.ArrivalTimePretty + aad; document.getElementById('arrivalType').innerHTML = 'Arrived At:'; lbETA.innerHTML = fibDynamic.ArrivalTimePretty; break; case "11":
                fs.innerHTML = 'TRACKING TERMINATED'; document.getElementById('statusDetails').innerHTML = 'The pilot cancelled his IFR flight plan in flight.'; fs.style.color = 'black'; document.getElementById('arrivalType').innerHTML = 'Arrived At:'; break; case "4":
                fs.innerHTML = 'FILED'; fs.style.color = 'black'; break; case "97":
                fs.innerHTML = 'INCIDENT'; fs.style.color = 'RED'; document.getElementById('statusDetails').innerHTML = 'This flight was involved in an incident/accident.'; break; case "99":
                fs.innerHTML = 'TIMEOUT'; document.getElementById('statusDetails').innerHTML = 'This flight stopped sending positional data.'; document.getElementById('arrivalType').innerHTML = 'Timed Out At:'; fs.style.color = 'black';
        }
    }
}
function setMapMode(newMode) {
    if (mapMode == 2) {
        if (ge) { ge.getWindow().setVisibility(false); $get('geLayer').style.display = "none"; ge = false; }
    }
    switch (newMode) {
        case 1:
            mapMode = 1; $get('gMapLayer').style.display = "block"; imgACLayer.style.display = "none"; $get('statusbar').style.display = "none"; $get('aclayer').style.display = "none"; $get('maplayer').style.display = "none"; $get('weatherLayer').style.display = "none"; $get('activity').style.display = "none"; o_imgMaplayer.style.display = "none"; if (GMap) { loadGMap(); setupGMap(fib); }
            getDynamicFIB(acIdent); break; case 0:
            mapMode = 0; $get('gMapLayer').style.display = "none"; imgACLayer.style.display = "block"; $get('statusbar').style.display = "block"; $get('aclayer').style.display = "block"; $get('maplayer').style.display = "block"; o_imgMaplayer.style.display = "block"; break; case 2:
            mapMode = 2; $get('geLayer').style.display = "block"; $get('statusbar').style.display = "none"; if (!geInitCalled) {
                initGoogleEarth()
            } else { if (ge) ge.getWindow().setVisibility(true); makeTrackRequest(acIdent); }
            break;
    }
    Set_Cookie('mapmode', mapMode, 180, "/")
    hideTooltip();
}
google.load("earth", 1); function initGoogleEarth() { geInitCalled = true; google.earth.createInstance("geLayer", initCB, failureCB); }
function initCB(object) { ge = object; ge.getWindow().setVisibility(true); ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO); makeTrackRequest(acIdent); }
function failureCB(object) { alert('load failed'); }
function makeTrackRequest(o) { Proxy.invoke("MakeTrackRequest", { ident: o }, onmakeTrackRequest); }
function onmakeTrackRequest(results) {
    if (results != 0) { makeNetworkLink(results); } else { alert('Problem creating track request.'); }
}
var networkLink; function makeNetworkLink(request) {
    if (ge) { networkLink = ge.createNetworkLink(""); networkLink.setDescription("NetworkLink open to fetched content"); networkLink.setName("Open NetworkLink"); networkLink.setFlyToView(true); var link = ge.createLink(""); link.setHref("http://flightwise.com/km/geR" + request + ".kml?aa=0&so=0&s=" + sss); networkLink.setLink(link); ge.getFeatures().appendChild(networkLink); var la = ge.createLookAt(''); var lat = fibDynamic.Lat; var lon = fibDynamic.Lon; var alt = fibDynamic.Alt.replace(",", "") / 3; la.set(lat, lon, alt, ge.ALTITUDE_ABSOLUTE, 0, 45, 180000); ge.getView().setAbstractView(la); }
}
function showTooltip(e) {
    var p3 = $get("p3"); var ev = (!e) ? window.event : e; if (ev.pageX) { xabs = ev.pageX; yabs = ev.pageY }
    else if (ev.clientX) { xabs = ev.clientX; yabs = ev.clientY }
    else { return false }
    p3.style.left = (xabs - 80) + "px"; p3.style.top = (yabs + 15) + "px"; p3.display = ""; p3.style.visibility = 'visible';
}
function hideTooltip(obj) { document.getElementById('p3').style.visibility = 'hidden'; }
function openAlertWindow() { window.open('/s/tr/alerts/aa.aspx?sa=1&nsb=1&nh=1&flightID=' + acIdent + '&alertInfo=1&alertEmail=' + e + '&alertType=AZ&deleteWhenDone=ON&screenmode=small', 'HelpMessage', 'menubar=no,status=no,scrollbars=no,width=700,height=445'); }
function loadGMap() {
    if (GBrowserIsCompatible()) { GMap = new google.maps.Map2(document.getElementById("gMapLayer")); GMap.addControl(new google.maps.SmallMapControl()); setupIFREntrouteLA(GMap); setupNEXRADTMS(GMap); setupSectionals(GMap); GMap.addControl(new google.maps.MapTypeControl()); }
}
function setupGMap(fib) { var bounds = new google.maps.LatLngBounds(); var dept = new google.maps.LatLng(fib.DeptLat, fib.DeptLon); var dest = new google.maps.LatLng(fib.DestLat, fib.DestLon); bounds.extend(dept); bounds.extend(dest); GMap.setCenter(bounds.getCenter(), GMap.getBoundsZoomLevel(bounds)); var tinyIcon; tinyIcon = makeIcon("blue"); markerOptions = { icon: tinyIcon, title: fib.Dept }; GMap.addOverlay(new google.maps.Marker(dept, markerOptions)); tinyIcon = makeIcon("green"); markerOptions = { icon: tinyIcon, title: fib.Dest }; GMap.addOverlay(new google.maps.Marker(dest, markerOptions)); markerOptions = { title: fib.Ident }; aircraftMarker = new google.maps.Marker(new google.maps.LatLng(0, 0), markerOptions); GMap.addOverlay(aircraftMarker); }
function makeIcon(color) { var tinyIcon = new GIcon(); tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_" + color + ".png"; tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png"; tinyIcon.iconSize = new google.maps.Size(12, 20); tinyIcon.shadowSize = new google.maps.Size(22, 20); tinyIcon.iconAnchor = new google.maps.Point(6, 20); tinyIcon.infoWindowAnchor = new google.maps.Point(5, 1); return tinyIcon; }
function setupReload() { imgACLayer.onmousemove = ads_mousemove; imgACLayer.onmouseup = ads_mouseup; imgACLayer.onmousedown = ads_mousedown; imgACLayer.ondragstart = null; }
function reloadImage() {
    $get('activity').style.display = 'inline'; var now = new Date(); if (document.images) { o_imgMaplayer.src = imgMaplayer + '&bbox=' + mapbbox + '&tt=' + now.getTime(); }
}
function disableProgressIndicator() { $get('activity').style.display = 'none'; }
function setFullScreen() { alert("function not implemented yet"); }
function showWorld() { xmin = -180; ymin = -90; xmax = 180; ymax = 90; AdjustBBOXToScale(); mapbbox = xmin + "," + ymin + "," + xmax + "," + ymax; reloadImage(); reloadACImage(); }
function showUS() { xmin = -126; ymin = 25; xmax = -64; ymax = 51; AdjustBBOXToScale(); mapbbox = xmin + "," + ymin + "," + xmax + "," + ymax; reloadImage(); reloadACImage(); }
function AdjustBBOXToScale() {
    var ratio, span; var lat1, lat2, lon1, lon2, dlon, dlat; var padding = .1; var aspect = (mapwidth / mapheight); lat2 = ymax; lat1 = ymin; lon2 = xmax; lon1 = xmin; dlon = (xmax - xmin) * padding; dlat = (ymax - ymin) * padding; lon1 -= dlon; lon2 += dlon; lat1 -= dlat; lat2 += dlat; ratio = (lon2 - lon1) / (lat2 - lat1); if (aspect > ratio) { span = (lat2 - lat1) * aspect; lon1 = (lon2 + lon1) / 2 - span / 2; lon2 = lon1 + span; } else { span = (lon2 - lon1) / aspect; lat1 = (lat2 + lat1) / 2 - span / 2; lat2 = lat1 + span; }
    xmin = lon1; ymin = lat1; xmax = lon2; ymax = lat2;
}
function showFullRoute() { xmin = xmin_initial; ymin = ymin_initial; xmax = xmax_initial; ymax = ymax_initial; mapbbox = mapbbox_initial; reloadImage(); reloadACImage(); }
function setSearchDest(apt) { document.getElementById('dest').value = apt; document.getElementById('dept').value = ""; findFlight(); }
function setSearchDept(apt) { document.getElementById('dept').value = apt; document.getElementById('dest').value = ""; findFlight(); }
function loadWX() { }
function showACType(a) { $get('searchResults').innerHTML = ''; document.getElementById('flightID').value = ''; document.getElementById('dept').value = ''; document.getElementById('dest').value = ''; document.getElementById('acType').value = a; switchToSearchScreen(); findFlight(); }
function findTrafficTo(a) { $get('searchResults').innerHTML = ''; document.getElementById('flightID').value = ''; document.getElementById('dept').value = ''; document.getElementById('dest').value = a; document.getElementById('acType').value = ''; switchToSearchScreen(); findFlight(); }
function handleEnterKey(evt) {
    var key = window.event ? evt.keyCode : evt.which; if (key == 13) { evt.returnValue = false; evt.cancel = true; $get('searchButton').click(); }
}
function showFlight(i) { acIdent = i; getFlightInfoBlock(); }
function updateTab() {
    switch (whichTab) {
        case 1:
            getFlightPlans(); break; case 2:
            getFixes(); break; case 3:
            getPastFlights(); break; case 4:
            atclogClick(); break; case 5:
            trackLogClick(); break; case 6:
            liveATCFeedClick(); break; case 7:
            notesClick(); break; case 8:
            photosClick(); break;
    }
}
var setPosition = false; function showPhoto(photoid) {
    Proxy.invoke("GetPhotoDesc", { photo: photoid, IncrementViewCount: true }, onGetPhotoDesc); var img = $get('photoImage'); img.src = 'http://photos.fboweb.com/f/th.ashx?s=400&File=' + photoid; var lnk2 = $get('photoFull'); lnk2.href = '/photo/' + fib.Ident.toString() + '/' + photoid.split('.')[0] + '.html'; if (!setPosition) { pnPhoto.style.left = (document.body.clientWidth / 2) - 150; pnPhoto.style.top = (document.body.clientHeight / 2) - 200; setPosition = true; }
    pnPhoto.style.display = 'block'; $('#pnPhoto').dialog("open");
}
function onGetPhotoDesc(results) { $get('photoDesc').innerHTML = results; }
function hidePhoto() { pnPhoto.style.display = 'none'; }
function HideModalDialog() { var modalPopupBehavior = $find('programmaticModalPopupBehavior'); modalPopupBehavior.hide(); }
function notImplemented() { $get('pnNotImplemented').style.display = "block"; $('#pnNotImplemented').dialog("open"); }
function HideModalDialog2() { var modalPopupBehavior = $find('pmpbFP'); modalPopupBehavior.hide(); }
function showFlightPlan(num) { $get('pnFlightPlan').style.display = "block"; $('#pnFlightPlan').dialog("open"); Proxy.invoke("GetFlightPlan", { user: 0, fpnum: num }, ongetFlightPlan); }
function ongetFlightPlan(results) { $get('dvContent2').innerHTML = results; }
function go3d(a) {
    if (fib.Historical) { document.location.href = '/s/tr/tr3d.aspx?a=' + a + '&i=' + fib.HistoryNumber.toString(); } else { document.location.href = '/s/tr/tr3d.aspx?a=' + a + '&i=' + fib.Ident.toString(); }
}
function checkEnterQT(e) {
    var characterCode; if (e && e.which) { e = e; characterCode = e.which; } else { e = event; characterCode = e.keyCode; }
    if (characterCode == 13) {
        if (UpdateDataTimeout) { clearTimeout(UpdateDataTimeout); }
        if (ACImageTimeout) { clearTimeout(ACImageTimeout); }
        if (MapImageTimeout) { clearTimeout(MapImageTimeout); }
        document.getElementById('flightID').value = document.getElementById('newflight').value.toUpperCase(); findSingleFlight(document.getElementById('newflight').value.toUpperCase()); return false;
    } else { return false; }
}
function newSearch() {
    if (UpdateDataTimeout) { clearTimeout(UpdateDataTimeout); }
    if (ACImageTimeout) { clearTimeout(ACImageTimeout); }
    if (MapImageTimeout) { clearTimeout(MapImageTimeout); }
    switchToSearchScreen()
}
function goPhoto() { $get('photoAdd').href = '/s/iu/iu.aspx?i=' + fib.Ident.toString(); }
function photosClick(ident) { whichTab = 8; Proxy.invoke("ShowPhotos", { ident: fib.Ident.toString() }, onPhotosClick); goPhoto(); }
function onPhotosClick(results) { $get('photosContent').innerHTML = results; }
function goNotes() { $get('notesAdd').href = '/s/ops/fbo/flag.aspx?i=' + fib.Ident.toString(); }
function notesClick(ident) { whichTab = 7; Proxy.invoke("FetchNotesByIdent", { ident: fib.Ident.toString(), u: timeCode }, onNotesClick); goNotes(); }
function onNotesClick(results) { $get('notesContent').innerHTML = results; }
function displayNotes(dbID) { $get('dvTitle2').innerHTML = "Notes Display"; var modalPopupBehavior = $find('pmpbFP'); modalPopupBehavior.show(); Proxy.invoke("FetchNotes", { dbID: dbID }, onongetNotes); }
function ongetNotes(results) { $get('dvContent2').innerHTML = results; }
function addNote() { document.location.href = "/s/ops/fbo/flag.aspx?i=" + acIdent; }
function Set_Cookie(name, value, expires, path, domain, secure) {
    var today = new Date(); today.setTime(today.getTime()); if (expires)
    { expires = expires * 1000 * 60 * 60 * 24; }
    var expires_date = new Date(today.getTime() + (expires)); document.cookie = name + "=" + escape(value) + ((expires) ? ";expires=" + expires_date.toGMTString() : "") + ((path) ? ";path=" + path : "") + ((domain) ? ";domain=" + domain : "") + ((secure) ? ";secure" : "");
}
function expandSearch() {
    if (!searchExpanded) { $get(imgCollapseExpand).src = "/i/contract.gif"; $get(lbSearch).innerHTML = "Hide Advanced Search"; $get('pnSearchOptions').style.display = "block"; searchExpanded = true; } else { $get(imgCollapseExpand).src = "/i/expand.gif"; $get(lbSearch).innerHTML = "Advanced Search Options"; $get('pnSearchOptions').style.display = "none"; searchExpanded = false; }
    Set_Cookie('searchMode', searchExpanded, 120, '/', '');
}
function whichTab(eve, ui) { }
var count = 140; maxL = 255; var bName = navigator.appName; function taLimit(taObj) { if (taObj.value.length == maxL) return false; return true; }
function taCount(taObj, Cnt) {
    objCnt = createObject(Cnt); objVal = taObj.value; if (objVal.length > maxL) objVal = objVal.substring(0, maxL); if (objCnt) {
        if (bName == "Netscape") { objCnt.textContent = maxL - objVal.length; }
        else { objCnt.innerText = maxL - objVal.length; }
    }
    return true;
}
function createObject(objId) { if (document.getElementById) return document.getElementById(objId); else if (document.layers) return eval("document." + objId); else if (document.all) return eval("document.all." + objId); else return eval("document." + objId); }
function tweet() {
    var d = $get('twitterInfo'); if (d.style.display == 'none') { d.style.display = 'block'; $get("twtx").value = "is tracking this flight at "; $get("twtx").select(); $get("twend").innerHTML = "http://flightwise.com/track/" + acIdent; maxL = 140 - $get("twend").innerHTML.length - 1; } else { d.style.display = 'none'; }
}
function limiter(tex) {
    var len = tex.innerText.length; if (len > count) { ntex = tex.innerText.substring(0, count); tex.value = ntex; return true; } else { $get("spChars").innerHTML = count - len; return true; }
}
function sendTweet() { var u = ""; var p = ""; if ($get("twus")) u = $get("twus").value; if ($get("twpw")) p = $get("twpw").value; var t = $get("twtx").value + " " + $get("twend").innerHTML; Proxy.invoke("Tweet", { user: u, password: p, text: t }, onTweetSent); }
function onTweetSent(result) {
    if (result.substring(0, 3) == 'Fal') {
        if (result.match('Unauthorized')) { alert("Hmmm;  double check your Twitter Username and Password; your authorization to Twitter failed!"); } else { alert("Could not send your tweet; " + result); }
    } else { tweet(); }
    if ($get("twst")) $get("twst").disabled = false;
}
function showTwitter(mode) {
    if (mode) { $get("tweetme").style.display = 'block'; } else { $get("tweetme").style.display = 'none'; }
}
function Set_Cookie(name, value, expires, path, domain, secure) {
    var today = new Date(); today.setTime(today.getTime()); if (expires) { expires = expires * 1000 * 60 * 60 * 24; }
    var expires_date = new Date(today.getTime() + (expires)); document.cookie = name + "=" + escape(value) + ((expires) ? ";expires=" + expires_date.toGMTString() : "") + ((path) ? ";path=" + path : "") + ((domain) ? ";domain=" + domain : "") + ((secure) ? ";secure" : "");
}
function Get_Cookie(check_name) {
    var a_all_cookies = document.cookie.split(';'); var a_temp_cookie = ''; var cookie_name = ''; var cookie_value = ''; var b_cookie_found = false; for (i = 0; i < a_all_cookies.length; i++) {
        a_temp_cookie = a_all_cookies[i].split('='); cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, ''); if (cookie_name == check_name) {
            b_cookie_found = true; if (a_temp_cookie.length > 1) { cookie_value = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, '')); }
            return cookie_value; break;
        }
        a_temp_cookie = null; cookie_name = '';
    }
    if (!b_cookie_found) { return null; }
}
