﻿
var _blnMainFrameLoaded = false;
var _strSelectedID = '';
var _objMenu = null;
var _arrExpandedNodes = new Array();
var _blnEditError = false;


var _objTimerID = null;
var _strExpandID = null;
var _objExpandTimerID = null;
var _arrCollapseList = new Array();

function startSlideAnimation(strID, blnReverse) {
  
    var divDropDownMask = document.getElementById('divDropDown_' + strID);
    var divMenuContainer = divDropDownMask.firstChild;

    var objAnimation = new ElementAnimation(divMenuContainer);
    objAnimation.fromY = divMenuContainer.offsetHeight * -1;
    objAnimation.toY = 0;
    objAnimation.animateReverse = blnReverse;
    objAnimation.ClientEventHandlers.onAnimationComplete = function () { slideAnimationComplete(strID, blnReverse) };
    objAnimation.accelerationMode = 1;
    objAnimation.duration = 300;

    divMenuContainer.style.overflow = 'visible';

    _strExpandID = null;
    _objExpandTimerID = null;

    if (blnReverse)
        _arrCollapseList[strID] = objAnimation.animate();
    else {
        _strExpandID = strID;
        _objExpandTimerID = objAnimation.animate();
    }
}

function slideAnimationComplete(strID, blnReverse) {
    var divDropDownMask = document.getElementById('divDropDown_' + strID);

    if (blnReverse && _arrCollapseList[strID]) {
        divDropDownMask.style.display = 'none';
        delete _arrCollapseList[strID];
    }
}


this.ElementAnimation = function (objElement) {
    var _objInstance = this;
    var _intStartTime = null;
    var _fltQuotient = 0;

    this.timerID = null;
    this.element = objElement;
    this.fromY = null;
    this.toY = null;
    this.duration = 300;
    this.accelerationMode = 0;
    this.animateReverse = false;

    this.ClientEventHandlers = new function () {
        this.onAnimationFrame = null;
        this.onAnimationComplete = null;
    }

    this.animate = function () {
        if (_objInstance.accelerationMode == 0)
            _fltQuotient = 1 / _objInstance.duration;
        else
            _fltQuotient = Math.PI / (2 * _objInstance.duration);

        if (_objInstance.framesPerSecond > 500)
            _objInstance.framesPerSecond = 500;

        _intStartTime = new Date().getTime();
        _objInstance.timerID = setInterval(function () { animate(); }, 10);
        animate();

        return _objInstance.timerID;
    }

    function animate() {
        var intElapsedTime = new Date().getTime() - _intStartTime;
        var intValue = 0;
        var intScrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
        var intScrollTop = document.documentElement.scrollTop || document.body.scrollTop;

        if (intElapsedTime >= _objInstance.duration)
            clearInterval(_objInstance.timerID);

        if (_objInstance.fromY != _objInstance.toY) {
            intValue = getTransitionValue(_objInstance.fromY, _objInstance.toY, intElapsedTime);
            _objInstance.element.style.top = intValue + 'px';
        }

        if (intElapsedTime < _objInstance.duration) {
            if (_objInstance.ClientEventHandlers.onAnimationFrame)
                _objInstance.ClientEventHandlers.onAnimationFrame(_objInstance.element);
        }
        else {
            if (_objInstance.ClientEventHandlers.onAnimationComplete)
                _objInstance.ClientEventHandlers.onAnimationComplete(_objInstance.element);
        }
    }

    function getTransitionValue(intFromValue, intToValue, intElapsedTime) {
        var intValue = 0;
        var intFrameValue = 0;
        var fltPercentage = 1;

        if (intElapsedTime < _objInstance.duration) {
            if (_objInstance.accelerationMode == 0)
                fltPercentage = (intElapsedTime * _fltQuotient);
            else if (_objInstance.accelerationMode == 1)
                fltPercentage = Math.abs(Math.sin(intElapsedTime * _fltQuotient));
            else
                fltPercentage = (1 - Math.abs(Math.cos(intElapsedTime * _fltQuotient)));
        }

        if (intToValue > intFromValue) {
            if (intElapsedTime < _objInstance.duration)
                intFrameValue = Math.round(fltPercentage * (intToValue - intFromValue));
            else
                intFrameValue = (intToValue - intFromValue);

            if (_objInstance.animateReverse)
                intValue = intToValue - intFrameValue;
            else
                intValue = intFromValue + intFrameValue;
        }
        else {
            if (intElapsedTime < _objInstance.duration)
                intFrameValue = Math.round(fltPercentage * (intFromValue - intToValue));
            else
                intFrameValue = (intFromValue - intToValue);

            if (_objInstance.animateReverse)
                intValue = intToValue + intFrameValue;
            else
                intValue = intFromValue - intFrameValue;
        }

        return intValue;
    }
}

