var menuTimer = null;
var $loadingAlert = null;

/*function to cause sliding effect on application icons in banner area of header - right side*/
function showLabel(myObj) {
    $jq(myObj).toggleClass("hover");
}

/*functions to control submenu display of main menu items - includes setting auto hide timer for sub menus*/
function clearSubMenus() {
    clearResetNav();
    $jq("#topMenu li.unactive").each(function() { $jq(this).removeClass("unactive"); });
    $jq("#topMenu li.hover").each(function(){$jq(this).removeClass("hover");});
    $jq("#topMenu .subMenu").each(function(){$jq(this).hide();});
}
function showDropMenu(myObj){
    clearSubMenus();
    checkSubmenuPlacement(myObj)
    $jq("#topMenu li.active").each(function() { $jq(this).addClass("unactive"); });
    var $parent=$jq(myObj).parent();
    $parent.addClass("hover");
    var $submenu = $parent.find(".subMenu");
    if ($submenu.children().length > 0) {
        $submenu.show();
    }
}
function hideDropMenu(){
    menuTimer = setTimeout("clearSubMenus()", 2000);
}
function clearResetNav() {
    if (menuTimer) {
        clearTimeout(menuTimer);
    }
    return;
}
/*function to make sure submenu right edge does not extend past 995px*/
function checkSubmenuPlacement(mySub) {
    var farRight = 983;
    var $mainMenu = $jq("#topMenu");
    var $mainMenuPL = $mainMenu.position().left;
    var $farRight = $mainMenu.outerWidth(true) + $mainMenuPL;
    var $menuParent = $jq(mySub).parent();
    var $subMenu = $menuParent.find(".subMenu");
    var subMenuWidth = $subMenu.outerWidth(true);
    var $rightEdge = $menuParent.position().left + subMenuWidth + $mainMenuPL;
    if ($rightEdge > farRight) {
        $menuParent.find(".subMenu").css("left", ((($rightEdge - farRight)-1) * -1));
    }
}

/*function sets main menu item as active*/
function setActiveMainMenu() {
    $jq("#topMenu li a.active").removeClass("active").parent().addClass("active");
}
function setContentClass() {
    if ($jq("#leftMenu").length == 0){$jq("#pageContent>.pageNormal").addClass("pageFull");}
}
/*function sets where the "loading" alert box position is related to the Vertical scroll of the screen*/
function setLoadingPosition() {
    $loadingAlert.css("top", $jq(document).scrollTop());
}

/*functions to show status and error notifications - start*/
/*commenting out status and error messaging code for now

function showStatus(txt) {
var $obj = $jq(".notificationArea label")
$obj.html(txt);
var $ow = $obj.parent().prev().outerWidth(true) + 10;
$obj.parent().css("left", $ow).show();
}
function hideStatus() {
var $obj = $jq(".notificationArea label")
$obj.html("");
$obj.parent().hide();
}

function showErrors(txt) {
var $obj = $jq(".errorArea label")
$obj.html(txt);
//    var $ow = $obj.parent().prev().outerWidth(true) + 10;
//    $obj.parent().css("left", $ow).show();
$obj.parent().show();
}
function hideErrors() {
var $obj = $jq(".errorArea label")
//    $obj.html("");
$obj.parent().hide();
}
*/
/*functions to show status and error notifications - end*/

/*invalid character functions - start*/
var invalidCharacters = [">", "<"];
function filterChar(e) {
    // Prevent users from typing invalid characters
    for (var invalidCharacterIndex in invalidCharacters) {
        var invalidCharacter = invalidCharacters[invalidCharacterIndex];
        if (String.fromCharCode(e.charCode) == invalidCharacter) {
            invalidCharacterAlert(invalidCharacter, e);
        }
    }
}
function filterText() {
    // Prevent users from pasting invalid characters
    for (var invalidCharacterIndex in invalidCharacters) {
        var invalidCharacter = invalidCharacters[invalidCharacterIndex];
        if (window.clipboardData.getData("Text").indexOf(invalidCharacter) > 0) {
            invalidCharacterAlert(invalidCharacter);
        }
    }
}
function invalidCharacterAlert(invalidCharacter, event) {
    // Alert users that they have entered an invalid character
    if (getSourceElementId(event) != "<%=((Fishbowl.Common.CommonPage)this.Page).InvalidCharacterExceptionList %>") {
        ShowStatus(invalidCharacter + " is an unsupported character.");
        event.returnValue = false;
        event.cancel = true;
    }


}
function getSourceElementId(e) {
    // return the id of the source element
    var targ;
    if (!e) {
        var e = window.event;
    }
    if (e.target) {
        targ = e.target;
    }
    else if (e.srcElement) {
        targ = e.srcElement;
    }
    if (targ.nodeType == 3) // defeat Safari bug
    {
        targ = targ.parentNode;
    }
    var tname;
    tname = targ.id;
    return tname;

}
/*invalid character functions - end*/

/*button hover - start*/
function toggleHover(obj) {
    var $obj = $jq(obj);
    if ($obj.hasClass('primaryBtn')) {
        return btnHover($obj,'primaryBtn');
    }
    if ($obj.hasClass('secondaryBtn')) {
        return btnHover($obj,'secondaryBtn');
    }
    if ($obj.hasClass('linkBtn')) {
        return btnHover($obj,'linkBtn');
    }
    if ($obj.hasClass('button')) {
        return buttonHover($obj);
    }
    if ($obj.hasClass('icon')) {
        return buttonHover($obj);
    }
}
function btnHover($obj, objClass) {
    objClass+= "Hover";
    if ($obj.hasClass(objClass)){$obj.removeClass(objClass);}else{$obj.addClass(objClass);}
}
function buttonHover($obj) {
    if (!$obj.attr("disabled")) {
        var $btnClasses = $obj.attr("class");
        var $btnClass = ($btnClasses).split(" ")[1];
        var $hoverClass = $btnClass + "Hover";
        if ($btnClasses.search($hoverClass) != -1) {
            $obj.removeClass($hoverClass);
        } else {
            $obj.addClass($hoverClass);
        }
    }
    return;
}
/*button hover - end*/

/*onload event for header*/
$jq(document).ready(function() {
    $jq(":submit,:button").each(function() {
        $jq(this)
            .mouseover(function() { toggleHover($jq(this)); })
            .mouseout(function() { toggleHover($jq(this)); });
    });

});
