function startImageAdjuster(){
	$("#imagePanner").css("width", $("#panW").attr("value") + "px");
	$("#imagePanner").css("height", $("#panH").attr("value") + "px");

	$("#productDisplayImage").fadeIn("normal");
	
	var disW = parseInt($("#disW").attr("value"));
	var disH = parseInt($("#disH").attr("value"));
	var cropW = parseInt($("#cropW").attr("value"));
	var cropH = parseInt($("#cropH").attr("value"));
	var cropX = parseInt($("#cropX").attr("value"));
	var cropY = parseInt($("#cropY").attr("value"));
	var panW = parseInt($("#panW").attr("value"));
	var panH = parseInt($("#panH").attr("value"));
	var forcedAspect = $("#forcedAspect").attr("value");

	var diffW = disW-cropW;
	var diffH = disH-cropH;
	
	
	//find new pan dimensions
	if(cropW >= cropH){
		var panW = disW;
		var ratio = panW/cropW;
		var panH = parseInt(cropH*ratio);
		if(panH > disH){
			var orgH = panH;
			var panH = disH;
			var orgRatio = panH/orgH;
			panW = Math.round(panW*orgRatio);
		}
		
		$("#panW").attr("value",panW);
		$("#panH").attr("value",panH);
		
		var sizeRatio = panW/cropW;
		var newW = parseInt(disW * sizeRatio);
		var newH = parseInt(disH*sizeRatio);
		$("#productDisplayImage").css("width", newW);
		$("#productDisplayImage").css("height", newH);
	}else{
		var panH = disH;
		var ratio = panH/cropH;
		var panW = parseInt(cropW*ratio);
		if(panW > disW){
			var orgW = panW;
			var panW = disW;
			var orgRatio = panW/orgW;
			panH = Math.round(panH*orgRatio);
		}
		
		$("#panH").attr("value",panH);
		$("#panW").attr("value",panW);
		
		var sizeRatio = panH/cropH;
		var newH = parseInt(disH * sizeRatio);
		var newW = parseInt(disW*sizeRatio);
		$("#productDisplayImage").css("height", newH);
		$("#productDisplayImage").css("width", newW);

	}
	newX = cropX*sizeRatio;
	newY = cropY*sizeRatio;

	$("#imagePanner").attr( "scrollLeft", parseInt(newX) );
	$("#imagePanner").attr( "scrollTop", newY);

	$("#imagePanner").css("width", $("#panW").attr("value") + "px");
	$("#imagePanner").css("height", $("#panH").attr("value") + "px");
	
	//set actal cordinates
	var ratio = $("#panR").attr("value");
	$("#photoX").attr("value", parseInt($("#cropX").attr("value")*ratio) );
	$("#photoY").attr("value", parseInt($("#cropY").attr("value")*ratio) );
	$("#photoW").attr("value", parseInt($("#cropW").attr("value")*ratio) );
	$("#photoH").attr("value", parseInt($("#cropH").attr("value")*ratio) );
	$("#photoA").attr("value", $("#cropA").attr("value") );
}
function productPhotoAdjust(cmd){
	var disW = parseInt($("#disW").attr("value"));
	var disH = parseInt($("#disH").attr("value"));
	var cropW = parseInt($("#cropW").attr("value"));
	var cropH = parseInt($("#cropH").attr("value"));
	var cropX = parseInt($("#cropX").attr("value"));
	var cropY = parseInt($("#cropY").attr("value"));
	var cropA = parseInt($("#cropA").attr("value"));
	var panW = parseInt($("#panW").attr("value"));
	var panH = parseInt($("#panH").attr("value"));
	var forcedAspect = parseFloat($("#forcedAspect").attr("value"));

	var moveSpaces=5;
	if(cmd=='moveLeft'){
		if(cropX==0){
			alert('Photo is all the way to the left.');
			return;
		}
		var newX = cropX-moveSpaces;
		if(newX<0){newX=0;}
		$("#cropX").attr("value",newX);
	}else if(cmd=='moveRight'){
		if(cropX+cropW>=disW){
			alert('Photo is all the way to the right.');
			return;
		}
		var newX = cropX+moveSpaces;
		if(newX+cropW>=disW){
			newX = disW-cropW;
		}
		$("#cropX").attr("value",newX);
	
	}else if(cmd=='moveUp'){
		if(cropY==0){
			alert('Photo is all the way to the top.');
			return;
		}
		var newY = cropY-moveSpaces;
		if(newY<0){newY=0;}
		$("#cropY").attr("value",newY);
	}else if(cmd=='moveDown'){
		if(cropY+cropH>=disH){
			alert('Photo is all the way to the bottom.');
			return;
		}
		var newY = cropY+moveSpaces;
		if(newY+cropH>=disH){
			newY = disH-cropH;
		}
		$("#cropY").attr("value",newY);
	}else if(cmd=='rotateLeft' || cmd=='rotateRight' || cmd=='rotateForceFit'){
		if(cmd=='rotateLeft'){
			var newR = cropA+270;
		}else if(cmd=='rotateForceFit'){
			var newR = cropA+360;
		}else{
			var newR = cropA+90;
		}
		var d = new Date();
		$("#cropA").attr("value",newR);
		$("#productDisplayImage").fadeOut("normal");
		$("#productDisplayImage").css("width", "auto");
		$("#productDisplayImage").css("height", "auto");
		if(cmd!='rotateForceFit'){
			var disH = $("#productDisplayImage").attr("width");
			var disW = $("#productDisplayImage").attr("height");
			$("#disH").attr("value", disH );
			$("#disW").attr("value", disW );
		}else{
			var disH = $("#productDisplayImage").attr("height");
			var disW = $("#productDisplayImage").attr("width");
		}
		$("#productDisplayImage").unbind();
		$("#productDisplayImage").load(function(){
			rotateCords();
		});
		var newSrc = $("#disImageUrl").attr("value") + "&angle=" + newR + "&h=" + disH + "&w=" + disW;
		$("#productDisplayImage").attr("src", newSrc);
		return;
	}else if(cmd=='zoomIn'){
		if(cropW < disW*.3 || cropH < disH*.3){
			alert('You cannot zoom in any further.');
			return;
		}
		var xSpaces = 4;
		var newX = cropX + xSpaces;
		var newW = cropW - xSpaces*2;

		var sizeRatio = xSpaces/cropW;
		//alert(sizeRatio);

		var ySpaces = Math.round(cropH * sizeRatio);
		var newY = cropY + ySpaces;
		var newH = cropH - ySpaces*2;

		$("#cropW").attr("value",newW);
		$("#cropH").attr("value",newH);
		$("#cropX").attr("value",newX);
		$("#cropY").attr("value",newY);
	}else if(cmd=='zoomOut'){
		if(cropW >= disW || cropH >= disH){
			alert('You cannot zoom out any further.');
			return;
		}
		var xSpaces = 4;
		var newX = cropX - xSpaces;
		var newW = cropW + xSpaces*2;

		var sizeRatio = xSpaces/cropW;
		//alert(sizeRatio);

		var ySpaces = Math.round(cropH * sizeRatio);
		var newY = cropY - ySpaces;
		var newH = cropH + ySpaces*2;

		if(newW>disW) newW=disW;
		if(newX<0) newX=0;
		if(newH>disH) newW=disH;
		if(newY<0) newY=disY;
		$("#cropW").attr("value",newW);
		$("#cropH").attr("value",newH);
		$("#cropX").attr("value",newX);
		$("#cropY").attr("value",newY);	
	}else if(cmd=='orientationP' || cmd=='orientationL'){
		if(cmd=='orientationP' && forcedAspect < 1){
			return;
		}else if(cmd=='orientationL' && forcedAspect > 1){
			return;
		}
		if(cmd=='orientationL'){
			$("#landscape").css("border","1px solid #f99");
			$("#landscape").css("margin","0px");
			$("#portrait").css("border","0px solid #f99");
			$("#portrait").css("margin","1px");
			var printRatio = panH/panW;
			cropW = disW;
			cropH = Math.round(disW / printRatio); 
			if(cropH > disH){
				var orgH = cropH;
				cropH = disH;
				var newRatio = cropH / orgH;
				cropW = Math.round(cropW * newRatio);
			}			
		}else{
			$("#landscape").css("border","0px solid #f99");
			$("#landscape").css("margin","1px");
			$("#portrait").css("border","1px solid #f99");
			$("#portrait").css("margin","0px");
			var printRatio = panH/panW;
			cropH = disH;
			cropW = Math.round(disH * printRatio); 
			if(cropW > disW){
				var orgW = cropW;
				cropW = disW;
				var newRatio = cropW / orgW;
				cropH = Math.round(cropH * newRatio);
			}
		}
		var cropWidth = disW - cropW;
		var cropHeight = disH - cropH;
		
		panW = cropW;
		panH = cropH;
		cropX = Math.round(cropWidth / 2);
		cropY = Math.round(cropHeight / 2);
		
		$("#cropX").attr("value",cropX);
		$("#cropY").attr("value",cropY);
		$("#cropW").attr("value",cropW);
		$("#cropH").attr("value",cropH);
		$("#panW").attr("value",panW);
		$("#panH").attr("value",panH);
		$("#forcedAspect").attr("value",printRatio);

	}
	startImageAdjuster();
}
function rotateCords(){
	$("#productDisplayImage").unbind();
	$("#productDisplayImage").load(function(){
		startImageAdjuster();
	});	

	var forcedAspect = $("#forcedAspect").attr("value");
	var panW = parseInt($("#panW").attr("value"));
	var panH = parseInt($("#panH").attr("value"));
	var disW = parseInt($("#disW").attr("value"));
	var disH = parseInt($("#disH").attr("value"));
	var cropW = parseInt($("#cropW").attr("value"));
	var cropH = parseInt($("#cropH").attr("value"));
	var cropX = parseInt($("#cropX").attr("value"));
	var cropY = parseInt($("#cropY").attr("value"));
	var cropA = parseInt($("#cropA").attr("value"));

	//switch orientations
	if(forcedAspect==0){
		$("#cropX").attr("value",0);
		$("#cropY").attr("value",0);
		$("#cropW").attr("value",disW);
		$("#cropH").attr("value",disH);
		$("#panW").attr("value",disW);
		$("#panH").attr("value",disH);
	}else{
		if(forcedAspect>0){
			var ori = 1;
		}else{
			var ori = 2;
		}
		var printRatio = forcedAspect;
		
		if(ori == 1){
			cropW = disW;
			cropH = Math.round(disW / printRatio); 
			if(cropH > disH){
				var orgH = cropH;
				cropH = disH;
				var newRatio = cropH / orgH;
				cropW = Math.round(cropW * newRatio);
			}
		}else{
			cropH = disH;
			cropW = Math.round(disH * printRatio); 
			if(cropW > disW){
				var orgW = cropW;
				cropW = disW;
				var newRatio = cropW / orgW;
				cropH = Math.round(cropH * newRatio);
			}
		}
		var cropWidth = disW - cropW;
		var cropHeight = disH - cropH;
		
		panW = cropW;
		panH = cropH;
		cropX = Math.round(cropWidth / 2);
		cropY = Math.round(cropHeight / 2);
		
		
		$("#cropX").attr("value",cropX);
		$("#cropY").attr("value",cropY);
		$("#cropW").attr("value",cropW);
		$("#cropH").attr("value",cropH);
		$("#panW").attr("value",panW);
		$("#panH").attr("value",panH);
	}
	startImageAdjuster();
}

