function SetFocus(controlToFocus)
{
    document.all(controlToFocus).focus();
    document.all(controlToFocus).select();
}
function confirm_delete()
{
if (confirm("Are you sure you want to delete this item?")==true)
return true;
else
return false;
}
function canAddCharacter(textarea, maxChars) 
{ 
     if(typeof(textarea.onkeypress.arguments[0]) != 'undefined') 
          var keyCode = textarea.onkeypress.arguments[0].keyCode; 
     else 
     { 
          if(document.selection.createRange().text.length != 0) return true; 
          var keyCode = event.keyCode; 
     } 

     var allowedChars = new Array(8, 37, 38, 39, 40, 46);     //Backspace, delete and arrow keys 
     for(var x=0; x<allowedChars.length; x++) if(allowedChars[x] == keyCode) return true; 

     if(textarea.value.length < maxChars) return true; 

     return false; 
}
function trimLength(textarea, maxChars) 
{ 
     if(textarea.value.length <= maxChars) return; 

     textarea.value = textarea.value.substr(0, maxChars) 
}
function openWindow(url) 
{ 
var newWin = window.open(url, 'newWin'); 
}

function addCssClass(element, cssClass)
{
    if (element.className.length > 0)
        element.className += ' ' + cssClass;
    else
        element.className = cssClass;
}

function removeCssClass(element, cssClass)
{
    var classes = element.className.split(' ');
    var newClassList = '';
    
    for (var i=0; i < classes.length; i++)
    {
        if (classes[i] != cssClass)
        {
            newClassList += classes[i] + ' ';
        }
    }
    
    if (newClassList.length > 0 && newClassList.charAt(newClassList.length-1) == ' ')
    {
        newClassList = newClassList.substring(0,newClassList.length-1);
    }
    
    element.className = newClassList;
}

var txtPresetText = '';

function watermarkTextBox(element, presetText, cssClass)
{

    txtPresetText = presetText;

    if (element.value.length == 0)
    {
        element.value = presetText;
        addCssClass(element, cssClass);
    }
}

function removeTextBoxWatermark(element, cssClass)
{
    if (element.value == txtPresetText)
        element.value = '';
    
    removeCssClass(element, cssClass);
}

function processKey(evt, btnId)
{
    var keyCode;
    
    if (evt.which)
        keyCode = evt.which;
    else
        keyCode = evt.keyCode;
           
    if (keyCode == 13)
    {
        document.getElementById(btnId).click();
        evt.cancel = true;
        return false;
    }
}

function FadeInObject(obj)
{
    var speed   = 10;
    var timer   = 0;
    ChangeOpacity(obj.id, 0);
    obj.style.display = 'block';
    for (var i=1; i<=100; i++)
    {
        setTimeout('ChangeOpacity("' + obj.id + '", ' + i + ')', (speed * timer));
        timer++;
    }
}

function ChangeOpacity(objID, opacityAmount)
{
    var objStyle = document.getElementById(objID).style;
    objStyle.opacity        = opacityAmount / 100;
    objStyle.MozOpacity     = opacityAmount / 100;
    objStyle.KhtmlOpacity   = opacityAmount / 100;
    objStyle.filter         = 'alpha(opacity=' + opacityAmount + ')';
}

function ToggleDivDisplay(divToDisplay, divsToHide, headerText)
{
    var arrDivsToHide   = divsToHide.split(',');
    var pageHeader      = document.getElementById('divContentHeader');
    for (var i=0; i<arrDivsToHide.length; i++)
    {
        document.getElementById(arrDivsToHide[i]).style.display = 'none';
    }
    divToDisplay.style.display = 'block';
    for (var i=0; i<pageHeader.childNodes.length; i++)
    {
        if (pageHeader.childNodes[i].tagName == 'H1')
        {
            pageHeader.childNodes[i].textContent  = headerText;
            pageHeader.childNodes[i].innerText    = headerText;
        }
    }
}

function SelectAllInGrid(isSelectAll, container)
{
    var elems = document.getElementsByTagName('input');
    for (var i = 0; i < elems.length; i++) 
    { 
        if (elems[i].id.indexOf(container) > -1 && elems[i].type == 'checkbox')
        {
            elems[i].checked = isSelectAll;
        }
    }
}

