function hasParent(o,id) {
	if (o == null) return false;
	else if (o.nodeType == 1 && o.id == id) return true;
	else if (o.parentNode != null) return hasParent(o.parentNode,id);
	else return false;
}
// emulates push for browsers that don't support it (Mac IE) 
Array.prototype.push = function(e) {
	this[this.length] = e;
	return this.length;
}

/*** other misc functions ***/
function chkField(e) {
	if ((e.value== null) || (e.value== "") || isblank(e.value) || (e.value.length== 0 )) {
		return false;
	}
	else {
		return true;
	}
}

// Function that returns true if a string contains only white space
function isblank(s) {
	for (var i=0; i < s.length; i++) {
		var c=s.charAt(i);
		if ((c != " ") && (c != '\n') && (c != '\t')) return false;
	}
	return true;
}

function isNumber(sText)
{
  var ValidChars = "0123456789.";
  var isNumber=true;
  var Char;
  //
  for (i = 0; i < sText.length && isNumber == true; i++)
  {
    Char = sText.charAt(i);
    if (ValidChars.indexOf(Char) == -1)
    {
      isNumber = false;
    }
  }
  return isNumber;
}
	 
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

// written by Dean Edwards, 2005
// http://dean.edwards.name/
function addEvent(element, type, handler) {
	// assign each event handler a unique ID
	if (!handler.$$guid) handler.$$guid = addEvent.guid++;
	// create a hash table of event types for the element
	if (!element.events) element.events = {};
	// create a hash table of event handlers for each element/event pair
	var handlers = element.events[type];
	if (!handlers) {
		handlers = element.events[type] = {};
		// store the existing event handler (if there is one)
		if (element["on" + type]) {
			handlers[0] = element["on" + type];
		}
	}
	// store the event handler in the hash table
	handlers[handler.$$guid] = handler;
	// assign a global event handler to do all the work
	element["on" + type] = handleEvent;
};
addEvent(window,'load',function(){menu('main-nav')});
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
	// delete the event handler from the hash table
	if (element.events && element.events[type]) {
		delete element.events[type][handler.$$guid];
	}
};

function handleEvent(event) {
	// grab the event object (IE uses a global event object)
	event = event || window.event;
	// get a reference to the hash table of event handlers
	var handlers = this.events[event.type];
	// execute each event handler
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		this.$$handleEvent(event);
	}
};


function menu(nav){
	var _c = window.location.href.split('?')[0];
	var _q = window.location.href.split('?')[1];
	var ul = document.getElementById(nav);
	var li = ul.getElementsByTagName('li');

	for(var i=0;i<li.length;i++){
		var a = li[i].getElementsByTagName('a')[0];
		if(!/\.php$/.test(a.href) && a.parentNode.getElementsByTagName('ul').length>0){
			a.href='javascript:void(0)';
			a.onclick=toggle;
		}
		if(a.href.indexOf(_c)>-1){
		  var parentLi = a.parentNode;
		  do {
  			parentLi.className='selected';
  			parentLi = parentLi.parentNode.parentNode;
		  } while (parentLi.parentNode.tagName.toLowerCase()=='ul');
		}
	}
};

function toggle(){
  var li = dom.parent(this, 'li');
  var ul = dom.parent(li, 'ul');
  var els = ul.getElementsByTagName('li');
	for(var i=0; i<els.length; i++){
		els[i].className='';
	}
	li.className='selected';
}

// you need these also
if(typeof dom=='undefined'){
  dom = {
    next: function(e) {
       do {
       	e = e.nextSibling;
       } while(e && e.nodeType!=1);
       return e;
    },
    
    prev: function(e) {
    	do {
    		e = e.previousSibling;
    	} while(e && e.nodeType!=1);
    	return e;
    },
    
    parent: function(e, target, id) {
    	while(e.nodeName.toLowerCase() != target.toLowerCase() && e.nodeName.toLowerCase() != 'html') {
    		e = e.parentNode;
    	}
    	return (e.nodeName.toLowerCase() == 'html') ? null : e;
    },
    
    first: function(e) {
    	e = e.firstChild;
    	return (e && e.nodeType!=1) ? next(e) : e;
    },
    
    last: function(e) {
    	e = e.lastChild;
    	return (e && e.nodeType!=1) ? prev(e) : e;
    },
  
    insertAfter: function(newElement, targetElement) {
    	//target is what you want it to go after. Look for this elements parent.
    	var parent = targetElement.parentNode;
    	
    	//if the parents lastchild is the targetElement...
    	if(parent.lastchild == targetElement) {
    		//add the newElement after the target element.
    		parent.appendChild(newElement);
    	} else {
    		// else the target has siblings, insert the new element between the target and it's next sibling.
    		parent.insertBefore(newElement, targetElement.nextSibling);
    	}
    }
  }
}

