/**
 * guide_nav.js
 */

if (typeof nav_data_left == 'undefined') nav_data_left = [];

document.write('<div class="nav" id="mynav"></div>')
var my_nav = new siteNav('my_nav', nav_data_left);
document.getElementById('mynav').appendChild(my_nav.showNav());
	
function siteNav(class_name, nav_items) {
	this.class_name = class_name;
	this.nav_items = nav_items;
	this.subnav_active = false;
	this.timer = false;
	this.showNav = function () {
		var parent_element = document.createElement('ul');
		parent_element.setAttribute('id', 'guide_nav');
		this.buildNav(parent_element, this.nav_items, 0);
		return parent_element;
	}
	this.buildNav = function (parent_object, my_array, level, prev_id) {
		for (var i in my_array) {
			var node_data = my_array[i][0];
			if (typeof(my_array[i][1]) == 'object' && typeof(my_array[i][1][0]) == 'object') {
				var subnodes = my_array[i][1];
			}
			else {
				var subnodes = false;
			}
			var new_li = false;
			var new_ul = false;
			var current_id = node_data[0];
			var node_name = current_id;
			if (typeof prev_id != 'undefined') {
				node_name = prev_id + '_' + current_id;
			}
			
			// Build li
			var new_li = document.createElement('li');
			parent_object.appendChild(new_li);

			// Build flap handle
			if (subnodes) {
				// Anchor
				var new_handle = document.createElement('a');
				new_handle.className = 'handle';
				new_handle.setAttribute('href', 'javascript:my_nav.flapManual(document.getElementById(\''+node_name+'\'))');
				new_li.appendChild(new_handle);
				// Text inside a
				var new_text = document.createTextNode('-');
				new_handle.appendChild(new_text);
				// Flyout mouseover
				new_li.onmouseover = function () {my_nav.showFlyout(this)};
				new_li.onmouseout = function () {my_nav.hideFlyout()};
			}
						
			// Build a inside li
			var new_link = document.createElement('a');
			new_link.setAttribute('id', node_name);
			new_link.setAttribute('type', 'navi;NID:'+node_data[0]);
			if (node_data[2].substring(0,7) == 'http://' || node_data[2].substring(0,1) == '/') {
				new_link.setAttribute('href', node_data[2]);
			}
			else if (page.getVar('previewmode')) {
				new_link.setAttribute('href', page.replaceGetParamInUrl(location.href,'page',node_data[2]));
			}
			else {
				new_link.setAttribute('href', page.getVar('basepath')+node_data[2]);
			}
			if (subnodes) {
				new_link.style.width = '107px';
			}
			else {
				new_link.style.width = '130px';
			}
	//		new_link.onclick = this.flap;
			new_li.appendChild(new_link);
	
			// Build text inside a
			var new_text = document.createTextNode(node_data[1]);
			new_link.appendChild(new_text);
			
			if (subnodes) {
				// Recurse into subnodes
				var new_ul = document.createElement('ul');
				if (level >= 0) {
					new_ul.style.display = 'none';
				}
				var new_parent = new_li.appendChild(new_ul);
				this.buildNav(new_parent, subnodes, level + 1, node_name); // RECURSION!
			}

			if (node_data[3]) {
				my_regexp = new RegExp(node_data[3], 'i');
				if (page.getVar('page_path').match(my_regexp)) {
					new_link.className = 'active';
					if (new_ul) {
						this.flapPath(new_ul);
					}
					else {
						this.flapPath(new_li);
					}
				}
			}
		}
		return parent_object;
	}
	this.flapPath = function (obj) {
		if (obj.style) {
//			obj.style.display = 'block';
			if (obj.tagName == 'LI') {
				if (obj.firstChild.className == 'handle' || obj.firstChild.className == 'handle_active') {
					this.flapManual(obj.firstChild.nextSibling);
				}
				else {
					this.flapManual(obj.firstChild);
				}
			} 
		}
		if (obj.parentNode && obj.parentNode.firstChild.className != 'active' && obj.parentNode.firstChild.className != 'handle_active') {
			this.flapPath(obj.parentNode); // RECURSION!
		}
	}
	this.flapManual = function (obj) {
		obj.className = 'active';
		if (obj.nextSibling) {
			sub_menu = obj.nextSibling;
			if (sub_menu.style.display == 'block' || !sub_menu.style.display) {
				sub_menu.style.display = 'none';
				obj.className = '';
				obj.previousSibling.className = 'handle';
				this.showFlyout(obj.parentNode);
			}
			else {
				sub_menu.style.display = 'block';
				obj.className = 'active';
				obj.previousSibling.className = 'handle_active';
				if (this.subnav_active) {
					this.subnav_active.style.display = 'none';
				}
			}
		}
	}
	this.simpleMouseover = function (obj) {
        clearTimeout(this.timer);
    }
	this.showFlyout = function (obj) {
	    if (navigator.userAgent.indexOf("MSIE") != -1){
	        if (document.readyState=='complete') {
				var go = true;
			}
			else {
				var go = false;
			}
		}
		else {
	        var go = true;
		}
if (go) {
        clearTimeout(this.timer);
		if (obj.firstChild.className != 'handle_active') {
			obj.subnav_div = document.createElement('div');
			obj.subnav_div.className = 'nav fly';
			if (navigator.userAgent.indexOf("MSIE") != -1){
		      	// MSIE
				obj.subnav_div.style.left = (document.body.offsetLeft+151)+'px';
				obj.subnav_div.style.top = (obj.offsetTop+obj.offsetParent.offsetTop+obj.offsetParent.offsetParent.offsetTop)+'px';
			}
			else if (navigator.userAgent.indexOf("AppleWebKit") != -1) {
				// Safari
				obj.subnav_div.style.left = (document.body.offsetLeft+151)+'px';
				obj.subnav_div.style.top = (obj.offsetTop)+'px';
			}
			else {
				// Mozilla
				obj.subnav_div.style.left = (obj.offsetLeft+151)+'px';
				obj.subnav_div.style.top = (obj.offsetTop)+'px';
			}
			obj.subnav_div.onmouseover = function () {my_nav.simpleMouseover(this)};
			obj.subnav_div.onmouseout = function () {my_nav.hideFlyout()};
			obj.subnav_ul = obj.firstChild.nextSibling.nextSibling.cloneNode(true);
			obj.subnav_ul.style.display = 'block';
			obj.subnav_div.appendChild(obj.subnav_ul);
			document.body.appendChild(obj.subnav_div);
			if (this.subnav_active) {
				this.subnav_active.parentNode.removeChild(this.subnav_active);
				this.subnav_active = false;
			}
			this.subnav_active = obj.subnav_div;
		}
}
	}
	this.hideFlyout = function () {
		callback = function () {
			if (this.obj) {
				this.obj.parentNode.removeChild(this.obj);
				my_nav.subnav_active = false;
			}
		};
		obj = this.subnav_active;
		if (obj) {
			this.timer = setTimeout(callback, 1000);
		}
	}
}


