/*******************************************************************************************
 * nav
 * Written by Craig Francis
 * Provide the ugly basic navigation rollover
 *******************************************************************************************/

	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('header');
					nav.refNav = document.getElementById('nav');
					nav.refSubNav = document.getElementById('subNav');

					if (!nav.refHeader || !nav.refNav || !nav.refSubNav) {
						return;
					}

				//--------------------------------------------------
				// Keep a reference to the subNav, as this will have
				// the correct "active" classes

					nav.refCurrentPageSubNav = nav.refSubNav;

				//--------------------------------------------------
				// Attach the events to the nav links

					var as = nav.refNav.getElementsByTagName('a');
					for (var k = (as.length - 1); k >= 0; k--) {
						as[k].onmouseover = nav.changeSubNav;
					}

				//--------------------------------------------------
				// Nav Reset

					nav.refHeader.onmouseout = nav.resetSubNav;

			}

		//--------------------------------------------------
		// Change subNav

			this.changeSubNav = function () {

				//--------------------------------------------------
				// Get the linkFolder

					var linkRegExp = new RegExp(/\/([^\/]+)\/$/);
					var linkFolder = linkRegExp.exec(this.href);

					if (linkFolder && linkFolder.length == 2) {
						linkFolder = linkFolder[1];
					} else {
						return;
					}

				//--------------------------------------------------
				// Links length

					var linksLength = 0;

					if (navLinks[linkFolder]) {
						linksLength = navLinks[linkFolder].length;
					}

				//--------------------------------------------------
				// If hovering for the current page

					var newNav;

					if (cssjs('check', this.parentNode, 'active')) {

						//--------------------------------------------------
						// Restore the subNav - provided by the
						// origional HTML

							newNav = nav.refCurrentPageSubNav;

					} else {

						//--------------------------------------------------
						// If there are any links, add a UL, otherwise use
						// an empty div

							if (linksLength > 0) {

								newNav = createElement('ul');

								for (var k = 0; k < linksLength; k++) {

									var li = createElement('li');
									var a = createElement('a');

									//external link?
									if(navLinks[linkFolder][k]['folder'].match("^http")){
										a.href = navLinks[linkFolder][k]['folder'];	
										a.target = "_blank";								
									}else{
										a.href = this.href + navLinks[linkFolder][k]['folder'];
										if(navLinks[linkFolder][k]['folder']) a.href += '/'; /* can be empty e.g. if sub section homepage - joel */
									}
																		
									a.appendChild(document.createTextNode(navLinks[linkFolder][k]['name']));
									li.appendChild(a);
									newNav.appendChild(li);
									newNav.appendChild(document.createTextNode(' '));

								}

							} else {

								newNav = createElement('div');

							}

						//--------------------------------------------------
						// 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 origiona nav

					nav.refSubNav.parentNode.replaceChild(nav.refCurrentPageSubNav, nav.refSubNav);
					nav.refSubNav = nav.refCurrentPageSubNav;

			}

		//--------------------------------------------------
		// When the page has loaded, run the init function

			addLoadEvent (function() {
				nav.init();
			});

	}

