$(document).ready(function() {
    
    $('#file_upload').uploadify({
        'uploader'  : '/uploadify/uploadify.swf',
        'script'    : '/front/upload/receive/', // Back-end
        'fileDataName' : 'uploaded_datasheet',
        'cancelImg' : '/uploadify/cancel.png',
        'sizeLimit' : 10000000, // 10M
        'queueSizeLimit': 10,
        'simUploadLimit': 1,
        'fileExt'   : '*.pdf;*.PDF;',
        'fileDesc'  : 'Tylko PDF',
        'auto'      : true,
        'buttonText': 'Wybierz pliki',
        'multi'     : true,
        'removeCompleted' : false,
        
        // Append datasheet form
        'onOpen'      : function(event,ID,fileObj) {
            var file_box = $('#file_upload' + ID);
            
            // Div for image preview
            file_box.prepend('<div class="preview-loader"></div>');
            
            // Form for data
            var form = $('<form id="' + ID + '" class="datasheet-data" method="post" action=""></form>');
            
            // Boxes for info and error
            form.append('<div class="ui-state-highlight ui-corner-all info info_box"><p><span style="margin-right: .3em; float:left;" class="ui-icon ui-icon-info"></span><span class="info_message"></span></p></div>');
            form.append('<div class="ui-state-error ui-corner-all info error_box"><p><span style="margin-right: .3em; float:left;" class="ui-icon ui-icon-alert"></span><span class="error_message"></span></p></div>');
            
            // Datasheet form
            form.append('<p class="symbol"><label for="symbol">Symbol/e:</label><textarea name="symbol"></textarea></p>');
            form.append('<p class="symbol_info"><i>Jeśli nota dotyczy więcej niż jednego symbolu, symbole rozdziel średnikiem.</i></p>');
            form.append('<p class="description"><label for="description">Opis:</label><textarea name="description"/></textarea></p>');
            form.append('<p class="manufacturer"><label for="manufacturer">Producent:</label><input name="manufacturer" type="text" class="manufacturer"/></p>');
            form.append('<p class="right"><a href="#" class="datasheet-save btn">Zapisz</a></p>');
            
            
            // Autocomplete for manufacturer
            form.find("input[name=manufacturer]").autocomplete({
                source: "/get_manufacturers"
            });
            
            // Save button
            $("a.datasheet-save", form).button();
            
            file_box.append(form);
        },
        
        // Show the preview of pdf
        'onComplete'  : function(event, ID, fileObj, response, data) {
            var response = $.parseJSON(response);
            var form = $('form#' + ID);
            if(response.error == undefined){
                form.append('<input name="id_file" type="hidden" value="' + response.id_file + '" />');
                $('div#file_upload' + ID).find("div.preview-loader").html('<img src="/datasheet-thumbs/big/' + response.id_file + '_0.png" />');
            }
            else{
                form.remove();
                $('div#file_upload' + ID).find('div.preview-loader').remove();
                $('div#file_upload' + ID).addClass('uploadifyError');
                $('div#file_upload' + ID).find('span.fileName').append(' - ' + response.error);
                return false;
            }
                        
        },
        'onAllComplete' : function(event,data) {
            $("div.upload-instruction").fadeOut(300);
            $("#file_upload").fadeOut(300);
            $("#file_uploadUploader").css('visibility', 'hidden');
            $("ul.upload-info").fadeOut(300, function(){
                $(this).removeClass('upload-step-1').addClass('upload-step-2');
                $("li.step-1").removeClass('selected');
                $("li.step-2").addClass('selected');
                $(this).fadeIn(300);
            });
        },
        // Inform about max queue
        'onQueueFull'    : function (event,queueSizeLimit) {
            
        },
        'onError'     : function (event,ID,fileObj,errorObj) {
            var form = $('form#' + ID);
            form.remove();
            $('div#file_upload' + ID).find('div.preview-loader').remove();
            $('div#file_upload' + ID).find('span.percentage').remove();
            $('div#file_upload' + ID).addClass('uploadifyError');
            $('div#file_upload' + ID).find('span.fileName').append(' - ' + 'Wystąpił nieoczekiwany błąd');
        }
    });

    $("a.datasheet-save").live('click', function(){
        var form = $(this).parents('form.datasheet-data');
        $.post('/save_datasheet/', form.serialize(), function(data){
                $('span.error', form).remove();
                $('div.info', form).hide();
                if(data.form_errors == undefined){
                    $('input[type=text], textarea', form).each(function(){
                       $(this).replaceWith('<span>' + $(this).val() + '</span>');
                    });
                    $('a.datasheet-save', form).button('disable');
                    $('a.datasheet-save > span', form).html('Zapisano');
                    $('div.info_box', form).show();
                    $('span.info_message', form).html(data.info);
                }
                else{
                    $.each(data.form_errors, function(input_id, message){
                        $('p.' + input_id, form).append('<span class="error">' + message + '</span>');
                    });
                    $('div.error_box', form).show();
                    $("span.error_message", form).html(data.error);
                }
            }, 'json');
        return false;
    });
    
    // Handle enter key
    $("form.datasheet-data").live('submit', function(){
        $(this).find("a.datasheet-save").trigger('click');
        return false;
    });
});
