function InitiateDrag(theDragUrl)
{
	if (theDragUrl != null && theDragUrl.length > 0)
	{
		event.dataTransfer.setData("URL", theDragUrl);
	}
}

var detectableWithVB = false;

function isJavaInstalled()
{
	return navigator.javaEnabled();
}

function isFFPluginInstalled()
{
	var anElement = document.getElementById("dnd-global");
	return anElement != null && anElement.getAttribute("FFpluginInstalled") != null && anElement.getAttribute("FFpluginInstalled").match("true");
}

function isPluginInstalled()
{
	var pluginFound = detectPlugin('MBDragFile');
	// if not found, try to detect with VisualBasic
	if(!pluginFound && detectableWithVB) {
		pluginFound = detectActiveXControl('MBDragFile.MBDragFile.1');
	}
	return pluginFound;
}

function setupDragNDrop()
{
	if (!isPluginInstalled())
	{
			return;
	}
//	alert("Setting up drag-n-drop");
	var links = document.getElementsByTagName("a");
	var l = links.length;
	var c =0;
	for (var i = 0; i < l; i++)
	{
		var element = links.item(i);
		var dragStart = element.getAttribute("dragPath");
		if (dragStart)
		{
			var div = document.createElement("div");
			var objDiv = createObjectDiv("drag_" + c, dragStart);
			div.appendChild(objDiv);
			var standardDiv = document.createElement("div");
			div.appendChild(standardDiv);
			standardDiv.style.textAlign = 'center';
			standardDiv.zIndex = 1;
			element.parentNode.replaceChild(div, element);
			standardDiv.appendChild(element);

			element.onmouseover = new Function("MM_showHideLayers('drag_" + c + "','', 'show')");
			element.onmouseout = new Function("MM_showHideLayers('drag_" + c + "','', 'hide')");
			c++;
		}
	}
}

function createObjectDiv(id, path)
{
	var objDiv = document.createElement("div");
	objDiv.id = id;
	objDiv.name = objDiv.id;
	// "position: relative; top:50%;z-index: 4; visibility: hidden;"
	objDiv.style.position = 'relative';
	objDiv.style.top = "35px";
	objDiv.style.zIndex = 4;
	objDiv.style.visibility = 'hidden';
	// classid="CLSID:3ABCAA3C-4948-4DA5-9600-19B33CF39A30" width="24" height="24"
	var obj = document.createElement("object");
	objDiv.appendChild(obj);
	obj.classid = "CLSID:3ABCAA3C-4948-4DA5-9600-19B33CF39A30";
	obj.style.height = 24;
	obj.style.width = 24;
	var param = document.createElement("param");
	param.name = "DragFile";
	param.value = path;
	obj.appendChild(param);
	objDiv.innerHTML = objDiv.innerHTML;
	return objDiv;
}

if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) {
    document.writeln('<script language="VBscript">');

    document.writeln('\'do a one-time test for a version of VBScript that can handle this code');
    document.writeln('detectableWithVB = False');
    document.writeln('If ScriptEngineMajorVersion >= 2 then');
    document.writeln('  detectableWithVB = True');
    document.writeln('End If');

    document.writeln('\'this next function will detect most plugins');
    document.writeln('Function detectActiveXControl(activeXControlName)');
    document.writeln('  on error resume next');
    document.writeln('  detectActiveXControl = False');
    document.writeln('  If detectableWithVB Then');
    document.writeln('     detectActiveXControl = IsObject(CreateObject(activeXControlName))');
    document.writeln('  End If');
    document.writeln('End Function');

    document.writeln('\'and the following function handles QuickTime');
    document.writeln('Function detectQuickTimeActiveXControl()');
    document.writeln('  on error resume next');
    document.writeln('  detectQuickTimeActiveXControl = False');
    document.writeln('  If detectableWithVB Then');
    document.writeln('    detectQuickTimeActiveXControl = False');
    document.writeln('    hasQuickTimeChecker = false');
    document.writeln('    Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1")');
    document.writeln('    If IsObject(hasQuickTimeChecker) Then');
    document.writeln('      If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then ');
    document.writeln('        detectQuickTimeActiveXControl = True');
    document.writeln('      End If');
    document.writeln('    End If');
    document.writeln('  End If');
    document.writeln('End Function');

    document.writeln('</scr' + 'ipt>');
}

function canDetectPlugins()
{
    return detectableWithVB || (navigator.plugins && navigator.plugins.length > 0);
}

function detectPlugin() {
    // allow for multiple checks in a single pass
    var daPlugins = detectPlugin.arguments;
    // consider pluginFound to be false until proven true
    var pluginFound = false;
    // if plugins array is there and not fake
    if (navigator.plugins && navigator.plugins.length > 0) {
        var pluginsArrayLength = navigator.plugins.length;
        // for each plugin...
        for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ ) {
            // loop through all desired names and check each against the current plugin name
            var numFound = 0;
            for(namesCounter=0; namesCounter < daPlugins.length; namesCounter++) {
                // if desired plugin name is found in either plugin name or description
                if( (navigator.plugins[pluginsArrayCounter].name.indexOf(daPlugins[namesCounter]) >= 0) ||
                    (navigator.plugins[pluginsArrayCounter].description.indexOf(daPlugins[namesCounter]) >= 0) ) {
                    // this name was found
                    numFound++;
                }
            }
            // now that we have checked all the required names against this one plugin,
            // if the number we found matches the total number provided then we were successful
            if(numFound == daPlugins.length) {
                pluginFound = true;
                // if we've found the plugin, we can stop looking through at the rest of the plugins
                break;
            }
        }
    }
    return pluginFound;
} // detectPlugin
