function FotoliaSubscriptionTable(period_selector, daily_quota_selector, subaccounts_number_selector, is_premium, table_id_prefix)
{
    this.period = $(period_selector);
    this.daily_quota = $(daily_quota_selector);
    this.subaccounts_number = $(subaccounts_number_selector);
    this.is_premium = $(is_premium);

    this.displayed_table = null;

    if (!table_id_prefix) {
        table_id_prefix = 'subscription_details';
    }
    this.table_id_prefix = table_id_prefix;

    this.create();
    this.refresh();
}

FotoliaSubscriptionTable.prototype.create = function()
{
    this.is_premium.observe('change', this.refresh.bindAsEventListener(this));
    this.period.observe('change', this.refresh.bindAsEventListener(this));
    this.daily_quota.observe('change', this.refresh.bindAsEventListener(this));

    if (this.subaccounts_number.nodeName.toLowerCase() == 'select') {
        this.subaccounts_number.observe('change', this.refresh.bindAsEventListener(this));
    }
}

FotoliaSubscriptionTable.prototype.refresh = function(event)
{
    if (this.displayed_table != null) {
        this.displayed_table.style.display = 'none';
    }

    table = $(this.table_id_prefix + ':' + this.period.getValue() + ':' + this.daily_quota.getValue() + ':' + this.subaccounts_number.getValue() + ':' + this.is_premium.getValue());
    if (table) {
        table.style.display = 'block';
        this.displayed_table = table;
    }
}

var FotoliaSubscriptionForm = {
    available_values: null,

    init: function()
    {
        FotoliaSubscriptionForm.initSubscriptionForm();
        FotoliaSubscriptionForm.initSingleUserSubscriptionTable();
        FotoliaSubscriptionForm.initMultipleUserSubscriptionTable();
    },

    initSingleUserSubscriptionTable: function()
    {
        is_premium = $('single_user_is_premium');
        daily_quota = $('single_user_daily_quota');
        period = $('single_user_period');
        subaccounts_number = $('single_user_subaccounts_number');

        if (!daily_quota || !period || !subaccounts_number || !is_premium) {
            return ;
        }

        new FotoliaSubscriptionTable(period, daily_quota, subaccounts_number, is_premium, 'subscription_single_user_details');
    },

    initMultipleUserSubscriptionTable: function()
    {
        is_premium = $('multiple_user_is_premium');
        daily_quota = $('multiple_user_daily_quota');
        period = $('multiple_user_period');
        subaccounts_number = $('multiple_user_subaccounts_number');

        if (!daily_quota || !period || !subaccounts_number || !is_premium) {
            return ;
        }

        new FotoliaSubscriptionTable(period, daily_quota, subaccounts_number, is_premium, 'subscription_multiple_user_details');
    },

    initSubscriptionForm: function()
    {
        form = $('subscription');
        if (!form) {
            return ;
        }

        new FotoliaSubscriptionTable($('period'), $('daily_quota'), $('subaccounts_number'), $('is_premium'));

        select_payment_method = $('select_payment_method');
        if (select_payment_method) {
            select_payment_method.observe('click', FotoliaSubscriptionForm.processSubmit);
        }
    },

    processSubmit: function(event)
    {
        form = Event.element(event);

        if ($('accept_terms').checked == false) {
            Event.stop(event);
            alert(_('To proceed to next step you must check the box "I accept the terms and conditions"'));
            return false;
        }
    }
}


/**
 * Launch script
 */
Event.onDOMReady(
    function() {
        FotoliaSubscriptionForm.init();
    }
);
