var NABU = {
    'MAP': null,
    'BASEURL': '',
    'MAPCONTROLSTATES': {
        'TOOLTIP': {
            'active': true
        },
        'SETCENTER': {
            'active': false
        },
        'GETFI': {
            'active': false
        },
	'GETFE': {
            'active': false
        },
        'MEASURE': {
            'active': false
        },        
	'MEASURE_A': {
            'active': false
        },   	
        'ZOOMBOX': {
            'active': false
        },
        'PERMALINK': {
            'active': false
        },
        'DEFAULT': {
            'active': false
        },
        'ADDWEGPUNKTE': {
            'active': false
        },
        'ADDVERANSTALTUNGEN': {
            'active': false
        },
        'ADDFLORA_UND_FAUNA': {
            'active': false
        },
        'ADDWEGE_UND_STRASSEN': {
            'active': false
        },
        'ADDLEBENSRAEUME': {
            'active': false
        },
        'DELETEWEGPUNKTE': {
            'active': false
        },
        'DELETEVERANSTALTUNGEN': {
            'active': false
        },
        'DELETEFLORA_UND_FAUNA': {
            'active': false
        },
        'DELETEWEGE_UND_STRASSEN': {
            'active': false
        },
        'DELETELEBENSRAEUME': {
            'active': false
        },
        'MOVEWEGPUNKTE': {
            'active': false
        },
        'MOVEVERANSTALTUNGEN': {
            'active': false
        },
        'MOVEFLORA_UND_FAUNA': {
            'active': false
        },
        'MOVEWEGE_UND_STRASSEN': {
            'active': false
        },
        'MOVELEBENSRAEUME': {
            'active': false
        },
        'PRINT': {
            'active': false
        },
        'EDITWEGPUNKTE': {
            'active': false
        }
    },
    
    'CTRL': {
        'ZOOM_BOX': {},
        'GET_FI': {},
	'GET_FE': {},
	'MEASURE': {},
	'MEASURE_A': {},	
	'SET_CENTER': {},
        'DEFAULT': {}
    },
    
    'DIGIT': {
        'ADD_WEGPUNKTE': {},
        'ADD_VERANSTALTUNGEN': {},
        'ADD_FLORA_UND_FAUNA': {},
        'ADD_WEGE_UND_STRASSEN': {},
        'ADD_LEBENSRAEUME': {},
        'DELETE_WEGPUNKTE': {},
        'DELETE_VERANSTALTUNGEN': {},
        'DELETE_FLORA_UND_FAUNA': {},
        'DELETE_WEGE_UND_STRASSEN': {},
        'DELETE_LEBENSRAEUME': {},
        'MOVE_WEGPUNKTE': {},
        'MOVE_VERANSTALTUNGEN': {},
        'MOVE_FLORA_UND_FAUNA': {},
        'MOVE_LEBENSRAEUME': {},
        'MOVE_WEGE_UND_STRASSEN': {},
        'EDIT_POINT': {}, // is this needed? 
        'NEWFEATURE': {},
	'EDITFEATURE': {},
        'MAX_NUM_IMAGES': 9,
        'CURRENT': {},
        'ALL_GEOMETRY_TYPES': ['point', 'line', 'polygon']
    },
    
    'HOVER': {
        'PHOTO': {},
        'deactivateAll': function()
        {
            jQuery.each(NABU.HOVER, function(i, n)
            {
                if (n.deactivate && typeof n.deactivate == 'function') 
                {
                    n.deactivate();
                }
            });
        },
        'activateAll': function()
        {
            jQuery.each(NABU.HOVER, function(i, n)
            {
                if (n.activate && typeof n.activate == 'function') 
                {
                    n.activate();
                }
            });
        }
    },
    
    'DRAGGING': {
        'ORDER_DRAG_START': [],
        'ORDER_DRAG_END': []
    },
    
    'setCurrentMouseAction': function()
    {
        /** TODO!!!! - review this function and rewrite it "shorter" etc*/
        if (NABU.MAPCONTROLSTATES.ZOOMBOX.active === true) 
        {
            NABU.CTRL.ZOOM_BOX.activate();
        }
        else 
        {
            NABU.CTRL.ZOOM_BOX.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.SETCENTER.active === true) 
        {
            NABU.CTRL.SET_CENTER.activate();
        }
        else 
        {
            NABU.CTRL.SET_CENTER.deactivate();
        }
        
        
        if (NABU.MAPCONTROLSTATES.DEFAULT.active === true) 
        {
            NABU.CTRL.DEFAULT.activate();
        }
        else 
        {
            NABU.CTRL.DEFAULT.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.ADDWEGPUNKTE.active === true) 
        {
            NABU.DIGIT.ADD_WEGPUNKTE.activate();
        }
        else 
        {
            NABU.DIGIT.ADD_WEGPUNKTE.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.ADDVERANSTALTUNGEN.active === true) 
        {
            NABU.DIGIT.ADD_VERANSTALTUNGEN.activate();
        }
        else 
        {
            NABU.DIGIT.ADD_VERANSTALTUNGEN.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.ADDFLORA_UND_FAUNA.active === true) 
        {
            NABU.DIGIT.ADD_FLORA_UND_FAUNA.activate();
        }
        else 
        {
            NABU.DIGIT.ADD_FLORA_UND_FAUNA.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.ADDWEGE_UND_STRASSEN.active === true) 
        {
            NABU.DIGIT.ADD_WEGE_UND_STRASSEN.activate();
        }
        else 
        {
            NABU.DIGIT.ADD_WEGE_UND_STRASSEN.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.ADDLEBENSRAEUME.active === true) 
        {
            NABU.DIGIT.ADD_LEBENSRAEUME.activate();
        }
        else 
        {
            NABU.DIGIT.ADD_LEBENSRAEUME.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.MOVEWEGPUNKTE.active === true) 
        {
            NABU.DIGIT.MOVE_WEGPUNKTE.activate();
        }
        else 
        {
            NABU.DIGIT.MOVE_WEGPUNKTE.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.MOVEVERANSTALTUNGEN.active === true) 
        {
            NABU.DIGIT.MOVE_VERANSTALTUNGEN.activate();
        }
        else 
        {
            NABU.DIGIT.MOVE_VERANSTALTUNGEN.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.MOVEFLORA_UND_FAUNA.active === true) 
        {
            NABU.DIGIT.MOVE_FLORA_UND_FAUNA.activate();
        }
        else 
        {
            NABU.DIGIT.MOVE_FLORA_UND_FAUNA.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.MOVEWEGE_UND_STRASSEN.active === true) 
        {
            NABU.DIGIT.MOVE_WEGE_UND_STRASSEN.activate();
        }
        else 
        {
            NABU.DIGIT.MOVE_WEGE_UND_STRASSEN.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.MOVELEBENSRAEUME.active === true) 
        {
            NABU.DIGIT.MOVE_LEBENSRAEUME.activate();
        }
        else 
        {
            NABU.DIGIT.MOVE_LEBENSRAEUME.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.DELETEWEGPUNKTE.active === true) 
        {
            NABU.DIGIT.DELETE_WEGPUNKTE.activate();
        }
        else 
        {
            NABU.DIGIT.DELETE_WEGPUNKTE.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.DELETEVERANSTALTUNGEN.active === true) 
        {
            NABU.DIGIT.DELETE_VERANSTALTUNGEN.activate();
        }
        else 
        {
            NABU.DIGIT.DELETE_VERANSTALTUNGEN.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.DELETEFLORA_UND_FAUNA.active === true) 
        {
            NABU.DIGIT.DELETE_FLORA_UND_FAUNA.activate();
        }
        else 
        {
            NABU.DIGIT.DELETE_FLORA_UND_FAUNA.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.DELETEWEGE_UND_STRASSEN.active === true) 
        {
            NABU.DIGIT.DELETE_WEGE_UND_STRASSEN.activate();
        }
        else 
        {
            NABU.DIGIT.DELETE_WEGE_UND_STRASSEN.deactivate();
        }
        
        if (NABU.MAPCONTROLSTATES.DELETELEBENSRAEUME.active === true) 
        {
            NABU.DIGIT.DELETE_LEBENSRAEUME.activate();
        }
        else 
        {
            NABU.DIGIT.DELETE_LEBENSRAEUME.deactivate();
        }
	
        if (NABU.MAPCONTROLSTATES.GETFI.active === true) 
        {
            NABU.CTRL.GET_FI.activate();
        }
        else 
        {
            NABU.CTRL.GET_FI.deactivate();
        }
	
	// Changed MJ, 2009-02-24, added quick editing functionality for 
	// abnahme / feedback-tests by NABU project members
	if (NABU.MAPCONTROLSTATES.GETFE.active === true) 
        {
	    // zerstoere alte CTRL
	    NABU.CTRL.GET_FE.destroy();
	    // lege neue select feature für layer an:
	    NABU.CTRL.GET_FE = new OpenLayers.Control.SelectFeature(
		NABU.DIGIT.CURRENT.WFS, 
		{
			multiple: 	false,
			clickout: 	true,
			toggle: 	true,
			hover: 	false,
			box: 		false,
			onSelect: 	function (the_selected_feature) {
				NABU.DIGIT.EDITFEATURE = the_selected_feature;
				var layername_short = jQuery('#select-digit-layer').val();
				// console.log( the_selected_feature );
				var dialog_id = '#edit-container-' + layername_short;
				// Formularfelder fuellen
				jQuery.each(the_selected_feature.data, function (i, n) {
					// element id is e.g. "edit-feature-wegpunkte-name"
					var element_id = '#edit-feature-' + layername_short + '-' + i;
					jQuery( element_id ).filter('input, textarea, select').val( n )
				});
				jQuery( dialog_id ).dialog('open');
			}
		}
	    );
	    // hinzufügen der neuen Control 
	    NABU.MAP.addControl( NABU.CTRL.GET_FE );
	    NABU.CTRL.GET_FE.activate();
        }
        else 
        {
            NABU.CTRL.GET_FE.deactivate();
        }
		
	if (NABU.MAPCONTROLSTATES.SETCENTER.active === true) 
        {
            NABU.CTRL.SET_CENTER.activate();
        }
        else 
        {
            NABU.CTRL.SET_CENTER.deactivate();
        }
	
	if (NABU.MAPCONTROLSTATES.MEASURE.active === true) 
        {
            NABU.CTRL.MEASURE.activate();
        }
        else 
        {
	    jQuery('#measure_result').html("");
            NABU.CTRL.MEASURE.deactivate();
        }
	if (NABU.MAPCONTROLSTATES.MEASURE_A.active === true) 
        {
            NABU.CTRL.MEASURE_A.activate();
        }
        else 
        {
	    jQuery('#measure_result').html("");
            NABU.CTRL.MEASURE_A.deactivate();
        }
    },     
    'showPermaLink': function()
    {
        jQuery('#mapping-permalink-container').dialog('open');
    },
    'showPrintDialog': function()
    {
        jQuery('#mapping-print-container').dialog('open');
    },
    'showDigitize': function()
    {
        jQuery('#digitizing-functionality-container').dialog('open');
    },
    /**
     * Functions
     */
    'optimizeMapsize': function()
    {
        var $map = jQuery('#map');
        var $mapParent = $map.parent();
        var substract = parseInt($mapParent.css('paddingLeft'), 10) +
        parseInt($mapParent.css('paddingRight'), 10) +
        parseInt($map.css('borderLeftWidth'), 10) +
        parseInt($map.css('borderRightWidth'), 10) +
        parseInt($map.css('marginLeft'), 10) +
        parseInt($map.css('marginRight'), 10) +
        (jQuery.browser.msie) ? 35 : 0;
        $map.width($mapParent.innerWidth() -
        substract);
	
         var myHeight = (screen.height - 300);
        $map.height(myHeight);
    },
    'toggleStatus': function(object, element)
    {
        for (key in object) 
        {
            var control = object[key];
            if ((control == element) && (control.active === false)) 
            {
                control.active = true;
            }
            else 
            {
                control.active = false;
            }
        }
    }
};




