/*var uploader=new uploader_class({
	quantity:"1",
	progressHandler:"progress",
	selectHandler:"selected",
	completeHandler:"completed",
	destination:"/upload.php",
	target:"gallery",
	ref:"1",
	name:"uploaderObject",
	container:'flashUploader',
	swf_url:'/bpskin/uploader.swf',
	cookie:'user'
});*/
function ob(id) {return document.getElementById(id);}
function uploader_class(arr) {
	this.parameters=arr;
	
	this.flash_width=arr.width?arr.width:100;
	this.flash_height=arr.height?arr.height:20;
	this.files=[];
	
	this.place_swf=place_swf;
	this.selected=selected;
	this.progress=progress;
	this.completed=completed;
	this.getUserCookie=getUserCookie;
	this.start=start;
	this.object=null;
	
	this.parameters[this.parameters.cookie]=this.getUserCookie(),
	this.place_swf();
	function place_swf() {
		if (swfobject) {
			var params = {
			  width:this.flash_width,
			  height:this.flash_height,
			  menu:false,
			  scale:"noscale",
			  salign:"tl"
			};
			var attributes = {
			  id: this.parameters.name,
			  name: this.parameters.name,
			  wmode: 'transparent'
			};
			swfobject.embedSWF(this.parameters.swf_url, this.parameters.container, this.flash_width, this.flash_height, "9.0.0","expressInstall.swf", this.parameters, params, attributes);
			this.object=swfobject.getObjectById(this.parameters.name);
		}else{
			alert("swfObject is required");
		}
	}
	function selected(files) {
		this.files=files;
		eval(this.parameters.selectHandler+"(files);");
	}
	function progress(index,perc) {
		eval(this.parameters.progressHandler+"(index,perc);");
	}
	function completed(index,reply) {
		eval(this.parameters.completeHandler+"(index,reply);");
	}
	function getUserCookie() {
		var reply="";
		var nameEQ = this.parameters.cookie + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) reply=c.substring(nameEQ.length,c.length);
		}
		return reply;
	}
	function start() {
		swfobject.getObjectById(this.parameters.name).start();
	}
}



function uploadDisplay_class(completedHandler) {
	this.progress=progress;
	this.selected=selected;
	this.completed=completed;
	this.filenameIndex=filenameIndex;
	this.fileSize=fileSize;
	this.completedHandler=completedHandler;
	this.files=[];


	function selected(files) {
		var op='';
		for (var i=0;i<files.length;i++) {
			op+="<div class='file' id='file"+i+"'>"+files[i][0]+"<span>"+this.fileSize(files[i][1])+"</span><div class='progress'><div id='progress"+i+"' class='bar'></div></div><div id='response"+i+"'></div></div>";
			this.files.push({filename:files[i][0],size:files[i][1],uploaded:false});
		}
		ob("uploaderDiv").innerHTML=op;
		for (var i=0;i<files.length;i++) {
			this.files[i].container=ob('file'+i);
			this.files[i].progress=ob('progress'+i);
			this.files[i].response=ob('response'+i);
		}
		ob('uploadbutton').style.display=(files.length>0)?"block":"none";
	}
	function progress(filename,progress) {
		var i=this.filenameIndex(filename);
		this.files[i].progress.style.width=progress+"px";
	}
	function completed(filename,data) {
		var i=this.filenameIndex(filename);
		this.files[i].progress.style.width="auto";
		this.files[i].response.innerHTML=data;
		this.files[i].uploaded=true;
		var finished=true;
		for (var i=0;i<this.files.length;i++) {
			if (!this.files[i].uploaded) finished=false;
		}
		if (finished) eval(this.completedHandler+"();");
	}
	function filenameIndex(fn) {
		var idx=0;
		for(var i=0;i<this.files.length;i++) {
			if (this.files[i].filename==fn) idx=i;
		}
		return idx;
	}
	function fileSize(b) {
		var kb=1024;
		var mb=1024*kb;
		var op='';
		if (b<kb) {
			op=b+"bytes";
		}else if(b<mb) {
			b/=kb;
			op=b.toFixed(2)+"kb";
		}else{ 
			b/=mb;
			op=b.toFixed(2)+"Mb";
		}
		return op;
	}
}
