//Drag and drop functionality.
var g_dragObject = null;
var g_mouseOffset = null;
var g_dragHelper = document.createElement('div');
var g_invisHelper = document.createElement('div');
var g_dropTargets;
var g_multiDropTargets;
var g_dropContainers;
var g_isContainerItem = false;
var g_mouseDown = false;
var g_prevMouseDown = false;

var c_dragDropTitle = 'DDParams=';

var g_selectedElements = new Array();
var g_selectedDragObjects = new Array();

g_dragHelper.style.display = 'none';

function BuildDropTargets()
{
    var inDiv = document.getElementById('in');
    var outDiv = document.getElementById('out');
    g_dropTargets = new Array();
    g_multiDropTargets = new Array();
    g_dropContainers = new Array();
    if (null !== inDiv)
    {
        RBuildDropTargets(inDiv);
    }
    if (null !== outDiv)
    {
        RBuildDropTargets(outDiv);
    }
}

function RBuildDropTargets(element)
{
    if (null !== element)
    {
        if (IsMultiDropTarget(element))
        {
            element.onmouseover = HighlightMultiTarget; 
            element.onmouseout = UnHighlightTarget;
            g_multiDropTargets.push(element);
            g_dropTargets.push(element);
        }
        else if (IsDropTarget(element))
        {
            element.onmouseover = HighlightTarget; 
            element.onmouseout = UnHighlightTarget;
            g_dropTargets.push(element);
        }
        else if (IsDropContainer(element))
        {
            var domPosition = GetElementPosition(element);
            element.setAttribute('domTop', domPosition.y);
            element.setAttribute('domLeft', domPosition.x);
            g_dropContainers.push(element);
        }
        if (null !== element.childNodes && undefined !== element.childNodes)
        {
            for (var i = 0; i < element.childNodes.length; ++i)
            {
                RBuildDropTargets(element.childNodes[i]);
            }
        }
    }
}

var g_eventReturn = true;//if this value is false, return false no matter what in SelectElement.
function SelectElement(e, element, dragObject)
{
    e = e || window.event;
    
    if (!e.ctrlKey && !e.shiftKey && GetKeyCode(e) != 224)//244 is command key in firefox.
        return g_eventReturn;
                
    if (element.className.indexOf('selected') > -1)
    {
        element.className = trim(element.className.replace('selected', ''));
        for (var i = 0; i < g_selectedElements.length; ++i)
        {
            if (g_selectedElements[i] == element)
            {
                g_selectedElements.splice(i, 1);
                g_selectedDragObjects.splice(i, 1);
                break;
            }
        }
    }
    else
    {
        element.className += ' selected';
        g_selectedElements.push(element);
        g_selectedDragObjects.push(dragObject);
    }
    
    return false;
}

function IsDropTarget(element)
{
    var ddParams = DragDropParamsFromClass(element);
    if (null == ddParams)
        return false;
    if (ddParams.indexOf(';dt') > -1)
        return true;
    else
        return false;
}

function IsMultiDropTarget(element)
{
    var ddParams = DragDropParamsFromClass(element);
    if (null == ddParams)
        return false;
    if (ddParams.indexOf(';mdt') > -1)
        return true;
    else
        return false;
}

function IsDropContainer(element)
{
    var ddParams = DragDropParamsFromClass(element);
    if (null == ddParams)
        return false;
    if (ddParams.indexOf(';dc') > -1)
        return true;
    else
        return false;
}

function DragDropParamsFromClass(element)
{
    if (!element.className || element.className.indexOf(c_dragDropTitle) < 0)
        return null;
        
    var index = element.className.indexOf(c_dragDropTitle);
    
    return element.className.substr(index + c_dragDropTitle.length);
}

function Load()
{
    document.body.appendChild(g_dragHelper);
    BuildDropTargets();
}
WindowOnLoad(Load);

