
var scriptTags = document.getElementsByTagName("script");
var path = "";
for (var i = 0; i < scriptTags.length; i++)
	if(scriptTags[i].src && scriptTags[i].src.match(/divscrolling\.js$/)) {
    	 path = scriptTags[i].src.replace(/divscrolling\.js$/,'');
     	break;
	}

document.write('<script type="text/javascript" src="' + path + 'cssQuery-p.js"></script>');


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++;
	this.id_div = id_div;

	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) + 8;
		this.height = parseInt(this.div.parentNode.offsetHeight, 10);

		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)));
//				this.displacement = parseInt(this.displacement, 10) + (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;
			}
	}
	
	this.showPosition = function(active_class) {
		var scrolls = cssQuery("#" + this.id_div + " ." + active_class);

		if(scrolls.length > 0) {
			var difference = ((scrolls[scrolls.length - 1].offsetTop + scrolls[scrolls.length - 1].offsetHeight) - this.height) * (-1);

			if(difference < 0) {
				var ultimo = 0;
				while(this.displacement > difference) {
					ultimo = this.displacement;
					this.scroll(-5);
					if(this.displacement == ultimo) {
						alert('a');
						break;
					}
				}
			}
		}
	}
}