function SwfText(){
	Object.extend(this,{ 		  
		text:null,
		
		version:8,
		width:null,
		height:null,
		cssWidth:null,
		cssHeight:null,
		cssNames:new Array(),
		options:{
			color:'#7f7f7f',
			firstColor:'#807264',
			lastColor:'#000000',
			linkColor:'#807264',
			bgColor:'#FFFFFF',
			fontSize:17
		},
		
		trimTags:function(str) {
  			while(str.split("> <").length>1){
				str=str.split("> <").join('><');
			}
			return str;
		},
		
		trimExtra:function(str)
		{ 
			while(str.split("  ").length>1){
				str=str.split("  ").join(' ');
			}
			return str;
		},
		
		removeClass:function(str)
		{
			this.cssNames.push(str);
		},
		
		reCase:function(str){
			var M= str.match(/(< *\w+)/g);
			var L= M.length;
			var temp='';
			for (var i=0; i<L;i++){
				var tem= M[i].substring(1);
				tem=tem.toLowerCase();
				if(temp.search(tem+';')!=-1)continue;
				var rx= new RegExp("(< *\/? *)"+tem,'gi');
				temp+= tem+'; '
				str= str.replace(rx,'$1'+tem);
			}
			str=str.replace(/> *</g,'><');
			return str;	
		},

		parseString:function(str) {
			str = this.reCase(str); //tags to lower
			//
			re= /<(?!\/?(span|a))[^>]*>/gi
			str= str.replace(re,""); //remove all except span|a
			str=str.split("\r").join(''); //remove breaklines
			str=str.split("\t").join('');
			str=str.split("\n").join('');
			//
			str=str.split("\"").join("'");
			//
			re= /class=''/gi
			str= str.replace(re,""); //remove class=''
			//
			str=str.split("&").join(escape("&"));
			//
			str = str.strip(); //remove white
			str = this.trimExtra(str); //remove extra white between chars
			str = this.trimTags(str); //remove extra white between tags
			return str;	
		},
		setCssSize:function(w, h){
			this.cssWidth = w;
			this.cssHeight =h;
			
		},
		
		replaceElement: function(elm, swf, width, height, options){

			if (!swfobject.hasFlashPlayerVersion(this.version+".0.0")) {
				return;
			}

			this.width= width;
			this.height= height;
			this.options.firstColor = this.options.linkColor;
			//clean css class
			var s = $(elm).innerHTML;
			this.text=s; //backup html
			var elementos = $(elm).descendants();
			var css_names = this.cssNames;
			elementos.each(function(elm){ //remover class
					css_names.each(function(val){
						$(elm).removeClassName(val);						
					});
			});
			
			s = $(elm).innerHTML;
			s = this.parseString(s);
			//so.addVariable("t", escape(s));
			s= s.split("+").join("~");
			//alert(escape("&"));
			s= s.split("%26amp;").join("&amp;");
			s= s.split("%").join(escape("%"));
			s= s.split("&amp;").join("%26");

			var flashvars = {};
			flashvars.t = s;
			flashvars.c = this.options.color;
			flashvars.fc = this.options.firstColor;
			flashvars.lc = this.options.lastColor;
			flashvars.uc = this.options.linkColor;
			flashvars.f = this.options.fontSize;

			var params = {};
			params.menu = "false";
			params.wmode = "transparent";
			params.scale = "wmode";

			var attributes = {};
			attributes.id = elm+"_swftext";
			attributes.name = elm+"_swftext";

			$(elm).innerHTML = "<div id=\""+elm+"tempswftext\"></div>";
			swfobject.embedSWF(swf, elm+"tempswftext", width, height, this.version+".0.0",null, flashvars, params, attributes, callbackHandler);
			var cssW = this.cssWidth;
			var cssH = this.cssHeight;
			function callbackHandler(){
				if(cssW!=null && cssH!=null){
					$(elm+"_swftext").setStyle({
						width: cssW,
						height: cssH
					});
				}
			}	
		}
		
	});
	//
}