function GetMouseOffset(e, target)
{
    e = e || window.event;
    var docPosition = GetElementPosition(target);
    var mousePosition = GetMousePosition(e);
    return {x:docPosition.x - mousePosition.x, y:docPosition.y - mousePosition.y};
}

var mousePosition = {x:0, y:0};
function MouseMove(e)
{
    e = e || window.event;
    mousePosition = new GetMousePosition(e);
    if (null !== g_dragObject)
    {
        var innerHeight, innerWidth;
        if (window.innerHeight)
        {
            innerHeight = window.innerHeight;
            innerWidth  = window.innerWidth;
        }
        else if (document.documentElement.clientHeight)
        {
            innerHeight = document.documentElement.clientHeight;
            innerWidth  = document.documentElement.clientWidth; 
        }
        else
        {
            innerHeight = document.body.clientHeight;
            innerWidth  = document.body.clientWidth;
        }
        
        if (e.clientY <= 20)
            scrollBy(0, -20);
        if (e.clientY >= innerHeight - 20)
            scrollBy(0, 20);
    
        g_dragHelper.style.top = (mousePosition.y + g_mouseOffset.y) + 'px';
        g_dragHelper.style.left = (mousePosition.x + g_mouseOffset.x) + 'px';
        
        if (g_isContainerItem)
        {
            if (g_prevMouseDown != g_mouseDown)
            {
                for (var i = 0; i < g_dropContainers.length; ++i)
                {
                    var children = g_dropContainers[i].childNodes;
                    for (var j = 0; j < children.length; ++j)
                    {
                        if (children[j].nodeName=='#text') continue;
                        
                        var domPosition = GetElementPosition(children[j]);
                        children[j].setAttribute('domTop', domPosition.y);
                        children[j].setAttribute('domLeft', domPosition.x);
                    }
                }
                g_prevMouseDown = g_mouseDown;
            }
            var activeContainer = null;
            for (var i = 0; i < g_dropContainers.length; ++i)
            {
                var ele = g_dropContainers[i]
                var xPos = parseInt(ele.getAttribute('domLeft'));
                var yPos = parseInt(ele.getAttribute('domTop'));
                var width = ele.offsetWidth;
                var height = ele.offsetHeight;
                if (mousePosition.x < xPos + width &&
                    mousePosition.x > xPos &&
                    mousePosition.y < yPos + height &&
                    mousePosition.y > yPos)
                {
                    activeContainer = ele;
                    break;
                }
            }
            
            if (activeContainer)
            {
                var beforeNode = null;
                var children = activeContainer.childNodes;
                for (var i = children.length - 1; i >= 0; --i)
                {
                    if (children[i].nodeName=='#text') continue;
                    
                    if (g_dragObject != children[i])
                    {
                        var xPos = parseInt(children[i].getAttribute('domLeft'));
                        var yPos = parseInt(children[i].getAttribute('domTop'));
                        var width = children[i].offsetWidth;
                        var height = children[i].offsetHeight;
                        
                        if (mousePosition.x < (xPos + width) &&
                            mousePosition.y < (yPos + height))
                        {
                            beforeNode = children[i];
                        }
                    }
                }
                
                if (beforeNode)
                {
                    if (beforeNode != g_dragObject.nextSibling)
                        activeContainer.insertBefore(g_dragObject, beforeNode);
                }
                else
                {
                    activeContainer.appendChild(g_dragObject);
                }
                
                if (g_dragObject.style.display != '')
                {
                    g_dragObject.style.display = '';
                    g_dragObject.style.visibility = 'hidden';
                }
            }
            else
            {
                g_dragObject.style.display = 'none';
            }
        }
        
        return false;
    }
}
document.onmousemove = MouseMove;

var g_delayComplete = false;
var g_delayTimeOut = null;
function CompleteDelay()
{
    g_delayComplete = true;
    g_delayTimeOut = null;
}

