/********************
 *
 *	JAVASCRIPT_IMAGEMNG.JS
 *	Image-management javascript functions for ITC
 * 
********************/

ImgMngCounter = 0;
ImgMngCounter_real = 0;


// Loop through file inputs to check if any contain data
function checkFileInputs(FormObj) {
	CountArray = sortImgControls(FormObj).split(',');

	for (var i in CountArray) {

		FileFieldObj = document.getElementById('UploadImage_' + CountArray[i] + '_ID');
		if (FileFieldObj.value != '') {
			alert('One or more image uploads are not empty. ' +
			      'Please empty them or upload the images before submitting the form');
			
			return false;
		}
	}
	
	return true;
}


// Sorts the image counters into comma-separated string before submitting form
function sortImgControls(FormObj) {
	Controls   = getImgMngDivs();
	CountArray = new Array();
	
	for (var i in Controls)
		CountArray.push(Controls[i].id.substr(Controls[i].id.lastIndexOf('_')+1));
	
		return CountArray.join(',');
}


// Loads the image management controls
function loadImgMngControls(FormName, Table, ID, EvalExtraCodeOnSuccess) {
	generateWaitDiv('Loading Images');
	
	AJAX_sendRequest(
	true,
	
	JS_HTTPROOT + '/includes/ajax_set_imagemng_output.php?mode=loadImgMngControls&Table=' + Table + '&FormName=' + FormName +
	'&ID=' + ID,
	
	"if (VarForResponseText.substr(0,7) == 'OUTPUT:') { document.getElementById('ImgMngMainContainer').innerHTML = " +
	"VarForResponseText.substr(7); updateCounter(); " + EvalExtraCodeOnSuccess + " } else { alert(VarForResponseText); } " +
	"deleteWaitDiv();");
}


// Updates the counter after populating data
function updateCounter() {
	DivsArray  = getImgMngDivs();
	SetCounter = DivsArray.length;
	
	ImgMngCounter      = SetCounter;
	ImgMngCounter_real = SetCounter;
}


// Toggles btwn replace/rename
function toggleReplaceRename(SourceCounter, Show) {
	Show_rename  = (Show == 'rename')?'block':'none';
	Show_replace = (Show == 'replace')?'block':'none';
	
	document.getElementById('ImageNameContainer_' + SourceCounter).style.display = Show_rename;
	document.getElementById('UploadImgContainer_' + SourceCounter).style.display = Show_replace;
}


// Adds a new image management control
function newImgMng(FormName, Table, SourceCounter, UpOrDown) {
	
	ImgMngCounter++;
	ImgMngCounter_real++;
	
	SetID  = 'ImgMngContainer_' + ImgMngCounter;
	ThisID = 'ImgMngContainer_' + SourceCounter;
	
	InsertBeforeObj = null;
	
	// Adding new up
	if (UpOrDown == 1)
		InsertBeforeObj = document.getElementById(ThisID);
	
	// Adding new down
	else {
		
		ImgMngContainers = getImgMngDivs();
		
		InsertBeforeObj = null;
		
		for (var i in ImgMngContainers) {
			if (ImgMngContainers[i].id == ThisID) {
				InsertBeforeObj = ImgMngContainers[parseInt(i)+1];
				break;
			}
		}
	}
	
	NewMngDiv = document.createElement('div');
	NewMngDiv.setAttribute('id', SetID);
	NewMngDiv.setAttribute('class', 'ImgMngContainer');
	NewMngDiv.className = 'ImgMngContainer';
	
	generateWaitDiv();
	AJAX_sendRequest(true,
	
	JS_HTTPROOT + '/includes/ajax_set_imagemng_output.php?mode=initImgMng&Table=' + Table + '&Counter=' +
	ImgMngCounter + '&Publish=1&FormName=' + FormName,
	
	"if (VarForResponseText.substr(0,7) == 'OUTPUT:') { NewMngDiv.innerHTML = VarForResponseText.substr(7); " +
	"ParentObj = document.getElementById('ImgMngMainContainer'); if (InsertBeforeObj == null) { ParentObj.appendChild(NewMngDiv); " +
	"} else { ParentObj.insertBefore(NewMngDiv, InsertBeforeObj); } } else { alert(VarForResponseText); } deleteWaitDiv();");
}