var cropX;
var cropY;
var cropW;
var cropH;
function saveCropCords(c){
	cropX = c.x;
	cropY = c.y;
	cropW = c.w;
	cropH = c.h;
}
function productPhotoCrop(){
	var disW = parseInt($("#disW").attr("value"));
	var disH = parseInt($("#disH").attr("value"));
		
	$("#productDisplayImage").css("width",disW + "px");
	$("#productDisplayImage").css("height",disH + "px");
	
	$("#imagePanner").attr( "scrollTop", 0);
	$("#imagePanner").attr( "scrollLeft", 0);

	$("#imagePanner").animate(
		{ width: $("#disW").attr("value") + "px"
		,height: $("#disH").attr("value") + "px" }
		,200
		,""
		,function(){
			cropX = parseInt($("#cropX").attr("value"));
			cropY = parseInt($("#cropY").attr("value"));
			cropW = parseInt($("#cropW").attr("value"));
			cropH = parseInt($("#cropH").attr("value"));
			//alert('X: ' + cropX + ' Y: ' + cropY + ' W: ' + cropW + ' H: ' + cropH);
			var aspect = $("#forcedAspect").attr("value");
			
			$("#adjustments").fadeOut("normal",function(){
				$("#cropOptions").fadeIn("normal");
			});
			$("#productDisplayImage").Jcrop({
				onChange: saveCropCords
				,onSelect: saveCropCords
				,bgColor:     'black'
				,bgOpacity:   .35
				,minSize: [100,100]
				,setSelect:   [  cropX,  cropY,  cropW+cropX,  cropH+cropY ]
				,aspectRatio:aspect
			});	
		}
	);
}
function saveCropArea(){
	var disW = parseInt($("#disW").attr("value"));
	var disH = parseInt($("#disH").attr("value"));
	if(cropW < disW*.3 || cropH < disH*.3){
		alert('Crop was too small. Please try again.');
		return;
	} 
	$("#cropX").attr("value",cropX);
	$("#cropY").attr("value",cropY);
	$("#cropW").attr("value",cropW);
	$("#cropH").attr("value",cropH);
	closeCropper();
}
function closeCropper(){
	$("#cropOptions").fadeOut("normal",function(){
		$("#adjustments").fadeIn("normal");
	});
	$(".jcrop-holder").empty();
	$(".jcrop-holder").remove();
	$("#productDisplayImage").css("display","block");
	var clone = $("#productDisplayImage").clone();
	$("#imagePanner").empty();
	$("#imagePanner").append(clone);
	$("#productDisplayImage").unbind();
	$("#productDisplayImage").load(function(){
		startImageAdjuster();
	});
	startImageAdjuster();

}
function forceFitPhoto(status){
	var disW = parseInt($("#disW").attr("value"));
	var disH = parseInt($("#disH").attr("value"));
	if(status){
		alert('Notice: Using this option may cause extra white space to be printed on the edges of the product.');
		$("#forceFit").attr("value",1);
		$("#cropW").attr("value",disW);
		$("#cropH").attr("value",disH);
		$("#cropX").attr("value",0);
		$("#cropY").attr("value",0);
		$("#panW").attr("value",disW);
		$("#panH").attr("value",disH);
		startImageAdjuster();
		$("#forceFit").attr("value",1);
	}else{
		//rotate photo 360% to reset dimensions
		productPhotoAdjust('rotateForceFit');
		$("#forceFit").attr("value",0);
	}
}

$(document).ready(function(){
	if(document.getElementById('productDisplayImage')){
		$("#productDisplayImage").load(function(){
			startImageAdjuster();
		});
	}
});

