var slideMenu=function(){
	var sp,st,t,m,sa,l,w,sw,ot;
	return{
		build:function(sm,sw,mt,s,sl,h){
			sp=s; st=sw; t=mt;
			m=document.getElementById(sm);
			sa=m.getElementsByTagName('li');
			l=sa.length; w=m.offsetWidth; sw=w/l;
			ot=Math.floor((w-st)/(l-1)); var i=0;
			for(i;i<l;i++){s=sa[i]; s.style.width=sw+'px'; this.timer(s)}
			if(sl!=null){m.timer=setInterval(function(){slideMenu.slide(sa[sl-1])},t)}
		},
		timer:function(s){s.onmouseover=function(){clearInterval(m.timer);m.timer=setInterval(function(){slideMenu.slide(s)},t)}},
		slide:function(s){
			var cw=parseInt(s.style.width,'10');
			if(cw<st){
				var owt=0; var i=0;
				for(i;i<l;i++){
					if(sa[i]!=s){
						var o,ow; var oi=0; o=sa[i]; ow=parseInt(o.style.width,'10');
						if(ow>ot){oi=Math.floor((ow-ot)/sp); oi=(oi>0)?oi:1; o.style.width=(ow-oi)+'px'}
						owt=owt+(ow-oi)}}
				s.style.width=(w-owt)+'px';
			}else{clearInterval(m.timer)}
		},
		//Edit - Matt Barrett
		//11/28/09
		//www.designhappens.com
		//Function added to allow any link to open a specific panel of slidemenu.js
		// i: numeric - controls which panel to open. First panel is 1, second is 2 and so on.
		
		manual:function(i){
		
		//commented variables below are using variables set by build function instead.
		//if uncommented, variable 'sm' must be defined in function.
		//using a different 'sm' variable can control other panels in different areas, but still use the same core code
		
		//m=document.getElementById(sm);
		//sa=m.getElementsByTagName('li');
		
		//define which li element to move in the sa array
		s=sa[i-1];
		
		// perform slide
		clearInterval(m.timer);m.timer=setInterval(function(){slideMenu.slide(s)},t)
		}
		//end Edit
		
	};
}();