var YUC = YAHOO.util.Connect;
var YUD = YAHOO.util.Dom;
var YUE = YAHOO.util.Event;

var nav = {
	ul: null,
	li: null,
	a: null,
	
	sections: Array(),
	current: null,
	
	init: function() {
		var n = document.getElementById("nav");
		if (n) {
			nav.ul = n.getElementsByTagName("ul");
			if (nav.ul.length > 0) {
				nav.ul = nav.ul[0];
				nav.li = nav.ul.getElementsByTagName("li");
				if (nav.li.length > 0) {
					nav.set();
					nav.setCurrent();
				}
			}
		}
		
		nav.resetLinks();
		nav.reverseMail();
		nav.fitWindow();
		YUE.addListener(window,"resize",nav.fitWindow);
	},
	
	reverseMail: function() {
		$(".reverseme").each( function() {
			var email = $(this).text().reverse();
			$(this).wrap("<a href='mailto:" + email + "'></a>");
		});
	},
	
	resetLinks: function() {
		var a = document.body.getElementsByTagName("a");
		for (var i=0; i<a.length; i++) {
			var h = a[i].getAttribute("href");
			if (h) {
				if (h.indexOf("#") >= 0) {
					if (!YUD.hasClass(a[i].parentNode.parentNode,"smallnav")) {
						nav.setLink(a[i],h.substring(h.indexOf("#")+1));
						a[i].setAttribute("url",h.substring(h.indexOf("#")));
						if (h.indexOf("+") < h.indexOf("#")) YUE.addListener(h,"click",nav.scrollTop); //  nav.scrollTop(); //
					}
				}
			}
		}
	},
	
	fitWindow: function() {
		var dw = 780 + 70;
		
		var w = window.innerWidth;
		if (!w) w = document.body.offsetWidth;
		
		var b = document.getElementById("body");
		var bw = nav.getSize(b)[0];
		
		// base font size off of window size
		var fs = 14;
		var fa = parseInt((w / dw) * 11);
		// if (fa > fs) fs = fa;
		YUD.setStyle(document.body,"font-size",fs+"px");
		
		var off = w - dw;
		if (off > 0) {
			var aw = parseInt(0.8*w);
			YUD.setStyle(b,"width",aw+"px");
			YUD.setStyle(b,"margin-left",parseInt((w-aw)/2)+"px");
		} else {
			YUD.setStyle(b,"width",(w-55)+"px");
			YUD.setStyle(b,"margin-left","20px");
		}
		YUD.setStyle(b,"width","900px");
		YUD.setStyle(b,"margin-left","-450px");
		YUD.setStyle(b,"left","50%");
		
		if (w < 950) {
			var wtemp = w - 50;
			YUD.setStyle(b,"width",wtemp+"px");
			YUD.setStyle(b,"margin-left",((0-wtemp)/2)+"px");
		}
		// console.info(w," vs ",YUD.getStyle(b,"width"));
		
		YUD.addClass(b,"positioned");
		
	},
	
	setCurrent: function() {
		nav.current = nav.sections[0];
		
		var n_s = nav.getURL(document.location.href);
		if (n_s.length > 0) {
			var c = document.getElementById("section_"+n_s[0]);
			if (c) nav.current = c;
		}
		
		// if (n_s[1] != "") n_s[0] += "+"+n_s[1]; 
		// document.location.href = "#"+n_s[0];
		
		nav.highlight(null,Array(null,nav.current));
	},
	
	set: function() {
		for (var i=0; i<nav.li.length; i++) {
			var a = nav.li[i].getElementsByTagName("a");
			if (a.length > 0) {
				// find the target name
				var h = a[0].getAttribute("href");
				if (h.indexOf("#") >= 0) {
					var n = h.substring(h.indexOf("#")+1);
					
					nav.setID(n);
					nav.setLink(a[0],n);
					a[0].setAttribute("id","nav_"+n);
					a[0].setAttribute("url","#"+n);
				}
			}
		}
	},
	
	setID: function(n) {
		// find the corresponding <a> with the target name
		var aa = document.body.getElementsByTagName("a");
		for (var j=0; j<aa.length; j++) {
			if (aa[j].getAttribute("name") == n) {
				// find the parent "section" div
				var e = aa[j]; var s = e;

				while (!YUD.hasClass(s,"section") && s != document.body) s = s.parentNode;
				if (s != document.body) {
					nav.sections.push(s);
					s.setAttribute("id","section_"+n);
					
					e.parentNode.removeChild(e);
					
					var na = document.createElement("a");
					var b = document.getElementById("body");
					na.setAttribute("name",n);
					b.parentNode.insertBefore(na,b);
					
					var b = YUD.getElementsByClassName("back","a",s);
					// for (var i=0; i<b.length; i++) b[i].parentNode.removeChild(b[i]);
				}
			}
		}
	},
	
	setLink: function(a,n) {
		var n_s = nav.getURL("#"+n);
		n = n_s[0]; sub = n_s[1];
		
		var s = document.getElementById("section_"+n);
		if (s) {
			var arr = Array(a,s);
			YUE.addListener(a,"click",nav.highlight,arr);

			var h = "javascript:void(0);";
			if (sub != "") h = "#"+n+"+"+sub;
			else YUE.addListener(a,"click",nav.scrollTop);
			
			a.setAttribute("href",h);
			// YUD.addClass(s,"hidden");
		}
	},
	setTitle: function(s) {
		var t = document.getElementById("title");
		if (s&&t) {
			var h2 = s.getElementsByTagName("h2");
			if (h2.length > 0) {
				t.innerHTML = h2[0].innerHTML;
			}
		}
	},
	
	highlight: function(e,arr) {
		var a = arr[0]; var s = arr[1];
		if (!s) return true;
		
		var sn = s.getAttribute("id").replace("section_","");
		
		for (var i=0; i < nav.sections.length; i++) {
			YUD.removeClass(nav.sections[i],"hidden");
			YUD.removeClass(nav.sections[i],"active");
			
			if (nav.sections[i] != s) {
				nav.fade(nav.sections[i],"out");
				YUD.addClass(nav.sections[i],"hidden");
			} else {
				nav.fade(s,"in");
				YUD.addClass(s,"active");
				// nav.setTitle(s);
				nav.setNav(sn);
                $(s).find(".toggle-set").removeClass("toggle-set");
				
				side.change(s,true);
				
				var h = document.location.href;
				h = h.substring(h.indexOf("#")+1);
				nav.setInternal(null,h);
				
				if (a) {
					var u = a.getAttribute("url");
					if (u) document.location.href = u;
				}
				
				var h2 = s.getElementsByTagName("h2");
				if (h2.length > 0) { 
					document.title = "PocketGear.com - " + 
						h2[0].innerHTML.replace("PocketGear.com","").replace("PocketGear","");
				}
			}
		}
	},
	setInternal: function(e,h) {
		var cn = "internalFocus";
		
		var c = YUD.getElementsByClassName(cn);
		for (var i=0; i<c.length; i++) YUD.removeClass(c[i],cn);
		
		var a = document.body.getElementsByTagName("a");
		for (i=0; i<a.length; i++) {
			if (a[i].getAttribute("name") == h) {
				YUD.addClass(a[i].parentNode,cn);
			}
		}
	},
	
	setNav: function(name) {
		var n = document.getElementById("nav");
		if (n) {
			var a = n.getElementsByTagName("a");
			for (var i=0; i < a.length; i++) {
				YUD.removeClass(a[i],"current");
				if (a[i].getAttribute("id") == "nav_"+name)
					YUD.addClass(a[i],"current");
			}
		}
	},
	
	fade: function(c,inout,dur,max) {
		// return true;
		
		if (navigator.appName == "Microsoft Internet Explorer") return true; // escape out for MSIE
		
		if (!dur) dur = 1;
		if (!max) max = 1;
		
		var myAnim = new YAHOO.util.Anim(c);
		myAnim.duration = dur;
		
		myAnim.attributes.opacity = { from: 0, to: max };
		if (inout == "out") myAnim.attributes.opacity = { from: 1, to: 0 };
		
		myAnim.animate();
	},
	
	getSize: function(i) {
		var w = 0; var h = 0;
		try {
			if (typeof(i) != 'undefined') {
				h = i.offsetHeight; if (!h) h = i.style.pixelHeight; 
				w = i.offsetWidth; if (!w) w = i.style.pixelWidth;
			}
			return Array(w,h);
		} catch(e) { }
	},
	setSize: function(o,w,h) {
		try {
			if (typeof(o) != 'undefined') {
				if (h) YUD.setStyle(o,"height",h+"px");
				if (w) YUD.setStyle(o,"width",w+"px");
			}
		} catch(e) { }
	},
	scrollTop: function() { scroll(0,0); },
	
	getURL: function(href) {
		var arr = Array();
		if (href.indexOf("#") >= 0) {
			var base = href.substring(href.indexOf("#")+1);

			var sub = ""; var extra = "";
			if (base.indexOf("+") >= 0) {
				sub = base.substring(base.indexOf("+")+1);
				base = base.substring(0,base.indexOf("+"));
			}
			arr = Array(base,sub);
		}
		return arr;
	},
	
	post: function() {
		nav.setCurrent();
		
		// add post-load links
		var n = document.getElementById("nav");
		if (n) {
			var a = n.getElementsByTagName("a");
			for (var i=0; i<a.length; i++) {
				var u = a[i].getAttribute("url");
				if (!u) u = a[i].getAttribute("href");
				u = u.substring(u.indexOf("#")+1);
				
				var s = document.getElementById("section_"+u);

				var c = null;
				if (nav.current) c = nav.current.getAttribute("id").replace("section_","");
				
				var all = document.body.getElementsByTagName("a"); var suball = Array();
				for (var j=0; j<all.length; j++) {
					var h = all[j].getAttribute("href");
					var ur = all[j].getAttribute("url");
					
					if (!h) h = ur;
					if (h) if (h.indexOf("void(0)") >= 0) h = ur
					if (h) if (h.indexOf("#"+u) >= 0) suball.push(all[j]);
				}
				all = suball;
				
				switch (u) {
					case "press":	YUE.addListener(all,"click",ajaxload.section,u);
							if (c == u) ajaxload.section(null,u);
							break;
							
					case "contact":	YUE.addListener(all,"click",map.init);
							if (c == u) map.init();
							break;
				}
			}
		}
	}
}

