/* sunstorm.net */

jQuery.fn.swap = function(b) {
	b = jQuery(b)[0];
	var a = this[0],
	    a2 = a.cloneNode(true),
	    b2 = b.cloneNode(true),
	    stack = this;
 
	a.parentNode.replaceChild(b2, a);
	b.parentNode.replaceChild(a2, b);
 
	stack[0] = a2;
	return this.pushStack( stack );
};

var folderData = {
	editing : false,
	lastCurrent : null
}
	
// dnd options
var dnd = {
	table: null,
	dragTBody : null,
	dragId : 0,
	dragPos : 0,
	dropPos : 0,
	backup : null,
	options : {
		onDragClass: "trDrag",
		onDragStart: function (table, row) {
			dnd.table = table;
			dnd.backup = table.parentNode.innerHTML;
			for ( var t = 0; t<table.tBodies.length; t++ ) {
				var tBody = table.tBodies[t];
				var count = 0;
				for (var i=0; i<tBody.rows.length; i++) {
					var rows = tBody.rows[i];
					if ( $(rows).hasClass ( 'nodrag' ) || $(rows).hasClass ( 'nodrop' ) )
						continue;
					if (rows == row) {
	                	dnd.dragPos = count;
	                	dnd.dragTBody = tBody;
	                	return;
	                }
	                count++;
	            }
			}
		},
		onDrop: function (table, row) {
			var rows = dnd.dragTBody.rows;
			var count = 0;
			for (var i=0; i<rows.length; i++) {
				if ( $(rows[i]).hasClass ( 'nodrag' ) || $(rows[i]).hasClass ( 'nodrop' ) )
					continue;
                if (rows[i] == row) {
                	dnd.dropPos = count;
                	break;
                }
                count++;
            }
            if (dnd.dragPos == dnd.dropPos) return false;
            dnd.dragId = row.id;
            
            jsonData = {};
            jsonData['record'] = row.id;
            jsonData['position'] = dnd.dropPos;
            
            $.ajax({
				type: "GET",
				url: $('#dndTable table').attr ('url'),
				data: {data : $.toJSON(jsonData)},
				error: function (message) {
					alert(message);
					$('#dndTable').html ( dnd.backup );
					$('#dndTable table').tableDnD ( dnd.options );
				},
				success: function () {
					// restore stripes in the table
					for ( var t = 0; t < dnd.table.tBodies.length; t++ ) {
						var tBody = dnd.table.tBodies[t];
						for (var i=0; i<tBody.rows.length; i++) {
							var rows = tBody.rows[i];
							if ( $(rows).hasClass ( 'nodrag' ) || $(rows).hasClass ( 'nodrop' ) )
								continue;
							if (i % 2) {
			                	$(rows).removeClass ('backing');
			                } else {
			                	$(rows).addClass ('backing');
			                }
			            }
					}
					// swap dnd elements in the tree (if the tree exists)
					var dropId = 0;
					var parentId = $('ul#' + dnd.dragId).parent ().attr ('id');
					if (parentId) {
						$('ul.' + parentId).each (function (i) {
							if (i == dnd.dropPos) dropId = $(this).attr ('id');
						} );
						$('ul#' + dnd.dragId).swap ($('ul#' + dropId));
						initTree ();
						initTreeItems ();
					}
					initCheckedItems ();
				}
			} );
		}
	}
};