function MouseUp(e)
{
    if (g_delayComplete && null != g_dragObject && null != g_dropTargets && g_dropTargets.length > 0)
    {
        var params = $.jwlib.getDragParam(g_dragObject);

        var dropTarget = null;
        if (g_selectedElements.length)
        {
            for (var i = 0; i < g_multiDropTargets.length; ++i)
            {
                var targetPosition = GetElementPosition(g_multiDropTargets[i]);
                if (mousePosition.x >= targetPosition.x &&
                    mousePosition.x <= targetPosition.x + g_multiDropTargets[i].offsetWidth &&
                    mousePosition.y >= targetPosition.y &&
                    mousePosition.y <= targetPosition.y + g_multiDropTargets[i].offsetHeight)
                {
                    dropTarget = g_multiDropTargets[i];
                }
            }
        }
        else if (g_isContainerItem)
        {
            for (var i = 0; i < g_dropContainers.length; ++i)
            {
                var targetPosition = GetElementPosition(g_dropContainers[i]);
                if (mousePosition.x >= targetPosition.x &&
                    mousePosition.x <= targetPosition.x + g_dropContainers[i].offsetWidth &&
                    mousePosition.y >= targetPosition.y &&
                    mousePosition.y <= targetPosition.y + g_dropContainers[i].offsetHeight)
                {
                    dropTarget = g_dropContainers[i];
                }
           }
        }
        else
        {
            for (var i = 0; i < g_dropTargets.length; ++i)
            {
                var targetPosition = GetElementPosition(g_dropTargets[i]);
                if (mousePosition.x >= targetPosition.x &&
                    mousePosition.x <= targetPosition.x + g_dropTargets[i].offsetWidth &&
                    mousePosition.y >= targetPosition.y &&
                    mousePosition.y <= targetPosition.y + g_dropTargets[i].offsetHeight)
                {
                    dropTarget = g_dropTargets[i];
                }
            }
        }
        if (null !== dropTarget)
        {
            var args = DragDropParamsFromClass(dropTarget).split(';');
            if (6 == args.length)
            {
                if (args[0] == 'iboxpost')
                {
                    if (isGuid(params))
                    {
                        if (0 <= args[1].indexOf('?'))
                        {
                            args[1] += '&jottid=' + params;
                        }
                        else
                        {
                            args[1] += '?jottid=' + params;
                        }
                    }
                    else
                    {
                        if (0 <= args[1].indexOf('?'))
                        {
                            args[1] += '&contactid=' + params;
                        }
                        else
                        {
                            args[1] += '?contactid=' + params;
                        }
                    }
                    args[3] = parseQuery(args[3].substr(5,999));

                    OpenIbox(args[1], args[2], args[3]);
                }
                else if (args[0] == 'callback')
                {
                    var numItems = g_selectedElements.length ? g_selectedElements.length : 1;
                    switch (args[1])
                    {
                        case 'jmove':
                            Handle_MoveJott(params, args[2], args[3], args[4], numItems);
                            break;
                        case 'jarchive':
                            Handle_ArchiveJott(params, numItems);
                            break;
                        case 'jactivate':
                            Handle_ActivateJott(params, numItems);
                            break;
                        case 'jtophone':
                            Handle_JottToPhone(params);
                            break;
                        case 'jtoemail':
                            Handle_JottToEmail(params);
                            break;
                        case 'print':
                            window.open('print.aspx?jottid=' + params, 'printwindow', '');
                            break;
                        case 'ctogroup':
                            Handle_ContactToGroup(params, args[2], args[3]);
                            break;
                        case 'removecontact':
                            Handle_RemoveContact(params, args[2], args[3]);
                            break;
                        case 'deletejott':
                            Handle_DeleteJott(params, numItems, 'draganddrop');
                            break;
                        case 'deletecontact':
                            Handle_DeleteContact(params);
                        default:
                            break;
                    }
                }
                else if (args[0] == 'container')
                {
                    switch (args[1])
                    {
                        case 'savelist':
                            var children = dropTarget.childNodes;
                            var datastring = '';
                            for (var i = 0; i < children.length; ++i)
                            {
                                if (children[i].nodeName == '#text') continue;
                                
                                var args = DragDropParamsFromClass(children[i]).split(';');
                                
                                datastring += args[2]+','+args[3]+',';
                            }
                            if (datastring)
                            {
                                datastring = datastring.substring(0, datastring.length-1);
                                Handle_SaveListOrder(datastring);
                            }
                                
                            break;
                    }
                }
            g_selectedElements = [];
            g_selectedDragObjects = [];
            }
        }
    }
    if (g_dragObject)
    {
        if (g_dragObject.style.display == 'none')
            g_dragObject.style.display = '';
        g_dragObject.style.visibility = '';
        g_dragObject = null;
    }
    if (g_delayTimeOut)
    {
        clearTimeout(g_delayTimeOut);
        g_delayTimeOut = null;
    }
    g_delayComplete = false;
    g_mouseDown = false;
    g_prevMouseDown = false;
    g_dragHelper.style.display = 'none';
    g_isContainerItem = false;
    return false;
}
document.onmouseup = MouseUp;

