﻿var ticker = Class.create({
    initialize: function(container, options) {
        this.container = container;
        this.options = Object.extend(options || {}, {
            frequency: 500,
            item_frequency: 3000,
            char_frequency: 50,
            endBits: ['_', '|']
        });
        this.current = 0;
        this.currentChar = 0;
        this.startTick();
    },
    startTick: function() {
        this.container.each(function(item) {
            item.hide();
        });
        setTimeout(this.onTick.bind(this), this.options.frequency);
    },
    onTick: function() {
        if (this.currentChar == 0) {
            if (this.current_item) {
                this.current_item.hide();
            }
            this.current_item = this.container[this.current % this.container.length];
            this.current_item.show();
            this.current_element = this.current_item.firstDescendant()
            this.current_title = this.current_element.innerHTML;
            this.current++;
        }

        this.current_element.innerHTML = this.current_title.substring(0, this.currentChar) + this.options.endBits[this.currentChar & this.options.endBits.length - 1];
        if (this.currentChar == this.current_title.length) {
            this.current_element.innerHTML = this.current_title.substring(0, this.current_title.length);
            this.currentChar = 0;
            var t = this.options.item_frequency || 1000;
        } else {
            this.currentChar++;
            var t = this.options.char_frequency || 50;
        }
        setTimeout(this.onTick.bind(this), t);
    }
});
			