function ResetTextBoxes(container)
{
    var div = document.getElementById(container);
    var elems = div.getElementsByTagName('input');
    for (var i = 0; i < elems.length; i++) 
    { 
        if (elems[i].type == 'text')
        {
            elems[i].value = "";
        }
    }
    elems = div.getElementsByTagName('select');
    for (var i = 0; i < elems.length; i++) 
    { 
        elems[i].selectedIndex = 0;
    }
}

function ConfirmDelete(message)
{
    if(!confirm(message))
        return false;
}

function DeleteWarning(itemToDelete)
{
    return confirm('Are you sure you want to delete this ' + itemToDelete + '?  Changes will be irreversible.');
}

function SelectAll(isSelectAll, container)
{   
    var elems = document.getElementsByTagName('input');
    for (var i = 0; i < elems.length; i++) 
    { 
        if (elems[i].id.indexOf(container) > -1 && elems[i].type == 'checkbox')
        {
            elems[i].checked = isSelectAll;
        }
    }
}

/* Function to use instead of DefaultButton for asp:Panels
   The built-in js function doesn't work in Firefox */
var __crossBrowserDefaultFired = false;
function CrossBrowser_FireDefaultButton(e, target)
{
    var key = window.event ? e.keyCode : e.which;
    if (!__crossBrowserDefaultFired && key == 13 && !(e.srcElement && (e.srcElement.tagName.toLowerCase() == "textarea")))
    {
        var defaultButton = document.getElementById(target);
        if (defaultButton && typeof(defaultButton.click) != "undefined")
        {
            __crossBrowserDefaultFired = true;
            defaultButton.click();
            e.cancelBubble = true;
            if (e.stopPropagation) e.stopPropagation();
            return false;
        }
    }
    return true;
}

function AJAXTimeOutHandler(optionalText)
{
    var probPersists = '\r\n\r\nIf the problem persists please contact customer support.';
    if (optionalText && optionalText.length > 0)
    {
        alert(optionalText + probPersists);
    }
    else
    {
        alert('The request has taken longer than expected.  Please try again.' + probPersists);
    }
}

function AJAXErrorHandler()
{
    alert('An error has occurred.  Please try again.  If the problem persists please contact customer support.');
}

function ShowCountdown(displayElement, seconds)
{
    $get(displayElement).innerHTML = seconds;
    if (seconds > 0)
    {
        seconds -= 1;
        setTimeout('ShowCountdown("' + displayElement + '", ' + seconds + ')', 1000);
    }
}

function HighlightSuccessfulSave(control)
{
    control.style.backgroundColor = '#008000';
    control.style.color = '#FFFFFF';
    setTimeout(function(){
        AjaxControlToolkit.Animation.ResizeAnimation.play(control, 1, 25, null, 0, 'px');
        }, 4000);
}

function HighlightUnSuccessfulSave(control) {
    control.style.backgroundColor = '#ffff33';
    control.style.color = '#000000';
    setTimeout(function() {
        AjaxControlToolkit.Animation.ResizeAnimation.play(control, 1, 25, null, 0, 'px');
    }, 4000);
}

// Grid Navigation with Arrow Keys Begin
var _controlToFocusOnExit; // used to set the focus when closing the search grid with the escape key
var _gridHandleKeys;

function HandleKeysPageLoading(sender, args)
{
    Sys.Application.add_load(HandleKeys);
}

function HandleKeys(sender, args)
{
    if (_gridHandleKeys != null)
    {
        InitializeKeyVariables();
        allRows = _gridHandleKeys.getElementsByTagName('tr')
        var itemRows = new Array();
        for (var i=1; i<allRows.length; i++)
        {
            if (allRows[i].className != pagerRowClass) { itemRows.push(allRows[i]); }
        }
        itemRowCount = itemRows.length;
        
        $clearHandlers(_gridHandleKeys);
        $clearHandlers(document);
        
        $addHandler(_gridHandleKeys, 'mouseover', MouseHandler);
        $addHandler(document, 'keydown', KeyHandler);
    }
    _gridHandleKeys = null;
    Sys.Application.remove_load(HandleKeys);
}

