var divScrolling_buffer = new Array();
var divScrolling_id = 0;

function divScrolling(id_div) {
	this.div = document.getElementById(id_div);

	this.displacement = 0;
	this.limit = 0;
	this.height = 0;
	this.id_interval = 0;
	this.id = divScrolling_id++;	

	if(this.div) {

		// si el bloque no es de tipo div
		if(this.div.tagName.toLowerCase() != "div") {

			var ndiv = document.createElement("div");
			ndiv.id = id_div + "_caja";
			ndiv.style.width = this.div.style.width;
			ndiv.style.height = this.div.style.height;

			ndiv.innerHTML = this.div.innerHTML;
			this.div.innerHTML = "";
			this.div.appendChild(ndiv);
			this.div = ndiv;
		}
		
		this.div.style.overflow = 'hidden';

		// genera el bloque a deslizar
		var ndiv = document.createElement("div");
		ndiv.id = id_div + "_ndiv";
		ndiv.innerHTML = this.div.innerHTML;

		this.div.innerHTML = "";
		this.div.appendChild(ndiv);
		this.div = ndiv;


		this.div.parentNode.style.position = "relative";
		this.div.parentNode.style.top = '0px';
		this.div.parentNode.style.left = '0px';

		this.div.style.position = "relative";
		this.div.style.top = '0px';
		this.div.style.left = '0px';

		this.displacement = 0;

		this.limit = parseInt(this.div.offsetHeight, 10);
		this.height = parseInt(this.div.parentNode.offsetHeight);

		this.id_interval = 0;
		this.id = divScrolling_buffer.length + 1;

		divScrolling_buffer[this.id] = this;

	}
	else
		alert("el elemento " + id_div + " no existe");
		

	
	this.scroll = function (length) {
		if(this.div) {
			if(!length)
				length = 5;

			length = parseInt(length, 10);

			if(parseInt(this.div.style.top, 10) + length > 0) {
				this.div.style.top = '0px';
				this.displacement = 0;
			}
			else if(length < 0 && (this.height + (-1 * this.displacement) + length) > this.limit) {
//				this.div.style.top = (parseInt(this.div.style.top, 10) + (this.limit - (this.height + (-1 * this.displacement)))) + 'px';
//				this.displacement = (this.displacement + (this.limit - (this.height + (-1 * this.displacement))));
			}
			else {
				this.div.style.top = (parseInt(this.div.style.top, 10) + length) + 'px';
				this.displacement = parseInt(this.displacement, 10) + length;

				return true;
			}
		}

		return false;
	}

	this.scrolling = function(length) {
		if(this.id_interval != 0) {
				clearInterval(this.id_interval);
				this.id_interval = 0;
		}

		if(length && length != 0)
			this.id_interval = setInterval('divScrolling_buffer[' + this.id + ']. scroll(' + length + '); ', 30);
		else
			if(this.id_interval != 0) {
				clearInterval(this.id_interval);
				this.id_interval = 0;
			}
	}
}
