/*  Juice Library styler.juice.js, version 0.1.2.20080615
 *  Copyright (c) 2007, 2008 Stephen Whiteley (http://jui.ce.it)
 *
 *  See core.juice.js for full license.
 *
/*--------------------------------------------------------------------------*/

(function() {

	if ( typeof Juice == 'undefined' ) {
		throw new Error( 'styler.juice.js requires the core.juice.js component.' );
	}

	Juice.Styler = new function() {

		var selects, constructor = this;

		this.setup = function() {

			var nodes = Juice.Element.byClassName( 'juiceStyler' );

			for ( var i = 0; i < nodes.length; i++ ) {
				var node = nodes[i];
				if ( Juice.Element.hasClassName( node, 'juiceStyler' ) ) {
					switch ( node.nodeName ) {
						case 'A':
						case 'BUTTON':
							constructor.button.style( constructor.button.style( node ) );
						break;
						case 'INPUT':
							switch ( node.type.toLowerCase() ) {
								case 'button':
								case 'submit':
									constructor.button.style( constructor.button.style( node ) );
								break;
							}
						break;
					}
				}
			}

		};

		this.button = new function() {

			var myself = this;

			this.create = function( value ) {

				return myself.style( Juice.Element.create( 'button', value, null, 'juiceStyler' ) );

			};

			this.style = function( b ) {

				var down = function() {
					Juice.Element.addClassName( b, 'active' );
					Juice.Event.add( document, 'mouseup', up );
				};

				var up = function() {
					Juice.Element.removeClassName( b, 'active' );
					Juice.Event.remove( document, 'mouseup', up );
				};

				Juice.Event.add( b, 'mousedown', down );

				return b;

			};

		};

		this.setup();

	}

	Juice.Event.add( window, 'load', Juice.Styler.setup );

})();