﻿/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is VisKort.
*
* The Initial Developer of the Original Code is
* IT- og Telestyrelsen / Danish National IT and Telecom Agency.
* Portions created by the Initial Developer are Copyright (C) 2010
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):

* Lars Klindt Mogensen
* Morten Bødtkjer
* Niels Kinnerup
* Thomas Bergstedt
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */

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 currentstate = "PanToEasting=" + this.map.getCenter().lon + "&PanToNorthing=" + this.map.getCenter().lat + "&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"
});

