// Element in Array suchen
Array.prototype.contains = function(needle) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] === needle) return true;
    }
    return false;
};

var ttAfhDlcD  = 'AOC,BRE,CGN,DRS,DTM,DUS,ERF,FDH,FMM,FMO,FRA,HAJ,HAM,HNH,LBC,LEJ,MUC,NRN,NUE,PAD,ROS,SCN,STR,SXF,SZW,TXL,ZQW'.split(',');
var ttAfhDlcAT = 'GRZ,INN,KLU,LNZ,SZG,VIE'.split(',');
var ttAfhDlcCH = 'BSL,GVA,ZRH'.split(',');
var ttAfhDlcEU = 'AMS,BLL,EIN,ENS,GRQ,MST,BRU,LGG,LUX,SXB,WAW'.split(',');

/* 
Layer - Mehrfachausfahl Abflughäfen 
Quelle der Abflughäfen: s.o.
*/
var TTAFHDLC = new Array (
    'Nord;NORTH',
    'Süd;SOUTH',
    'West;WEST',
    'Ost;EAST',
    'Altenburg-Nobitz;AOC',
    'Amsterdam (NL);AMS',
    'Basel-Mulhouse (CH);BSL',
    'Berlin-Schönefeld;SXF',
    'Berlin-Tegel;TXL',
    'Billund (DK);BLL',
    'Bremen;BRE',
    'Brüssel (B);BRU',
    'Dortmund;DTM',
    'Dresden;DRS',
    'Düsseldorf;DUS',
    'Eindhoven (NL);EIN',
    'Enschede (NL);ENS',
    'Erfurt;ERF',
    'Frankfurt;FRA',
    'Frankfurt-Hahn;HNH',
    'Friedrichshafen;FDH',
    'Genf (CH);GVA',
    'Graz (A);GRZ',
    'Groningen (NL);GRQ',
    'Hamburg;HAM',
    'Hannover;HAJ',
    'Innsbruck (A);INN',
    'Karlsruhe;FKB',
    'Klagenfurt (A);KLU',
    'Köln-Bonn;CGN',
    'Leipzig/Halle;LEJ',
    'Linz (A);LNZ',
    'Lübeck;LBC',
    'Lüttich (B);LGG',
    'Luxemburg;LUX',
    'Maastricht - Aachen (NL);MST',
    'Memmingen;FMM',
    'München;MUC',
    'Münster-Osnabrück;FMO',
    'Niederrhein (Weeze);NRN',
    'Nürnberg;NUE',
    'Paderborn;PAD',
    'Rostock;ROS',
    'Saarbrücken;SCN',
    'Salzburg (A);SZG',
    'Schwerin;SZW',
    'Strasbourg (F);SXB',
    'Stuttgart;STR',
    'Warschau (PL);WAW',
    'Wien (A);VIE',
    'Zürich (CH);ZRH',
    'Zweibrücken;ZQW'
);

var ttAfhContainerId = 'ttAfhContainer';
var ttStrAusgabeAfh = '';

//_____________________________________________________________

function ttGetDlc(str) {
    var tmpArr = new Array()
    for (i = 0; i < TTAFHDLC.length; i ++) {
        tmpArr = TTAFHDLC[i].split(';');
        if (str == tmpArr[0]) {
            return tmpArr[1];
            break;
        }  
    }
}

//_____________________________________________________________

function ttGetName(dlc) {
    var tmpArr = new Array()
    for (i = 0; i < TTAFHDLC.length; i ++) {
        tmpArr = TTAFHDLC[i].split(';');
        if (dlc == tmpArr[1]) {
            return tmpArr[0];
            break;
        }  
    }
}

//_____________________________________________________________

function ttFillAfh() {
    var c,cc;
    
    var tmp_afhArr = new Array();
    tmp_afhArr     = abflughafen.split(",");
      
    if (document.bengine.mafh) {
        for (c = 0; c < document.bengine.mafh.length; c ++) {
            for (cc = 0; cc < tmp_afhArr.length; cc ++) {
                var tmp = document.bengine.mafh[c].value.split(';')[0] || '';
                if (tmp_afhArr[cc] == tmp) {
                    document.bengine.mafh[c].checked = true;
                    break;
                }
            }
        }
    }
}

