if (typeof foolkit_widget01 == "undefined") {

	var foolkit_widget01 =  {
		
		ie4 : document.all,
		ns6 : document.getElementById&&!document.all,
		dropmenuobj : Object,
		delayhide : 0,

		eventCache : function() {
			var listEvents = [];
			return {
				listEvents : listEvents,
				add : function(node, sEventName, fHandler) {
					listEvents.push(arguments);
					},
				flush : function() {
					var i, item;
					for(i = listEvents.length - 1; i >= 0; i = i - 1){
						item = listEvents[i];
						if(item[0].removeEventListener){
							item[0].removeEventListener(item[1], item[2], item[3]);
						}
						if(item[1].substring(0, 2) != "on"){
							item[1] = "on" + item[1];
						}
						if(item[0].detachEvent){
							item[0].detachEvent(item[1], item[2]);
						}
						item[0][item[1]] = null;
					}
					}
			};
		}(),
		
		findPos : function(obj) {
			var curleft = curtop = 0;
			if (obj.offsetParent) {
				do {
					curleft += obj.offsetLeft;
					curtop += obj.offsetTop;
				} while (obj = obj.offsetParent);
			}
			return [curleft,curtop];
		},

		
		addEvent : function ( obj, type, fn ) {
			if (obj.addEventListener) {
				obj.addEventListener(type, fn, false);
				this.eventCache.add(obj, type, fn);
			}
			else if (obj.attachEvent) {
				obj["e"+type+fn] = fn;
				obj[type+fn] = function() { 
					obj["e"+type+fn]( window.event );
				};
				obj.attachEvent( "on"+type, obj[type+fn] );
				this.eventCache.add(obj, type, fn);
			}
			else {
				obj["on"+type] = obj["e"+type+fn];
			}
		},
		
		getElementsByClass : function (searchClass,node,tag) {
			var classElements = new Array();
			if ( node == null ) node = document;
			if ( tag == null ) tag = '*';
			var els = node.getElementsByTagName(tag);
			var elsLen = els.length;
			var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
			for (i = 0, j = 0; i < elsLen; i++) {
				if ( pattern.test(els[i].className) ) {
					classElements[j] = els[i];
					j++;
				}
			}
			return classElements;
		},
		
		contains_ns6 : function(a, b) {
			while (b.parentNode) {
				if ((b = b.parentNode) == a) return true;
			} 
			return false;
		},

		dynamichide : function(e) {
			foolkit_widget01.delayhidemenu();
		},

		hidemenu : function(e) {
			foolkit_widget01.dropmenuobj.style.visibility = "hidden";
		},
		
		delayhidemenu : function() {
			foolkit_widget01.delayhide = setTimeout(foolkit_widget01.hidemenu, 250);
		},
		
		clearhidemenu : function() {
			clearTimeout(foolkit_widget01.delayhide);
		},

		showhide : function(obj, e) {
			if (e.type=="click" && obj.visibility == 'hidden' || e.type=="mouseover") obj.visibility = 'visible';
			else if (e.type=="click") obj.visibility = 'hidden';
		},

		getposOffset : function(what, offsettype) {
			var totaloffset = (offsettype=="left") ? what.offsetLeft : what.offsetTop;
			var parentEl = what.offsetParent;
			while (parentEl != null) {
				totaloffset = (offsettype=="left") ? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
				parentEl = parentEl.offsetParent;
			}
			return totaloffset;
		},

		iecompattest : function() {
			return (document.compatMode && document.compatMode!="BackCompat") ? document.documentElement : document.body;
		},

		clearbrowseredge : function(obj, whichedge) {
			var edgeoffset = 0;
			if (whichedge == "rightedge") {
				var windowedge=this.ie4 && !window.operav ? this.iecompattest().scrollLeft+this.iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15;
				this.dropmenuobj.contentmeasure = this.dropmenuobj.offsetWidth;
				if (windowedge-this.dropmenuobj.x < this.dropmenuobj.contentmeasure) edgeoffset=this.dropmenuobj.contentmeasure-obj.offsetWidth;
			}
			else {
				var topedge=this.ie4 && !window.opera ? this.iecompattest().scrollTop : window.pageYOffset;
				var windowedge=this.ie4 && !window.opera ? this.iecompattest().scrollTop+this.iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18;
				this.dropmenuobj.contentmeasure=this.dropmenuobj.offsetHeight;
				if (windowedge-this.dropmenuobj.y < this.dropmenuobj.contentmeasure) { //move up?
					edgeoffset=this.dropmenuobj.contentmeasure+obj.offsetHeight;
					if ((this.dropmenuobj.y-topedge)<this.dropmenuobj.contentmeasure) edgeoffset=this.dropmenuobj.y+obj.offsetHeight-topedge;
				}
			}
			return edgeoffset;
		},

		dropdownmenu : function(obj, e) {
			if (window.event) event.cancelBubble=true;
			else if (e.stopPropagation) e.stopPropagation();
			this.clearhidemenu();

			var pos = this.findPos(obj);
			this.dropmenuobj.x = pos[0];
			this.dropmenuobj.y = pos[1];
			
			this.dropmenuobj.x=this.getposOffset(obj, "left");
			this.dropmenuobj.y=this.getposOffset(obj, "top");
			this.dropmenuobj.style.left=this.dropmenuobj.x-this.clearbrowseredge(obj, "rightedge")+"px";
			this.dropmenuobj.style.top=this.dropmenuobj.y-this.clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px";

			this.showhide(this.dropmenuobj.style, e);

		},
		
		init : function() { 
			// http://www.javascriptkit.com/dhtmltutors/externalcss2.shtml
			if (document.styleSheets && document.styleSheets.length>0) {
				var mysheet = document.styleSheets[0];
			}
			else {
				var cssNode   = document.createElement('style');
				cssNode.type  = 'text/css';
				cssNode.rel   = 'stylesheet';
				cssNode.media = 'screen';
				cssNode.title = 'dynamicSheet';
				document.getElementsByTagName("head")[0].appendChild(cssNode);
				var mysheet = document.styleSheets[0];
			}
			var totalrules = mysheet.cssRules ? mysheet.cssRules.length : mysheet.rules.length;
			var css = [];
			css[0] = ['', 'position:absolute;z-index:10000;visibility:hidden;width:480px;background-color:#407AA0;'];
			css[1] = ['table', 'border:1px solid #ccc;width:100%;font: 12px arial,sans-serif;color:#fff;'];
			css[2] = ['td', 'border-bottom: 1px solid #bbb;border-left: 1px solid #bbb;padding:2px;'];
			css[3] = ['td.FW69DZXRS01', 'font-weight:bold;color:#fc3;'];
			css[4] = ['a', 'display:block;text-decoration:none;color:#fff;'];
			css[5] = ['a:hover', 'background-color: #5893B5;'];
			if (mysheet.insertRule) { //if Firefox
				for (var i=0; i<css.length; i++ ) {
					mysheet.insertRule("#FW69DZXRS "+css[i][0]+" {"+css[i][1]+"}", totalrules);
				}
			}
			else if (mysheet.addRule){ //else if IE
				for (var i=0; i<css.length; i++ ) {
					mysheet.addRule("#FW69DZXRS "+css[i][0], css[i][1]);
				}
			}	

                        
                        
			// http://xhtml.com/en/xhtml/reference/table/ - about tables
			var menuTable = '<table cellpadding="0" cellspacing="0"><tr><td class="FW69DZXRS01">Courts</td><td class="FW69DZXRS01">Management</td><td class="FW69DZXRS01">Areas of Law</td><td class="FW69DZXRS01">Tools</td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/supreme-court">Supreme Court</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/ethics">Clients &amp; Ethics</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/administrative-law">Administrative Law</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/language">Accessibility &amp; Language</a></td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/district-court">District Court</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/finance">Finance &amp; Fees</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/business-law">Business Law</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/a2z-collection">A to Z Collection</a></td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/magistrates-court">Magistrates Court</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/hr">Human Resources</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/criminal-law">Criminal Law</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/community-legal-assistance">Community Legal Assistance</a></td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/other-state-courts">Other State Courts</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/intranet">Intranet</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/discrimination-law">Discrimination Law</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/desktop-detective">Desktop Detective</a></td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/federal-courts">Federal Courts</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/marketing">Marketing</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/elder-law">Elder Law</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/widgets">Foolkit Widgets</a></td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/barristers">Barristers</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/practice-management">Practice Management</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/employment-law">Employment Law</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/general-tools">General Tools</a></td></tr><tr><td class="FW69DZXRS01">My Career</td><td><a href="http://www.foolkit.com.au/sa/lawyers/risk-management">Risk Management</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/family-law">Family Law</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/legal-aid-funding">Legal Aid Funding</a></td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/students">Students</a></td><td>&nbsp;</td><td><a href="http://www.foolkit.com.au/sa/lawyers/injuries-law">Injuries &amp; Torts</a></td><td>&nbsp;</td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/legal-assistant">Legal Assistant</a></td><td class="FW69DZXRS01">Acts</td><td><a href="http://www.foolkit.com.au/sa/lawyers/property-law">Property Law</a></td><td>&nbsp;</td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/pro-bono">Pro Bono</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/acts">Acts</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/tax">Tax</a></td><td>&nbsp;</td></tr><tr><td><a href="http://www.foolkit.com.au/sa/lawyers/your-wellbeing">Your Wellbeing</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/regulations">Regulations</a></td><td><a href="http://www.foolkit.com.au/sa/lawyers/wills-and-probate">Wills &amp; Probate</a></td><td>&nbsp;</td></tr></table>';
			

			var els1 = this.getElementsByClass('foolkitMenuHover', document, 'a');
			var me = this;
			for (var i=0; i<els1.length; i++ ) {
				this.addEvent(els1[i], 'click', function(e) {return false;});
				this.addEvent(els1[i], 'mouseover', function(e) {return me.dropdownmenu(this, e);});
				this.addEvent(els1[i], 'mouseout', this.delayhidemenu);
			}
			var els2 = this.getElementsByClass('foolkitMenuClick', document, 'a');
			for (var i=0; i<els2.length; i++ ) {
				this.addEvent(els2[i], 'click', function(e) {return me.dropdownmenu(this, e);});
				this.addEvent(els2[i], 'mouseout', this.delayhidemenu);
			}
			
			
			this.dropmenuobj = document.createElement('div');
			this.dropmenuobj.setAttribute('id', 'FW69DZXRS');
			this.dropmenuobj.innerHTML = menuTable;
			
			//document.getElementById('FW69DZXRS').parentNode.appendChild(this.dropmenuobj);
			if (els1.length!=0) els1[0].parentNode.appendChild(this.dropmenuobj);
			if (els2.length!=0) els2[0].parentNode.appendChild(this.dropmenuobj);

			this.addEvent(this.dropmenuobj, 'mouseover', this.clearhidemenu);
			this.addEvent(this.dropmenuobj, 'mouseout', this.dynamichide);
			
			document.onclick = this.hidemenu; //hide menu when user clicks within menu
			

			this.addEvent(window, 'unload', this.eventCache.flush);

		}
	}; 
	foolkit_widget01.init();
}
