
function initFileUploads(element) {

        if (element) {
                elements = (element.get('tag') == 'input' && element.get('type') == 'file') ? [element] : element.getElements('input[type=file]');
        } else {
                elements = $$('input[type=file]');
        }

        if (elements.filter(function(i){ return i.getParent().hasClass('ajax'); }).length < 1) {
                return;
        }

	if (Browser.Plugins.Flash.version >= 9) {
		var form = $('pwf_form');

                if (element) {
                    var e = element;
                    while (e != null) {

                        if (e.get('tag') == 'form') {
                            form = e;
                            break;
                        }

                        e = e.getParent();
                    }

                    if (!form) {
                        return;
                    }

                } else {

                    forms = $$('.pwf_forms');
                    if (forms.length > 0) {
                        form = forms[0];
                    }
                }

                if (form && !form.swiffy) {

                        form.prepareUploadElements = (function(element) {
                                if (this.swiffy) {
                                        this.swiffy.addUploadElements(element);
                                }
                        }).bind(form);

                        form.swiffyfiles = [
                                'pwf/upload/Swiff.Uploader.js',
                                'pwf/upload/Fx.ProgressBar.js',
                                'pwf/upload/upload.js'
                        ];

                        form.swiffyloader = (function(index) {
                                var loadNext = (function(){

                                                if (this.index<this.form.swiffyfiles.length-1) {
                                                        this.form.swiffyloader(this.index+1);

                                                } else {

                                                    (function(){
                                                        this.form.swiffy = new PWFFancyUpload({
                                                                'path': jsDir + 'pwf/upload/Swiff.Uploader.swf',
                                                                'onLoaded': (function(uploader) {
                                                                        // fix for IE, since form.swiffy is not yet initialized
                                                                        if (!this.form.swiffy) {
                                                                                this.form.swiffy = uploader;
                                                                        }
                                                                        this.form.prepareUploadElements(this.element);
                                                                }).bind({
                                                                        form: this.form,
                                                                        element: this.element
                                                                })
                                                        });
                                                    }).bind({
                                                        form: this.form,
                                                        element: this.element
                                                    }).delay(300);

                                                }

                                        }).bind({
                                                form: this.form,
                                                index: index,
                                                element: this.element
                                        });


                                if ($('ajaxupload'+(index+1))) {
                                    loadNext();

                                } else {

                                    new Asset.javascript(jsDir+this.form.swiffyfiles[index], {
                                            'id': 'ajaxupload'+(index+1),
                                            'onload' : loadNext
                                    });

                                }

                        }).bind({
                                form: form,
                                element: element
                        });

                        form.swiffyloader(0);

                } else {
                        form.prepareUploadElements(element);
                }
	}
}



window.addEvent('domready', function() {
	initFileUploads();
});

window.addEvent('ajaxready', function() {
	initFileUploads();
});