function fileQueued(file)
{
	var ext = file.name.split('.').last();
	window.ext = ext;
	try {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setStatus("Pending...");
		progress.togglecancel(true, this);
	} catch (ex) {
		this.debug(ex);
	}
}


function fileQueueError(file, errorCode, message) 
{
	try {
		if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
			alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
			return;
		}

		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setError();
		progress.togglecancel(true);

		switch (errorCode) {
		case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
			progress.setStatus("File is too big.");
			this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
			progress.setStatus("Cannot upload Zero Byte files.");
			this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
			progress.setStatus("Invalid File Type.");
			this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		default:
			if (file !== null) {
				progress.setStatus("Unhandled Error");
			}
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		}
	} 
	catch (ex) {
	  this.debug(ex);
	}
}


function fileDialogComplete(numFilesSelected, numFilesQueued) 
{
	try {
		if (numFilesSelected > 0) {
			document.getElementById(this.customSettings.cancelButtonId).disabled = false;
		}
		
		foo = String(document.location).split('/').last() != 'new' ? String(document.location).split('/').last() : '';
		
		if(window.swfu.settings.for_what && window.swfu.settings.for_what.length > 0)
			foo = '';
		
		if(foo.length > 0)
		{
			window.swfu.setPostParams(
			{
				PHPSESSID:PB.sessData.sess_id,
				gallery_pretty_url:foo
			});
		}
		else
		{
			window.swfu.setPostParams(
			{
				PHPSESSID:PB.sessData.sess_id
			});
		}
		/* I want auto start the upload and I can do that here */
		this.startUpload();
	} catch (ex)  {
	      this.debug(ex);
	}
}


function uploadStart(file) 
{
	try {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setStatus("Uploading...");
		progress.togglecancel(true, this);
	}
	catch (ex) {}

	return true;
}


function uploadProgress(file, bytesLoaded, bytesTotal) 
{
	try {
		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);

		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setProgress(percent);
		progress.setStatus("Uploading...");
	} catch (ex) {
		this.debug(ex);
	}
}


function uploadError(file, errorCode, message) 
{
	try {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setError();
		progress.togglecancel(true);

		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
			progress.setStatus("Upload Error: " + message);
			this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
			progress.setStatus("Upload Failed.");
			this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.IO_ERROR:
			progress.setStatus("Server (IO) Error");
			this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
			progress.setStatus("Security Error");
			this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
			progress.setStatus("Upload limit exceeded.");
			this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
			progress.setStatus("Failed Validation.  Upload skipped.");
			this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
			// If there aren't any files left (they were all cancelled) disable the cancel button
			if (this.getStats().files_queued === 0) {
				document.getElementById(this.customSettings.cancelButtonId).disabled = false;
			}
			progress.setStatus("Cancelled");
			progress.setCancelled();
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			progress.setStatus("Stopped");
			break;
		default:
			progress.setStatus("Unhandled Error: " + errorCode);
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		}
	} catch (ex) {
	      this.debug(ex);
	  }
}

//response.file_name,response.file_src,response.ext,response.date,response.file_id
function addToFiles(file_name,file_src,file_ext,date,file_id)
{
	if($$('.remove_me').length >0)
		$$('.remove_me')[0].remove();
	
	var img = 
	'<li>'+
   '<div class="result_file">'+
   		'<div class="buttons">'+
         '<a href="javascript:PB.Action.deleteFile('+file_id+');">Delete File</a>'+
      '</div>'+
      '<div class="title">'+
        '<span class="'+file_ext+'"></span><a href="'+file_src+'">'+file_name+'</a> - '+date+
      '</div>'+
   '</div>'+
'</li>';

	$('results_page_1').down('ul').insert(img);
}

function addToGallery(image_src,image_pretty_url)
{
	if($$('.remove_me').length >0)
		$$('.remove_me')[0].remove();
	
	var img = 
	'<li>'+
    '<div class="title">'+
        //'<a href="'+image_pretty_url+'">no title</a>'+
    '</div>'+
    '<div class="image">'+
        '<a href="'+image_pretty_url+'"><img src="'+image_src+'"/><div class="tr"></div>'+
        '<div class="tl"></div>'+
        '<div class="br"></div>'+
        '<div class="bl"></div></a>'+
    '</div>'+
'</li>';
	
	$('results_page_1').down('ul').insert(img);
}

function isArray()
{
	if (typeof arguments[0] == 'object') 
	{  
		var criterion = arguments[0].constructor.toString().match(/array/i); 
		return (criterion != null);  
	}
	return false;
}

