

function displayCoords(coordTop, coordRight, coordBottom, coordLeft) {
	if (!document.getElementById || !document.getElementById('outline')) {
		alert("displayCoords:: Invalid select object!");
		return 0;
	}
	
	if (coordTop == 0 && (coordRight === "" || typeof coordRight == 'undefined')) {
		resetCoords();
		return 1;
	}
	
	if (coordLeft === "" || typeof coordLeft == 'undefined' 
		|| coordBottom === "" || typeof coordBottom == 'undefined'
		|| coordRight === "" || typeof coordRight == 'undefined'
		|| coordTop === "" || typeof coordTop == 'undefined') {
		alert("displayCoords:: Invalid dimensions!");
		return 0;
	}
	
	
	if ((coordRight - coordLeft) < 0 || (coordBottom - coordTop) < 0) {return;}
	
	document.getElementById('outline').style.display = "block";
	document.getElementById('outline').style.top = coordTop + 'px';
	document.getElementById('outline').style.left = coordLeft + 'px';
	document.getElementById('outline').style.width = (coordRight - coordLeft) + 'px';
	document.getElementById('outline').style.height = (coordBottom - coordTop) + 'px';
}



function deleteTag( tagUID ) {
	if (!confirm("Are you sure you want to delete this tag?")) {return "";}
	
	if (!document.tagPhotoForm) {
		alert("deleteTag:: Form not available!");
		return "";
	}
	
	document.tagPhotoForm.tagUID.value = tagUID;
	document.tagPhotoForm.type.value = "deleteTag";
	document.tagPhotoForm.submit();
}



function followMouse( arg ) {
	if (!document.getElementById || !document.getElementById('outline')) {
		alert("followMouse:: Invalid select object!");
		return 0;
	}
	
	if (arg === "" || typeof arg == 'undefined') {
		if( window.event ) {arg = window.event;}
		else {return;}
	}
	if (typeof( arg.offsetX ) == 'number' || typeof( arg.layerX ) == 'number') {
		offsetX = arg.layerX ? arg.layerX : arg.offsetX;
		offsetY = arg.layerY ? arg.layerY : arg.offsetY;
	} else {return;}
	
	var form = document.tagPhotoForm;
	if ((offsetX - form.left.value) < 0 || (offsetY - form.top.value) < 0) {return;}
	
	document.getElementById('outline').style.width = (offsetX - form.left.value - 10) + 'px';
	document.getElementById('outline').style.height = (offsetY - form.top.value - 10) + 'px';
}



function mouseUp( arg ) {
	if (document.getElementById('tagPhoto').removeEventListener){
		document.getElementById('tagPhoto').removeEventListener('mousemove', followMouse, false);
		document.getElementById('tagPhoto').removeEventListener('mouseup', mouseUp, false);
	} else if (document.getElementById('tagPhoto').detachEvent){
		document.getElementById('tagPhoto').detachEvent('onmousemove', followMouse);
		document.getElementById('tagPhoto').detachEvent('onmouseup', mouseUp); 
	}
	grabCoords( arg, 'up' );
}


function resetCoords() {
	if (!document.getElementById || !document.getElementById('outline')) {
		alert("grabCoords:: Invalid select object!");
		return 0;
	}
	
	document.getElementById('outline').style.display = "none";
	
	var form = document.tagPhotoForm;
	form.type.value = "";
	form.top.value = "";
	form.left.value = "";
	form.bottom.value = "";
	form.right.value = "";
}


function grabCoords( arg, downUp ) {
	if (!document.getElementById || !document.getElementById('outline')) {
		alert("grabCoords:: Invalid select object!");
		return 0;
	}
	
	if (!document.getElementById || !document.getElementById('tagPhoto')) {
		alert("grabCoords:: Invalid photo object!");
		return 0;
	}
	
	
	var offsetX = 0, offsetY = 0;

	if (arg === "" || typeof arg == 'undefined') {
		if( window.event ) {arg = window.event;}
		else {return;}
	}
	if (typeof( arg.offsetX ) == 'number' || typeof( arg.layerX ) == 'number') {
		offsetX = arg.layerX ? arg.layerX : arg.offsetX;
		offsetY = arg.layerY ? arg.layerY : arg.offsetY;
	} else {return;}


	var form = document.tagPhotoForm;

	if (form.bottom.value != "" || form.right.value != "") { // reset 
		form.top.value = "";
		form.left.value = "";
		form.bottom.value = "";
		form.right.value = "";
		form.type.value = "";
	}
	
	if (downUp != "up") { // start  (top-left coords)
		form.top.value = offsetY;
		form.left.value = offsetX;
		form.bottom.value = "";
		form.right.value = "";
		form.type.value = "";
		
		document.getElementById('outline').style.display = "block";
		document.getElementById('outline').style.top = offsetY + 'px';
		document.getElementById('outline').style.left = offsetX + 'px';
		document.getElementById('outline').style.width = '0px';
		document.getElementById('outline').style.height = '0px';
		
		if (document.getElementById('tagPhoto').addEventListener){
			document.getElementById('tagPhoto').addEventListener('mouseup', mouseUp, false);
			document.getElementById('tagPhoto').addEventListener('mousemove', followMouse, false);
		} else if (document.getElementById('tagPhoto').attachEvent){
			document.getElementById('tagPhoto').attachEvent('onmouseup', mouseUp);
			document.getElementById('tagPhoto').attachEvent('onmousemove', followMouse);
		}
	}
	else { // finish (bottom-right) 
		form.bottom.value = offsetY;
		form.right.value = offsetX;
		
		
		if ((form.bottom.value - form.top.value) < 25 || (form.right.value - form.left.value) < 25) {
			//alert("Invalid dimensions! Start at top-left, then bottom-right.");
			//return "";
			// facebook-style tagging 
            form.top.value = form.top.value - 30;
            form.left.value = form.left.value - 30;
			form.bottom.value = 60+form.top.value*1;
			form.right.value = 60+form.left.value*1;
		}
		
		document.getElementById('outline').style.top = form.top.value + 'px';
		document.getElementById('outline').style.left = form.left.value + 'px';
		document.getElementById('outline').style.width = (form.right.value - form.left.value) + 'px';
		document.getElementById('outline').style.height = (form.bottom.value - form.top.value) + 'px';
		
		form.type.value = "addTagPhoto";
	}
}



