/**
 * Page scroller
 */
function PageScroller(id, pages, height, width) {
	document.getElementById(id).style.display = "";

	this.id = id;
	this.height = height;
	this.width = width;
	this.pages = [];
	this.current_page = 0;
	this.animation = null;

	// set up container
	this.container = document.getElementById(this.id);
	this.container.style.overflow = 'hidden';
	this.container.style.height = this.height + 'px';
	if (width != undefined) {this.container.style.width = this.width + 'px';}

	// set up prev link
	this.prev = document.createElement('a');
	this.prev.href = '#';
	YAHOO.util.Dom.addClass(this.prev, 'previous');
	var imgprev = document.createElement('img');
	if (width == undefined) {imgprev.src = "/cont/img/btn_lis_left.gif";} else {imgprev.src = "/cont/img/btn_lis_left.gif";}
	imgprev.border = 0;
	this.prev.appendChild(imgprev);

	this.prev_insensitive = document.createElement('span');
	YAHOO.util.Dom.addClass(this.prev_insensitive, 'previous');
	var imgprev = document.createElement('img');
	if (width == undefined) {imgprev.src = "/cont/img/btn_lis_left.gif";} else {imgprev.src = "/cont/img/btn_lis_left.gif";}
	imgprev.border = 0;
	this.prev_insensitive.appendChild(imgprev);

	YAHOO.util.Event.addListener(this.prev, 'click',
		function (e) {
			YAHOO.util.Event.preventDefault(e);
			this.prevPage();
		},
		this, true);
	

	// set up next link
	this.next = document.createElement('a');
	this.next.href = '#';
	YAHOO.util.Dom.addClass(this.next, 'next');
	var imgnext = document.createElement('img');
	if (width == undefined) {imgnext.src = "/cont/img/btn_lis_right.gif";} else {imgnext.src = "/cont/img/btn_lis_right.gif";}
	imgnext.border = 0;
	this.next.appendChild(imgnext);

	this.next_insensitive = document.createElement('span');
	YAHOO.util.Dom.addClass(this.next_insensitive, 'next');
	var imgnext = document.createElement('img');
	if (width == undefined) {imgnext.src = "/cont/img/btn_lis_right.gif";} else {imgnext.src = "/cont/img/btn_lis_right.gif";}
	imgnext.border = 0;
	this.next_insensitive.appendChild(imgnext);

	YAHOO.util.Event.addListener(this.next, 'click',
		function (e) {
			YAHOO.util.Event.preventDefault(e);
			this.nextPage();
		},
		this, true);

	// add pagination to page
	// var divider = document.createElement('span');
	// divider.appendChild(document.createTextNode('|'));
	// YAHOO.util.Dom.addClass(divider, 'divider');
	var paginationprev = document.getElementById('paginationprev');
	if(paginationprev!=null) paginationprev.appendChild(this.prev);
	// pagination.appendChild(divider);
	var paginationnext = document.getElementById('paginationnext');
	if(paginationprev!=null) paginationnext.appendChild(this.next);

	// add pages
	for (var i = 0; i < pages.length; i++)
		this.addPage(new Page(pages[i]));
	
	// var Paginado = "mostrando <b>"+rangesize+"</b> Proyectos.<br />";
	// document.getElementById("TextoPaginado").innerHTML = ;

	// initialize to first page
	this.setPage(0);
}

PageScroller.prototype.addPage = function(page) {
	var page_number = this.pages.length;
	page.setPageHeight(this.height);
	if (this.width != undefined) {page.setPageWidth(this.width);}
	this.pages.push(page);

	if (page.nav) {
		YAHOO.util.Event.addListener(page.nav, 'click',
			function (e) {
				YAHOO.util.Event.preventDefault(e);
				this.setPage(page_number);
			},
			this, true);
	}
}

PageScroller.prototype.prevPage = function() {
	this.setPage(this.current_page - 1);
}

PageScroller.prototype.nextPage = function() {
	this.setPage(this.current_page + 1);
}