function Handle_SaveListOrder(dataString)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'savelist,' + dataString, SaveListOrderCallback, null, null, true);
}

function SaveListOrderCallback(result, context)
{
    HideThinking();
}

function Handle_DeleteContact(contactIds)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'deletecontact,' + contactIds, DeleteContactCallback, null, null, true);
}

function DeleteContactCallback(result, context)
{
    if (!result)
    {
        var message = 'Error: Failed to delete contact(s).';
        DisplayActivity(message, 0, false, true);
    }
    else
    {
        var resultArgs = result.split(',');
        if (resultArgs[0] == "OK")
        {
            var contacts = document.getElementById('contacts');
            if (contacts)
            {
                var replaceString = resultArgs[0]+','+resultArgs[1]+','+resultArgs[2]+',';
                var numGroups = parseInt(resultArgs[2]);
                for (var i = 0; i < numGroups; ++i)
                    replaceString += (resultArgs[i+3]+',');
                contacts.innerHTML = result.replace(replaceString, '');
                init_ibox();
                RestoreDates();
            }
            var message = resultArgs[1] + ' contact(s) were deleted.';
            DisplayActivity(message, 0, false, false);
            
            var numGroups = parseInt(resultArgs[2]);
            for (var i = 0; i < numGroups; ++i)
                $('.groups:has(a:contains('+resultArgs[i + 3]+'))').hide();
                
            g_selectedElements = [];
            g_selectedDragObjects = [];
        }
        else
        {
            var message = 'An unknown error occurred.  Please try again.';
            DisplayActivity(message, 0, false, true);
        }
    }
}

function Handle_DeleteJott(jottIds, numJotts, actionType)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'deletejott,'+actionType+','+jottIds, DeleteJottCallback, numJotts, null, true);
}

function DeleteJottCallback(result, context)
{
    var numJotts = context;
    var jottOrJotts;
    var wereOrWas;
    if (numJotts > 1)
    {
        jottOrJotts = 'Jotts';
        wereOrWas = 'were';
    }
    else
    {
        jottOrJotts = 'Jott';
        wereOrWas = 'was';
    }

    if (!result)
    {
        var message = 'Failed to move '+jottOrJotts+' to trash.';
        DisplayActivity(message, 0, false, true);
    }
    else
    {
        var jotts = document.getElementById('jotts');
        if (jotts)
        {
            jotts.innerHTML = result;
            init_ibox();
            RestoreDates();
        }
        var message = numJotts+' '+jottOrJotts+' '+wereOrWas+' moved to the trash.';
        DisplayActivity(message, 0, false, false);
    }
}

function Handle_RemoveContact(contactId, groupId, groupName)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'remove,' + contactId + ',' + groupId, RemoveContactCallback, groupName, null, true);
}

