function PageInfo(elemsPerPage)
{
	var currentPage=0;
	var elementsPerPage=elemsPerPage;
	var lastPage=false;
	var filter=null;
	
	this.getCurrentPage = function()
	{
		return currentPage;
	}
	
	this.incPage = function (inc)
	{
		currentPage += inc;
	}
	
	this.setPage = function (page)
	{
		currentPage = page;
	}
	
	this.getElementsPerPage = function()
	{
		return elementsPerPage;
	}
	
	this.isLastPage = function()
	{
		return lastPage;
	}
	
	this.setLastPage = function(lp)
	{
		lastPage = lp;
	}
	
	this.getFilter = function()
	{
		return filter;
	}
	
	this.setFilter = function(f)
	{
		filter = f;
	}
};

function Paging()
{
};

Paging.activated=false;

Paging.sections = {
	home : new PageInfo(1),
	noticiasdest : new PageInfo(1),
	formaciondest : new PageInfo(1),
	bibliografiadest : new PageInfo(1),
	publicacionesdest : new PageInfo(1),
	publicacionespacientesdest : new PageInfo(1),
	revista : new PageInfo(1),
	cursosdest : new PageInfo(1),
	bolsaviajedest : new PageInfo(1),
	videotecadest : new PageInfo(1),
	pacientesEnlacesAsociaciones : new PageInfo(3),
	pacientesEnlacesPublicaciones : new PageInfo(3),
	pacientesEnlacesCentros : new PageInfo(3),
	pacientesAsociaciones : new PageInfo(4),
	faq : new PageInfo(6),
	becasdest : new PageInfo(1),
	consensosdest : new PageInfo(1),
	noticiassetsdest : new PageInfo(1),
	publicacionessetsdest : new PageInfo(1),
	serviciosEnlacesNiv1 : new PageInfo(3),
	serviciosEnlacesNiv2 : new PageInfo(3),
	serviciosEnlacesNiv3 : new PageInfo(3),
	serviciosEnlacesNiv4 : new PageInfo(3),
	serviciosEnlacesNiv5 : new PageInfo(3),
	serviciosEnlacesNiv6 : new PageInfo(3),
	serviciosEnlacesNiv7 : new PageInfo(3),
	serviciosEnlacesNiv8 : new PageInfo(3),

	setsEnlacesNiv1 : new PageInfo(3),
	setsEnlacesNiv2 : new PageInfo(3),
	setsEnlacesNiv3 : new PageInfo(3),
	setsEnlacesNiv4 : new PageInfo(3),
	setsEnlacesNiv5 : new PageInfo(3),
	setsEnlacesNiv6 : new PageInfo(3),
	setsEnlacesNiv7 : new PageInfo(3),
	setsEnlacesNiv8 : new PageInfo(3),

	setsActividadesCientificas : new PageInfo(1),
        setsPublicaciones : new PageInfo(1),
        setsHome : new PageInfo(1)
};
	

Paging.nextPage = function (section, numPages, filter, effect)
{
	if (Paging.activated)
		Paging.incPage(section, 1, numPages, filter, effect);
};

Paging.prevPage = function (section, numPages, filter, effect)
{
	if (Paging.activated)
		Paging.incPage(section, -1, numPages, filter, effect);
};

Paging.goToPage = function (section, page, numPages, filter, effect)
{
	if (Paging.sections[section] == null)
		return;
	
	var pageInfo = Paging.sections[section];

	if (Paging.activated && (page != pageInfo.getCurrentPage() || filter != pageInfo.getFilter()))
	{
		Paging.incPage(section, page - pageInfo.getCurrentPage(), numPages, filter, effect);
	}
};

Paging.incPage = function (section, inc, numPages, filter, effect)
{
	if (Paging.sections[section] == null)
		return;
	
	var pageInfo = Paging.sections[section];

	if (inc>0 && pageInfo.isLastPage())
		inc=0;
	else if (inc < -pageInfo.getCurrentPage())
		inc = -pageInfo.getCurrentPage();

	if (inc==0 && filter == pageInfo.getFilter())
		return;

	var currentPageDivId = "home_"+section+"_"+pageInfo.getCurrentPage();

	pageInfo.incPage(inc);

	var newHomeDiv = getObj("home_"+section+"_"+pageInfo.getCurrentPage());
	
	//alert("newHomeDivId = "+"home_"+section+"_"+pageInfo.getCurrentPage());

	if (newHomeDiv == null)	
	{
		//alert("changeContent");
		newHomeDiv=document.createElement("div");
		newHomeDiv.id="home_"+section+"_"+pageInfo.getCurrentPage();
		
//		newHomeDiv.style.border="solid 1px #00f";
//		newHomeDiv.style.float="left";
		newHomeDiv.style.position="absolute";
		newHomeDiv.style.overflow="hidden";
		newHomeDiv.style.top="0px";
		newHomeDiv.style.left="0px";
//		newHomeDiv.style.bottom="0px";
//		newHomeDiv.style.right="0px";
		newHomeDiv.style.width=getObj(currentPageDivId).offsetWidth+"px";
		newHomeDiv.style.height=getObj(currentPageDivId).offsetHeight+"px";
 		newHomeDiv.style.display="none";
		
		getObj("home_"+section+"_container").appendChild(newHomeDiv);
	
		//ContentChanger.changeContent(section, pageInfo.getCurrentPage(), pageInfo.getElementsPerPage(), getObj(currentPageDivId), newHomeDiv, filter);	
	}
	
	ContentChanger.changeContent(section, pageInfo.getCurrentPage(), pageInfo.getElementsPerPage(), getObj(currentPageDivId), newHomeDiv, filter, numPages, Paging.changeContentCallback, effect);	
}