var side = {
	def: null,
	
	init: function() {
		var s = document.getElementById("side");
		side.def = s.cloneNode(true);
	},
	
	change: function(sect) {
		var sold = document.getElementById("side");
		if (!sect || !side.def || !sold) return true;
		
		s = null
		var s = YUD.getElementsByClassName("side","div",sect);
		if (s.length > 0) s = s[0]; else s = side.def;
		
		var snew = s.cloneNode(true);
		snew.setAttribute("id","side");
		
		sold.parentNode.replaceChild(snew,sold);
		
		ajaxload.setType(sect);
		nav.resetLinks();
	}
}

var bios = {
	sects: Array(),
	lists: Array(),
	
	init: function() {
		bios.addNav();
		bios.appendFront();
	},
	
	appendFront: function() {
		var s = YUD.getElementsByClassName("section","div");
		if (s.length > 0) {
			s = s[0]; // get the first section, it will be the "About" section
			
			var d = document.createElement("div");
			YUD.addClass(d,"sublists");
			
			for (var i=0; i < bios.sects.length; i++) {
				var l = bios.sects[i].cloneNode(true);
				var a = l.getElementsByTagName("a");
				for (var j=0; j < a.length; j++) {
					var av = a[j].getAttribute("href");
					if (typeof av == "string") {
						av = av.substring(av.indexOf("#")+1);
						nav.setLink(a[j],av);
					}
				}
				
				var h2 = bios.sects[i].getElementsByTagName("h2");
				if (h2.length > 0) {
					var h4 = document.createElement("h4");
					h4.innerHTML = h2[0].innerHTML;
					d.appendChild(h4);
					d.appendChild(l);
				}
			}
			s.appendChild(d);
		}
	},
	
	addNav: function() {
		var p = YUD.getElementsByClassName("people","ul");
		for (var i=0; i< p.length; i++) {
			var sect = p[i].parentNode;
			while (sect != document.body && !YUD.hasClass(sect,"section")) sect = sect.parentNode;
			
			if (sect != document.body) {
				var sn = sect.getAttribute("id").replace("section_","");
				
				var list = document.createElement("ul");
				YUD.addClass(list,"smallnav");
				
				var n = p[i].getElementsByTagName("h4");
				for (var j=0; j < n.length; j++) {
					var li = n[j].parentNode;
					while (li != document.body && li.nodeName.toLowerCase() != "li") li = li.parentNode;

					if (li != document.body) {
						var id = sn +"+"+ n[j].innerHTML.replace(" ","_").toLowerCase();
						
						var at = document.createElement("a");
						YUE.addListener(at,"click",nav.setInternal,id);
						at.setAttribute("href","#"+id);
						
						at.innerHTML = n[j].innerHTML;
						var h5 = li.getElementsByTagName("h5");
						if (h5.length > 0) at.innerHTML += ", " + h5[0].innerHTML;
						
						var al = document.createElement("li");
						al.appendChild(at)
						list.appendChild(al);
						
						var a = document.createElement("a");
						a.setAttribute("name",id);
						
						var ab = document.createElement("a");
						ab.setAttribute("href","#"+sn);
						ab.innerHTML = "Back to Top";
						YUD.addClass(ab,"back");
						YUE.addListener(ab,"click",nav.scrollTop);
						YUE.addListener(ab,"click",nav.setInternal,sn);
						
						var kid = li.childNodes[0];
						li.insertBefore(a,kid);
						li.insertBefore(ab,a);
					}
				}
				
				if (n.length > 2) {
					var par = p[i].parentNode;
					par.insertBefore(list,p[i]);
				}
				
				bios.sects.push(sect);
				// bios.lists.push(list);
			}
		}
	}
}