function RemoveContactCallback(result, context)
{
    if (!result)
    {
        var message = 'Error: Failed to remove contact(s) from group "' + context + '".';
        DisplayActivity(message, 0, false, true);
    }
    else
    {
        var resultArgs = result.split(',');
        if (resultArgs[0] == 'Redirect')
        {
            window.location = resultArgs[1];
        }
        else if (resultArgs[0] == "OK")
        {
            var contacts = document.getElementById('contacts');
            if (contacts)
            {
                contacts.innerHTML = result.replace(resultArgs[0]+','+resultArgs[1]+',', '');
                init_ibox();
            }
            var message = 'removed ' + resultArgs[1] + ' contact(s) from group "' + context + '".';
            DisplayActivity(message, 0, false, false);
        }
    }
}

function Handle_ContactToGroup(contactId, groupId, groupName)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'movetogroup,' + contactId + ',' + groupId, ContactToGroup, groupName, null, true);
}

function ContactToGroup(result, context)
{
    if (!result)
    {
        DisplayActivity('Failed to add contact(s) to group "' + context + '".', 0, false, true);
        return;
    }
    var resultArgs = result.split(',');
    if (resultArgs[0] == 'aam')
    {
        var message = resultArgs[1]+' contact(s) already belong to group "' + context + '".';
        if (resultArgs[2] == 'OK')
        {
            var contacts = document.getElementById('contacts');
            if (contacts)
            {
                contacts.innerHTML = result.replace(resultArgs[0]+','+resultArgs[1]+','+resultArgs[2]+','+resultArgs[3]+',', '');
                init_ibox();
            }
            message += ' '+resultArgs[3]+' contact(s) added to group "' + context + '".';
        }
        DisplayActivity(message, 0, false, true);
    }
    else if (resultArgs[0] == 'OK')
    {
        var contacts = document.getElementById('contacts');
        if (contacts)
        {
            contacts.innerHTML = result.replace(resultArgs[0]+','+resultArgs[1]+',', '');
            init_ibox();
        }
        var message = resultArgs[1]+' contact(s) added to group "' + context + '".';
        DisplayActivity(message, 0, false, false);
    }
}

function Handle_MoveJott(jottId, listId, listName, restore, numJotts)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'move,' + jottId + ',' + listId + ',' + restore, MoveJott, listName + ',' + numJotts, null, true);
}

function MoveJott(result, context)
{
    var cArgs = context.split(',');
    var listName = cArgs[0];
    var numJotts = cArgs[1];
    var jottOrJotts;
    var wereOrWas;
    if (numJotts > 1)
    {
        jottOrJotts = 'Jotts';
        wereOrWas = 'were';
    }
    else
    {
        jottOrJotts = 'Jott';
        wereOrWas = 'was';
    }
        
    if (!result)
    {
        DisplayActivity('Failed to add '+jottOrJotts+' to list "' + listName + '".', 0, false, true);
        return;
    }
    else
    {
        var jotts = document.getElementById('jotts');
        if (jotts)
        {
            jotts.innerHTML = result;
            init_ibox();
            RestoreDates();
        }
        var message = numJotts+' '+jottOrJotts+' '+wereOrWas+' moved to list "' + listName + '".';
        DisplayActivity(message, 0, false, false);
    }
}

function Handle_ArchiveJott(jottId, numJotts)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'archive,' + jottId, ArchiveJott, numJotts, null, true);
}

function ArchiveJott(result, context)
{
    var numJotts = context;
    var jottOrJotts;
    var wereOrWas;
    if (numJotts > 1)
    {
        jottOrJotts = 'Jotts';
        wereOrWas = 'were';
    }
    else
    {
        jottOrJotts = 'Jott';
        wereOrWas = 'was';
    }

    if (!result)
    {
        DisplayActivity('Failed to archive '+jottOrJotts+'.', 0, false, true);
    }
    else
    {
        var jotts = document.getElementById('jotts');
        if (jotts)
        {
            jotts.innerHTML = result;
            init_ibox();
            RestoreDates();
        }
        var message = numJotts+' '+jottOrJotts+' '+wereOrWas+' archived.';
        DisplayActivity(message, 0, false, false);
    }
}

