﻿var outerLayout;
var pageLayout;
var centerLayout;
var contentLayout;
var contentBottomLayout;
var actionsHelpLayout;

var northHeight = 92;
var southHeight = 27;
var leftWidth = 200;
var leftIsClosed = false;
var layoutHandlerURL;
var baseHandlerURL;

var MWSLayout = {};
MWSLayout.PageId = 0;
MWSLayout.Left = {};
MWSLayout.Left.TogglerTooltipToClose = '';
MWSLayout.Left.TogglerTooltipToOpen = '';
MWSLayout.Left.Toggler = null;
MWSLayout.Left.TogglerBtn = null;

MWSLayout.Left.saveState = function() {
	var result = $.ajax({
		url: layoutHandlerURL,
		type: 'GET',
		data: { 'leftIsClosed': +outerLayout.state.west.isClosed, 'pageId': MWSLayout.PageId },
		cache: false,
		async: true
	});
}

MWSLayout.Left.close = function() {
    if ($('#divHelper').is(':visible')) {
        var handlerUrl = "../Handlers/SmartHelperHandler.ashx?" + Math.random();
        var resourceMessage = "SiteLayout.InteractiveHelp.Close";
        $.get(handlerUrl,
            { resourceid: resourceMessage },
            function(data) {
                if (data.dontshowchecked) {
                    ConfirmDlg.ShowDlg(data.result, 'Interactive Help', 'DLG_YES_NO_CHECKBOX',
                    function(IsConfirmed) {
                        if (IsConfirmed) {
                            if ($('input:checkbox', $('#chkMsgBoxDontShowMessageAgain')).is(':checked')) {
                                $.get(handlerUrl, {
                                    resourceid: resourceMessage,
                                    dontshowchecked: true
                                });
                            }
                            closeLeftPanel(true);                            
                        }
                    });
                } else
                    closeLeftPanel(true);                    
            });
        }
        else
            closeLeftPanel(false)
}

function closeLeftPanel(isSmartHelperClose) {
    if (isSmartHelperClose) {
        //$('img[id="imgStop"]').click();
        try {
            ctlSmartHelper.stopScenario();
            ctlSmartHelper.toggleHelper();
        } catch (e) {}
    }
    outerLayout.close('west');
    MWSLayout.Left.TogglerBtn.hide().removeClass('left-pane-toggler-btn').addClass('left-pane-toggler-btn-e').attr('title', MWSLayout.Left.TogglerTooltipToOpen);
    $(outerLayout.panes.center).addClass('full-sized');
    setTimeout(function() { MWSLayout.Left.TogglerBtn.pinToOnce(MWSLayout.Left.Toggler); MWSLayout.Left.TogglerBtn.show(); }, 250);
    var w = $('.greetingBox').width();
    $('.greetingBox').width(w).prependTo('.sub_header');

    $('#gwp').removeClass('greetingWorkProgrammeHover');
    $('div[id$=ctlWorkProgramme]').css('display', 'none');
    
    MWSLayout.resize();
    MWSLayout.Left.saveState();
    
}

MWSLayout.Left.open = function() {
	outerLayout.open('west');
	MWSLayout.Left.TogglerBtn.hide().removeClass('left-pane-toggler-btn-e').addClass('left-pane-toggler-btn').attr('title', MWSLayout.Left.TogglerTooltipToClose); ;
	setTimeout(function() { MWSLayout.Left.TogglerBtn.pinToOnce(MWSLayout.Left.Toggler); MWSLayout.Left.TogglerBtn.show(); }, 250);
	$(outerLayout.panes.center).removeClass('full-sized');
	$('.sub_header .greetingBox').prependTo('.left_top');
	MWSLayout.resize();
	MWSLayout.Left.saveState();
}

MWSLayout.Left.toggle = function() {
	if (outerLayout.state.west.isClosed)
		MWSLayout.Left.open();
	else
		MWSLayout.Left.close();
}

MWSLayout.Left.addToggler = function() {
	var pane = $(outerLayout.panes.center);
	if (outerLayout.panes.west && !MWSLayout.Left.Toggler) {
		MWSLayout.Left.Toggler = $('<div>', { className: 'left-pane-toggler' }).appendTo(pane);

		MWSLayout.Left.TogglerBtn = $('<div>', { className: 'left-pane-toggler-btn', click: MWSLayout.Left.toggle, title: MWSLayout.Left.TogglerTooltipToClose });
		setTimeout(function() { MWSLayout.Left.TogglerBtn.pinTo(MWSLayout.Left.Toggler) }, 250);
	}
}

