/**
 * iDeal theme jQuery helper functions:
 * scroll to top, content toggler, tabbed content, remove empty paragraphs
 *
 *
 * Copyright 2011 Dameer DJ
 */
 
jQuery( document ).ready( function() {
	
	// remove empty paragraphs
	jQuery( 'p' ).each( function() {
		var meself = jQuery( this );
		if( meself.html().replace( /\s|&nbsp;/g, '' ).length == 0 ) meself.remove();
	} );
	
	// scroll to top
	jQuery( '#totop' ).click( function() {
		var bodyelem = '';
		if( jQuery.browser.safari ) bodyelem = jQuery( 'body' ); // only Opera specific
		else bodyelem = jQuery( 'html' );
		jQuery( bodyelem ).animate( { scrollTop: jQuery( '#wrapper' ).offset().top }, 'slow' );
		return false;
	} );
	
	// handle togglers
	jQuery( '[id^=toggler]' ).click( function() {
		var me = jQuery( this );
		var x = me.attr( "id" );
		var who = "#toggle-item-" + x;
		jQuery( who ).slideToggle( 200, 'easeInOutExpo' );
		return false;
	} );
	
	// handle tabber
	if( jQuery( '[id^=tabber]' ).length ) {
		
		jQuery( '[id^=tabber]' ).each( function() {
			var me = jQuery( this );
			var me_id = me.attr( "id" );
			
			// tab labels and stuff
			var tab_labels = [];
			var tab_contents = [];
			var menu_items = [];
			// split content
			var all_content = me.html();
			jQuery( all_content )
				.filter( 'h1' )
				.each( function() {
					menu_items.push( {
						title: jQuery( this ).text(),
						contents: jQuery( this ).nextUntil( 'h1' ).map( function() {
							return '<' + this.nodeName.toLowerCase() + '>' + jQuery( this ).html() + '</' + this.nodeName.toLowerCase() + '>';
						} ).get()
					} );
				} );
				
			// allocate data	
			var pusher = '';
			var obj_len = menu_items.length;
			var iii = 0;
			if( obj_len > 0 ) {
				while( iii < obj_len ) {
					var m_o = menu_items[ iii ];
					for( var o in m_o ) {
						pusher += ( o + ": " + m_o[ o ] );
						if( o == 'title' ) tab_labels.push( m_o[ o ] );
						else if( o == 'contents' ) tab_contents.push( m_o[ o ] );
					}
					iii ++;
				}
				
				// tabs - buttons
				iii = 0;
				var a_class = '';
				var output_tabs = '<ul class="tabbertabs">';
				var tl_len = tab_labels.length;
				while( iii < tl_len ) {
					if( iii == 0 ) a_class = ' tabactive';
					else a_class = '';
					output_tabs += '<li class="tabbertab"><a href="javascript:;" class="tablink' + a_class + '" rel="' + me_id + '_' + iii + '">' + tab_labels[ iii ] + '</a></li>';
					iii ++;
				}
				output_tabs += '</ul>';
				
				// replace tab content
				iii = 0;
				var output_divs = '';
				var tc_len = tab_contents.length;
				while( iii < tc_len ) {
					var ob_to_str = tab_contents[ iii ].toString().split( '>,<' ).join( '><' );
					if( iii > 0 ) output_divs += '<div style="display: none;" class="tabberdiv" id="' + me_id + '_' + iii + '">' + ob_to_str + '</div>';
					else output_divs += '<div class="tabberdiv" id="' + me_id + '_' + iii + '">' + ob_to_str + '</div>';
					iii ++;
				}
				
				me.html( '' );
				me.append( output_tabs + output_divs );
				
				// make me visible (hidden by default in CSS)
				me.css( 'display', 'block' );
				
				// tab switching
				jQuery( '.tabbertab a' ).click( function() {
					if( !jQuery( this ).is( '.tabactive' ) ) switch_tabs( jQuery( this ) );
				} );
				
			}
			
		} );
	}	
	
} );

// handle tabbed content switching
function switch_tabs( obj ) {
	jQuery( '.tabberdiv' ).slideUp( { duration: 250, easing: 'easeInOutCubic' } );
	jQuery( '#' + obj.attr( 'rel' ) ).slideDown( { duration: 250, easing: 'easeInOutCubic' } );
	jQuery( '.tabbertab a' ).removeClass( 'tabactive' );
	obj.addClass( 'tabactive' );
}
