
OpenLayers.Control.StyledPrintButton = OpenLayers.Class(OpenLayers.Control.Button, {

    /**
    * Property: type
    * TYPE_BUTTON.
    */
    type: OpenLayers.Control.TYPE_BUTTON,

    /**
    * Property: baseQuerystring
    * String
    */
    baseQuerystring: null,

    /**
    * Property: parent_theme
    * (String)
    */
    parent_theme: null,

    /**
    * 
    */
    initialize: function() {
        OpenLayers.Control.Button.prototype.initialize.apply(this, arguments);
    },

    /**
    * Method: trigger
    */
    trigger: function(event) {
    },

    /**
    * Method: active_print
    * Setup event for print button
    */
    active_print: function() {
        OpenLayers.Event.observe(this.div, "mousedown",
        OpenLayers.Function.bindAsEventListener(this.openPrintPage.bind(this), this.div));
        // Make hover event
        this.div.title = "Udskriv";
        this.div.style.cursor = "pointer"; // Firefox & IE
    },

    /**
    * Method: openPrintPage
    * Method to open the printpage
    */
    openPrintPage: function(evt) {
        Event.stop(evt);

	var convertedPoint = viskort.reverseConvertPoint(new OpenLayers.Geometry.Point(this.map.getCenter().lon, this.map.getCenter().lat));
        var currentstate = "PanToEasting=" + convertedPoint.x + "&PanToNorthing=" + convertedPoint.y + "&ZoomLevel=" + Math.round(this.map.getZoom());

        var activeLayers = "";
        var includeComma = false;
        for (var q = 0; q < this.map.layers.length; q++) {
            if (this.map.layers[q].visibility && this.map.layers[q].options.mapConfigId != null) {
                // Exclude wfs layers
                if (includeComma)
                    activeLayers += ",";
                else
                    includeComma = true;
                
                activeLayers += this.map.layers[q].options.mapConfigId;
            }
        }

        var qs = currentstate;
        if (qs.length > 0 && activeLayers.length > 0)
            qs += "&";
        qs += "DefaultOn=" + activeLayers;
        if (qs.length > 0 && this.baseQuerystring.length > 0)
            qs += "&";
        qs += this.baseQuerystring;

        var markersCoordinat = document.getElementById("print_marker_coordinats");

        var addressObj = viskort.components['address'];
        if (addressObj) {
            if (addressObj.address_markers_layer.markers.length > 0) {
                markersCoordinat.innerHTML = this.parent_theme;
                markersCoordinat.innerHTML += ":" + addressObj.address_markers_layer.markers[0].lonlat.lon;
                markersCoordinat.innerHTML += ":" + addressObj.address_markers_layer.markers[0].lonlat.lat;
            }
        }
        var parentMap = document.getElementById("Map");
        if (parentMap) {
            qs += "&Mapwidth=" + parentMap.clientWidth + "&Mapheight=" + parentMap.clientHeight;
        }

        var printwindow = window.open('PrintMap.aspx?' + qs, 'Print', 'location=no,status=no,menubar=yes,width=800px,height=800px,resize=no', false);
        if (printwindow) {
            printwindow.focus();
        }
    },

    CLASS_NAME: "OpenLayers.Control.StyledPrintButton"
});