Paging.changeContentCallback = function(section, numPages, filter, effect)
{
	var pageInfo = Paging.sections[section];
	//alert("CALLBACK, section="+section+", numPages="+numPages+", filter="+filter+", setting pageInfo.lastPage to "+ContentChanger.sectionIsLastPage[section]);
	pageInfo.setLastPage(ContentChanger.sectionIsLastPage[section]);
	pageInfo.setFilter(filter);
	
	Paging.sections[section] = pageInfo;

	Paging.preloadPage(section, pageInfo.getCurrentPage() + 1, filter);
	
	//alert("currentPage "+pageInfo.getCurrentPage()+", isLastPage "+pageInfo.isLastPage());
	
	if (pageInfo.getCurrentPage()==0)
	{
		getObj(section+"PrevDiv").className = "notidestacadorollerprevdisabled";
		if (pageInfo.isLastPage())
			getObj(section+"NextDiv").className = "notidestacadorollernextdisabled";
		else
			getObj(section+"NextDiv").className = "notidestacadorollernext";
	}
	else if (pageInfo.isLastPage())
	{
		if (pageInfo.getCurrentPage()>0)
			getObj(section+"PrevDiv").className = "notidestacadorollerprev";
		else
			getObj(section+"PrevDiv").className = "notidestacadorollerprevdisabled";
			
		getObj(section+"NextDiv").className = "notidestacadorollernextdisabled";
	}
	else
	{
		getObj(section+"PrevDiv").className = "notidestacadorollerprev";
		getObj(section+"NextDiv").className = "notidestacadorollernext";
	}
	
	for (var i=0; i<numPages; i++)
	{
		var obj = getObj(section+"_rolleritem_"+i);
		
		if (i ==  pageInfo.getCurrentPage())
		{
			obj.className = "notidestacadorolleritemactive";
		}
		else
		{
			obj.className = "notidestacadorolleritem";
		}
	}
}

Paging.getCurrentPage = function (section)
{
	if (Paging.sections[section] == null)
		return 0;
		
	var pageInfo = Paging.sections[section];
	return pageInfo.getCurrentPage();
}

Paging.showCurrentPage = function (section, filter)
{
	if (Paging.sections[section] == null)
		return;
	
	var pageInfo = Paging.sections[section];

	var currentPageDivId = "home_"+section+"_"+pageInfo.getCurrentPage();

	var newHomeDiv = getObj(currentPageDivId);
	
	if (newHomeDiv!=null)
	{
		ContentChanger.handleContent(getObj(currentPageDivId), newHomeDiv, newHomeDiv.innerHTML, false, section);
	}
	else
	{
		newHomeDiv=document.createElement("div");
		newHomeDiv.id="home_"+section+"_"+pageInfo.getCurrentPage();
		
//		newHomeDiv.style.border="solid 1px #00f";
//		newHomeDiv.style.float="left";
		newHomeDiv.style.position="absolute";
		newHomeDiv.style.overflow="hidden";
		newHomeDiv.style.top="0px";
		newHomeDiv.style.left="0px";
//		newHomeDiv.style.bottom="0px";
//		newHomeDiv.style.right="0px";
 		newHomeDiv.style.display="none";
		
		getObj("home_"+section+"_container").appendChild(newHomeDiv);
	
		ContentChanger.loadContent(section, pageInfo.getCurrentPage(), pageInfo.getElementsPerPage(), getObj(currentPageDivId), filter);
	}
		
	pageInfo.setLastPage(ContentChanger.sectionIsLastPage[section]);
	pageInfo.setFilter(filter);
	
	Paging.sections[section] = pageInfo;

	Paging.preloadPage(section, pageInfo.getCurrentPage() + 1, filter);
}

