﻿var exportWindow;

function printMapSetup() {
    self.printpreview.location = "print_map.aspx";
}

function printMapScale(pScaleValue) {
    printMapSetup();
}

function printMap() {
    //alert("print map");
    var m = map;

    var state = {
        map: getMapState(m)
    }

    var pageSize = "a";
    var orientation = "p";
    var legend = "nlg";
    var scale = "0";
    if (dojo.byId('SelectPrintOrientation').value == "landscape") {
        orientation = "l";
    }
    if (dojo.byId('printLegend').checked) {
        legend = "lg";
    }
    if (dojo.byId('printScale').value == "source") {
        scale = window.parent.document.getElementById("dispscale").value;
    }
    pageSize = window.parent.document.getElementById("pageSize").value;

    togglePrintBox(true);

    dojo.query('#printoptions').style('display', 'block');

    var printingHiddenFrame = dojo.byId("printpreview");

    var iframeDocument = dojo.isIE ? printingHiddenFrame.contentWindow.document : printingHiddenFrame.contentDocument;
    iframeDocument.getElementById("appState").value = dojo.toJson(state);
    iframeDocument.getElementById("pageSize").value = pageSize;
    iframeDocument.getElementById("pageOrientation").value = orientation;
    iframeDocument.getElementById("pageLegend").value = legend;
    iframeDocument.getElementById("mapScale").value = scale;

    //alert("submit form");
    iframeDocument.getElementById("form").submit();
}

function printResults(){

    self.printpreview.location = "results_layout.aspx";

    dojo.query('#printoptions').style('display', 'none');

    togglePrintBox(true);
}

function getMapState(m) {
  var layerStates = [], graphicsState = [], graphics = drawingLayer.graphics;
  
  //serialize each layer's state
  dojo.forEach(m.layerIds, function(layerId) {
    layerStates.push( getLayerState(m.getLayer(layerId)) );
  });
  
  //serialize graphics from last to first to retain graphics drawing order
  //for (var i=graphics.length-1; i>=0; i--) {
  //for (var i = graphics.length - 1; i >= 0; i--) {
  for (var i=0; i<graphics.length; i++) {
    graphicsState.push(graphics[i].toJson());
  };
  
  var viewSelection = jsel.getSelVal(document.getElementById('viewmenu'));
  
  return {
    extent: m.extent.toJson(),
    layers: layerStates,
    graphics: graphicsState,
    view: viewSelection.value
  };
}

function getLayerState(layer) {
  return {
    id: layer.id,
    type: layer.declaredClass,
    url: layer.url,
    visible: layer.visible,
    opacity: layer.opacity,
    layerDefs: layer.layerDefinitions,
    layers: layer.visibleLayers
  };
}

