﻿var SHOW_LINE_COUNT = 8;
var LINE_WRAP_COUNT = 40;

var Dom = {
get: function(el) {
  if (typeof el === 'string') {
    return document.getElementById(el);
  } else {
    return el;
  }
},
add: function(el, dest) {
  var el = this.get(el);
  var dest = this.get(dest);
  dest.appendChild(el);
},
remove: function(el) {
  var el = this.get(el);
  el.parentNode.removeChild(el);
}
};
var Event = {
add: function() {
  if (window.addEventListener) {
    return function(el, type, fn) {
      Dom.get(el).addEventListener(type, fn, false);
    };
  } else if (window.attachEvent) {
    return function(el, type, fn) {
      var f = function() {
        fn.call(Dom.get(el), window.event);
      };
      Dom.get(el).attachEvent('on' + type, f);
    };
  }
}()
};

function Page(id, description, link, type, isCurrentPage)
{
	this.id = id;
	this.description = description;
	this.link = link;
	this.type = type;
	this.isCurrentPage = isCurrentPage;
	
	if (typeof(_page_prototype_called) == 'undefined')
	{
		_page_prototype_called = true;
		Page.prototype.getId = getId;
		Page.prototype.setId = setId;		
		Page.prototype.getDescription = getDescription;
		Page.prototype.setDescription = setDescription;
		Page.prototype.getLink = getLink;
		Page.prototype.setLink = setLink;		
		Page.prototype.getType = getType;
		Page.prototype.setType = setType;		
		Page.prototype.setIsCurrentPage = setIsCurrentPage;		
		Page.prototype.getIsCurrentPage = getIsCurrentPage;
	}
	
	function getId() {return this.id;}
	function setId(value) {this.id = value;}	
	function getDescription() {return this.description;}
	function setDescription(value) {this.description = value;}	
	function getLink() {return this.link;}
	function setLink(value) {this.link = value;}	
	function getType() {return this.type;}
	function setType(value) {this.type = value;}
	function getIsCurrentPage() {return this.isCurrentPage ;}
	function setIsCurrentPage(value) {this.isCurrentPage = value;}					
}

function showSubNavigation(page, curPostId)
{
	var refNav = document.getElementById('refnav');
	var subNavDir = document.getElementById('subnavdir');
	
	if (null != refNav)
	{
		while (refNav.childNodes.length > 0)
			Dom.remove(refNav.childNodes[0]);
	}

	if (null != subNavDir)
	{
		while (subNavDir.childNodes.length > 0)
			Dom.remove(subNavDir.childNodes[0]);
	}

	var counter = 0;
	var last_type = "";
	var listElement = null;
	
	var offset = page * SHOW_LINE_COUNT;
	var offsetRef = 0;
	var curPage = 1;
	var isPostFound = false;
	
	var navElement = null;
	var styleAttr = null;
		
	var isFilmWerk = (0 <= location.href.indexOf("/nl/filmwerk-1988"));
		
	if (isFilmWerk)
	{
		navElement = document.createElement('div');
		styleAttr = document.createAttribute("class");
		styleAttr.nodeValue = "pdf";
		navElement.setAttributeNode(styleAttr);
		navElement.innerHTML = "<a class=\"image\" target=\"_blank\" href=\"/mediabox/site/portfolio_FilipMartin.pdf\"><img src=\"/wp-content/themes/fijnebeeldwaren/images/pdficon.png\"></a> <small><a target=\"_blank\" href=\"/mediabox/site/portfolio_FilipMartin.pdf\">download pdf</a></small>";
		Dom.add(navElement, 'refnav');
		++counter;
	}
	
	// iterate to get start point based on page
	if (page != 1)
	{
		for (i = 0; i < pages.length; i++)
		{
			var subpage = pages[i];
			
			if (page == 0 && subpage.getId() == curPostId)
			{
				isPostFound = true;
				break;
			}
			
			if (last_type != subpage.getType())
			{			
				last_type = subpage.getType();
				++counter;
			}
			
			++counter;
			
			if (subpage.description.length > LINE_WRAP_COUNT)
				++counter;
			
			if (counter >= SHOW_LINE_COUNT - 1 && i+1 < pages.length)
			{
				if (last_type != pages[i+1].getType())
					++counter;
			}
			
			if (counter >= SHOW_LINE_COUNT)
			{
				curPage++;				
				
				if (curPage < page || page == 0)
				{
					counter = 0;
					last_type = "";
					offsetRef = i + 1;
				}
				else
					break;
			}
		}
	}
	
	if (page > 1)
	{
		offsetRef = i + 1;
	}

	last_type = "";
	counter = (isFilmWerk ? 1 : 0);
	page = curPage;

	for (i = offsetRef; i < pages.length; i++)
	{
		var subpage= pages[i];
		
		if (last_type != subpage.getType())
		{
			if (counter >= SHOW_LINE_COUNT - 1)
				break;
				
			listElement = document.createElement('li');
			styleAttr = document.createAttribute("class");
			styleAttr.nodeValue = "type";
			listElement.setAttributeNode(styleAttr);

			listElement.innerHTML = subpage.getType().toUpperCase() + ":";
			Dom.add(listElement, 'refnav');
			last_type = subpage.getType();
			++counter;
		}

		listElement = document.createElement('li');
		
		//alert(subpage.getLink());

		if (subpage.getIsCurrentPage())
		{
			listElement.innerHTML = subpage.getDescription();
			styleAttr = document.createAttribute("class");
			styleAttr.nodeValue = "current";
			listElement.setAttributeNode(styleAttr);
		}
		else if (subpage.getLink().length > 0)
		{
			listElement.innerHTML = '<a href="' + subpage.getLink() + '">' + subpage.getDescription() + '</a>';
		}
		else
			listElement.innerHTML = subpage.getDescription();
				
		Dom.add(listElement, 'refnav');

		++counter;
				
		if (subpage.description.length > LINE_WRAP_COUNT)
		{
			++counter;
		}
		
		//alert(subpage.description + "(" + subpage.description.length + ") - Counter" + counter);
		if (counter >= SHOW_LINE_COUNT)
			break;
	}
	
	var prev = false;
	var next = false;
	
	if (offsetRef > 0)
		prev = true;
	
	if (i < pages.length - 1)
		next = true;
		
	if (prev)
	{
		navElement = document.createElement('div');
		styleAttr = document.createAttribute("class");
		styleAttr.nodeValue = "prev";
		navElement.setAttributeNode(styleAttr);
		navElement.innerHTML = "&laquo; <a href=\"#\">vorige</a>";
		Dom.add(navElement, 'subnavdir');
		Event.add(navElement, 'click', function(e) { showSubNavigation(page - 1);});
	}
		
	if (next)
	{
		navElement = document.createElement('div');
		styleAttr = document.createAttribute("class");
		styleAttr.nodeValue = "next";
		navElement.setAttributeNode(styleAttr);		
		navElement.innerHTML = "<a href=\"#\">volgende</a> &raquo;";
		Dom.add(navElement, 'subnavdir');
		Event.add(navElement, 'click', function(e) { showSubNavigation(page + 1);});
	}
}