function showMenu(strID) {
  
    var divDropDownMask = document.getElementById('divDropDown_' + strID);
    var divMenuContainer = divDropDownMask.firstChild;
    var divEntrance = document.getElementById('divEntrance_' + strID);
    var intScrollTop = document.body.scrollTop;

    hideMenuStop();

    if (strID != _strExpandID) {
        hideMenu();

        if (_arrCollapseList[strID]) {
            clearInterval(_arrCollapseList[strID]);
            delete _arrCollapseList[strID];
        }

        divDropDownMask.style.display = '';
        divDropDownMask.style.width = divMenuContainer.offsetWidth + 'px';
        divDropDownMask.style.height = divMenuContainer.offsetHeight + 'px';
        divDropDownMask.style.left = divEntrance.getBoundingClientRect().left -5 + 'px';
       // divDropDownMask.style.top = divEntrance.getBoundingClientRect().top + intScrollTop + divEntrance.offsetHeight -5 + 'px';
		divDropDownMask.style.top = '111px';
        startSlideAnimation(strID);
    }
}

function hideMenuStart() {
    _objTimerID = setTimeout(function () { hideMenu(); }, 300);
}

function hideMenuStop() {
    clearTimeout(_objTimerID);
    _objTimerID = null;
}

function hideMenu() {
    if (_strExpandID) {
        clearInterval(_objExpandTimerID);
        startSlideAnimation(_strExpandID, true);
    }
}


function initPage() {
    addSearchBox('', 'divSearchBoxHolder', '&nbsp');
    addPathIndicator('divPathIndicator');
}

function frameLoaded(frame)
{
    if (frame.name == "Main")
    {
        toggleMenuTree();
        stretchPage();

        try
        {
            if (window.addEventListener)
                frame.contentWindow.document.addEventListener('onkeydown', keyDownhandler, false);
            else
                frame.contentWindow.document.attachEvent('onkeydown', keyDownhandler);
        }
        catch (ex) { }
    }
}

function toggleMenuTree()
{
    var divMenu = document.getElementById('objMenuTree_DIV');

    if (divMenu)
    {
        if (onStartPage())
        {
            divMenu.style.display = 'none';
        }
        else
        {
            divMenu.style.display = '';
        }
    }
}

function onStartPage()
{
    if (window.top.location.href.toLowerCase().indexOf('menuitemid=') == -1)
    {
        return true;
    }
    try
    {
        if (document.getElementById('frmMain').contentWindow.location.href.toLowerCase().indexOf(_strStartPageID) > -1)
            return true;
        else
            return false;
    }
    catch (ex)
    {
        return false;
    }
}

function openTree()
{
    var arrOpenNodes = _strNodesToOpen.split('#');
    var strNodeID = '';
    var intIndex = 0;
    var trChild = null;
    var aItem = null;
    var intLevel = 0;

    if (!_strNodesToOpen)
        return;

    for (intIndex = 0; intIndex < arrOpenNodes.length; intIndex++)
    {
        strNodeID = arrOpenNodes[intIndex];
        intLevel = (strNodeID.length - 15) / 4;
        trChild = document.getElementById('objMenuTree_' + strNodeID + '_TRCHILD');
        aItem = document.getElementById('objMenuTree_' + strNodeID + '_A');

        if (trChild)
        {
            Base.addCssClass(aItem, 'Expanded');
            _arrExpandedNodes[intLevel] = strNodeID;
            MenuTree_OpenNode(aItem, intIndex);
        }

        if (intIndex == arrOpenNodes.length - 1)
        {
            Base.addCssClass(aItem, 'Selected');
            _strSelectedID = strNodeID;
        }
    }
}

function menuClick(url,frame,id)
{
    if (!url)
        return;

    if (frame == 0)
    {
        window.top.location.href = url;
    }
    else if (frame == 1)
    {
        window.open(url);
    }
    else
    {
        window.top.location.href = '../Default.aspx?MenuItemID=' + id;
    }
}

function treeClick(strID, strURL, intFrame, intChildCount)
{
    var aItem = document.getElementById('objMenuTree_' + strID + '_A');
    var intLevel = (strID.length - 15) / 4;

    if (_strSelectedID != strID && strURL)
    {
        if (_strSelectedID)
            Base.removeCssClass(document.getElementById('objMenuTree_' + _strSelectedID + '_A'), 'Selected');

        Base.addCssClass(aItem, 'Selected');
    }

    if (aItem.className.indexOf(' Expanded') > -1)
    {
        Base.removeCssClass(aItem, 'Expanded');
        _arrExpandedNodes[intLevel] = null;
    }
    else
    {
        if (_arrExpandedNodes[intLevel])
            Base.removeCssClass(document.getElementById('objMenuTree_' + _arrExpandedNodes[intLevel] + '_A'), 'Expanded');

        if (intChildCount > 0)
        {
            Base.addCssClass(aItem, 'Expanded');
            _arrExpandedNodes[intLevel] = strID;
        }
    }

    if (strURL)
    {
        _strSelectedID = strID;

        if (intFrame == 0)
            window.top.location.href = strURL;
        else if (intFrame == 1)
            window.open(strURL);
        else
            window.Main.location.href = strURL;
    }
}

function stretchPage()
{
    updateHeight();
}

