var P_BASE = new Object();
var P_EXT_BASE = new Object();
var P_N_FOOTBALL_BASE = new Object();
var P_KINO = new Object();
var P_VIP_KINO = new Object();
var P_SPORT = new Object();
var P_SUPER_SPORT = new Object();
var P_N_FOOTBALL = new Object();
var P_NIGHT = new Object();
var P_HD = new Object();
var P_FAMILY = new Object();
var P_LITE = new Object();
var P_SMS = new Object();

/** битовые идентификаторы */
P_BASE.id = 1;
P_EXT_BASE.id = 1 << 1;
P_N_FOOTBALL_BASE.id = 1 << 2;
P_KINO.id = 1 << 3;
P_VIP_KINO.id = 1 << 4;
P_SPORT.id = 1 << 5;
P_SUPER_SPORT.id = 1 << 6;
P_N_FOOTBALL.id = 1 << 7;
P_NIGHT.id = 1 << 8;
P_HD.id = 1 << 9;
P_FAMILY.id = 1 << 10;
P_LITE.id = 1 << 11;
P_SMS.id = 1 << 12;

/**
 * битовые идентификаторы прав используются для проверки - больше ли новая
 * подписка, чем старая. все биты, установленные в старой подписке, должны быть
 * в новой
 */
var BASE_RIGHTS = 1;
var EXT_BASE_RIGHTS = 1 << 1;
var N_FOOTBALL_RIGHTS = 1 << 2;
var KINO_RIGHTS = 1 << 3;
var VIP_KINO_RIGHTS = 1 << 4;
var SPORT_RIGHTS = 1 << 5;
var SUPER_SPORT_RIGHTS = 1 << 6;
var NIGHT_RIGHTS = 1 << 7;
var HD_RIGHTS = 1 << 8;
var FAMILY_RIGHTS = 1 << 9;
var LITE_RIGHTS = 1 << 9;
var SMS_RIGHTS = 1 << 10;

P_BASE.rights = BASE_RIGHTS;
P_EXT_BASE.rights = BASE_RIGHTS | EXT_BASE_RIGHTS;
P_N_FOOTBALL_BASE.rights = N_FOOTBALL_RIGHTS;
P_KINO.rights = KINO_RIGHTS;
P_VIP_KINO.rights = KINO_RIGHTS | VIP_KINO_RIGHTS;
P_SPORT.rights = SPORT_RIGHTS;
P_SUPER_SPORT.rights = SPORT_RIGHTS | SUPER_SPORT_RIGHTS;
P_N_FOOTBALL.rights = N_FOOTBALL_RIGHTS;
P_NIGHT.rights = NIGHT_RIGHTS;
P_HD.rights = HD_RIGHTS;
P_FAMILY.rights = FAMILY_RIGHTS;
P_LITE.rights = LITE_RIGHTS;
P_SMS.rights = SMS_RIGHTS;


/** Названия пакетов */
P_BASE.name = "Базовый";
P_EXT_BASE.name = "Базовый расширенный";
P_N_FOOTBALL_BASE.name = "Наш футбол";
P_KINO.name = "Кино";
P_VIP_KINO.name = "VIP Кино";
P_SPORT.name = "Спорт";
P_SUPER_SPORT.name = "Суперспорт";
P_N_FOOTBALL.name = "Наш футбол";
P_NIGHT.name = "Ночной";
P_HD.name = "HD";
P_FAMILY.name = "Семейный";
P_LITE.name = "Лайт";
P_SMS.name = "СМС-Информ - отправка уведомлений об изменении счета на ваш телефон";

/** названия пакетов для имен переменных */
P_BASE.vname = "base";
P_EXT_BASE.vname = "extbase";
P_N_FOOTBALL_BASE.vname = "nfootball";
P_KINO.vname = "kino";
P_VIP_KINO.vname = "vipkino";
P_SPORT.vname = "sport";
P_SUPER_SPORT.vname = "supersport";
P_N_FOOTBALL.vname = "nfootball";
P_NIGHT.vname = "night";
P_HD.vname = "hd";
P_FAMILY.vname = "family";
P_LITE.vname = "lite";
P_SMS.vname="smsinform";

