/*
 * -- Tewonder code description start --
 * Name: se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.ObjectsObject
 * Type: Class
 * Version: 0.4.01
 *
 * Edited by: Mattias Ekendahl (mattias@tewonder.se)
 * Updates:
 *
 * Notes:
 * Todo: 
 * -- Tewonder code description end --
 */

function gTewonderLocalScopeFunction() {

	var ObjectsObject = (function() {
		this.objectAttributesObject = new Object();
		this.paramsObject = new Object();
		this.embedAttributesObject = new Object();
		this.addParameterFunctionsArray = new Array();
		this.defaultSetParameterFunction = null;
		
		this._getObjectObjectHtml = (function(aWithEmbedTag) {
			var htmlText = "";
			htmlText += "<object ";
			if(this.id != null) {
				htmlText += "id=\"" + this.id + "\" ";
			}
			if(this.width != null) {
				htmlText += "width=\"" + this.width + "\" ";
			}
			if(this.height != null) {
				htmlText += "height=\"" + this.height + "\" ";
			}
			var currentObject = this.objectAttributesObject;
			for(var objectName in currentObject) {
				htmlText += objectName +"=\"" + currentObject[objectName] + "\" ";
			}
			htmlText += ">" + "\n";
			var currentObject = this.paramsObject;
			for(var objectName in currentObject) {
				htmlText += "\t" + "<param name=\"" + objectName +"\" value=\"" + currentObject[objectName] + "\" />" + "\n";
			}
			
			if(aWithEmbedTag) {
				htmlText += "\t" + this._getEmbedObjectHtml() + "\n";
			}
			htmlText += "</object>";
			return htmlText;											  
		});
		
		this._getEmbedObjectHtml = (function() {
			var htmlText = "";
			htmlText +=  "<embed ";
			if(this.id != null) {
				htmlText += "id=\"" + this.id + "\" ";
			}
			if(this.width != null) {
				htmlText += "width=\"" + this.width + "\" ";
			}
			if(this.height != null) {
				htmlText += "height=\"" + this.height + "\" ";
			}
			var currentObject = this.embedAttributesObject;
			for(var objectName in currentObject) {
				htmlText += objectName +"=\"" + currentObject[objectName] + "\" ";
			}
			htmlText += ">";
			htmlText += "</embed>";	
			return htmlText;
		});
		
		this.getObjectHtml = (function() {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.ObjectsObject::getObjectHtml");
			var tagType;
			switch(gTewonderGlobalFunctions["getUsedProgramIdName"]()) {
				case "ie":
					tagType = "object";
					break;
				case "fx":
					tagType = "embed";
					break;
				default:
					//METODO: check the support for object tag in browsers
					tagType = "both";
					break;					
			}
			var htmlText = "";
			switch(tagType) {
				case "object":
					htmlText = this._getObjectObjectHtml(false);
					break;				
				case "embed":
					htmlText = this._getEmbedObjectHtml();
					break;				
				default:
					//METODO: error message
				case "both":
					htmlText = this._getObjectObjectHtml(true);
					break;
			}
			return htmlText;
		});
		
		this.addSetParameterFunction = (function(aFunction, aNamesArray) {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.ObjectsObject::addSetParameterFunction");
			var newObject = new Object();
			newObject["theFunction"] = aFunction;
			newObject["namesArray"] = aNamesArray;
			this.addParameterFunctionsArray.push(newObject);
		});
		
		this.setDefaultSetParameterFunction = (function(aFunction) {
			this.defaultSetParameterFunction = aFunction;
		});
		
		var currentFunction = function(aName, aValue) {
			this[aName] = aValue;
		}
		this.addSetParameterFunction(currentFunction, ["id", "width", "height"]);
		
		this.setParameterToObjectAttributesAndEmbedAttributes = function(aName, aValue) {
			this.embedAttributesObject[aName] = aValue;
			this.objectAttributesObject[aName] = aValue;
		}			
		this.addSetParameterFunction(this.setParameterToObjectAttributesAndEmbedAttributes, ["class", "name", "style", "title", "type"]);
		
		this.setParameterToEmbedAttributes = function(aName, aValue) {
			this.embedAttributesObject[aName] = aValue;
		}
		this.addSetParameterFunction(this.setParameterToEmbedAttributes, ["accesskey", "align", "pluginspage", "alt", "code", "hspace", "language", "unselectable", "vspace"]);
		
		this.setParameterToObjectAttributes = function(aName, aValue) {
			this.objectAttributesObject[aName] = aValue;
		}
		this.addSetParameterFunction(this.setParameterToObjectAttributes, ["archive", "codebase", "classid", "codetype", "data", "declare", "dir", "lang", "standby", "tabindex", "usemap"]);
		this.addSetParameterFunction(this.setParameterToObjectAttributes, ["onclick", "ondblclick", "onmousedown", "onmouseup", "onmouseover", "onmousemove", "onmouseout", "onkeypress", "onkeydown", "onkeyup"]);
		
		
		this.setParameterToParamsAndEmbedAttributes = function(aName, aValue) {
			this.embedAttributesObject[aName] = aValue;
			this.paramsObject[aName] = aValue;
		}			
		this.setDefaultSetParameterFunction(this.setParameterToParamsAndEmbedAttributes);
		
		this.setParameter = (function(aName, aValue, aForceCase) {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.ObjectsObject::setParameter");
			var theName = aName.toLowerCase();
			var isFound = false;
			var currentArray = this.addParameterFunctionsArray;
			for(var i = -1; ++i < currentArray.length;) {
				var currentArray2 = currentArray[i]["namesArray"];
				for(var j = -1; ++j < currentArray2.length;) {
					if(currentArray2[j].toLowerCase() == theName) {
						isFound = true;
						currentArray[i]["theFunction"].call(this, currentArray2[j], aValue);
						break;
					}
				}
				if(isFound) {
					break;
				}
			}
			if(!isFound) {
				gTewonderGlobalObjects["errorManager"].report("warning", 1, "se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.ObjectsObject", "setParameter", "No setParameter function found for name " + aName + ". Using default function.");
				this.defaultSetParameterFunction.call(this, aName, aValue);
			}
		});
	});
	
	gTewonderGlobalFunctions.addClass("se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.ObjectsObject", ObjectsObject);
	
	gTewonderGlobalFunctions.setClassInheritance(gTewonderClasses.se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.ObjectsObject, gTewonderClasses.se.tewonder.Global.GlobalObjects.MediaManager.MediaObjects.BaseObject);
	
}

gTewonderLocalScopeFunction();
