/**
 * init all tabs on the left side of the page
 */
function initTabs() {
    $('.left #col1 .tabs').each(function() {
        $(this).tabs({
            collapsible: true,
            show: function(event, ui) {
                if ($(ui.tab).parent().parent().parent().attr('id') == 'music') {
                    setTimeout(function(){
                        fleXenv.initByClass("jp-playlist");
                    }, 200);
                }
            }
        });
    });

    $(".portlet-content .ui-tabs .ui-tabs-nav li").each(function (i) {
        $(".option_cont .option_cont_check form", $(this).parents().eq(2).prev()).append('<div class="setting-checker">' +
            '<input type="checkbox" id="chck' + checkboxID + '"/>' +
            '<label for="chck' + checkboxID + '">' + $("a", $(this)).html() + '</label>' +
            '</div>');

        checkboxID++;
    });
}

/**
 * init all accordions on the right side of the page
 */
function initAccordions() {
    $('.right #col2 .accordion').each(function() {
        $(this).accordion({
            collapsible: true,
            autoHeight: false,
            change: function(event, ui) {
                if ($(ui.newContent[0]).parent().attr('id') == 'music') {
                    setTimeout(function() {
                        fleXenv.initByClass("jp-playlist");
                    }, 200);
                }
            }
        });
    });

    $(".portlet-content .ui-accordion").each(function (i) {
        var $this = $(this);
        $("h3", $(this)).each(function (j) {
            $(".option_cont .option_cont_check form", $this.parents().eq(1)).append('<div class="setting-checker">' +
                '<input type="checkbox" id="chck' + checkboxID + '"/>' +
                '<label for="chck' + checkboxID + '">' + $("a", $(this)).html() + '</label>' +
                '</div>');

            checkboxID++;
        });
    });
}