/** запрещенные комбинации */
P_SUPER_SPORT.restricted =
[P_N_FOOTBALL];
P_N_FOOTBALL_BASE.restricted =
[P_SPORT, P_SUPER_SPORT, P_KINO, P_VIP_KINO, P_N_FOOTBALL, P_NIGHT, P_HD, P_FAMILY];
P_LITE.restricted =
[P_SUPER_SPORT, P_VIP_KINO, P_HD, P_FAMILY];

var priceModifier = function( price){return price};
var periodInfo = " руб. в месяц";
/** Группы пакетов */

var G_BASE = new Object();
var G_KINO = new Object();
var G_SPORT = new Object();
var G_N_FOOTBALL = new Object();
var G_NIGHT = new Object();
var G_HD = new Object();
var G_FAMILY = new Object();
var G_SERVICES = new Object();

G_BASE.id = "base";
G_KINO.id = "kino";
G_SPORT.id = "sport";
G_N_FOOTBALL.id = "nfootball";
G_NIGHT.id = "night";
G_HD.id = "hd";
G_FAMILY.id = "family";
G_SERVICES.id = "service"
G_SERVICES.title = "Дополнительные услуги";

G_BASE.req = true;
G_KINO.req = false;
G_SPORT.req = false;
G_N_FOOTBALL.req = false;
G_NIGHT.req = false;
G_HD.req = false;
G_FAMILY.req = false;
G_SERVICES.req = false;
G_FAMILY.disabled = true;
G_SERVICES.disabled = true;

G_BASE.pack =
[P_LITE, P_BASE, P_EXT_BASE, P_N_FOOTBALL_BASE];
G_KINO.pack =
[P_KINO, P_VIP_KINO];
G_SPORT.pack =
[P_SPORT, P_SUPER_SPORT];
G_N_FOOTBALL.pack =
[P_N_FOOTBALL];
G_NIGHT.pack =
[P_NIGHT];
G_HD.pack =
[P_HD];
G_FAMILY.pack =
[P_FAMILY];
G_SERVICES.pack = [P_SMS];

G_BASE.selection = P_LITE;
G_KINO.selection = null;
G_SPORT.selection = null;
G_N_FOOTBALL.selection = null;
G_NIGHT.selection = null;
G_HD.selection = null;
G_FAMILY.selection = null;
G_SERVICES.selection = null;

var GROUPS =
[G_BASE, G_KINO, G_SPORT, G_N_FOOTBALL, G_NIGHT, G_HD, G_FAMILY, G_SERVICES];

/** проставим каждому пакету его группу */
for (i in GROUPS)
{
    var group = GROUPS[i];
    for (j in group.pack)
    {
        group.pack[j].group = group;
    }
}

var prices = new Array();
/** базовый */
prices[P_BASE.id] = 550.0;
prices[P_BASE.id | P_KINO.id] = 850.0;
prices[P_BASE.id | P_SPORT.id] = 850.0;
prices[P_BASE.id | P_NIGHT.id] = 850.0;
prices[P_BASE.id | P_KINO.id | P_SPORT.id] = 1100.0;
prices[P_BASE.id | P_KINO.id | P_SUPER_SPORT.id] = 1400.0;
prices[P_BASE.id | P_KINO.id | P_NIGHT.id] = 1100.0;
prices[P_BASE.id | P_KINO.id | P_SPORT.id | P_NIGHT.id] = 1250.0;
prices[P_BASE.id | P_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id] = 1550.0;
prices[P_BASE.id | P_VIP_KINO.id] = 1050.0;
prices[P_BASE.id | P_SUPER_SPORT.id] = 1150.0;
prices[P_BASE.id | P_VIP_KINO.id | P_SPORT.id] = 1250.0;
prices[P_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id] = 1550.0;
prices[P_BASE.id | P_VIP_KINO.id | P_NIGHT.id] = 1250.0;
prices[P_BASE.id | P_VIP_KINO.id | P_SPORT.id | P_NIGHT.id] = 1350.0;
prices[P_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id] = 1650.0;
prices[P_BASE.id | P_SPORT.id | P_NIGHT.id] = 1100.0;
prices[P_BASE.id | P_SUPER_SPORT.id | P_NIGHT.id] = 1400.0;

