var mainMap;

function init() {
    
    OpenLayers.CommonPath = "http://mc.dev.thepieguide.com/common/";
	OpenLayers.ImgPath = OpenLayers.CommonPath + "images/";


	// ------- Create Map -------
	mainMap = new OpenLayers.Map('map', { 
		maxExtent: new OpenLayers.Bounds(521293, 174905, 529955, 179969), 
        restrictedExtent: new OpenLayers.Bounds(521293, 174905, 529955, 179969), 
		units: 'm', 
		projection: "EPSG:27700", 
		tileSize: new OpenLayers.Size(468,468),
		resolutions: [
            3.333333333,	
            1.333333333,
            0.999999999
        ],
		numZoomLevels: 3,
		controls: [],
		theme: null,
        localPath: "local/",
        mapServerUrl: "/wfs/?map=/home/mike/data/eco/eco.map"
	});

	// ------- Base Layer -------
	var baseLayer = new OpenLayers.Layer.WMS( "Base", 
		"http://wms.thepieguide.com/?map=/home/mike/data/eco/eco.map", {
		layers: 'Base',
		format: 'png'
	}, {
		buffer: 1,
		attributionByZoom: [
            'Mapdata &copy; 2005 Collins Bartholomew',
            'Mapdata &copy; 2005 Collins Bartholomew',
            'Mapdata &copy; 2005 Collins Bartholomew'
        ]
	} );


	// ------- Add Layers to Map -------
	mainMap.addLayer(baseLayer);
	PieGuide.Util.LoadLayers(mainMap, layers);

	// ------- Controls -------
    var legendBar = new PieGuide.Control.LegendBar({
        div: OpenLayers.Util.getElement("layerswitcherimg")
    });

	var legendControl = new PieGuide.Control.Legend({
		div: OpenLayers.Util.getElement("legend"),
		title: 'Key',
        contentClass: 'body',
        selectAllControl: false,
        displayStatus: false,
        displayStatic: true,
        iconWidth: null,
        iconHeight: null,
        hideEmpty: true,
        hideInvisible: true
	});


    var areaSelector = new PieGuide.Control.AreaSelector({
        div: OpenLayers.Util.getElement("sitelocator2"),
		title: 'Site Locator',
        label: null,
        contentClass: 'body',
        query: new PieGuide.Query.WFS({
            title: 'Site Locator Search',
            srsName: "epsg:27700",
            protocolUrl: mainMap.mapServerUrl,
            featureType: "sitelocator",
			arguments: [
                { 
                    attributeName: "partner_id",
                    value: 6
                } 
            ]
        })
    });

    var walkingRoutes = new PieGuide.Control.WalkingRoutes({
		div: OpenLayers.Util.getElement("walkingroutes"),
		title: 'Walking Routes',
        contentClass: 'body',
        legendBar: legendBar,
        areaSelector: areaSelector,
        activeSection: 'Walking',
        query: new PieGuide.Query.WFS({
            title: 'Walking Route Search',
            srsName: "epsg:27700",
            protocolUrl: mainMap.mapServerUrl,
            featureType: "walkingroutesearch",
			arguments: [
                { attributeName: "destination_id" } 
            ]
        })
    });


    var busRoutes = new PieGuide.Control.BusRoutes({
		div: OpenLayers.Util.getElement("busroutes"),
		title: 'Bus Routes',
        contentClass: 'body',
        legendBar: legendBar,
        speedFactor: 1200000,
        activeSection: 'Bus',
        query: new PieGuide.Query.WFS({
            title: 'Bus Route Search',
            srsName: "epsg:27700",
            protocolUrl: mainMap.mapServerUrl,
            featureType: "busroutesearch"
        })
    });

	// ------- Controls -------
    mainMap.addControl(new OpenLayers.Control.ArgParser()); 
	mainMap.addControl(new OpenLayers.Control.PanZoomBar());
	mainMap.addControl(new OpenLayers.Control.Navigation());
    mainMap.addControl(new PieGuide.Control.Attribution());
    mainMap.addControl(legendBar);
    mainMap.addControl(legendControl);
    mainMap.addControl(walkingRoutes);
    mainMap.addControl(busRoutes);
    mainMap.addControl(areaSelector);
    mainMap.addControl(new OpenLayers.Control.Permalink2({
        div: OpenLayers.Util.getElement("permalink2"), 
        linkText: 'Link to this map'
    }));


    var selectlayers = [];
    for(var i=0, len=mainMap.layers.length; i<len; i++) 
        if (mainMap.layers[i].inlayerchooser) 
            selectlayers.push(mainMap.layers[i]);

    var selectControl = new OpenLayers.Control.SelectFeature(selectlayers);
    var featurePopup = new PieGuide.Control.FeaturePopup({
        selectFeatureControl: selectControl
    });
    mainMap.addControl(featurePopup);
    mainMap.addControl(selectControl);
    selectControl.activate();

    if (!mainMap.getCenter()) 
	    mainMap.setCenter(new OpenLayers.LonLat(524778, 178555), 0);

    var mapdiv = OpenLayers.Util.getElement("map");

    mapdiv.style.visibility='visible';

}




