var map, layer, layer2, layer3, layer4;
var selectRegionControl, vectors;		 
var mousepos;
var selectRegionButton;
var selectedBounds;
var exportFeature;
var modifyFeatureControl;




var setBounds = function(bounds) {
    var epsg4326 = new OpenLayers.Projection("EPSG:4326");
    var decimals = Math.pow(10, Math.floor(map.getZoom() / 3));
    bounds = bounds.clone().transform(map.getProjectionObject(), epsg4326);
    $("minlon").value = Math.round(bounds.left * decimals) / decimals;
    $("minlat").value = Math.round(bounds.bottom * decimals) / decimals;
    $("maxlon").value = Math.round(bounds.right * decimals) / decimals;
    $("maxlat").value = Math.round(bounds.top * decimals) / decimals;	    
};
   
var init = function(){
      var options = {           
           'numZoomLevels' : 10,
           'displayProjection' : new OpenLayers.Projection("EPSG:4326"),
           'units' : "m",
           'maxResolution' : 360/512,
           controls: [new OpenLayers.Control.Navigation()]                       
      };
      
      var styleMap =  new OpenLayers.StyleMap({
                    "default": new OpenLayers.Style(OpenLayers.Util.applyDefaults({
                        fillColor: "#FF6600",
                        strokeColor: "#FF6600",                                             
                        pointRadius: 8
                    }, OpenLayers.Feature.Vector.style["default"])),
                    "select": new OpenLayers.Style(OpenLayers.Util.applyDefaults({                     
                        rotation: 45,
                        pointRadius: 8
                    }, OpenLayers.Feature.Vector.style["select"]))});	
      OpenLayers.ImgPath = "/static/img/ol/";
      map = new OpenLayers.Map( $('#map')[0],options);
      layer = new OpenLayers.Layer.WMS( "World Base Layer", 
                "http://mcache.schimera.com/?", {layers: 'world', format: 'image/png' } );     
      layer2 = new OpenLayers.Layer.WMS( "Australian Postal Regions", 
                "http://mcache.schimera.com/?", {layers: 'aus-regions', format: 'image/png' } );
      layer2.setIsBaseLayer(false);            
      layer3 = new OpenLayers.Layer.WMS( "World Rivers", 
                "http://mcache.schimera.com/?", {layers: 'world-rivers', format: 'image/png' } );
      layer3.setIsBaseLayer(false);   
               
	  vectors = new OpenLayers.Layer.Vector("Vector Layer", {
	      displayInLayerSwitcher: false,	      
          styleMap:  styleMap  
      });
	
	  map.addLayers([layer, layer2, layer3, vectors]);
	 
	 
     
      
      map.addControl(new OpenLayers.Control.MousePosition({           
            formatOutput : function(lonLat) {                
                if (lonLat) {
                    return "Lon:" + lonLat.lon.toPrecision(8) + " Lat:" + lonLat.lat.toPrecision(8);
                } else {
                    return "";
                }
            }
       })); 
                  
    OpenLayers.Control.CustomNavToolbar = OpenLayers.Class(OpenLayers.Control.Panel, {					    					
            initialize: function(options) {
			    OpenLayers.Control.Panel.prototype.initialize.apply(this, [options]);
				this.addControls([
				        new OpenLayers.Control.Navigation({title : 'Pan the map by dragging'}),						  
				        new OpenLayers.Control.ZoomBox({alwaysZoom:true, title : 'Zoom to the selected region'}),
				        new OpenLayers.Control.ZoomIn({title : 'Zoom In'}),				        
				        new OpenLayers.Control.ZoomOut({title : 'Zoom Out'}),	
				        new OpenLayers.Control.ZoomToMaxExtent({title : 'Zoom out to the full extent'})				       	        					       				      
				 ]);						
			    this.displayClass = 'olControlNavToolbar';
		    }
      });
      var panel = new OpenLayers.Control.CustomNavToolbar({
                div: document.getElementById("navtool")
      });
	  map.addControl(panel);       
	  map.addControl(new OpenLayers.Control.CustomLayerSwitcher({
                div: document.getElementById("layerswitch"),
                activeColor : "transparent"
      }));         
      if (!map.getCenter()) map.zoomToMaxExtent();
      $('#region-select').change(function() {
            var bbox = $('#region-select').val();
            if (bbox.length > 0) {
                var parts = bbox.split(",");            
                var bounds = new OpenLayers.Bounds(parts[0], parts[1], parts[2], parts[3]);
                map.zoomToExtent(bounds);            
            }
      });
     
    }