// JavaScript Document
var _Current = {};

var _Current_Object  = null;
var _Current_Messages = null;
var _Current_Element = null;

function MoveMessage(message, speed, step) {
	this.Message  = message;
	this.Speed    = speed;
	this.Step     = step || 1;
	this.Pos      = 0;
	this.Len      = this.Message.length;
	this.Complete = true;
}

MoveMessage.prototype.CurrentElement  = null;
MoveMessage.prototype.CurrentInterval = null;

MoveMessage.prototype.Play = function(elementId) {
	this.Pos = 0;
	_Current_Object = _Current_Element = null;
	if (this.CurrentInterval != null) {
		clearInterval(this.CurrentInterval);
		this.CurrentInterval = null;
	}
		
	_Current_Object  = this;
	_Current_Object.Complete = false;
	_Current_Element = document.getElementById(elementId);
	this.CurrentInterval = setInterval(this._move, this.Speed);
}

MoveMessage.prototype._move = function() {
	var nextChar = _Current_Object.Message.charAt(_Current_Object.Pos);
	this.Complete = false;
	if (_Current_Object.Pos == 0) {
		_Current_Element.innerHTML = "";
	}
	if (nextChar == "<") {
        var buf = nextChar;
        while (true) {
            if ((_Current_Object.Step + _Current_Object.Pos) > _Current_Object.Len) break;
            nextChar = _Current_Object.Message.charAt(++_Current_Object.Pos);
            buf += nextChar;
            if ( nextChar == ">" ) {
                _Current_Element.innerHTML += buf;
                _Current_Object.Pos++;
                break;
            }
        }
    }
	
    _Current_Element.innerHTML = _Current_Object.Message.substr(0, _Current_Object.Pos + 1);
	if ((_Current_Object.Pos + _Current_Object.Step) <= _Current_Object.Len) {
        _Current_Object.Pos += _Current_Object.Step;
	} else {
		_Current_Object.Pos = 0;
		clearInterval(_Current_Object.CurrentInterval);
		_Current_Object.Complete = true;
		_Current_Object.CurrentInterval = null;
        return;
    }
}

var count = 0;
function MoveMessages(id, interVal) {
	this.Element         = id;
	this.Interval        = interVal || 5000;
	this.Messages        = new Array();
	this.Current         = 0;
	this.Previous        = 0;
	this.CurrentInterval = null;
	this.WaitInterval    = null;
	this.Counter         = 0;
	this.Name            = "_Move_" + this.Counter++;
	_Current[this.Name]  = {
		_Messages: this,
		_Element:  (typeof(this.Element) == "string") ? document.getElementById(this.Element) : this.Element,
		_Object:   null
	};
	_Current_Messages    = this;
}

MoveMessages.prototype.Add = function(message) {
	this.Messages.push(message);
}

MoveMessages.prototype.Count = function() {
	return this.Messages.length;
}

MoveMessages.prototype.Play = function() {
	if ((_Current_Messages.Current >= _Current_Messages.Count()) || (_Current_Messages.Current < 0))
		_Current_Messages.Current = 0;
	
	if ((_Current_Messages.Previous == 0) && (_Current_Messages.Current == 0)) {
		// Заглушка
	} else if (_Current_Messages.Current == 0) {
		_Current_Messages.Previous = _Current_Messages.Count() - 1;
	} else {
		_Current_Messages.Previous = _Current_Messages.Current - 1;
	}
		
	if (_Current_Messages.Messages[_Current_Messages.Previous].Complete) {
		_Current_Messages.Messages[_Current_Messages.Current++].Play(_Current_Messages.Element, _Current_Messages.Play);
		clearInterval(_Current_Messages.WaitInterval);
		_Current_Messages.WaitInterval = null;
		_Current_Messages.WaitInterval = setInterval(_Current_Messages.Play, _Current_Messages.Interval);
	}
}