var uploader;

YAHOO.util.Event.onDOMReady(function () { 
	var uiLayer = YAHOO.util.Dom.getRegion('selectLink');
	var overlay = YAHOO.util.Dom.get('uploaderOverlay');
	YAHOO.util.Dom.setStyle(overlay, 'width', uiLayer.right-uiLayer.left + "px");
	YAHOO.util.Dom.setStyle(overlay, 'height', uiLayer.bottom-uiLayer.top + "px");

	// Custom URL for the uploader swf file (same folder).
	YAHOO.widget.Uploader.SWFURL = "http://ceskyveteran.cz/swf/uploader.swf";

	// Instantiate the uploader and write it to its placeholder div.
	uploader = new YAHOO.widget.Uploader( "uploaderOverlay" );

	// Add event listeners to various events on the uploader.
	// Methods on the uploader should only be called once the 
	// contentReady event has fired.

	uploader.addListener('contentReady', handleContentReady);
	uploader.addListener('fileSelect', onFileSelect)
	uploader.addListener('uploadStart', onUploadStart);
	uploader.addListener('uploadProgress', onUploadProgress);
	uploader.addListener('uploadCancel', onUploadCancel);
	uploader.addListener('uploadComplete', onUploadComplete);
	uploader.addListener('uploadCompleteData', onUploadResponse);
	uploader.addListener('uploadError', onUploadError);
	uploader.addListener('rollOver', handleRollOver);
	uploader.addListener('rollOut', handleRollOut);
	uploader.addListener('click', handleClick);
});

	
// Variable for holding the filelist.
var fileList;

// When the mouse rolls over the uploader, this function
// is called in response to the rollOver event.
// It changes the appearance of the UI element below the Flash overlay.
function handleRollOver () {
	YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get('selectLink'), 'color', "#FFFFFF");
	YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get('selectLink'), 'background-color', "#000000");
}

// On rollOut event, this function is called, which changes the appearance of the
// UI element below the Flash layer back to its original state.
function handleRollOut () {
	YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get('selectLink'), 'color', "#0000CC");
	YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get('selectLink'), 'background-color', "#FFFFFF");
}

// When the Flash layer is clicked, the "Browse" dialog is invoked.
// The click event handler allows you to do something else if you need to.
function handleClick () {
}

// When contentReady event is fired, you can call methods on the uploader.
function handleContentReady () {
	// Allows the uploader to send log messages to trace, as well as to YAHOO.log
	uploader.setAllowLogging(true);

	// Allows multiple file selection in "Browse" dialog.
	uploader.setAllowMultipleFiles(true);

	// New set of file filters.
	var ff = new Array({description:"Images", extensions:"*.jpg;*.png;*.gif"}  );
				   
	// Apply new set of file filters to the uploader.
	uploader.setFileFilters(ff);
}

// Actually uploads the files. In this case,
// uploadAll() is used for automated queueing and upload 
// of all files on the list.
// You can manage the queue on your own and use "upload" instead,
// if you need to modify the properties of the request for each
// individual file.
function upload() {
if (fileList != null) {
	uploader.setSimUploadLimit(parseInt(document.getElementById("simulUploads").value));
	uploader.uploadAll("http://ceskyveteran.cz/upload.php", "POST", {'galleryID': galleryID}, "Filedata");
}	
}

// Fired when the user selects files in the "Browse" dialog
// and clicks "Ok".
function onFileSelect(event) {
	if('fileList' in event && event.fileList != null) {
		fileList = event.fileList;
		createDataTable(fileList);
	}
}

function createDataTable(entries) {
  rowCounter = 0;
  this.fileIdHash = {};
  this.dataArr = [];
  for(var i in entries) {
	 var entry = entries[i];
	 entry["progress"] = "<div style='height:5px;width:100px;background-color:#CCC;'></div>";
	 dataArr.unshift(entry);
  }

  for (var j = 0; j < dataArr.length; j++) {
	this.fileIdHash[dataArr[j].id] = j;
  }

	var myColumnDefs = [
	{key:"name", label: "Název souboru", sortable:false},
		{key:"size", label: "Velikost", sortable:false},
		{key:"progress", label: "Stav nahrání", sortable:false}
	];

  this.myDataSource = new YAHOO.util.DataSource(dataArr);
  this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
  this.myDataSource.responseSchema = {
  fields: ["id","name","created","modified","type", "size", "progress"]
  };

  this.singleSelectDataTable = new YAHOO.widget.DataTable("dataTableContainer",
	   myColumnDefs, this.myDataSource, {
		   caption:"Fotky k nahrání",
		   selectionMode:"single"
	   });
}

// Do something on each file's upload start.
function onUploadStart(event) {

}

// Do something on each file's upload progress event.
function onUploadProgress(event) {
	rowNum = fileIdHash[event["id"]];
	prog = Math.round(100*(event["bytesLoaded"]/event["bytesTotal"]));
	progbar = "<div style='height:5px;width:100px;background-color:#CCC;'><div style='height:5px;background-color:#F00;width:" + prog + "px;'></div></div>";
	singleSelectDataTable.updateRow(rowNum, {name: dataArr[rowNum]["name"], size: dataArr[rowNum]["size"], progress: progbar});	
}

// Do something when each file's upload is complete.
function onUploadComplete(event) {
	rowNum = fileIdHash[event["id"]];
	prog = Math.round(100*(event["bytesLoaded"]/event["bytesTotal"]));
	progbar = "<div style='height:5px;width:100px;background-color:#CCC;'><div style='height:5px;background-color:#F00;width:100px;'></div></div>";
	singleSelectDataTable.updateRow(rowNum, {name: dataArr[rowNum]["name"], size: dataArr[rowNum]["size"], progress: progbar});
}

// Do something if a file upload throws an error.
// (When uploadAll() is used, the Uploader will
// attempt to continue uploading.
function onUploadError(event) {

}

// Do something if an upload is cancelled.
function onUploadCancel(event) {

}

// Do something when data is received back from the server.
function onUploadResponse(event) {

}

