﻿function showModalDialog(url, windowName, title, isModal, width, height) {
    var wnd = radopen(url, windowName);
    wnd._showContentDuringLoad = false;
    wnd.set_behaviors(Telerik.Web.UI.WindowBehaviors.Close);

	if(title)
	    wnd.set_title(title);
	if (isModal)
	    wnd.set_modal(isModal);
	if (width)
	    wnd.set_width(width);
	if (height)
	    wnd.set_height(height);

	wnd.set_status('');
	wnd.center();
	
	return false;
}

function closeModalDialog(refreshParent) {
    var oWindow = null;
    
    if (window.radWindow)
        oWindow = window.radWindow;
    else if (window.frameElement && window.frameElement.radWindow)
        oWindow = window.frameElement.radWindow;

    if (oWindow != null) {
        oWindow.close();
        // Check to see if the parent page should be refreshed
        if (refreshParent && refreshParent == true) {
            oWindow.BrowserWindow.location.href = oWindow.BrowserWindow.location.href;
        }
    }
        
    return false;
}

function showLocationPanel(panelClientId, itemText) {
    var panel = $find(panelClientId);
    var itemToExpand = panel.findItemByText(itemText);
    
    panel.trackChanges();
    itemToExpand.expand();
    panel.commitChanges();
    
    return false;
}

function switchLocationEventPanel(sender, args) {
    if (panels && (args.get_item().get_value() == "long")) {
        for (i = 0; i < panels.length; i++) {
            panel = $find(panels[i]);
            if (panel) {
                var items = panel.get_items();
                var item = items.getItem(1);
                if (item.get_expanded()) {
                    item.collapse();
                    items.getItem(0).expand();
                }
            }
        }
    }
}

function doUpdateBreadcrumbs() {
    if (document.getElementById("breadcrumbId")) {
        SnowfriendsServices.BreadcrumbService.UpdateBreadcrumbs(document.getElementById("breadcrumbId").value);
    }
}

function onRadProxyRequestStart(sender, eventArgs) {
    for (var i = 0; i < sender.AjaxSettings.length; i++) {
        if (isElementIdInParentNodeList(sender.AjaxSettings[i].InitControlID, eventArgs.EventTargetElement)) {
            // Get the default loading panel if it is set
            var defaultLoadingPanel = $get(sender._defaultLoadingPanelID);

            var currentSetting = sender.AjaxSettings[i];
            for (var j = 0; j < currentSetting.UpdatedControls.length; j++) {
                var targetPanel = $get(currentSetting.UpdatedControls[j].ControlID);
                var loadingPanel = null;
                if (currentSetting.UpdatedControls[j].PanelID && currentSetting.UpdatedControls[j].PanelID != '') {
                    loadingPanel = $get(currentSetting.UpdatedControls[j].PanelID);
                }
                if (!loadingPanel) {
                    loadingPanel = defaultLoadingPanel;
                }
                // Only do something if the locading panel could be found
                if (loadingPanel && targetPanel) {
                    // Measure the targetPanel
                    var bounds = Sys.UI.DomElement.getBounds(targetPanel);
                    if (bounds && bounds.width > 0 && bounds.height > 0) {
                        loadingPanel.style.width = bounds.width + 'px';
                        loadingPanel.style.height = bounds.height + 'px';
                        // If there is an image inside the panel, position it in the center
                        var images = loadingPanel.getElementsByTagName('img');
                        if (images && images.length > 0) {
                            // Only center the first image found
                            images[0].style.paddingTop = ((bounds.height - images[0].height) / 2) + 'px';
                        }
                    }
                }
            }
            break;
        }
    }
}

function isElementIdInParentNodeList(id, element) {
    if (!element || !id || id == '') { return false; }
    
    var currentNode = element;
    while (currentNode) {
        if (currentNode.id && currentNode.id == id) { return true; }
        currentNode = currentNode.parentNode;
    }
    return false;
}

