
var sb_options = {counterText: "Изображение {x} из {y}"};
function sb_filter(el) {
    return (this == el) || $(this).parents('div').prev(':header')[0] == $(el).parents('div').prev(':header')[0];
}

function show_error(error, elem){
    var form = elem.parents('form')[0];
    if (!$('div.error', form).size()) {
        $('<div class="error"></div>').insertBefore('div:has(button)', form).click(function(){
            $(this).slideUp();
        });
    }
    var div = $('div.error', form).html(error).slideDown();
    elem.one("focus", function(){
            div.slideUp();
    });
    return false;
}
function check_form(form, url, data){
    var check = $(form).data('check');
    if (check != undefined) return check;

    $("div:has(button)", form).addClass('loading');
    $("button", form).attr('disabled', 1);
    $.post(url, data, function(response){
        $("div:has(button)", form).removeClass('loading');
        $("button", form).removeAttr('disabled');
        $(form).data('check', response).submit();
    }, 'json');
    return null;
}

$(document).ready(function(){

    /*---------- ITEM ----------*/

    $('td.column > div.item').css('position', 'relative').prepend("<div class='corner_tl'><!----></div><div class='corner_tr'><!----></div><div class='corner_bl'><!----></div><div class='corner_br'><!----></div>");

    if (jQuery().slimbox) $('div.content').find('a:has(img[src$=_tn.jpg])').slimbox(sb_options, function(el){
        return [el.href, $(el).parents('div').prev(':header').html()];
    }, sb_filter);

    /*---------- MENU ----------*/

    $('div.menu li.parent > a').click(function(e){
        $(this).next().slideToggle("fast");
        $(this).parent().toggleClass("opened");
        e.preventDefault();
    });

    $('#menu_2 li.parent').hover(function(){
        $("ul", this).show();
    },function(){
        $("ul", this).hide();
    });
    $('#menu_2 li.parent > a').unbind("click");

    /*---------- USER ----------*/
    
    $("div.user_register form").data('check', {}).submit(function() {
        var form = this, name = $('input[name=name]', form), mail = $('input[name=mail]', form), pass = $('input[name^=pass]', form);
        if (!name.val().match(/\S+/))
            return show_error("Необходимо ввести <strong>имя</strong>", name);
        if (!mail.val().match(/^\S+@\S+\.\S+/))
            return show_error("Необходимо ввести корректный <strong>email</strong>", mail);
        if (pass.eq(0).val() != pass.eq(1).val())
            return show_error("Введенные <strong>пароли</strong> не совпадают", pass);

        var id = (res = /\/(\d+)$/.exec($(form).attr('action'))) ? res[1] : '';
        var check = check_form(form, '/user/check/' + id, {name: name.val(), mail: mail.val()});
        if (!check) return false;
        if ('name' in check) return show_error(check.name, name);
        if ('mail' in check) return show_error(check.mail, mail);
        return true;
    });
    $("div.user_register form input:text").change(function() {
        $(this).parents('form').removeData('check');
    });

    $("div.user_lost form").submit(function(){
        var input = $('input[name=input]', this);
        if (!input.val().match(/\S+/))
            return show_error("Необходимо ввести <strong>имя</strong> или <strong>почтовый адрес</strong>", input);
        return true;    
    });

    /*---------- USER ----------*/

    $("input.datepicker").datepicker();

});

