(function($) {
$.extend(true, React, {
		FileUploadify : {
		simpleFileUpload: function(selector, options, fallback)
		{
			if ($(selector).length == 0)
				return;
	
			if (swfobject.getFlashPlayerVersion().major < 9)
			{
				if (!fallback)
					return React.FileUploadify.fileUploadFallback(selector, options);
	
				return fallback(selector, options);
			}
		
			var settings = $.extend({
				'uploader'     : React.path + 'static/jquery.uploadify/uploadify.swf',
				'script'       : React.path + 'json/File/upload',
				'scriptData'   : {
					/*'XDEBUG_SESSION_START' : 'ECLIPSE_XDEBUG',*/
					'SessionID'   : React.cookies['SessionID'],
					'_csrf'       : $(selector)[0].form._csrf.value
				},
				'fileDataName'   : 'entity[hash]',
				'sizeLimit'      : 2097152,
				'cancelImg'      : 'static/jquery.uploadify/cancel.png',
				'expressInstall' : 'static/jquery.uploadify/expressInstall.swf',
				'auto'           : true,
				'onComplete'     : React.FileUploadify.fileUploadCompleted,
				'onError'        : React.FileUploadify.fileUploadError,
				'wmode'          : 'transparent',
				'multi'          : false
			}, options);
			
			$(selector).uploadify(settings);
		},
		
		fileUploadFallback: function(selector)
		{
			$(selector).parent().find('.selected-file').replaceWith(
				'<span class="selected-file error">Flash required</span>'
			);
			
			$(selector).replaceWith(
				'<a class="getFlashPlayer" href="http://www.adobe.com/go/getflashplayer">' +
				'<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />' +
				'</a>'
			);		
		},
		
		fileUploadError: function(event, id, file, error)
		{
			var inputElem = $(event.target);
			var container = inputElem.parent();
			inputElem.val(null);
			container.find('.selected-file').replaceWith(
				'<span class="selected-file error">' + error.type + ': ' + error.info + '</span>'
			);
		},
		
		fileUploadCompleted: function(event, id, file, result)
		{
			var fileResult = {};
			try
			{
				fileResult = jQuery.parseJSON(result);
			}
			catch (e)
			{
				fileResult.exception = "Could not parse response.";
			}
	
			var inputElem = $(event.target);
			
			if (inputElem)
			{
				var container = inputElem.parent();
				
				if (fileResult.exception)
				{
					inputElem.val(null);
					container.find('.selected-file').replaceWith(
						'<span class="selected-file error">' + fileResult.exception + '</span>'
					);
				}
				else if (fileResult.id)
				{
					inputElem.val(fileResult.id);
					inputElem.trigger('change');
					inputElem.valid();
					container.find('.selected-file').replaceWith(
						'<a class="selected-file" title="' + fileResult.description + '" href="' + fileResult.link + '" target="_blank">' +
						fileResult.description + '</a>'
					);
				}
				return fileResult;
			}
			
			return false;
		}
	}
});
})(jQuery);


