﻿// Client-side printing javascript functions
var NITKPrinting_printWin = null;
var NITKPrinting_objCreatePrintPageLoadingIndicatorId = "NITKPrinting_createPrintPageLoadingSpan";
var NITKPrinting_txtCreatePrintPageLoadingIndicatorId = "NITKPrinting_createPrintPageLoadingText";
var NITKPrinting_objExportImageLoadingIndicatorId = "NITKPrinting_exportImageLoadingSpan";
var NITKPrinting_txtExportImageLoadingIndicatorId = "NITKPrinting_exportImageLoadingText";

// Export Image
var NITKPrinting_exportWinController = new NITKPrinting_windowController();
// Don't know why the windows are not closed automatically when exporting GIF/JPEG.
// Close all the child windows opened for export image when viewer window is closed.
NITKPrinting_WireEvent(window, 'onunload', NITKPrinting_exportWinController.NITKPrinting_closeOldWindows);

function NITKPrinting_createPrintPageError() 
{
    NITKFramework_hide(NITKPrinting_objCreatePrintPageLoadingIndicatorId);
    alert("Error: Could not create print page.");
}

function NITKPrinting_exportImageError() 
{
    NITKFramework_hide(NITKPrinting_objExportImageLoadingIndicatorId);    
    alert("Error: Could not export image.");
}

// Called from server-generated function after print request
function NITKPrinting_PrintTaskDisplayPage(printContent) {   //printImageUrl, mapHeight, taskResultsHtml) {
    var windowOptions = "toolbar=yes,menubar=yes,status=yes,width=700,height=600,top=100,left=200,scrollbars=yes,resizable=yes";
   
   if (NITKPrinting_printWin)
   {
    NITKPrinting_printWin.close();
   }
   
    if (!NITKPrinting_printWin || NITKPrinting_printWin.closed) {
           NITKPrinting_printWin = window.open("", "NITKPrinting_printWindow", windowOptions);
    }
    
    if (NITKPrinting_printWin != null) {

        // restore line breaks (encoded as xxrnxx at server)
        var regexp = /xxrnxx/gi;
        printContent = printContent.replace(regexp, "\n");
        
        // "unescape" the content
        printContent = decode(printContent);
        
        NITKPrinting_printWin.document.write(printContent);

        NITKPrinting_printWin.document.close();
        NITKPrinting_printWin.focus();
    }
    else
        alert("Cannot display print preview window. Check that popup blockers are disabled for this site.");
        
    undoHourglass();
    
}

function doHourglass() {
    document.body.style.cursor = 'wait';
}
function undoHourglass() {
    document.body.style.cursor = 'auto';
}

var conversionMap = {
    "amp" : "&",
    "lt" : "<",
    "gt" : ">",
    "apos" : "'",
    "quot" : '"'
}

function decode(entityString) {
    return entityString.replace(/&(\w+);/g, function(m,g) {
        return conversionMap[g]||m;
    });
}

function NITKPrinting_Download(fileName)
{

    NITKPrinting_exportWinController.popUpWindow('FileDownload.aspx?FileName=' + fileName, 'NITKPrinting_Export' + Math.floor(Math.random() * 50), 1, 1);
    //NITKPrinting_exportWinController.NITKPrinting_closeOldWindows();
}

// Export Image
function NITKPrinting_windowController()
{
    var loadedWindows = new Array()
    
    this.popUpWindow = function(wndUrl, wndName, wndWidth, wndHeight)
    {
        try
        {
            var windObj = window.open(wndUrl, wndName, 'width='+wndWidth+',height='+wndHeight);
            if (windObj != null)
            {
                windObj.moveTo(-500, -500);
                loadedWindows[loadedWindows.length] = windObj;
            }
            else
            {
                alert("Please check that popup blockers are disabled for this site.");
            }
            NITKPrinting_closeOldWindows();
        }
        catch(ex) 
        { 
            //alert('WindowController.popUpWindow: Exception occured, message: ' + ex.message)
        }
   
        return windObj;
    }
    
    // close everything except the last one
    function NITKPrinting_closeOldWindows()
    {  
        for(var x = 0; x < loadedWindows.length - 1; x++)
        {
            try
            {
                loadedWindows[x].close();
            }
            catch(err) 
            {  
                //alert('WindowController.NITKPrinting_closeOldWindows: Exception occured, message: ' + err.message)  
            }
        }      
    }
    
    this.NITKPrinting_closeOldWindows = function()
    {
        for(var x = 0; x < loadedWindows.length; x++)
        {
            try
            {
               loadedWindows[x].close();
            }
            catch(err) 
            {  
                //alert('WindowController.NITKPrinting_closeOldWindows: Exception occured, message: ' + err.message)  
            }
        }
    }
}

function NITKPrinting_WireEvent(elem,target,func)
{
    if (elem.addEventListener)
        elem.addEventListener(target, func, false); //FF
    else if (elem.attachEvent)
        elem.attachEvent(target, func); //IE
}
