﻿var addons = {
    definitions: {
        dependencies: function () {
            var dependents = $('.dependent').length > 0;
            return dependents;
        }
    },
    init: function () {
        if (addons.definitions.dependencies()) {
            addons.initializeDependent($('.dependent'));
            addons.initializeProduct($('.tv, .broadband, .event'));
        }
        else {
            addons.initializeProduct($('.addons .product, .event'));
        }

        $('.tvaddons .addonwrapper').equalHeight();
        //$('.tvaddons .addonimage').equalHeight();
        //$('.tvaddons .addoninfo').equalHeight();
        $('.tvaddons .addonlink').equalHeight();
        $('.tvaddons .addonprice li').equalHeight();

//        addons.setRadioButtonAction($('.tvaddons input[type="checkbox"]'));
    },
    setRadioButtonAction: function ($elements) {
        $elements.each(function () {
            $(this).change(function () {
                if ($(this).is(':checked')) {
                    $elements.each(function () {
                        addons.deselectElement($(this));
                    })
                    addons.selectElement($(this));
                }
                else {
                    addons.deselectElement($(this));
                }
            })
        });
    },
    initializeDependent: function ($elements) {

        $elements.each(function () {

            $(this).find('input[type="checkbox"]').live('change', function () {

                if ($(this).is(':checked')) {

                    $(this).addClass('trigger');

                    if ($('.broadband input[type="checkbox"]:checked').length == 0) {

                        $.confirm({
                            'title': $(this).parents('.product').find('.confirmbox .header').html(),
                            'message': $(this).parents('.product').find('.confirmbox .content').html(),
                            'buttons': {
                                'Ja, jeg ønsker at bestille bredbånd': {
                                    'class': 'dialogbutton_grey',
                                    'action': function () {
                                        addons.updateCheckBoxList($('.trigger'));
                                        addons.selectElement($('.broadband input.default'));
                                        $('.trigger').removeClass('trigger');
                                    }
                                },
                                'Nej tak': {
                                    'class': 'decline',
                                    'action': function () {
                                        addons.deselectElement($('.trigger'));
                                        $('.trigger').removeClass('trigger');
                                    }
                                }
                            }
                        });

                        return false;
                    }
                    else {
                        addons.updateCheckBoxList($(this));
                        $('.trigger').removeClass('trigger');
                    }
                }
                else {
                    addons.deselectElement($(this));
                }
            });
        });
    },
    initializeProduct: function ($elements) {
        $elements.each(function () {
            $(this).find('input[type="checkbox"]').live('change', function () {
                if ($(this).is(':checked')) {
                    addons.updateCheckBoxList($(this));
                    addons.selectElement($(this));
                }
                else {
                    addons.deselectElement($(this));
                }
            });
        });
    },
    updateCheckBoxList: function ($element) {
        $siblings = $element.parents('.product').find('input[type="checkbox"]');
        $siblings.attr('checked', false).parent().removeClass('selected');
        addons.selectElement($element);
    },
    selectElement: function ($element) {
        $element.attr('checked', true).parent().addClass('selected');
    },
    deselectElement: function ($element) {
        $element.attr('checked', false).parent().removeClass('selected');
    },
    deselectFollowing: function ($element, index, $container) {
        if (index > -1) {
            $container.find('input[type="checkbox"]:gt(' + index + ')').each(function () { $(this).attr('checked', false).parent().removeClass('selected'); });
        }
    },
    setDependencies: function ($element, index, $container) {
        $container.find('.product:lt(' + index + ')').each(function () {
            if (!$(this).find('input[type="checkbox"]:checked').length) {
                addons.selectElement($(this).find('input.default'));
            }
        });
    }
}
