/*
 * -- Tewonder code description start --
 * Name: se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject
 * Type: Class
 * Version: 0.3.01
 *
 * Edited by: Mattias Ekendahl (mattias@tewonder.se)
 * Updates:
 *
 * Notes:
 * Todo: 
 * -- Tewonder code description end --
 */

function gTewonderLocalScopeFunction() {

	var BaseObject = (function() {
		this.id = null;
		this.filePath = null;
		this.width = null;
		this.height = null;
		this.element = null;
		this.holderElement = null;
		this.replacedHtml = null;
		this.dataObject = new Object();
		this.checkPlugin = true;
		
		this.setId = (function(aId) {
			this.id = aId;
		});
		
		this.setFilePath = (function(aFilePath) {
			this.filePath = aFilePath;
		});
		
		this.canShowMedia = (function() {
			return true;
		});
		
		this.canHandleFileByPath = (function(aPath) {
			//Returnvalues: 0 = can't handle file, 1 = is primary handler for file, 2 = can handle file
			return 0;
		});
		
		this.setupFromFilePath = (function(aPath) {
			this.filePath = aPath;
		});
		
		this.addData = (function(aName, aValue) {
			this.dataObject[aName] = aValue;
		});
		
		this.getDataObject = (function() {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject::getDataObject");
			return this.dataObject;
		});
		
		this.getReplacedHtml = (function() {
			return this.replacedHtml;
		});
		
		
		this.setSize = (function(aType, aWidth, aHeight) {
			//MENOTE: aWidth and aHeight can be strings or numbers
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject::setSize");
			switch(aType) {
				case "holderElementStyle":
					if(this.holderElement != null) {
						this.holderElement.style.width = aWidth;
						this.holderElement.style.height = aHeight;
					}
					else {
						//METODO: error message	
					}
					break;
				case "elementStyle":
					if(this.element != null) {
						this.element.style.width = aWidth;
						this.element.style.height = aHeight;
					}
					else {
						//METODO: error message	
					}
					break;
				case "element":
				case "default":
					this.width = aWidth;
					this.height = aHeight;
					if(this.element != null) {
						//METODO: check so that this is correct for all browsers
						this.element.width = aWidth;
						this.element.height = aHeight;
					}
					break;
				default:
					//METODO: error message
					break;
			}
		});
		
		this.initializeHtmlRendering = (function() {
			//MENOTE: do nothing, override this function to set values
		});
		
		this.getObjectHtml = (function() {
			gTewonderGlobalObjects["errorManager"].report("error", 3, "se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject", "getObjectHtml", "MediaObject doesn't have a getObjectHtml function.");
			return "<!-- MediaObject doesn't have a write function -->";
		});
		
		this.replaceHtml = (function(aElement) {
			this.initializeHtmlRendering();
			if(!(this.canShowMedia())) {
				gTewonderGlobalObjects["errorManager"].report("warning", 3, "se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject", "replaceHtml", "can't show media.");
				return false;
			}
			this.holderElement = aElement;
			this.replacedHtml = aElement.innerHTML;
			aElement.innerHTML = this.getObjectHtml();
			this.element = aElement.firstChild;
			return true;
		});
		
		this.appendToElement = (function(aElement) {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject::appendToElement");
			this.initializeHtmlRendering();
			if(!(this.canShowMedia())) {
				gTewonderGlobalObjects["errorManager"].report("warning", 3, "se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject", "appendToElement", "can't show media.");
				return false;
			}
			var newNode = document.createElement("div");
			newNode.innerHTML = this.getObjectHtml();
			this.element = newNode.firstChild;
			aElement.appendChild(newNode.firstChild);
			return true;
		});
		
		this.write = (function() {
			this.initializeHtmlRendering();
			if(!(this.canShowMedia())) {
				gTewonderGlobalObjects["errorManager"].report("warning", 3, "se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject", "write", "can't show media.");
				return false;
			}
			document.write(this.getObjectHtml());
			if(this.id != null) {
				this.element = document.getElementById(this.id);
			}
			return true;
		});
	});
	
	gTewonderGlobalFunctions.addClass("se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject", BaseObject);
	
}

gTewonderLocalScopeFunction();
