
var uploaderWidth = 530;
var uploaderHeight = 315;
var uploaderVisible = false;
var uploaderCutHead = 0;
var uploaderApplet = 0;
var submitFormAfterUploadFinished = null;

function isJavaAvailable()
{
//    alert("checking navigator.javaEnabled() = "+((navigator.javaEnabled())?"true":"false"));
//    alert("checking (typeof(java) == 'object') = "+((typeof(java) == 'object')?"true":"false"));
//    alert("typeof(java) = "+typeof(java));
    if (navigator.javaEnabled() && (typeof(java) == 'object'))
    {
	var javastring = new java.lang.String("Java available");
	if ((javastring != null) && (javastring == "Java available"))
	{
	    return true;
	}
    }
    return false;
}

function isUploaderVisible()
{
    return uploaderVisible;
}

function submitForm(requestForm)
{
////    var requestForm = submitFormAfterUploadFinished;
//    if (requestForm)
//	requestForm.submit();
//    else
//	alert("submitFormAfterUploadFinished: no form specified!");
    alert("Thank you for your patience. You can now submit your service request.");
}

/**
 * applet initialized notification
 */
function appletInitialized( applet )
{
    //
    // reset variables
    submitFormAfterUploadFinished = null;

    //
    // show the uploader applet
    var uploadAppletArea = document.getElementById("dUploadApplet");
    if (uploadAppletArea != null)
    {
//	uploadAppletArea.style.height = uploaderHeight+"px";
	uploadAppletArea.style.height = "";
	uploadAppletArea.style.overflow = "auto";

	uploadAppletArea.style.width = uploaderWidth+"px";
	uploadAppletArea.style.height = (uploaderHeight-uploaderCutHead)+"px";
	uploadAppletArea.style.overflow = "hidden";
    }

    //
    // show the uploader applet
//    var uploadApplet = document.getElementById("uploaderApplet");
//    if (uploadApplet != null)
//    {
//	uploadApplet.style.position = "relative";
//	uploadApplet.style.top = (-uploaderCutHead)+"px";
//    }

    //
    // hide the text message
    var uploadTextArea = document.getElementById("dUploadText");
    if (uploadTextArea != null)
    {
	uploadTextArea.innerHTML = "";
	uploadTextArea.style.height = "0px";
	uploadTextArea.style.overflow = "hidden";
    }

    //
    // add custom attributes
    if (applet != null)
    {
	//
	// add the unique ID as attribute to jumploader
	uploaderApplet = applet.getUploader();
	var uploader = applet.getUploader();
	var attrSet = uploader.getAttributeSet();
	var attr = attrSet.createStringAttribute( "uniqueID", document.getElementById('uniqueID').value );
	attr.setSendToServer( true );
    }
    else
    {
	alert("applet is unknown!");
    }
}

function uploaderStatusChanged( uploaderApplet )
{
    var filesTotalCount = uploaderApplet.getFileCount();
    var filesTotalBytes = uploaderApplet.getFilesLength();
    var filesReadyCount = uploaderApplet.getFileCountByStatus(0);
    var filesUploadingCount = uploaderApplet.getFileCountByStatus(1);
    var filesFinishedCount = uploaderApplet.getFileCountByStatus(2);
    var filesFailedCount = uploaderApplet.getFileCountByStatus(3);
    var statusReady = (uploaderApplet.getStatus() == 0);
    var statusUploading = (uploaderApplet.getStatus() == 1);
    if ((statusReady) && (!statusUploading) && (filesUploadingCount == 0) && (filesReadyCount == 0) && (!uploaderApplet.isUploading()))
    {
	if (filesFailedCount > 0)
	{
	    alert("Couldn't upload one or more files!");
	    submitFormAfterUploadFinished = null;
	}
	else if (submitFormAfterUploadFinished)
	{
	    submitForm(submitFormAfterUploadFinished);
	}
    }

//    var messageBox = document.getElementById("messageBox");
//    messageBox.innerHTML = messageBox.innerHTML + "<br>uploaderStatusChanged: " + uploaderApplet.getStatus();
}

