fTAR = {
	BOLD:1,
	ITALIC:2,
	UNDERLINE:4,
	ALIGNLEFT:8,
	ALIGNCENTER:16,
	ALIGNRIGHT:32,
	ALIGNJUSTIFY:64,
	HEADER1:128,
	HEADER2:256,
	HEADER3:512,
	HEADER4:1024,
	HEADER5:2048,
	HEADER6:4096,
	BULLETS:8192,
	QUOTES:16384,
	LINKS:32768,


	replacedTextAreas:[],
	inited:false,
	flashUrl:"",
	flashUrl2:"",
	fmUrl:"",
	baseURL:"",
	buttons:0xfffff,
	isIE:false,

	update:false,
	location:"",
	title:"",

	updateContent:function (){
		var name, flash, input;
		try {
			for (var i = 0; i < this.replacedTextAreas.length; i++){
				if (this.isIE){
					var flash = document.getElementById(this.replacedTextAreas[i].fl);
					flash.SetVariable("testvar", "true");
					this.replacedTextAreas[i].tf.value = flash.GetVariable("text");

				} else {
					this.replacedTextAreas[i].tf.value = this.replacedTextAreas[i].fl.getContents();
				}
			}
		} catch (e){}
	},

	doSubmit:function (fHandler){
		this.updateContent();
		return (fHandler == undefined) ? true : fHandler();
	},

	replaceElements:function(){
		this.replaceTextAreas();
		this.replaceInputs();
	},

	replaceInputs:function(){
		var listNodes = this.getListOfReplacements("input", "browse", "all");
		listNodes = listNodes.concat(this.getListOfReplacements("input", "browse", "images"));
		if(listNodes.length == 0){ return false }

		var limit, node, parent, dupNode, newNode, click, id;
		var scope = this;
		for(var i = 0, limit = listNodes.length; i < limit; i++){
			node = listNodes[i];
			parent = node.parentNode;

			dupNode = node.cloneNode(true);

			id = node.getAttribute("id");
			newNode = document.createElement("span");
			newNode.className = "efx_form_fileBrowser_span";

			newNode.appendChild(dupNode);

			if (id == "" || id == undefined){
				dupNode.setAttribute("id", "__browser__"+i);
			}

			click = document.createElement("a");
			click.setAttribute("href", "#");
			click.className = "efx_form_fileBrowser_button";
			click.appendChild(document.createTextNode("Browse..."));

			newNode.appendChild(click);
			parent.replaceChild(newNode, node);

			click.onclick = function(){
				scope.doBrowse(this.parentNode);
				return false;
			}
		}

		newNode = document.createElement("div");
		newNode.setAttribute("id", "efx_form_fileBrowser");
		document.getElementsByTagName("body")[0].appendChild(newNode);
	},

	doBrowse:function(pField){
		var node = pField.getElementsByTagName("input")[0];
		var images = node.getAttribute("browse") == "images";
		var layer = document.getElementById("efx_form_fileBrowser");
		var flash = '<object type="application/x-shockwave-flash" data="'+this.flashUrl2+'" width="466" height="292"><param name="movie" value="'+this.flashUrl2+'" /><param name="flashvars" value="field='+node.getAttribute("id")+'&images='+images+'&script='+this.fmUrl+'&baseurl='+this.baseURL+'"/><param name="allowScriptAccess" value="always"/>';
		if (this.bckColor != undefined) flash += '<param name="bgcolor" value="'+this.bckColor+'"/>';
		flash += '</object>';
		layer.innerHTML = flash;

		layer.style.display = "block";

		var selects = document.getElementsByTagName("select");
		this.sState = [];
        for (i = 0; i < selects.length; i++) {
			this.sState[i] = selects[i].style.visibility;
			selects[i].style.visibility = "hidden";
        }

		setTimeout("document.getElementById('efx_form_fileBrowser').getElementsByTagName('object')[0].focus()", 50);
	},

	insertFile:function(pField, pFile){
		document.getElementById(pField).value = pFile;
		this.closeBrowse();
	},

	closeBrowse:function(){
		var layer = document.getElementById("efx_form_fileBrowser");
		layer.innerHTML = "";
		layer.style.display = "none";

		var selects = document.getElementsByTagName("select");
        for (i = 0; i < selects.length; i++) {
			selects[i].style.visibility = this.sState[i];
        }
	},

	replaceTextAreas:function(){
		var listNodes = this.getListOfReplacements("textarea", "textareaReplace", "true");
		if(listNodes.length == 0){ return false }

		var node, parent, oContent, cName, nodeAlternate, sVars, nsw, nsh, nw, nh, nodeFlash, nodeName;
		var outer = (typeof (document.documentElement.outerHTML) == "string") && this.isIE;

		for(var i = 0, limit = listNodes.length; i < limit; i++){
			node = listNodes[i];
			parent = node.parentNode;

			oContent = node.value;
			cName = node.getAttribute("name");

			nodeAlternate = document.createElement("input");
			nodeAlternate.setAttribute("type", "hidden");
			nodeAlternate.setAttribute("name", cName);
			nodeAlternate.setAttribute("id", cName);
			nodeAlternate.setAttribute("value", oContent);

			nodeName = "fTAR_"+cName;

			sVars = "";
			if (this.update){
				sVars = "redirectURL="+this.location+"&doctitle="+this.title+"&playerType="+(this.isIE ? "ActiveX" : "PlugIn")+"&";
			}

			sVars += "flashID="+nodeName+"&buttons="+this.buttons+"&script="+this.fmUrl+"&baseurl="+this.baseURL+"&name=" + encodeURIComponent(cName) + "&txt=" + encodeURIComponent(oContent);

			nw = node.offsetWidth;
			nh = node.offsetHeight;
			if (nw < 550) nw = 550;
			if (nh < 400) nh = 400;

			// ugly hack because i can?t make the DOM part work in IE
			if (outer){
				nodeFlash = '<OBJECT type="application/x-shockwave-flash" width="'+nw+'" height="'+nh+'" id="'+nodeName+'" class="efx_form_flashtextarea">';
				nodeFlash += '<PARAM name="movie" value="' + this.flashUrl + '"/>';
				nodeFlash += '<PARAM name="allowScriptAccess" value="always"/>';
				nodeFlash += '<PARAM name="flashvars" value="'+sVars+'"/>';
				if (this.bckColor != undefined) nodeFlash += '<PARAM name="bgcolor" value="'+this.bckColor+'"/>';
				nodeFlash += '</OBJECT>';
				node.outerHTML = nodeFlash;
				nodeFlash = nodeName;
				node = document.getElementById(nodeName);

			} else {
				nodeFlash = document.createElement("object");
				nodeFlash.setAttribute("data", this.flashUrl);
				nodeFlash.setAttribute("type", "application/x-shockwave-flash");
				nodeFlash.setAttribute("width", nw);
				nodeFlash.setAttribute("height", nh);
				nodeFlash.setAttribute("id", nodeName);
				nodeFlash.className = "efx_form_flashtextarea";

				this.createParameter(nodeFlash, "flashvars", sVars);
				this.createParameter(nodeFlash, "allowScriptAccess", "always");
				if (this.bckColor != undefined) this.createParameter(nodeFlash, "bgcolor", this.bckColor);

				parent.replaceChild(nodeFlash, node);
			}

			parent.appendChild(nodeAlternate);
			this.replacedTextAreas[this.replacedTextAreas.length] = {tf:nodeAlternate, fl:nodeFlash}
		}

		var forms = document.forms;
		var self = this;
		for (var i = 0, l = forms.length; i<l; i++){
			var oldHandler = forms[i].onsubmit;
			forms[i].onsubmit = function(){
				return self.doSubmit(oldHandler);
			}
		}
	},

	createParameter:function (nodeObject, sName, sValue){
		var node = document.createElement("param");
		node.setAttribute("name", sName);
		node.setAttribute("value", sValue);
		nodeObject.appendChild(node);
	},

	getListOfReplacements:function(pElement, pAttr, pValue){
		var list = [];
		var tAreas = document.getElementsByTagName(pElement);
		for (var j = 0, limit = tAreas.length; j < limit; j++){
			var node = tAreas[j];
			var alt = node.getAttribute(pAttr);
			if (alt == pValue){
				list[list.length] = node;
			}
		}

		return list;
	},

	getPlayerVersion : function(){
	   var pv = {major:0, minor:0, rev:0};
	   var va = [0,0,0];
		if(navigator.plugins && navigator.mimeTypes.length){
			var x = navigator.plugins["Shockwave Flash"];
			if(x && x.description) {
				va = x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".");
			}
		} else if (this.isIE){
		   try {
				var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				va = axo.GetVariable("$version").split(" ")[1].split(",");
		   } catch (e) {}
		}

		pv.major = parseInt(va[0]) || 0;
		pv.minor = parseInt(va[1]) || 0;
		pv.rev = parseInt(va[2]) || 0;
		return pv;
	},

	versionIsValid:function(oRequired, oCurrent){
		if (oRequired.major > oCurrent.major) return false;
		if (oRequired.major < oCurrent.major) return true;
		if (oRequired.minor > oCurrent.minor) return false;
		if (oRequired.minor < oCurrent.minor) return true;
		return (oRequired.rev <= oCurrent.rev);
	},

	init:function(){
		if (this.inited) return;
		this.inited = true;
		setTimeout("fTAR.replaceElements()", 5);
	},

	setFilemanager:function(sFManagerUrl){
		this.fmUrl = sFManagerUrl || "";
	},

	setBaseURL:function(sBaseUrl){
		this.baseURL = sBaseUrl;
	},

	setButtons:function(nButtons){
		if (nButtons != undefined) this.buttons = nButtons;
	},

	setBackColor:function(pColor){
		this.bckColor = pColor;
	},

	setup:function(sFlashUrl, sFlashUrl2, bAutoUpdate){
		if (this.inited) return;
		this.flashUrl = sFlashUrl;
		this.flashUrl2 = sFlashUrl2;

		this.isIE = window.ActiveXObject || false;
		var pversion = this.getPlayerVersion();
		var useIt = false;

		if (this.versionIsValid({major:6, minor:0, rev:65}, pversion)){
			if (this.versionIsValid({major:8, minor:0, rev:0}, pversion)){
				useIt = true;

			} else if (bAutoUpdate){
				this.update = useIt = true;
				this.location = escape(window.location);
				this.title = document.title;
				document.title = document.title.slice(0, 47) + " - Flash Player Installation";
			}
		}

		if (useIt){
			if(typeof window.onload == "function"){
				var fOld = window.onload;
				window.onload = function(){ fOld(); fTAR.init(); }

			} else {
				window.onload = fTAR.init;
			}
		}
	}
}

if(typeof fTAR == "object"){
	fTAR.setFilemanager("flashedit/fileManager.php");
	fTAR.setBaseURL("http://server/starlight/images");
	fTAR.setButtons(0xfffff); /*0= */
	fTAR.setBackColor("#ffffff");
	fTAR.setup("flashedit/FlashTA.swf", "flashedit/FlashFB.swf", true);
}
