window.addEvent('domready', function() {
	
	//target each block and fire function to build navigation
	//get all h2.open, note that all are open on first load
	var close = $$('h2.open');
	
	var limitCookie=5;
	var navctr = 1;
	var samePage = checkURL(window.location.href);
	close.each(function(element) 
	{	
		var divtags = element.parentNode.getElementsByTagName("div");
		var slidetag = divtags[0];								

		if(detect())
		{
			if(!(Cookie.get("widget_limit_"+navctr)) || !samePage)
			{
				Cookie.set("widget_limit_"+navctr,limitCookie);
			}
			else
			{
				limitCookie = Cookie.get("widget_limit_"+navctr);
			}
			if(!(Cookie.get("widget_expand_"+navctr)) || !samePage)
			{

				if(slidetag.className != "first")
					Cookie.set('widget_expand_'+navctr,0);		
				else
					Cookie.set('widget_expand_'+navctr,1);
			}

			if(!(Cookie.get("widget_page_"+navctr)) || !samePage)
			{
				Cookie.set('widget_page_'+navctr, 1);
			}
		}
	
		
		var testelement = element.getParent();
		testelement.addClass("widget_"+navctr);
		buildNavigation(element, limitCookie);
		navctr++;
	});
	
	//function is fired for each block
	function buildNavigation (element, limit)
	{

		//START SLIDE EFFECT //	
		var divs = element.parentNode.getElementsByTagName("div");
		var Slide = divs[0];
		var temp = "";
		var collapseDiv = new Fx.Slide(Slide);
		if(detect())
		{
			if(Cookie.get("widget_expand_"+navctr)==0)
			{
				collapseDiv.hide();
				element.className="closed";
			}				
		}
		else
		{
			if(Slide.className != "first")
			{
				collapseDiv.hide();
				element.className="closed";
			}
		}
		element.addEvent('click', function() 
		{
			collapseDiv.toggle(); 
			var widgetnum = getWidgetOrder(element.parentNode);
			if(detect())
			{
				if((Cookie.get("widget_expand_"+widgetnum)) == 1)
					Cookie.set("widget_expand_"+widgetnum, 0);
				else
					Cookie.set("widget_expand_"+widgetnum, 1);
			}

			temp = Slide.parentNode.offsetHeight;
			Slide.parentNode.style.overflow = "hidden";
			if(temp != "")
			{
				Slide.parentNode.style.height = temp + "px";
			}
			element.addClass('waiting');
		});
		collapseDiv.addEvent('onComplete', function()
		{
			element.removeClass('waiting');
			if(element.className == "open")
			{
				element.className = "closed";
			}
			else
			{
				element.className = "open";
				Slide.parentNode.style.overflow = "visible";
				Slide.parentNode.style.height = "auto";
			}
		});
		//END SLIDE EFFECT //	
		
		//START PAGINATION //
		var pagination = $ES('div.pagination', Slide); /* div containing pagination */
		pagination.each(function(e) {
			var current_num_pages = $ES('ul.page li',Slide).length;
			if(current_num_pages >= 10 && current_num_pages < 50)
			{
				e.innerHTML = '<ol class="limit"><li class="show">Show:</li><li><a href="#" class="select">5</a></li><li><a href="#" class="select">10</a></li><li style="visibility: hidden"><a href="#" class="select">50</a></li><li><a href="#" class="select">Show All</a></li></ol><ol><li><a href="#" class="previous closed">&laquo; prev</a></li></ol><ol class="pages"></ol><ol><li><a href="#" class="next open">next &raquo;</a></li></ol>';
			}
			else if(current_num_pages >= 5 && current_num_pages < 10)
			{
				e.innerHTML = '<ol class="limit"><li class="show">Show:</li><li><a href="#" class="select">5</a></li><li style="visibility: hidden"><a href="#" class="select">10</a></li><li style="visibility: hidden"><a href="#" class="select">50</a></li><li><a href="#" class="select">Show All</a></li></ol><ol><li><a href="#" class="previous closed">&laquo; prev</a></li></ol><ol class="pages"></ol><ol><li><a href="#" class="next open">next &raquo;</a></li></ol>';
			}
			else
			{
				e.innerHTML = '<ol class="limit"><li class="show">Show:</li><li><a href="#" class="select">5</a></li><li><a href="#" class="select">10</a></li><li><a href="#" class="select">50</a></li><li><a href="#" class="select">Show All</a></li></ol><ol><li><a href="#" class="previous closed">&laquo; prev</a></li></ol><ol class="pages"></ol><ol><li><a href="#" class="next open">next &raquo;</a></li></ol>';
			}
		});
		var container = $ES('ul.page',Slide);	
		var previous = $ES('ol li a.previous',Slide);	/* previous link */
		var next = $ES('ol li a.next',Slide);	/* next link */	
		var briefs = new Array (); /* list items */	
		var limitSelect = $ES('ol.limit li a.select',Slide);
	
		var active = new Array ();
		var pageItems = new Array ();
		var temp = 0;
		var cond = 0;
		var pages = $ES('ol.pages',Slide); pages = pages[0]; /* page list */
		var numPages = Math.round(briefs.length/limit); /* number of pages */
		
		limitSelect.each(function(this_lim) 
		{	
			if(this_lim.innerHTML == limit)
			{
				this_lim.addClass("active");
			}
		});
		PAGINATE();

		// BEGIN FUNCTION
		function PAGINATE()
		{
			briefs = $ES('ul.page li',Slide);
			remainder = briefs.length % limit;
			var extra_page = 0;
			remainder > 0 ? extra_page = 1 : '';
			numPages = Math.floor(briefs.length/limit) + extra_page;
			if (limit == 5 && numPages <= 1)
			{
				pagination[0].style.display = "none";
			}
			if (numPages <= 1)
			{
		 		pagination[0].firstChild.nextSibling.style.display = "none";
		 		pagination[0].firstChild.nextSibling.nextSibling.style.display = "none";
		 		pagination[0].firstChild.nextSibling.nextSibling.nextSibling.style.display = "none";
		 	}
			else
			{
		 		pagination[0].firstChild.nextSibling.style.display = "inline";
		 		pagination[0].firstChild.nextSibling.nextSibling.style.display = "inline";
		 		pagination[0].firstChild.nextSibling.nextSibling.nextSibling.style.display = "inline";
			}

			//COUNT LIST ITEMS
			var widgetOrder = getWidgetOrder(pages.parentNode.parentNode.parentNode.parentNode);
			if((Cookie.get("widget_page_"+widgetOrder))>numPages)
			{
				Cookie.set("widget_page_"+widgetOrder, 1);
			}

			var activePage = 1;
			if(detect())
				activePage = Cookie.get("widget_page_"+widgetOrder);
			var lowerLimit = (activePage - 1)*limit;
			var upperLimit = activePage * limit;
			for(i=0;i<briefs.length;i++)
			{
				if(i>=lowerLimit && i<upperLimit)
				{
					briefs[i].style.display = "block";
				}
				else
				{
					briefs[i].style.display = "none";
				}
			}
			
			//COUNT PAGES AND CREATE LIST
			pages.innerHTML = ""; 
			for(j=1;j<=numPages;j++)
			{					
				if (j == activePage)
				{
					pages.innerHTML += ('<li><a href="#" class="active">' + j + '</a></li>');
				} 
				else
				{
					pages.innerHTML +=  ('<li><a href="#">' + j + '</a></li>');
				}
			}
			//NAVIGATE USING PAGE NUMBERS
			pageItems.length = 0;
			pageItems = $ES('ol.pages li a',Slide);
			active = pageItems[0];
	
			pageItems.each(function(element2) 
			{
				if(element2.innerHTML > 4)
				{ 
					element2.style.display = "none"; 
				}
				element2.addEvent('click', function(event) 
				{
					if(element2.className != "active")
					{
						var current = element2.innerHTML;
						for(k=0;k<pageItems.length;k++)
						{
							pageItems[k].className="";
						}
						for(l=0;l<briefs.length;l++)
						{
							briefs[l].style.display="none"; 
						}
						for(l=0;l<briefs.length;l++)
						{
							if(l ==((current * limit) - limit))
							{ 
								for(f=0;f<limit;f++)
								{
									var temp = ((current * limit) - limit) + f;
									if(temp<briefs.length)
									{
										briefs[temp].style.display="block"; 
									} 
								}
							} 		
						}
						element2.className = "active";
						active = element2;
						if(active.innerHTML == 1)
						{ 
							previous.removeClass("open"); previous.addClass("closed"); next.removeClass("closed"); next.addClass("open");
						}
						else if(active.innerHTML == (pageItems.length))
						{
							next.removeClass("open"); next.addClass("closed"); previous.removeClass("closed"); previous.addClass("open"); 
						}
						else
						{ 
							previous.removeClass("closed"); next.removeClass("closed"); previous.addClass("open"); next.addClass("open");
						}
					}
					if(detect())
						Cookie.set("widget_page_"+widgetOrder,element2.innerHTML);
					new Event(event).preventDefault().stopPropagation();
					new Event(event).stop();
					return false;
				});
			});
		}
		
		//NAVIGATE USING PREVIOUS BUTTON
		previous.addEvent('click', function(event)
		{
			if(active.innerHTML > 1)
			{
				next.removeClass("closed"); next.addClass("open");
		
				for(k=0;k<pageItems.length;k++)
				{
					if(pageItems[k].innerHTML == (active.innerHTML - 1))
					{
						if(pageItems[k].style.display != "none") 
						{
							pageItems[k].className="active";
							active = pageItems[k];
						}
						else
						{
							pageItems[k].style.display="inline";
							if(pageItems.length>4)
							{
								pageItems[k+4].style.display="none";
							}
							pageItems[k].className="active";
							active = pageItems[k];
						}
					}
					else 
					{
						pageItems[k].className="";
					}
				}
				var current = active.innerHTML;
				for(l=0;l<briefs.length;l++)
				{
					briefs[l].style.display="none"; 
				}
				for(l=0;l<briefs.length;l++)
				{
					if(l ==((current * limit) - limit))
					{ 
						for(f=0;f<limit;f++) 
						{
							var temp = ((current * limit) - limit) + f;
							if(temp<briefs.length)
							{
								briefs[temp].style.display="block";
							}
						}
					} 		
				}
			}
			if(active.innerHTML == 1)
			{ 
				this.removeClass("open"); this.addClass("closed"); 
			}
			new Event(event).preventDefault().stopPropagation();
			new Event(event).stop();
			return false;
		});	
	
		//NAVIGATE USING NEXT BUTTON
		next.addEvent('click', function(event) 
		{
			if(active.innerHTML < pageItems.length)
			{
				previous.removeClass("closed"); previous.addClass("open");
				cond = active.innerHTML;
				cond = eval(cond) + 1;
				for(k=0;k<pageItems.length;k++)
				{
					if(pageItems[k].innerHTML == cond)
					{
						if(pageItems[k].style.display != "none") 
						{
						pageItems[k].className="active";
						active = pageItems[k];
						}
						else
						{
							pageItems[k].style.display="inline";
							if(k>=4){
							pageItems[k-4].style.display="none";
							}
							pageItems[k].className="active";
							active = pageItems[k];
						}
					}
					else 
					{
						pageItems[k].className="";
					}
				}
				var current = active.innerHTML;
				for(l=0;l<briefs.length;l++)
				{
					briefs[l].style.display="none"; 
				}
				for(l=0;l<briefs.length;l++)
				{
					if(l ==((current * limit) - limit))
					{ 
						for(f=0;f<limit;f++)
						{
							var temp = ((current * limit) - limit) + f;
							if(temp<briefs.length) 
							{
								briefs[temp].style.display="block"; 
							}
						}
					} 		
				}
			}
			if(active.innerHTML == (pageItems.length))
			{ 
				this.removeClass("open"); this.addClass("closed"); 
			}
			new Event(event).preventDefault().stopPropagation();
			new Event(event).stop();
			return false;
		});	
	
		//ADJUST THE DEFAULT NUMBER VISIBLE	
		limitSelect.each(function(e) 
		{
			e.addEvent('click', function(event)
			{
				var order = getWidgetOrder(e.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);
				if(detect())
				{
					if(e.innerHTML == "Show All")
						Cookie.set("widget_limit_"+order, briefs.length);
					else
						Cookie.set("widget_limit_"+order, e.innerHTML);
				}
					
				next.removeClass("closed");
				previous.removeClass("open");
				previous.addClass("closed");
				next.addClass("open");
				swapLength (e.innerHTML);
				new Event(event).preventDefault().stopPropagation();
				new Event(event).stop();
				return false;
			});
		});
	
		//SELECT NUMBER OF LIST ITEMS
		function swapLength (new_limit)
		{
			for(i=0;i<limitSelect.length;i++)
			{ 
				limitSelect[i].removeClass("active");
			}
			for(j=0;j<limitSelect.length;j++)
			{ 
				limitSelect[j].innerHTML == new_limit ? limitSelect[j].addClass("active") : '';
			}
			if(new_limit == 'Show All')
			{
				limit = briefs.length;
			}
			else
			{
				limit = new_limit;
			}
			active = "";
			cond = 0;
			PAGINATE();
		}
	
	//END PAGINATION
	}
	
	//function is fired for each block
	function getWidgetOrder(element)
	{
		var clsName = element.className;
		var widget = "widget_";
		var pos = clsName.indexOf(widget);
		if(pos == -1)
			return -1;
		else
		{
			pos = pos + widget.length;
			//return clsName.charAt(pos);
			return clsName.substr(pos, clsName.length-pos);
		}
	}
	
	function detect()
	{
	    if(navigator.cookieEnabled)
	    {
		return true;
	    }
	    else
	    {
	       return false;
	    }
        }
        
        function checkURL(currentURL)
        {
		if(!(Cookie.get("widget_url")))
		{
			// First visit to site
			Cookie.set("widget_url",currentURL);
			return 0;
		}
		else if(Cookie.get("widget_url") != currentURL)
		{
			// switched pages on site
			// set all current cookies to default
			Cookie.set("widget_url",currentURL);
			return 0;
		}
		else
		{
			// same page
			return 1;
		}
        }
        

        

        

	
	
});