var map = {
	already: false,
	
	init: function() {
		if (!map.already) setTimeout("map.add();",1500);
	},
	add: function() {
		var gm = YUD.getElementsByClassName("googleMap");
		for (var i=0; i<gm.length; i++) {
			var gmv = gm[i].getAttribute("value");
			
			var s = gm[i].parentNode;
			while (s != document.body && !YUD.hasClass(s,"section")) s = s.parentNode;
			
			if (s != document.body) {
				var ifr = document.createElement("iframe");
				ifr.setAttribute("width","55%");
				ifr.setAttribute("height","300");
				ifr.setAttribute("frameborder","0");
				ifr.setAttribute("scrolling","no");
				ifr.setAttribute("marginheight","0");
				ifr.setAttribute("marginwidth","0");
				ifr.setAttribute("src",gmv);
				YUD.addClass(ifr,"google");
				
				s.appendChild(ifr);
			}
		}
		map.already = true;
	}
}

var ajaxload = {
	// this function will look for any "ajaxload" classed objects in the DOM
	// if they are found they should have two components: 
	// the target URL for the XML to load and the type of loading (side or focus)
	// the load_type will determine the functionality attached to each item
	// a "side load" will load the relevant data into the main focus area
	
	init: function(s) {
		var al = YUD.getElementsByClassName("ajaxload","*",s);
		for (var i=0; i < al.length; i++) {
			if (!YUD.hasClass(al[i],"loaded")) {
				YUD.addClass(al[i],"loaded");
				ajaxload.load(al[i]);
			}
		}
	},
	section: function(e,o) {
		if (!o) return true;
		var s = document.getElementById("section_"+o);
		
		if (!YUD.hasClass(s,"loaded")) { 
			ajaxload.init(s); 
			side.change(s);
			
			var ss = document.getElementById("side");
			if (ss) 	ajaxload.init(ss);
			
			YUD.addClass(s,"loaded"); 
		}
        
        // Change the "nodesc" press releases to be real links.
        setTimeout(ajaxload.fixPress,200);
        setTimeout(ajaxload.fixPress,1200);
	},
	
    fixPress: function() {
        var s = document.getElementById("side");
        if (s) {
            var ul = YUD.getElementsByClassName("items","ul",s);
            if (ul.length > 0) {
                var li = YUD.getElementsByClassName("nodesc","li",ul[0]);
                for (var i=0; i<li.length; i++) {
                    var at = YUD.getElementsByClassName("title","a",li[i]);
                    if (at.length > 0) {
                        at[0].setAttribute("href",at[0].parentNode.getAttribute("url"));
                        at[0].setAttribute("target","_blank");
                        at[0].setAttribute("onclick","");
                        YUE.removeListener(at[0]);
                    }
                }
            }
        }
                
    },
    
	load: function(el) {
		var target = el.getAttribute("load_target");
		if (target) {
			var thisdate = new Date();
			var queryString = encodeURI("?time=" + thisdate.getTime());
			var url = target + queryString;
			
			var args = el;
			var request = YUC.asyncRequest("GET", url, { 
				success: ajaxload.publish, 
				failure: ajaxload.fail, 
				argument: args
			});
		}
	},
	
	publish: function(o) {
		var el = o.argument;
		var status = o.status;
		
		var root = o.responseXML.documentElement;
		var items = root.getElementsByTagName("item");
		
		var t = document.createElement("ul");
		YUD.addClass(t,"items");
		
		for (var i=0; i < items.length; i++) {
			var li = document.createElement("li");
			
			var g = items[i].getElementsByTagName("guid");
			if (g.length > 0) li.setAttribute("guid",g[0].firstChild.nodeValue);
			
			var u = items[i].getElementsByTagName("link");
			if (u.length > 0) li.setAttribute("url",u[0].firstChild.nodeValue);
			
			var d = items[i].getElementsByTagName("pubDate");
			ajaxload.parse(d,"h5","date",li,el);
			
			var ap = items[i].getElementsByTagName("enclosure");
			ajaxload.parse(ap,"img","picture",li,el);
			
			ajaxload.parse(u,"a","link",li,el);
			
			var c2 = document.createElement("div"); YUD.addClass(c2,"column");
			if (u.length > 0) c2.setAttribute("url",u[0].firstChild.nodeValue);
			var a = items[i].getElementsByTagName("author");
			ajaxload.parse(a,"h5","author",c2,el);
			
			var ti = items[i].getElementsByTagName("title");
			ajaxload.parse(ti,"a","title",c2,el);
			li.appendChild(c2);
			
			var b = items[i].getElementsByTagName("description");
			if (b.length > 0) {
                ajaxload.parse(b,"div","body",li,el);
            } else {
                YUD.addClass(li,"nodesc");
            }
			
			ajaxload.parse(u,"a","link",li,el);
			
			if (i == 0) YUD.addClass(li,"first");
			if (items.length-1 == i) YUD.addClass(li,"last");
			
			t.appendChild(li);
		}
		el.parentNode.appendChild(t);
		ajaxload.loadSide(el);
		YUD.addClass(el,"loaded");
		
		ajaxload.mergeMonths(t);
		ajaxload.loadRelease();
	},
	
	fail: function(o) {
		var el = o.argument;
		YUD.addClass(el,"loaded");
		ajaxload.loadSide(el);
	},
	
	parse: function(items,nodeName,nodeClass,parent,sect) {
		if (items.length > 0) {
			var item = "";
			if (items[0].hasChildNodes()) item = items[0].firstChild.nodeValue;
			
			var newNode = document.createElement(nodeName);
			YUD.addClass(newNode,nodeClass);

			switch(nodeClass) {
				case "date":	item = ajaxload.modifyDate(item,sect.getAttribute("load_type")); break;
			}
			switch(nodeName.toLowerCase()) {
				case "img":	var src = items[0].getAttribute("url");
						if (src.substring(0,3) == "../") src = src.substring(3);
						src = src.replace("http://corp.pocketgear.com/","");
						newNode.setAttribute("src",src);
						break;
						
				case "a":	var h = "javascript:void(0);"; var ht = "_self";
						if (parent.getAttribute("url")) { h = parent.getAttribute("url"); ht = "_blank"; }
						newNode.setAttribute("href",h);
						newNode.setAttribute("target",ht);
						
						if (sect.getAttribute("load_type") == "focus" && parent.nodeName.toLowerCase() == "li") {
							YUE.removeListener(parent);
							YUE.addListener(parent,"click",ajaxload.goURL,parent.getAttribute("url"));
							YUE.addListener(parent,"mouseover",ajaxload.toggleHi,parent);
							YUE.addListener(parent,"mouseout",ajaxload.toggleHi,parent);
							YUD.addClass(parent,"link");
						}
						
				default:		newNode.innerHTML = item; break;
			}
			switch(nodeClass) {
				case "title":	newNode.setAttribute("href","javascript:void(0);");
						newNode.setAttribute("target","");
						YUE.removeListener(newNode,"click");
						break;
						
				case "link":	if (item.indexOf(".pdf")) {
							newNode.innerHTML = "";
							var i = document.createElement("img");
							i.setAttribute("src","images/pdf.png");
							i.setAttribute("alt","PDF Download");
							if (parent.getAttribute("url")) newNode.setAttribute("href",parent.getAttribute("url"));
							newNode.appendChild(i);
						}
			}
			
			parent.appendChild(newNode);
		}
	},
	
	goURL: function(e,u) {
		if (u) window.open(u,"_blank");
	},
	toggleHi: function(e,o) {
		if (e.type == "mouseover") {
			YUD.addClass(o,"active");
		} else {
			YUD.removeClass(o,"active");
		}
	},
	
	mergeMonths: function(el) {
		if (YUD.hasClass(el.parentNode,"section")) {
			var li = el.getElementsByTagName("li");
			var prevDate = "";
			for (var i=0; i<li.length; i++) {
				var d = YUD.getElementsByClassName("date","h5",li[i]);
				if (d.length > 0) if (prevDate == d[0].innerHTML) {
					YUD.addClass(li[i],"same");
				} else {
					prevDate = d[0].innerHTML;
				}
			}
		}
	},
	
	modifyDate: function(d,loc) {
		var months = Array("January","February","March","April","May","June","July","August","September","October","November","December");
		var days = Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
		
		var fd = new Date(d);
		var y = fd.getYear(); if (y < 1900) y += 1900;
		switch(loc) {
			case "side":	d = months[fd.getMonth()]+" "+fd.getDate()+", "+y;
					d = "<span>"+days[fd.getDay()]+", </span>" + d;
					break;
			default:		d = months[fd.getMonth()]+" "+y;
					break;
		}
		return d;
	},
	
	loadSide: function(el) {
		var sect = el.parentNode;
		while (!YUD.hasClass(sect,"section") && sect != document.body) sect = sect.parentNode;

		var type = el.getAttribute("load_type");
		switch (type) {
			case "side":	var f = YUD.getElementsByClassName("focus","div",sect);
					if (f.length == 0) {
						f = document.createElement("div");
						YUD.addClass(f,"focus");
						sect.appendChild(f);
					}
					
					side.change(sect);
					break;
		}
		
		var sub = YUD.getElementsByClassName("side","div",sect);
		if (sub.length > 0 && sect == nav.current) side.change(sect);
	},
	loadRelease: function() {
		var c = "";
		if (nav.current) c = nav.current.getAttribute("id").replace("section_","");
		else return true;
		
		if (c == "press") {
			var sect = document.getElementById("section_"+c);
			var n_s = nav.getURL(document.location.href);
			if (n_s[1] != "") {
				var s = document.getElementById("side");
				if (s) {
					var ul = YUD.getElementsByClassName("items","ul",s);
					if (ul.length > 0) {
						var a = ul[0].getElementsByTagName("a");
						for (var i=0; i<a.length; i++) {
							var g = a[i].parentNode.getAttribute("guid");
							
							var li = a[i].parentNode.cloneNode(true);
							var lid = li.previousSibling;
							var arr = Array(li,sect);
							
							if (g == n_s[1]) ajaxload.sideItem(null,arr);
						}
					}
				}
			}
		}
	},
	
	setType: function(sect) {
		var s = document.getElementById("side");
		if (s) {
			var ul = YUD.getElementsByClassName("items","ul",s);
			if (ul.length > 0) {
				var a = ul[0].getElementsByTagName("a");
				for (var i=0; i<a.length; i++) {
					var li = a[i].parentNode.parentNode.cloneNode(true);
					var lid = li.previousSibling;
					var arr = Array(li,sect);
					
					YUE.addListener(a[i],"click",ajaxload.sideItem,arr);
					if (YUD.hasClass(a[i],"title")) {
						a[i].setAttribute("href","javascript:void(0);");
						a[i].setAttribute("target","");
					}
				}
				
				var b = YUD.getElementsByClassName("back","a",sect);
				if (b.length == 0) {
					var back = document.createElement("a");
					back.innerHTML = "[Return to List]";
					back.setAttribute("href","javascript:void(0);");
					YUD.addClass(back,"back");
					sect.insertBefore(back,sect.firstChild);
					YUE.addListener(back,"click",ajaxload.sideItem,arr);
				}
			}
		}
	},
	
	sideItem: function(e,o) {
		var action = "show"; if (YUD.hasClass(this,"back")) action = "hide";
		
		var info = o[0].cloneNode(true); var sect = o[1];

		var f = YUD.getElementsByClassName("focus","div",sect);
		if (f.length > 0) {
			f = f[0];
			while (f.hasChildNodes()) f.removeChild(f.firstChild);
			
			for (var i=0; i<info.childNodes.length; i++) {
				var fn = info.childNodes[i].cloneNode(true);
				f.appendChild(fn);
			}
		}
		
		if (action == "show") 
			YUD.addClass(sect,"item");
		else	YUD.removeClass(sect,"item");
	},
	
	resetFocus: function(e,sect) {
		YUD.removeClass(sect,"item");
	}
}

