// Called when an asynch postback starts
function FavoritesInitializeRequest(sender, args) {
    // If this postback is flagged to be ignored, don't display any visual cues
    if (FavoritesIgnorePostback) {
        FavoritesIgnorePostback = false;
        return;
    }

    // Grey out tree
    elm = document.getElementById(FavoritesTreeBodyID);
    if (elm) {
        elm.style.opacity=".75";
        elm.style.filter = "alpha(opacity=75)";
    }
   

    // Popup loading image
    img = document.getElementById("PostbackUpdate");
    if (img) {
        img.style.display = "block";
        var header = document.getElementById("TreeHeader");
        var tp = elm.clientHeight/2 - 16;

        if (header)
            tp = elm.clientHeight/2 - 16 + header.clientHeight;
        if (tp < 0) tp = 0;
        if (header) {
            if (tp < header.clientHeight) tp = header.clientHeight;
        }
        img.style.top = tp + "px";
        // Social Work Today and ELDR have a noticeably narrower favorites module
        if (window.location.hostname.toLowerCase().search(/socialworktoday/) ||
            window.location.hostname.toLowerCase().search(/eldr/))
            img.style.left = "65px";
        else
            img.style.left = "89px";
    } 
}

// Called when an asynch postback is about to complete
function FavoritesPageLoading(sender, args) {
    elm = document.getElementById(FavoritesTreeBodyID);
    // Restore tree opacity
    if (elm) {
        elm.style.opacity = "1";      
        elm.style.filter = "alpha(opacity=100)";
    }
    // Hide loading image
    img = document.getElementById("PostbackUpdate");
    if (img) {
        img.style.display = "none";
    }
}

// Called when an asynch postback has completed
function FavoritesPageLoaded(sender, args) {
    DisableBrowserContextMenu();
    
    var fa = document.getElementById("FacilityFavoriteIcon");
    if (fa && (fa.value == "remove")) {
        var divs = document.getElementsByTagName("div");
        for (var i = 0; i < divs.length; i++) {
            // Standalone div
            if (divs[i].className == "SummaryFavorite")
                divs[i].className = "SummaryNoFavorite";
            
            // Summary container
            divs[i].className = divs[i].className.replace(/SummaryListingWithFavorite/g, 'SummaryListingWithoutFavorite');
        }
    }
    if (fa && (fa.value == "add")) {
        var divs = document.getElementsByTagName("div");
        for (var i = 0; i < divs.length; i++) {
            // Standalone container
            if (divs[i].className == "SummaryNoFavorite")
                divs[i].className = "SummaryFavorite";
            
            // Summary container
            divs[i].className = divs[i].className.replace(/SummaryListingWithoutFavorite/g, 'SummaryListingWithFavorite');
        }
    }
}

// Functions for help popup box
function FavoritesFindPos(obj) {
var w = 0, h = 0;
if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    w = window.innerWidth;
    h = window.innerHeight;
} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    w = document.documentElement.clientWidth;
    h = document.documentElement.clientHeight;
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    w = document.body.clientWidth;
    h = document.body.clientHeight;
}
helpBox = document.getElementById("favoritesHelpBox");

var htCont = document.getElementById("favoritesHelpTextContainer");
var x_pos = (w - htCont.offsetWidth)/2;
var y_pos = (h - htCont.offsetHeight)/2;
if (x_pos < 0) x_pos = 0;
if (y_pos < 0) y_pos = 0;
//alert("window.width = " + w + "\r\nwindow.height = " + h + "\r\nx = " + x_pos + "\r\ny = " + y_pos);

return [x_pos, y_pos];
}

function MakeFavoritesHelpBox() {
    var helpLink = document.getElementById("FavoritesHelpLink");
    helpBox = document.getElementById("favoritesHelpBox");
    helpBox.style.display = "block";
    helpBox.style.display = "block";
    var pos = FavoritesFindPos(helpLink);
    helpBox.style.top = (pos[1]).toString() + "px";
    helpBox.style.left = (pos[0]).toString() + "px";
   
    var htCont = document.getElementById("favoritesHelpTextContainer");
    helpBox.style.height = htCont.offsetHeight;
    var darken = document.getElementById("darkenBackground");
    if (darken && darken.style) {
        darken.style.display = "block";
        if (isIE) {
            darken.style.position = "absolute";
            darken.style.top = document.body.scrollTop;
            helpBox.style.top = (pos[1] + document.body.scrollTop).toString() + "px";
        }
    }
}

function KillFavoritesHelpBox() {
    var helpBox = document.getElementById("favoritesHelpBox");
    helpBox.style.display = "none";
    var darken = document.getElementById("darkenBackground");
    if (darken && darken.style) darken.style.display = "none";
}

function FavoriteHelpMouseOver(element) {
    element.style.color = "#ff0000";
}

function FavoriteHelpMouseOut(element) {
    element.style.color = "#fff";
}

function CloseButtonMouseover(elm) {
    elm.src = "/Portals/0/UI/close_button_lit.gif";
}
function CloseButtonMouseout(elm) {
    elm.src = "/Portals/0/UI/close_button.gif";
}

function ParsePixels(str) {
    pix = parseInt(str);
    return pix;
}

function ToPixels(num) {
    return num.toString() + "px";
}

function delete_cookie ( cookie_name )
{
  var cookie_date = new Date ( );  // current date & time
  cookie_date.setTime ( cookie_date.getTime() - 1 );
  document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}