$(document).ready ( function ()
{
	// default layout
	if($('#overviewLeft').length) {
		
		$('#overviewLeft p:first').addClass ('gold');
	}
	if($('#other').length) {
		
		$('#other p:first').addClass ('gold');
	}
	if($('#goodiesRight ul').length) {
		
		$('#goodiesRight ul li').prepend ('<img src="/public/img/bul_gray.gif" width="11" height="11" />');
	}
	
	// set MySplitter height
	var splitterHeight = document.body.clientHeight - 280 - 40;
	$('#MySplitter').css ('height', splitterHeight);
	
	// error messages
	if($('#errorMsg').length) {
		tb_show ( "System message", "#TB_inline?inlineId=errorMsg&amp;height=200&amp;width=350", false, true );
		
	}

	// screen shot control
	if($('#ssc').length) {
		
		$('#ssc').screenshotControl ( ssc_data );
		
		$('#ssc').bind ( 'itemChange', function ( e, item ) {
			if ( currentGroup != item.group ) {
				$('#' + currentGroup).hide ();
				
				currentGroup = item.group;

				$('#' + currentGroup).show ();
			}
		} );

		$(".ssc_thumbnail img").hover (
			function () {
				$(this).parent ().addClass ( 'ssc_tmbnHover' );
			}, 
			function () {
				$(this).parent ().removeClass ( 'ssc_tmbnHover' );
			}
		);
	}

	// splitter
	if($('#MySplitter').length) {
		
		$('#MySplitter').splitter ({
			type: "v",
			outline: true,
			minLeft: 100, sizeLeft: 250, minRight: 100,
			resizeToWidth: true,
			cookie: "vsplitter",
			accessKey: 'I'
		});
	}

	// facebook button
	if($('a#facebook').length) {
		
		$('a#facebook').click ( function ()
		{
			$(this).blur ();
		} );
	}
	// twitter button
	if($('a#twitter').length) {
		
		$('a#twitter').click ( function ()
		{
			$(this).blur ();
		} );
	}
	// sign up button
	if($('#mailingList').length) {
		
		$('#mailingList a').click ( function ()
		{
			$(this).blur ();
		} );
	}
	
	initTree ();
	initTreeItems ();
	initExpandCollapseBut ()
	initIsAllowed ();
	initCheckedItems ();
	initSelectedPage ();
	initSelectedFolder ();
	initDisplayMode ();
	initDeleteConfirm ();
	initMoveConfirm ();
	initRestoreConfirm ();
	initRestoreThumbnails ();
	initRevertConfirm ();
	initItemHistory ();
	initBack ();
	
	// print button
	$('.print').click ( function ()
	{
		window.print();
		return false;
	} );
	
	// initialise DnD
	if ($('#dndTable table').length)
    	initDnd ();
	
	// initialise page content
	if ($('#itemTree.pages').length) {
		
		var path = $('#itemTree.pages .current').parent ().attr ('href');
		if (path == 'javascript://')
			return;
		else
			getPageContent ( path );
	}

	// initialise upload
	if($('#uploadFiles').length)
		initUpload ();
	
	// initialise linkBar (cms pages)
	if($('.linkBar').length)
		initLinkBar ();
	
	// login form
	if ($('#login').length) {
		
		$('.loginBox #login_login').focus ();
	}
	$('#loginForm').submit ( function ()
	{
		var login = trim ($('#login_login').val (), ' ');
		var pswd = trim ($('#login_password').val (), ' ');
		
		if (!login || !pswd) {
			$('#butLogin').blur ();
			$('#login_login').focus ();
			return false;
		}
	} );

	// search form
	$('#searchBut').click ( function ()
	{
		$(this).blur ();
		return false;
	} );

	// search form
	/*$('#searchStr').click ( function ()
	{
		if ($('#searchStr').hasClass ('default')) {
			$('#searchStr').removeClass ('default');
			$('#searchStr').val ('');
		}
	} );
	$('#searchStr').blur ( function ()
	{
		search = trim ($('#searchStr').val (), ' ');
		
		if (search == '') {
			$('#searchStr').addClass ('default');
			$('#searchStr').val ('Search');
		}
	} );
	$('#searchForm').submit ( function ()
	{
		search = trim ($('#searchStr').val (), ' ');
		hasClassDefault = ($('#searchStr').hasClass ('default')) ? 1 : 0;
		$('#searchBut').blur ();
		
		if (search == '' || hasClassDefault ) return false;
	} );*/

	// cms forms
	$('form.cms').submit ( function ()
	{
		title = trim ($('#title').val (), ' ');
		if (!title) {
			
			alert ('Title is required.');
			$('#butSubmit').blur ();
			$('#title').focus ();
			return false;
		}
	} );
	
	// my account
	if($('.username').length) {
		id = ($('#id_user').length) ? $('#id_user').val () : 0;
		checkUsername($('.username input').val ());
	
		$('.username input').change ( function () { checkUsername($('.username input').val ()) });
		$('.username input').keyup ( function () { checkUsername($('.username input').val ()) });
	}

	// page title editable
	if($('.pageTitle').length) {
	    $('.pageTitle').editable ( {
			//trigger : $('#renamePageButton'),
			editClass : 'editable',
			noChange : true,
			onSubmit : function ( content )
			{
				if ( (content.current != content.previous) && content.current.length ) {
					// content was changed
					$.ajax({
						type: "GET",
						url: "/cms/page/rename",
						data: {title : content.current, id : $('.pageTitle').attr('id')},
						error: function (XMLHttpRequest, textStatus, errorThrown) {
							var response = XMLHttpRequest.responseText;
							var code = $.evalJSON(response).code;
							var message = $.evalJSON(response).message;
							alert( message );
							$('.pageTitle').html ( content.previous );
						},
						success: function () {
							$('.pageTitle').html ( content.current );
						}
					});
				}
			}
		} );
	}

} );

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