function bindActions() {
    $('.portles_option').click(function (e) {
        $(this).toggleClass("option_btn_hover");
        $(this).next("div").toggleClass("option_cont_block");
        e.stopPropagation();
    }).mousedown(function() {
        return false;
    });

    $(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all")
                 .find(".portlet-header")
                 .addClass("ui-widget-header ui-corner-all")
                 .prepend("<span class='ui-icon ui-icon-minusthick'></span>")
                 .end()
                 .find(".portlet-content");

    $(".portlet-header .ui-icon").click(function() {
        $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick");
        $(this).parents(".portlet:first").find(".portlet-content").toggle();
        saveOrder();
    }).mousedown(function() {
        return false;
    });

    $("body").click(function () {
        $('.portles_option').removeClass("option_btn_hover")
        $('.portles_option').next("div").removeClass("option_cont_block")
    });

    $(".column").sortable({
        handle: '.portlet-header',
        connectWith: ['.column'],
        start: function(event, ui) {
            fromSide = ui.item.parent().attr("id") == "col1" ? "left" : "right";
        },
        stop: function(event, ui) {
            var item = ui.item;
            var toSide = item.parent().attr("id") == "col1" ? "left" : "right";

            if(fromSide != toSide) {
                if(toSide == "left") {
                    toTabs(item);
                } else {
                    toAccordion(item);
                }
            }

            saveOrder();
        }
    });

    $('.option_cont').mousedown(function() {
        return false;
    });

    $(".setting-checker input[type=\"checkbox\"]").live("change", function () {
        var prt_parent = $(this).parents().eq(6);
        var tab_num = $(".setting-checker input[type=\"checkbox\"]", prt_parent).index($(this));
        savePortlet(this);
        $(this).is(":checked") ? showWidgetTab(prt_parent, tab_num) : hideWidgetTab(prt_parent, tab_num);
        setFirstWidgetTabActive(prt_parent);
    });
}

function toAccordion(item) {
    if(item.hasClass("ui-accordion")) return false;
    var daddy = $(".portlet-content", item).children().eq(0);
    daddy.tabs('destroy');
    window.setTimeout(function() {
        $(">div", daddy).each(function(i) {
            $(this).before('<h3>' + $("ul li", daddy).eq(i).html() + '</h3>');
        });
        $("ul", daddy).eq(0).remove();
        $(".portlet-content", item).children().eq(0).accordion({
            collapsible: true,
            autoHeight: false,
            change: function(event, ui) {
                if ($(ui.newContent[0]).parent().attr('id') == 'music') {
                    setTimeout(function() {
                        fleXenv.initByClass("jp-playlist");
                    }, 200);
                }
            },
            create: function(event, ui) {
                if (event.target.id == 'music') {
                    setTimeout(function() {
                        fleXenv.initByClass("jp-playlist");
                    }, 500);
                }
            }
        });
    }, 100);

    if (item.attr('id') == 'media') {
        item.find('.video_player object').attr('width', '298').attr('height', 200);
        item.find('.video_player embed').attr('width', '298').attr('height', 200);
    }

    if (item.attr('id') == 'facebook') {
        item.find('iframe').attr('src', '//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpages%2FRadio-Van-FM-1030%2F189200631114774&width=298&height=590&colorscheme=light&show_faces=true&border_color&stream=true&header=true&appId=289196601121545');
    }

    if (item.attr('id') == 'fb') {
        item.find('.fb-comments').attr('data-width', '297');
        var src = item.find('iframe').attr('src');
        if (typeof src != 'undefined')
            item.find('iframe').attr('src', src.replace('584', '297'));
    }

    if (item.attr('id') == 'music') {
        setTimeout(function() {
            fleXenv.initByClass("jp-playlist");
        }, 500);
    }
}

function toTabs(item) {
    if(item.hasClass("ui-tabs")) return false;
    var daddy = $(".portlet-content", item).children().eq(0);
    daddy.accordion('destroy');
    window.setTimeout(function() {
        daddy.prepend('<ul></ul>');
        $("h3", daddy).each(function() {
            $(this).appendTo($("ul", daddy).eq(0));
        });
        $("ul h3", daddy).each(function() {
            $(this).replaceWith('<li>' + $(this).html() + '</li>');
        });
        $(".portlet-content", item).children().eq(0).tabs({
            collapsible: true,
            show: function(event, ui) {
                if ($(ui.tab).parent().parent().parent().attr('id') == 'music') {
                    setTimeout(function(){
                        fleXenv.initByClass("jp-playlist");
                    }, 200);
                }
            }
        });
    }, 100);

    if (item.attr('id') == 'media') {
        item.find('.video_player object').attr('width', '584').attr('height', 377);
        item.find('.video_player embed').attr('width', '584').attr('height', 377);
    }

    if (item.attr('id') == 'facebook') {
        item.find('iframe').attr('src', '//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpages%2FRadio-Van-FM-1030%2F189200631114774&width=615&height=590&colorscheme=light&show_faces=true&border_color&stream=true&header=true&appId=289196601121545');
    }

    if (item.attr('id') == 'fb') {
        item.find('.fb-comments').attr('data-width', '584');
        var src = item.find('iframe').attr('src');
        if (typeof src != 'undefined')
            item.find('iframe').attr('src', src.replace('297', '584'));
    }

    if (item.attr('id') == 'music') {
        setTimeout(function() {
            fleXenv.initByClass("jp-playlist");
        }, 500);
    }
}

function initLoginBox() {
    $('.enter').click(function (e) {
        $(".popup_bg, .form").fadeIn(500, function () {
            $(".popup_form_cont").animate({
                height:264
            }, 500);
        });
        e.preventDefault();
    });
    $('.popup_bg, .popup_enter').click(function (e) {
        $(".popup_form_cont").animate({
            height:0
        }, 500, function () {
            $(".form, .popup_bg").fadeOut(500);
        });
        e.preventDefault();
    });
}

function initRatings() {
    $('.rating div').live("click", function () {
        $(this).addClass("rating_active")
               .nextAll("div")
               .removeClass("rating_active");
        $(this).prevAll("div")
               .addClass("rating_active");
    });

    $(".rating div").live({
        mouseenter:function () {
            $(this).addClass("rating_hover");
            $(this).prevAll("div").addClass("rating_hover");
        },
        mouseleave:function () {
            $(this).removeClass("rating_hover");
            $(this).prevAll("div").removeClass("rating_hover");
        }
    });
}

function initSlider() {
    $('#coin-slider').coinslider({
        links : false,
        hoverPause: true,
        effect: 'random' // random, swirl, rain, straight
    });
}

function initMenu() {
    $("#menu-main li:first-child").addClass("menu_home");
    $(".sub-menu li:first-child").removeClass("menu_home");
}

function hideWidgetTab(daddy, num) {
    if ($(".portlet-content .ui-accordion", daddy).size() > 0) {
        $(".portlet-content .ui-accordion h3", daddy).eq(num).hide().next().hide();
    } else {
        $(".portlet-content .ui-tabs .ui-tabs-nav li", daddy).eq(num).hide();
        $(".portlet-content .ui-tabs .ui-widget-content", daddy).eq(num).hide();
    }
}

function showWidgetTab(daddy, num) {
    if ($(".portlet-content .ui-accordion", daddy).size() > 0) {
        //console.log(daddy, $(".portlet-content .ui-accordion h3", daddy).eq(num))
        $(".portlet-content .ui-accordion h3", daddy).eq(num).show();
    } else {
        $(".portlet-content .ui-tabs .ui-tabs-nav li", daddy).eq(num).show();
        $(".portlet-content .ui-tabs .ui-widget-content", daddy).eq(num).show();

        $("a", $(".portlet-content .ui-tabs .ui-tabs-nav li", daddy).eq(num).show()).click();
    }
}

function setFirstWidgetTabActive(daddy, strict) {
    if ($(".portlet-content .ui-accordion", daddy).size() > 0) {
        $(".portlet-content .ui-accordion", daddy).children().each(function() {
            if ($(this).hasClass('ui-accordion-content-active')) {
                $(this).slideUp();
            }

            if ($(this).hasClass('ui-state-active')) {
                $(this).addClass('ui-state-default');
            }

            $(this).removeClass("ui-state-active ui-state-hover ui-accordion-content-active");
        });

        $(".portlet-content .ui-accordion h3:visible", daddy).eq(0).addClass('ui-state-active')
            .removeClass('ui-state-default').next().addClass('ui-accordion-content-active').slideDown();
    } else {
        if ($(".portlet-content .ui-tabs .ui-tabs-nav li.ui-state-active:visible", daddy).length > 0 && !strict) {
            return;
        }

        $(".portlet-content .ui-tabs .ui-tabs-nav li", daddy).removeClass("ui-tabs-selected ui-state-active");
        $(".portlet-content .ui-tabs .ui-tabs-nav li:visible a", daddy).eq(0).click();
        $(".portlet-content .ui-tabs .ui-widget-content", daddy).eq($(".portlet-content .ui-tabs .ui-tabs-nav li", daddy).index($(".portlet-content .ui-tabs .ui-tabs-nav li:visible", daddy).eq(0))).removeClass("ui-tabs-hide");
    }
}

function initCookie() {
    var data = {};

    $(".option_cont .option_cont_check form input[type=\"checkbox\"]").attr("checked", true);

    $(".portlet-content .ui-tabs .ui-tabs-nav li").each(function (i) {
        var tmpVar = $(this).parents().eq(3);
        var id = tmpVar.attr("id");
        if (typeof data[id] === "undefined") data[id] = {};

        data[id][$(this).index()] = $(".option_cont .option_cont_check form input[type=\"checkbox\"]", tmpVar).eq($(this).index()).is(":checked");
    });

    $(".portlet-content .ui-accordion h3").each(function (i) {
        var tmpVar = $(this).parents().eq(2);
        var id = tmpVar.attr("id");
        if (typeof data[id] === "undefined") data[id] = {};

        data[id][$(this).index('#' + id + ' .portlet-content .ui-accordion h3')] = $(".option_cont .option_cont_check form input[type=\"checkbox\"]", tmpVar).eq($(this).index('#' + id + ' .portlet-content .ui-accordion h3')).is(":checked");
    });

    saveCookie(data);
    return data;
}

function loadCookie() {
    var storage = utils.storage;

    if (!storage.isSupported()) return null;

    storage.init("radiovan-beta", false);

    if (storage.exists(pageName)) {
        return JSON.parse( storage.read(pageName) );
    }

    return null;
}

function saveCookie(data) {
    var storage = utils.storage;

    if (!storage.isSupported()) return null;

    storage.init("radiovan-beta", false);

    storage.save(pageName, data);
}

function restorePortlets(data) {
    $(".portlet-content .ui-tabs .ui-tabs-nav li").each(function (i) {
        var tmpVar = $(this).parents().eq(3);
        var id = tmpVar.attr("id");
        data[id][$(this).index()] ? showWidgetTab(tmpVar, $(this).index()) : hideWidgetTab(tmpVar, $(this).index());
        $(".option_cont .option_cont_check form input[type=\"checkbox\"]", tmpVar).eq($(this).index()).attr("checked", data[id][$(this).index()]);
        setFirstWidgetTabActive(tmpVar, 1);
    });
    $(".portlet-content .ui-accordion h3").each(function (i) {
        var tmpVar = $(this).parents().eq(2);
        var tmpindex = $("h3", $(this).parent()).index($(this));
        var id = tmpVar.attr("id");
        data[id][tmpindex] ? showWidgetTab(tmpVar, tmpindex) : hideWidgetTab(tmpVar, tmpindex);
        $(".option_cont .option_cont_check form input[type=\"checkbox\"]", tmpVar).eq(tmpindex).attr("checked", data[id][tmpindex]);
        if ($(".portlet-content .ui-accordion > div:visible").size() < 1) {
            setFirstWidgetTabActive(tmpVar);
        }
    });
}

function savePortlet(obj) {
    var id = $(obj).parents().eq(6).attr("id");
    portlets[id][$(obj).parent().index()] = $(obj).is(":checked");
    saveCookie(portlets);
}

function saveOrder() {
    var storage = utils.storage;

    if (!storage.isSupported()) return;

    storage.init("radiovan-beta", false);

    $(".column").each(function(index, value) {
        var colid = value.id;
        var cookieName = pageName + "-order-" + colid;
        var order = $('#' + colid).sortable("toArray");

        for (var i = 0, n = order.length; i < n; i++) {
            var v = $('#' + order[i]).find('.portlet-content').is(':visible');
            order[i] = order[i] + ":" + v;
        }

        storage.save(cookieName, order);
    });
}

function restoreOrder() {
    var storage = utils.storage;

    if (!storage.isSupported()) return;

    storage.init("radiovan-beta", false);

    $(".column").each(function(index, value) {
        var colid = value.id;
        var cookieName = pageName + "-order-" + colid;

        if (!storage.exists(cookieName)) {
            return;
        }

        cookie = JSON.parse(storage.read(cookieName));

        var IDs = cookie;

        for (var i = 0, n = IDs.length; i < n; i++) {
            var toks = IDs[i].split(":");
            if (toks.length != 2) {
                continue;
            }

            var portletID = toks[0];
            var visible = toks[1];
            var portlet = $(".column")
                    .find('#' + portletID);

            if (colid == 'col1') {
                if ($('.accordion', portlet).length > 0) {
                    toTabs(portlet);
                }
            } else {
                if ($('.tabs', portlet).length > 0) {
                    toAccordion(portlet);
                }
            }

            portlet.appendTo($('#' + colid));

            if (visible === 'false') {
                portlet.find(".ui-icon").toggleClass("ui-icon-minusthick");
                portlet.find(".ui-icon").toggleClass("ui-icon-plusthick");
                portlet.find(".portlet-content").hide();
            }
        }
    });
}
