var expanders = []
var cOpts = { expires: 100, path: '/' }
$(function(){
	$expanders = $('a.expander')
	if ($expanders[0])
		$('a.expander').each(function () {
			expanders.push( new Expander(this) )
		})
})

function Expander (element) {
	expander = this
	expander.caller = element
	var expandable = $('div[rel="'+expander.caller.getAttribute('rel')+'"].expandable')[0]
	var ck = $.cookie(
			'expander.'
			+expander.caller.getAttribute('rel')
			+( ( expander.caller.getAttribute('rev') ) ? '.' + expander.caller.getAttribute('rev') : '' )
	)
	expander.expanded =
		( ck == 'expanded' || ( ck == null && !expander.caller.getAttribute('open')) )
			? 'expanded' : false

	if (expander.expanded)
		$(expandable).add(expander.caller).addClass('expanded')
	else
		$(expandable).add(expander.caller).removeClass('expanded')

	expander.caller.onclick = function () {
		expander.expandable = $('div[rel="'+this.getAttribute('rel')+'"].expandable')[0]
		var t = this
		if (/\bexpanded\b/.test(this.className)) {
			$(expander.expandable).css({ display: 'none' }).add(t).removeClass('expanded')
			$(expander.expandable).show( 180, function () {
				$.cookie(
					'expander.'
					+t.getAttribute('rel')
					+( ( t.getAttribute('rev') ) ? '.' + t.getAttribute('rev') : '' ),
					false, cOpts
				)
				with (expander.expandable) {
					if (getElementsByTagName('input').length > 0)
						getElementsByTagName('input')[0].focus()
					else if (getElementsByTagName('select').length > 0)
						getElementsByTagName('select')[0].focus()
					else if (getElementsByTagName('textarea').length > 0)
						getElementsByTagName('textarea')[0].focus()
				}
			} )
		} else {
			$(expander.expandable).hide( 180, function () {
				$(t).add(expander.expandable).addClass('expanded')
				$.cookie(
					'expander.'
					+t.getAttribute('rel')
					+( ( t.getAttribute('rev') ) ? '.' + t.getAttribute('rev') : '' ),
					'expanded', cOpts
				)
			} )
		}
		return false
	}
}