/* thickbox callback */

function dialogCloseConfirm ()
{
	if ( $('#TB_iframeContent').contents().find('#success').length ) {
		window.parent.location.replace ( location.href.split ( '#' ).join ( '' ) );
	}
	return true;
}

function dialogMoveConfirm ()
{
	//window.parent.location.replace('/cms/docs/get');
	return true;
}

function setSuccess ()
{
	$("#TB_overlay").removeData ( 'success' );
	$("#TB_overlay").data ( 'success', 1 );
}

/* not allowed action */

function initIsAllowed ()
{
	$('.notAllowed'). click ( function () {
		
		$(this).blur ();
		alert ( 'You are not allowed to process this action.' );
		return false;
	} );
}

/* checked/unchecked all items */

function initCheckedItems ()
{
	$('#checkedAll').click ( function ()
	{
		if ( $('#checkedAll').attr('checked') ) {
			$('.checkbox').attr({
				checked: true
			});
		} else {
			$('.checkbox').attr({
				checked: false
			});
		}
	} );
}

// Tree ***********************************************************************

/* init tree items */

function initTree ()
{
	// expand / colapse item tree
	$('.status').click ( function ()
	{
		if ($(this).hasClass ('expand'))
		{
			id = $(this).parent ().parent ().attr ('id');
			if (trim ($(this).children ('.button').text())) {
				$(this).children ('.button').text ('+');
				$('.itemTree ul.' + id).css ( { 'display' : 'none' } );
				$(this).addClass ('colapse').removeClass ('expand');
			}
			else {
				$(this).removeClass ('expand');
			}
		}
		else if ($(this).hasClass ('colapse'))
		{
			id = $(this).parent ().parent ().attr ('id');
			if (trim ($(this).children ('.button').text())) {
				$(this).children ('.button').text ('-');
				$('.itemTree ul.' + id).css ( { 'display' : 'block' } );
				$(this).addClass ('expand').removeClass ('colapse');
			}
		}
		$(this).blur ();
	} );
}

function initTreeItems ()
{
	$('.docs .itemLink'). click ( function () 
	{
		if ($(this). children ('span').hasClass ('current'))
		{
			$(this).blur ();
			return false;
		}
		else {
			var e = $(this);
			var path = e.attr ('href');
			var itemName = e.attr ('item');
			
			getFolderContent ( path, itemName, e );
			return false;
		}
	} );
}

/* expandAll / collapseAll buttons */

function initExpandCollapseBut ()
{
	$('#butExpandAll').click ( function ()
	{
		expandAll ();
	} );

	$('#butCollapseAll').click ( function ()
	{
		collapseAll ();
	} );
}

