function riseMessage(id, message, error) {
    var e = $('#' + id);
    if (e) {
        $(e).hide();
        $(e).removeClass('error');
        if (error == true) {
            $(e).addClass('error');
        }
        $(e).html(message);
        $(e).fadeIn(1000);
        window.setTimeout(function() {
            $(e).fadeOut(50);
        }, 5000);
    }
}


(function($) {
    $.fn.m2_comments = function(options) {
        var defaults = {
            container  : null,
            show_block : null,
            action : null
        };

        function setOptions(new_options) {
            options = $.extend({}, defaults, new_options);
        }

        function init(link) {
            link.click(function(event) {
                event.stopPropagation();

                $.getJSON(options.action, function(response) {
                    if (response.isError == 0) {
                        var div = $("<div></div>");
                        div.css({
                            backgroundColor: '#FFFFAA'
                        });
                        div.html(response.data);
                        $('#' + options.show_block).remove();
                        $('#' + options.container).append(div);
                        div.animate({
                            backgroundColor: '#FFFFFF'
                        }, 800);
                    }
                });

                return false;
            })
        }

        return this.each(
            function(t) {
                setOptions(options);
                init($(this));
            }
            );
    }
})(jQuery);


(function($) {
    $.fn.m2_tabs = function(options) {

        // support mutltiple elements
        if (this.length > 1){
            this.each(function() {
                $(this).m2_tabs(options)
            });
            return this;
        }

        var defaults = {
            linkSelector : 'li a',
            tabSelector : 'div',
            activeClass : 'active'
        };

        var links = [];

        function setOptions(new_options) {
            options = $.extend({}, defaults, new_options);
        }

        function observeTabs(container) {
            container.find(options.linkSelector).each(function(i, link) {
                addTab(link);
            });
            setActiveN(1);
        }

        /**
         * Sets tab as active.
         */
        function setActive(link) {
            for (var i = 0; i < links.length; ++i) {
                if (links[i] != link) {
                    hide(links[i]);
                }
            }
            $(link).parent().addClass(options.activeClass);
            show(link);
        }

        /**
         * Sets Nth tab as active.
         */
        function setActiveN(i) {
            if (links[i-1] !== undefined) {
                setActive(links[i-1]);
            }
            return this;
        }

        /**
         * Public callback for setActiveN method.
         */
        this.show = setActiveN;

        function addTab(link) {
            if (links.length > 0) {
                hide(link);
            }
            links.push(link);

            $(link).click(function(event) {
                event.stopPropagation();
                setActive(link);
                return false;
            });
        }

        function show(el) {
            $(el).parent().addClass(options.activeClass);
            var tab = getContainer(el);
            $(tab).css('display', 'block');
        }

        function hide(el) {
            $(el).parent().removeClass(options.activeClass);
            var tab = getContainer(el);
            $(tab).css('display', 'none');
        }

        function getContainer(link) {
            var hash = $(link).context.hash;
            if ($(hash)) {
                return $(hash);
            }
            return null;
        }
        
        return this.each(
            function(t) {
                setOptions(options);
                observeTabs($(this));
            }
            );
    };
})(jQuery);


/**
 * M2 Selectbox component.
 */
(function() {
    $.fn.selectbox = function(options) {

        var defaults = {
            select: null,
            elements: 'a' //Pattern to get elements on container
        }

        function setOptions(new_options) {
            options = $.extend({}, defaults, new_options);
        }

        function init(o) {
            var c = $('#' + options.container);
            if (c) {
                o.click(function() {
                    if (c.css('display') == 'none') {
                        c.slideDown();
                    }
                    else {
                        c.slideUp();
                    }
                })

                c.find(options.elements).click(function(e) {
                    onSelect(e, c, o);
                })
            }
        }

        function onSelect(event, container, object) {
            event.preventDefault()
            if (options.select !== null) {
                options.select(event.target);
            }
            
            object.text($(event.target).text());
            container.slideUp();
        }

        function setOptions(new_options) {
            options = $.extend({}, defaults, new_options);
        }

        return this.each(
            function(t) {
                setOptions(options);
                init($(this));
            }
            );
    }

})(jQuery);


(function() {
    $.fn.archive = function(options) {
        var defaults = {
            action: null,
            years_id: null,
            months_id: null,
            mag_id: null,
            details_id: null,
            details_action: null,
            preloader_id: null,
            preloader_info: 'Žurnalų nėra'
        }

        container = null

        function setOptions(new_options) {
            options = $.extend({}, defaults, new_options);
        }

        function init(o) {
            container = o;
            month = $('#' + options.months_id);
            year = $('#' + options.years_id);
            
            reload(options.mag_id, month, year);
            $('#years_trigger').selectbox({
                container: 'years',
                select: function(e) {
                    selectboxOnSelect(e, 'years_value')
                }
            });
            $('#months_trigger').selectbox({
                container: 'months',
                select: function(e) {
                    selectboxOnSelect(e, 'months_value')
                }
            });
        }


        function preloader(text) {
            var p = $('#' + options.preloader_id);
            if (p) {
                var c = "<img src=\"images/loader.gif\">";
                if (text && text.length > 0) {
                    c = "<h3>" + text + "</h3>";
                }
                p.html(c);
            }
        }


        function reload(mag_id, month, year) {
            preloader();
            container.html('');
            if (mag_id) {
                var params = ',mag_id.' + mag_id;
                
                if (year && $(year).attr('value') > 0) {
                    params = params + ',year.' + $(year).attr('value');
                }
                if (month && $(month).attr('value') > 0) {
                    params = params + ',month.' + $(month).attr('value');
                }
                var a = options.action + params;
                $.getJSON(a, function(response) {
                    if (response.isError == 0) {
                        container.html(response.data);

                        if (response.data.length > 0) {
                            $('#archive_slider').icarousel('#prev', '#next');

                            $(container).find('a').click(function(event) {
                                event.preventDefault();
                                var issue_id = $(event.currentTarget).attr('href').split("#")[1];
                                details(issue_id);
                            })
                            $(container).find('a').first().trigger('click');
                        }
                        else {
                            preloader(options.preloader_info);
                        }
                    }
                });
            }
        }


        function details(issue_id) {
            var a = options.action + ',ajax.1,action.info,issue.' + issue_id;
            var c = $('#' + options.details_id)
            $.getJSON(a, function(response) {
                if (response.isError == 0) {
                    c.html(response.data);
                }
            });
        }


        function selectboxOnSelect(item, input_id) {
            $('#'+input_id).attr('value', $(item).attr('href').split('#')[1]);
            month = $('#' + options.months_id);
            year = $('#' + options.years_id);
            reload(options.mag_id, month, year);
        }


        return this.each(
            function(t) {
                setOptions(options);
                init($(this));
            }
            );
    }
})(jQuery);

