$(document).ready(function(){

    bookmr.init();
    bookmarkcompany.init();
//	$(".submit-order").click(function(){
//
//		var company_name = $(this).attr("cname");
//		var id = $(this).attr("idd");
//		var type = "company"
//		show_massage_form(company_name, id, type);
//		return false;
//	});

	// Global hook for send message to firm
	$(".btn-send-msg").click(function()
	{
		var company_name = $(this).parents('.wrap').find('.title').text();
		var id = $(this).parents('div.wrap').attr('idd');
		var type = "company"

		show_massage_form(company_name, id, type);

    $('body').scrollTop(0)
		return false;
	});

	// Global button - show bookmarks
//	$("span.favorite, .fav-ico span").toggle(function() { $(".favs").show(); $(".fav-buttons li:first").trigger('click'); },
//							  function() { $(".favs").hide(); });

    $('span.favorite, .fav-ico span').click(function(){
        $(".sites-u, .cities").hide();
        var menu = $(".favs");
        if(menu.is(':visible')) {
            menu.hide();
        } else {
            menu.show();
            $(".fav-buttons li:first").trigger('click');
        }
    });


	// Buttons tabs changer
	$(".fav-buttons li").click(function()
	{
		$(".fav-buttons li").removeClass("selected");
		$(this).addClass('selected');
		var type = $(this).attr('id');
		type = type.split("_")[1];
		load_bookmarks(type);
	});

	// Global add to bookmarks
	$(".add-to").click(function() {

		var object_id = $(this).parents(".wrap").attr("idd");
		if (object_id == undefined) object_id = $(this).closest(".function").find(".btn-add-cart-big").attr("id").split("_")[1]; // For product detail page
		
		var action = "add";
		if ($(this).hasClass("bookmarked")) action = "delete";		
		
		var category = null;
		if ($(this).hasClass("goods")) category = "product";
		if ($(this).hasClass("company")) category = "company";
		if ($(this).hasClass("advert")) category = "advert";

//    $(this).removeClass('bookmrkt add-to').addClass('bookmarked del-bookmark');
    set_bookmark(action, category, object_id);


		return false;
	});



});