function tagFunction( url, tagOn, downUp, arg ) {
	if (tagOn === "" || typeof tagOn == 'undefined' || tagOn != 1) {
		document.location = url;
		return "";
	}
	
	grabCoords(arg, downUp);
}


function buildSuggestions( suggestTextbox, suggestsPanel, JSONobject ) {
	document.getElementById('isusrtag').value = 0; // by default, not tag of a user 
	
	if (JSONobject && document.getElementById
			&& document.getElementById(suggestTextbox) && document.getElementById(suggestsPanel)) {
		var sBoxObj;
		
		try {
			sBoxObj = json_parse(JSONobject);
		} catch (err) {alert(err.name + ": " + err.message + "\n" + err.at + "  " + err.text);}
		
		if (!sBoxObj || (sBoxObj.tags.length == 0 && sBoxObj.usrs.length == 0)) {
			document.getElementById(suggestsPanel).style.display = 'none';
		} else {
			document.getElementById(suggestsPanel).style.display = 'block';
		}
		
		document.getElementById(suggestsPanel).innerHTML = "";
		
		for (var i = 0; i < sBoxObj.tags.length; ++i) {
			document.getElementById(suggestsPanel).innerHTML += "<div style='cursor: pointer;' "
				+ " onmouseover=\"this.style.backgroundColor='#AACCFF'; document.getElementById('"+suggestsPanel+"').style.display = 'block';\" "
				+ " onmouseout=\"this.style.backgroundColor='#FFFFFF'; killBubble(event);\" "
				+ " onclick=\"document.getElementById('isusrtag').value=0; document.getElementById('"+suggestTextbox+"').value='" + sBoxObj.tags[i] + "'; "
					+ " document.getElementById('"+suggestsPanel+"').style.display = 'none';\">" 
				+ sBoxObj.tags[i] + "</a><br />";
		}
		
		for (var i = 0; i < sBoxObj.usrs.length; ++i) {
			document.getElementById(suggestsPanel).innerHTML += "<div style='cursor: pointer;' "
				+ " onmouseover=\"this.style.backgroundColor='#AACCFF'; document.getElementById('"+suggestsPanel+"').style.display = 'block';\" "
				+ " onmouseout=\"this.style.backgroundColor='#FFFFFF'; killBubble(event);\" "
				+ " onclick=\"document.getElementById('isusrtag').value=1; document.getElementById('"+suggestTextbox+"').value='" + sBoxObj.usrs[i] + "'; "
					+ " document.getElementById('"+suggestsPanel+"').style.display = 'none';\">usr: <i>" 
				+ sBoxObj.usrs[i] + "</i></a><br />";
		}
	}
	else {
		document.getElementById(suggestsPanel).style.display = 'none';
	}
}


function killBubble(eventHandle) {
	if (!eventHandle) {
		var eventHandle = window.event;
	}
	if (eventHandle) {
		eventHandle.cancelBubble = true;
	}
	if (eventHandle.stopPropagation) {
		eventHandle.stopPropagation();
	}
}




function tickAllFiles( ticked ) {
	if (!document.getElementsByName || document.getElementsByName( "bodyPicsForm" ).length == 0) {
		alert("There are no pictures to select!");
		return 0;
	}
	
	if (ticked === "" || typeof ticked == 'undefined' || (ticked != true && ticked != false)) {ticked = true;}
	
	var allFileForms = document.getElementsByName( "bodyPicsForm" );
	for (var i = 0; i < allFileForms.length; ++i) {
		if (allFileForms[i].elements.length != 0) {
			var formElements = allFileForms[i].elements;
			for (var j = 0; j < formElements.length; ++j) {
				formElements[j].checked = ticked;
			}
		}
	}
}


