﻿var redirectPrefix = 'http://most.ua/redirect?url=';
var icoDefault = 'http://resources.infojet.net.ua/specific/main/img/bm_blank.gif';
var urlRegexp = /^(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)(?:\w+:\w+@)?(?:(?:[-\w]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$/;

function saveBookmarksCookie(cookieName) {
	var b = '';
	$('.widget_name_bookmarks .w_content li').each(function(){
		var li = $(this);
		var b_id = li.attr('_bookmarkid');
		var b_title = li.find('.b_link_wrapper a').html().replace('\\', '\\\\').replace('\'', '\\\'').replace('"', '\\"');
		var b_url = li.find('.b_link_wrapper a').attr('_realurl').replace('\\', '\\\\').replace('\'', '\\\'').replace('"', '\\"');
		b += "{'id':" + b_id + ", 'title':'" + b_title + "', 'url':'" + b_url + "'},";
	});
	var cookieString = "{'bookmarks':[" + b.replace(/,$/, '') + "]";
	$.cookie(cookieName, cookieString);
};

$(document).ready(function() {
    if (!isUserAuth) {
        saveBookmarksCookie('MostBookmarks');
    } else {
        $.cookie('MostBookmarks', null);
    };

    $('#b_edit_dialog').TextfieldPlaceholders();

    $(document).click(function() {
        $('.w_dialog').hide();
    });
    $('.w_dialog').click(function(e) {
        e.stopPropagation();
    });
    $('.widget_name_bookmarks .w_header_custom.left a').click(function(e) {
        $('.w_dialog').hide();
        $(this).parent().find('.w_dialog').show();
        e.preventDefault();
        e.stopPropagation();
    });

    // Show new bookmark dialog
    $('.widget_name_bookmarks .w_header_custom.right a').click(function(e) {
        $('.w_dialog').hide();
        $('#deleteBookmarkBtn').hide();

        var d = $('#b_edit_dialog');
        $('#b_edit_dialog > p').html('Новая закладка');
        d.css('left', '17px');
        d.css('top', '-5px');
        $(this).parent()[0].appendChild(d[0]);
        $('#bookmark_index').val('');
        $('#bookmark_name').trigger('focus').val('').trigger('blur');
        $('#bookmark_url').trigger('focus').val('').trigger('blur');
        d.show();
        e.preventDefault();
        e.stopPropagation();
    });

    // Show edit bookmark dialog
    $('.widget_name_bookmarks .b_edit').live('click', function(e) {
        var item = $(this).parent();
        var linkEl = item.find('.b_link_wrapper a');
        var index = $('.widget_name_bookmarks .w_content li').index(item);
        var t = $(this).offset().top - $(this).parent().parent().parent().offset().top - 7;
        $('.w_dialog').hide();
        $('#deleteBookmarkBtn').show();
        var d = $('#b_edit_dialog');
        $('#b_edit_dialog > p').html('Редактирование закладки');
        d.css('left', '167px');
        d.css('top', t + 'px');
        $(this).parent().parent().parent()[0].appendChild(d[0]);
        $('#bookmark_index').val(index);
        $('#bookmark_name').trigger('focus').val(linkEl.html()).trigger('blur');
        $('#bookmark_url').trigger('focus').val(linkEl.attr('_realurl')).trigger('blur');
        d.show();
        e.preventDefault();
        e.stopPropagation();
    });

    $('#cancelBookmarkBtn').click(function() {
        $('.w_dialog').hide();
    });

    $('#deleteBookmarkBtn').click(function() {
        if (confirm('Удаляем закладку! Вы уверены?')) {
            var index = $('#bookmark_index').val();
            var item = $('.widget_name_bookmarks .w_content li:eq(' + index + ')');
            var id = item.attr('_bookmarkid');
            item.remove();

            $('.w_dialog').hide();

            if (isUserAuth) {
                $.get('/Bookmarks/DelBookmark', { id: id });
            } else {
                saveBookmarksCookie('MostBookmarks');
                setTimeout(function() {
                    var target = $('div#alert');
                    (target.find('.alert_c strong')).html('Вы удалили закладку!');
                    target.animate({ 'marginRight': '0px' }, 500);
                }, 10)
            };
        };
    });

    $('#saveBookmarkBtn').click(function() {
        var index = $('#bookmark_index').val();
        var name = ($('#bookmark_name').val() != $('#bookmark_name').attr('placeholder')) ? $('#bookmark_name').val() : '';
        var url = ($('#bookmark_url').val() != $('#bookmark_url').attr('placeholder')) ? $('#bookmark_url').val() : '';
        var id = 0;
        if ((name != '') && (url != '')) {
            if (!urlRegexp.test(url)) {
                url = 'http://' + url;
                if (!urlRegexp.test(url)) {
                    alert('Неверная ссылка');
                    return;
                };
            };
            var list = $('.widget_name_bookmarks .w_content ul');
            if (index == '') {
                /* new bookmark */
                var item = list.find('li:last').clone().appendTo(list);
                item.attr('_bookmarkid', '0').attr('_readonly', 'false');
                var icoEl = item.find('a .b_icon');
                icoEl.attr('src', icoDefault);
                if (!isUserAuth) {
                    setTimeout(function() {
                        var target = $('div#alert');
                        (target.find('.alert_c strong')).html('Вы добавили закладку!');
                        target.animate({ 'marginRight': '0px' }, 500);
                    }, 10)
                }
            } else {
                /* edit bookmark */
                var item = $('.widget_name_bookmarks .w_content li:eq(' + index + ')');
                id = item.attr('_bookmarkid');
            };
            var linkEl = item.find('.b_link_wrapper a');
            linkEl.attr('href', redirectPrefix + encodeURIComponent(url)).attr('_realurl', url).html(name).attr('title', name);
            linkEl = item.find('a');
            linkEl.attr('href', redirectPrefix + encodeURIComponent(url));
            $('.w_dialog').hide();

            if (isUserAuth) {
                $.get('/Bookmarks/SetBookmark', { id: id, title: name, link: url }, function(data) {
                    if (index == '') {
                        item.attr('_bookmarkid', data);
                    };
                });
            } else {
                saveBookmarksCookie('MostBookmarks');
            };
        } else {
            alert('Введите уж что-нибудь');
        };
    });

    $('.widget_name_bookmarks li').live('mouseenter', function() {
        if ($(this).attr('_readonly') != 'true') {
            $(this).append('<img class="b_edit" src="' + bookmarksEditImgSrc + '" />');
        };
    });
    $('.widget_name_bookmarks li').live('mouseleave', function() {
        $(this).find('.b_edit').remove();
    });
});