/*******************************************************************************************
 * nav
 * Written by Craig Francis
 *******************************************************************************************/

	var nav = new function () {

		//--------------------------------------------------
		// Do not allow older browsers to run this script

			if (!document.getElementById || !document.getElementsByTagName) {
				return;
			}

		//--------------------------------------------------
		// Initialisation function used for setup

			this.init = function () {

				//--------------------------------------------------
				// Get a reference to the navigation bars

					nav.refHeader = document.getElementById('nav');
					nav.refNav = document.getElementById('nav');
					nav.refSubNav = document.getElementById('subNav');

					if (!nav.refHeader || !nav.refNav || !nav.refSubNav) {
						return;
					}

				//--------------------------------------------------
				// Attach the events to the nav links

					nav.currentLinkFolder = null;

					var as = nav.refNav.getElementsByTagName('a');
					for (var k = (as.length - 1); k >= 0; k--) {

						var linkRegExp = new RegExp(/\/([^\/]+)\/$/);
						var linkFolder = linkRegExp.exec(as[k].href);

						if (linkFolder && linkFolder.length == 2) {

							as[k].navLinkFolder = linkFolder[1];

							if (cssjs('check', as[k].parentNode, 'current')) {
								nav.currentLinkFolder = as[k].navLinkFolder;
							}

							as[k].onmouseover = function () {
								nav.changeSubNav(this.navLinkFolder);
							};

						}

					}

					console.log("nav.js: Current folder '" + nav.currentLinkFolder + "'");

				//--------------------------------------------------
				// Nav Reset

					nav.refHeader.onmouseout = nav.resetSubNav;

			}

		//--------------------------------------------------
		// Change subNav

			this.changeSubNav = function (linkFolder) {

				//--------------------------------------------------
				// Links length

					var linksLength = 0;

					if (!navLinks[linkFolder]) {
						linkFolder = nav.currentLinkFolder;
					}

					if (navLinks[linkFolder]) {
						linksLength = navLinks[linkFolder].length;
					}

				//--------------------------------------------------
				// If hovering for the current page

					if (linksLength == 0) {
						return false;
					}

					var newNav = createElement('ul');

					for (var k = 0; k < linksLength; k++) {

						var li = createElement('li');
						var a = createElement('a');

						a.href = navLinks[linkFolder][k]['folder'];

						//external link?
						if (navLinks[linkFolder][k]['folder'].match("^http")){
							a.target = "_blank";
						}

						if (a.href == window.location) {
							cssjs('add', li, 'sub_show');
						}

						var linkName = convertAmp(navLinks[linkFolder][k]['name']);
						a.appendChild(document.createTextNode(linkName));
						li.appendChild(a);
						newNav.appendChild(li);
						newNav.appendChild(document.createTextNode(' '));

					}

				//--------------------------------------------------
				// Set the ID - used in the CSS

					newNav.id = 'subNav';

				//--------------------------------------------------
				// Add the new subNav

					nav.refSubNav.parentNode.replaceChild(newNav, nav.refSubNav);
					nav.refSubNav = newNav;

			}

		//--------------------------------------------------
		// Reset subNav

			this.resetSubNav = function (e) {

				//--------------------------------------------------
				// Ensure that the onmouseout event has not
				// triggered because we are now moving over
				// another child element.

					if (!e) var e = window.event;

					var dstElement = (e.relatedTarget) ? e.relatedTarget : e.toElement;
					while (dstElement) {
						if (dstElement === nav.refHeader) {
							return;
						}
						dstElement = dstElement.parentNode;
					}

				//--------------------------------------------------
				// Restore the original nav

					nav.changeSubNav(nav.currentLinkFolder);

			}

		//--------------------------------------------------
		// When the page has loaded, run the init function

			addLoadEvent (function() {
				nav.init();
			});

	}

//--------------------------------------------------
// Function to convert &amp; to &

	function convertAmp(str){
		str= str.replace(/\&amp;/g,'&');
		str= str.replace(/\&quot;/g,'""');
		return str;
	}