MWSLayout.resize = function() {
    //debugger;
    if ($('#hdnMasterName').val() == 'MWS')
        MWSLayout.setMwsBodyHeight();
    else
        setDefBodyHeight();
}

MWSLayout.exist = function() {
	return (outerLayout != null);
}

function blockScreen() {
	$.blockUI({
		overlayCSS: {
			backgroundColor: '#000',
			opacity: 0
		},
		css: {
			top: ($(window).height() - 150) / 2 + 'px',
			left: ($(window).width() - 150) / 2 + 'px',
			border: '1px solid #697077',
			backgroundColor: '#EEEEEE',
			color: '#000',
			width: '150px',
			height: '150px'
		},
		message: $("#busyScreen")
	});
}

function unblockScreen() {
	renderLayout();
	$.unblockUI();
}

var resizeFlag = false;
var resizeTimer = null;

$(document).ready(function() { $(window).bind('resize', MWSLayout.resize); });

function resizeWidow() {
	if (resizeTimer) clearTimeout(resizeTimer);
	resizeTimer = setTimeout(resizeLayout, 200);

}

function renderLayout() {
	if ($('#hdnMasterName').val() == 'MWS')
		renderMWSLayout();
	else
		renderDefaultLayout();
}

function resizeLayout() {
	if (resizeFlag)
		return;
	renderLayout();
}


/*--- Render the Default.master layout ---*/
function renderDefaultLayout() {

	outerLayout = $('div.site_page').layout({
		north__paneSelector: ".header",
		center__paneSelector: ".center_def",
		south__paneSelector: ".footer",

		north__size: northHeight,
		north__resizable: false,
		north__togglerLength_open: 0,
		north__spacing_open: 0,
		north__resizerClass: "resizerHorizontal",

		center__size: 1000,

		south__size: southHeight,
		south__resizable: false,
		south__togglerLength_open: 0,
		south__spacing_open: 0,
		south__resizerClass: "resizerHorizontal",

		west__isHidden: true,
		east__isHidden: true,
		enableCursorHotkey: false
	});

	setDefBodyHeight();

	$('div.footer_bg').css({ zIndex: 0 });
	$('div.site_page').css({ zIndex: 1 });

}

function setDefBodyHeight() {
	var h1 = $('div.header').outerHeight(true);
	var h2 = $('div.workspaceInner').outerHeight(true);
	var h3 = $('div.footer').outerHeight(true);

	var h4 = $(window).height();

	var h5 = h1 + h2 + h3 + 15;

	var h6;

	if (h4 > h5) {
		h6 = h4;
		$('body').height(h4);
		$('body').css('overflow-y', 'hidden');
		$('html').css('overflow-y', 'hidden');
	}
	else {
		h6 = h5;
		$('body').height(h5);
		$('body').css('overflow-y', 'auto');
		$('html').css('overflow-y', 'auto');
	}

	$('form').css('overflow-y', 'hidden');

	resizeFlag = true;
	if (outerLayout != null)
		outerLayout.resizeAll();
	resizeFlag = false;

	var footer_bg = $('div.footer_bg');
	footer_bg.css({ zIndex: 0, top: h6 - 27 });

	$('div.site_page').css({ zIndex: 1 });
}

/*--- Render the MWS.master layout ---*/
function renderMWSLayout() {

	outerLayout = $('div.site_page').layout(
	{
		center__paneSelector: ".center_mws",
		west__paneSelector: ".left",
		east__paneSelector: ".right",
		north__paneSelector: ".header",
		south__paneSelector: ".footer",

		north__size: northHeight,
		north__resizable: false,
		north__togglerLength_open: 0,
		north__resizerClass: "resizerHorizontal",
		north__spacing_open: 0,

		south__size: southHeight,
		south__resizable: false,
		south__togglerLength_open: 0,
		south__spacing_open: 1,
		south__resizerClass: "resizerHorizontal",

		west__resizable: false,
		west__size: leftWidth,
		west__spacing_open: 0,
		west__spacing_closed: 0,

		east__resizable: false,
		east__togglerLength_open: 0,
		east__spacing_open: 0,
		east__size: 5,
		enableCursorHotkey: false
	});

	$('div.left_top').css({ 'margin-left': 5 });
	$('div.left_bottom').css({ 'margin-left': 5 });
	MWSLayout.Left.addToggler();
	if (leftIsClosed) MWSLayout.Left.close();
	setMwsBodyHeight();
}

function setMwsBodyHeight() {
	MWSLayout.resize();
}

