<!doctype html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>jQuery UI Effects Test Suite</title>
	<link rel="stylesheet" href="effects.all.css" type="text/css">
	<script src="../../../jquery-1.7.1.js"></script>
	<script src="../../../ui/jquery.effects.core.js"></script>
	<script src="../../../ui/jquery.effects.scale.js"></script>
	<script src="effects.all.js"></script>
	<script type="text/javascript" charset="utf-8">
	jQuery(function( $ ) {
		var test = $( "#testBox" ),
			opts = $( ".arg" ),
			optsRev = $( opts.get().reverse() ),
			doer = $( "#doAnim" ),
			current = $( "#current" ),
			cleanStyle = test[0].style,
			total = 1;

		opts.each(function() {
			total *= this.options.length;
		});

		opts.change( doAnim );
		doer.click( doAnim );
		$( "#cyclePrev" ).click(function() {
			cycle( -1 );
		});
		$( "#cycleNext" ).click(function() {
			cycle( 1 );
		});

		function cycle( direction ) {
			optsRev.each(function() {
				var cur = this.selectedIndex,
					next = cur + direction,
					len = this.options.length;
				
				this.selectedIndex = ( next + len ) % len;
				
				if ( ( next+len ) % len === next ) return false;
			});
			doAnim();
		}


		function doAnim() {
			var cur = 0;
			opts.each(function() {
				cur *= this.options.length
				cur += this.selectedIndex;
			});
			cur++;
			current.text( "Configuration: " + cur + " of " + total );
			run.apply(test, opts.map(function() {
				return $(this).val();
			}).get());
		}

		function run( position, v, h, vo, ho ) {
			var el = this,
				style = el[0].style,
				effect = {
					effect: "scale",
					mode: "effect",
					percent: 200,
					origin: [ vo, ho ],
					duration: 500
				};
			el.stop(true, true);
			if ( typeof style === "object" ) {
				style.cssText = "";
			} else {
				el[0].style = "";
			}
			el.css( "position", position )
				.css( h, 5 )
				.css( v, 5 )
				.delay( 100 )
				.effect( effect );
		}
	});
	</script>
	<style type="text/css">
	#testArea {
/*		border: 5px dashed #777;*/
		width: 200px;
		height: 200px;
		position: relative;
	}
	#testBox {
		width: 50px;
		height: 50px;
		background-color: #bada55;
		color: black;
		border: 10px solid #fff;
		margin: 10px;
		padding: 10px;
	}
	label {
		display: block;
	}
	#controls {
		position: absolute;
		z-index: 300;
		left: 50%;
		top: 50%;
		margin-left: -200px;
		width: 400px;
		opacity: 0.8;
	}
	</style>
</head>
<body>
	<div id="testArea">
		<div id="testBox">
		</div>
	</div>
	<div id="controls">
		<label for="pos">Positioning
			<select id="pos" class="arg">
				<option value="absolute">absolute</option>
				<option value="relative">relative</option>
				<option value="fixed">fixed</option>
			</select>
		</label>
		<label for="vertPos">Vertical Positioning
			<select id="vertPos" class="arg">
				<option value="top">top</option>
				<option value="bottom">bottom</option>
			</select>
		</label>
		<label for="horizPos">Horizontal Positioning
			<select id="horizPos" class="arg">
				<option value="left">left</option>
				<option value="right">right</option>
			</select>
		</label>
		<label for="vertOrigin">Vertical Origin
			<select id="vertOrigin" class="arg">
				<option value="top">top</option>
				<option value="middle">middle</option>
				<option value="bottom">bottom</option>
			</select>
		</label>
		<label for="horizOrigin">Horizontal Origin
			<select id="horizOrigin" class="arg">
				<option value="left">left</option>
				<option value="center">center</option>
				<option value="right">right</option>
			</select>
		</label><br />
		<label id="current">jQuery UI Scale Animation Test</label>
		<button id="cyclePrev">Back</button>
		<button id="doAnim">Run Animation</button>
		<button id="cycleNext">Forward</button>
	</div>
</body>