﻿// // Javascript for PRINTINGDIALOG user control.

// Defining constants for callback purposes
var PRINTINGDIALOG_SEPARATOR = 'PRINTINGDIALOG_&';
var PRINTINGDIALOG_PRINT_ACTION = 'PRINT';
var PRINTINGDIALOG_FAIL_ACTION = 'FAIL';
var PRINTINGDIALOG_SUCCESS_ACTION = 'SUCCESS';

// Defining constant strings for user output
var PRINTINGDIALOG_START_MESSAGE = 'Choose your printing options.';
var PRINTINGDIALOG_PROCESSING_MESSAGE = 'Creating PDF file.....';
var PRINTINGDIALOG_FAIL_MESSAGE = 'The operation has failed! Try again.';

// Defining constant strings control IDs
var PRINTINGDIALOG2_MODAL_POPUP_ID = "TitleBanner1_PrintingDiaolog2_ModalPopupExtender";
var PRINTINGDIALOG2_CANCEL_ID = "TitleBanner1_PrintingDialog2_buClose";
var PRINTINGDIALOG2_PDF_LINK_ID = "TitleBanner1_PrintingDialog2_hlPdf";

var PRINTINGDIALOG_MODAL_POPUP_ID = "TitleBanner1_PrintingDiaolog_ModalPopupExtender";
var PRINTINGDIALOG_MESSAGE_LABEL_ID = "TitleBanner1_PrintingDialog1_lbMessage";
var PRINTINGDIALOG_TEMPLATE_DROPLIST_ID = "TitleBanner1_PrintingDialog1_dlTemplate";
var PRINTINGDIALOG_SCALE_DROPLIST_ID = "TitleBanner1_PrintingDialog1_dlScale";
var PRINTINGDIALOG_RESOLUTION_DROPLIST_ID = "TitleBanner1_PrintingDialog1_dlResolution";
var PRINTINGDIALOG_MAP_TITLE_TEXTBOX_ID = "TitleBanner1_PrintingDialog1_tbMapTitle";
var PRINTINGDIALOG_MAP_NOTES_TEXTBOX_ID = "TitleBanner1_PrintingDialog1_tbMapNotes";
var PRINTINGDIALOG_ACTIVITY_IMAGE_ID = "TitleBanner1_PrintingDialog1_activity_image";
var PRINTINGDIALOG_SUBMIT_ID = "TitleBanner1_PrintingDialog1_buSend";
var PRINTINGDIALOG_CANCEL_ID = "TitleBanner1_PrintingDialog1_buClose";

// Defines the amount of time (in milliseconds), that elapses between the user
// receiving the confirmation and the popup window automatically closing down.
var PRINTINGDIALOG_DELAY = 2000;
var PRINTINGDIALOG_CLOSE_POPUP_AUTOMATICALLY = true;

var PRINTINGDIALOG_SUBMIT_oldOnMouseClick = null;
var PRINTINGDIALOG_CANCEL_oldOnMouseClick = null;

// CALLBACK METHODS *****************************************************

