/* w2box: web 2.0 File Repository
 * (c) 2005-2006, Cl�ment Beffa
 * http://labs.beffa.org/w2box/
 *
 */
var usid="";

function renameSync(uform) {
	var fn = uform.file.value;
	if (fn == "")
		uform.filename.value = '';
	else 
	{
		var filename = fn.match(/[\/|\\]([^\\\/]+)$/);
		if (filename==null)
			filename = fn; //opera...
		else
			filename = filename[1];

		uform.filename.value = filename;
	}

	filetypeCheck(uform);
}

function filetypeCheck(uform) {
	var fn = uform.filename.value;
	if (fn == ""){
		$('allowed').className ='';		
		uform.upload.disabled = true;
	} else {
		var ext = fn.split(".");
		if (ext.length==1)
			ext = '.noext.';
		else
			ext = '.' + ext[ext.length-1].toLowerCase() + '.';

		if (ALLOWED_TYPES.indexOf(ext) == -1){
			$('allowed').className ='Error';		
			uform.upload.disabled = true;
		} else {
			$('allowed').className ='';				
			uform.upload.disabled = false;
		}
	}

}
var UPLOAD_SCRIPT = '/musicUploadUpload.cgi';
var MAX_FILESIZE = '1000000000000000';
//enable ajax functionality
function beginUpload(sid,uform,uploadFilenameDiv,uploadBarWrapperDiv,uploadBarDiv,uploadIframe,uploadTypeID,uploadTypeKeyID) 
{
	if (uform.file.value=="") { 
		$("ErrorMessageContent").update('You must choose a file to upload.'); 
		$("ErrorMessage").appear({duration: .3});
		return;
	} //no file, no upload
	usid=sid;
	uform.finished = false;
	//define vars
	var upb = $( uploadBarWrapperDiv );
	//make appear the progress bar
	$( uploadFilenameDiv ).innerHTML = uform.file.value;
	upb.style.height = uform.offsetHeight+"px";
	uform.style.display = 'none';
	upb.style.display = 'block';
	$(uploadBarDiv).style.width = 0;
	$(uploadBarDiv).update('0');
	//redefine where the form post goes
	uform.action = UPLOAD_SCRIPT+'?sid='+sid+'&maxsize='+MAX_FILESIZE;
	uform.target = uploadIframe;
	uform.submit();
	
	//ajax magic
	uform.uploadUpdater = 
		new Ajax.PeriodicalUpdater(uploadBarDiv,'/ajax_actions.php?action=upload_file', 
			{	'frequency' : 6.0,
				'method': 'post',
				parameters : {
					progress: sid
				},
				'onSuccess' : function(req) { updateProgress( req, uform, uploadBarDiv,uploadTypeID,uploadTypeKeyID,sid ); },
				'onFailure' : function(req) { updateProgress( req, uform, uploadBarDiv,uploadTypeID,uploadTypeKeyID,sid ); },
				evalScripts: true
			} );
	
}
var dongle = 'penis';
//update progress bar
function updateProgress(req,uform,uploadBarDiv,uploadTypeID,uploadTypeKeyID,sid) {
	if (uform.finished) return;
	
	var pb = $(uploadBarDiv);
	//we expect a number
	var percent = parseInt(req.responseText);
	pb.innerHTML = req.responseText + '%';
	//not a number...
	if (isNaN(percent)) {
		uform.finished = true;
		uform.uploadUpdater.stop();
		
		if (req.responseText == "FINISHED") {
			pb.innerHTML = 'Processing (can take up to 12 seconds)...';
			pb.style.width = "100%";
			new Ajax.Request('/ajax_actions.php',{
					parameters: {
						action: 'upload_file',
						sid: sid,
						upload_type_id: uploadTypeID,
						upload_type_key_id: uploadTypeKeyID
					},
					onComplete: function (response) {
						completeUpload(uploadTypeID,response);
					},
					evalJSON: 'force'
			});
			//top.location = top.location.href + '&time=' + (new Date()).getTime();
			return;
		}
		
		pb.style.width=0;
		//error form redirect
		return;
		var form = document.createElement('form');
		form.method = 'post';
		var input = document.createElement('input');
		input.type = 'hidden';
		input.name = 'errormsg';
		input.value = escape(req.responseText);
		form.appendChild(input);
		document.body.appendChild(form);
		form.submit(); //redirect
	} else {
		if(!percent) percent = 0;
		if(percent > 100) percent = 100;
		pb.style.width = ""+percent+"%";
	}
}