function InitializeKeyVariables()
{
    /// <summary>Initialize variables</summary>
    
    curItemRowIndex     = 1;
    prevItemRowIndex    = curItemRowIndex + 1;
    prevClassName       = '';
    isFirstTime         = true;
    allRows             = null;
    itemRowCount        = null;
    isMousing           = false;
}
        
function IgnoreKeys(grid)
{
    /// <summary>Disable handling of key and mouse events</summary>
    /// <param name="grid">Grid to navigate</param>
    
    if (grid) { $removeHandler(grid, 'mouseover', MouseHandler); }
    if (document) { $removeHandler(document, 'keydown', KeyHandler); }
}
        
function MouseHandler(e)
{
    /// <summary>Event handler for mouseover event</summary>
    
    if (!isMousing && allRows != null && allRows.length > curItemRowIndex)
    {
        if (prevClassName.length > 0)
        {
            allRows[curItemRowIndex].className = prevClassName;
        }
        curItemRowIndex = 1;
        prevItemRowIndex = curItemRowIndex + 1;
        prevClassName = '';
        isMousing = true;
        isFirstTime = true;
    }
}

var _isArrowKey = false;
function KeyHandler(e)
{
    /// <summary>Event handler for keydown event</summary>
    
    isMousing = false;
    var hasChanged = false;
    switch(e.keyCode)
    {
        case 38:
            // up
            _isArrowKey = true;
            if (curItemRowIndex > 1)
            {
                curItemRowIndex--;
                prevItemRowIndex = curItemRowIndex + 1;
                hasChanged = true;
            }
            if (e.preventDefault) { e.preventDefault(); }
            e.returnValue = false;
            break;
        case 40:
            // down
            _isArrowKey = true;
            if (curItemRowIndex < itemRowCount && !isFirstTime)
            {
                curItemRowIndex++;
                prevItemRowIndex = curItemRowIndex - 1;
                hasChanged = true;
            }
            if (e.preventDefault) { e.preventDefault(); }
            e.returnValue = false;
            break;
        case 13:
            // enter
            if(_isArrowKey)
            {
                if (allRows[curItemRowIndex].fireEvent) { allRows[curItemRowIndex].fireEvent('onclick'); }
                else if (allRows[curItemRowIndex].dispatchEvent)
                {
                    var clickEvent = window.document.createEvent('MouseEvent');
                    clickEvent.initEvent('click', false, true);
                    allRows[curItemRowIndex].dispatchEvent(clickEvent);
                }
            }
            else return;
            break;
        case 27:
            // ESC Key
            $get(allRows[0].parentNode.parentNode.id).style.display = "none";
            $clearHandlers(document);
            _controlToFocusOnExit.focus();
            _controlToFocusOnExit.select();
            break;
        default: 
            _isArrowKey = false;
            return; // Get out if the key is not the UP, DOWN, OR ENTER keys
    }
    if ((hasChanged || isFirstTime) && allRows != null && allRows.length > curItemRowIndex)
    {
        if (hasChanged) { allRows[prevItemRowIndex].className = prevClassName; }
        prevClassName = allRows[curItemRowIndex].className;
        allRows[curItemRowIndex].className = currentRowClass;
        isFirstTime = false;
    }
    return false;
}

// Grid Navigation with Arrow Keys End

function ToggleDrugWarnings(divToShow, divsToHide, linkToDisable, linksToEnable)
{
    divToShow.style.display = 'block';
    linkToDisable.disabled = true;
    
    for (var i=0; i<divsToHide.length; i++)
    {
        divsToHide[i].style.display = 'none';
    }
    
    for (var i=0; i<linksToEnable.length; i++)
    {
        linksToEnable[i].disabled = false;
    }
}

function SetupTaskbar(taskbar, iframeShim)
{
    var taskbar = document.getElementById(taskbar);
    var iframe = document.getElementById(iframeShim);
    iframe.style.left = taskbar.offsetLeft;
    iframe.style.top = taskbar.offsetTop;
}