function expandAll ()
{
	$('.status').each ( function (i)
	{
		if ($(this).hasClass ('colapse'))
		{
			id = $(this).parent ().parent ().attr ('id');
			if (trim ($(this).children ('.button').text())) {
				$(this).children ('.button').text ('-');
				$('.itemTree ul.' + id).css ( { 'display' : 'block' } );
				$(this).addClass ('expand').removeClass ('colapse');
			}
		}
	} );
	$('#butExpandAll').blur ();
}

function collapseAll ()
{
	$('.status').each ( function ( i )
	{
		if ($('.status').hasClass ('expand'))
		{
			id = $(this).parent ().parent ().attr ('id');
			if (trim ($(this).children ('.button').text())) {
				$(this).children ('.button').text ('+');
				$('.itemTree ul.' + id).css ( { 'display' : 'none' } );
				$(this).addClass ('colapse').removeClass ('expand');
			}
			else {
				$(this).removeClass ('expand');
			}
		}
	} );
	$('#butCollapseAll').blur ();
}

//Pages ***********************************************************************

function initPages ()
{
	initDnD ();
	initIsAllowed ();
	initCheckedItems ();
	initDeleteConfirm ();
	if($('a.move').length) initMoveConfirm ();
	if($('.displayMode').length) initDisplayMode ();
	if($('a.reload').length) tb_init('a.reload');
	if($('#uploadFiles').length) initUpload ();
}

/* view page content */

function initSelectedPage ()
{
	$('.pages .itemLink').click ( function () {
	
		var id = $(this).parent ().parent ().attr ('id');
		var e = $('ul#' + id + ' .itemLink');
		var path = $(this).attr ('href');
		if (path != 'javascript://') {
			
			getPageContent ( path, e );
			return false;
		}
		else {
			$(this).blur ();
			return false;
		}
	} );
}

function getPageContent ( path, e )
{
	$('#RightPane').css ("cursor", "wait");
	$('#itemTree').css ("cursor", "wait");
	$('#itemTree a').css ("cursor", "wait");
	if (e != null) e.css ("cursor", "wait");
	
	$.ajax ( {
		type: "GET",
		url: path,
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			var response = XMLHttpRequest.responseText;
			var code = $.evalJSON(response).code;
			var message = $.evalJSON(response).message;
			$('#RightPane').css ("cursor", "default");
			$('#itemTree').css ("cursor", "default");
			$('#itemTree a').css ("cursor", "pointer");
			alert( message )
		},
		success: function ( data ) {
			if (data) {
				if (e != null) {
					$('#itemTree .current').removeClass ('current');
					e.children ('span:first').addClass ('current');
					e.blur ();
				}
				$('#RightPane .cont').html ( data );
				$('#RightPane').css ("cursor", "default");
				$('#itemTree').css ("cursor", "default");
				$('#itemTree a').css ("cursor", "pointer");
				
				initPages ();
			}
		}
	} );
}

/* init DnD */

function initDnD ()
{
    $('#dndTable table').tableDnD ( dnd.options );
}

// Documents ******************************************************************

function initDocs ()
{
	initIsAllowed ();
	initCheckedItems ();
	initSelectedFolder ();
	initDisplayMode ();
	initDeleteConfirm ();
	initMoveConfirm ();
	initRestoreConfirm ();
	initRestoreThumbnails ();
	initRevertConfirm ();
	initItemHistory ();
	initBack ();
	if($('a.reload').length) tb_init('a.reload');
	if($('#uploadFiles').length) initUpload ();
}

/* control bar */

function initDisplayMode ()
{
	$('.displayMode').change ( function () {
	
		var path = $('.displayMode option:selected').val ();
		$(this).blur ();
		
		getFolderContent ( path );
	} );
}

function initRestoreThumbnails ()
{
	$('.restoreThumbnails').click ( function () {
	
		var path = $(this).attr ('href');
		$(this).blur ();
		
		getFolderContent ( path );
		return false;
	} );
}

/* view folder content */

function initSelectedFolder ()
{
	$('.folder').click ( function () {
	
		var path = $(this).attr ('href');
		var itemName = $(this).attr ('item');
		var id = $(this).parent ().attr ('id');
		var e = $('ul#' + id + ' .itemLink');
		
		getFolderContent ( path, itemName, e );
		return false;
	} );
}