// --------------------------- резерв --------------------------------
// prices[P_BASE.id | P_HD.id] = 1500.0;
// prices[P_BASE.id | P_KINO.id| P_HD.id] = 1550.0;
// prices[P_BASE.id | P_SPORT.id| P_HD.id] = 1550.0;
// prices[P_BASE.id | P_NIGHT.id| P_HD.id] = 1550.0;
// prices[P_BASE.id | P_KINO.id | P_SPORT.id| P_HD.id] = 1700.0;
// prices[P_BASE.id | P_KINO.id | P_SUPER_SPORT.id| P_HD.id] = 1900.0;
// prices[P_BASE.id | P_KINO.id | P_NIGHT.id| P_HD.id] = 1700.0;
// prices[P_BASE.id | P_KINO.id | P_SPORT.id | P_NIGHT.id| P_HD.id] = 1800.0;
// prices[P_BASE.id | P_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id| P_HD.id] =
// 1950.0;
// prices[P_BASE.id | P_VIP_KINO.id| P_HD.id] = 1650.0;
// prices[P_BASE.id | P_SUPER_SPORT.id | P_HD.id] = 1750.0;
// prices[P_BASE.id | P_VIP_KINO.id | P_SPORT.id | P_HD.id] = 1800.0;
// prices[P_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id | P_HD.id] = 1950.0;
// prices[P_BASE.id | P_VIP_KINO.id | P_NIGHT.id | P_HD.id] = 1800.0;
// prices[P_BASE.id | P_VIP_KINO.id | P_SPORT.id | P_NIGHT.id | P_HD.id] =
// 1850.0;
// prices[P_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id | P_HD.id] =
// 2000.0;
// prices[P_BASE.id | P_SPORT.id | P_NIGHT.id | P_HD.id] = 1700.0;
// prices[P_BASE.id | P_SUPER_SPORT.id | P_NIGHT.id | P_HD.id] = 1900.0;

prices[P_BASE.id | P_HD.id] = 850.0;
prices[P_BASE.id | P_KINO.id | P_HD.id] = 1150.0;
prices[P_BASE.id | P_SPORT.id | P_HD.id] = 1150.0;
prices[P_BASE.id | P_NIGHT.id | P_HD.id] = 1150.0;
prices[P_BASE.id | P_KINO.id | P_SPORT.id | P_HD.id] = 1400.0;
prices[P_BASE.id | P_KINO.id | P_SUPER_SPORT.id | P_HD.id] = 1700.0;
prices[P_BASE.id | P_KINO.id | P_NIGHT.id | P_HD.id] = 1400.0;
prices[P_BASE.id | P_KINO.id | P_SPORT.id | P_NIGHT.id | P_HD.id] = 1550.0;
prices[P_BASE.id | P_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id | P_HD.id] = 1850.0;
prices[P_BASE.id | P_VIP_KINO.id | P_HD.id] = 1350.0;
prices[P_BASE.id | P_SUPER_SPORT.id | P_HD.id] = 1450.0;
prices[P_BASE.id | P_VIP_KINO.id | P_SPORT.id | P_HD.id] = 1550.0;
prices[P_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id | P_HD.id] = 1850.0;
prices[P_BASE.id | P_VIP_KINO.id | P_NIGHT.id | P_HD.id] = 1550.0;
prices[P_BASE.id | P_VIP_KINO.id | P_SPORT.id | P_NIGHT.id | P_HD.id] = 1650.0;
prices[P_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id | P_HD.id] = 1950.0;
prices[P_BASE.id | P_SPORT.id | P_NIGHT.id | P_HD.id] = 1400.0;
prices[P_BASE.id | P_SUPER_SPORT.id | P_NIGHT.id | P_HD.id] = 1700.0;

