function Tabs( tabElements )	{
	// THIS IS THE BUTTON
	function Button( element )	{
		
		// ATTRIBUTE ID
		element.buttonId = buttons.length;
		// ATTRIBUTE CLASS
		element._className = element.className;
		// ATTRIBUTE CONTENT
		element.content = new Content( document.getElementById( element.href.split( '#' )[1] ) );
		
		// METHOD FOR SELECTION
		element.selected = function()	{
			element.className = element._className + ' selected';
			element.content.show();
		}
		// METHOD FOR DESELECTION
		element.deselected = function()	{
			element.className = element._className;
			element.content.hide();
		}
		
		element.onclick = function() { return false; }
		if( element.addEventListener )	{
			element.addEventListener( 'click', function() { selectTab( element ); }, null );
			if( element.href.split( '#' )[1] == 'tabreviews' )	{
				document.getElementById( 'writerev' ).addEventListener( 'click', function() { selectTab( element ); }, null );
				document.getElementById( 'readrev' ).addEventListener( 'click', function() { selectTab( element ); }, null );
			}
		}
		else if( element.attachEvent )	{
			element.attachEvent( 'onclick', function() { selectTab( element ); } );
		}
		
		return element;
		
	}
	// THIS IS THE CONTENT
	function Content( element )	{
		
		// SAVE HEIGHT VALUES
		var display = ( element.attachEvent ) ? element.currentStyle['display'] : window.getComputedStyle( element, true ).getPropertyValue( 'display' );
		element.style.display = 'block';
		var height = element.offsetHeight;
		element.style.display = display;
		
		// ANIMATION VARS
		var interval = null;
		var index = 10;
		var intervalHeight = height / 10;
		
		// ANIMATION PROPERTIES
		element.style.overflow = 'hidden';
		
		// METHOD SHOW, SHOWS THE CONTENT
		element.show = function()	{
			if( index >= 10 ) return false
			clearInterval( interval );
			function slide()	{
				index++;
				if( index >= 10 )	{
					element.style.height = height;
					element.style.opacity = 1;
					element.style.filter = 'none';
					clearInterval( interval );
				}
				else	{
					element.style.height = intervalHeight * index;
					element.style.opacity = index / 10;
					element.style.filter = 'alpha(opacity=' + ( index * 10 ) + ')';
				}
			}
			element.style.display = 'block';
			interval = setInterval( slide, 20 );
		}
		// METHOD HIDE
		element.hide = function()	{
			if( index <= 0 ) return false
			clearInterval( interval );
			function slide()	{
				index--;
				if( index <= 0 )	{
					element.style.height = '1px';
					element.style.opacity = 0;
					element.style.filter = 'alpha(opacity=0)';
					element.style.display = 'none';
					clearInterval( interval );
				}
				else	{
					element.style.height = intervalHeight * index;
					element.style.opacity = index / 10;
					element.style.filter = 'alpha(opacity=' + ( index * 10 ) + ')';
				}
			}
			interval = setInterval( slide, 20 );
		}
		
		return element;
		
	}
	
	// TAB METHOD TO HIDE ALL AND SHOW JUST THE SELECTED
	function selectTab( element )	{
		element.selected();
		for( i in buttons )	{
			if( buttons[i].buttonId != element.buttonId )	{
				buttons[i].deselected();
			}
		}
	}
	
	// WE WILL SAVE THE BUTTONS HERE IN ORDER TO HIDE ONES AND SHOW OTHERS LATER
	var buttons = [];
	// FOR EACH TAB ELEMENT CREATE A BUTTON AND A CONTENT
	for( i in tabElements )	{
		buttons.push( new Button( tabElements[i] ) );
	}
	selectTab( buttons[0] );
	
}
function $Tabs( elementClass )	{
	function matchClass( c, m )	{
		var r = new RegExp( "" + m + "" );
		return r.test( c );
	}
	var elements = document.getElementsByTagName( '*' );
	var tabElements = [];
	for( var i = 0; i < elements.length; i++ )	{ 
		if( matchClass( elements[i].className, elementClass ) && elements[i].tagName == 'A' )	{
			tabElements.push( elements[i] );
		}
	}
	if( window.addEventListener )	{
		window.addEventListener( 'load', function() { Tabs( tabElements ) }, null );
	}
	else if( window.attachEvent )	{
		window.attachEvent( 'onload', function() { Tabs( tabElements ) } );
	}
}