$(document).ready(function(){
	$(':file').change(function() { 
		jQuery.fileUploadOnChange(this);
	});
});

jQuery.extend({
	
	fileUploadOnChange: function( input ) {
		jQuery.fileUpload(input);
		$(input).replaceWith('<input type="file" name="'+$(input).attr('name')+'" onchange="jQuery.fileUploadOnChange(this);">');
	},
	
	fileUpload: function( input ) {
		jQuery.event.trigger( "ajaxStart" );

		id    = new Date().getTime();
		form  = $(input.form).attr('name');
		frame = jQuery.createFileUploadIframe(id, form, input.name);

//		jQuery.createFileUploadForm(id, input, frame).submit();
		f = $(document.forms[form]);
		f.attr('target', frame);
		document.forms[form].submit();
		f.attr('target', '_self');
//		document.forms[form].setAttribute('target', frame);
//		document.forms[form].submit();
//		document.forms[form].setAttribute('target', '_self');
	},
	
	createFileUploadIframe: function( id, form, input ) {
		id = 'bmFileUploadIFrame' + id;
		div = document.createElement('DIV');
//		div.innerHTML = '<iframe style="display:none" src="about:blank" id="'+id+'" name="'+id+'" onload="$.updateFileUploadContent(\''+id+'\', \''+form+'\', \''+input+'\')"></iframe>';
		div.innerHTML = '<iframe style="display:none" src="about:blank" id="'+id+'" name="'+id+'"></iframe>';
		document.body.appendChild( div );
		$('#'+id).load( function() { $.updateFileUploadContent(id, form, input) });
		return id;
	},
	
	createFileUploadForm: function( id, i, frame ) {
		var formId = 'bmFileUploadForm' + id;
		var fileId = 'bmFileUploadFile' + id;
		var form  = $('<form  style="display:none" target="'+frame+'" action="" method="post" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"><input type="text" name="ajaxFormFunction"></form>');
		var newI  = $(i).clone();
		newI.appendTo(form);
		$(form).appendTo('body');

		return form;
	},
	
	updateFileUploadContent: function( frame, form, input ) {
		iname = form + input + 'list';
		var frame = document.getElementById(frame);
		var list  = document.getElementById(form + input + 'list');
		var input = $(document.forms[form].elements[input]);

		if ( frame.contentDocument )
            var content = frame.contentDocument.body;
        else if ( frame.contentWindow )
            var content = frame.contentWindow.document.body;

		if (content.innerHTML.substr(0,8) == '_|spFn|_') {
			switch ( content.innerHTML.substr(8,1) ) {
				case '0':
					cc = content.innerHTML.substr(9);
					$(list).append(cc);
					$("#"+ iname +" > div:last").fadeIn('slow');
					bmAlert(jQuery.formMessages.uploadsucces);  
					break;
				case '1': bmAlert(jQuery.formMessages.uploaderror, 'error'); break;
				case '2': bmAlert(jQuery.formMessages.filelimit, 'error'); break;
				case '3': bmAlert(jQuery.formMessages.badfilytype, 'error'); break;
				case '4': bmAlert(jQuery.formMessages.maxfilesize, 'error'); break;
				case '5': bmAlert(jQuery.formMessages.fileexist, 'error'); break;
			}
		}
		else 
			bmAlert(jQuery.formMessages.uploaderror, 'error');

		input.attr('value', '');
		jQuery.event.trigger( "ajaxComplete" );
	},
	
	deleteUploadFile: function( form, field, count ) {
		if ( confirm(jQuery.formMessages.deleteconfirm) ) {
			$.post(document.URL, {field: field, count: count, ajaxFormFunction: form},
				function( data ) {
					if ( data == '' ) {
						$('#'+field+'-'+count).queue(function () {
					        $(this).fadeOut('slow');
					        $(this).dequeue();
						});
						$('#'+field+'-'+count).queue(function () {
					        $(this).remove();
					        $(this).dequeue();
						});
						bmAlert(jQuery.formMessages.deletecomplete);
					}
					else
						bmAlert(jQuery.formMessages.deleteerror, 'error');
				}
			);
		}
	}

})