/** базовый расширенный */
prices[P_EXT_BASE.id] = 750.0;
prices[P_EXT_BASE.id | P_KINO.id] = 1050.0;
prices[P_EXT_BASE.id | P_SPORT.id] = 1050.0;
prices[P_EXT_BASE.id | P_NIGHT.id] = 1050.0;
prices[P_EXT_BASE.id | P_KINO.id | P_SPORT.id] = 1300.0;
prices[P_EXT_BASE.id | P_KINO.id | P_SUPER_SPORT.id] = 1600.0;
prices[P_EXT_BASE.id | P_KINO.id | P_NIGHT.id] = 1300.0;
prices[P_EXT_BASE.id | P_KINO.id | P_SPORT.id | P_NIGHT.id] = 1450.0;
prices[P_EXT_BASE.id | P_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id] = 1750.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id] = 1250.0;
prices[P_EXT_BASE.id | P_SUPER_SPORT.id] = 1350.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_SPORT.id] = 1450.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id] = 1750.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_NIGHT.id] = 1450.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_SPORT.id | P_NIGHT.id] = 1550.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id] = 1850.0;
prices[P_EXT_BASE.id | P_SPORT.id | P_NIGHT.id] = 1300.0;
prices[P_EXT_BASE.id | P_SUPER_SPORT.id | P_NIGHT.id] = 1600.0;

prices[P_EXT_BASE.id | P_HD.id] = 1050.0;
prices[P_EXT_BASE.id | P_KINO.id | P_HD.id] = 1350.0;
prices[P_EXT_BASE.id | P_SPORT.id | P_HD.id] = 1350.0;
prices[P_EXT_BASE.id | P_NIGHT.id | P_HD.id] = 1350.0;
prices[P_EXT_BASE.id | P_KINO.id | P_SPORT.id | P_HD.id] = 1600.0;
prices[P_EXT_BASE.id | P_KINO.id | P_NIGHT.id | P_HD.id] = 1600.0;
prices[P_EXT_BASE.id | P_KINO.id | P_SUPER_SPORT.id | P_HD.id] = 1900.0;
prices[P_EXT_BASE.id | P_KINO.id | P_SPORT.id | P_NIGHT.id | P_HD.id] = 1750.0;
prices[P_EXT_BASE.id | P_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id | P_HD.id] = 2050.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_HD.id] = 1550.0;
prices[P_EXT_BASE.id | P_SUPER_SPORT.id | P_HD.id] = 1650.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_SPORT.id | P_HD.id] = 1750.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id | P_HD.id] = 2050.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_NIGHT.id | P_HD.id] = 1750.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_SPORT.id | P_NIGHT.id | P_HD.id] = 1850.0;
prices[P_EXT_BASE.id | P_VIP_KINO.id | P_SUPER_SPORT.id | P_NIGHT.id | P_HD.id] = 2150.0;
prices[P_EXT_BASE.id | P_SPORT.id | P_NIGHT.id | P_HD.id] = 1600.0;
prices[P_EXT_BASE.id | P_SUPER_SPORT.id | P_NIGHT.id | P_HD.id] = 1900.0;

/** LITE */

prices[P_LITE.id] = 99.00;
prices[P_LITE.id | P_SPORT.id] = 699.00;
prices[P_LITE.id | P_KINO.id] = 699.00;
prices[P_LITE.id | P_NIGHT.id] = 699.00;
prices[P_LITE.id | P_SPORT.id | P_KINO.id] = 1299.00;
prices[P_LITE.id | P_SPORT.id | P_NIGHT.id] = 1299.00;
prices[P_LITE.id | P_NIGHT.id | P_KINO.id] = 1299.00;
prices[P_LITE.id | P_NIGHT.id | P_KINO.id | P_SPORT.id] = 1449.00;

/** наш футбол */
prices[P_N_FOOTBALL_BASE.id] = 199.0;


