/**
 * builds multiple file selects given a target
 */
jQuery.fn.findMultiFiles = function(options){
    var
    defaults = {
        extraDiv: 'addedImage'
    },
    settings = jQuery.extend({}, defaults, options);

    // allow chaining
    return this.each(function() {
        jQuery(this).find('input[type=file]').each( function(){
            jQuery(this).css('opacity', '0');
            jQuery('iframe').contents().find('#FileReq').hide();
            jQuery(this).hover(
                function() {
                    jQuery('iframe').contents().find('#FileReq').fadeIn(1000);
                },
                function(){
                    jQuery('iframe').contents().find('#FileReq').fadeOut(1000);
                }
            );
            jQuery(this).bind('change', function() {
                // ie6 fix
                if(jQuery(this).css('position') != 'absolute') {
                    var myName = jQuery(this).attr('name').replace(new RegExp(/\[(.+)\]/),"");
                    var fileNumber = jQuery(this).attr('name').replace(new RegExp(/(.*)\[|\]/gi),"");
                    var currentInput = (parseInt(fileNumber)+1);

                    // remove flicker from ie6
                    if (jQuery.browser.msie) {
                        try {
                            document.execCommand("BackgroundImageCache", false, true);
                        } catch(err) {}
                    }

                    // shorten file name if too long
                    var fileName = jQuery(this).val();
                    if(fileName.length > 50) {
                        fileName = "..."+fileName.substr(fileName.length - 50, fileName.length);
                    }
                    jQuery(this).parent().find('label').after('<input type="file" name="'+myName+'['+currentInput+']" class="'+myName+''+currentInput+'"/>');
                    jQuery(this).parent().find('input').css('opacity', 0);

                    jQuery(this).after('<div class="'+settings.extraDiv+'"><p>'+fileName+'</p></div>');
                    var newdiv = jQuery(this).parent().find('div').eq(0);
                    newdiv.prepend('<a href="#"><img src="/mysite/themes/gib/images/popup-remove.png" alt="Remove" /></a>');
                    jQuery(this).css('left', '-1000px').css('position', 'absolute');

                    //custom
                    var divHeight = 70;
                    var currentNumber = parseInt(jQuery(this).parent().parent().find('div').size())-1;

                    var extension = fileName.substr(fileName.lastIndexOf("."), fileName.length).toLowerCase();
                    var imageIcon = '<img src="/mysite/themes/gib/images/popup-none.png" alt="image" />';
                    if(extension == '.png'){
                        imageIcon = '<img src="/mysite/themes/gib/images/popup-png.png" alt="image" />';
                    }else if(extension == '.jpg' || extension == '.jpeg'){
                        imageIcon = '<img src="/mysite/themes/gib/images/popup-jpg.png" alt="image" />';
                    }else if(extension == '.gif'){
                        imageIcon = '<img src="/mysite/themes/gib/images/popup-gif.png" alt="image" />';
                    }
                    newdiv.prepend(imageIcon);
                    jQuery(this).parent().findMultiFiles();
                    newdiv.append(jQuery(this));
                    if(currentNumber > 5){
                        jQuery('iframe').contents().find('.fileUpload').css('background', 'none');
                        jQuery('iframe').contents().find('.'+myName+''+currentInput).attr('disabled', 'true').animate({height:'0px'},1000);
                    }
                    // has to be about 1000 - or safari has a cry and doesn't animate
                    newdiv.hide().slideDown(1000);
                    jQuery('iframe').animate({height: (512+divHeight*currentNumber)+'px'}, 1000);

                    // user removed file
                    var newAnchor = newdiv.find('a');
                    newAnchor.click(function(){
                        var divHeight = 70;
                        var currentNumber = parseInt(jQuery(this).parent().parent().find('div').size())-1;
                        jQuery('iframe').animate({height: (512+divHeight*currentNumber)+'px'},1000);
                        jQuery(this).parent().animate({height:'0px', opacity: '0'},1000,'',function(){jQuery(this).remove()});
                        // enable the file input (in case it was diabled because of limit)
                        jQuery('iframe').contents().find('.fileUpload').removeAttr('style');
                        jQuery('iframe').contents().find('.fileUpload input').eq(0).removeAttr('disabled').animate({height:'40px'},'slow');
                        return false;
                    });
                }
            });
        });
    });
}
