/*
	$Id: files.js 13446 2009-06-25 07:19:48Z brad $

	This file is part of ayudaCMS
	Copyright 2007: ayuda IT
	http://www.ayuda.com.au

	For licencing details, please see LICENCE.txt in the ayudaCMS directory.
*/

function addFile(baseURL, locationURL, parentElement, id, numFiles, queryString)
{
	showFilesOverlay(baseURL, "Uploading file");

	var url = baseURL + locationURL + "&parentElement=" + parentElement + "&numFiles=" + numFiles;
	if(queryString)
	{
		url = url + queryString;
	}

	var response = JSON.parse(syncRequest(url));

	if(response != null)
	{
		var success = response['success'];
		if(success)
		{
			var responseMessage = response['message'];
			var parentNode = document.getElementById(parentElement);
			if(parentNode)
			{
				var div = document.createElement("DIV");

				div.id = parentElement + "_" + id;
				div.className = "fileUploaded clear";
				div.innerHTML = Base64Utils.prototype.decode(responseMessage);
				parentNode.appendChild(div);

				toggleUpload(parentElement, numFiles);
			}
		}
	}

	hideFilesOverlay();
}


function deleteFile(baseURL, locationURL, id, parentElement, queryString, numFiles)
{
	showFilesOverlay(baseURL, "Deleting file");

	var url = baseURL + locationURL + "&id=" + id;
	if(queryString != "")
	{
		url = url + queryString;
	}

	var response = JSON.parse(syncRequest(url));
	if(response != null)
	{
		var success = response['success'];
		if(success) 
		{
			var parentNode = document.getElementById(parentElement);
			if(parentNode)
			{
				var nodeID = parentElement + "_" + id;
				var node = document.getElementById(nodeID);
				if(node)
				{
					parentNode.removeChild(node);
					toggleUpload(parentElement, numFiles);
				}
			}
		}
	}

	hideFilesOverlay();
}


function toggleUpload(parentElement, numFiles)
{
	var upload = document.getElementById(parentElement + "_upload");
	var parentNode = document.getElementById(parentElement);

	if(upload && parentNode && numFiles > 0)
	{
		var count = 0;
		for(i = 0; i < parentNode.childNodes.length; i++)
		{
			if(parentNode.childNodes[i].nodeName == "DIV")
			{
				count++;
			}
			if(count >= numFiles)
			{
				break;
			}
		}

		if(count >= numFiles)
		{
			upload.style.display = "none";
		}
		else
		{
			upload.style.display = "block";
		}
	}
}


function promoteFile(baseURL, locationURL, id, parentElement, queryString)
{
	showFilesOverlay(baseURL, "Moving the file up the list");

	var url = baseURL + locationURL + "&parentElement=" + parentElement + "&id=" + id;
	if(queryString != "")
	{
		url = url + queryString;
	}

	var response = JSON.parse(syncRequest(url));
	if(response != null)
	{
		var success = response['success'];
		if(success)
		{
			showPromoteFile(parentElement, parentElement + "_" + id);
		}
	}

	hideFilesOverlay();
}

	
function showPromoteFile(parentElement, id)
{
	var parent = document.getElementById(parentElement);
	if(parent)
	{
		var previous = null;

		for(var i = 0; i < parent.childNodes.length; i++)
		{
			if(parent.childNodes[i].nodeName == "DIV")
			{
				if(parent.childNodes[i].id == id)
				{
					var element = parent.childNodes[i];

					if(previous)
					{
						var placeHolder = document.createElement("DIV");

						placeHolder.className = "fileUploaded clear";
						placeHolder.id = element.id;
					
						var innerHTML = element.innerHTML.replace("%7E", "~");
						innerHTML = innerHTML.replace("\%7E", "~");
						placeHolder.innerHTML = innerHTML;

						parent.insertBefore(placeHolder, previous);
						parent.removeChild(element);
					}
					break;
				}
				previous = parent.childNodes[i];
			}
		}
	}
}


function demoteFile(baseURL, locationURL, id, parentElement, queryString)
{
	showFilesOverlay(baseURL, "Moving the file down the list");

	var url = baseURL + locationURL + "&parentElement=" + parentElement + "&id=" + id;
	if(queryString != "")
	{
		url = url + queryString;
	}

	var response = JSON.parse(syncRequest(url));
	if(response != null)
	{
		var success = response['success'];
		if(success)
		{
			showDemoteFile(parentElement, parentElement + "_" + id);
		}
	}

	hideFilesOverlay();
}


function showDemoteFile(parentElement, id)
{
	var parent = document.getElementById(parentElement);
	if(parent)
	{
		var previous = null;

		for(var i = 0; i < parent.childNodes.length; i++)
		{
			var element = parent.childNodes[i];

			if(previous && (parent.childNodes[i].nodeName == "DIV"))
			{
				var placeHolder = document.createElement("DIV");

				placeHolder.className = "fileUploaded clear";
				placeHolder.id = element.id;

				var innerHTML = element.innerHTML.replace("%7E", "~");
				innerHTML = innerHTML.replace("\%7E", "~");
				placeHolder.innerHTML = innerHTML;
			
				parent.insertBefore(placeHolder, previous);
				parent.removeChild(element);
				break;
			}
				
			if(parent.childNodes[i].id == id)
			{
				previous = parent.childNodes[i];
			}
		}
	}
}


function showFilesOverlay(baseURL, message)
{
	var message = message + "<br /><br /><img width=\"32\" src=\"" + baseURL + "../ayudacms/core/images/common/loading.gif\" />";

	var messageElement = document.createElement("DIV");
	messageElement.id = "file_overlay_message";
	messageElement.innerHTML = message;
	
	var overlay = document.createElement("DIV");

	overlay.style.height = document.getElementById("body").clientHeight + "px";
	overlay.id = "file_overlay";

	document.body.appendChild(overlay);
	document.body.appendChild(messageElement);
}


function hideFilesOverlay()
{
	var overlay = document.getElementById("file_overlay");
	var message = document.getElementById("file_overlay_message");
	document.body.removeChild(overlay);
	document.body.removeChild(message);
}

