﻿var gpPrint;

function printMap() {
    print.printDialog();
}
var print = {
    //var gpPrint;
    initPrint: function () {

        //gpPrint = new esri.tasks.Geoprocessor("http://gis.sara-tx.org/SARAGIS/rest/services/geoprocess/SaveToPDF/GPServer/SaveToPDF");
        gpPrint = new esri.tasks.Geoprocessor("http://gis.sara-tx.org/SARAGIS/rest/services/geoprocess/SaveToPDF2/GPServer/SaveToPDF1");

        //console.log(myMap.get);

        var printScale;
        console.log(myMap.getLevel());
        switch (myMap.getLevel()) {
            case 11:
                printScale = 1000; break;
            case 10:
                printScale = 2000; break;
            case 9:
                printScale = 4000; break;
            case 8:
                printScale = 8000; break;
            case 7:
                printScale = 16000; break;
            case 6:
                printScale = 32000; break;
            case 5:
                printScale = 64000; break;
            case 4:
                printScale = 125000; break;
            case 3:
                printScale = 250000; break;
            case 2:
                printScale = 500000; break;
            case 1:
                printScale = 1000000; break;
            case 0:
                printScale = 2000000; break;
        }

        var centerXMin = myMap.extent.getCenter().x - 0.1;
        var centerYMin = myMap.extent.getCenter().y - 0.1;
        var centerXMax = myMap.extent.getCenter().x + 0.1;
        var centerYMax = myMap.extent.getCenter().y + 0.1;

        console.log("x: " + myMap.extent.getCenter().x + " y: " + myMap.extent.getCenter().y);

        console.log("xMin" + centerXMin + "yMin" + centerYMin + "xMax" + centerXMax + "yMax" + centerYMax);

        var printParams = {
            "xMin": centerXMin,
            "yMin": centerYMin,
            "xMax": centerXMax,
            "yMax": centerYMax,
            "Spatial_Reference": 2278,
            "Map_Scale": printScale,
            "Layout": dijit.byId("mapSize").value,
            "Map_Title": dijit.byId("mapTitle").value,
            "Include_Attributes": false
        }

        dijit.byId("printDialog").hide();
        dijit.byId("printProg").show();

        gpPrint.submitJob(printParams, this.printCompleteCallback, this.printStatusCallback, function (error) {
            alert(error);
        });

    },

    printCompleteCallback: function (jobInfo) {
        //dijit.byId("printProg").hide();
        if (jobInfo.jobStatus !== "esriJobFailed") {
            //PDF_url is the name of teh output Parameter
            gpPrint.getResultData(jobInfo.jobId, "Output", function (outputFile) {
                var theurl = outputFile.value;
                console.log(theurl);
                console.log(theurl.url);
                //dijit.byId("printProg").setAttribute("Content", dojo.string.substitute('<CENTER><a href=${url} target="_blank">Download Map</a></CENTER>', { url: theurl }));
                //dijit.byId("printProg").setAttribute("Content", "<CENTER><a href='" + theurl + "'target='_blank'>Download Map</a></CENTER>");
                dijit.byId("printProg").setAttribute("Content", "<CENTER>Your map should open in a new window.</CENTER>");
                window.open(theurl.url, "Print_Results");
            });
        }
    },

    printStatusCallback: function (jobInfo) {
        var status = jobInfo.jobStatus;
        var messages = jobInfo.messages;
        //var progDialog = dojo.byId("printProg");
        if (status === "esriJobFailed") {
            alert(status);
            //esri.hide(loading);
            console.log("esriJobFailed");
        }
        else if (status === "esriJobSucceeded") {
            //esri.hide(loading);
            console.log("esriJobSucceeded");
        }
        if (messages != null) {
            dijit.byId("printProg").setAttribute("Content", "<CENTER>" + messages[messages.length - 1].description + "</CENTER>");
            console.log(messages[messages.length - 1].description);

            //showDialog("<CENTER>" + messages[messages.length - 1].description + "</CENTER>")
        }

    },

    printDialog: function () {
        var self = this;
        var printDialogDestroy = dijit.byId("printDialog");
        if (dijit.byId("printDialog")) {
            printDialogDestroy.destroyRecursive();
        }
        var printContainer = new dijit.Dialog({
            id: "printDialog",
            title: "Print to PDF - Floodplain Map",
            style: "width: 350px;"
        });

        printContainer.attr("content",
				"<div>" +
					"<table>" +
					"<tr>" +
						"<td><label for='mapTitle'>Map Title:</label></td>" +
						"<td><input dojoType='dijit.form.TextBox' type='text' name='mapTitle' id='mapTitle'>" +
						"</td>" +
					"</tr>" +
					"<tr>" +
						"<td><label for='mapSize'>Map Size:</label></td>" +
						"<td><select dojoType='dijit.form.FilteringSelect' type='text' name='mapSize' id='mapSize'>" +
							"<option value='flood_print_11x17_P.mxd'>11 x 17 Portrait</option>" +
							"<option value='flood_print_11x17_L.mxd'>11 x 17 Landscape</option>" +
                            "<option value='flood_print_85x11_L.mxd'>8.5 x 11 Landscape</option>" +
                            "<option value='flood_print_85x11_P.mxd'>8.5 x 11 Portrait</option>" +
							"</select>" +
						"</td>" +
					"</tr>" +
        //					"<tr>" +
        //						"<td><label for='mapScale'>Map Scale:</label></td>" +
        //						"<td><input dojoType='dijit.form.NumberSpinner' value='1000' smallDelta='1000' name='mapScale' id='mapScale' constraints='{min:0,max:640000,places:0}'>" +
        //						"</td>" +
        //					"</tr>" +
					"<tr>" +
						"<td align='center' colspan='2'>" +
							"<button dojoType='dijit.form.Button' id='printSubmit' type='button'>Submit</button>" +
							"<button dojoType='dijit.form.Button' id='printCancel' type='button'>Cancel</button>" +
						"</td>" +
					"</tr>" +
					"</table></br>" +
				"</div>");

        var printProgContainergDestroy = dijit.byId("printProg");
        if (dijit.byId("printProg")) {
            printProgContainergDestroy.destroyRecursive();
        }

        var printProgContainer = new dijit.Dialog({
            id: "printProg",
            title: "Exporting Map....",
            style: "width: 300px;height:85px;"
        });

        printProgContainer.attr("content",
                	"<CENTER>Job Submitted. Waiting...</CENTER>"
                );

        //                var progDiv = dojo.create("div", {
        //                    innerHTML: "<div dojoType='dijit.ProgressBar' id='progDiv' indeterminate='true' style='width:275px;'></div>"
        //                });

        //printProgContainer.setContent(dojo.byId("progDiv"));

        //                var pb = new dijit.ProgressBar({
        //                    indeterminate: "true",
        //                    layoutAlign: "left"
        //                });

        //                printProgContainer.setContent(pb);

        dojo.connect(dijit.byId("printSubmit"), "onClick", function () {
            console.log("Print");
            print.initPrint();
        });

        dojo.connect(dijit.byId("printCancel"), "onClick", function () {
            console.log("Cancel");
            dijit.byId("printDialog").hide();
        });

        printContainer.show();
    }
}
