/*
	$Id: files.js 4294 2007-12-18 04:02:57Z mjhorne $

	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(url, prefix, id, amount)
	{
		var args = new Array();
		args['prefix'] = prefix;
		args['id'] = id;
		args['amount'] = amount;

		url += "?parentElement=" + prefix;
		
		retrieveURL(url, false, showAddFile, args, true);
	}

	
	function showAddFile(args)
	{
		if(document.getElementById(args['prefix']))
		{
			var parentNode = document.getElementById(args['prefix']);

			var div = document.createElement("DIV");

			div.id = args['prefix'] + "_" + args['id'];
			div.className = "fileUploaded clear";
			
			div.innerHTML = args['response'];
			parentNode.appendChild(div);
		}

		hideUpload(parentNode, args['prefix'], args['amount']);
	}


	function showFiles(args)
	{
		if(document.getElementById(args['prefix']))
		{
			document.getElementById(args['prefix']).innerHTML = args['response'];
		}
	}


	function deleteFile(baseURL, locationURL, id, prefix, queryString, amount) {
		
		showWaiting(prefix, baseURL, "Deleting");

		url = baseURL + locationURL + id + "/";

		if(queryString != "")
		{
			url = url + queryString;
		}

		var args = new Array();
		args['prefix'] = prefix;
		args['id'] = prefix + "_" + id;
		args['amount'] = amount;

		retrieveURL(url, false, showDelete, args, true);
	}


	function showDelete(args)
	{
		if(document.getElementById(args['id']))
		{
			document.getElementById(args['id']).parentNode.removeChild(document.getElementById(args['id']));
			removeWaiting(args['prefix']);
			showUpload(document.getElementById(args['id'].parentNode), args['prefix'], args['amount']);
		} else {
			removeWaiting(args['prefix']);
		}
	}


	function showUpload(parentNode, prefix, amount)
	{
		var upload = document.getElementById(prefix + "_upload");

		if(upload)
		{
			if(amount != false)
			{
				count = 0;

				if(!parentNode)
				{
					var parentNode = document.getElementById(prefix);
				}

				for(i = 0; i < parentNode.childNodes.length; i++)
				{
					if(parentNode.childNodes[i].nodeName == "DIV")
					{
						count++;
					}
					if(count > amount) {
						return;
					}
				}
				upload.style.display = "block";
			}
		}
	}


	function hideUpload(parentNode, prefix, amount)
	{
		var upload = document.getElementById(prefix + "_upload");
		
		if(upload)
		{
			if(amount != false) {
				count = 0;

				if(!parentNode)
				{
					var parentNode = document.getElementById(prefix);
				}

				for(i = 0; i < parentNode.childNodes.length; i++)
				{
					if(parentNode.childNodes[i].nodeName == "DIV")
					{
						count++;
					}

					if(count >= amount) {
						upload.style.display = "none";
						break;
					}
				}
			}
		}
	}


	function promoteFile(baseURL, locationURL, id, prefix, queryString) {
		showWaiting(prefix, baseURL, "Moving");

		url = baseURL + locationURL + id + "/?parentElement=" + prefix;
		
		if(queryString != "")
		{
			url = url + queryString;
		}

		var args = new Array();
		args['prefix'] = prefix;
		args['id'] = prefix + "_" + id;

		retrieveURL(url, false, showPromoteFile, args, true);
	}

	
	function showPromoteFile(args) {

		var parent = document.getElementById(args['prefix']);

		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 == args['id']) {

						var element = parent.childNodes[i];

						if(previous) {

							var placeHolder = document.createElement("DIV");

							placeHolder.className = "fileUploaded clear";
							placeHolder.id = element.id;
							placeHolder.innerHTML = element.innerHTML.replace("%7E", "~");
						
							parent.insertBefore(placeHolder, previous);
							parent.removeChild(element);
						}
						break;
					}
					previous = parent.childNodes[i];
				}
			}
		}

		removeWaiting(args['prefix']);
	}


	function demoteFile(baseURL, locationURL, id, prefix, queryString) {

		showWaiting(prefix, baseURL, "Moving");

		url = baseURL + locationURL + id + "/?parentElement=" + prefix;
		
		if(queryString != "")
		{
			url = url + queryString;
		}

		var args = new Array();
		args['prefix'] = prefix;
		args['id'] = prefix + "_" + id;

		retrieveURL(url, false, showDemoteFile, args, true);
	}


	function showDemoteFile(args) {

		var parent = document.getElementById(args['prefix']);

		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;
					placeHolder.innerHTML = element.innerHTML.replace("%7E", "~");
				
					parent.insertBefore(placeHolder, previous);
					parent.removeChild(element);
					break;
				}
					
				if(parent.childNodes[i].id == args['id']) {
					previous = parent.childNodes[i];
				}
			}
		}

		removeWaiting(args['prefix']);
	}


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

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

		overlay.id = "file_overlay";
		overlay.className = "overlay";

		document.getElementById(prefix).style.position="relative";
		document.getElementById(prefix).appendChild(overlay);
		document.getElementById(prefix).appendChild(messageElement);
	}

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