function toggleUploadWindow()
{
//    if (!isJavaAvailable())
//    {
//	alert("You have to install java to upload files");
////	return;
//    }
    if (!uploaderVisible)
    {
	alert("Warning: For uploading files, we use a java client applet which is run on your computer. For it to work, you must have installed the Java Runtime Environment and accept the upcoming certificate warning.");
	//
	// make jumploader visible..
	//
	uploaderVisible = true;
	var uploaderCode = "";
	uploaderCode = uploaderCode + "<applet name='jumpLoaderApplet' id='uploaderApplet' code='jmaster.jumploader.app.JumpLoaderApplet.class' archive='/jumploader/jumploader_z.jar'";
	uploaderCode = uploaderCode + " width='"+uploaderWidth+"' height='"+uploaderHeight+"'";
	uploaderCode = uploaderCode + "   mayscript>";
	uploaderCode = uploaderCode + "   <param name='gc_loggingLevel' value='INFO'/>";
	uploaderCode = uploaderCode + "   <param name='uc_uploadUrl' value='/jumploader/upload.php'/>";
//	uploaderCode = uploaderCode + "   <param name='uc_partitionLength' value='1048576'/>";
	uploaderCode = uploaderCode + "   <param name='uc_partitionLength' value='500000'/>";
//	uploaderCode = uploaderCode + "   <param name='uc_maxFileLength' value='52428800'/>";
	uploaderCode = uploaderCode + "   <param name='uc_maxFileLength' value='209715200'/>";
	uploaderCode = uploaderCode + "   <param name='ac_fireAppletInitialized' value='true'/>";
//	uploaderCode = uploaderCode + "   <param name='ac_fireUploaderFileAdded' value='true'/>";
//	uploaderCode = uploaderCode + "   <param name='ac_fireUploaderFileRemoved' value='true'/>";
//	uploaderCode = uploaderCode + "   <param name='ac_fireUploaderFileMoved' value='true'/>";
//	uploaderCode = uploaderCode + "   <param name='ac_fireUploaderFileStatusChanged' value='true'/>";
//	uploaderCode = uploaderCode + "   <param name='ac_fireUploaderFilesReset' value='true'/>";
	uploaderCode = uploaderCode + "   <param name='ac_fireUploaderStatusChanged' value='true'/>";
//	uploaderCode = uploaderCode + "   <param name='ac_fireUploaderSelectionChanged' value='true'/>";
	uploaderCode = uploaderCode + " </applet>";

	var uploadTextArea = document.getElementById("dUploadText");
	if (uploadTextArea != null)
	{
	    uploadTextArea.innerHTML = "please wait for the applet to load...";
	    uploadTextArea.style.height = uploaderHeight+"px";
	    uploadTextArea.style.overflow = "auto";
	}
	var uploadAppletArea = document.getElementById("dUploadApplet");
	if (uploadAppletArea != null)
	{
	    uploadAppletArea.style.height = "0px";
	    uploadAppletArea.style.overflow = "hidden";
	    uploadAppletArea.innerHTML = uploaderCode;
	}
    }
    else
    {
	//
	// hide jumploader
	//
	uploaderVisible = false;

	var uploadTextArea = document.getElementById("dUploadText");
	if (uploadTextArea != null)
	{
	    uploadTextArea.style.height = "0px";
	    uploadTextArea.style.overflow = "hidden";
	    uploadTextArea.innerHTML = "";
	}
	var uploadAppletArea = document.getElementById("dUploadApplet");
	if (uploadAppletArea != null)
	{
	    uploadAppletArea.style.height = "0px";
	    uploadAppletArea.style.overflow = "hidden";
	    uploadAppletArea.innerHTML = "";
	}
    }
}

function uploadFilesBeforeSubmittingForm(formID)
{
    if (typeof(formID) == 'undefined')
    {
	alert("You have to specify the id of the form!");
	return false;
    }
    var requestForm = document.getElementById(formID);
    if (!requestForm)
    {
	alert("Didn't find form '"+formID+"'!");
	return false;
    }

    //var uploaderApplet = document.jumpLoaderApplet.getUploader();
    if (uploaderApplet)
    {
	var filesTotalCount = uploaderApplet.getFileCount();
	var filesTotalBytes = uploaderApplet.getFilesLength();
	var filesReadyCount = uploaderApplet.getFileCountByStatus(0);
	var filesUploadingCount = uploaderApplet.getFileCountByStatus(1);
	var filesFinishedCount = uploaderApplet.getFileCountByStatus(2);
	var filesFailedCount = uploaderApplet.getFileCountByStatus(3);

	if ((filesUploadingCount > 0) || (uploaderApplet.isUploading()))
	{
	    alert("Please wait until all files are uploaded.");
	    submitFormAfterUploadFinished = requestForm;
	    return false;
	}

	if (filesReadyCount > 0)
	{
	    if (uploaderApplet.isUploadEnabled() && uploaderApplet.canStartUpload())
	    {
		submitFormAfterUploadFinished = requestForm;
		alert("Click OK to start uploading your file(s).");
		var errormessage = uploaderApplet.startUpload();
		if (errormessage != null)
		{
		    alert("Uploading files failed: "+errormessage);
		}
	    }
	    else
	    {
		alert("Please upload your files before submitting the form.");
	    }
	    return false;
	}

	if (filesFailedCount > 0)
	{
	    Check = confirm("Not all files were uploaded! Do you still want to submit the form?");
	    if (Check == true)
		return true;
	    return false;
	}
    }
    return true;
}