function getFolderContent ( path, itemName, e )
{
	$('#RightPane').css ("cursor", "wait");
	$('#itemTree').css ("cursor", "wait");
	$('#itemTree a').css ("cursor", "wait");
	if (e != null) e.css ("cursor", "wait");
	
	$.ajax ( {
		type: "GET",
		url: path,
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			var response = XMLHttpRequest.responseText;
			var code = $.evalJSON(response).code;
			var message = $.evalJSON(response).message;
			$('#RightPane').css ("cursor", "default");
			$('#itemTree').css ("cursor", "default");
			$('#itemTree a').css ("cursor", "pointer");
			alert( message )
		},
		success: function ( data ) {
			if (data) {
				if (e != null) {
					$('#itemTree .current').removeClass ('current');
					e.children ('span').addClass ('current');
					e.blur ();
				}
				if (itemName != null) $('.heading').text ( itemName );
				$('#RightPane .cont').html ( data );
				$('#RightPane').css ("cursor", "default");
				$('#itemTree').css ("cursor", "default");
				$('#itemTree a').css ("cursor", "pointer");
				
				initDocs ();
			}
		}
	} );
}

/* delete confirm */

function initDeleteConfirm ()
{
	$('a.delete').click ( function ()
	{
		if ($(this).attr ('id') == "deleteButton") {
			
			$(this).blur ();
			
			if ($('.checkbox:checked').length) {
				
				if (window.confirm ("Do you really want to proceed with the delete action?")) {
					deleteSelected ();
				}
			} else {
				alert('No items selected.');
			}
			return false;
		} else {
			return window.confirm ("Do you really want to proceed with the delete action?");
		}
	} );
}

/* delete items */

function deleteSelected () 
{
	var path = $('#deleteButton').attr('href');
	var replaceUrl = $('#deleteButton').attr('action');
	var jsonData = {};
	$('.checkbox').each (function ( i ) {
		if (this.checked) {
			jsonData[i] = {};
			jsonData[i]['id'] = this.value;
		}
	} );
	
	$.ajax ( {
		type: "GET",
		url: path,
		data: {data : $.toJSON(jsonData)},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			var response = XMLHttpRequest.responseText;
			var code = $.evalJSON(response).code;
			var message = $.evalJSON(response).message;
			alert( message )
		},
		success: function () { location.replace( replaceUrl ) }
	} )
	return false;
}

/* restore confirm */

function initRestoreConfirm ()
{
	$('a.restore').click ( function ()
	{
		if ($(this).attr ('id') == "restoreButton") {
			
			$(this).blur ();
			
			if ($('.checkbox:checked').length) {
				
				if (window.confirm ("Do you really want to proceed with the restore action?")) {
					restoreSelected ();
				}
			} else {
				alert('No items selected.');
			}
			return false;
		} else {
			return window.confirm ("Do you really want to proceed with the restore action?");
		}
	} );
}

/* restore items */

function restoreSelected () 
{
	var path = $('#restoreButton').attr('href');
	var replaceUrl = $('#restoreButton').attr('action');
	var jsonData = {};
	$('.checkbox').each (function ( i ) {
		if (this.checked) {
			jsonData[i] = {};
			jsonData[i]['id'] = this.value;
		}
	} );
	
	$.ajax({
		type: "GET",
		url: path,
		data: {data : $.toJSON(jsonData)},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			var response = XMLHttpRequest.responseText;
			var code = $.evalJSON(response).code;
			var message = $.evalJSON(response).message;
			alert( message )
		},
		success: function () { location.replace( replaceUrl ) }
	} )
}

/* item history (list of revisions) */

function initItemHistory ()
{
	$('a.revision').click ( function ()
	{
		$('#RightPane').css ("cursor", "wait");
		
		$.ajax ( {
			type: "GET",
			url: $(this).attr ('href'),
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				var response = XMLHttpRequest.responseText;
				var code = $.evalJSON(response).code;
				var message = $.evalJSON(response).message;
				alert( message )
			},
			success: function ( data ) {
				if (data) {
					$('#RightPane .cont').html ( data );
					$('#RightPane').css ("cursor", "default");

					initDocs ();
				}
			}
		} );
		return false;
	} );
}