function gatherSelectedFiles() {
	if (!document.getElementById || !document.getElementById('bulkEditForm')) {
		alert("moveAllFiles:: Invalid catalyst form!");
		return 0;
	}
	
	if ( typeof document.getElementById('bulkEditForm').targetFiles == 'undefined' ) {
		alert("moveAllFiles:: Invalid catalyst target!");
		return 0;
	}
	
	if (document.getElementsByName( "bodyPicsForm" ).length == 0) {
		alert("There are no pictures to move!");
		return 0;
	}
	
	var bulkTargetFiles = document.getElementById('bulkEditForm').targetFiles;
	bulkTargetFiles.value = "";
	
	var numPics = 0;
	var allFileForms = document.getElementsByName( "bodyPicsForm" );
	for (var i = 0; i < allFileForms.length; ++i) {
		if (allFileForms[i].elements.length != 0) {
			var formElements = allFileForms[i].elements;
			for (var j = 0; j < formElements.length; ++j) {
				if (formElements[j].checked) {
					++numPics;
					bulkTargetFiles.value += formElements[j].value + ";";
				}
			}
		}
	}
	
	if (numPics == 0) {
		alert("No pictures were selected!");
		return 0;
	}
	
	return 1;
}


function moveAllFiles() {
	if (!document.getElementById || !document.getElementById('bulkEditForm')) {
		alert("moveAllFiles:: Invalid catalyst form!");
		return "";
	}
	
	if ( typeof document.getElementById('bulkEditForm').targetFiles == 'undefined' ) {
		alert("moveAllFiles:: Invalid catalyst target!");
		return "";
	}
	
	if ( typeof document.getElementById('bulkEditForm').type == 'undefined' ) {
		alert("moveAllFiles:: Invalid catalyst type!");
		return "";
	}
	
	if (!gatherSelectedFiles()) {return "";}
	
	if (!confirm("Are you sure you want to move the selected files?  You can only move files you own!")) {return "";}
	
	document.getElementById('bulkEditForm').type.value = "moveFiles";
	document.getElementById('bulkEditForm').submit();
}


function deleteAllFiles() {
	if (!document.getElementById || !document.getElementById('bulkEditForm')) {
		alert("moveAllFiles:: Invalid catalyst form!");
		return "";
	}
	
	if ( typeof document.getElementById('bulkEditForm').targetFiles == 'undefined' ) {
		alert("moveAllFiles:: Invalid catalyst target!");
		return "";
	}
	
	if ( typeof document.getElementById('bulkEditForm').type == 'undefined' ) {
		alert("moveAllFiles:: Invalid catalyst type!");
		return "";
	}
	
	if (!gatherSelectedFiles()) {return "";}
	
	if (!confirm("Are you sure you want to delete the selected files? This CANNOT be undone!")) {return "";}
	
	document.getElementById('bulkEditForm').type.value = "deleteFiles";
	document.getElementById('bulkEditForm').submit();
}





function deleteDirectory( dUID ) {
	if (!confirm("Are you sure you want to delete the selected folder?  It must be empty to remove!")) {return "";}
	
	if (!document.getElementById || !document.getElementById('bulkEditForm')) {
		alert("moveAllFiles:: Invalid catalyst form!");
		return "";
	}
	
	if ( typeof document.getElementById('bulkEditForm').targetFiles == 'undefined' ) {
		alert("moveAllFiles:: Invalid catalyst target!");
		return "";
	}
	
	if ( typeof document.getElementById('bulkEditForm').type == 'undefined' ) {
		alert("moveAllFiles:: Invalid catalyst type!");
		return "";
	}
	
	document.getElementById('bulkEditForm').targetFiles.value = dUID;
	document.getElementById('bulkEditForm').type.value = "deleteFolder";
	document.getElementById('bulkEditForm').submit();
}



function validateUpload() {
	if (!document.getElementById || !document.getElementById('uploadForm')) {
		alert("validateUpload:: Invalid catalyst form!");
		return false;
	}
	
	var form = document.getElementById('uploadForm');
	var upType = 'pc';
	
	for (var i=0; i < form.uploadType.length; ++i) {
		if (form.uploadType[i].checked) {
			upType = form.uploadType[i].value;
		}
	}
	
	if ( form.Filedata.value.length == 0 && upType == 'pc' || form.imgURL.value.length == 0 && upType == 'web' ) {
		alert('Please choose a file to upload!');
		return false;
	}
}


function swapUpload( type ) {
	if ( !document.getElementById('uploadTypePc') || !document.getElementById('uploadTypeWeb') ) {
		alert("swapUpload:: Invalid catalyst target!");
		return "";
	}
	
	if (type === "" || typeof type == 'undefined' || (type != 'pc' && type != 'web')) {type = 'pc';}
	
	if (type == 'pc') {
		document.getElementById('uploadTypePc').style.display = 'inline';
		document.getElementById('uploadTypeWeb').style.display = 'none';
	}
	else if (type == 'web') {
		document.getElementById('uploadTypePc').style.display = 'none';
		document.getElementById('uploadTypeWeb').style.display = 'inline';
	}
}
