function AlgShowMeControl() {
}

AlgShowMeControl.prototype = new GControl();

AlgShowMeControl.prototype.initialize = function(map)
{
    var container = document.createElement('div');

    var keyDiv = this.createButton_('Regionen');
    keyDiv.style.zIndex = 99;
    keyDiv.setAttribute('title', 'Nach Kategorien filtern');
    keyDiv.style.marginRight = '8px';
    keyDiv.firstChild.style.cssFloat = "left";
    keyDiv.firstChild.style.styleFloat = "left";
    keyDiv.firstChild.style.zIndex = 100;

    var keyExpandedDiv = document.createElement('div');
    keyExpandedDiv.style.clear = 'both';
    keyExpandedDiv.style.padding = '5px';
    keyExpandedDiv.style.position = 'absolute';
    keyExpandedDiv.style.left = '0';
    keyExpandedDiv.style.zIndex = 98;
    keyExpandedDiv.style.color = "#000000";
    keyExpandedDiv.style.backgroundColor = "white";
    keyExpandedDiv.style.border = "1px solid black";
    keyExpandedDiv.innerHTML = '\
<div style="text-align: left">\
 <a href="">Vorarlberg</a><br />\
 <a href="">Tirol</a><br />\
 <a href="">Salzburg</a><br />\
 <a href="">Kärnten</a><br />\
 <a href="">Steiermark</a><br />\
 <a href="">Oberösterreich</a><br />\
 <a href="">Niederösterreich</a><br />\
 <a href="">Wien</a><br />\
 <a href="">Burgenland</a><br />\
</div>'; 
    keyExpandedDiv.style.display = 'block';

    GEvent.addDomListener(keyDiv, 'mouseover', function() {
        this.keyExpanded = true;
        keyExpandedDiv.style.display = "block";
        toggleButton_(keyDiv.firstChild, this.keyExpanded);
    });
    GEvent.addDomListener(keyDiv, 'mouseout', function() {
        this.keyExpanded = false;
        keyExpandedDiv.style.display = "none";
        toggleButton_(keyDiv.firstChild, this.keyExpanded);
    });

    var separatorDiv = document.createElement("div");
    separatorDiv.style.clear = "both";

    container.appendChild(keyDiv);
    keyDiv.appendChild(separatorDiv);
    keyDiv.appendChild(keyExpandedDiv);
    toggleButton_(keyDiv.firstChild, false);


    var showMe = this.createButton_('Zeige mir');
    showMe.setAttribute('title', 'Nach Kategorien filtern');
    showMe.style.marginRight = '8px';
    showMe.firstChild.style.cssFloat = "left";
    showMe.firstChild.style.styleFloat = "left";
    GEvent.addDomListener(showMe, 'click', function() {
        toggleButton_(showMe.firstChild, true);
    });
    container.appendChild(showMe);
    toggleButton_(showMe.firstChild, false);

    var mapTypeDivs = this.addMapTypeButtons_(map);
    for (var i = 0; i < mapTypeDivs.length; i++ ) {
        container.appendChild(mapTypeDivs[i]);
    }

    map.getContainer().appendChild(container);
    return container;
}

AlgShowMeControl.prototype.addMapTypeButtons_ = function(map)
{
    var mapTypes = map.getMapTypes();
    var mapTypeDivs = new Array();
    for (var i = 0; i < mapTypes.length; i++) {
        mapTypeDivs[i] = this.createButton_(mapTypes[i].getName());
        mapTypeDivs[i].setAttribute('title', mapTypes[i].getAlt());
    }
    this.resetButtonEvents_(map, mapTypeDivs);
    return mapTypeDivs;
}

AlgShowMeControl.prototype.resetButtonEvents_ = function(map, mapTypeDivs)
{
    var mapTypes = map.getMapTypes();
    for (var i = 0; i < mapTypeDivs.length; i++) {
        var otherDivs = new Array;
        for (var j = 0; j < mapTypes.length; j++ ) {
            if (j != i) {
                otherDivs.push(mapTypeDivs[j]);
            }
        }
        this.assignButtonEvent_(mapTypeDivs[i], map, mapTypes[i], otherDivs);
        toggleButton_(mapTypeDivs[i].firstChild, false);
    }

    GEvent.addListener(map, 'maptypechanged', function()
    {
        var divIndex = 0;
        var mapType = map.getCurrentMapType();
        for (var i = 0; i < mapTypes.length; i++) {
            if (mapTypes[i] == mapType) {
                divIndex = i;
            }
        }
        GEvent.trigger(mapTypeDivs[divIndex], 'click');
    });
}

AlgShowMeControl.prototype.assignButtonEvent_ = function(div, map, mapType, otherDivs)
{
    GEvent.addDomListener(div, 'click', function()
    {
        for (var i = 0; i < otherDivs.length; i++) {
            toggleButton_(otherDivs[i].firstChild, false);
        }
        toggleButton_(div.firstChild, true);
        map.setMapType(mapType);
    });
}

toggleButton_ = function(div, boolCheck)
{
    div.style.fontWeight = boolCheck ? 'bold' : '';
    div.style.border = '1px solid white';
    var shadows = boolCheck ? ['Top', 'Left'] : ['Bottom', 'Right'];
    for (var j = 0; j < shadows.length; j++) {
        div.style["border" + shadows[j]] = '1px solid #b0b0b0';
    } 
}

AlgShowMeControl.prototype.createButton_ = function(text)
{
    var buttonDiv = document.createElement('div');
    this.setButtonStyle_(buttonDiv);
    buttonDiv.style.cssFloat = 'left';
    buttonDiv.style.styleFloat = 'left';
    var textDiv = document.createElement('div');
    textDiv.appendChild(document.createTextNode(text));
    textDiv.style.width = '6em';
    buttonDiv.appendChild(textDiv);
    return buttonDiv;
}

AlgShowMeControl.prototype.getDefaultPosition = function() {
    return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 7));
}

AlgShowMeControl.prototype.setButtonStyle_ = function(button)
{
    button.style.color = "#000000";
    button.style.backgroundColor = "white";
    button.style.font = "small Arial";
    button.style.border = "1px solid black";
    button.style.padding = "0px";
    button.style.margin= "0px";
    button.style.textAlign = "center";
    button.style.fontSize = "12px"; 
    button.style.cursor = "pointer";
}
