﻿var _expanding = false;
var _expandedDuringThisSession = false;
var _currentMenu = null;

function RadPanel_ClientItemExpand(sender, eventArgs) {
    var height = getHeightRadControl(eventArgs.get_item(), false);

    if (height > originalHeight) {
    	animateAllHeights(height);
    	_expanding = true;
    	_expandedDuringThisSession = true;
    }
    else {
    	_expandedDuringThisSession = false;
    }

    closeMenu();
}

function RadPanel_ClientItemCollapse(sender, eventArgs) {
	var item = eventArgs.get_item();

	if (_expandedDuringThisSession) {
		var height = getHeightRadControl(item, true);

		if (height < originalHeight) {
			height = originalHeight;
		}

		animateAllHeights(height);
		_expanding = false;
	}

	item.set_clickedCssClass("");
}

function getHeightRadControl(item, minus) {
    var height = $('#columnOneTop .RadPanelBar .rpRootGroup').height();
    //var heightChildren = item._children.get_count(); - Doesn't work in Chrome!!!
    var heightChildren = item._itemData.length; // Tested Chrome, IE8, Firefox

	if (minus) {
		heightChildren = heightChildren * -23;
	} else {
		heightChildren = heightChildren * 23;
	}

	height += (heightChildren + 40);

	return height;
}

function animateAllHeights(height) {
    animateHeight($('#mainInner'), height);
    
    animateHeight($('#columnOne'), height);
	animateHeight($('#columnOneTop'), height - 18);
	animateHeight($('#columnTwo'), height);

	animateHeight($('#contentTextAreaSub'), height);
	animateHeight($('#contentTextAreaSub').find('#columnThree'), height);
	animateHeight($('#contentTextAreaSub').find('#columnThreeInner'), height);
}

function animateHeight(control, height) {
    if (control != null) {
        if (_expanding) {
        	control.height(height);
        }
        else {
        	//control.animate({ "height": height }, "slow");
        	control.height(height);
        }
	}
}

function RadPanel_ClientMouseOver(sender, eventArgs) {
    var item = eventArgs.get_item();
    var cssClass = item.get_cssClass();
    var value = item.get_value();
    var clickedClass = item.get_clickedCssClass();

    if (_currentMenu != null) {
    	if (_currentMenu.css("display") == "block") {
    		_currentMenu.stop(true, true).hide();
    	}
    }

    if ((value != null) && (cssClass.indexOf("SubPanelWithMorePanels") != -1) && (!item._expanded) && (clickedClass != "ParentOpen")) {
        var id = sender.get_id();
        var element = item.get_element();
        var clientRects = element.getBoundingClientRect();
        var browser = $.browser;
        var top = clientRects.top;
        var left = clientRects.right;

        if (browser.msie && browser.version <= '7.0') {
        	top -= 2;
        	left -= 2;
        }

        _currentMenu = $('.' + value);
        _currentMenu.css("top", top);
        _currentMenu.css("left", left);

        if (browser.msie) {
        	_currentMenu.css("display", "block");
        }

        _currentMenu.css("position", "absolute");

        _currentMenu.stop(true, true);
        _currentMenu.fadeIn(1000);
    }
}

function NavBarRadMenu_ClientItemFocus(sender, eventArgs) {
    var element = sender.get_element();

    var handler = function (e) {
    	var relatedTarget = e.rawEvent.relatedTarget || e.rawEvent.toElement;

    	if (!$telerik.isDescendantOrSelf(element, relatedTarget)) {
    		closeMenu();

    		return;
    	}
    };

    $addHandler(element, "mouseout", handler);
}

function closeMenu() {
	if (_currentMenu != null) {
		if (_currentMenu.css("display") == "block") {
			_currentMenu.stop(true, true).hide();
		}
	}
}