//_____________________________________________________________

function ttKillAfh() {
    if (document.bengine.mafh) {
        for (c = 0; c < document.bengine.mafh.length; c ++) {
            document.bengine.mafh[c].checked = false;
        }
    }
}

//_____________________________________________________________

var ttAfhDlcArray = new Array();

function ttSendAfh() {
    if (flagAbflughafenCheck && ttAfhDlcArray && 
        abflughafenCheck.toString() != ttAfhDlcArray.toString() &&
        document.forms.bengine.refresh) {
            document.forms.bengine.refresh.value = 1;
    }
    
    if (abflughafen == '-1' || abflughafen == '-1,' || abflughafen == '') {
        ttAfhDlcArray = new Array();
        if (ttStrAusgabeAfh != '') $('mafhDel').checked = true;
    } else {
        ttAfhDlcArray = abflughafen.split(',');
        abflughafen   = ttAfhDlcArray.sort().toString();
        if (ttStrAusgabeAfh != '') $('mafhDel').checked = false;
    }
    
    if (abflughafen == '') {
        abflughafen = '-1';
    }
    
    if (abflughafen == '-1') {
        //--- beliebig ----------------------------------------------
        //document.forms.bengine.abflughafen.options[0].selected = true;
        ttWriteAfhLabel('beliebig');
    } else if (ttAfhDlcArray.length == 1) {
        //--- EIN ausgewaehlter Abflughafen -------------------------
        ttWriteAfhLabel(ttGetName(ttAfhDlcArray[0]));
    } else {
        //--- Mehrfachauswahl ---------------------------------------
        ttWriteAfhLabel(abflughafen);
    }
    
    document.forms.bengine.abflughafen2.value = abflughafen;
}

//_____________________________________________________________

var abflughafenCheck     = '';
var flagAbflughafenCheck = false;
var countAfh             = 0;

function ttSetAfh(dlc, checked) {
    if (abflughafen == '-1' || abflughafen == '-1,' || abflughafen == '') {
        abflughafen = '';
    }
    
    abflughafenCheck = abflughafen;
    
    var dlcTmp = dlc.split(';');
    
    if (checked) {
        if (ttAfhDlcArray.length < 30) {
            if (abflughafen == '' || abflughafen == '-1' || abflughafen == '-1,' || abflughafen == '') {
                abflughafen = dlcTmp[1];
            } else {
                abflughafen += ',' + dlcTmp[1];
            }
            
            ttAfhDlcArray.push(dlcTmp[1]);
        } else {
            alert('Sie können maximal 30 Abflughäfen auswählen.');
        }
    } else {
        abflughafen = abflughafen.replace(dlcTmp[1], '');
        abflughafen = abflughafen.replace(/,,/g,',');
        
        if (abflughafen[0] == ',') {
            abflughafen = abflughafen.substring(1, abflughafen.length);
        }
        if (abflughafen[abflughafen.length - 1] == ',') {
            abflughafen = abflughafen.substring(0, abflughafen.length - 1);
        }
        
        for (var i = 0; i < ttAfhDlcArray.length; i ++) {
            if (dlcTmp[1] == ttAfhDlcArray[i]) {
                ttAfhDlcArray.splice(i, 1);
            }
        }
    }
    ttAfhDlcArray.sort();
    flagAbflughafenCheck = true;
    ttSendAfh();
}

//_____________________________________________________________

function ttClearAfh() {
    ttAfhDlcArray = new Array();
    
    abflughafen                               = '-1';
    document.forms.bengine.abflughafen2.value = '-1';
    document.forms.bengine.abflughafen.value  = '-1';
    
    if (document.forms.bengine.refresh) {
        document.forms.bengine.refresh.value = 1;
    }
    
    ttClearCheckboxes();
    ttSendAfh();
}

//_____________________________________________________________

function ttGetAfhLine(id, dlc, name, checked) {
    return '<div class="tt_afhCB"><input type="checkbox" class="tt_afhCheckbox" name="mafh" id="mafh_' + id + '" value="' + dlc + '" onclick="ttSetAfh(this.value, this.checked);"' + checked + ' onchange="document.bengine.refresh.value=\'1\';"></div><label for="mafh_' + id + '" class="tt_afhTxt">' + name + '</label>';
}

