<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
	<meta http-equiv="Content-Language" content="en-us" />
	<title>Different dimensions test</title>
	<script src="../lib/prototype.js" type="text/javascript"></script>	
 	<script src="../lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
	<script src="../cropper.js" type="text/javascript"></script>
	
	
	<script type="text/javascript" charset="utf-8">
		
		function onEndCrop( coords, dimensions ) {
			$( 'x1' ).value = coords.x1;
			$( 'y1' ).value = coords.y1;
			$( 'x2' ).value = coords.x2;
			$( 'y2' ).value = coords.y2;
			$( 'width' ).value = dimensions.width;
			$( 'height' ).value = dimensions.height;
		}
		
		/*
		
		// example with minimum dimensions
		Event.observe( 
			window, 
			'load', 
			function() { 
				new Cropper.Img( 
					'testImage', 
					{ 
						minWidth: 200, 
						minHeight: 120,
						maxWidth: 200,
						//maxHeight: 120,
						displayOnInit: true, 
						onEndCrop: onEndCrop 
					} 
				) 
			} 
		);
		*/
		
		Event.observe( window, 'load',
			function() {
				Event.observe( 'dimensionsForm', 'submit', CropManager.attachCropper.bindAsEventListener( CropManager ) );
				CropManager.attachCropper();
			}
		);
		
		/**
		 * A little manager that allows us to reset the options dynamically
		 */
		var CropManager = {
			/**
			 * Holds the current Cropper.Img object
			 * @var obj
			 */
			curCrop: null,
			
			/**
			 * Gets a min/max parameter from the form 
			 * 
			 * @access private
			 * @param string Form element ID
			 * @return int
			 */
			getParam: function( name ) {
				var val = $F( name );
				console.log( name + ' :: ' + val );
				return parseInt( val );
			},
									
			/** 
			 * Attaches/resets the image cropper
			 *
			 * @access private
			 * @param obj Event object
			 * @return void
			 */
			attachCropper: function( e ) {
				if( this.curCrop == null ) {
					this.curCrop = new Cropper.Img( 
						'testImage', 
						{ 
							minWidth: this.getParam( 'minWidth' ),
							minHeight: this.getParam( 'minHeight' ),
							maxWidth: this.getParam( 'maxWidth' ),
							maxHeight: this.getParam( 'maxHeight' ),
							onEndCrop: onEndCrop 
						} 
					);
				} else {
					this.removeCropper();
					this.curCrop.initialize( 
						'testImage', 
						{ 
							minWidth: this.getParam( 'minWidth' ),
							minHeight: this.getParam( 'minHeight' ),
							maxWidth: this.getParam( 'maxWidth' ),
							maxHeight: this.getParam( 'maxHeight' ),
							onEndCrop: onEndCrop 
						} 
					);
				}
				if( e != null ) Event.stop( e );
			},
			
			/**
			 * Removes the cropper
			 *
			 * @access public
			 * @return void
			 */
			removeCropper: function() {
				if( this.curCrop != null ) {
					this.curCrop.remove();
				}
			},
			
			/**
			 * Resets the cropper, either re-setting or re-applying
			 *
			 * @access public
			 * @return void
			 */
			resetCropper: function() {
				this.attachCropper();
			}
		};		
		
		/*
		if( typeof(dump) != 'function' ) {
			Debug.init(true, '/');
			
			function dump( msg ) {
				// Debug.raise( msg );
			};
		} else dump( '---------------------------------------\n' );
		*/
		
	</script>
	<link rel="stylesheet" type="text/css" href="debug.css" media="all" />
	<style type="text/css">
		label { 
			clear: left;
			margin-left: 50px;
			float: left;
			width: 5em;
		}
		
		#testWrap {
			margin: 20px 0 0 50px; /* Just while testing, to make sure we return the correct positions for the image & not the window */
		}
		
		#dimensionsForm {
			float: right;
			width: 350px;
		}
	</style>
</head>
<body>	
	<h2>Multiple dimensions tests</h2>
	<p>
		Test of applying different dimension restrictions to the cropper
	</p>
	
	<form action="#" id="dimensionsForm">
		<fieldset>
			Set the cropper with the following dimension restrictions:
			<p>
				<label for="minWidth">Min Width</label>
				<input type="text" size="10" maxlength="3" value="200" id="minWidth" name="minWidth" />
			</p>	
			<p>
				<label for="maxWidth">Max Width</label>
				<input type="text" size="10" maxlength="3" value="200" id="maxWidth" name="maxWidth" />
			</p>	
			<p>
				<label for="minHeight">Min Height</label>
				<input type="text" size="10" maxlength="3" value="120" id="minHeight" name="minHeight" />
			</p>	
			<p>
				<label for="maxHeight">Max Height</label>
				<input type="text" size="10" maxlength="3" value="120" id="maxHeight" name="maxHeight" />
			</p>	
			<input type="submit" value="Set Cropper" />
		</fieldset>
	</form>
	
	<div id="testWrap">
		<img src="castle.jpg" alt="test image" id="testImage" width="500" height="333" />
	</div>
	
	
	<p>
		<label for="x1">x1:</label>
		<input type="text" name="x1" id="x1" />
	</p>
	<p>
		<label for="y1">y1:</label>
		<input type="text" name="y1" id="y1" />
	</p>
	<p>
		<label for="x2">x2:</label>
		<input type="text" name="x2" id="x2" />
	</p>
	<p>
		<label for="y2">y2:</label>
		<input type="text" name="y2" id="y2" />
	</p>
	<p>
		<label for="width">width:</label>
		<input type="text" name="width" id="width" />
	</p>
	<p>
		<label for="height">height</label>
		<input type="text" name="height" id="height" />
	</p>  
	
</body>
</html>