// Gestion des objets flash

// Classe
function Flash() {
	// Valeurs par défaut
	this.defaultObject = {width:200, height:100, id:"flash", align:"middle", classid:"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", codebase:"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"};
	this.defaultParam = {allowScriptAccess:"sameDomain", menu:false, quality:"high", bgcolor:"#ffffff"};
	this.defaultEmbed = {allowScriptAccess:"sameDomain", menu:false, quality:"high", bgcolor:"#ffffff", width:200, height:100, name:"flash", id:"flash", align:"middle", pluginspage:"http://www.macromedia.com/go/getflashplayer"};
	
	/*
	Méthodes
	*/
	
	// Ecriture d'un objet flash
	this.writeFlash = function(params) {
		// Obtention des paramètres
		var params = this.getArgs(params);
		
		// Compilation et écriture
		document.write(this.getCode(params));
	}
	
	// Obtention des arguments
	this.getArgs = function(params) {
		// Init
		var retour = new Object();
		retour.object = new Object();
		retour.param = new Object();
		retour.embed = new Object();
		retour.vars = new Object();
		
		// Parcours
		for (var thevar in params) {
			// Parsing
			switch (thevar.toLowerCase()) {
				case "classid":
				case "codebase":
					retour.object[thevar] = this[thevar];
					break;
				
				case "type":
				case "pluginspage":
					retour.embed[thevar] = this[thevar];
					break;
				
				case "movie":
				case "src":
					retour.param.movie = params[thevar];
					retour.embed.src = params[thevar];
					break;
				
				case "id":
				case "name":
					retour.object.id = params[thevar];
					retour.embed.id = params[thevar];
					retour.embed.name = params[thevar];
					break;
				
				case "width":
				case "height":
				case "align":
				case "vspace": 
				case "hspace":
				case "class":
				case "title":
				case "accesskey":
				case "name":
				case "id":
				case "tabindex":
					retour.object[thevar] = params[thevar];
					retour.embed[thevar] = params[thevar];
					break;
				
				case "allowScriptAccess":
				case "menu":
				case "quality":
				case "bgcolor":
				case "wmode":
					retour.param[thevar] = params[thevar];
					retour.embed[thevar] = params[thevar];
					break;
				
				default:
					retour.vars[thevar] = params[thevar];
					break;
			}
		}
		
		// Parsing des valeurs par défaut
		retour = this.parseDefault(retour);
		
		// Renvoi
		return retour;
	}
	
	// Vérification des valeurs par défaut
	this.parseDefault = function(retour) {
		// Object
		for (var thevar in this.defaultObject) {
			// Si non défini
			if (typeof(retour.object[thevar]) == "undefined") {
				// Affectation
				retour.object[thevar] = this.defaultObject[thevar];
			}
		}
		
		// Param
		for (var thevar in this.defaultParam) {
			// Si non défini
			if (typeof(retour.param[thevar]) == "undefined") {
				// Affectation
				retour.param[thevar] = this.defaultParam[thevar];
			}
		}
		
		// Embed
		for (var thevar in this.defaultEmbed) {
			// Si non défini
			if (typeof(retour.embed[thevar]) == "undefined") {
				// Affectation
				retour.embed[thevar] = this.defaultEmbed[thevar];
			}
		}
		
		// Renvoi
		return retour;
	}
	
	// Génération du code
	this.getCode = function(params) {
		// Variables
		var variables = new Array();
		for (var thevar in params.vars) {
			variables.push(thevar+'='+params.vars[thevar]);
		}
		if (variables.length > 0) {
			variables = '?'+variables.join('&');
		} else {
			variables = '';
		}
		
		// Init
		var code = '<object ';
		
		// Object
		for (var thevar in params.object) {
			code += thevar+'="'+params.object[thevar]+'" ';
		}
		code += '>';
		
		// Param
		for (var thevar in params.param) {
			if (thevar == 'movie') {
				code += '<param name="'+thevar+'" value="'+params.param[thevar]+variables+'" /> ';
			} else {
				code += '<param name="'+thevar+'" value="'+params.param[thevar]+'" /> ';
			}
		}
		
		// Embed
		code += '<embed ';
		for (var thevar in params.embed) {
			if (thevar == 'src') {
				code += thevar+'="'+params.embed[thevar]+variables+'" ';
			} else {
				code += thevar+'="'+params.embed[thevar]+'" ';
			}
		}
		code += ' /></object>';
		
		// Renvoi
		return code;
	}
}

// Génération d'une instance
var flash = new Flash();