top.Event.observe(window, 'load', function() { window.setTimeout( replaceAnchors, 5); }, false);

function replaceAnchors()
{
        var anchors = document.getElementsByTagName('a');
        var qs = getQueryStringArray();
        for (var i=0;i<anchors.length;i++)
        {
            if (isInternalLink(anchors[i]) && anchors[i].href.indexOf('#') < 0)
            {
		        if (anchors[i].href.indexOf('?') > 0)
				{
			        anchors[i].href = anchors[i].href + '&wysiwyg=' + qs['wysiwyg'];
				}
		        else 
				{
					var oldText = anchors[i].innerHTML;
			        anchors[i].href = anchors[i].href + '?wysiwyg=' + qs['wysiwyg'];
					//woraround for weird bug in MSIE: seems to mess up innerhtml when a @ is present in the innerHTML
					if ((oldText.indexOf('@') > 0) && document.all)
					    anchors[i].innerHTML = oldText;
				}
            }
        }
}

var hreffilters = ['javascript:', 'ftp:', 'mailto:', 'gopher:', 'news:', 'torrent:', 'ed2k:'];
function isInternalLink(anchor) {
    var href = anchor.href;
    
    if(!href)
        return false;   
    
    var intern =((href.indexOf('http') != 0) || (href.indexOf(top.mm_siteUrl) == 0))
                && (href.indexOf('wysiwyg=') < 0);
                
    if(!intern)
        return false;
    else {
        for(var i = 0; i < hreffilters.length; i++) {
            if(href.indexOf(hreffilters[i]) >= 0)
                return false;
        }
    }
    
    return true;
}


var movingBlock;
var offsetL = -1;
var offsetT = -1;
var startX = -1;
var startY = -1;
var movedX = 0;
var movedY = 0;

function mmdragstart()
{
	movingBlock = window.event.srcElement;
	// offset should be negative since otherwise it will appear directly under the mouse,
	// preventing the drop in the correct container
	offsetL = -1;
	offsetT = -1;
    startX = -1;
    startY = -1;	
    movedX = 0;
    movedY = 0;	
		
	while((!movingBlock.dragargument) && (movingBlock != document))
	{
		movingBlock = movingBlock.parentNode;
	}
	
	
	var tmp = movingBlock.offsetParent;
	while(tmp)
	{
		mstyle = (tmp.currentStyle) ? tmp.currentStyle : tmp.style;
					
		if(mstyle.position == 'relative')
		{
			offsetL += tmp.offsetLeft;
			offsetT += tmp.offsetTop;
		}
		else if(mstyle.position == 'absolute')
		{
			break;
		}
			
		tmp = tmp.offsetParent;			
	}
		
	dcopy = movingBlock.cloneNode(true);
	dcopy.className = dcopy.className.replace('_hover', '');
	movingBlock.parentNode.insertBefore(dcopy, movingBlock);
		
	movingBlock.style.position = 'absolute'
	movingBlock.style.filter = 'alpha(opacity=25)';
	movingBlock.ondrag = mmdrag;
	movingBlock.ondragend = mmdragend;	 
	top.dragArgument = movingBlock.dragargument;
}

function mmdragend()
{
	var nodeToBeDeleted = window.event.srcElement;	
	
	// if srcElement is the icon then it won't work because it overrides the containing div(which should be the correct srcElement)
	// so we need to get the parent div in this case to make it work allright
	if(nodeToBeDeleted.childNodes.length==0)
		nodeToBeDeleted = nodeToBeDeleted.parentNode;
	
	nodeToBeDeleted.removeNode(true);
}

function mmdrag()
{
    if(startY == -1)
    {
        movedY = 0;
        startY = window.event.clientY;
    }
    else
    {
        movedY = startY - window.event.clientY;
    }

    if(startX == -1)
    {
        movedX = 0;
        startX = window.event.clientX;
    }
    else
    {
        movedX = startX - window.event.clientX;  
    }    
    
    
	movingBlock.style.pixelTop = window.event.clientY-offsetT;
	movingBlock.style.pixelLeft = window.event.clientX-offsetL;
}

function mmdrop()
{
    if( ((movedX < -5) || (movedX > 5) || (movedY < -5) || (movedY > 5)) || ((startX == -1) && (startY == -1)) )
    {
	    var target = window.event.srcElement;

	    while ((target != document) && (!isDropZone(target)))
	    {
		    target = target.parentNode;
	    }
    	
	    target.className = target.className.replace('_dragover', '');
	    //replace using on cliboard for drag and drop...
	    var mmcommand = top.dragArgument;

	    if(mmcommand)
	    {
		    var parts = mmcommand.split(':');
    		
		    mmcommandname = parts[0].toLowerCase();
		    mmparam = parts[1];

		    switch(mmcommandname)
		    {
			    case "addchild":
			        wizurl = top.mm_baseUrl + target.getAttribute('objectId') + '/addchild.aspx?objecttype=' + mmparam;
			        if (target.getAttribute('displayOrder'))
					    wizurl += "&displayOrder=" + target.getAttribute('displayOrder');
				    openWizard(wizurl);
				    break;
			    case "move":
				    if(moveobject)
					    moveobject(mmparam, target.getAttribute('objectId'), (target.getAttribute('displayOrder')) ? target.getAttribute('displayOrder') : -1);
				    event.cancelBubble = true;
				    break;
			    default:
				    alert('unknown command ' + mmcommandname);
				    break;
		    }
	    }
	}
}

function mmdragover()
{
	sender = window.event.srcElement;

	while ((sender != document) && (!isDropZone(sender)))
	{
		sender = sender.parentNode;
	}

	if(sender.className.indexOf('_dragover') < 0)
	{
		sender.className += '_dragover';
	}
	
	window.event.returnValue=false;	
}

function mmdragleave()
{
	sender = window.event.srcElement;

	while ((sender != document) && (!isDropZone(sender)))
	{
		sender = sender.parentNode;
	}

	sender.className = sender.className.replace('_dragover', '');
	window.event.returnValue=false;
}

function isDropZone(elm) {
    var idzAttribute = elm.getAttribute("isdropzone");
    return ((idzAttribute) && (idzAttribute.toLowerCase() == 'true'));
}

function mmdragenter()
{
	window.event.returnValue=false;
}

