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(500000.000001, 140133.333434, 579999.999901, 220133.333334), 
        restrictedExtent: new OpenLayers.Bounds(500000.000001, 140133.333434, 579999.999901, 220133.333334), 
		units: 'm', 
		projection: "EPSG:27700", 
		tileSize: new OpenLayers.Size(468,468),
		resolutions: [
            1.388889063,
            1.128437031,
            3.703704028,
            5,
            13.333333,
            133.333333333	
        ],
		numZoomLevels: 6,
		controls: [],
		theme: null,
        localPath: "local/",
        mapServerUrl: "/wfs/?map=/home/mike/data/parkingforvans/parkingforvans.map",
        autoHeight: true
	});

	// ------- Base Layer -------
	var baseLayer = new OpenLayers.Layer.WMS( "Base", 
		"http://wms.thepieguide.com/?map=/home/mike/data/parkingforvans/parkingforvans.map", {
		layers: 'Base',
		format: 'png'
	}, {
		buffer: 1
	} );


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


	// ------- Controls -------
    var markerIconSize = new OpenLayers.Size(20, 29);
    var markerIcon = new OpenLayers.Icon(
        mainMap.localPath+"images/arrow.png",
        markerIconSize,
        new OpenLayers.Pixel(-markerIconSize.w, 0)
    );

	var searchControl = new PieGuide.Control.Search({
		div: OpenLayers.Util.getElement("search"),
		title: "Search",
        titleImage: mainMap.localPath+"images/search_title.png",
        displayClass: "greybox",
        contentClass: "greybox_inner",
		queryLabelMessage: "Enter a postcode or street name to search.",
        queryLabelAbove: true,
        waitMessage: "Search in progress...",
		invalidSearchMessage: "Please enter a postcode or place name.",
		noResultsMessage: "No results found.",
        buttonText: '',
        markerIcon: markerIcon,
        zoomTo: 4,
		queries: [
			new PieGuide.Query.WFS.PostalUK({
				title: 'Postcode',
				srsName: "epsg:27700",
				protocolUrl: mainMap.mapServerUrl,
				featureType: "search_postcode",
			    arguments: [
                    {   
                        attributeName: "name",
                        compareType: OpenLayers.Filter.Comparison.LIKE,
                        preAppend: "*",
                        postAppend: "*",
                        validatePostcode: true,
                        formatPostcode: true
                    } 
                ],
				bounds: new OpenLayers.Bounds(522151, 175592, 543589, 187247)
			}),
			new PieGuide.Query.WFS({
				title: 'Street name',
				srsName: "epsg:27700",
				protocolUrl: mainMap.mapServerUrl,
				featureType: "search",
			    arguments: [
                    {   
                        attributeName: "name",
                        compareType: OpenLayers.Filter.Comparison.LIKE,
                        preAppend: "*",
                        postAppend: "*",
                        minLength: 3
                    } 
                ],
				bounds: new OpenLayers.Bounds(522151, 175592, 543589, 187247)
			})
		]
	});

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

	var legendControl = new PieGuide.Control.Legend({
		div: OpenLayers.Util.getElement("legend"),
		title: 'Key',
        displayClass: 'greybox',
        contentClass: 'greybox_inner',
        titleImage: mainMap.localPath+"images/key_title.png",
        selectAllControl: false,
        displayStatus: false,
        displayStatic: true,
        iconWidth: null,
        iconHeight: null,
        hideEmpty: true,
        hideInvisible: true,
        maxHeight: 308
	});

	// ------- Controls -------
	mainMap.addControl(new OpenLayers.Control.PanZoomBar());
	mainMap.addControl(new OpenLayers.Control.Navigation());
    mainMap.addControl(legendControl);
    mainMap.addControl(new OpenLayers.Control.Permalink({
        div: OpenLayers.Util.getElement("permalink")
    }));
    mainMap.addControl(searchControl);
    mainMap.addControl(legendBar);

    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(532871, 181549), 3);
        legendBar.setActiveGroup(1);
    }
    //mainMap.zoomToMaxExtent();

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

    mapdiv.style.visibility='visible';

}




