function crop(holder, side_length) {
	var container = $(holder);
	container.css('overflow', 'hidden');
	container.css('position', 'relative');
	var image = $(holder + " > img");
	image.css('float','left');
	image.css('position','absolute');
	image.css('height',side_length + 'px');
	image.css('width',side_length + 'px');
	$(holder + " > img").ready(function() {
		var image_to_resize = $(this).find(holder + " > img");
		cropImage(image_to_resize, parseInt($(holder).css('width')));
	});
}

function scale(holder, scaleTo, scale) {
	var container = $(holder);
	var image = $(holder + " > img");
	var image_preloader = new Image();
	image_preloader.src = image.attr('src');
	var width = image_preloader.width;
	var height = image_preloader.height;
	if(scaleTo == "height") {
		width = (width/height) * scale;
		height = scale;
	}
	else if(scaleTo == "width") {
		height = (height/width) * scale;
		width = scale;
	}
	container.css('overflow', 'hidden');
	container.css('position', 'relative');
	container.css('height', height + 'px');
	container.css('width', width + 'px');
	image.css('float','left');
	image.css('position','absolute');
	image.css('height', height + 'px');
	image.css('width', width + 'px');
}

function cropImage(image_to_resize, s) {
	var image = new Image();
	image.src = image_to_resize.attr('src');
	var width = image.width;
	var height = image.height;
	if(width == height) {
		//just resize
		image_to_resize.css('height', s + 'px');
		image_to_resize.css('width', s + 'px');
	} else {
		//crop this image
		var end_h = 0;
		var end_w = 0;
		var top = 0;
		var left = 0;
		if(height < width) {
			end_h = s;
			end_w = (width/height)*s;
			left = (end_w-s)/2;
		} else {
			end_w = s;
			end_h = (height/width)*s;
			top = (end_h-s)/2;
		}
		image_to_resize.css('height', end_h + 'px');
		image_to_resize.css('width', end_w + 'px');
		image_to_resize.css('top', '-' + top + 'px');
		image_to_resize.css('left', '-' + left + 'px');
	}
};