function PRINTINGDIALOG_callServer(message)
{   
    var action = message;
    
    switch (action) {
        case PRINTINGDIALOG_PRINT_ACTION:
                
            // Get controls.
            var lbMessage = document.getElementById(PRINTINGDIALOG_MESSAGE_LABEL_ID);
            var dlTemplate = document.getElementById(PRINTINGDIALOG_TEMPLATE_DROPLIST_ID);
            var dlScale = document.getElementById(PRINTINGDIALOG_SCALE_DROPLIST_ID);
            var dlResolution = document.getElementById(PRINTINGDIALOG_RESOLUTION_DROPLIST_ID);
            var tbMapTitle = document.getElementById(PRINTINGDIALOG_MAP_TITLE_TEXTBOX_ID);
            var tbMapNotes = document.getElementById(PRINTINGDIALOG_MAP_NOTES_TEXTBOX_ID);
            var imgActivity = document.getElementById(PRINTINGDIALOG_ACTIVITY_IMAGE_ID);
            
            // Disable buttons.
            PRINTINGDIALOG_disableButtons();
            
            // Set components for user response.
            imgActivity.style.display = "inline";
            lbMessage.innerHTML = PRINTINGDIALOG_PROCESSING_MESSAGE;
            lbMessage.style.color = "red";
            
            // Get values from controls.
            var template = dlTemplate.options[dlTemplate.selectedIndex].value;
            var scale = dlScale.options[dlScale.selectedIndex].value;
            var resolution = dlResolution.options[dlResolution.selectedIndex].value;
            var mapTitle = null;
            var mapNotes = null;
            
            if(tbMapTitle.value != '')
                mapTitle = tbMapTitle.value;                
            if(tbMapNotes.value != '')
                mapNotes = tbMapNotes.value;
            
            //Construct callback message.
            var callbackMessage =   PRINTINGDIALOG_PRINT_ACTION + PRINTINGDIALOG_SEPARATOR +
                                    template + PRINTINGDIALOG_SEPARATOR +
                                    scale + PRINTINGDIALOG_SEPARATOR +
                                    resolution + PRINTINGDIALOG_SEPARATOR +
                                    mapTitle + PRINTINGDIALOG_SEPARATOR +
                                    mapNotes + PRINTINGDIALOG_SEPARATOR;
            
            // INVOKING CALLBACK
            PRINTINGDIALOG_DoCallBack(callbackMessage, "PrintingDialog"); 
            
            break
        default:
            break
    }//end Switch  
    
}


function PRINTINGDIALOG_processMyResult (returnMessage, context)
{
    var splittedReturnMessage = returnMessage.split(PRINTINGDIALOG_SEPARATOR);
    var action = splittedReturnMessage[0];
    
    switch (action) {
        case PRINTINGDIALOG_FAIL_ACTION:
            
            // Get controls.
            var lbMessage = document.getElementById(PRINTINGDIALOG_MESSAGE_LABEL_ID);
            var imgActivity = document.getElementById(PRINTINGDIALOG_ACTIVITY_IMAGE_ID);
            
            // Set controls for user response.
            imgActivity.style.display = "none";
            lbMessage.innerHTML = PRINTINGDIALOG_FAIL_MESSAGE;
            
            // Enable buttons.
            PRINTINGDIALOG_enableButtons();
            
            break
        case PRINTINGDIALOG_SUCCESS_ACTION:
        
            // Close this popup window.
            PRINTINGDIALOG_Close();
            
            var pdfUrl = splittedReturnMessage[1];
            // Open Printing Dialog #2.
            PRINTINGDIALOG2_Show(pdfUrl);
            
            break            
        default:
            break
    }//end Switch
}

function PRINTINGDIALOG_postMyError(returnmessage, context)
{
    alert("Callback Error: " + returnmessage + ", " + context);
}

// ****************************************************************

function PRINTINGDIALOG2_Show(pdfUrl)
{
    // OPEN MODAL POPUP WINDOW
    var modalPopupBehavior = $find(PRINTINGDIALOG2_MODAL_POPUP_ID);
    if(modalPopupBehavior != null)
    {
        modalPopupBehavior.show();
    }
       
    // Set hyperlink. 
    var hlPdf = document.getElementById(PRINTINGDIALOG2_PDF_LINK_ID);
    hlPdf.href = pdfUrl;
    hlPdf.target = "_blank";
    hlPdf.focus();
}

function PRINTINGDIALOG2_Close()
{      
    // CLOSE MODAL POPUP WINDOW
    var modalPopupBehavior = $find(PRINTINGDIALOG2_MODAL_POPUP_ID);
    if(modalPopupBehavior != null)
    {
        modalPopupBehavior.hide();
    }  
}

function PRINTINGDIALOG_Close()
{      
    // CLOSE MODAL POPUP WINDOW
    var modalPopupBehavior = $find(PRINTINGDIALOG_MODAL_POPUP_ID);
    if(modalPopupBehavior != null)
    {
        modalPopupBehavior.hide();
    }  
}

