$(function()
{
	var sitemap, gutters, a, gutter, closed, className, ret;
	// gutters are open by default
	
	$('.gutterbutton').click(function(e)
	{
		if (window.ItemMan && ItemMan.isEditing()) return;
		toggleGutter(this.parentNode);
	});
	
	sitemapButtons = $('#opensitemap, #closesitemap');
	sitemapButtons.click(function(e)
	{
		if (window.ItemMan && ItemMan.isEditing()) return;
		toggleGutter($('#sitemapgutter').get(0));
	});
	
	
	sitemap = $('#sitemapgutter').get(0);
	sitemap._closed = true;
	classAppend(sitemap, 'gutterClosed');
	$(sitemap).width(1);
	if (readCookie("gutter_sitemapgutter") === null)
	{
		createCookie("gutter_sitemapgutter", "1", 1);
	}
	
	
	gutters = $('.gutter');
	for (a = 0; a < gutters.length; a++)
	{
		gutter = gutters.get(a);
		
		className = ' ' + gutter.className + ' ';
		ret = /\s+gutterSize(\d+)\s+/.exec(className);
		gutter._size = ret ? ret[1] : '200';
		ret = /\s+gutterMinSize(\d+)\s+/.exec(className);
		gutter._minSize = ret ? ret[1] : '1';
		
		gutter.style.overflow = "hidden"; // needed for jquery
		
		if (gutter.getAttribute('id'))
		{
			closed = readCookie("gutter_" + gutter.getAttribute('id')) == "1";
			
			gutter.style.width = (closed ? gutter._minSize : gutter._size) + "px";
			//$(gutter).width(closed ? gutter._minSize : gutter._size);
			if (closed != gutter._closed)
			{
				if (closed)
					classAppend(gutter, 'gutterClosed');
				
				gutter._closed = closed;
			}
		}
	}
	
	
	function toggleGutter(gutter)
	{
		var id;
		id = gutter.getAttribute('id');
		if (gutter._closed)
		{
			gutter._closed = false;
			if (id)
				createCookie("gutter_" + id, "0", 1);
			
			$(gutter).removeClass('gutterClosed');
			
			if (gutter._verticalGutter)
			{
				$(gutter).animate({
					height: gutter._size + "px"
				}, 500, "swing");
			}
			else
			{
				$(gutter).animate({
					width: gutter._size + "px"
				}, 500, "swing");
			}
		}
		else
		{
			gutter._closed = true;
			if (id)
				createCookie("gutter_" + id, "1", 1);
			
			$(gutter).addClass('gutterClosed');
			if (gutter._verticalGutter)
			{
				$(gutter).animate({
					height: gutter._minSize + "px"
				}, 500, "swing");
			}
			else
			{
				$(gutter).animate({
					width: gutter._minSize + "px"
				}, 500, "swing");
			}
			
		}
	}
	
	
	
	// http://www.quirksmode.org/js/cookies.html
	function createCookie(name,value,days) 
	{
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
	
	function readCookie(name, def) 
	{
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		if (!def)
			def = null;
		
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return def;
	}
	
	function eraseCookie(name) 
	{
		createCookie(name,"",-1);
	}

});