var registeredShowPanels = new Array();
var shadowsHaveBeenProcessed = false;
var handlersAdded = false;
var resizeHandler = null;
var unloadHandler = null;
var timeoutSet = null;

function ie6Shadow(elementID, shadowLeft, shadowRight, offset) {
    if (shadowsHaveBeenProcessed) {
        recalcIE6Shadow(elementID, shadowLeft, shadowRight, offset);
    } else {
        registeredShowPanels.push({
            ElementID: elementID,
            ShadowLeft: shadowLeft,
            ShadowRight: shadowRight,
            Offset: offset
        });
    }
}

function recalcAllIE6Shadows() {
    for (var i = 0; i < registeredShowPanels.length; i++) {
        recalcIE6Shadow(registeredShowPanels[i].ElementID, registeredShowPanels[i].ShadowLeft, registeredShowPanels[i].ShadowRight, registeredShowPanels[i].Offset);
    }

    if (!handlersAdded) {
        handlersAdded = true;
        resizeHandler = Sys.UI.DomEvent.addHandler(window, "resize", recalcAllIE6ShadowsTimeout);
        unloadHandler = Sys.UI.DomEvent.addHandler(window, "unload", clearIE6Handlers);
    }
}

function recalcAllIE6ShadowsTimeout() {
    if (!timeoutSet) { window.clearTimeout(timeoutSet); }
    timeoutSet = window.setTimeout('recalcAllIE6Shadows();', 20);
}

function clearIE6Handlers() {
    Sys.UI.DomEvent.removeHandler(window, "resize", resizeHandler);
    Sys.UI.DomEvent.removeHandler(window, "unload", unloadHandler);
}

function recalcIE6Shadow(elementID, shadowLeft, shadowRight, offset) {
    var element = $get(elementID);
    if (!element) { return; }

    var shadowElements = new Array();
    if (shadowLeft) {
        shadowElements.push({
            CssClassName: 'shadowLeft',
            Element: null,
            TopElement: null,
            BottomElement: null
        });
    }
    if (shadowRight) {
        shadowElements.push({
            CssClassName: 'shadowRight',
            Element: null,
            TopElement: null,
            BottomElement: null
        });
    }
    var parentTR = element.parentNode.parentNode;

    for (var j = 0; j < shadowElements.length; j++) {
        var shadowElement = shadowElements[j];
        for (var i = 0; i < parentTR.childNodes.length; i++) {
            if (parentTR.childNodes[i].nodeType == 1 && Sys.UI.DomElement.containsCssClass(parentTR.childNodes[i], shadowElement.CssClassName)) {
                shadowElement.Element = parentTR.childNodes[i];
                break;
            }
        }

        if (shadowElement.Element) {
            // Get the top and bottom now
            var childNodes = shadowElement.Element.getElementsByTagName('div');
            for (var i = 0; i < childNodes.length; i++) {
                if (Sys.UI.DomElement.containsCssClass(childNodes[i], 'shadowTop')) {
                    shadowElement.TopElement = childNodes[i];
                } else if (Sys.UI.DomElement.containsCssClass(childNodes[i], 'shadowBottom')) {
                    shadowElement.BottomElement = childNodes[i];
                }
            }

            if (shadowElement.TopElement && shadowElement.BottomElement) {
                // Calculate the size of the parent and set the size of the element
                var bounds = Sys.UI.DomElement.getBounds(shadowElement.Element);
                var boundsBottom = Sys.UI.DomElement.getBounds(shadowElement.BottomElement);
                shadowElement.TopElement.style.top = (offset) + 'px';
                shadowElement.TopElement.style.bottom = '0';
                shadowElement.TopElement.style.height = ((bounds.height - boundsBottom.height - offset)) + 'px';
            }
        }
    }
}

function OnFriendDropdownClientItemsRequestingHandler(sender, eventArgs) {
    if (sender.get_text().length < 3) {
        eventArgs.set_cancel(true);
    }
}