function AddJottCallback(result, context)
{
    if (!result)
    {
        DisplayActivity('Failed to add new Jott.', 0, false, true);
    }
    else
    {
        var jotts = document.getElementById('jotts');
        if (jotts)
        {
            jotts.innerHTML = result;
            init_ibox();
            RestoreDates();
        }
        HideThinking();
    }
    var tbAddJott = document.getElementById(context);
    tbAddJott.value = 'Type a new Jott here';
    tbAddJott.className = 'new_string_light';
    g_isDefaultText = true;
    //ASP.NET defined variable.
    //we want this set back to false
    //so the default button will 
    //fire again.
    __defaultFired = false;
}

function Handle_ActivateJott(jottId, numJotts)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'activate,' + jottId, ActivateJott, numJotts, null, true);
}

function ActivateJott(result, context)
{
    var numJotts = context;
    var jottOrJotts;
    var wereOrWas;
    if (numJotts > 1)
    {
        jottOrJotts = 'Jotts';
        wereOrWas = 'were';
    }
    else
    {
        jottOrJotts = 'Jott';
        wereOrWas = 'was';
    }

    if (!result)
    {
        DisplayActivity('Failed to move '+jottOrJotts+' to Inbox.', 0, false, true);
    }
    else
    {
        var jotts = document.getElementById('jotts');
        if (jotts)
        {
            jotts.innerHTML = result;
            init_ibox();
        }
        RestoreDates();
        var message = numJotts+' '+jottOrJotts+' '+wereOrWas+' moved to Inbox.';
        DisplayActivity(message, 0, false, false);
    }
}

function Handle_JottToPhone(jottId)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'jottphone,' + jottId, JottToPhone, null, null, true);
}

function JottToPhone(result, context)
{
    //HideThinking();
    if (!result)
    {
        DisplayActivity('Unable to send Jott to phone.', 0, false, true);
        return;
    }
    DisplayActivity('Jott sent to phone.', 0, false, false);
}

function Handle_JottToEmail(jottId)
{
    ShowThinking();
    WebForm_DoCallback('__Page', 'jottemail,' + jottId, JottToEmail, null, null, true);
}

function JottToEmail(result, context)
{
    //HideThinking();
    if (!result)
    {
        DisplayActivity('Unable to send Jott to email.', 0, false, true);
        return;
    }
    DisplayActivity('Jott sent to email.', 0, false, false);
}


function MultiMouseDown(e, element, thisObj)
{
    e = e || window.event;
    
    if (e.ctrlKey ||
        !g_selectedElements.length || 
        !g_selectedDragObjects.length || 
        !thisObj.className ||
        thisObj.className.indexOf('selected') < 0)
        return true;
        
    return MouseDown(e, element);
}

function MouseDown(e, element)
{
    if (g_selectedElements.length && g_selectedDragObjects.length)
    {
        var itemString = null;
        if (document.getElementById('jotts'))
            itemString = "Jott";
        else if (document.getElementById('contacts'))
            itemString = "Contact";
            
        var ddParam = '';
        for (var i = 0; i < g_selectedDragObjects.length; ++i)
        {
            ddParam += $.jwlib.getDragParam(g_selectedDragObjects[i]);
            if (i < g_selectedDragObjects.length - 1)
                ddParam += ';';
        }
        g_dragObject = document.createElement('div');
        g_dragObject.className = $.jwlib.dragParam + ddParam;
        g_dragHelper.innerHTML = g_selectedElements.length + ' ' + itemString;
        if (g_selectedElements.length > 1)
            g_dragHelper.innerHTML += 's.';
        else
            g_dragHelper.innerHTML += '.';
    }
    else
    {
        g_dragObject = element;
        g_dragHelper.innerHTML = '';
        g_dragHelper.appendChild(g_dragObject.cloneNode(true));
    }
    g_dragHelper.className = 'drageMeBro';
    g_dragHelper.style.display = 'inline';
    
    g_mouseOffset = {x:5, y:5};//offset the drag object a little so it dosen't obscure the mouse cursor.
    var mousePosition = new GetMousePosition(e);
    g_dragHelper.style.top = (mousePosition.y + g_mouseOffset.y) + 'px';
    g_dragHelper.style.left = (mousePosition.x + g_mouseOffset.x) + 'px';

    g_delayTimeOut = setTimeout("CompleteDelay()",200);
    return false;
}

