var init_uploader = function(_custom_obj) {
	
	if (!typeof(_custom_obj) == 'Object') {
	
		throw 'Invalid type of initial object in swfUpload constructor method';
	}
	
	var _init_obj = {
		upload_url: '/',
		flash_url: '/js/SWFUpload2.2.0.1/Flash/swfupload.swf',
		file_post_name: 'file',
		file_types: '*.jpg;*.jpeg;*.png;*.gif',
		file_queue_limit: '1',
		file_upload_limit: '0',
		button_placeholder_id: 'btn-edit-avatar',
		button_image_url: '/i/fresh/new_photo.png',
		button_width: 124,
		button_height: 33,
		buttonText: 'Добавить фото',
		button_action: SWFUpload.BUTTON_ACTION.SELECT_FILE,
		button_cursor: SWFUpload.CURSOR.HAND,
		button_window_mode: 'opaque',
		post_params: {},
		file_queued_handler : fileQueued,
		http_success: [200, 302]
	};
	
	_init_obj = $.extend(_init_obj, _custom_obj);
	
	var _uploader = new SWFUpload(_init_obj);

	return _uploader;
};

function fileQueued(file) {
	/*
	try {
		$.modal({
	          'content': $('#upload_progress_bar')
	    });
	} catch (ex) {
		this.debug(ex);
	}
	*/
}

function fileQueueError(file, errorCode, message) {
	try {

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

function uploadError(file, errorCode, message) {
	try {
		
		switch (errorCode) {
			case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:			
				console.log("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
				console.log("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.IO_ERROR:
				console.log("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
				console.log("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
				console.log("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
				console.log("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
				console.log('Cancelled');
				break;
			case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
				console.log("Stopped");
				break;
			default:
				console.log("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				break;
		}
	} catch (ex) {
        this.debug(ex);
    }
}