function ttPrintAfh() {
    if (TTAFHDLC[0] != '') {
	    var i, tmpLand, tmpDLC;
	    var tmpArr         = new Array();
	    var laenderkenner  = new Array('D', 'AT', 'CH', 'EU');
	    var afhArr         = new Array();
	
	    for (i = 0; i < laenderkenner.length; i++) {
		    afhArr[laenderkenner[i]] = new Array();
	    }
    
        for (i = 0; i < TTAFH.length; i++) {
            tmpArr = TTAFH[i].split(';');
            var dlc = ttGetDlc(tmpArr[0]);

            if (ttAfhDlcAT.contains(dlc)) {
                tmpLand = 'AT';
            } else if (ttAfhDlcCH.contains(dlc)) {
                tmpLand = 'CH';
            } else if (ttAfhDlcEU.contains(dlc)) {
                tmpLand = 'EU';
            } else {
                tmpLand = 'D';
            }
            tmpDLC = new Array();
            tmpDLC['Name'] = tmpArr[0].replace(/ - /g, '-');
            //tmpDLC['Kenner'] = tmpArr[1];
            tmpDLC['DLC'] = dlc + ';' + dlc;
            afhArr[tmpLand].push(tmpDLC);
        }
        
        //console.dir(afhArr);
        
        ttStrAusgabeAfh += '<div id="airports_list">';
        ttStrAusgabeAfh += '    <iframe src="about:blank" width="572" height="276" frameborder="0" scrolling="no" style="position: absolute; top: 0; left: 0; background: #fff; padding: 0; border: 0; overflow: hidden; z-index: 3000;"></iframe>';
        ttStrAusgabeAfh += '    <div class="tt_afhBody">';

        var z,s;
        var countD   = afhArr['D'].length;
        var maxD     = new Array();
        maxD[0]      = Math.ceil(countD / 2) - 1; // Zwei Spalten, erste Spalte ein BR und Überschrift 
        maxD[1]      = countD - maxD[0]; 
        var akt      = 0;
        
        // Deutschland linke zwei Spalten
        ttStrAusgabeAfh += '            <div class="tt_afhContentCol">';
        for (z = 0; z < 2; z++) {
            ttStrAusgabeAfh += '            <div class="tt_afhContentColCol">';
            if (z == 0) {
                ttStrAusgabeAfh += '            <div class="tt_afhTitle">Deutschland</div>';
            }
            for (s = 0; s < maxD[z]; s++) {
                akt = s + (z * maxD[0]);
                if (afhArr['D'][akt] != undefined) {
                    var afhDLCArrNum       = afhArr['D'][akt]['DLC'].split(';')[1] || '';
                    var abflughafenChecked = '';

                    if (ttAfhDlcArray.contains(afhDLCArrNum)) {
                        abflughafenChecked = ' checked="checked"';
                    }
                    ttStrAusgabeAfh += ttGetAfhLine(countAfh++, afhArr['D'][akt]['DLC'], afhArr['D'][akt]['Name'], abflughafenChecked);
                    if (afhDLCArrNum == 'EAST') { // BR nach Ost
                        ttStrAusgabeAfh += '<div class="tt_afhCB tt_afhCBEmpty">&nbsp;</div>';
                    }
                }
            }
            ttStrAusgabeAfh += '            </div>';
        }
        ttStrAusgabeAfh += '            </div>';
        
        // restlichen zwei Spalten
        ttStrAusgabeAfh += '            <div class="tt_afhContentCol">';
        
        // Österreich / Schweiz
        ttStrAusgabeAfh += '                <div class="tt_afhContentColCol">';
        ttStrAusgabeAfh += '                    <div class="tt_afhTitle">&Ouml;sterreich</div>';
        
        // Österreich
        for (s = 0; s < afhArr['AT'].length; s++) {
            var afhDLCArrNum       = afhArr['AT'][s]['DLC'].split(';')[1] || '';
            var abflughafenChecked = '';
            if (ttAfhDlcArray.contains(afhDLCArrNum)) {
                abflughafenChecked = ' checked="checked"';
            }
            ttStrAusgabeAfh += ttGetAfhLine(countAfh++, afhArr['AT'][s]['DLC'], afhArr['AT'][s]['Name'], abflughafenChecked);
        }
        ttStrAusgabeAfh += '                    <div class="tt_afhCB tt_afhCBEmpty">&nbsp;</div>';
        ttStrAusgabeAfh += '                    <div class="tt_afhTitle">Schweiz</div>';
        
        // Schweiz
        for (s = 0; s < afhArr['CH'].length; s++) {
            var afhDLCArrNum       = afhArr['CH'][s]['DLC'].split(';')[1] || '';
            var abflughafenChecked = '';
            if (ttAfhDlcArray.contains(afhDLCArrNum)) {
                abflughafenChecked = ' checked="checked"';
            }
            ttStrAusgabeAfh += ttGetAfhLine(countAfh++, afhArr['CH'][s]['DLC'], afhArr['CH'][s]['Name'], abflughafenChecked);
        }
        
        ttStrAusgabeAfh += '                </div>';

        // Sonstige
        ttStrAusgabeAfh += '                <div class="tt_afhContentColCol">';
        ttStrAusgabeAfh += '                    <div class="tt_afhTitle">Sonstige</div>';
        
        var belChecked = ttAfhDlcArray.length == 0 ? ' checked="checked"' : '';
        
        for (s = 0; s < afhArr['EU'].length; s++) {
            var afhDLCArrNum       = afhArr['EU'][s]['DLC'].split(';')[1] || '';
            var abflughafenChecked = '';
            if (ttAfhDlcArray.contains(afhDLCArrNum)) {
                abflughafenChecked = ' checked="checked"';
            }
            ttStrAusgabeAfh += ttGetAfhLine(countAfh++, afhArr['EU'][s]['DLC'], afhArr['EU'][s]['Name'], abflughafenChecked);
        }
        
        ttStrAusgabeAfh += '                </div>';

        ttStrAusgabeAfh += '            </div>';
        
        // Alle / Übernehmen
        ttStrAusgabeAfh += '            <div class="tt_afhContentCol tt_afhContentColBottom">';

        ttStrAusgabeAfh += '                <div class="tt_afhCB"><input type="checkbox" class="tt_afhCheckbox" name="mafhDel" id="mafhDel" value="-1" onclick="ttClearAfh();"' + belChecked + ' onchange="document.bengine.refresh.value=\'1\';"></div><div class="tt_afhTxt" style="width: 240px;"><label for="mafhDel" style="cursor: pointer;">alle Abflugh&auml;fen (Mehrfachauswahl m&ouml;glich)</label></div>';
        ttStrAusgabeAfh += '                <div class="tt_clearboth"><img src="/images/spacer.gif" alt="0" width="0" height="0"></div>';
        ttStrAusgabeAfh += '                <div class="tt_afhSenden" onclick="ttHideAfh();">Auswahl &uuml;bernehmen</div>';

        ttStrAusgabeAfh += '            </div>';
        ttStrAusgabeAfh += '        <div class="tt_clearboth"><img src="/images/spacer.gif" alt="0" width="0" height="0"></div>';
        ttStrAusgabeAfh += '    </div>';
        ttStrAusgabeAfh += '</div>';
        
        ttFillAfh();
        document.getElementById(ttAfhContainerId).innerHTML = ttStrAusgabeAfh;
    }
    
    return false;
}

//_____________________________________________________________

function ttShowAfh(){
    if (ttStrAusgabeAfh == '') {
        ttPrintAfh();
    }
    
    if ($("airports_list").style.display != 'block'){
        $("airports_list").style.display = 'block';
    } else {
        $("airports_list").style.display = 'none';
    }
}

function ttHideAfh(){
    if ($("airports_list").style.display == 'block'){
        $("airports_list").style.display = 'none';
    }
}

function ttToggleAfh() {
    if (ttStrAusgabeAfh != '' && $('airports_list').style.display == 'block') {
        ttHideAfh();
    } else {
        ttShowAfh();
    }
}

function ttWriteAfhLabel(text) {
    if (text != undefined) {
        $("ttAfhLabel").title = text;
	    if (text.length > 27) text = text.substring(0, 28) + '...';
	    $("ttAfhLabel").value = text;
	}
}

function ttClearCheckboxes() {
    for (var i = 0; i < countAfh; i++) {
        $('mafh_' + i).checked = false;
    }
}
