app = {
    gm2MapDivId: 'gm2_map',
    startLatSpan: 50.111469367532194,
    startLngSpan: 8.68044376373291,
    mapZoom: 13,
    zoomLevelMin: 10,
    zoomLevelMax: 17,
    zoomRangeTypeMarker: 14,
    bigInfoWindowEnable: false,
    extInfoWindowEnable: true,
    debug: false,
    webServiceURL: '/webservices/gmap',
    infoTableDivId: 'infoTable',
    infoTablePageLength: 20,
    extInfoWindowId: 'ext_info_win_t_',
    
    map: null,
    startPos: null,
    geocoder: null,
    bq_buttons: new Array(),
    bq_switch: null,
    
    enabledSourceOfSupply: new Array(),
    
    e: null,
    markersOptions: new Array(),
    markers: new Array(),
    markersId: new Array(),
    markersType: new Array(),
    
    markerWithInfoWindowLat: null,
    markerWithInfoWindowLng: null,
    infoWindowOptions: {maxWidth:400, maxTitle:null, maxContent:null, minContent: null, type: null },
    markersNewLoad: false,
    zoomEnabled: true,
    
    searchId: null,
    searchLat: null,
    searchLng: null,
    
    init: function(){
        
        //Ob eine Suche nach Markt per Id, Lat, Lng angefordert wurde
        app.searchLat = app.getUrlParameterByName('lat');
        app.searchLng = app.getUrlParameterByName('lng');
        app.searchId = app.getUrlParameterByName('id');
        
        if ((app.searchLat != null) && (app.searchLng != null) && (app.searchId != null)) {
            app.startLatSpan = (app.searchLat*1) + 0.0015;
            app.startLngSpan = app.searchLng;
            app.mapZoom = 16;
        }
        
        app.startPos = new GLatLng(app.startLatSpan,app.startLngSpan);
        
        //Bezugsquellen-Buttons - INIT
        app.bq_switch = new bq_switch(d_obj('switch_all'));
        
        for (var i=0; i<=6; i++){
            var id = 'bq_0'+(i+1);
            var button = new bq_button(d_obj(id),i);
            app.bq_buttons.push(button);
        }
        
        //onMouseOver
        app.addEvent(app.bq_buttons[0].obj,'mouseover', function(e){ app.bq_buttons[0].onMouseOver(); });
        app.addEvent(app.bq_buttons[1].obj,'mouseover', function(e){ app.bq_buttons[1].onMouseOver(); });
        app.addEvent(app.bq_buttons[2].obj,'mouseover', function(e){ app.bq_buttons[2].onMouseOver(); });
        app.addEvent(app.bq_buttons[3].obj,'mouseover', function(e){ app.bq_buttons[3].onMouseOver(); });
        app.addEvent(app.bq_buttons[4].obj,'mouseover', function(e){ app.bq_buttons[4].onMouseOver(); });
        app.addEvent(app.bq_buttons[5].obj,'mouseover', function(e){ app.bq_buttons[5].onMouseOver(); });
        app.addEvent(app.bq_buttons[6].obj,'mouseover', function(e){ app.bq_buttons[6].onMouseOver(); });
        
        app.addEvent(app.bq_switch.obj,'mouseover', function(e){ app.bq_switch.onMouseOver(); });
        
        
        //onMouseOut
        app.addEvent(app.bq_buttons[0].obj,'mouseout', function(e){ app.bq_buttons[0].onMouseOut(); });
        app.addEvent(app.bq_buttons[1].obj,'mouseout', function(e){ app.bq_buttons[1].onMouseOut(); });
        app.addEvent(app.bq_buttons[2].obj,'mouseout', function(e){ app.bq_buttons[2].onMouseOut(); });
        app.addEvent(app.bq_buttons[3].obj,'mouseout', function(e){ app.bq_buttons[3].onMouseOut(); });
        app.addEvent(app.bq_buttons[4].obj,'mouseout', function(e){ app.bq_buttons[4].onMouseOut(); });
        app.addEvent(app.bq_buttons[5].obj,'mouseout', function(e){ app.bq_buttons[5].onMouseOut(); });
        app.addEvent(app.bq_buttons[6].obj,'mouseout', function(e){ app.bq_buttons[6].onMouseOut(); });
        app.addEvent(app.bq_switch.obj,'mouseout', function(e){ app.bq_switch.onMouseOut(); });
        
        //onClick
        app.addEvent(app.bq_buttons[0].obj,'click', function(e){ app.bq_buttons[0].onClick(); });
        app.addEvent(app.bq_buttons[1].obj,'click', function(e){ app.bq_buttons[1].onClick(); });
        app.addEvent(app.bq_buttons[2].obj,'click', function(e){ app.bq_buttons[2].onClick(); });
        app.addEvent(app.bq_buttons[3].obj,'click', function(e){ app.bq_buttons[3].onClick(); });
        app.addEvent(app.bq_buttons[4].obj,'click', function(e){ app.bq_buttons[4].onClick(); });
        app.addEvent(app.bq_buttons[5].obj,'click', function(e){ app.bq_buttons[5].onClick(); });
        app.addEvent(app.bq_buttons[6].obj,'click', function(e){ app.bq_buttons[6].onClick(); });
        app.addEvent(app.bq_switch.obj,'click', function(e){ app.bq_switch.onClick(); });
        
        //Markers - Icon
        //Icon - Type1
        
        app.markersOptions[0] = {draggable: false, icon:app.getIconType1("/assets/images_system/icon_t1_01.png")};
        app.markersOptions[1] = {draggable: false, icon:app.getIconType1("/assets/images_system/icon_t1_02.png")};
        app.markersOptions[2] = {draggable: false, icon:app.getIconType1("/assets/images_system/icon_t1_03.png")};
        app.markersOptions[3] = {draggable: false, icon:app.getIconType1("/assets/images_system/icon_t1_04.png")};
        app.markersOptions[4] = {draggable: false, icon:app.getIconType1("/assets/images_system/icon_t1_05.png")};
        app.markersOptions[5] = {draggable: false, icon:app.getIconType1("/assets/images_system/icon_t1_06.png")};
        app.markersOptions[6] = {draggable: false, icon:app.getIconType1("/assets/images_system/icon_t1_07.png")};
        
        //Icon - Type2
        app.markersOptions[10] = {draggable: false, icon:app.getIconType2("/assets/images_system/icon_t2_01.png")};
        app.markersOptions[11] = {draggable: false, icon:app.getIconType2("/assets/images_system/icon_t2_02.png")};
        app.markersOptions[12] = {draggable: false, icon:app.getIconType2("/assets/images_system/icon_t2_03.png")};
        app.markersOptions[13] = {draggable: false, icon:app.getIconType2("/assets/images_system/icon_t2_04.png")};
        app.markersOptions[14] = {draggable: false, icon:app.getIconType2("/assets/images_system/icon_t2_05.png")};
        app.markersOptions[15] = {draggable: false, icon:app.getIconType2("/assets/images_system/icon_t2_06.png")};
        app.markersOptions[16] = {draggable: false, icon:app.getIconType2("/assets/images_system/icon_t2_07.png")};
        
        app.markersNewLoad = true;
        
        //***************
        //Google map init
        //***************
        
        app.map = new GMap2(document.getElementById(app.gm2MapDivId));
        app.map.setCenter(app.startPos, app.mapZoom);
        
        //Geocoder
        app.geocoder = new GClientGeocoder();
        app.geocoder.setBaseCountryCode('de');
        
        // Map types: G_NORMAL_MAP, G_SATELLITE_MAP, G_HYBRID_MAP, G_DEFAULT_MAP_TYPES
        app.map.setMapType(G_NORMAL_MAP);
        app.addMapControl();

        //Events

        GEvent.addListener(app.map,"dblclick", function(overlay,point) {  
         if (app.zoomEnabled) { 
          if (overlay == null) { //if map event
            var pos = new GLatLng(point.lat() ,point.lng());
            var zoom = app.map.getZoom()+1;
            if ((zoom>=zs.zoomLevelMin) && (zoom<=zs.zoomLevelMax)){ 
                zs.zoomFromSlider = false;
                app.setZoomEnabled(false);
                window.setTimeout('app.map.setZoom('+zoom+');', 1000);
            } 
          }
         }
        });

        //Map moveend
        GEvent.addListener(app.map,"moveend", function() {
          window.setTimeout("app.addMarkers()",500);
        });
        //Map zoomend
        GEvent.addListener(app.map,"zoomend", function(oldLevel, newLevel) {
          app.mapZoom = newLevel;
          
          if ( ( (newLevel>=app.zoomRangeTypeMarker) && (oldLevel<app.zoomRangeTypeMarker) ) || ( (newLevel<app.zoomRangeTypeMarker) && (oldLevel>=app.zoomRangeTypeMarker)) ) app.markersNewLoad = true;
          
          //alert(oldLevel +'->'+  newLevel+':'+app.markersNewLoad);
        });
        
        //Map maptypechanged
        GEvent.addListener(app.map,"maptypechanged", function() {
          if (app.extInfoWindowEnable == true) app.map.closeExtInfoWindow();
          else app.map.closeInfoWindow();
        });
        
        
        //map move buttons
        app.addEvent(d_obj('btn_up'),'click', function(){ app.map.panDirection(0, 1); });
        app.addEvent(d_obj('btn_left'),'click', function(){ app.map.panDirection(1, 0); });
        app.addEvent(d_obj('btn_right'),'click', function(){ app.map.panDirection(-1, 0); });
        app.addEvent(d_obj('btn_down'),'click', function(){ app.map.panDirection(0, -1); });
       
    },
    load: function(){
    
      if (GBrowserIsCompatible()) {
        regionPoints.init(app.infoTableDivId);
        app.init();
        //zoomslider
        zs.init(app.map, {id:'zoomslider', id_rail:'zoomsliderrail', id_wrapper:'zoomslider_wrapper', type:1, zoomLevelMin:app.zoomLevelMin, zoomLevelMax:app.zoomLevelMax } );
        
        //show markers 
        app.addMarkers();
        
        //Alle Maerkte aktivieren
        window.setTimeout("app.bq_switch.onClick();", 1000);
        
        //Ob eine Suche nach Markt per Id angefordert wurde
        if ((app.searchLat == null) && (app.searchLng == null) && (app.searchId != null)) {
            window.setTimeout("app.searchPointById('"+app.searchId+"');", 2500);
        }
        //Ob eine Suche nach Markt per Id, Lat, Lng angefordert wurde
        if ((app.searchLat != null) && (app.searchLng != null) && (app.searchId != null)) {
            window.setTimeout("app.goToMarkerById('"+app.searchId+"');", 2500);
        }        
        
      }
    },
    addMarkers: function(){
      var mp = regionPoints;
      var mb = app.getMapBounds()
      mp.getPoints(mb.NE_Pos.lat(),mb.NE_Pos.lng(),mb.SW_Pos.lat(),mb.SW_Pos.lng()); 
    },
    removeMarker: function(i) {
      if (app.markers.length != 0) {
          app.map.removeOverlay(app.markers[i]);
          app.markers[i] = null;
      }  
    },
    addMapControl: function(){
      //var controls = new GMapTypeControl();
      //app.map.addControl(controls);
      app.map.addControl(new MTControl());
    },
    addEvent: function( obj, type, fn ){  // the add event function
      if (obj.addEventListener) obj.addEventListener( type, fn, false );
      else if (obj.attachEvent) {
        obj["e"+type+fn] = fn;
        obj[type+fn] = function() {
          obj["e"+type+fn]( window.event );
        };
        obj.attachEvent( "on"+type, obj[type+fn] );
      }
    },
    searchAddress: function(address){
      if (app.geocoder) {
        app.geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              zs.zoomFromSlider = false;
              app.map.setCenter(point, 13);
              
            }
          }
        );
      }
    },
    getIconType1: function(icon_url){
        var pointIcon = new GIcon(G_DEFAULT_ICON);
        pointIcon.image = icon_url;
        pointIcon.shadow = null;
        
        pointIcon.iconSize = new GSize(25, 40);
        pointIcon.iconAnchor = new GPoint(12,38);
        pointIcon.infoWindowAnchor = new GPoint(7,42);
        pointIcon.imageMap = new Array(2,3, 19,3, 19,27, 10,34, 2,27);
        
        return pointIcon;
    },
    getIconType2: function(icon_url){
        var pointIcon = new GIcon(G_DEFAULT_ICON);
        pointIcon.image = icon_url;
        pointIcon.shadow = null;
        
        pointIcon.iconSize = new GSize(68, 66);
        pointIcon.iconAnchor = new GPoint(34,60);
        pointIcon.infoWindowAnchor = new GPoint(28,64);
        pointIcon.imageMap = new Array(1,0, 61,0, 61,35, 40,35, 40,48, 32,56, 23,47, 23,35, 1,35);
        
        return pointIcon;
    },
    showMarker: function(id ,latSpan, lngSpan, type, maxTitle, minContentHtml, maxContentHtml){
        
        var originalType = type;
        type = (app.map.getZoom() >= app.zoomRangeTypeMarker)? (Math.round(type)+10) : type; 
        
        var pos    = new GLatLng(latSpan, lngSpan);
        var marker = new GMarker(pos, app.markersOptions[type] );
        
        if (app.inArray(app.enabledSourceOfSupply,originalType)) app.map.addOverlay(marker);
        
        //Events - Open InfoWindow
        GEvent.addListener(marker, "click", function() {
          
          var point = marker.getLatLng();
          var LatStr = point.lat();
          var LngStr = point.lng();
          
          app.showDetails = false;
          
          app.markerWithInfoWindowLat = LatStr;
          app.markerWithInfoWindowLng = LngStr;
          
          //app.map.setCenter(point, app.map.getZoom());
          
          app.infoWindowOptions.maxTitle = maxTitle;
          app.infoWindowOptions.maxContent  = maxContentHtml;
          app.infoWindowOptions.minContent  = minContentHtml;
          app.infoWindowOptions.type  = originalType;
          
          
          if (!app.extInfoWindowEnable){
            if (app.bigInfoWindowEnable == true){
                marker.openInfoWindowHtml(minContentHtml,app.infoWindowOptions);
            } else {
                marker.openInfoWindowHtml(minContentHtml,{});
            }    
          } else {
            //extInfoWindow
            extInfoWindowHtml = '<img src="/assets/images_system/print_cover.gif" class="gm2_iw_print_cover" /><div class="gm2_iw_wrapper"><div class="extIWContent">'+minContentHtml+'<div id="routesearchbox">'+app.getRouteSearchFormHtml_iw(id, 0, maxTitle+'@'+latSpan+','+lngSpan )+'</div></div></div>';
            marker.openExtInfoWindow( app.map,app.extInfoWindowId+originalType, extInfoWindowHtml, {beakOffset: 3, paddingX: 50, paddingY: 50});   
          }
          
        });
        
        return marker;
    },
    inArray: function(array, value){
        for (var i=0; i<array.length; i++){
            if (array[i] == value) return true;
        }
        return false;
    },
    refreshMarkers: function(){
        app.addMarkers();
    },
    pushValueArray: function(array, value){
        array.push(value);
        return array;
    },
    popValueArray: function(array, value){
        var newArray = new Array();
        for (var i=0; i<array.length; i++){
            if (array[i] != value) newArray.push(array[i]);
        }
        return newArray
    },
    getMapBounds: function(){
        var mapBounds = app.map.getBounds();
        
        var NE_Pos = new GLatLng();
        var SW_Pos = new GLatLng();
    
        NE_Pos = mapBounds.getNorthEast();
        SW_Pos = mapBounds.getSouthWest();
        
        if (app.debug == true) {
          document.getElementById("info").innerHTML  = "NE = " + NE_Pos.lat() +" : "+ NE_Pos.lng()+"<br>";
          document.getElementById("info").innerHTML += "SW = " + SW_Pos.lat() +" : "+ SW_Pos.lng()+"<br>";
        }
        
        var deltaLat = 0.005 * (18 - app.map.getZoom())*2;
        var deltaLng = 0.007 * (18 - app.map.getZoom())*2;
        
        var _NE_Pos = {lat: NE_Pos.lat(), lng: NE_Pos.lng()}; 
        var _SW_Pos = {lat: SW_Pos.lat(), lng: SW_Pos.lng()}; 
        
        //***********************************
        
        _NE_Pos.lat = _NE_Pos.lat + deltaLat;
        _NE_Pos.lng = _NE_Pos.lng + deltaLng;
        
        
        _SW_Pos.lat = _SW_Pos.lat - deltaLat;
        _SW_Pos.lng = _SW_Pos.lng - deltaLng;
        if (_NE_Pos.lng >= 180)  _NE_Pos.lng = -360 + _NE_Pos.lng;
        if (_NE_Pos.lng <= -180) _NE_Pos.lng =  360 + _NE_Pos.lng;
        
        if (_SW_Pos.lng >= 180)  _SW_Pos.lng = -360 + _SW_Pos.lng;
        if (_SW_Pos.lng <= -180) _SW_Pos.lng =  360 + _SW_Pos.lng;
        
        if (_NE_Pos.lat >= 90)  _NE_Pos.lat = 90;
        if (_NE_Pos.lat <= -90) _NE_Pos.lat = -90;
        if (_SW_Pos.lat >= 90)  _SW_Pos.lat = 90;
        if (_SW_Pos.lat <= -90) _SW_Pos.lat = -90;
        
        
        //***********************************
        
        NE_Pos = new GLatLng(_NE_Pos.lat, _NE_Pos.lng);
        SW_Pos = new GLatLng(_SW_Pos.lat, _SW_Pos.lng);
        
        
        return { NE_Pos: NE_Pos,  SW_Pos: SW_Pos };
    },
    goToMarkerById: function(markerId){
        var markerNum = app.getMarkerNumber(markerId);
        if (markerNum != null){
            var point = app.markers[markerNum].getLatLng();
            var LatStr = point.lat();
            var LngStr = point.lng();
            app.markerWithInfoWindowLat = LatStr;
            app.markerWithInfoWindowLng = LngStr;
            LatStr += 0.0015;
            
            if (app.extInfoWindowEnable){
                app.map.closeExtInfoWindow();
            } else {
                app.map.closeInfoWindow();
            }
            app.showDetails = true;
            app.showDetailsMarkerId = markerId;
            
            zs.zoomFromSlider = false;
            app.map.setCenter(new GLatLng(LatStr,LngStr), 16);
    
        }
    },
    getMarkerNumber: function(markerId){
      var markerNum = null;
      for (var i=0; i<app.markersId.length;i++) {
          if (app.markersId[i] == markerId)  {
              markerNum = i;
              break;
          }    
      }
      return markerNum;
    },
    
    getRouteSearchFormHtml_iw: function(markerId, state, address ){
        
        var pointHtml = '';
        if (state == 0){
            pointHtml    = pointHtml + '<div id="search_menu">';
            pointHtml    = pointHtml + '<b>Route berechnen:</b> <a href="javascript:void(0)" onclick="app.setRouteSearchForm('+markerId+',1,'+"'"+address+"'"+')">Hierher</a> - <a href="javascript:void(0)" onclick="app.setRouteSearchForm('+markerId+',2,'+"'"+address+"'"+')">Von hier</a>';
            pointHtml    = pointHtml + '</div>'; //search_menu
            return pointHtml;
        }
        
        if (state == 1){
            pointHtml    = pointHtml + '<div id="search_var1">';
            pointHtml    = pointHtml + '<form name="gm2_route_formular" action="http://maps.google.com/maps" method="get" target="_blank" onsubmit="last_search_typ = 1;saveValues(this.saddr.value, this.daddr.value);">';
            pointHtml    = pointHtml + '<b>Route berechnen:</b> Hierher - <a href="javascript:void(0)" onclick="app.setRouteSearchForm('+markerId+',2,'+"'"+address+"'"+')">Von hier</a><br /><span class="fieldlabel">Startadresse</span><br />';
            pointHtml    = pointHtml + '<input name="saddr" type="text" class="fieldsearch" value="'+getFromFormValue()+'" /><input class="button_los" type="image" src="/assets/images_system/button_los.gif" value="Los" onfocus="if(this.blur)this.blur()" />';
            pointHtml    = pointHtml + '<input name="daddr" type="hidden" value="'+address+'" />';
            pointHtml    = pointHtml + '<input name="hl" type="hidden" value="de" />';
            pointHtml    = pointHtml + '</form>';
            pointHtml    = pointHtml + '<a href="javascript:void(0)" class="wizardpop" onclick="app.setRouteSearchForm('+markerId+',0,'+"'"+address+"'"+')">&laquo; Zur&uuml;ck</a>';
            pointHtml    = pointHtml + '</div>'; //search_v1
            return pointHtml;
        }
        
        if (state == 2){
            pointHtml    = pointHtml + '<div id="search_var2">';
            pointHtml    = pointHtml + '<form name="gm2_route_formular" action="http://maps.google.com/maps" method="get" target="_blank" onsubmit="last_search_typ = 2;saveValues(this.saddr.value, this.daddr.value);">';
            pointHtml    = pointHtml + '<b>Route berechnen:</b> <a href="javascript:void(0)" onclick="app.setRouteSearchForm('+markerId+',1,'+"'"+address+"'"+')">Hierher</a> - Von hier<br /><span class="fieldlabel">Zieladresse</span><br />';
            pointHtml    = pointHtml + '<input name="daddr" type="text" class="fieldsearch" value="'+getToFormValue()+'" /><input class="button_los" type="image" src="/assets/images_system/button_los.gif" value="Los" onfocus="if(this.blur)this.blur()"  />';
            pointHtml    = pointHtml + '<input name="saddr" type="hidden" value="'+address+'" />';
            pointHtml    = pointHtml + '<input name="hl" type="hidden" value="de" /><p class="clr">&nbsp;</p>';
            pointHtml    = pointHtml + '</form>';
            pointHtml    = pointHtml + '<a href="javascript:void(0)" class="wizardpop" onclick="app.setRouteSearchForm('+markerId+',0,'+"'"+address+"'"+')">&laquo; Zur&uuml;ck</a>';
            pointHtml    = pointHtml + '</div>'; //search_v2
            return pointHtml;
        }
        
        return null;
    },
    setRouteSearchForm: function(markerId, state, address){
        var html = app.getRouteSearchFormHtml_iw(markerId, state, address);
        app.map.closeExtInfoWindow();
        
        var markerNumber = app.getMarkerNumber(markerId);
        extInfoWindowHtml = '<img src="/assets/images_system/print_cover.gif" class="gm2_iw_print_cover" /><div class="gm2_iw_wrapper"><div class="extIWContent">'+app.infoWindowOptions.minContent+'<div id="routesearchbox">'+app.getRouteSearchFormHtml_iw(markerId, state, address)+'</div></div></div>';
        app.markers[markerNumber].openExtInfoWindow( app.map,app.extInfoWindowId+app.markersType[markerNumber], extInfoWindowHtml, {beakOffset: 3, paddingX: 10, paddingY: 10});   
    },
    printMap: function(){
        window.print();
    },
    getUrlParameterByName: function(name){
        var params = window.location.search;
        if( params != "") {
            params = params.substr(1,params.length-1);
            var arr_params = params.split('&');
            for (var i=0; i<arr_params.length; i++){
                var param = arr_params[i].split('=');
                if (param[0].toLowerCase() == name.toLowerCase()) return param[1];
            }
            return null;
        } else return null;
    },
    searchPointById: function(id){
            regionPoints.getPointById(app.searchId);
    },
    unload: function(){
        if (app.map) GUnload();
    },
    setZoomEnabled: function( value ){
      app.zoomEnabled = value;
    }
    
}
function bq_button(obj, i){
    this.obj = obj;
    this.number = i;
    this.id = 'bq_0'+(i+1);
    this.state =  0;
    //States: 0 - inactive, 1 - active, 2 - selected
    
    this.onMouseOver = function(){
        this.setMouseOver();
    };   
    
    this.onMouseOut = function(){
        if (this.state != 2){
            this.setInactive();
        } else {
            this.setSelected();
        }
    };   
    this.onClick = function(){
        if (this.state == 2) {
            this.setInactive();
            app.bq_switch.setInactive();
            //refresh markers
            app.enabledSourceOfSupply = app.popValueArray(app.enabledSourceOfSupply, this.number);
            app.refreshMarkers();
        }    
        else {
            this.setSelected();
            
            //refresh markers
            app.enabledSourceOfSupply = app.pushValueArray(app.enabledSourceOfSupply, this.number);
            app.refreshMarkers();
        }
    };   
    
    this.setSelected = function(){
        this.obj.firstChild.className = 'active';
        this.state = 2;
    } 
    this.setInactive = function(){
        this.obj.firstChild.className = 'inactive';
        this.state = 0;
    } 
    this.setMouseOver = function(){
        this.obj.firstChild.className = 'mouseover';
    } 
 
}
function bq_switch(obj){
    this.obj = obj;
    this.state =  0;
    //States: 0 - inactive, 1 - active, 2 - selected
    this.onMouseOver = function(){
        if (this.state != 2){
          this.obj.firstChild.className = 'mouseover';
          this.state = 1;
        }  
    };   
    
    this.onMouseOut = function(){
        if (this.state != 2){
          this.obj.firstChild.className = 'inactive';
          this.state = 1;
        }
    };   
    this.onClick = function(){
        if (this.state == 2) {
            this.setInactive();
            for(var i=0; i<app.bq_buttons.length; i++ ){
                app.bq_buttons[i].setInactive();
                app.enabledSourceOfSupply = app.popValueArray(app.enabledSourceOfSupply, app.bq_buttons[i].number);
            }
            app.refreshMarkers();
        }    
        else {
            this.setSelected();
            app.enabledSourceOfSupply = new Array();
            for(var i=0; i<app.bq_buttons.length; i++ ){
                app.bq_buttons[i].setSelected();
                app.enabledSourceOfSupply = app.pushValueArray(app.enabledSourceOfSupply, app.bq_buttons[i].number);
            }
            app.refreshMarkers();
        }
    };   
    
    this.setSelected = function(){
      this.obj.firstChild.className = 'active';
      this.state = 2;
    };
    
    this.setInactive = function(){
      this.obj.firstChild.className = 'inactive';
      this.state = 0;
    };
    
}

// Routenplaner - Formular
var gm2_route_formularFrom = null;
var gm2_route_formularTo = null;
var last_search_typ = 0;

function saveValues(from,to){
  gm2_route_formularFrom = from;
  gm2_route_formularTo = to;
}
function getFromFormValue(){
    if (gm2_route_formularFrom == null) return '';
    if (last_search_typ == 1) return gm2_route_formularFrom.replace('"', '' );
    return '';
}
function getToFormValue(){
    if (gm2_route_formularTo == null) return '';
    if (last_search_typ == 2) return gm2_route_formularTo.replace('"', '' );
    return '';
}