var htmltext;
var finishedtext;
var Format = {
	item:function (pos, font, face, size, color){
	        this.pos = pos;
			this.font = font;
	        this.face = face;
			this.size = size;
	        this.color = color;
	},
	do_font:function (fonttext){
		var i = 0;
		var j = 0;
		var n;
		var pos;
		var subfonttext;	
			
		fonttext = fonttext.toUpperCase();
	
		for (pos = 0; pos != -1; pos){
			pos = fonttext.indexOf("<FONT", pos);
	
			if (pos != -1){
				n = fonttext.indexOf(">", pos);
			
				fontlist[i] = new this.item(0, 0, 0, 0, 0);
				fontlist[i].pos = pos;
				fontlist[i].font = 1;
	
				subfonttext = fonttext.substring(pos, n);
			
				if (subfonttext.search(/FACE/) != -1)
					fontlist[i].face = 1;
				else
					fontlist[i].face = 0;
			
				if (subfonttext.search(/SIZE/) != -1)
					fontlist[i].size = 1;
				else
					fontlist[i].size = 0;
			
				if (subfonttext.search(/COLOR/) != -1)
					fontlist[i].color = 1;
				else
					fontlist[i].color = 0;
	
				pos++;
				i++;
			}
		}

		for (pos = 0; pos != -1; pos){
			pos = fonttext.indexOf("</FONT>", pos++);
		
			if (pos != -1){
				fontclose[j] = new this.item(0, 0, 0, 0, 0);
				fontclose[j].pos = pos;
				fontclose[j].font = 1;	
				for (ii = i-1; ii >= 0; ii--){
					if (fontlist[ii].pos < pos){	
						if (fontlist[ii].font == 1){
							fontlist[ii].font = 0;
							fontclose[j].color = fontlist[ii].color;
							fontclose[j].size = fontlist[ii].size;
							fontclose[j].face = fontlist[ii].face;
							ii = -1;
						}
					}		
				}
				pos++;
				j++;
			}  else {
				fontclose[j] = new this.item(0, 0, 0, 0, 0);
				fontclose[j].font = 0;
			}
		}
	},
	do_anchor:function (fonttext){
		var i = 0;
		var j = 0;
		var n;
		var pos;
		var subfonttext;	
			
		fonttext = fonttext.toUpperCase();
	
		for (pos = 0; pos != -1; pos){
			pos = fonttext.indexOf("<A HREF", pos);
			if (pos != -1){
				n = fonttext.indexOf(">", pos);
			
				anchorlist[i] = new this.item(0, 0, 0, 0, 0);
				anchorlist[i].font = 1;
	
				subfonttext = fonttext.substring(pos, n);
			
				if (subfonttext.search(/MAILTO:/) != -1) {
					subfonttext = subfonttext.replace(/<A HREF=MAILTO:/, "");
					subfonttext = subfonttext.replace(/\"/, "");
					subfonttext = subfonttext.replace(/\'/, "");
					anchorlist[i].pos = 1; 
					subfonttext = subfonttext.toLowerCase();
					anchorlist[i].face = subfonttext;
				} else {
					anchorlist[i].pos = 2;
				}
	
				pos++;
				i++;
				
			} else {
				anchorlist[i] = new this.item(0, 0, 0, 0, 0);
				anchorlist[i].pos = 0;
			}	
		}
	},
	do_textarea:function (fonttext)
	{
		var i = 0;
		var j = 0;
		var n;
		var pos;
		var subfonttext;	
			
		textareatext = fonttext;
		fonttext = fonttext.toUpperCase();
		
		for (pos = 0; pos != -1; pos){
			pos = fonttext.indexOf("<TEXTAREA", pos);

			if (pos != -1){
				n = fonttext.indexOf(">", pos);
				pos = fonttext.indexOf("</TEXTAREA>", n);
				if (pos != -1){	
					textarealist[i] = new this.item(0, 0, 0, 0, 0);
					textarealist[i].face = textareatext.substring(n+1, pos);
					textarealist[i].pos = 1;
				}
	
				pos++;
				i++;
				
			} else {
				textarealist[i] = new this.item(0, 0, 0, 0, 0);
				textarealist[i].pos = 0;
			}	
		}
	},
	convert:function (field)
	{
		var bbcodetext = $('#'+field).val();

		if (finishedtext == bbcodetext){
			$('#'+field).val(htmltext);
			bbcodetext = $('#'+field).val();
		}		
		
		htmltext = $('#'+field).val();
		
		this.do_font(bbcodetext);
		
		bbcodetext = bbcodetext.replace(/<SCRIPT[^>]*>/gi, "<TEXTAREA>");
		bbcodetext = bbcodetext.replace(/<\/SCRIPT>/gi, "</TEXTAREA>");
		
		this.do_textarea(bbcodetext);
		this.do_anchor(bbcodetext);

		bbcodetext = bbcodetext.replace(/<BR>/gi, "\r");
		bbcodetext = bbcodetext.replace(/<BR(.*?)\/>/gi, "\r");
		bbcodetext = bbcodetext.replace(/<P>/gi, "\r\r");
		bbcodetext = bbcodetext.replace(/<P [^>]*>/gi, "\r\r");
		bbcodetext = bbcodetext.replace(/<CODE>/gi, "[code]");
		bbcodetext = bbcodetext.replace(/<\/CODE>/gi, "[/code]");
		bbcodetext = bbcodetext.replace(/<BLOCKQUOTE>/gi, "[quote]");
		bbcodetext = bbcodetext.replace(/<\/BLOCKQUOTE>/gi, "[/quote]");
		bbcodetext = bbcodetext.replace(/<UL[^>]*>/gi, "[ul]");
		bbcodetext = bbcodetext.replace(/<\/UL>/gi, "[/ul]");
		bbcodetext = bbcodetext.replace(/<OL[^>]*>/gi, "[ol]");
		bbcodetext = bbcodetext.replace(/<\/OL>/gi, "[/ol]");
		bbcodetext = bbcodetext.replace(/<LI>/gi, "[li]");
		bbcodetext = bbcodetext.replace(/<\/LI>/gi, "[/li]");
		bbcodetext = bbcodetext.replace(/<BIG>/gi, "[b]");
		bbcodetext = bbcodetext.replace(/<\/BIG>/gi, "[/b]");
		bbcodetext = bbcodetext.replace(/<B>/gi, "[b]");
		bbcodetext = bbcodetext.replace(/<\/B>/gi, "[/b]");
		bbcodetext = bbcodetext.replace(/<U>/gi, "[u]");
		bbcodetext = bbcodetext.replace(/<\/U>/gi, "[/u]");
		bbcodetext = bbcodetext.replace(/<I>/gi, "[i]");
		bbcodetext = bbcodetext.replace(/<\/I>/gi, "[/i]");
		bbcodetext = bbcodetext.replace(/<PRE[^>]*>/gi, "[code]");
		bbcodetext = bbcodetext.replace(/<\/PRE>/gi, "[/code]");
		bbcodetext = bbcodetext.replace(/<TEXTAREA[^>]*>/gi, "[code2]");
		bbcodetext = bbcodetext.replace(/<\/TEXTAREA>/gi, "[/code2]");
		bbcodetext = bbcodetext.replace(/<STRONG>/gi, "[b]");
		bbcodetext = bbcodetext.replace(/<\/STRONG>/gi, "[/b]");
		/* Fonts */
		bbcodetext = bbcodetext.replace(/<FONT COLOR=/gi, "[color=");
		bbcodetext = bbcodetext.replace(/<FONT SIZE=/gi, "[size=");
		bbcodetext = bbcodetext.replace(/ color=/gi, "][color=");
		bbcodetext = bbcodetext.replace(/ size=/gi, "][size=");
		/*IMAGES */
		bbcodetext = bbcodetext.replace(/<IMG SRC=/gi, "[img src=");
		bbcodetext = bbcodetext.replace(/<IMG ALT=/gi, "[img alt=");
		bbcodetext = bbcodetext.replace(/<IMG ALIGN=/gi, "[img align=");
		bbcodetext = bbcodetext.replace(/<IMG WIDTH=/gi, "[img width=");
		bbcodetext = bbcodetext.replace(/<IMG HEIGHT=/gi, "[img height=");
		bbcodetext = bbcodetext.replace(/ src=/gi, " src=");
		bbcodetext = bbcodetext.replace(/ alt=/gi, " alt=");
		bbcodetext = bbcodetext.replace(/ align=/gi, " align=");
		bbcodetext = bbcodetext.replace(/ width=/gi, " width=");
		bbcodetext = bbcodetext.replace(/ height=/gi, " height=");
	
		var fonttag;
		for (i = 0; fontclose[i].font != 0; i++)
		{
			fonttag = "";
	
			if (fontclose[i].color == 1){fonttag = fonttag + "[/color]";}
			if (fontclose[i].size == 1){fonttag = fonttag + "[/size]";}

			bbcodetext = bbcodetext.replace(/<\/FONT>/i, fonttag);
		}
	
		for (i = 0; anchorlist[i].pos != 0; i++){
			if (anchorlist[i].pos == 2){
				bbcodetext = bbcodetext.replace(/<A HREF/i, "[url");
				bbcodetext = bbcodetext.replace(/<\/A>/i, "[/url]");
			}
			if (anchorlist[i].pos == 1){
				bbcodetext = bbcodetext.replace(/<A HREF[^<]*<\/A>/i, anchorlist[i].face);
			}
		}

		bbcodetext = bbcodetext.replace(/<[^>]*>/g, "");
		bbcodetext = bbcodetext.replace(/>/g, "]");
		bbcodetext = bbcodetext.replace(/\'>/g, "\']");
		bbcodetext = bbcodetext.replace(/\">/g, "\"]");
		bbcodetext = bbcodetext.replace(/\>/g, "]");
		bbcodetext = bbcodetext.replace(/\']/g, "']");
		bbcodetext = bbcodetext.replace(/\"]/g, "\"]");
		bbcodetext = bbcodetext.replace(/ \/]/g, "]");

		$('#'+field).val(bbcodetext);
		finishedtext = $('#'+field).val();
	}
}
var fontlist = new Format.item(50);
var fontclose = new Format.item(50);
var anchorlist = new Format.item(50);
var textarealist = new Format.item(20);
