var Navigator = {			
	'totalPages': 0, 
	'urlData': null, 
	
	'messageBoxContainerID': null,
	'messageBox': null, 
	
	// totalPages: total number of pages to be displayed
	// urlData: Object containing URL query, e.g. {'page': 2, 'id': 4}
	// messageBox: A nicer looking alert box
	'init': function(totalPages, urlData, messageBox) {
		Navigator.totalPages = totalPages;
		Navigator.urlData = urlData;
		
		Navigator.messageBox = messageBox;
		
		if (Navigator.urlData.page) {
			// Make sure to make page an integer
			Navigator.urlData.page = parseInt(Navigator.urlData.page);
		}
		else 
		{
			Navigator.urlData.page = 1;
		}
	},
				
	'prev': function() {
		if (Navigator.urlData.page > 1) {
			Navigator.urlData.page -= 1;
			window.location.href = '?' + Navigator.getQueryString();
		}
	},
	
	'next': function() {
		if (Navigator.urlData.page < Navigator.totalPages) {
			Navigator.urlData.page += 1;
			window.location.href = '?' + Navigator.getQueryString();
		}
	}, 
	
	'goto': function(f) {
		var page = f.elements[0].value;
		
		if (isNaN(page)) {
			Navigator.messageBox.setTitle('Fejl: Side navigering');
			Navigator.messageBox.setContent('Du skal indtaste et tal mellem 1 og ' + Navigator.totalPages + '.');
			Navigator.messageBox.display();
			
			f.elements[0].value = Navigator.urlData.page;
		}
		else if (page >= 1 && page <= Navigator.totalPages) {
			Navigator.urlData.page = page;
			window.location.href = '?' + Navigator.getQueryString();
		}
		else {
			Navigator.messageBox.setTitle('Fejl: Side navigering');
			Navigator.messageBox.setContent('Du skal indtaste et tal fra 1 til ' + Navigator.totalPages + '.');
			Navigator.messageBox.display();

			f.elements[0].value = Navigator.urlData.page;
		}
	}, 				

	'getQueryString': function() {
		var str = '';
		
		for (key in Navigator.urlData) {
			str += key + '=' + Navigator.urlData[key] + '&'; 
		}
		
		return str;
	},
	
	'display': function(containerID) {
		if (Navigator.totalPages > 1) {
			var container = document.getElementById(containerID);
			container.appendChild(Navigator.create());
		}
	},

	'create': function() {
		// Creating navigation elements
		var table = document.createElement('table');
			var tbody = document.createElement('tbody');
				var tr = document.createElement('tr');
					var td1 = document.createElement('td');
						var img1 = document.createElement('img');
					var td2 = document.createElement('td');
						var span2 = document.createElement('span');
						var text2 = document.createTextNode(' | ');
					var td3 = document.createElement('td');
						var form = document.createElement('form');
							var input = document.createElement('input');
					var td4 = document.createElement('td');
						var span4 = document.createElement('span');
					var td5 = document.createElement('td');
						var text5 = document.createTextNode(' | ');
						var span5 = document.createElement('span');
					var td6 = document.createElement('td');
						var img6 = document.createElement('img');
		
		// Joining the elements
		table.appendChild(tbody);
			tbody.appendChild(tr);
				tr.appendChild(td1)
					td1.appendChild(img1);
				tr.appendChild(td2)
					td2.appendChild(span2);
				tr.appendChild(td3);
					td3.appendChild(form);
						form.appendChild(input);
				tr.appendChild(td4);
					td4.appendChild(span4);
				tr.appendChild(td5); 
					td5.appendChild(span5);
				tr.appendChild(td6); 
					td6.appendChild(img6);
		
		// Setting elements values
		table.style.align = 'center';
		table.style.fontSize = '14px';
		table.style.marginTop = '0px'; 

		td2.style.width = '120px';
		td5.style.width = '120px';
		td5.style.textAlign = 'right';
		
		img1.src = Common.HTML_ROOT + '/images/' + (Navigator.urlData.page > 1 ? 'prev_blue.png' : 'prev_grey.png');
		img1.style.cursor = (Navigator.urlData.page > 1 ? 'pointer' : 'default');
		img1.title = (Navigator.urlData.page > 1 ? 'Gå til side ' + (Navigator.urlData.page - 1) : '');
		img1.onclick = function() {
			Navigator.prev();
		}
		
		span2.innerHTML = 'Forrige side';
		span2.title = (Navigator.urlData.page > 1 ? 'Gå til side ' + (Navigator.urlData.page - 1) : '');
		span2.style.color = (Navigator.urlData.page > 1 ? '#006fa7' : '#9a9a9a');
		span2.style.fontWeight = 'bold';
		span2.style.cursor = (Navigator.urlData.page > 1 ? 'pointer' : 'default');
		span2.onclick = function() {
			Navigator.prev();
		}

		span4.innerHTML = ' af ' + Navigator.totalPages;
		
		span5.innerHTML = 'Næste side';
		span5.title = (Navigator.urlData.page < Navigator.totalPages ? 'Gå til side ' + (Navigator.urlData.page + 1) : '');
		span5.style.color = (Navigator.urlData.page < Navigator.totalPages ? '#006fa7' : '#9a9a9a');
		span5.style.fontWeight = 'bold';
		span5.style.cursor = (Navigator.urlData.page < Navigator.totalPages ? 'pointer' : 'default');
		span5.onclick = function() {
			Navigator.next();
		}

		img6.src = Common.HTML_ROOT + '/images/' + (Navigator.urlData.page < Navigator.totalPages ? 'next_blue.png' : 'next_grey.png');
		img6.style.cursor = (Navigator.urlData.page < Navigator.totalPages ? 'pointer' : 'default');
		img6.title = (Navigator.urlData.page < Navigator.totalPages ? 'Gå til side ' + (Navigator.urlData.page + 1) : '');
		img6.onclick = function() {
			Navigator.next();
		}
		
		form.action = '#';
		form.style.margin = '0px';
		form.onsubmit = function() {
			Navigator.goto(this); 
			
			return false;
		}
		
		input.type = 'text'; 
		input.value = Navigator.urlData.page;
		input.className = 'niftyBorder';
		input.style.width = '45px'; 
		input.style.height = '20px'; 
		input.style.textAlign = 'center';
		
		return table;
	}
}