function fillLegend(pOrientation){
    
    //alert("filling legend");
    var printingHiddenFrame = dojo.byId("printpreview");
  
    var iframeDocument = dojo.isIE ? printingHiddenFrame.contentWindow.document : printingHiddenFrame.contentDocument;

    var legCt = 0;
    var rowTot = 55;

    if (pOrientation == "l") {
        rowTot = 38;
    }

    //alert("filling legend by " + rowTot);
    
    dojo.forEach(dojo.query(".fieldset", dojo.byId("toc")), function(legendItem) {
        //alert(legCt+" source: "+dojo.query("input",legendItem).checked);
        if (dojo.query("input", legendItem)[0].checked) {
            legCt = legCt + 1;
            //alert(dojo.query(".layertitle", legendItem)[0].innerHTML);
            //alert(dojo.query("input", legendItem)[0].checked + ": " + legCt);
            if (legCt < (rowTot*1)) {
                iframeDocument.getElementById("legendbox1").innerHTML += "<div class=\"layertitle\">" + dojo.query(".layertitle", legendItem)[0].innerHTML + "</div>";
            } else if (legCt < (rowTot * 2)) {
                iframeDocument.getElementById("legendbox2").innerHTML += "<div class=\"layertitle\">" + dojo.query(".layertitle", legendItem)[0].innerHTML + "</div>";
            } else if (legCt < (rowTot * 3)) {
                iframeDocument.getElementById("legendbox3").innerHTML += "<div class=\"layertitle\">" + dojo.query(".layertitle", legendItem)[0].innerHTML + "</div>";
            } else {
                iframeDocument.getElementById("legendbox4").innerHTML += "<div class=\"layertitle\">" + dojo.query(".layertitle", legendItem)[0].innerHTML + "</div>";
            }
            dojo.forEach(dojo.query(".item", legendItem), function(legendSubItem) {
                //legCt+=dojo.query("img",legendItem).length;
                legCt = legCt + 1;
                if (legCt < (rowTot * 1)) {
                    iframeDocument.getElementById("legendbox1").innerHTML += "<div class=\"item\">" + legendSubItem.innerHTML + "</div>";
                } else if (legCt < (rowTot * 2)) {
                    iframeDocument.getElementById("legendbox2").innerHTML += "<div class=\"item\">" + legendSubItem.innerHTML + "</div>";
                } else if (legCt < (rowTot * 3)) {
                    iframeDocument.getElementById("legendbox3").innerHTML += "<div class=\"item\">" + legendSubItem.innerHTML + "</div>";
                } else {
                    iframeDocument.getElementById("legendbox4").innerHTML += "<div class=\"item\">" + legendSubItem.innerHTML + "</div>";
                }
            });
        }
    });
    //iframeDocument.getElementById("form").submit();

}

function fillResults(){
    
    //alert("filling legend");
    var printingHiddenFrame = dojo.byId("printpreview");
  
    var iframeDocument = dojo.isIE ? printingHiddenFrame.contentWindow.document : printingHiddenFrame.contentDocument;
    //alert("source: "+dojo.byId("toc").innerHTML);
    iframeDocument.getElementById("resultslist").innerHTML = dojo.byId("resultlist").innerHTML;
    //iframeDocument.getElementById("form").submit();
    
}

function setPrintTitle(pValue){
    //alert("setting title to: "+pValue);
    var printingHiddenFrame = dojo.byId("printpreview");
    var iframeDocument = dojo.isIE ? printingHiddenFrame.contentWindow.document : printingHiddenFrame.contentDocument;
    iframeDocument.getElementById("printTitle").innerHTML = pValue;
    //alert("value: "+iframeDocument.getElementById("printTitle").innerHTML);
}

function doPrintMap(){
    self.printpreview.focus();
    self.printpreview.print();
}

function togglePrintBox( pShow ){
	if ( !pShow ) {
	    //self.printpreview.location = "hiddenframe.html";
		dojo.query('#printbox').style('display','none');
	}else{
		dojo.query('#printbox').style('display','block');
	}
}

function printMapOrientation(pState) {

    //alert("orientation: "+pState);

    var previewBox = dojo.coords(dojo.byId("printpreview"));
    //var tmpLocation = self.printpreview.location.href;

    //alert(tmpLocation);

    var tmpHeight = previewBox.w;
    var tmpWidth = previewBox.h;

    previewBox.h = tmpHeight;
    previewBox.w = tmpWidth;

    dojo.marginBox("printpreview", previewBox);
    
    //alert(previewBox.h);
    //alert(previewBox.w);

//    if (pState == "portrait") {
//        dojo.query('#landscapewarning').style('display', 'none');
//    } else {
//        dojo.query('#landscapewarning').style('display', 'block');
//    }

    printMapSetup();
}

function exportImage() {
    exportWindow = window.open("print_setup.aspx?t=image_export.aspx");
}

function exportMap() {

    var m = map;

    var state = {
        map: getMapState(m)
    }

    exportWindow.document.getElementById("appState").value = dojo.toJson(state);
    exportWindow.document.getElementById("form").submit();
}