// Move image mngmnt control
function moveImgMng(SourceCounter, UpOrDown) {

	ParentObj        = document.getElementById('ImgMngMainContainer');
	ImgMngContainers = getImgMngDivs();
	
	// Loop through containers
	for (var i in ImgMngContainers) {
		
		// Found "this" container
		if (String(ImgMngContainers[i].id).substr(16) == SourceCounter) {
				
			// This is the first or last container
			if ((UpOrDown == 1 && i == 0) || (UpOrDown == 0 && i == ImgMngContainers.length-1)) {
				
				// Create new div with swapped content
				NewDiv = document.createElement('div');
				with (NewDiv) {
					innerHTML = ImgMngContainers[i].innerHTML;
					setAttribute('id', ImgMngContainers[i].id);
					setAttribute('class', 'ImgMngContainer');
					className = 'ImgMngContainer';
				}
				
				// Moving up - put on the bottom
				if (UpOrDown == 1)
					ParentObj.appendChild(NewDiv);
				
				// Moving down - put on the top
				else
					ParentObj.insertBefore(NewDiv, ImgMngContainers[0]);
				
				// Remove the old container
				ParentObj.removeChild(ImgMngContainers[i]);
			}
			
			// Just move -- swap innerHTML
			else {
				UpOrDown_factor = (UpOrDown == 1)?1:0-1;
				
				innerHTML_this = ImgMngContainers[i].innerHTML;
				id_this        = ImgMngContainers[i].id;
				i_swap         = parseInt(i)-UpOrDown_factor;
				
				ImgMngContainers[i].innerHTML = ImgMngContainers[i_swap].innerHTML;
				ImgMngContainers[i].id = ImgMngContainers[i_swap].getAttribute('id');
				
				ImgMngContainers[i_swap].innerHTML = innerHTML_this;
				ImgMngContainers[i_swap].id = id_this;
			}
			
			break;
		}
	}
}


// Toggle enabled/disabled image control
function toggleImgMng(SourceCounter) {
	ToggleFieldObj = document.getElementById('PublishImage_' + SourceCounter + '_ID');
	ToggleFieldObj.value = (ToggleFieldObj.value != 0)?0:1;
	
	document.getElementById('ImgToggle_' + SourceCounter).src = JS_HTTPROOT +
	((ToggleFieldObj.value == 0)?'/images/icons/x.gif':'/images/icons/checkmark.gif');
}


// Delete image control
function deleteImgMng(FormName, Table, SourceCounter) {
	document.getElementById('ImgMngMainContainer').removeChild(document.getElementById('ImgMngContainer_' + SourceCounter));
	ImgMngCounter_real--;
	
	if (ImgMngCounter_real == 0)
		newImgMng(FormName, Table);
}


// Get array of control divs
function getImgMngDivs() {

	// Don't insert before
	var Divs = document.getElementById('ImgMngMainContainer').getElementsByTagName('div');
	var ImgMngContainers = new Array()
	
	for (var i in Divs) {
		if (typeof Divs[i].id != 'undefined' && Divs[i].id.substr(0, 16) == 'ImgMngContainer_')
			ImgMngContainers.push(Divs[i]);
	}
	
	return ImgMngContainers;
}


// Upload image
function imgMngUploadImg(FormName, SourceCounter) {
	
	// Make object from form name
	eval('FormObj = document.' + FormName + ';');
	UploadField = document.getElementById('UploadImage_' + SourceCounter + '_ID');
	document.getElementById('ImageDataChanged_' + SourceCounter + '_ID').value = '1';
	
	if (UploadField.value == '') {
		alert('Please select a file to upload');
		return;
	}
	
	generateWaitDiv('Uploading Image');
	
	// Save old action and target
	OldAction   = FormObj.action;
	OldTarget   = FormObj.target;
	
	// Set 'upload image' flag value, change action and target, then submit form
	FormObj.UploadingImage.value = SourceCounter;
	FormObj.action = JS_appendQueryStr(FormObj.action, 'UploadingImage=' + SourceCounter);
	FormObj.target = 'ImageProcessingIframe';
	FormObj.submit();
	
	// Reset flag, action and target
	FormObj.UploadingImage.value = '';
	FormObj.action = OldAction;
	FormObj.target = OldTarget;
}


// Opens preview image
function openImgPreview(ImgURL) {
	window.open(ImgURL, 'ImgPreviewWin', 'width=500,height=400,scrollbars,status');
}


// Deletes the old file input and replaces it (to blank it out)
function clearFileTypeInput(SourceCounter) {
	ParentObj = parent.document.getElementById('UploadImageContainerTmp_' + SourceCounter);
	ParentObj.innerHTML = '';
	
	var NewInput = parent.document.createElement('input');
	
	with (NewInput) {
		setAttribute('type', 'file');
		setAttribute('name', 'UploadImage_' + SourceCounter);
		setAttribute('id', 'UploadImage_' + SourceCounter + '_ID');
	}
	
	ParentObj.appendChild(NewInput);
}
