// Computes the dimensions of the largest image that will fit inside a box argMaxW by argMaxH while retaining its aspect ratio
// and that will be (optionally) no smaller than argMinW by argMinH
function scaleImage ( argImgW, argImgH, argMaxW, argMaxH, argMinW, argMinH ) {
var scaledCoord = new Object();
var intMinW = ( argMinW == null ? 0 : argMinW ); 
var intMinH = ( argMinH == null ? 0 : argMinH ); 
var scale;
var aspect;

	if ((argImgW / argImgH) > (argMaxW / argMaxH)) {
		// wider than tall
		scale = argMaxW / argImgW; 
	} else {
		// taller than wide
		scale = argMaxH / argImgH; 
	}
	// compute largest image that fits max constraints
	scaledCoord.width = Math.round(scale * argImgW ); 
	scaledCoord.height = Math.round(scale * argImgH );

	aspect = argImgW / argImgH;
	
	// adjust if it's smaller than min width or height
	if (( scaledCoord.width < intMinW ) || ( scaledCoord.height < intMinH )) {
		var ratio = intMinW/intMinH;
		if ( intMinW == 0 ) {
			scaledCoord.height = intMinH;
			scaledCoord.width = intMinH*scale;
		} else if ( intMinH == 0 ) {
			scaledCoord.width = intMinW;
			scaledCoord.height = intMinW/scale;
		} else if ( ratio > aspect ) {
			scaledCoord.width = intMinW;
			scaledCoord.height = intMinW/aspect;
		} else {
			scaledCoord.height = intMinH;
			scaledCoord.width = intMinH*aspect;
		} 
	}
	return scaledCoord;
}
