var RTE = {
	init: function() {

		//document.designMode = 'On'; 		// Moz, Op, Saf
		//document.body.contentEditable = true;	// Op, IE, Saf
				
		$$('.nmRTE').each(function(textarea) { RTE.initRTE(textarea); });
		
		
	
	},
	initRTE: function(ta) {
		
		var dims = ta.readAttribute('dimensions');
		
		Object.extend(ta,this.RTEmethods);
		
		ta.hide();
		
		var ie = Prototype.Browser.IE;

		ta.RTEwrapdiv = new Element('div');
		
		ta.RTEwrapdiv.setStyle({
			width: dims.split(' ')[0] + 'px',
			height: (dims.split(' ')[1]) + 'px',
			'border-style': 'solid'
		
		});


		ta.RTEiframe = new Element('iframe', {'class': 'dimstyle'});
		

		ta.RTEiframe.setStyle({
			'width': (dims.split(' ')[0] - 5) + 'px',
			'height': (dims.split(' ')[1] - 42) + 'px'
		
		});
		

		ta.RTEtoolbar = this.makeToolbar(ta);
		
		Element.insert(ta, {after : ta.RTEwrapdiv});

		Element.insert(ta.RTEwrapdiv, ta.RTEtoolbar);

		Element.insert(ta.RTEwrapdiv, ta.RTEiframe);
		 
	    var RTEdoc = ta.getDoc();
	    
	    RTEdoc.open();
	    
	    RTEdoc.write(ta.value);
	    
	   	RTEdoc.close();

		RTEdoc.designMode = 'On'; 		// Moz, Op, Saf
		if(RTEdoc.body) RTEdoc.body.contentEditable = true;	// Op, IE, Saf

		try {
			RTEdoc.execCommand('styleWithCSS',false,false);
		} catch(err) {}
		
		// handle onSubmit
		
		var form = ta.ancestors().find(function(el) { return el.tagName.toLowerCase() == 'form'; });
		
		if(form) {
			form.observe('submit',function() { ta.writeOut(); });
		}
			
		
	},
	makeToolbar: function(ta) {
	
		var tb = new Element('div', {'class': 'RTEtoolbar'});
		
		var boldbutton = new Element('input',{'class':'RTEbutton','type':'button','value':'B'});
		boldbutton.setStyle({'left': '5px','font-style':'bold'});
		
		var italicbutton = new Element('input',{'class':'RTEbutton','type':'button','value':'I'});
		italicbutton.setStyle({'left': '45px','font-style':'italic'});

		var underlinebutton = new Element('input',{'class':'RTEbutton','type':'button','value':'U'});
		underlinebutton.setStyle({'left': '85px','text-decoration':'underline'});

		Element.insert(tb,boldbutton);
		Element.insert(tb,italicbutton);
		Element.insert(tb,underlinebutton);
		
				
		boldbutton.observe('click',function() { ta.execCommand('bold',false,false); });
		italicbutton.observe('click',function() { ta.execCommand('italic',false,false); });
		underlinebutton.observe('click',function() { ta.execCommand('underline',false,false); });
		
		return tb;
	
	},
	RTEmethods: {
		getHTML: function() {

			return this.getDoc().body.innerHTML;
		
		},
		writeOut: function() {
			this.value = this.getHTML();
			//alert(this.value);
			//alert(" " === " ");
			
		},
		execCommand: function(a,b,c) {
			
			
			this.getDoc().execCommand(a,b,c);
		
		},
		getDoc: function() {
		
			ifr = this.RTEiframe;
						
			var doc = ifr.contentWindow || ifr.contentDocument;
			if (doc.document)
				doc = doc.document;
 			
 			return doc;

		}
		
		
	}


};

document.observe('dom:loaded', function() {

	RTE.init();

	

});

