if (!('console' in window)) {
    window.console = {
        log: function(msg) {
            alert(msg);
        }
    };
}

function restrictiOn() {
    UploadControl.showConfirmDialog();
}


UploadControl = {
    DIALOG_CLOSE_AFTER: 2,
    init: function() {
        var dialog = $('upload_confirm_dialog');
        dialog.observe('click', function(e) {
            var target = e.findElement('input[name="confirmMail"]');
            if (target) {
                var email = $F(dialog.select('input[name="email"]').first());
                new Ajax.Request(document.URL, {
                    method: 'GET',
                    parameters: {
                        page: 'upload_control',
                        a: 'requestCode',
                        email: email
                    },
                    onSuccess: function(o) {
                        var enterCode  = dialog.select('.enter-code').first();
                        var enterEmail = dialog.select('.confirm-email').first();
                        UploadControl.hideError();
                        enterCode.removeClassName('hidden');
                        enterEmail.addClassName('hidden');
                    },
                    onFailure: UploadControl.showError
                });
            }
        });
        dialog.observe('click', function(e) {
            var target = e.findElement('input[name="confirmCode"]');
            if (target) {
                var code = $F(dialog.select('input[name="code"]').first());
                new Ajax.Request(document.URL, {
                    method: 'POST',
                    parameters: {
                        a: 'confirmCode',
                        code: code,
                        page: 'upload_control'
                    },
                    onSuccess: function(o) {
                        var enterCode     = dialog.select('.enter-code').first();
                        var successDialog = dialog.select('.code-accepted').first();
                        var tokenInput    = $$('input[name="upload_token"]').first();
                        tokenInput.value  = code;

                        getUploader().SetVariable('upload_token', code);
                        UploadControl.hideError();
                        enterCode.addClassName('hidden');
                        successDialog.removeClassName('hidden');
                        setTimeout(function() {
                            UploadControl.closeConfirmDialog();
                            UploadControl.startUpload();
                        }, 1000 * UploadControl.DIALOG_CLOSE_AFTER);
                    },
                    onFailure: UploadControl.showError
                });
            }
        });
    },
    showError: function(o) {
        var error = o.responseJSON.error;
        var errorCont = $('upload_confirm_dialog').select('.error').first();
        errorCont.removeClassName('hidden').update(error);
    },
    hideError: function() {
        var errorCont = $('upload_confirm_dialog').select('.error').first().addClassName('hidden');
    },
    startUpload: function() {
        getUploader().restrictiOff();
    },

    showConfirmDialog: function() {
        $('upload_confirm_dialog').removeClassName('hidden');
        var sender = $F('sender_email');
        if (sender) {
            $$('#upload_confirm_dialog input[name="email"]').first().value = sender;
        }
    },
    closeConfirmDialog: function() {
        var ucDialog = $('upload_confirm_dialog');
        ucDialog.addClassName('hidden');
        UploadControl.resetDialog();
    },
    resetDialog: function() {
        var ucDialog = $('upload_confirm_dialog');
        ucDialog.select('.enter-code, .code-accepted').each(function(e) {
            e.addClassName('hidden');
        });
        ucDialog.select('.confirm-emai').each(function(e) {
            e.removeClassName('hidden');
        });
        ucDialog.select('input[type="hidden"], input[type="text"]').each(function(e) {
            e.value = '';
        });
    }
};

document.observe('dom:loaded', function() {
    /**
     * IE6 somehow gets messed up with dom:loaded, so we have to listen for window.onload
     */
    window.onload = function() {
        UploadControl.init();
        //UploadControl.showConfirmDialog();
        var viewPort = parseInt($(document.body).getStyle('width'));
        var dialogWidth = parseInt($('upload_confirm_dialog').getStyle('width'));
        var marginLeft = viewPort / 2 - dialogWidth / 2;
        $('upload_confirm_dialog').setStyle({ marginLeft: marginLeft });
    }

});

function getUploader() {
    var movieName = 'uploader_1';
    var movie = $$('#uploader_1 embed').first();
    if (movie) {
        return movie;
    } else {
        return document[movieName];
    }
}


