﻿var AjaxUpload = new Class(
{
	initialize : function(uiManager)
	{
		this._editors = [];
		this._uiManager = uiManager;

		this._uiManager.registerViewStateHandler("AjaxUpload", this.collectViewState);
	},

	collectViewState : function(control)
	{
		var state = $(control.id + "_state").value;
		return base64Json.decode(state);
	},

	update : function(dialogID, controlID, content)
	{
		var tempDiv = new Element("div");
		tempDiv.setHTML(content);

		var oldUploadControl = $(dialogID).getElement("div[id='" + controlID + "']");
		var newUploadControl = tempDiv.getFirst();

		newUploadControl.replaces(oldUploadControl);
	},

	deleteFile : function(dialogID, controlID, filename)
	{
		var dialog = $(dialogID);
		var control = ui.getNestedControl(dialog, controlID);
		var stateField = ui.getNestedControl(dialog, controlID + "_state");

		var state = base64Json.decode(stateField.value);
		var stateFiles = state["Files"];

		var newStateFiles = { };

		$each(
			stateFiles,
			function(item, index, object)
			{
				var files = item.split('|');
				var newFiles = "";

				for (var i = 0; i < files.length; i++)
				{
					if (files[i] != filename)
					{
						if (i > 0)
						{
							newFiles += "|";
						}

						newFiles += files[i];
					}
				}

				if (newFiles != "")
				{
					newStateFiles[index] = newFiles;
				}
			}
		);

		state["Files"] = newStateFiles;

		stateField.value = base64Json.encode(state);

		ui.handleEvent(dialogID, control, "Update");
	},
	
	saveFile : function(dialogID, controlID, filename)
	{
		var dialog = $(dialogID);
		var control = ui.getNestedControl(dialog, controlID);

		ui.handleEvent(dialogID, control, "Download");
	},

	initControl : function(dialogID, controlID)
	{

	}
});

var ajaxUpload = new AjaxUpload(uiManager);