function DragContainerItem(e, element)
{
    if (!element)
        element = this;
        
    g_isContainerItem = true;
    g_mouseDown = true;

    //save the current drag object.
    g_dragObject = element;
    
    //init the drag helper.
    g_dragHelper.innerHTML = '';
    g_dragHelper.style.display = '';
    g_dragHelper.className = 'drag_list';
    g_dragHelper.appendChild(g_dragObject.cloneNode(true));
    
    //get the mouse offset.
    g_mouseOffset = GetMouseOffset(e, element);
    var mousePosition = GetMousePosition(e);
    
    //set the drag helper position.
    g_dragHelper.style.top = (mousePosition.y + g_mouseOffset.y) + 'px';
    g_dragHelper.style.left = (mousePosition.x + g_mouseOffset.x) + 'px';
    
    //hide the drag object.
    g_dragObject.style.display = 'none';
    
    //no delay necessary for this operation.
    g_delayComplete = true;
    
    //cancel the default action;
    return false;
}

function HighlightTarget()
{
    if (g_dragObject && g_selectedElements.length == 0 && !g_isContainerItem)
    {
        this.style.backgroundColor='#fff';
    }
}

function HighlightMultiTarget()
{
    if (g_dragObject && !g_isContainerItem)
    {
        this.style.backgroundColor='#fff';
    }
}

function UnHighlightTarget(e)
{
    var current;
    var related;
    if (window.event)
    {
        current = this;
        related = window.event.toElement;
    }
    else
    {
        current = e.currentTarget;
        related = e.relatedTarget;
    }

    if (current != related && !Contains(current, related))
    {
        this.style.backgroundColor='';
    }
}

function toggleListReorder(evnt, link)
{
    var reorder = link;
    if (reorder)
    {
        if (reorder.innerHTML == 'Reorder')
            reorder.innerHTML = 'Done'
        else
            reorder.innerHTML = 'Reorder';
    }    
    
    var allLists = document.getElementById('ctl00_ctl00_cphContent_cphLeftSide_JottModule_ListModule_allLists')
    if (allLists)
    {
        var classname = allLists.className;
        if (classname == 'allLists')
            allLists.className = 'security';
        else if (classname == 'security')
            allLists.className = 'allLists';
        else if (classname == 'allListsOn on')
            allLists.className = 'securityOn on';
        else
            allLists.className = 'allListsOn on';
    }
    
    var listContainer = document.getElementById('listContainer');
    if (listContainer)
    {
        var children = listContainer.childNodes;
        for (var i = 0; i < children.length; ++i)
        {
            if (children[i].nodeName == '#text') continue;
            
            if (children[i].className.indexOf('list ') >= 0)
            {
                children[i].className = children[i].className.replace('list ', 'reorder ');
                children[i].onmousedown = DragContainerItem;
            }
            else if (children[i].className.indexOf('listOn ') >= 0)
            {
                children[i].className = children[i].className.replace('listOn ', 'reorderOn ');
                children[i].onmousedown = DragContainerItem;
            }
            else if (children[i].className.indexOf('reorder ') >= 0)
            {
                children[i].className = children[i].className.replace('reorder ', 'list ');
                children[i].onmousedown = null;
            }
            else if (children[i].className.indexOf('reorderOn ') >= 0)
            {
                children[i].className = children[i].className.replace('reorderOn ', 'listOn ');
                children[i].onmousedown = null;
            }
        }
    }
}