function uploadSuccess(file, serverData) 
{
	window.serverData = serverData;
	
	var response = eval('('+serverData+')');
	if(response.code && response.code == 200)
	{
			if(window.swfu.settings.for_what == 'mailer_image')
			{
				PB.Mailer.addImage(response.image_src);
			}
			else if(window.swfu.settings.for_what == 'selling_images')
			{
				if($$('#selling_images img').length >= 4)
		    {
		      window.growler.error('you already have 4 images.',{header:'Error.'});
		      return;
		    }
		    //selling_id = $('selling_id').value;
		    lightwindow_a = new Element('a',{rel:'lightbox',href:response.image_src});
		    new_img = new Element('img',{src:response.image_src});
		    lightwindow_a.update(new_img);
				lightwindow_a.insert('<div class="tr"></div><div class="tl"></div><div class="br"></div><div class="bl"></div>');
		     image_holder = new Element('div',{'class':'image'});
				image_holder.update(lightwindow_a);
				$('selling_images').insert(image_holder);
		    $('selling_images').insert(image_holder);
				
		    img_input = new Element('input',{type:'hidden',id:'selling_image['+($$('#selling_images img').length +1)+']',name:'selling_image['+($$('#selling_images img').length +1)+']',value:response.image_src});
		    
		    if($('selling_image['+($$('#selling_images img').length +1)+']'))
		    	$('selling_image['+($$('#selling_images img').length +1)+']').remove();
		    
		    $('user_new_selling_form').insert(img_input);
			
			}
			else if(window.swfu.settings.for_what == 'selling_image')
			{
				lightwindow_a = new Element('a',{rel:'lightbox',href:response.image_src});
		    new_img = new Element('img',{src:response.image_src});
		    lightwindow_a.update(new_img);
				lightwindow_a.insert('<div class="tr"></div><div class="tl"></div><div class="br"></div><div class="bl"></div>');
		    $('selling_image').update(lightwindow_a);

		    img_input = new Element('input',{type:'hidden',id:'selling_image[1]',name:'selling_image[1]',value:response.image_src});
		    if( $('selling_image[1]'))
		    $('selling_image[1]').remove();
		    $('user_new_selling_form').insert(img_input);
			}
			else if(window.swfu.settings.for_what == 'new_deal_image')
			{
		    lightwindow_a = new Element('a',{rel:'lightbox',href:response.image_src});
		    new_img = new Element('img',{src:response.image_src});
		    lightwindow_a.update(new_img);
				lightwindow_a.insert('<div class="tr"></div><div class="tl"></div><div class="br"></div><div class="bl"></div>');
		    $('deal_image').update(lightwindow_a);
		    img_input = new Element('input',{type:'hidden',id:'deals[image_src]',name:'deals[image_src]',value:response.image_src});
		    if($('deals[image_src]'))
		    $('deals[image_src]').remove();
		    $('user_new_deals_form').insert(img_input);
			}
			else if(window.swfu.settings.for_what == 'edit_deal_image')
			{
		    lightwindow_a = new Element('a',{rel:'lightbox',href:response.image_src});
		    new_img = new Element('img',{src:response.image_src});
		    lightwindow_a.update(new_img);
				lightwindow_a.insert('<div class="tr"></div><div class="tl"></div><div class="br"></div><div class="bl"></div>');
		    $('deal_image').update(lightwindow_a);
		    img_input = new Element('input',{type:'hidden',id:'deals[image_src]',name:'deals[image_src]',value:response.image_src});
		    if($('deals[image_src]'))
		    $('deals[image_src]').remove();
		    $('user_edit_deals_form').insert(img_input);
			}
			else if(window.swfu.settings.for_what == 'edit_event_image')
			{
		    lightwindow_a = new Element('a',{rel:'lightbox',href:response.image_src});
		    new_img = new Element('img',{src:response.image_src});
		    lightwindow_a.update(new_img);
				lightwindow_a.insert('<div class="tr"></div><div class="tl"></div><div class="br"></div><div class="bl"></div>');
		    $('event_image').update(lightwindow_a);
		    img_input = new Element('input',{type:'hidden',id:'events[image_src]',name:'events[image_src]',value:response.image_src});
		    if($('events[image_src]'))
		    $('events[image_src]').remove();
		    $('user_events_edit_form').insert(img_input);
			}
			else if(window.swfu.settings.for_what == 'new_event_image')
			{
		    lightwindow_a = new Element('a',{rel:'lightbox',href:response.image_src});
		    new_img = new Element('img',{src:response.image_src});
		    lightwindow_a.update(new_img);
				lightwindow_a.insert('<div class="tr"></div><div class="tl"></div><div class="br"></div><div class="bl"></div>');
		    $('deal_image').update(lightwindow_a);
		    img_input = new Element('input',{type:'hidden',id:'events[image_src]',name:'events[image_src]',value:response.image_src});
		    if($('events[image_src]'))
		    $('events[image_src]').remove();
		    $('user_new_events_form').insert(img_input);
			}
			else if(response.file_src)
			{
				window.response = response;
				addToFiles(response.file_name,response.file_src,response.ext,response.date,response.file_id);
			}
			else if(window.swfu.settings.for_what == 'sponsor_image')
			{
		    lightwindow_a = new Element('a',{rel:'lightbox',href:response.image_src});
		    new_img = new Element('img',{src:response.image_src});
		    lightwindow_a.update(new_img);
				lightwindow_a.insert('<div class="tr"></div><div class="tl"></div><div class="br"></div><div class="bl"></div>');
		    $('sponsor_image').update(lightwindow_a);
		    img_input = new Element('input',{type:'hidden',id:'sponsor[image_src]',name:'sponsor[image_src]',value:response.image_src});
		    if($('sponsor[image_src]'))
		    $('sponsor[image_src]').remove();
		    $('add_sponsor_form').insert(img_input);
			}
			else if(window.swfu.settings.for_what == 'esponsor_image')
			{
		    lightwindow_a = new Element('a',{rel:'lightbox',href:response.image_src});
		    new_img = new Element('img',{src:response.image_src});
		    lightwindow_a.update(new_img);
				lightwindow_a.insert('<div class="tr"></div><div class="tl"></div><div class="br"></div><div class="bl"></div>');
		    $('esponsor_image').update(lightwindow_a);
		    img_input = new Element('input',{type:'hidden',id:'sponsor[image_src]',name:'sponsor[image_src]',value:response.image_src});
		    if($('sponsor[image_src]'))
		    $('sponsor[image_src]').remove();
		    $('update_sponsor_form').insert(img_input);
			}
			else
			{
				addToGallery(response.image_src,response.image_pretty_url);
			}
	}
	if(response.code && (response.code == 210) || (response.code == 201))
	{
		growl_errors = '';
		errors = response.errors;
		if(isArray(response.errors))
		{
			$A(errors).each(function(error)
			{
					growl_errors += '<div>'+error+'</div>';
			});
		}
		else
		{
			$H(errors).each(function(error)
			{
				window.error = error;
				growl_errors += '<div>'+error.value+'</div>';
				if($(error.key))
				{
					$(error.key).addClassName('error');
					$(error.key).writeAttribute('title',error.value);
				
				if($(error.key).up('li') && $(error.key).up('li').down('.form_error'))
					$(error.key).up('li').down('.form_error').update(error.value);
				}
			}.bind(this));
		}
		window.growler.error(growl_errors,{header: "Errors."});
	}
	try {
		var progress = new FileProgress(file,this.customSettings.progressTarget);
		progress.setComplete();
		progress.setStatus("Complete.");
		progress.togglecancel(true);

	} catch (ex) {
		this.debug(ex);
	}
}