/* revert confirm */

function initRevertConfirm ()
{
	$('.revert').click ( function ()
	{
		if (window.confirm ("Do you really want to proceed with the revert action?")) {
			
			var id = parseInt($(this).attr ('ajax'));
			
			if ( id ) {
			
				$('#RightPane').css ("cursor", "wait");
				
				$.ajax ( {
					type: "GET",
					url: $(this).attr ('href'),
					error: function (XMLHttpRequest, textStatus, errorThrown) {
						var response = XMLHttpRequest.responseText;
						var code = $.evalJSON(response).code;
						var message = $.evalJSON(response).message;
						alert( message )
					},
					success: function () {
						$.ajax ( {
							type: "GET",
							url: '/cms/docs/history/id/' + id,
							error: function (XMLHttpRequest, textStatus, errorThrown) {
								var response = XMLHttpRequest.responseText;
								var code = $.evalJSON(response).code;
								var message = $.evalJSON(response).message;
								alert( message )
							},
							success: function ( data ) {
								if (data) {
									$('#RightPane .cont').html ( data );
									$('#RightPane').css ("cursor", "default");

									initDocs ();
								}
							}
						} );
					}
				} );
				return false;
			}
			else {
				location.replace ( $(this).attr ('href') );
				return false;
			}
		}
	} );
}

/* move confirm */

function initMoveConfirm ()
{
	$('a.move').click ( function ()
	{
		if ($(this).attr ('id') == "moveButton") {
			
			$(this).blur ();
			
			if ($('.checkbox:checked').length) {
				
				tb_show ( "Move items", "/cms/docs/list?TB_iframe=true&height=450&amp;width=450", false, true, dialogMoveConfirm );
			} else {
				alert('No items selected.');
			}
		}
		return false;
	} );
}

/* return to the items list */

function initBack ()
{
	$('.back').click ( function ()
	{
		$('#RightPane').css ("cursor", "wait");
		$(this).blur ();
		
		$.ajax ( {
			type: "GET",
			url: $(this).attr ('href'),
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				var response = XMLHttpRequest.responseText;
				var code = $.evalJSON(response).code;
				var message = $.evalJSON(response).message;
				alert( message )
			},
			success: function ( data ) {
				if (data) {
					$('#RightPane .cont').html ( data );
					$('#RightPane').css ("cursor", "default");

					initDocs ();
				}
			}
		} );
		return false;
	} );
}

// ****************************************************************************

/* Upload files */

var fileUploadDisplays = {};
var needRefresh = false;
var complete = false;
var swfu;

function initUpload ()
{
	var settings = {
		flash_url : "/public/flash/swfupload.swf",
		upload_url: "/cms/docs/upload/?hash=" + getPHPSESSID(),
		
		button_image_url: "",	// Relative to the Flash file
		button_width: "90",
		button_height: "21",
		button_placeholder_id: "uploadFiles",
		button_text: '<span class="uploadBtnLabel">Upload files</span>',
		button_text_style: ".uploadBtnLabel { font-family: verdana; font-size: 11; color: #666666; text-align: center; }",
		button_text_left_padding: 0,
		button_text_top_padding: 3,
		button_cursor: SWFUpload.CURSOR.ARROW,
		button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,
		
		file_types: "*.*",
		file_upload_limit: 0,
		
		file_queued_handler : fileQueued,
		file_queue_error_handler : function () { alert ( 'file_queue_error_handler' ) },
		file_dialog_complete_handler : fileDialogComplete,
		upload_start_handler : uploadStart,
		upload_progress_handler : uploadProgress,
		upload_error_handler : uploadError,
		//upload_success_handler : uploadSuccess,
		upload_complete_handler : uploadComplete,
		queue_complete_handler : queueComplete,
		
		debug : false
	};
	
	swfu = new SWFUpload(settings);
	
	$('body').append ( '<div id="uploadDialog" style="display : none"><a href="#" id="uploadCancelBtn">Cancel uploads</a></div>' );
	$('#uploadCancelBtn').click ( function ()
	{
		if ( window.confirm ( 'Do you want to cancel the upload?' ) ) {
			
			swfu.cancelQueue ();
			needRefresh = true;
			$('#uploadCancelBtn').remove ();
			$('#TB_ajaxContent').append ( '<p><strong>Upload canceled !</strong></p>' );
			return true;
		} else
			return false;
	} );
}