function SaveFavoritesExpandState() {
    var cookie_date = new Date ( );  // current date & time
    cookie_date.setTime ( cookie_date.getTime() + 1000 * 60 * 60 * 24 * 30 ); // 30 days in milliseconds

    var cookie_string = FavoritesCookieName + "=" + FavoritesExpanded + "; expires=" + cookie_date.toGMTString() + "; path=/";
    
    // Clear old cookie
    delete_cookie(FavoritesCookieName);
    
    // Clear old cookie an extra time
    delete_cookie(FavoritesCookieName);
    
    // Write new cookie
    document.cookie = cookie_string;
}

// Parse a particular cookie out of the cookie list
function GetFavoritesCookie(cookieName) {
    if(document.cookie) {
        var cookies = document.cookie.split(";");
        for(var j = 0; j < cookies.length; j++) {
            var NameValue = cookies[j].split("=");
            if(NameValue[0].replace(' ','') == cookieName.replace(' ','')) {
                return NameValue[1];
            }
        }
    return null;
    } else {
    return null;
    }
}

// User clicked on the plus/minus expand button
function ToggleFavoritesTree() {       
    var stateCookie = GetFavoritesCookie(FavoritesCookieName);
    FavoritesExpanded = false;
    if (stateCookie && (stateCookie == "true"))
        FavoritesExpanded = true;
    var ExpandImg = document.getElementById(FavoritesExpandID);  
    var FolderImg = document.getElementById(FavoritesFolderID);
    var tree = document.getElementById(FavoritesTreeID);
    var treebody = document.getElementById(FavoritesTreeBodyID);
    var bottom = document.getElementById(FavoritesTreeBodyBottomID);
    
    // Maybe we have no nodes yet
    if (tree == null) {
        FolderImg.style.display = "none";
        bottom.style.display = "none";
        treebody.style.display = "none";
        ExpandImg.src = FavoritesDomain + FavoritesImgPath + FavoritesCollapsedImg;
        ExpandImg.title = FavoritesExpandTooltip;
        FavoritesExpanded = false;
        return;
    }
    
    var tmpState = tree.style.display;
    
    if(tmpState == "block") {
        tree.style.display = "none";
        FolderImg.style.display = "none";
        bottom.style.display = "none";
        treebody.style.display = "none";
        ExpandImg.src = FavoritesDomain + FavoritesImgPath + FavoritesCollapsedImg;
        ExpandImg.title = FavoritesExpandTooltip;
        FavoritesExpanded = false;
    }else {
        tree.style.display = "block";
        FolderImg.style.display = "block";
        bottom.style.display = "block";
        treebody.style.display = "block";
        ExpandImg.src = FavoritesDomain + FavoritesImgPath + FavoritesExpandedImg;
        ExpandImg.title = FavoritesCollapseTooltip;
        FavoritesExpanded = true;
    }
    SaveFavoritesExpandState();
}

// Adjust the node text immediately after it's been edited --
// Telerik doesn't do this by default
function AfterClientEdit(node, oldText, newText) {
    node.TextElement().innerHTML = escapeHTML(newText);
    FavoritesIgnorePostback = true;
}

// Asynch save the toggle status (via postback) after updating it on the client.
// ExpandedNode is a hidden input form element that stores nodeid of the toggled node.
function AfterClientToggle(node){
    document.getElementById("ExpandedNode").value = node.Value;    
        
    FavoritesIgnorePostback = true;
    eval(FavoritesPostbackScript);
}
// Safari likes to call click on RMB click
function BeforeClientClick(node, eventArgs)
{
    if (/Apple/.test(navigator.userAgent)) {
        //interrogate(eventArgs);
        //alert(eventArgs.button);
        if (eventArgs.button != 0) return false;
    }
}
// Execute search or facility view.  "URL" attribute is set in the code-behind
function AfterClientClick(node) {
    if (node.Category.indexOf("Favorite") != -1) {
        if (node.Category.indexOf("Search") != -1) {
            if (typeof ShowLoadingScreen == 'function') ShowLoadingScreen();
        }
        window.location = node.Attributes["URL"];
    } else {
        document.getElementById("SelectedNode").value = node.Value;  // Make sure folders get selected, too
    }
}

// Relay context menu "Edit" click to the tree edit JS
function ContextMenuClick(node, itemText)
{      
    if (itemText == FavoritesRenameContextMenuString) {    
        //alert("Starting Edit..node.value = " + node.Text);   
        //node.Text = escape(node.Text); 
        node.StartEdit();
        document.getElementById("SelectedNode").value = node.Value;
        return false;
    }
    else if ((itemText == FavoritesNavigateSearchContextMenuString) || (itemText == FavoritesNavigatePartyContextMenuString)) {
        window.location = node.Attributes["URL"];
        return false;
    }
    
    return true;
}

function escapeHTML(str)
{
   var div = document.createElement('div');
   var text = document.createTextNode(str);
   div.appendChild(text);
   return div.innerHTML;
}; 

function disableContextMenu(element) {
    element.oncontextmenu = function() {
        return false;
    }
}

function interrogate(what) {
    var output = '';
    for (var i in what)
        output += i+ '\n';
    alert(output);
}

function DisableBrowserContextMenu() {
var tb = document.getElementById(FavoritesTreeBodyID);
disableContextMenu(tb);
}