var SortableSidebar = new Class( {
	initialize: function() {
		this.makeSortable();
	},
	
	makeSortable: function() {
		/* make sidebar sortable */
		var sortables = new Sortables( '#sidebar-col-1, #sidebar-col-2', {
			clone:		true,
			handle:		'.widget-title',
			opacity:	0.8,
			revert:		{
				duration:	512,
				transition:	'circ:out'
			}
		} );
		$$('#sidebar-col-1 .widget-title').each(function(el) {
			el.setStyle('cursor', 'move');
		});
		$$('#sidebar-col-2 .widget-title').each(function(el) {
			el.setStyle('cursor', 'move');
		});
	}
} );
var ToggableSidebar = new Class( {
	initialize: function( sidebar ) {
		this.sidebar	= sidebar;
		this.cookie		= new Hash.Cookie( this.sidebar, {
			duration: 3600
		} );
		this.slide		= new Array();
		this.toggle		= new Array();
		
		this.makeToggable();
		this.initializeCookie();
	},
	
	doToggle: function( e, i ) {
		e = new Event( e ).stop();
		this.setToggle( i );
	},
	
	initializeCookie: function() {
		if ( this.cookie.get( 'toggle' ) ) {
			this.loadCookie();
			return;
		}
		var theToggle	= new Array();
		$( this.sidebar ).getChildren().each( function( element, i ) {
			theToggle[ i ] = {
				'state': 'open'
			};
		} );
		var settings = {
			'toggle':	theToggle
		}
		this.cookie.extend( settings );
	},
	
	loadCookie: function() {
		var toggle = this.cookie.get( 'toggle' );
		for ( i = 0; i < toggle.length; i++ ) {
			if ( !$( this.sidebar + '-toggle-' + i ) ) {
				continue;
			}
			if ( toggle[ i ].state == 'close' ) {
				this.slide[ i ].toggle();
				$( this.sidebar + '-toggle-' + i ).addClass( 'toggle-closed' );
			}
		}
	},
	
	makeToggable: function() {
		$( this.sidebar ).getChildren().each( function( element, i ) {
			var content	= element.getElement( 'div.widget-content' );
			
			this.slide[ i ]				= new Fx.Slide( content );
			this.toggle[ i ]			= new Element( 'div' );
			this.toggle[ i ].id			= this.sidebar + '-toggle-' + i;
			this.toggle[ i ].title		= 'Clique aqui para expandir / contrair';
			this.toggle[ i ].innerHTML	= '<!-- spacer -->';
			this.toggle[ i ].addClass( 'toggle' );
			this.toggle[ i ].addEvent( 'click', this.doToggle.bindWithEvent( this, i ) );
			
			var toggleWrap				= new Element( 'div' );
			toggleWrap.id				= this.sidebar + '-toggle-wrap-' + i;
			toggleWrap.addClass('toggle-wrap');
			toggleWrap.adopt(this.toggle[ i ]);
			
			var title_wrap = element.getElement( 'div.widget-title' );
			title_wrap.adopt(toggleWrap);
			toggleWrap.injectAfter( element.getElement( 'div.widget-title-top' ) );
		}, this );
	},
	
	setToggle: function( i ) {
		var setProp = function() {
			if ( this.toggle[ i ].hasClass( 'toggle-closed' ) ) {
				this.toggle[ i ].removeClass( 'toggle-closed' );
				this.setCookie( i, 'open' );
			} else {
				this.toggle[ i ].addClass( 'toggle-closed' );
				this.setCookie( i, 'close' );
			}
		};
		this.slide[ i ].toggle().chain( setProp.bind( this ) );
	},
	
	setCookie: function( i, theState ) {
		var theToggle			= this.cookie.get( 'toggle' );
		theToggle[ i ]			= {
			'state': theState
		};
		var settings			= {
			'toggle': theToggle
		};
		this.cookie.extend( settings );
		var toggle = this.cookie.get( 'toggle' );
	}
} );

window.addEvent( 'domready', function() {
	//new DynamicSearchForm( $( 'header-bar' ).getElement('.search-form') );
	new SortableSidebar();
	new ToggableSidebar( 'sidebar-col-1' );
	new ToggableSidebar( 'sidebar-col-2' );
	
	resizeIFrame();
} );

window.addEvent( 'load', resizeIFrame );

function resizeIFrame() {
	window.parent.resizeIframe( document.body.offsetHeight + 20 );
	//window.parent.resizeCaller();
	
	var loc = new String( window.location.href );
	var ai = loc.indexOf( '#' );
	if ( ai >= 0 ) {
		var anchor = new String( loc.substring( ai + 1, loc.length ) );
		if ( anchor.length > 0 ) {
			$( anchor ).scrollIntoView( true );
		}
	}
}
