var ids_pages = new Array(); // list of the article div ID
var labels = new Array(); // labels to generate links

// Initialization of the pagination links and display of the first article
function buildPageLinks(section_name, isEditMode, articleLabel, firstLabel, lastLabel) {

	labels["article"] = articleLabel;
	labels["first"]   = firstLabel;
	labels["last"]    = lastLabel;

	var section_node = document.getElementById(section_name);

	if (!section_node.hasChildNodes()) {
		return;
	}

	var child_nodes = section_node.childNodes;
	var container_list_node = null;

	// Handle of the ContainerList node in case of Edit Mode
	if (isEditMode) {
		// Get the Container List node
		for (var i=0; i<child_nodes.length; i++) {
			var child_node = child_nodes[i];
			if (child_node.nodeName == "FIELDSET") {
				container_list_node = child_node;
				break;
			}
		}

		if (container_list_node == null) {
			return;
		}
		child_nodes = container_list_node.childNodes;
	}

	// Storage in ids_pages[] of the IDs of the Container	nodes
	for (var j=0; j<child_nodes.length; j++) {
		var child_node = child_nodes[j];
		if (child_node.nodeName == "DIV") {
			var node_id = child_node.getAttribute("id");
			if (node_id != null && node_id.match(/^article_\d+$/)) {
				ids_pages[ids_pages.length] = node_id;
			}
		}
	}
	// Integration of the pagination links in document
	var section_innerHTML = section_node.innerHTML;
	var page_links = "<div id='pagination'>\n<br/></div>";
	section_node.innerHTML =  section_innerHTML + page_links;
	// Display of the first article
	displayPage(0);
}

// Generation of the links
function generatePageLinks(displayed_page) {
	var page_links = "";
	var nb_links = ids_pages.length;

	if (nb_links > 4) {
		if (displayed_page == 0) {
			page_links += generatePageLink("0", labels["article"] + " 1") + " ";
			page_links += generatePageLink("1", labels["article"] + " 2") + " ";
			page_links += "... "
			page_links += generatePageLink(nb_links-1, labels["last"]);
		}
		else if (displayed_page == 1) {
			page_links += generatePageLink("0", labels["article"] + " 1") + " ";
			page_links += generatePageLink("1", labels["article"] + " 2") + " ";
			page_links += generatePageLink("2", labels["article"] + " 3") + " ";
			page_links += "... "
			page_links += generatePageLink(nb_links-1, labels["last"]);
		}
		else if (displayed_page == nb_links-2) {
			page_links += generatePageLink(0, labels["first"]);
			page_links += " ... "
			page_links += generatePageLink(displayed_page-1, labels["article"] + " " + displayed_page) + " ";
			page_links += generatePageLink(displayed_page++, labels["article"] + " " + displayed_page) + " ";
			page_links += generatePageLink(displayed_page, labels["article"] + " " + nb_links);
		}
		else if (displayed_page == nb_links-1) {
			page_links += generatePageLink(0, labels["first"]);
			page_links += " ... "
			page_links += generatePageLink(displayed_page-1, labels["article"] + " " + displayed_page) + " ";
			page_links += generatePageLink(displayed_page, labels["article"] + " " + nb_links);
		}
		else {
			page_links += generatePageLink(0, labels["first"]);
			page_links += " ... "
			page_links += generatePageLink(displayed_page-1, labels["article"] + " " + displayed_page) + " ";
			page_links += generatePageLink(displayed_page++, labels["article"] + " " + displayed_page) + " ";
			page_links += generatePageLink(displayed_page++, labels["article"] + " " + displayed_page);
			page_links += " ... "
			page_links += generatePageLink(nb_links-1, labels["last"]);
		}
	}
	else {
		for (var i=0; i<nb_links; i++) {
			page_links += generatePageLink(i, labels["article"] + " "+(i+1)) + " ";
		}
	}
	return page_links;
}

// Generation of a link to display an article
function generatePageLink(id_page, link_value) {
	var page_link = "<a href=\"javascript:displayPage('";
	page_link += id_page;
	page_link += "')\">";
	page_link += link_value;
	page_link += "</a>";

	return page_link;
}

// Display of an article
function displayPage(page_rank) {
	document.getElementById("pagination").innerHTML = generatePageLinks(page_rank);

	for (var i=0; i<ids_pages.length; i++)	{
		setStyle(ids_pages[i], "display:none");
	}
	setStyle(ids_pages[page_rank], "");
}

// Update of the style of a node
function setStyle(node_id, style) {
	var node = document.getElementById(node_id);
	if (navigator.userAgent.indexOf("MSIE") > 0){
			node.style.setAttribute("cssText", style, 0);
	} else {
		node.setAttribute("style", style);
	}
}
