var oldvalue = [];

$(function() {
    // вешаем тогглер на инпуты форм с классом togglable
    var allInputs = $("form.togglable :text, form.togglable :password, form.togglable textarea");
    for ( var i = 0; i < allInputs.length; i++) {
        formId = $(allInputs[i]).parents('form').attr('id');
        if (!oldvalue[formId]) {
            oldvalue[formId] = new Array();
        }
        oldvalue[formId][$(allInputs[i]).attr('name')] = $(allInputs[i]).val();
    }
    function toggleVal(event) {
        var target = $(event.target);
        var formId = $(target).parents('form').attr('id');
        switch (event.type) {
        case "focus":
            if (target.val() == oldvalue[formId][target.attr('name')])
                target.val('');
            break;
        case "blur":
            if (!target.val()) {
                target.val(oldvalue[formId][target.attr('name')]);
            }
            break;
        }
        ;
    }
    $("form.togglable :text, form.togglable :password, form.togglable textarea")
            .bind('focus', toggleVal);
    $("form.togglable :text, form.togglable :password, form.togglable textarea")
            .bind('blur', toggleVal);
    // автозаполняющиеся поля
    $.fn.extend( {

        activate : function() {
            return this.focus().select();
        }
    });
    // биндим клик по кнопке открыть форму
    $(".openDialogForm").live("click", function(e) {
        closeDialogForm('fs_dialogForm');
        closeDialogForm('fs_login');
        var sizes = $(this).attr('rel').split(",");
        var width = (parseInt(sizes[0]) != 0) ? parseInt(sizes[0]) : 100;
        var height = (parseInt(sizes[1]) != 0) ? parseInt(sizes[1]) : 100;
        $.post($(this).attr('href'), {}, function(data) {
            $(data).appendTo("body");
            showDialogForm('fs_dialogForm', width, height);
        });
        return false;
    });
    // биндим клик по кнопке закрыть
    $(".closeDialogForm").live("mousedown", function(e) {
        if ($(this).hasClass('fs_close')) {
            $(this).removeClass('fs_closeHover');
            $(this).addClass('fs_closeActive');
        }
    });
    $(".closeDialogForm")
            .live(
                    "mouseup",
                    function(e) {
                        if ($(this).hasClass('fs_close')) {
                            $(this).removeClass('fs_closeActive');
                            $(this).addClass('fs_closeHover');
                        }
                        setTimeout(
                                "closeDialogForm('fs_dialogForm');closeDialogForm('fs_login');",
                                200);
                    });
    $(".closeDialogForm").live("mouseover", function(e) {
        if ($(this).hasClass('fs_close')) {
            $(this).addClass('fs_closeHover');
        }
    });
    $(".closeDialogForm").live("mouseout", function(e) {
        if ($(this).hasClass('fs_close')) {
            $(this).removeClass('fs_closeHover');
        }
    });
    var options = {
        success : onAjaxSubmitForm, // post-submit callback
        dataType : 'json',
        timeout : 3000
    };
    // вешаем ajax form submit
    bindSimpleAjaxForm();
    // добавляем затенение для всплывающих форм
    $('<div id="shadowBox"></div>').css( {
        zIndex : 999,
        width : "100%",
        position : "absolute",
        top : 0,
        left : 0,
        opacity : 0.4,
        backgroundColor : "#000000"
    }).appendTo("body").hide().css("height", $(document).height());

    $(document.body).keypress(function(e) {
        // убираем форму по нажатию escape
            if (e.keyCode == 27) {
                $('div[id^="fs_"]').each(function() {
                    closeDialogForm($(this).attr('id'));
                });
            }
        });
    // инициализируем mp3players
    initMp3Player();
    initFlvPlayer();
});

function initMp3Player() {
    // подгузка аудиоплееров
    $("img.tinymce_audio_player").each(function() {
        if ($(this).attr("title").replace(/\s/gi, "")) {
            // ищем рандомный id
            var i = 0;
            do {
                randomId = "tinymce_audio_player_"
                        + Math.round((Math.random(1, 1000) * 10));
                i++;
            } while ($("#" + randomId).get(0) || i > 10);

            // устанавливаем рандомный id объекту
            $(this).attr('id', randomId).css( {
                zIndex : 100
            });

            // параметры для плей-листа
            title = $(this).attr('title');

            if (title.match(/^http:\/\/.*?/)) {
                protocol = 1;
            } else if (title.match(/^https:\/\/.*?/)) {
                protocol = 2;
            } else if (title.match(/^ftp:\/\/.*?/)) {
                protocol = 3;
            }

            file = title.replace('http://', '').replace('https://', '')
                    .replace('ftp://', '');

            // url плей-листа
            playlistUrl = '/playlist.php?file=' + file + '&protocol='
                    + protocol;

            swfobject.embedSWF("/flash/audio/mp3player.swf", randomId, "300",
                    "100", "9.0.0", null, {}, {
                        play : "true",
                        menu : "false",
                        loop : "true",
                        wmode : "transparent",
                        allowScriptAccess : "always",
                        flashVars : "playlistURL=" + playlistUrl
                    }, {});

        } else {
            $(this).remove();
        }
    });
}