function show_massage_form(company_name, id, type) {
    $('body').createOverlay("Написать сообщение для компании", $("#messageTemplate").tmpl(), 500);
    $('.f-info span').text(company_name);


    focus_blur($('#f-from-fname'));
    focus_blur($('#f-from-lname'));
    focus_blur($('#f-from-email'));
    focus_blur($('#f-from-phone'));
    focus_blur($('#f-title'));
    focus_blur($('#f-message'));

    $("#f-send").click(function() {

        email_re = /^[-a-z0-9!#$%&'*+/=?^_`{|}~]+(?:\.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*@(?:[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?\.)*(?:aero|arpa|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|[a-z][a-z])$/

        var data = {};
        data.email = un_focus($('#f-from-email'));
        if (!email_re.test(data.email)) {
            alert("Введите правильно E-mail адрес.");
            return false;
        }
        data.phone = un_focus($('#f-from-phone'));
        data.f_name = un_focus($('#f-from-fname'));
        data.l_name = un_focus($('#f-from-lname'));
        data.subject = un_focus($('#f-title'));
        data.text = un_focus($('#f-message'));
//        data.csrftoken = getCookie('csrftoken');

        //console.log ("data",data);

        var flag = false;
        for (var i in data) {
            if (data[i] == null || data[i].length == 0) flag = true;
        }

        if (flag) {
            alert("Заполните все поля перед отправкой сообщения.");
            return false;
        }

        data.captcha_0 = $("#captcha_0").val();
        data.captcha_1 = $("#captcha_1").val();


        $.ajax({
            headers: {"X-CSRFToken":data.csrftoken},
            url: '/ajax/new_message/' + type + '/' + id + '/',
            type: 'POST',
            data: data,
            async: true,
            error: function() {
                alert("Ошибка сервера. Попробуйте позже.");
            },
            success: function(ret) {
                // console.log (ret);
                if (ret == "ok") {
                    alert("Сообщение отправлено. Данные для входа в личный кабинет высланы на Ваш E-mail");
                    $('body').trigger("close_overlay");
                    window.location.reload(true);
                }
                if (ret.captcha) {
                    $("#captcha_0").val(ret.captcha_0);
                    $("#captcha_1").val("");
                    $("#captcha_img").empty();
                    $("#captcha_img").append("<img src='/" + ret.captcha + "'>");
                    $(".captcha-div").slideDown();
                    return;
                }
                if (ret.error == "duplicate_email") alert("Пользователь с таким email уже зарегистрирован в системе.");

            }
        });
    });
}

function load_bookmarks(type) {
    $(".favs .content").append("<div class='ajax-loader'></div>");

    $.ajax({
        url:'/ajax/bookmarks/' + type + '/',
        dataType: 'json',
        async: true,
        error: function () {
            alert("Ошибка сервера. Попробуйте позже.");
        },
        success: function(data) {
            if (data == "nonauth") {
                alert("Извините, вы не авторизированы.");
            }
            $(".favs .content").empty();
            if (type == "product") {
                $.each(data, function (v, k) {
                    data[v].price = $.trim(ins1000Sep(k.price.toString()));
                    data[v].title = check_length(k.title, 50);
                    data[v].company = check_length(k.company, 80);
                });
                $(".favs .content").append($("#bookmarkProductTemplate").tmpl(data));
            }
            if (type == "company") {
                $.each(data, function (v, k) {
                    data[v].title = check_length(k.title, 50);
                });
                $(".favs .content").append($("#bookmarkCompanyTemplate").tmpl(data));
            }
            $(".ajax-loader").remove();
            $("a.del-bookmark").click(function() {
                delete_bookmark(type, $(this));
            });

        }
    });
}

function delete_bookmark(category, elem) {
    var parent = elem.parents(".bookmark-element");
    var object_id = parent.attr('id').split("_")[1];

    $.ajax({
        url:'/bookmarks/delete/' + category + '/' + object_id + '/',
        error: function() {
            alert("Закладка не удалена. Попробуйте позже.");
        },
        success: function(data) {
            parent.fadeOut('fast', function() {
                $(this).remove();
            });
            $(".favorite span").text(data)
        }
    });

}

function set_bookmark(action, category, object_id) {
    // Ajax add to bookmarks on server
    $.ajax({
        url: '/bookmarks/' + action + '/' + category + '/' + object_id + '/',
        type: 'GET',
        async: true,
        error: function() {
            alert("Закладка не добавлена. Попробуйте позже.");
        },
        success: function(data) {
            if (data == "nonauth") {
                // Show auth form
                fast_auth();
                $("body").bind("auth_done", function() {
                    set_bookmark(action, category, object_id);
                    alert("Закладка добавлена");
                });
            }
            if (data == "error") {
                alert("Закладка не добавлена. Попробуйте позже.");
                return;
            }
            else $(".favorite span").text(data);
        }
    });
}

function getCookie(name) {
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }

var bookmr = (function(){

    var b = {
        init: function(){
            b.bookmarkProduct();
        },

        bookmarkProduct: function(){
            $('.bookmarkProduct').click(function(){
                var el = $(this);
                var pid = $(this).attr('pid');
                if($(el).hasClass('addBookmark')) b.addToBookmark(el, pid);
                if($(el).hasClass('delBookmark')) b.delBookmark(el, pid);

                return false;
            });
        },
        addToBookmark: function(el, pid){
            $.ajax({
                url: '/bookmarks/add/product/' + pid + '/', type: 'GET', async: true,
                error: function() { alert("Закладка не добавлена. Попробуйте позже."); },
                success: function(data) {
                    if (data == "nonauth") {
                        // Show auth form
                        fast_auth();
                        $(el).removeClass('addBookmark').addClass('delBookmark');
                    }
                    if (data == "error") {
                        alert("Закладка не добавлена. Попробуйте позже.");
                        return;
                    }
                    else {
                        $(el).removeClass('addBookmark').addClass('delBookmark');
                    }
                }
            });
        },
        delBookmark: function(el, pid){
            $.ajax({
                url: '/bookmarks/delete/product/' + pid + '/', type: 'GET', async: true,
                error: function() { alert("Закладка не добавлена. Попробуйте позже."); },
                success: function(data) {
                    if (data == "nonauth") {
                        // Show auth form
                        fast_auth();
                        $(el).removeClass('delBookmark').addClass('addBookmark');
                    }
                    if (data == "error") {
                        alert("Закладка не добавлена. Попробуйте позже.");
                        return;
                    }
                    else {
                        $(el).removeClass('delBookmark').addClass('addBookmark');
                    }
                }
            });
        }
    }

    return b;
})();

var bookmarkcompany = (function(){
    var b = {
        init: function(){
            b.bookmarkCompany();
        },

        bookmarkCompany: function(){
            $('.bookmarkCompany').click(function(){
                var el = $(this);
                var pid = $(this).attr('pid');
                if($(el).hasClass('addBookmark')) b.addToBookmark(el, pid);
                if($(el).hasClass('delBookmark')) b.delBookmark(el, pid);

                return false;
            });
        },
        addToBookmark: function(el, pid){
            $.ajax({
                url: '/bookmarks/add/company/' + pid + '/', type: 'GET', async: true,
                error: function() { alert("Закладка не добавлена. Попробуйте позже."); },
                success: function(data) {
                    if (data == "nonauth") {
                        // Show auth form
                        fast_auth();
                        $(el).removeClass('addBookmark').addClass('delBookmark');
                    }
                    if (data == "error") {
                        alert("Закладка не добавлена. Попробуйте позже.");
                        return;
                    }
                    else {
                        $(el).removeClass('addBookmark').addClass('delBookmark');
                    }
                }
            });
        },
        delBookmark: function(el, pid){
            $.ajax({
                url: '/bookmarks/delete/company/' + pid + '/', type: 'GET', async: true,
                error: function() { alert("Закладка не добавлена. Попробуйте позже."); },
                success: function(data) {
                    if (data == "nonauth") {
                        // Show auth form
                        fast_auth();
                        $(el).removeClass('delBookmark').addClass('addBookmark');
                    }
                    if (data == "error") {
                        alert("Закладка не добавлена. Попробуйте позже.");
                        return;
                    }
                    else {
                        $(el).removeClass('delBookmark').addClass('addBookmark');
                    }
                }
            });
        }
    }

    return b;
})();
