// ******* DIV PAGING *********

// create array of pointers to page DIVs (DIVs with pageNum attribute defined)
function InitPages(vInitialPage) {
	window.Pages = []; Pages.count = 0;
	var divs = document.getElementsByTagName("DIV");
	
	// for each DIV with 'pageNum' attribute, add to pages array
	for(var i in divs)
		if( is.Obj(divs[i]) && divs[i].getAttribute("pageNum") ) {
			Pages[ divs[i].getAttribute("pageNum") ] = divs[i];
			// NOT NEEDED:  divs[i].style.display = "none";			// hide all pages via script instead of CSS for SEO compat
			++Pages.count;
		}
	
	if(Pages.count==0)
		Pages = null;
	else {
		Pages.Goto = _Pages_Goto;
		Pages.Next = _Pages_Next;
		Pages.Back = _Pages_Back;
		
		Pages.currIndex = 1;
		if(!vInitialPage) vInitialPage = (window.vStartPage? window.vStartPage : 1);
		Pages.Goto(vInitialPage);
		DbgMsg("Pages initialised, Pages.count = "+Pages.count, 3);
	}
}

// goto specified page, either a page number or page ID (which is not allowed to start with a number)
function _Pages_Goto(vPageNumOrId) {
	var sOnHide, sOnShow, divCurrPage, iPageNum;
	if(Pages.count > 0) {
		DbgMsg("Pages.currIndex="+ Pages.currIndex +", vPageNumOrId="+ vPageNumOrId, 3);
		// DISABLED (heading glitches due to conflicts with page transition in XP):  if(document.body.filters && document.body.item("DXImageTransform.Microsoft.Fade"))  document.body.item("DXImageTransform.Microsoft.Fade").Apply();			// prep page transition

		// if vPageNumOrId is a string number, convert to numeric
		if(to.Num(vPageNumOrId)) vPageNumOrId = to.Num(vPageNumOrId);

		// hide current page
		if(is.Num(Pages.currIndex)) {
			divCurrPage = Pages[Pages.currIndex];
			divCurrPage.style.display = "none";
			// trigger 'onHide' event handler, if specified
			if( sOnHide = Pages[Pages.currIndex].getAttribute("onHide") )  eval(sOnHide);
			// OLD: hide all pages:   for(var i=1; i<window.Pages.length; i++) window.Pages[i].style.display = "none";
		}
		if(is.Num(vPageNumOrId)) 
			iPageNum = vPageNumOrId;
		else if(is.NBStr(vPageNumOrId)) {
			// find page with matching pageId attribute
			for(var i=0; i<Pages.length; i++) {
				// DBG: DbgMsg("Pages["+i+"]="+ (Pages[i]? Pages[i].getAttribute("pageId") : "") );
				if(Pages[i] && (Pages[i].getAttribute("pageId") == vPageNumOrId)) {
					iPageNum = to.Num(Pages[i].getAttribute("pageNum"));
					DbgMsg("Found page with pageId '"+ vPageNumOrId +"' (page #"+ iPageNum +")", 5);
				}
			}
			if(!is.Num(iPageNum)) WarnMsg("Couldn't find page with pageId '"+ vPageNumOrId +"'");
		}
		
		// show specified page
		if(is.Num(iPageNum)) {
			if(iPageNum>Pages.count) { WarnMsg("iPageNum ("+ iPageNum +") is greater than Pages.count ("+ Pages.count +")"); iPageNum=1; }
			DbgMsg("Display page #"+ iPageNum, 4);
			Pages.currIndex = iPageNum;							// update currIndex number
			divCurrPage = Pages[iPageNum];
			divCurrPage.style.display = "block";

			// update page number/count text
			if(window.pageNum) pageNum.innerHTML = iPageNum;
			if(window.pageCount) pageCount.innerHTML = (window.Pages.length-1);

			// trigger 'onShow' event handler, if specified
			if( sOnShow = Pages[Pages.currIndex].getAttribute("onShow") )  eval(sOnShow);
			// if page has 'pageId' attrib, update nav
			if(Pages[Pages.currIndex].getAttribute("pageId"))
				if(parent && parent.UpdateNav)  parent.UpdateNav( Pages[Pages.currIndex].getAttribute("pageId") );
		}

		// DISABLED: 	if(document.body.filters && document.body.item("DXImageTransform.Microsoft.Fade"))  document.body.item("DXImageTransform.Microsoft.Fade").Play();		// show page transition
	}
}
function _Pages_Next() {
	if(Pages.count > 0) {
		var iNewPage = Pages.currIndex + 1;
		if( iNewPage > Pages.count ) iNewPage = 1;
		Pages.Goto(iNewPage);
	}
}
function _Pages_Back() {
	if(Pages.count > 0) {
		var iNewPage = Pages.currIndex - 1;
		if( iNewPage == 0 ) iNewPage = Pages.count;
		Pages.Goto(iNewPage);
	}
}
