var
	draggingMC,
	draggingRC,
	cropRel;

function startCropMove (eventeg, eventString) {
	if (eventeg) ev = eventeg;
	else ev = event;
	
	crop = ev.target ? ev.target : ev.srcElement;
	if (crop.className != 'cropMoveRect')
		return;
	
	crop.dragging = 1;
	draggingMC = crop;
	crop.eventString = eventString;
	crop.dragX = ev.clientX - crop.offsetLeft;
	crop.dragY = ev.clientY - crop.offsetTop;
}

function checkCropMove (eventeg) {
	if (eventeg) ev = eventeg;
	else ev = event;
	
	crop = ev.target ? ev.target : ev.srcElement;
	if (crop.className != 'cropMoveRect')
		return;
	cont = crop;
	while (cont.className != 'cropImageContainer') cont = cont.parentNode
	
	if (!crop.dragging) return;
	
	crop.style.left = Math.max(0, Math.min(ev.clientX - crop.dragX, cont.offsetWidth - crop.offsetWidth));
	crop.style.top = Math.max(0, Math.min(ev.clientY - crop.dragY, cont.offsetHeight - crop.offsetHeight));
}

function checkCropMoveGlob (eventeg) {
	crop = draggingMC;
	if (!crop || !crop.dragging)
		return;
	
	if (eventeg) ev = eventeg;
	else ev = event;
	
// 	while (crop.className != 'cropMoveRect') crop = crop.parentNode;
	cont = crop;
	while (cont.className != 'cropImageContainer') cont = cont.parentNode
	
	if (!crop.dragging) return;
	
	crop.style.left = Math.max(0, Math.min(ev.clientX - crop.dragX, cont.offsetWidth - crop.offsetWidth));
	crop.style.top = Math.max(0, Math.min(ev.clientY - crop.dragY, cont.offsetHeight - crop.offsetHeight));
}

function stopCropMove (eventeg) {
	if (eventeg) ev = eventeg;
	else ev = event;
	
	crop = ev.target ? ev.target : ev.srcElement;
	while (crop.className != 'cropMoveRect') crop = crop.parentNode;
	
	if (!crop.dragging)
		return;
	
	crop.dragging = 0;
	messageREWAD(crop.eventString, 'h=' + crop.offsetHeight + '&w=' + crop.offsetWidth + '&x=' + crop.offsetLeft + '&y=' + crop.offsetTop);
}

function stopCropMoveGlob (eventeg) {
	crop = draggingMC;
	
	if (eventeg) ev = eventeg;
	else ev = event;
	
	if (!crop || !crop.dragging)
		return;
	
	crop.dragging = 0;
	messageREWAD(crop.eventString, 'h=' + crop.offsetHeight + '&w=' + crop.offsetWidth + '&x=' + crop.offsetLeft + '&y=' + crop.offsetTop);
}


function startCropResize (eventeg, eventString) {
	if (eventeg) ev = eventeg;
	else ev = event;
	
	crop = ev.target ? ev.target : ev.srcElement;
// 	while (crop.className != 'cropResizeRect') crop = crop.parentNode;
	
	draggingRC = crop;
	crop.dragging = 1;
	crop.eventString = eventString;
	crop.dragX = ev.clientX - crop.offsetLeft;
	crop.dragY = ev.clientY - crop.offsetTop;
}

function checkCropResize (eventeg) {
	if (eventeg) ev = eventeg;
	else ev = event;
	
	rr = ev.target ? ev.target : ev.srcElement;
// 	while (rr.className != 'cropResizeRect') rr = rr.parentNode;
	crop = rr;
	while (crop.className != 'cropMoveRect') crop = crop.parentNode;
	cont = crop;
	while (cont.className != 'cropImageContainer') cont = cont.parentNode;
	
	if (!rr.dragging) return;
	
	showdbg(cropRel);
	if (crop.offsetWidth > crop.offsetHeight) {
		var w = Math.max(25 * cropRel, Math.min(ev.clientX - rr.dragX + 20, cont.offsetWidth - crop.offsetLeft));
		var h = Math.max(25, Math.min(ev.clientY - rr.dragY + 20, cont.offsetHeight - crop.offsetTop));
		h = Math.min(w / cropRel, h);
		w = h * cropRel;
		crop.style.width = w;
		crop.style.height = h;
	}
	else {
		var h = Math.max(25 / cropRel, Math.min(ev.clientY - rr.dragY + 20, cont.offsetHeight - crop.offsetTop));
		var w = Math.max(25, Math.min(ev.clientX - rr.dragX + 20, cont.offsetWidth - crop.offsetLeft));
		w = Math.min(h * cropRel, w);
		h = w / cropRel;
		crop.style.width = w;
		crop.style.height = h;
	}
}

function checkCropResizeGlob (eventeg) {
	rr = draggingRC;
	if (!rr || !rr.dragging)
		return;
	
	if (eventeg) ev = eventeg;
	else ev = event;
	
// 	while (rr.className != 'cropResizeRect') rr = rr.parentNode;
	crop = rr;
	while (crop.className != 'cropMoveRect') crop = crop.parentNode;
	cont = crop;
	while (cont.className != 'cropImageContainer') cont = cont.parentNode;
	
	if (!rr.dragging) return;
	
	showdbg(cropRel);
	if (crop.offsetWidth > crop.offsetHeight) {
		var w = Math.max(25 * cropRel, Math.min(ev.clientX - rr.dragX + 20, cont.offsetWidth - crop.offsetLeft));
		var h = Math.max(25, Math.min(ev.clientY - rr.dragY + 20, cont.offsetHeight - crop.offsetTop));
		h = Math.min(w / cropRel, h);
		w = h * cropRel;
		crop.style.width = w;
		crop.style.height = h;
	}
	else {
		var h = Math.max(25 / cropRel, Math.min(ev.clientY - rr.dragY + 20, cont.offsetHeight - crop.offsetTop));
		var w = Math.max(25, Math.min(ev.clientX - rr.dragX + 20, cont.offsetWidth - crop.offsetLeft));
		w = Math.min(h * cropRel, w);
		h = w / cropRel;
		crop.style.width = w;
		crop.style.height = h;
	}
}

function stopCropResize (eventeg, eventString) {
	if (eventeg) ev = eventeg;
	else ev = event;
	
	rr = ev.target ? ev.target : ev.srcElement;
	
	if (!rr.dragging)
		return;
	crop = rr;
	while (crop.className != 'cropMoveRect') crop = crop.parentNode;
	
	rr.dragging = 0;
	messageREWAD(rr.eventString, 'h=' + crop.offsetHeight + '&w=' + crop.offsetWidth + '&x=' + crop.offsetLeft + '&y=' + crop.offsetTop);
}

function stopCropResizeGlob (eventeg) {
	if (eventeg) ev = eventeg;
	else ev = event;
	
	rr = draggingRC;
	if (!rr || !rr.dragging)
		return;
	crop = rr;
	while (crop.className != 'cropMoveRect') crop = crop.parentNode;
	
	rr.dragging = 0;
	messageREWAD(rr.eventString, 'h=' + crop.offsetHeight + '&w=' + crop.offsetWidth + '&x=' + crop.offsetLeft + '&y=' + crop.offsetTop);
}