function fileDialogComplete ( numFilesSelected, numFilesQueued )
{
	if ( numFilesSelected > 0 ) {
		needRefresh = false;
		tb_show ( "Uploading files", "#TB_inline?height=400&width=400&inlineId=uploadDialog", false, true, closeConfirm );
		
		this.startUpload ();
	}
}

function fileQueued ( file )
{
	// metoda se vola PRED zobrazenim thickboxu
	
	var uploadDisplay = $('#uploadDialog').prepend ( '<div id="' + file.id + '" class="uploadFile"><div class="fileStatus"><span class="fileName">' + file.name + '</span> pending</div><div class="uploading">Uploading ...</div><div class="progressHolder"><div class="progressBar"></div></div></div>' );
	
	fileUploadDisplays[file.id] = $('#' + file.id);
}

function uploadStart ( file )
{
	complete = false;
	var display = fileUploadDisplays[file.id];
	
	display.find ( '.fileStatus' ).html ( '<span class="fileName">' + file.name + '</span>' );
	display.find ( '.uploading' ).css ( { display : 'block' } );
	display.find ( '.progressHolder' ).css ( { display : 'block' } );
	display.find ( '.progressBar' ).css ( { width : 0 } );
	
	return true;
}

function uploadProgress ( file, bL, bT )
{
	var display = fileUploadDisplays[file.id];
	
	display.find ( '.progressBar' ).css ( { width : display.find ( '.progressHolder' ).width () * bL / bT } );
}

function uploadComplete ( file )
{
	//alert ( 'uploadComplete' )
	
	var display = fileUploadDisplays[file.id];
	
	display.find ( '.fileStatus' ).html ( '<span class="fileName">' + file.name + '</span> complete' );
	display.find ( '.uploading' ).css ( { display : 'none' } );
	display.find ( '.progressHolder' ).css ( { display : 'none' } );
	
	var stats = swfu.getStats ();
	
	//alert (stats.successful_uploads + ', ' + stats.upload_errors + ', ' + stats.upload_cancelled + ', ' + stats.files_queued);
	
	if ( stats.files_queued > 0 ) {
		this.startUpload ();
	} else {
		queueComplete ( stats.successful_uploads );
	}
}

function uploadError ( file, errorCode, message )
{
	alert ( message );
}

function queueComplete ( numFilesUploaded )
{
	//alert ( 'queueComplete' )
	
	complete = true;
	needRefresh = true;
	$('#uploadCancelBtn').remove ();
	$('#TB_ajaxContent').append ( '<p><strong>Upload complete !</strong> &nbsp; ' + numFilesUploaded + ' files uploaded.</p>' )
}

function readCookie(name) {
     var nameEQ = name + "=";
     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) return c.substring(nameEQ.length,c.length);
     }
     return null;
}

function getPHPSESSID ()
{
     return readCookie('PHPSESSID');
}

// upload callback for thickbox
function closeConfirm ()
{
	if ( !complete ) {
		if ( window.confirm ( 'Do you want to cancel the upload?' ) ) {
			try {
				swfu.cancelQueue ();
			} catch (e) {}
			
			$('#uploadCancelBtn').remove ();
			$('#TB_ajaxContent').append ( '<p><strong>Upload canceled !</strong></p>' );
			location.replace ( location.href.split ( '#' ).join ( '' ) );
			return true;
		} else
			return false;
	}
	
	if ( needRefresh )
		location.replace ( location.href.split ( '#' ).join ( '' ) );
	return true;
}