function uploadComplete(file) 
{
	window.swfu.stopUpload();
	if (this.getStats().files_queued === 0) {
		document.getElementById(this.customSettings.cancelButtonId).disabled = false;
	}
}

function queueComplete(numFilesUploaded) 
{
	var status = document.getElementById("divStatus");
	status.innerHTML = numFilesUploaded + " file" + (numFilesUploaded === 1 ? "" : "s") + " uploaded.";
}

var swfu_file_settings = 
{
	flash_url : "/js/swfu_core/Flash/swfupload.swf",
	upload_url: "/includes/utils/upload.php",
	file_post_name : "Filedata", 
	post_params : 
	{
		
	}, 
	use_query_string : false, 
	requeue_on_error : false, 
	http_success : [201, 202], 
	assume_success_timeout : 0, 
	file_types : "*.pdf;*.mp3;*.doc;*.xls;*.txt;", //*.mpg;*.wma;*.mov;*.flv;*.mp4;*.avi;*.qt;*.wmv;*.rm;
	file_types_description: "Regular Files", 
	file_size_limit : "102400", 
	file_upload_limit : 10, 
	file_queue_limit : 20, 
	debug : false, 
	prevent_swf_caching : true, 
	preserve_relative_urls : true,
	button_placeholder_id :"spanButtonPlaceHolder", 
	button_image_url : "http://bt.brobrowse.com/img/default/no_image_90.jpg", 
	button_width : 70,
	button_height : 22, 
	button_text : "<span class='btn_text'>Select Files</span>", 
	button_text_style : ".btn_text { color: #666666; font-family: Arial; border-style:solid; border-width:1px; border-color:#cccccc; }", 
	button_text_left_padding : 3, button_text_top_padding : 2, 
	button_action : SWFUpload.BUTTON_ACTION.SELECT_FILES, 
	button_disabled : false, 
	button_cursor : SWFUpload.CURSOR.HAND, 
	button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,
	
	//event handlers
	file_queued_handler : fileQueued,
	file_queue_error_handler : fileQueueError,
	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,
	custom_settings : {
		progressTarget : "fsUploadProgress",
		cancelButtonId : "btnCancel"
	}
}