var toggle = {
    init: function() {
        $(".toggle")
            .click( function() {
            
            if ($(this).hasClass("toggle-set")) {
                $(this).removeClass("toggle-set");
                
                $("#side").find(".toggled").fadeTo(500,0);
                $("#side").find("*").not(".toggled").fadeTo(500,1);
                
                setTimeout("toggle.remove('#side .toggled')", 550);
                
            } else {
                var id = $(this).attr("id").replace("toggle-", "");
                var img = $("<img />").attr("src", "images/" + id).addClass("toggled").appendTo("#side");
                $(img).fadeTo(0,0);
                $(this).addClass("toggle-set");
                
                $("#side").find("*").not(".toggled").fadeTo(500,0);
                $("#side").find(".toggled").fadeTo(1000,1);
            }
        })
        .hover( 
            function() { $(this).addClass("toggle-on"); },
            function() { $(this).removeClass("toggle-on"); });
    },
    
    remove: function(item) {
        $(item).remove();
    }
}

var initialize = {
	init: function() {
		YUE.addListener(window,'load',initialize.onLoad);
	},
	
	onDOM: function() {
        $(".section").addClass("loading");
		side.init();
		nav.init();
		bios.init();
        toggle.init();
	},
	
	onLoad: function() {
		setTimeout("nav.post();",100);
        $(".section").removeClass("loading");
	}
}

// fire off the page
initialize.init();
$(function() { initialize.onDOM(); });

// standalone functions go below here
function alwaysTrue() { return true; }
function alwaysFalse() { return false; }

String.prototype.reverse = function() {
	splitext = this.split("");
	revertext = splitext.reverse();
	reversed = revertext.join("");
	return reversed;
}