var uploadCounter = 0;

var swfus = new Array();

var uploadIdToJivaId = {};
var uploadIdToName = {};

function initializeFileField(aFieldDiv) {
    var uploadDiv = document.createElement("DIV");
    uploadDiv.style.position = "relative";
    uploadDiv.style.height = "40px";
    uploadDiv.style.clear = "both";
    uploadDiv.innerHTML =
            '<input type="text" class="editUploadName" id="upload_name_editor_' + uploadCounter + '" disabled="disabled" onkeyup="updateUploadedFileName(\'' + uploadCounter + '\')"/>' +
            '<div style="position: absolute; top: 10px; right: 0;" id="button_placeholder_parent_' + uploadCounter + '">' +
                '<div id="button_placeholder_' + uploadCounter + '"></div>' +
            '</div>';

    aFieldDiv.appendChild(uploadDiv);

    var uploadObject = createSWFU("*.*", "button_placeholder_" + uploadCounter);
    uploadObject.index = uploadCounter;

    swfus[uploadCounter] = uploadObject;
    uploadCounter++;
}

function createSWFU(aFileTemplates, aButtonPlaceholder) {
    if (!aFileTemplates) {
        aFileTemplates = "*.*";
    }

    return new SWFUpload({
//        debug: true,

        upload_url: "/?upload;" +
                       "JivaSessionId=" + dojo.cookie("#_JivaSessionId") + ";" +
                       "JivaSessionCheck=" + dojo.cookie("#_JivaSessionCheck") + ";" +
                       "userId=" + dojo.cookie("#_userId") + ";" +
                       "userLogin=" + dojo.cookie("#_userLogin") + ";",
        flash_url : "/js/swfUpload/swfupload.swf",

//        ui_container_id : aContainerName,

        prevent_swf_caching : false,

        button_placeholder_id : aButtonPlaceholder,
        button_image_url : "/i/editor/uploadButton.png",
        button_width : "132",
        button_height : "30",
        button_text : ' ',
//        button_text_style : "",
//        button_text_left_padding : 3,
//        button_text_top_padding : 2,
        button_action : SWFUpload.BUTTON_ACTION.SELECT_FILE,
        button_disabled : false,
        button_cursor : SWFUpload.CURSOR.HAND,
        button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,

        begin_upload_on_queue : true,
        use_server_data_event : true,
        validate_files : false,

        file_size_limit : "4096",
        file_types : aFileTemplates,
        file_types_description : "Files to upload",
        file_upload_limit : 1,

        file_queued_handler : swfu_fileQueued,
        upload_progress_handler : swfu_uploadProgress,
        upload_success_handler : swfu_uploadFileComplete,
        upload_error_handler : swfu_uploadFileError
    });
}

function getUploadIndex(file) {
    var swfuId = file.id.substring(0, file.id.lastIndexOf("_"));
    var index = "";

    for (var i = 0; i < swfus.length; i++) {
        if (swfus[i].movieName == swfuId) {
            index = swfus[i].index;
        }
    }

    return index;
}

function swfu_fileQueued(file) {
    swfus[getUploadIndex(file)].startUpload();
}

function swfu_uploadProgress(file, bytesLoaded, bytesTotal) {
    var index = getUploadIndex(file);

    var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);

    if (percent > 99) {
        percent = 99;
    }

    var button = document.getElementById('upload_name_editor_' + index);
    if (button) {
        button.disabled = true;
        button.value = "Загружено " + percent + '%';

        button.style.backgroundColor = '#FFFFFF';
    }
}

function swfu_uploadFileComplete(file, serverData) {
    var index = getUploadIndex(file);

    uploadIdToJivaId[index] = serverData;
    uploadIdToName[index] = file.name;

    var button = document.getElementById('upload_name_editor_' + index);
    if (button) {
        button.disabled = false;
        button.value = file.name;
        button.style.backgroundColor = '#DDFFDD';
        button.focus();
    }

    button = document.getElementById('button_placeholder_parent_' + index);
    if (button) {
        button.innerHTML = '<div class="fileRemoveUploadButton" onclick="removeFile(this.parentNode.parentNode, \'' + index + '\');">Удалить файл</div>';
        button.style.top = '0';
    }

    fileWasUploaded(index);
}

function swfu_uploadFileError(file, errcode, msg) {
    var index = getUploadIndex(file);

    var button = document.getElementById('upload_name_editor_' + index);
    button.disabled = true;
    button.style.backgroundColor = '#FFDDDD';

    if (errcode == -200) {
        button.value = "Проблема с сервером (" + msg + ")";
    } else if (errcode == -220) {
        button.value = "Сервер недоступен";
    } else {
        button.value = "Непонятная ерунда (" + errcode + "/" + msg + ")";
    }
}