function initFlvPlayer() {
    var randomId = "";
    $("img.tinymce_flv_player").each(
            function() {

                do {
                    randomId = "randomId" + Math.round(Math.random() * 100);
                } while ($("#" + randomId).length);

                $('<a id="' + randomId + '" />').attr("href",
                        $(this).attr("title")).css( {
                    display : "block",
                    width : $(this).width(),
                    height : $(this).height()
                }).insertAfter(this);

                $(this).remove();

                flowplayer(randomId, {
                    src : "/flash/flv/flowplayer-3.0.3.swf",
                    wmode : "opaque"
                }, {
                    clip : {
                        autoPlay : false,
                        autoBuffering : true
                    },
                    plugins : {
                        controls : {
                            url : '/flash/flv/flowplayer.controls-3.0.3.swf',
                            play : true,
                            volume : true,
                            mute : true,
                            time : false,
                            stop : false,
                            playlist : false,
                            fullscreen : true,
                            scrubber : true
                        }
                    },
                    screen : {
                        zIndex : 0
                    }
                });
            });
}

function showShadow(zIndex) {
    $("#shadowBox").css("z-index", (zIndex - 1)).show();
}

function hideShadow() {
    $("#shadowBox").hide();
}

function bindSimpleAjaxForm() {

    var options = {
        success : onAjaxSubmitForm, // post-submit callback
        dataType : 'json',
        timeout : 3000,
        beforeSubmit : function(formdata, form) {
            if (typeof validateFormVars == 'function') {
                return validateFormVars(formdata, form);
            } else {
                return true;
            }
        }
    };
    // вешаем ajax form submit
    $('form.simpleform').ajaxForm(options);
}

function validateFormVars(formdata, form) {
    var formId = $(form).attr('id');
    // если форма является тогглабл
    if ($(form).hasClass('togglable')) {
        for (i = 0; i < formdata.length; i++) {
            if (oldvalue[formId][formdata[i].name]) {
                if (oldvalue[formId][formdata[i].name] == formdata[i].value) {
                    formdata[i].value = '';
                }
            }
        }
    }
    return true;
}

// функция открытия диалоговой формв
function showDialogForm(formId, width, height, z_index) {
    if (!z_index)
        z_index = 1000;
    showShadow(z_index);
    var top = $(document).scrollTop() + ($(window).height() / 2 - height / 2);
    var left = $(document).scrollLeft() + ($(window).width() / 2 - width / 2);
    $('#' + formId).css( {
        top : top + 'px',
        left : left + 'px',
        width : width + 'px',
        height : height + 'px',
        display : "block",
        zIndex : z_index
    });
    // высота дива с контентом
    $('#' + formId + ' div.fs_scroll').css('height', height - 84);
    // alert($('#' + formId + ' div.fs_scroll').css('height'));
    // делаем форму перемещаемой
    $('#' + formId).draggable( {
        handle : 'div.fs_dialogFormHead'
    });

    // опции для ajax submit form
    var options = {
        success : onAjaxSubmitForm, // post-submit callback
        dataType : 'json',
        timeout : 3000
    };
    // вешаем ajax form submit
    $('form.dialogform').ajaxForm(options);

}
// функция закрытия диалоговой формв
function closeDialogForm(formId) {
    $('#' + formId).removeShadow();
    $('#' + formId).remove();
    hideShadow();
    return false;
}

function onAjaxSubmitForm(response, statusText, form) {
    if (statusText == 'success') {
        if (response.submitOn) {
            if (response.redirectUrl) {
                if (response.openerOn) {
                    window.opener.location = response.redirectUrl;
                    window.opener.location.reload();
                    window.close();
                } else {
                    window.location = response.redirectUrl;
                }
            } else if (response.reloadOn) {
                if (typeof reloadPage == 'function') {
                    // функция существует, ее можно вызывать
                    closeDialogForm('fs_dialogForm');
                    reloadPage(window.location.href, response);
                } else {
                    window.location.reload();
                }
            } else {
                closeDialogForm('fs_dialogForm');
                if (response.dirsTree) {
                    dirsTree = response.dirsTree;
                    buildDirsTree();
                }
            }
        }
        if (response.errors) {
            if ($('#randomImage')) {
                $('#randomImage')
                        .attr('src', '/antibot.php?u=' + Math.random());
            }
            $(form).find('.fs_error').empty();
            for ( var ctrlErr in response.errors) {
                $('#err_' + $(form).attr('id') + '_' + ctrlErr).html(
                        response.errors[ctrlErr]).show();
            }
        }
    }
}
// функция показа формы авторизации
function showAuthForm(data) {
    closeDialogForm('fs_login');
    $(data).appendTo("body");
    showDialogForm('fs_login', 459, 293, 20000);
}

function openAuthForm(url) {
    $.post(url, {
        t : (new Date).getTime()
    }, showAuthForm);
}


function loadSubCategories(url, id) {
	var el = $('#cat-'+id);
	
    if(! el){
        return;
    }

    if('none' == el.css('display')) {
    	el.css('display', 'block');
        $('#img-'+id).attr('src', '/i/icons/folder-in.gif');
        if(! el.attr('rel')) {
            $.post(url, {
                t : (new Date).getTime()
            }, function(data){
            	el.attr('innerHTML', '');
                el.attr('innerHTML', data);
                el.attr('rel', '1');
            });
        }
    } else {
        document.getElementById('cat-'+id).style.display = 'none';
        document.getElementById('img-'+id).src = '/i/icons/folder.gif';
    }
}

function openContentEditor(linkobj) {
    winobj = open($(linkobj).attr('href'), "editor", "");
    winobj.focus();
}

function toggleLoginForgotForms() {
    $("#fs-login-form").toggle();
    $("#fs-forgot-form").toggle();
    return false;
}
