/*
 * -- Tewonder code description start --
 * Name: se.tewonder.Global.GlobalObjects.MediaManager.MediaManager
 * Type: Class
 * Version: 0.2.01
 *
 * Edited by: Mattias Ekendahl (mattias@tewonder.se)
 * Updates:
 *
 * Notes:
 * Todo: 
 * -- Tewonder code description end --
 */

function gTewonderLocalScopeFunction() {

	var MediaManager = (function() {
		this.mediaObjects = new Array();
		this.mediaTypeClassesObject = new Object();
		
		this.getFileTypeByPath = (function(aFilePath) {
			var secondaryType = null;
			for(var objectName in this.mediaTypeClassesObject) {
				var resultValue = this.mediaTypeClassesObject[objectName].canHandleFileByPath(aFilePath);
				if(resultValue == 1) return objectName;
				else if((resultValue == 2) && (secondaryType == null)) {
					secondaryType = objectName;	
				}	
			}
			
			if(secondaryType != null) return secondaryType;
			
			gTewonderGlobalObjects["errorManager"].report("error", 3, "se.tewonder.Global.GlobalObjects.MediaManager.MediaManager", "getFileType", "no type for path " + aFilePath);
			return null;
		});
		
		this.addMediaType = (function(aType, aClass) {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaManager::addMediaType");
			this.mediaTypeClassesObject[aType] = aClass;
		});
		
		this.createMediaObject = (function(aType) {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaManager::createMediaObject");
			var currentClass = this.mediaTypeClassesObject[aType];
			if(currentClass == undefined) {
				gTewonderGlobalObjects["errorManager"].report("error", 3, "se.tewonder.Global.GlobalObjects.MediaManager.MediaManager", "createMediaObject", "no type named " + aType);
				return null;
			}
			var newObject = gTewonderGlobalObjects["classManager"].createClassObject(currentClass);
			this.mediaObjects.push(newObject);
			return newObject;
		});
		
		this.createMediaObjectByFilePath = (function(aFilePath) {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaManager::createMediaObjectByFilePath");
			var fileType = this.getFileTypeByPath(aFilePath);
			var newObject = this.createMediaObject(fileType);
			newObject.setFilePath(aFilePath);
			return newObject;
		});
		
		this.getObjectById = (function(aId) {
			var currentArray = this.mediaObjects;
			for(var i = -1; ++i < currentArray.length;) {
				if(currentArray[i].id == aId) {
					return currentArray[i];
				}
			}
			gTewonderGlobalObjects["errorManager"].report("error", 3, "se.tewonder.Global.GlobalObjects.MediaManager.MediaManager", "getObjectById", "no object with id " + aId);
			return null;
		});
		
		this.flashApi_setSize = (function(aId, aType, aWidth, aHeight) {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaManager::flashApi_setSize");
			var currentObject = this.getObjectById(aId);
			if(currentObject == null) {
				return;	
			}
			currentObject.setSize(aType, aWidth, aHeight);
		});
		
		this.flashApi_getDataObject = (function(aId) {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaManager::flashApi_getDataObject");
			var currentObject = this.getObjectById(aId);
			if(currentObject == null) {
				return null;	
			}
			return currentObject.getDataObject();
		});
		
		this.flashApi_getReplacedHtml = (function(aId) {
			//alert("se.tewonder.Global.GlobalObjects.MediaManager.MediaManager::flashApi_getReplacedHtml");
			var currentObject = this.getObjectById(aId);
			if(currentObject == null) {
				return null;	
			}
			return currentObject.getReplacedHtml();
		});
	});
	
	gTewonderGlobalFunctions.addClass("se.tewonder.Global.GlobalObjects.MediaManager.MediaManager", MediaManager);
	if(!gTewonderGlobalFunctions.globalObjectExists("mediaManager")) {
		gTewonderGlobalFunctions.addGlobalObject("mediaManager", (new gTewonderClasses.se.tewonder.Global.GlobalObjects.MediaManager.MediaManager()));
	}
}

gTewonderLocalScopeFunction();