Paging.preloadPage = function(section, page, filter)
{
	if (Paging.sections[section] == null)
		return;
	
	var pageInfo = Paging.sections[section];

	var currentPageDivId = "home_"+section+"_"+page;

	var newHomeDiv = getObj(currentPageDivId);
	
	if (newHomeDiv==null)
	{
		newHomeDiv=document.createElement("div");
		newHomeDiv.id="home_"+section+"_"+page;
		
//		newHomeDiv.style.border="solid 1px #00f";
//		newHomeDiv.style.float="left";
		newHomeDiv.style.position="absolute";
		newHomeDiv.style.overflow="hidden";
		newHomeDiv.style.top="0px";
		newHomeDiv.style.left="0px";
//		newHomeDiv.style.bottom="0px";
//		newHomeDiv.style.right="0px";
 		newHomeDiv.style.display="none";
		
		if (getObj("home_"+section+"_container") != null)
		{
			getObj("home_"+section+"_container").appendChild(newHomeDiv);
			ContentChanger.preloadContent(section, page, pageInfo.getElementsPerPage(), newHomeDiv, filter);
		}
	}
}

Paging.changeTab = function(from, to, filter)
{
	var pageInfo = Paging.sections[to];
	pageInfo.setLastPage(ContentChanger.sectionIsLastPage[to]);
	pageInfo.setFilter(filter);
	if (pageInfo.getCurrentPage()==0)
	{
		getObj(to+"UpDiv").className = "scrollArrowUpInactive";
		if (pageInfo.isLastPage())
			getObj(to+"DownDiv").className = "scrollArrowDownInactive";
		else
			getObj(to+"DownDiv").className = "scrollArrowDown";
	}
	else if (pageInfo.isLastPage())
	{
		getObj(to+"UpDiv").className = "scrollArrowUp";
		getObj(to+"DownDiv").className = "scrollArrowDownInactive";
	}
	else
	{
		getObj(to+"UpDiv").className = "scrollArrowUp";
		getObj(to+"DownDiv").className = "scrollArrowDown";
	}

	var objectFrom = getObj("home_"+from+"_container");
	var objectTo = getObj("home_"+to+"_container");

	var pagingFrom = getObj("home_"+from+"_paging");
	var pagingTo = getObj("home_"+to+"_paging");

	Paging.showCurrentPage(to, filter);
	
	$(objectFrom).fadeOut();
	$(objectTo).fadeIn();
	
	$(pagingFrom).fadeOut();
	$(pagingTo).fadeIn();
	
	var tabFrom = getObj(from+"_tab");
	var tabTo = getObj(to+"_tab");

	if (tabFrom!=null && tabTo!=null)
	{
		tabFrom.className="nodec colortablightgray nolink colortablightgraylink";
		tabTo.className="nodec colorblack nolink colorblacklink";
	}
	tabFrom = getObj(from+"_minitab");
	tabTo = getObj(to+"_minitab");
	if (tabFrom!=null && tabTo!=null)
	{
		tabFrom.className="nodec colortablightgray nolink colortablightgraylink";
		tabTo.className="nodec colormagenta nolink colormagentalink";
	}
		
}

Paging.homePreload = function (filter)
{
	Paging.preloadPageForSections({
		noticiasdest : 1,
		formaciondest: 1,
		bibliografiadest: 1,
		publicacionesdest : 1,
		publicacionespacientesdest : 1,
		revista : 1,
		cursosdest : 1,
		bolsaviajedest : 1,
		videotecadest : 1,
		pacientesEnlacesAsociaciones : 1,
		pacientesEnlacesPublicaciones : 1,
		pacientesEnlacesCentros : 1,		
		pacientesAsociaciones : 1,
		faq : 1,
		becasdest: 1,
		consensosdest: 1,
		noticiassetsdest: 1,
		publicacionessetsdest: 1,
		serviciosEnlacesNiv1: 1,
		serviciosEnlacesNiv2: 1,
		serviciosEnlacesNiv3: 1,
		serviciosEnlacesNiv4: 1,
		serviciosEnlacesNiv5: 1,
		serviciosEnlacesNiv6: 1,
		serviciosEnlacesNiv7: 1,
		serviciosEnlacesNiv8: 1,

		setsEnlacesNiv1: 1,
		setsEnlacesNiv2: 1,
		setsEnlacesNiv3: 1,
		setsEnlacesNiv4: 1,
		setsEnlacesNiv5: 1,
		setsEnlacesNiv6: 1,
		setsEnlacesNiv7: 1,
		setsEnlacesNiv8: 1,

                setsActividadesCientificas: 1,
                setsPublicaciones: 1,
                setsHome: 1
	}, filter);

	setTimeout("Paging.activated=true;", 1000);	
}

Paging.preloadPageForSections = function (sections, filter)
{
	if (sections==null)
		return;
		
	for (s in sections)
	{
		Paging.preloadPage(s, sections[s], filter);
	}
}