/**
 * jCarousel hacks.
 */
function sliderGetActivePage() {
    return $('.pages a.active').first().index() + 1;
}

function sliderSetActivePage(i) {
    $('.carousel-pagination a:nth('+ (i-1) +')').click();
    $('.pages a').removeClass('active');
    $('.pages a:nth('+(i-1)+')').addClass('active');
    manageSliderNav();
}
function manageSliderNav() {
    var t = sliderTotalPages();
    var c = sliderGetActivePage();
    var l = $('.control.prev');
    var r = $('.control.next');
    if (t > 1) {
        if (c == 1) {
            l.hide();
            r.show();
        }
        if (c == t) {
            r.hide();
            l.show();
        }
    }
    else {
        l.hide(); r.hide();
    }
}
function sliderTotalPages() {
    return $('.pages a').length;
}
function sliderNextPage() {
    var c = sliderGetActivePage();
    if (c < sliderTotalPages()) {
        sliderSetActivePage(c+1);
    }
}
function sliderPrevPage() {
    var c = sliderGetActivePage();
    if (c > 1) {
        sliderSetActivePage(c-1);
    }
}

function submitWithAjaxToContainer(elForm, el) {
    elForm = $('#' + elForm);
    el = $('#' + el);
    if (elForm) {
        $.post(elForm.attr('action'), elForm.serialize(), function(data) {
            if (el) {
                el.html(data);
            }
        });
    }
}

function submitAndRedirect(elForm, url) {
    elForm = $('#' + elForm);
    if (elForm) {
        $.post(elForm.attr('action'), elForm.serialize(), function(data) {
            document.location = url;
        });
    }
}

function loadWithAjaxToContainer(url, el) {
    el = $('#' + el);
    if (el) {
        $.get(url, function(data) {
            el.html(data);
        });
    }
}


function refreshQuestionsAnswers(values) {
    var el = $('#__questions_answers__');
    var elValue = $('#__questions_answers_value__');
    if (values === undefined) {
        values = new Array();
        var nodes = el.find('input');
        var l = nodes.length;
        for (var i = 0; i < l; i++) {
            if (nodes[i].checked) {
                values.push(nodes[i].id.substr(7));
            }
        }
    } else {
        values = values.split(',');
    }
    elValue.attr("value", values.join(','));
    var l = values.length;
    for (var i = 0; i < l; i++) {
        $('#answer_' + values[i]).attr("checked", "checked");
    }
}

function setVoteValue(id, value) {
    var container = $("#__element_votes_" + id);
    var nodesImg = container.find('.stars img');
    if (value === undefined) {
        value = container.attr("default_vote");
    }
    var l = nodesImg.length;
    for (i = 0; i < l; i++) {
        nodesImg[i].src = "images/star-o" + (value > i ? "n" : "ff") + ".gif";
    }
}

function vote(uri) {
    var listener = function(data) {
        var parts = data.split(" ");
        var container = $("#__element_votes_" + parts[0]);
        container.attr("default_vote", parts[3]);
        container.find("em").html(parts[3]);
        container.find("span b").html(parts[2]);
        setVoteValue(parts[0]);
    };
    jQuery.get(uri, null, listener)
}

(function() {
    $.fn.kmi = function(options) {
$("input:radio[name=theme]").click(function() {
    var value = $(this).val();
});
        var defaults = {
            height: null,
            weight: null,
            sex: null,
            result: null,
            errorClass: 'error'
        }

        function setOptions(new_options) {
            options = $.extend({}, defaults, new_options);
        }


        function init(f) {

            $(f).submit(function() {
                var w = $('#' + options.weight),
                    h = $('#' + options.height),
                    r = $('#' + options.result),
                    s = $("input:radio[name="+options.sex+"]:checked");


                w.removeClass(options.errorClass);
                h.removeClass(options.errorClass);
                r.text('?');

                if (isNumber($(h).val()) == false || $(h).val() == 0) {
                    h.addClass(options.errorClass).focus();
                    return false;
                }
                if (isNumber($(w).val()) == false || $(w).val() == 0) {
                    w.addClass(options.errorClass).focus();
                    return false;
                }

                var s_val = s.val() == 1 ? 1 : 0;
                var k = kmi(h.val(), w.val(), s_val);
                r.text(k);
                return false;
            });
        }

        function isNumber(n) {
            return !isNaN(parseFloat(n)) && isFinite(n);
        }

        function kmi(height, weight, is_man) {
            var k = is_man == true ? 1 : 1.1;
            return Math.round(weight / (height*height) * k * 100000)/10
        }

        return this.each(
            function(t) {
                setOptions(options);
                init($(this));
            });
    }
})(jQuery);