/** добавляем наш футбол и 149 рублей */
for (n in prices)
{
    if ((n & P_SUPER_SPORT.id) == 0 && (n & P_N_FOOTBALL.id) == 0)
    {
        var index = n | P_N_FOOTBALL.id;
        prices[index] = prices[n] + 149.0;
    }
}
/** добавляем SMS-Информ */
for (n in prices)
{
    if ((n & P_SMS.id) == 0)
    {
        var index = n | P_SMS.id;
        prices[index] = prices[n] + 10.0;
    }
}


function check(box)
{
    box.checked = true;
    box.getParent().removeClass('unchecked');
    box.getParent().addClass('checked');
}
function uncheck(box)
{
    box.checked = false;
    box.getParent().removeClass('checked');
    box.getParent().addClass('unchecked');
}
function enable(box)
{
    box.disabled = false;
    box.getParent().removeClass('disabled');
}
function disable(box)
{
    box.disabled = true;
    box.getParent().addClass('disabled');
}

/** права первоначальной подписки */
var initialRights = 0;
// Массив для хранения чекбоксов
var checkboxes = new Array();
var priceDisplay;
function createCalculator(horizontal, simple, noBase)
{
    var basecontainer = document.getElementById("calculator-body");
    var container;
    GROUPS.each(function(group, idx)
            {
                if (group.disabled)
                    return;
                if (!(horizontal && (group.id == 'hd' || group.id == 'nfootball' || group.id == 'family')))
                {
                    container = new Element("div");
                    group.container = container;
                    basecontainer.appendChild(container);
                    container.id = group.id;
                    container.setAttribute("class", "group")
                    container.className = "group";
                    if( group.title)
                    {
                    	var title = new Element( "h5");
                    	title.set( 'text', group.title);
                    	container.appendChild( title);
                    }
                }
                group.pack.each(function(pack, idx)
                        {
                            if (pack.disabled)
                                return;
                            var divv = new Element("label");
                            divv.addClass("unchecked");
                            divv.addClass("checkbox");
                            container.appendChild(divv);
                            var chbox = new Element("input",
                                    {
                                        'type' : 'checkbox',
                                        "value" : pack.vname,
                                        'name' : 'package'
                                    });
                            chbox.injectInside(divv);

                            // выделяем сразу первый элемент в группе
                            chbox.pack = pack;
                            chbox.group = group;
                            if (simple)
                                chbox.addEvent('click', function()
                                        {
                                            chkBoxPressed(this);
                                        }.bind(chbox));
                            else
                                divv.addEvent('click', changeValue.bind(chbox));
                            pack.checkbox = chbox;
                            checkboxes.push(chbox);
                            span = new Element( "span");
                            span.set( 'html',pack.name);
                            span.injectInside( divv);
                            divv.id = 'label_' + pack.vname;
                        });
                 if( group.description)
                 {
                 	comm = new Element( "div");
                 	comm.addClass( "description");
                 	comm.set( 'html', group.description);
                 	container.appendChild( comm);
                 }
                 
            });
    priceDisplay = new Element('div');
    priceDisplay.setAttribute('id', 'c_price');
    priceDisplay.injectInside(basecontainer);
    if (!noBase)
    {
        setPack(P_LITE.disabled?P_BASE:P_LITE);
    } else
    {
        var el = basecontainer;
        do
        {
            el = el.getParent();
        } while (!el.getParent() || !el.match('form'));
        el.addEvent('submit', function()
                {
                    if (!computePrice())
                    {
                        alert("Выберите вариант подписки");
                        return false;
                    }
                });
    }
    setPrice();
}
function setPack(pack)
{
    pack.checkbox.checked = true;
    chkBoxPressed(pack.checkbox);
}
function chkBoxPressed(box)
{
    if (!box.checked && box.group.req)
    {
        check(box);
        return;
    }
    if (box.checked)
    {
        check(box);
        box.group.checked = box;
        checkboxes.each(function(bbox, i)
                {
                    if (bbox != box && bbox.group == box.group)
                        uncheck(bbox);
                });
    } else
    {
        uncheck(box);
        box.group.checked = null;
    }
    checkboxes.each(function(box, i)
            {
                enable(box);
            });
    var rights = computeRights();
    checkboxes.each(function(box, i)
            {
                if (box.pack.restricted && box.checked)
                {
                    box.pack.restricted.each(function(pack, i)
                            {
                                var pack = box.pack.restricted[i];
                                if (pack.checkbox)
                                {
                                    uncheck(pack.checkbox);
                                    disable(pack.checkbox);
                                }
                            });
                }
            });
    if( !computePrice())
        setPack( P_BASE);
    setPrice();
}
function changeValue()
{

    this.checked = !this.checked;
    chkBoxPressed(this);
}
function setPrice()
{
    highlightChannels();
    var counts = countChannels();
    var cStr;

    if (!computePrice())
        cStr = "";
    else
    {
        var count = counts % 100;
        if (count > 5 && count <= 20)
            cStr = 'каналов';
        else if (count % 10 == 1)
            cStr = 'канал';
        else if (count % 10 > 1 && count % 10 < 5)
            cStr = 'канала';
        else
            cStr = 'каналов';;

        cStr = "<div class=\"calc_channels\">" + counts + ' ' + cStr + "<a href=\"/channels/\">список каналов</a></div>" + computePrice() + periodInfo;
    }
    priceDisplay.set('html', cStr);
}
function computeRights()
{
    var rights = 0;
    for (i in checkboxes)
    {
        var box = checkboxes[i];
        if (box.checked)
            rights = rights | box.pack.rights;
    }
    return rights;
}
function computePrice()
{
    var collect = 0;
    for (i in checkboxes)
    {
        var box = checkboxes[i];
        if (box.checked)
            collect = collect | box.pack.id;
    }
    if (prices[collect])
        return priceModifier(prices[collect]);
    return false;
}
function countChannels()
{
    var collect = 0;
    checkboxes.each(function(box, idx)
            {
                if (box.checked)
                {
                    collect += box.pack.size?box.pack.size:0;
                    if (box.pack == P_EXT_BASE)
                        collect += P_BASE.size;
                }
            });
    return collect;
}

