
// Globale Konfigurationsvariable
var weatherAllCity = true;

registerPlugin('serviceWeather');

/*
 * Funktionen für die Suche nach Wetterstädten
 */

/**
 * Versteckt den Ladebalken nach der Suche und zeigt das Ergebnis an
 * @author Klaus Rödel
 */
function viewFoundCity(view, position) {
    $('WeatherSpinner').hide();
    //view = view.stripScripts();
    $('service'+ position).update(view);
}

/*
 * Funktionen für die Konfiguration der einzelnen Städte
 */

/**
 * Beim Verschieben der Reihenfolge der Städte
 * werden die Labels und Wert der Checkboxen angepasst
 * @author Klaus Rödel
 */
function weatherConfRename() {
    var citylist = $('WeatherCityList');
    //alert(Sortable.serialize('WeatherCityList'));
    for (var i=0; i < citylist.childNodes.length; i++) {
        var li = citylist.childNodes[i];
        li.childNodes[0].innerHTML = (i+1) + '. Stadt';
        if (li.childNodes[4].value > 0) {
            li.childNodes[4].value     = 5-i;
        }
    }
}

/**
 * Beim Clicken auf eine Checkbox
 * werden die Werte aller Checkboxen neu durchnummeriert
 * @author Klaus Rödel
 */
function weatherConfSwitch() {
    var citylist = $('WeatherCityList');
    var showNumber = 5;
    for (var i=0; i < citylist.childNodes.length; i++) {
        var li = citylist.childNodes[i];
        if (li.childNodes[4].checked) {
            li.childNodes[4].value = showNumber;
            if (weatherAllCity) {
                showNumber -= 1;
            } else {
                showNumber = 0;
            }
        } else {
            li.childNodes[4].value = 0;
            if (!weatherAllCity) {
                li.childNodes[4].disabled = true;
            }
        }
    }
    if (showNumber == 5) {
        for (i=0; i< citylist.childNodes.length; i++) {
            var li = citylist.childNodes[i];
            li.childNodes[4].disabled = false;
        }
    }

}

/**
 * Aufruf beim Wechsel des Select der Anzeige Art
 * @author Klaus Rödel
 */
function weatherConfSelect() {
    var select = $('WeatherConfSelect');
    var citylist = $('WeatherCityList');
    var merker = -1;
    switch (select.options[select.selectedIndex].value) {
        case 'show':
        case 'showPreview':
            weatherAllCity = false;
            for(var i=0; i< citylist.childNodes.length; i++) {
                var checkbox = citylist.childNodes[i].childNodes[4];
                if (merker == -1 && checkbox.checked == true) {
                    merker = i;
                } else if (checkbox.checked == true) {
                    checkbox.checked = false;
                    if (merker != -2) {
                        citylist.childNodes[merker].childNodes[4].checked = false;
                        merker = -2;
                    }
                } 
            }
            if (merker > -1) {
                for(i=0; i < citylist.childNodes.length; i++) {
                    if (i != merker) {
                        var checkbox = citylist.childNodes[i].childNodes[4];
                        checkbox.disabled = true;
                    }
                }
            }
            break;
        case 'showMore':
            weatherAllCity = true;
            for(var i=0; i < citylist.childNodes.length; i++) {
                var checkbox = citylist.childNodes[i].childNodes[4];
                checkbox.disabled = false;
            }
            break;
        default:
            break;
    }
}

/**
 * Beim Klicken auf Abbrechen wird der Index neugeladen
 * @author Klaus Rödel
 */
function weatherConfCancel(position) {
     new Ajax.Updater('service'+position,
                siteWebroot + 'Weathers', 
                { asynchronous: true, 
                  evalScripts:  true, 
                  requestHeaders:['X-Update', 'service'+position]});
}

/**
 * Die checked ob Site im personlize Modus
 * @author Klaus Rödel
 */
function serviceWeather_checkMode() {
    var mode = '';
    if ($('Body') && $('Body').className == 'personalize') {
        mode = 'personalize';
    } else {
        mode = 'use';
    }
    serviceWeather_switchMode(mode);
}
      
/**
 * Zum hin und herschalten zwischen Personlizemodus
 * & nicht personalisieren
 * zeigt Konfigurieren nur im Personlizemodus an
 * @author Klaus Rödel
 */

function serviceWeather_switchMode(mode) {
    if ($('WeatherConfLink')) {
        if (mode == 'personalize') {
            $('WeatherConfLink').show();
        } else {
            $('WeatherConfLink').hide();
        }
    }
}

