﻿/* Common Utilities */
function get_radWindow() {
    var oWindow = null;
    if (window.radWindow) oWindow = window.radWindow;
    else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
    return oWindow;
}
function closeRadWindow() {
    get_radWindow().Close();
}
function openRadWindow(name, URL, width, height) {
    var oWnd = radopen(URL, name);
    oWnd.SetSize(width, height);
    oWnd.center();
};

function get_queryStrings() {
    var argList = new Object();

    if (window.location != null && window.location.search.length > 1) {
        var urlParms = window.location.search.substring(1);
        var argPairs = urlParms.split('&');

        for (var i = 0; i < argPairs.length; i++) {
            var pos = argPairs[i].indexOf('=')

            if (pos == -1)
                continue;
            else {
                var argName = argPairs[i].substring(0, pos);
                var argVal = argPairs[i].substring(pos + 1);

                if (argVal.indexOf('+') != -1)
                    argVal = argVal.replace(/\+/g, ' ');

                argList[argName] = unescape(argVal);
            }
        }
    }

    return argList;
}

function showAdminHelp()
{
    var arg = location.href;
    openRadWindow('Help', String.format("AdminHelp.aspx?url={0}", arg.substring(arg.lastIndexOf("/") + 1)), 725, 600)
    return false;
}

function showAlert(text) {
    var width = 250;
    var height = 125;
    var title = "Error!";

    if (arguments.length > 1) {
        width = arguments[1];
        if (arguments.length > 2) {
            height = arguments[2];
            if (arguments.length > 3) {
                title = arguments[3];
            }
        }
    }

    radalert(text, width, height, title);
}

function showConfirm(text, mozEvent) {
    var width = 350;
    var height = 160;
    var title = "Confirm?";
    
    if (arguments.length > 2) {
        width = arguments[2];
        if (arguments.length > 3) {
            height = arguments[3];
            if (arguments.length > 4) {
                title = arguments[4];
            }
        }
    }

    var ev = mozEvent ? mozEvent : window.event; //Moz support requires passing the event argument manually   
    //Cancel the event   
    ev.cancelBubble = true;
    ev.returnValue = false;
    if (ev.stopPropagation) ev.stopPropagation();
    if (ev.preventDefault) ev.preventDefault();

    //Determine who is the caller   
    var callerObj = ev.srcElement ? ev.srcElement : ev.target;

    //Call the original radconfirm and pass it all necessary parameters   
    if (callerObj) {
        //Show the confirm, then when it is closing, if returned value was true, automatically call the caller's click method again.   
        radconfirm(text, function(arg) {
            if (arg) {
                callerObj["onclick"] = "";
                if (callerObj.click) callerObj.click(); //Works fine every time in IE, but does not work for links in Moz   
                else if (callerObj.tagName == "A") //We assume it is a link button!   
                {
                    try {
                        eval(callerObj.href)
                    }
                    catch (e) { }
                }
            }
        }, width, height, title);
    }
    
    return false;
}

/* Utilities */
function get_pageCopyTreeView() {
    return $find(get_pageCopyTreeViewClientID())
}

function get_pageCopyTreeViewSelectedNode() {
    return get_pageCopyTreeView().get_selectedNode();
}

function treeExpandAllNodes(treeView) {
    if (!treeView)
        return;  
        
    var nodes = treeView.get_allNodes();

    for (var i = 0; i < nodes.length; i++) {
        if (nodes[i].get_nodes() != null) {
            nodes[i].expand();
        }
    }
}

function treeCollapseAllNodes(treeView) {
    if (!treeView)
        return;
        
    var nodes = treeView.get_allNodes();

    for (var i = 0; i < nodes.length; i++) {
        if (nodes[i].get_nodes() != null) {
            nodes[i].collapse();
        }
    }
}


/* Events */
function radToolBar_OnClientButtonClicking(sender, args) {
    var handled = false;
    var item = args.get_item();
    var cmd = item.get_commandName();
    var source = sender.get_attributes().getAttribute("source");
    switch (cmd) {
        case "edit":
            if (source == "pagecopy") {
                if (!get_pageCopyTreeViewSelectedNode()) {
                    handled = true;
                    showAlert("Select a page to edit");
                }
            }
            break;
        case "delete":
            if (source == "pagecopy") {
                if (!get_pageCopyTreeViewSelectedNode()) {
                    handled = true;
                    showAlert("Select a page to delete");
                }
                else if (item.get_commandArgument() != "checked") {
                    handled = true;
                    radconfirm('Are you sure you want to delete the selected page and all its children?', function(arg) { if (arg) { item.set_commandArgument('checked'); item.click(); } });
                }
            }
            break;
        case "expand":
            var treeView;
            if (source == "pagecopy") {
                treeView = get_pageCopyTreeView();
            }
            treeExpandAllNodes(treeView);
            break;
        case "collapse":
            var treeView;
            if (source == "pagecopy") {
                treeView = get_pageCopyTreeView();
            }
            treeCollapseAllNodes(treeView);
            break;
    }

    args.set_cancel(handled);
}