PageScroller.prototype.setPage = function(page_number) {
	// deselect current (old) page
	this.pages[this.current_page].setNavHighlight(false);

	// wrap page number
	if (page_number >= this.pages.length)
		this.current_page = 0;
	else if (page_number < 0)
		this.current_page = this.pages.length - 1;
	else
		this.current_page = page_number;
	
	// select current (new) page
	this.pages[this.current_page].setNavHighlight(true);

	// set prev link sensitivity
	this.setPrevLinkSensitivity(this.current_page != 0);

	// set next link sensitivity
	this.setNextLinkSensitivity(this.current_page != this.pages.length - 1);

	// scroll to the page
	if (this.width == undefined) {this.scrollToCurrentPage();} else {this.scrollToCurrentPageWidth();}
}

PageScroller.prototype.setPrevLinkSensitivity = function(sensitive) {
	if (sensitive) {
		// if (this.prev_insensitive.parentNode) {
		if (document.getElementById('paginationprev')!=null) {
			if (document.getElementById('paginationprev').innerHTML.indexOf("<span") != -1) {
				this.prev_insensitive.parentNode.replaceChild(this.prev, this.prev_insensitive);
			}
		}
	} else {
		// if (this.prev.parentNode) {
		if (document.getElementById('paginationprev')!=null) {
			if (document.getElementById('paginationprev').innerHTML.indexOf("<a") != -1) {
				this.prev.parentNode.replaceChild(this.prev_insensitive, this.prev);
			}
		}
	}
}

PageScroller.prototype.setNextLinkSensitivity = function(sensitive) {
	if (sensitive) {
		// if (this.next_insensitive.parentNode) {
		if (document.getElementById('paginationnext')!=null) {
			if (document.getElementById('paginationnext').innerHTML.indexOf("<span") != -1) {
				this.next_insensitive.parentNode.replaceChild(this.next, this.next_insensitive);
			}
		}
	} else {
		// if (this.next.parentNode) {
		if (document.getElementById('paginationnext')!=null) {
			if (document.getElementById('paginationnext').innerHTML.indexOf("<a") != -1) {
				this.next.parentNode.replaceChild(this.next_insensitive, this.next);
			}
		}
	}
}

PageScroller.prototype.scrollToCurrentPage = function() {
	var old_scroll_pos = this.container.scrollTop;

	// works because all pages are the same height
	var new_scroll_pos = this.height * this.current_page;

	if (this.animation && this.animation.isAnimated())
		this.animation.stop();

	this.animation = new YAHOO.util.Scroll(this.container,
		{ scroll: { from: [0, old_scroll_pos], to: [0, new_scroll_pos] } },
		0.5, YAHOO.util.Easing.easeOut);

	this.animation.animate();
}

PageScroller.prototype.scrollToCurrentPageWidth = function() {
	var old_scroll_pos = this.container.scrollLeft;

	// works because all pages are the same height
	var new_scroll_pos = this.width * this.current_page;

	if (this.animation && this.animation.isAnimated())
		this.animation.stop();

	this.animation = new YAHOO.util.Scroll(this.container,
		{ scroll: { from: [old_scroll_pos, 0], to: [new_scroll_pos, 0] } },
		0.5, YAHOO.util.Easing.easeOut);

	this.animation.animate();
}

/**
 * Page
 */
function Page(id) {
	this.id = id;

	this.nav = null;
	// var nav_element = document.getElementById('nav-page-' + this.id);
	// for (var i = 0; i < nav_element.childNodes.length; i++) {
		// if (nav_element.childNodes[i].nodeName == 'A') {
			// this.nav = nav_element.childNodes[i];
			// break;
		// }
	// }

	this.page = document.getElementById('pc-page-' + this.id);
	this.page.style.overflow = 'hidden';
}

Page.prototype.setPageHeight = function(height) {
	this.page.style.height = height + 'px';
}

Page.prototype.setPageWidth = function(width) {
	this.page.style.width = width + 'px';
}

Page.prototype.setNavHighlight = function(highlight) {
	if (this.nav) {
		if (highlight)
			YAHOO.util.Dom.addClass(this.nav, 'current');
		else
			YAHOO.util.Dom.removeClass(this.nav, 'current');
	}
}


function AutoScroll(time){
	scroller.nextPage();
	setTimeout("AutoScroll("+time+")", time);
}