MWSLayout.setMwsBodyHeight = function() {
    //debugger;
    resizeFlag = true;

    $('#workspace').height('auto');
    var h5 = $('div.footer').outerHeight(true);

    var window_height = $(window).height();
    var window_width = $(window).width();

    var right_height = 100;
    var cPanel = $('.center_mws .pane-content');
    if (cPanel.length > 0)
        right_height = cPanel.outerHeight(true) + cPanel.offset().top + h5 + 10;

    var left_height = right_height;
    var lPanelTop = $('.left_top');
    var lPanelBottom = $('.left_bottom');

    if (lPanelTop.length > 0 && lPanelBottom.length > 0) {
        var left_top_height = lPanelTop.outerHeight(true);
        var left_bottom_height = lPanelBottom.outerHeight(true);
        var left_wp_height = left_bottom_height;

        var lPanelWorkProgram = lPanelBottom.find('.leftWorkProgram');
        if (lPanelWorkProgram.length > 0) {
            left_wp_height = lPanelWorkProgram.outerHeight(true);
            left_bottom_height = Math.max(left_bottom_height, left_wp_height);
        }

        left_height = left_top_height + left_bottom_height + lPanelTop.offset().top + h5;
    }

    var content_height = Math.max(left_height, right_height);
    var actual_height = Math.max(window_height, content_height);

    if (outerLayout != null) {
        $('div.site_page').height(actual_height);
        $('body').height(actual_height);
        outerLayout.resizeAll();

    }
    //Fix content height
    var innerH = +$('.sub_header').outerHeight() + +$('.filters').outerHeight() + +$('#workspace').outerHeight();
    var outerH = +$('.center_mws').height();
    if (innerH < outerH)
        $('#workspace').height($('#workspace').height() + (outerH - innerH));
    else
        $('#workspace').height('auto');

    //Fix footer
    var footer_bg = $('div.footer_bg');
    footer_bg.css({ zIndex: 0, top: $('div.site_page').height() - 27 });

    $('div.site_page').css({ zIndex: 1 });

    resizeFlag = false;

    //hot interactive helper fix
    if (typeof ctlSmartHelper != "undefined") {
        ctlSmartHelper.FreeBoxList.refreshAll();
    }
}

function saveState(p_leftWidth, p_leftIsClosed) {
	var result = $.ajax({
		url: layoutHandlerURL,
		type: "GET",
		data: 'leftWidth=' + p_leftWidth + "&leftIsClosed=" + p_leftIsClosed,
		cache: false,
		async: false
	}).responseText;
}



// Track client events - close browser and leave site
var validNavigation = false;
var wndX, wndY;

function bindEvents() {
    $(document).bind('keydown', function(e) {
        if (e.keyCode == 116) {
            validNavigation = true;
        }
    });

    $("a").bind("click", function() {
      //  debugger;
        var urlFrom = $(location).attr('href');
        var urlTo = $(this).attr('href');

        if (typeof (urlTo) != "undefined" && urlTo.length > 0) {
            if (!urlTo.startsWith('.') && !urlTo.startsWith('..') && !urlTo.startsWith('~') && !urlTo.startsWith('/') && !urlTo.startsWith('javascript')) {
                trackClientEvent('LeaveSite');
            }
        }
        validNavigation = true;
    });

    $("area").bind("click", function() {
      //  debugger;
        var urlFrom = $(location).attr('href');
        var urlTo = $(this).attr('href');

        if (typeof (urlTo) != "undefined" && urlTo.length > 0) {
            if (!urlTo.startsWith('.') && !urlTo.startsWith('..') && !urlTo.startsWith('~') && !urlTo.startsWith('/') && !urlTo.startsWith('javascript')) {
                trackClientEvent('LeaveSite');
            }
        }
        validNavigation = true;
    });


    $("form").bind("submit", function() {
        validNavigation = true;
    });

    $("input[type=submit]").bind("click", function() {
        validNavigation = true;
    });

    $(document).mousemove(function(e) {
        wndX = e.pageX;
        wndY = e.pageY;
    });
    
    window.onbeforeunload = function() {
        if (!validNavigation) {
            if (wndY <10 )
                trackClientEvent('CloseBrowser');

            if (typeof (wndY) == "undefined" || wndY > 0)
                trackClientEvent('LeaveSite');
        }
        else {
        }
    }


}


function trackClientEvent(eventName) {
    if (typeof (baseHandlerURL) == 'undefined')
        return;
        
    $.ajax({
        url: baseHandlerURL+'/TrackClientEvents.ashx?event='+eventName+'&' + Math.random(),
        type: 'GET',
        cache: false,
        success: function() {  },
		error: function() {  },
		complete: function() { }
    });
        
    
}


$(document).ready(function() {
    bindEvents();
});