function updateHeight()
{

    var frmMain = document.getElementById('frmMain');
	frmMain.style.height = 1;
    var divTopBar = document.getElementById('divTopBar');
    var divBottomBar = document.getElementById('divBottomBar');
    var intMinHeight = Base.getWindowHeight() - (divTopBar.offsetHeight + 40);
    var intMainHeight = 0;
    var intScrollTop = 0;
    
    document.body.style.height = Base.getWindowHeight() + 'px';
    if (frmMain)
        frmMain.height = '100%';

    try
    {
        if (frmMain.contentWindow && frmMain.contentWindow.document && frmMain.contentWindow.document.body)
        {
            intScrollTop = frmMain.contentWindow.document.body.scrollTop;
            intMainHeight = frmMain.contentWindow.document.body.scrollHeight;
        }
    }
    catch (ex)
    {
        intMainHeight = intMinHeight + 400;
    }


    if (intMainHeight < intMinHeight)
        intMainHeight = intMinHeight;


    frmMain.style.height = intMainHeight + "px" ;


    try
    {
        if (frmMain && frmMain.contentWindow && frmMain.contentWindow.document && frmMain.contentWindow.document.body)
        {
            frmMain.contentWindow.document.body.scrollTop = 0;

            if (intScrollTop > 0)
                document.body.scrollTop = intScrollTop + intMainY;
        }
    }
    catch (ex)
    {

    }
}

function search()
{
    if (document.getElementById('txtSearchBox').value != "")
        window.top.Eskion.Main.location.href = 'search/searchresults1.aspx?Q=' + encodeURIComponent(document.getElementById('txtSearchBox').value) + '&applications=true';
}

function searchBoxFocus(txtSearchBox)
{
    if (txtSearchBox.value == 'vul uw zoekterm in')
        txtSearchBox.value = '';

    if (txtSearchBox.className.indexOf(' Active') == -1)
        txtSearchBox.className += ' Active';
}

function searchBoxBlur(txtSearchBox)
{
    if (txtSearchBox.value == '')
    {
        txtSearchBox.value = 'vul uw zoekterm in';
        txtSearchBox.className = txtSearchBox.className.replace(' Active', '');
    }
}

function login()
{
    var top = (screen.height - 240) / 2;
    var left = (screen.width - 350) / 2;
    window.open('login/login.aspx', 'Login', 'top=' + top + ',left=' + left + ',width=350,height=240,toolbar=no,menubar=no,status=no,resizable=no,scrollbars=no');
}

function logoff()
{
    window.top.location.href = 'login/logoff.aspx';
}

function printDocument()
{
    window.top.Eskion.Main.focus();
    window.top.Eskion.Main.print();
}

function reLogin()
{
    window.top.location.href = 'login/relogin.aspx';
}

function keyDownhandler(event)
{
    var keyCode = event.keyCode;

    switch (keyCode)
    {
        case 33: //PageUp
            document.parentWindow.scrollBy(0, -300);
            break;
        case 34: //PageDown
            document.parentWindow.scrollBy(0, 300);
            break;
        case 35: //End
            document.parentWindow.scrollBy(0, document.body.scrollHeight);
            break;
        case 36: //Home
            document.parentWindow.scrollTo(0, 0);
            break;
        case 37: //Left
            document.parentWindow.scrollBy(-100, 0);
            break;
        case 38: //Up
            document.parentWindow.scrollBy(0, -100);
            break;
        case 39: //Right
            document.parentWindow.scrollBy(100, 0);
            break;
        case 40: //Down
            document.parentWindow.scrollBy(0, 100);
            break;
    }
}

function OpenLogin()
{
    var top = (screen.height - 240) / 2;
    var left = (screen.width - 350) / 2;
    window.open('login/login.aspx', 'Login', 'top=' + top + ',left=' + left + ',width=350,height=240,toolbar=no,menubar=no,status=no,resizable=no,scrollbars=no');
}

function ack()
{
    alert('Error');
    _blnEditError = true;
    return true;
}

function EditPageClick()
{
    if (!window.Main)
    {
        alert('no main frame');
        return (false);
    }
    else
    {
        window.onerror = ack;
        //alert(window.parent.Main.location.href);

        var url = window.Main.location;

        //window.onerror = null;
        if (!_blnEditError)
        {
            url = url.href.toUpperCase();

            if (url.indexOf('/LOADER.ASPX?DOCUMENTID=') != -1)
            {
                Form1.hidDocUrl.value = url;
            }
            else
            {
                if (url.indexOf('/APPLICATIONS/CMSVIEWAPPLICATION/CURRENTARCHIVEDVIEW.ASPX?') != -1)
                {
                    url = window.Main.previewframe.location.href.toUpperCase();
                    if (url.indexOf('/LOADER.ASPX?DOCUMENTID=') != -1)
                    {
                        Form1.hidDocUrl.value = url;
                        return (true);
                    }
                }
                else
                {
                    alert('application');
                    return (false);
                }
            }
            return true;
        }
        else
        {
            return false;
        }

    }
}

function isIE6() {
    var versionIE = getInternetExplorerVersion();
    return versionIE > 0 && versionIE < 7;
}
function getInternetExplorerVersion()
// Returns the version of Windows Internet Explorer or a -1
// (indicating the use of another browser).
{
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    }
    return rv;
}