function initFileSWFU()
{
	//window.swfu_img_settings = {"PHPSESSID":PB.sessData.sess_id};

	window.swfu = new SWFUpload(swfu_file_settings);
}


var swfu_img_settings = 
{
	flash_url : "/js/swfu_core/Flash/swfupload.swf",
	upload_url: "/includes/utils/upload.php",
	file_post_name : "Filedata", 
	post_params : 
	{
		
	}, 
	use_query_string : false, 
	requeue_on_error : false, 
	http_success : [201, 202], 
	assume_success_timeout : 0, 
	file_types : "*.jpg;*.gif;*.png;*.JPG;*.GIF;*.PNG", //*.mpg;*.wma;*.mov;*.flv;*.mp4;*.avi;*.qt;*.wmv;*.rm;
	file_types_description: "Web Image Files", 
	file_size_limit : "102400", 
	file_upload_limit : 10, 
	file_queue_limit : 20, 
	debug : false, 
	prevent_swf_caching : true, 
	preserve_relative_urls : true,
	button_placeholder_id :"spanButtonPlaceHolder", 
	button_image_url : "http://bt.brobrowse.com/img/default/no_image_90.jpg", 
	button_width : 70,
	button_height : 22, 
	button_text : "<span class='btn_text'>Select Files</span>", 
	button_text_style : ".btn_text { color: #666666; font-family: Arial; border-style:solid; border-width:1px; border-color:#cccccc; }", 
	button_text_left_padding : 3, button_text_top_padding : 2, 
	button_action : SWFUpload.BUTTON_ACTION.SELECT_FILES, 
	button_disabled : false, 
	button_cursor : SWFUpload.CURSOR.HAND, 
	button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,
	
	//event handlers
	file_queued_handler : fileQueued,
	file_queue_error_handler : fileQueueError,
	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,
	custom_settings : {
		progressTarget : "fsUploadProgress",
		cancelButtonId : "btnCancel"
	}
}


function initImgSWFU(for_what)
{
	//window.swfu_img_settings = {"PHPSESSID":PB.sessData.sess_id};
	swfu_img_settings['for_what'] = for_what;
	window.swfu = new SWFUpload(swfu_img_settings);
}

var swfu_vid_settings = 
{
	flash_url : "/js/swfu_core/Flash/swfupload.swf",
	upload_url: "/includes/utils/upload.php",
	file_post_name : "Filedata", 
	post_params : 
	{
		
	}, 
	use_query_string : false, 
	requeue_on_error : false, 
	http_success : [201, 202], 
	assume_success_timeout : 0, 
	file_types : "*.mpg;*.wma;*.mov;*.flv;*.mp4;*.avi;*.qt;*.wmv;*.rm;",
	file_types_description: "Web Video Files", 
	file_size_limit : "102400", 
	file_upload_limit : 20, 
	file_queue_limit : 5, 
	debug : false, 
	prevent_swf_caching : true, 
	preserve_relative_urls : true,
	button_placeholder_id :"spanButtonPlaceHolder", 
	button_image_url : "http://bt.brobrowse.com/img/default/no_image_90.jpg", 
	button_width : 70,
	button_height : 22, 
	button_text : "<span class='btn_text'>Select Files</span>", 
	button_text_style : ".btn_text { color: #666666; font-family: Arial; border-style:solid; border-width:1px; border-color:#cccccc; }", 
	button_text_left_padding : 3, button_text_top_padding : 2, 
	button_action : SWFUpload.BUTTON_ACTION.SELECT_FILES, 
	button_disabled : false, 
	button_cursor : SWFUpload.CURSOR.HAND, 
	button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,
	
	//event handlers
	file_queued_handler : fileQueued,
	file_queue_error_handler : fileQueueError,
	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,
	custom_settings : {
		progressTarget : "fsUploadProgress",
		cancelButtonId : "btnCancel"
	}
}

function initVidSWFU()
{
	//window.swfu_img_settings = {"PHPSESSID":PB.sessData.sess_id};
	window.swfu = new SWFUpload(swfu_vid_settings);
}


