/* **************************************************************
							--XJS--
Desenvolvedora: Rhianna Cantarelli
Versão: 2.0
Data: 17.10.2007
Email: r.rhianna@yahoo.com.br
************************************************************** */







/* **************************************************************
Cria um objeto responsavel por armazenar as propriedades de um 
filme flash para posterior amostra

Métodos: 
	.setObject(thisID, thisClass, thisTitle, w, h) : Inicia objeto com Informações Básicas
	.setQuality(q) : Seta qualidade se ela for diferente do default 'high'
	.setTransparency() : Seta fundo transparente
	.addFlashVars(name, value) : Adiciona uma ou mais flashvars
	
	.showFlash(where) : Adiciona o objeto criado ao local indicado por ID, se...
		where = 'here' adiciona ao mesmo local onde está o código JS
		where = 'alert' mostra a string criada em forma de alert
	
	.fontReplace(getTagByClass, searchTag) : faz a substituição de todo conteudo de
		uma dada tag com determinada classe pelo filme em questão.
		O filme receberá automaticamente uma flashvar chamada 'tagInside' 
		com o valor do conteudo de innerHTML da tag
************************************************************** */
function objFlash(srcSWF){
    
    // Cria Tags 'Param'
    var createParam = function(nameParam, valueparam) {
        var pReturn = document.createElement('param');
        pReturn.name = nameParam;
        pReturn.value = valueparam;
        return pReturn;
    };

    var src = srcSWF;
    var flashvars = '';


    var tagObject = document.createElement('object');
    var tagParamBase = createParam('allowScriptAccess', 'sameDomain');
    var tagParamQuality = createParam('quality', 'high');
    var tagParamTransparency = createParam('wmode', 'transparent');
    var tagParamMovie = createParam('movie', srcSWF);





	// Função que seta dados básicos do Flash - Na tag Object
	this.setObject = function(thisID, thisClass, thisTitle, w, h) {
	    if(thisID != '') { tagObject.id = thisID; }
		if(thisClass != '') { tagObject.className = thisClass; }
		if(thisTitle != '') { tagObject.title = thisTitle; }
		if(w != '') { tagObject.width = w; }
		if(h != '') { tagObject.height = h; }
	};
	this.setQuality = function(q) { tagParamQuality = createParam('quality', q); };


    // Controle de FlashVars
	this.addFlashVars = function(name, value) { 
		// Verifica se já há alguma variavel setada e adiciona o '&' para a próxima
		if(flashvars != '' && flashvars.indexOf('=') != -1) { flashvars += '&'; }
		flashvars += name +'='+ value;
	};
	this.clearFlashVars = function() { flashvars = ''; };


    // Seta o XHTML.
	var createXHTML = function (isTransparent) {
		// Inicia Tag Object Setando parametros Básicos
		tagObject.appendChild(tagParamBase);
		tagObject.appendChild(tagParamQuality);
		if(isTransparent == true) { tagObject.appendChild(tagParamTransparency); }


		if(document.attachEvent) { // Se for IE
		    tagObject.appendChild(tagParamMovie);
			tagObject.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
			tagObject.codebase = 'http://www.adobe.com/br/shockwave/download/alternates/';			
		}
		else {
		    tagObject.type = 'application/x-shockwave-flash';
		    tagObject.data = src;
		}

		if(flashvars != '') { 
		    var tagFlashVars = createParam('flashvars', flashvars);
		    tagObject.appendChild(tagFlashVars);
		}
	};


	this.showFlash = function(idName, isTransparent) {
		createXHTML(isTransparent);
		var div = document.createElement('div');
		div.appendChild(tagObject);

		if(idName == 'alert') { alert(div.innerHTML); }
		else { 
			// Se o Browser Suporta Flash
			if(xjs_isFlashSuport == true) {
				nodeParent = document.getElementById(idName);
				if (document.attachEvent) { nodeParent.innerHTML = div.innerHTML; }
				else { nodeParent.appendChild(tagObject); }
			}
			// Senão Suporta Flash
			else { nodeParent.appendChild(xjs_GetFlashLink); }
		}
	};
};