function fixSubscription()
{
    initialRights = computeRights();
}

/** провериь, изменили ли форму */
function checkSubscriptionForm()
{
    if (computeRights() == initialRights)
    {
        alert('Выбранный вариант подписки совпадает с существующим');
        return false;
    }
    if ((initialRights & computeRights()) != initialRights)
    {
        alert('Изменение подписки в выбранном периоде разрешено только в сторону увеличения набора каналов');
        return false;
    }
    return true;
}

function setFamilyPackage(cards)
{
    if (!cards || cards == 0)
    {
        return;
    }
    G_FAMILY.disabled = false;
    P_FAMILY.name = "Семейный (" + cards + (cards == 1 ? " карта" : " карты") + ")"
    /** добавляем цену семейного */
    for (n in prices)
    {
        if ((n & P_FAMILY.id) == 0)
        {
            var index = n | P_FAMILY.id;
            prices[index] = prices[n] + (cards * 90.0);
        }
    }
}

function highlightChannels()
{
    if (!$('channels'))
        return;
    $('channels').setAttribute('class', '');
    checkboxes.each(function(el, idx)
            {
                if (el.checked)
                {
                    $('channels').addClass("calc_" + el.pack.vname);
                }
            });
}
/*
 * 
 * var CalcScroller = new Class( { initialize:function() { window.addEvent(
 * 'scroll',this.scroll.bind(this)); }, scroll:function() {
 * this.run.bind(this).delay(300); }, run:function() { el = $('calculator');
 * topy = el.getParent().getCoordinates().top; var y = window.getScroll().y; if(
 * !this.effect) this.effect = new Fx.Morph( el, {link:'cancel', transition:
 * Fx.Transitions.Sine.easeOut}); var top; if( (y+30) > topy) { top = y-topy+30;
 * if( top+el.getSize().y > $('channels').getSize().y) { top =
 * $('channels').getSize().y - el.getSize().y; } } else { top = 0; }
 * 
 * this.effect.start( {'top':[top]}); } }); window.addEvent( 'domready', new
 * CalcScroller());
 */