/**This script requires jQuery 1.5.1 or later. 
 * */

var dropArea;

$(document).ready(function() {
	dropArea = document.getElementById("drop");
	document.addEventListener("dragenter", function(){dropArea.style.display = "block";}, false);
	if($.browser.mozilla)
	{
		dropArea.addEventListener("dragover", function(event){ event.stopPropagation(); event.preventDefault();}, false);
		dropArea.addEventListener("drop", upload, false);
		//document.addEventListener("dragleave", function(){dropArea.style.display = "none";}, false);
	}
});

function upload(event) {
	
	var files = event.dataTransfer.files;
	
	dropArea.style.display = "none";
	
	var boundary = 'multipartformboundary' + new Date().getTime();
    var dashdash = '--';
    var crlf     = '\r\n';

    // Build RFC2388 string. 
    var builder = '';
    
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "/UploadServlet", true);
    xhr.setRequestHeader("content-type", "multipart/form-data; boundary=" + boundary)
    
    // For each dropped file. 
    for (var i = 0; i < files.length; i++) {
        var file = files[i];

        builder += dashdash;
        builder += boundary;
        builder += crlf;
        
        // Generate headers.             
        builder += 'content-disposition: form-data; name="user_files[]"';
        if (file.fileName) {
          builder += '; filename="' + file.fileName + '"';
        }
        builder += crlf;

        builder += 'content-type: application/octet-stream';
        builder += crlf;
        builder += crlf; 

        // Append binary data. 
        builder += file.getAsBinary();
        builder += crlf;
    }
    
    // Mark end of the request. 
    builder += dashdash;
    builder += boundary;
    builder += dashdash;
    builder += crlf;

    xhr.sendAsBinary(builder);        
      
    // Prevent browser opening the dragged file. 
    event.stopPropagation();
    event.preventDefault();
}
