// Глобальное пространство имен для модулей
var VIBIRAI = {};

$(function () {

    // меняем тип инпута для нативной поисковой строчки в Safari
    // и показываем пригласительное сообщение
    $("input.safari-search").each(function () {
        try {
            var ele = $(this),
                placeholder = ele.metadata().placeholder || "";
            if (navigator.userAgent.indexOf("WebKit/") > -1) {
                this.type = "search";
                this.setAttribute("results", 10);
                this.setAttribute("placeholder", placeholder);
            } else {
                ele.bind("focus", function () {
                    if (ele.val() === placeholder) {
                        ele.removeClass("empty").val("");
                    }
                }).bind("blur", function () {
                    if (ele.val() === "") {
                        ele.addClass("empty").val(placeholder);
                    }
                }).trigger("blur");
            }
        } catch (ex) {}
    });


    // добавляем рамки у редактируемых элементов
    (function () {

        var DELTA_X = 20,
            DELTA_Y = 20,
            COMMON_STYLE = '',
            container = $('<div class="editable-c"></div>'),
            editable = $(".editable"),
            pagePos = $("#page").parent().offset();

        function getAbsolutePosition(ele) {
            var pos = $(ele).offset();

            pos.top = pos.top + parseInt($(ele).css("paddingTop")) - pagePos.top;
            pos.left = pos.left + parseInt($(ele).css("paddingLeft")) - pagePos.left;

            return pos;
        }


        if (editable.length) {
            $('#page').parent().append(container);

            editable.each(function (index) {
                var pos = getAbsolutePosition(this),
                    width = Math.round($(this).width() + DELTA_X),
                    height = Math.round($(this).height() + DELTA_Y),
                    left = Math.round(pos.left - DELTA_X / 2 - 1),
                    top = Math.round(pos.top - DELTA_Y / 2 - 1),
                    frame = [], data;


                frame.push('<div class="editable-f" style="top:' + top + 'px;left:' + left + 'px;width:' + width + 'px;height:1px;"></div>');
                frame.push('<div class="editable-f" style="top:' + top + 'px;left:' + (left + width) + 'px;width:1px;height:' + height + 'px;"></div>');
                frame.push('<div class="editable-f" style="top:' + (top + height) + 'px;left:' + (left + 1) + 'px;width:' + width + 'px;height:1px;"></div>');
                frame.push('<div class="editable-f" style="top:' + (top + 1) + 'px;left:' + left + 'px;width:1px;height:' + height + 'px;"></div>');

                data = $(this).metadata();
                if( data.link )
                {
                    frame.push('<div id="editable-link-' + index + '" class="editable-l"><a href="' + data.link + '">Редактировать</a></div>');
                }

                if( data.del_link )
                {
                    if( ! data.uri ) alert( 'В метаданных не указан uri.' );

                    frame.push('<div id="editable-del_link-' + index + '" class="editable-d"><form method="post" action="' + data.del_link + '"><input name="uri" type="hidden" value="' + data.uri + '" /><span onclick="if( confirm(\'Подтверждаете удаление объекта?\') ) $(this).parents(\'form\').submit()">Удалить</span></form></div>');
                }

                container.append(frame.join(''));

                // отдельно позиционируем ссылку
                $("#editable-link-" + index).each(function () {
                    var lw = $(this).width();
                    $(this).css({
                        top: Math.round(pos.top),
                        left: Math.round(pos.left + width - DELTA_X * 2.5 - lw)
                    });
                });

                $("#editable-del_link-" + index).each(function () {
                    var lw = $(this).width();
                    $(this).css({
                        top: Math.round(pos.top),
                        left: Math.round(pos.left + width - DELTA_X * 2.5 - lw - $("#editable-link-" + index).outerWidth() - 1 )
                    });
                });
            });
        }



    }());


    // декорируем блоки комментариев рамочками
    $("div.decor-frames").each(function () {
        var table = $('<table><tbody><tr><td class="tl"></td><td class="tr">&nbsp;</td></tr><tr><td class="bl">&nbsp;</td><td class="br">&nbsp;</td></tr></tbody></table>');
        $(this).after(table);
        $("td", table).eq(0).append(this);
    });
    

    // управление табами
    $("dl.tabs > dt").bind("click", function () {
        var ele = $(this);

        ele.siblings().removeClass("active").end()
            .next().andSelf().addClass("active");

        ele.find("em:first").width(ele.width());
    }).filter(".active").trigger("click");
    // блокируем ссылки у табов
    $("dl.tabs > dt a").live("click", function () {
        return false;
    });


    // выбор городов
    $("#topper div.city-label").bind("click", function () {
        var sel = $("#topper div.city-selector");

        if (sel.hasClass("hidden")) {
            sel.css("display", "none").removeClass("hidden");
        }
        $("#topper div.city-selector").slideToggle();
    });


    // галерея фотографий
    /*
    $("div.gallery").each(function () {
        var gallery = $(this),
            eles = gallery.find("> div"),
            btnPrev = $("div.nav-prev", this),
            btnNext = $("div.nav-next", this),
            comment = gallery.find("div.comment");

        function getPositionForOffset (base, offset, total) {
            var t = base + offset;
            return t < 0 ? t + total : t >= total ? t - total : t;
        }

        function setGallery (index) {
            eles.removeClass("col-left col-middle col-right").addClass("hidden");
            eles.eq(getPositionForOffset(index, 0, eles.length))
                .addClass("col-left").append(btnPrev).removeClass("hidden");
            eles.eq(getPositionForOffset(index, 1, eles.length))
                .addClass("col-middle").removeClass("hidden").each(function () {
                    var text = $("img", this).attr("title") || "";
                    comment.appendTo(this).removeClass("hidden").find("div.message").html(text);
                    if (text.length === 0) {
                        comment.addClass("hidden");
                    }
                });
            eles.eq(getPositionForOffset(index, 2, eles.length))
                .addClass("col-right").append(btnNext).removeClass("hidden");
        }

        function moveGallery (direction) {
            var first = btnPrev.parent(),
                index = eles.index(first);

            if (index >= 0) {
                setGallery(index + direction);
            }

        }
        // переключение вешается прям на всю колонку
        // можно кликать и по картинке и по ссылке
        $("div.gallery div.col-left").live("click", function () {
            moveGallery(-1);
            return false;
        });
        $("div.gallery div.col-right").live("click", function () {
            moveGallery(1);
            return false;
        });

        function showPack (direction) {
            var packs = $("div.previews div.pack"), next;

            next = packs.not(".hidden").addClass("hidden")[direction === 1 ? "next" : "prev"]("div.pack");
            if (!next || !next.length) {
                if (direction === 1) {
                    next = packs.eq(0)
                } else {
                    next = packs.eq(packs.length - 1);
                }
            }
            next.removeClass("hidden");
        }

        $("span.packs-nav-prev").bind("click", function () {
            showPack(-1);
            return false;
        });
        $("span.packs-nav-next").bind("click", function () {
            showPack(1);
            return false;
        });

        $("div.previews img").bind("click", function () {
            var index = $("div.previews img").removeClass("active").index(this);
            $(this).addClass("active");
            setGallery(index - 1);
        })

    });
    */

});