function PRINTINGDIALOG_Show()
{      
    // OPEN MODAL POPUP WINDOW
    var modalPopupBehavior = $find(PRINTINGDIALOG_MODAL_POPUP_ID);
    if(modalPopupBehavior != null)
    {
        modalPopupBehavior.show();
    }
   
    // RESET CONTROLS
    PRINTINGDIALOG_resetControls(); 
   
    // Set focus on Email text field.
    var dlTemplate = document.getElementById(PRINTINGDIALOG_TEMPLATE_DROPLIST_ID);
    dlTemplate.focus();
    
}

function PRINTINGDIALOG_resetControls()
{
    // Get controls.
    var lbMessage = document.getElementById(PRINTINGDIALOG_MESSAGE_LABEL_ID);
    var dlTemplate = document.getElementById(PRINTINGDIALOG_TEMPLATE_DROPLIST_ID);
    var dlScale = document.getElementById(PRINTINGDIALOG_SCALE_DROPLIST_ID);
    var dlResolution = document.getElementById(PRINTINGDIALOG_RESOLUTION_DROPLIST_ID);
    var tbMapTitle = document.getElementById(PRINTINGDIALOG_MAP_TITLE_TEXTBOX_ID);
    var tbMapNotes = document.getElementById(PRINTINGDIALOG_MAP_NOTES_TEXTBOX_ID);
    var imgActivity = document.getElementById(PRINTINGDIALOG_ACTIVITY_IMAGE_ID);
    
    //Reset controls.
    lbMessage.innerHTML = PRINTINGDIALOG_START_MESSAGE;
    lbMessage.style.color = "black";
    tbMapTitle.value = "";
    tbMapNotes.value = "";
    imgActivity.style.display = "none";
    dlScale.selectedIndex = 0;
    dlTemplate.selectedIndex = 0;
    dlResolution.selectedIndex = 0;
    
    // Enable buttons.
    PRINTINGDIALOG_enableButtons()
    
}

function PRINTINGDIALOG_enableButtons()
{    
    var closelLabel = document.getElementById(PRINTINGDIALOG_CANCEL_ID);    
    var submitLabel = document.getElementById(PRINTINGDIALOG_SUBMIT_ID); 
        
    if(PRINTINGDIALOG_SUBMIT_oldOnMouseClick != null)
        submitLabel.onclick = PRINTINGDIALOG_SUBMIT_oldOnMouseClick;
    submitLabel.disabled = false;
    
    if(PRINTINGDIALOG_CANCEL_oldOnMouseClick != null)
        closelLabel.onclick = PRINTINGDIALOG_CANCEL_oldOnMouseClick;
    closelLabel.disabled = false;
}

function PRINTINGDIALOG_disableButtons()
{    
    var closelLabel = document.getElementById(PRINTINGDIALOG_CANCEL_ID);    
    var submitLabel = document.getElementById(PRINTINGDIALOG_SUBMIT_ID); 
        
    PRINTINGDIALOG_SUBMIT_oldOnMouseClick = submitLabel.onclick;
    submitLabel.onclick = null;
    submitLabel.disabled = true;    
    
    PRINTINGDIALOG_CANCEL_oldOnMouseClick = closelLabel.onclick;
    closelLabel.onclick = null;
    closelLabel.disabled = true;
}

// ****** KEY EVENTS *******************************
// **
// **
function PRINTINGDIALOG_stopEvent(e) {
	if(!e) var e = window.event;
	
	//e.cancelBubble is supported by IE - this will kill the bubbling process.
	e.cancelBubble = true;
	e.returnValue = false;

	//e.stopPropagation works only in Firefox.
	if (e.stopPropagation) {
		e.stopPropagation();
		e.preventDefault();
	}
	return false;
}

function PRINTINGDIALOG_OnKeyDown(e)
{
  if (e.keyCode == 27) 
  {
    PRINTINGDIALOG_Close();
    PRINTINGDIALOG_stopEvent(e);
  } 
  else if (e.keyCode == 13) 
  {
      PRINTINGDIALOG_callServer('PRINT');
      PRINTINGDIALOG_stopEvent(e);
  }
}

function PRINTINGDIALOG2_OnKeyDown(e)
{
  if (e.keyCode == 27) 
  {
    PRINTINGDIALOG2_Close();
    PRINTINGDIALOG_stopEvent(e);
  } 
}

// ************************************************