/**
 * @author Ryan Johnson <ryan@livepipe.net>
 * @copyright 2007 LivePipe LLC
 * @package Control.TextArea.ToolBar.BBCode
 * @license MIT
 * @url http://livepipe.net/projects/control_textarea/bbcode
 * @version 1.0.0
 */

Control.TextArea.ToolBar.BBCode = Class.create();
Object.extend(Control.TextArea.ToolBar.BBCode.prototype,{
	textarea: false,
	toolbar: false,
	options: {
		preview: false
	},
	initialize: function(textarea,options){
		this.textarea = new Control.TextArea(textarea);
		this.toolbar = new Control.TextArea.ToolBar(this.textarea);
		if(options)
			for(o in options)
				this.options[o] = options[o];
		
		//buttons
		this.toolbar.addButton('Bold',function(){
			this.wrapSelection('[b]','[/b]');
		},{
			className: 'bbcode_bold_button',
			title: 'Bold'
		});
		
		this.toolbar.addButton('Italics',function(){
			this.wrapSelection('[i]','[/i]');
		},{
			className: 'bbcode_italics_button',
			title: 'Italics'
		});

		this.toolbar.addButton('Spoiler',function(){
			this.wrapSelection('[spoiler]','[/spoiler]');
		},{
			className: 'bbcode_spoiler_button',
			title: 'Spoiler'
		});
				
		this.toolbar.addButton('Link',function(){
			selection = this.getSelection();
			response = prompt('Enter Link URL','');
			if(response == null)
				return;
			this.replaceSelection('[url=' + (response == '' ? 'http://link_url/' : response).replace(/^(?!(f|ht)tps?:\/\/)/,'http://') + ']' + (selection == '' ? 'Visit Page' : selection) + '[/url]');
		},{
			className: 'bbcode_link_button',
			title: 'Link'
		});
		
		this.toolbar.addButton('Image',function(){
			selection = this.getSelection();
			response = prompt('Enter Image URL','');
			if(response == null)
				return;
			this.replaceSelection('[img]' + (response == '' ? 'http://image_url/' : response).replace(/^(?!(f|ht)tps?:\/\/)/,'http://') + '[/img]');
		},{
			className: 'bbcode_image_button',
			title: 'Image'
		});
		
		this.toolbar.addButton('Quote',function(){
			this.wrapSelection('[quote]','[/quote]');
		},{
			className: 'bbcode_quote_button',
			title: 'Block Quote'
		});

		// 2/21/8 removed
		//this.toolbar.addButton('Code',function(){
		//	this.wrapSelection('[code]','[/code]');
		//},{
		//	id: 'bbcode_code_button'
		//});
		
		this.toolbar.addButton('Youtube video',function(){
			selection = this.getSelection();
			response = prompt('Enter YouTube URL (just a link to their page; do not paste their "embed" code, please)','');
			if(response == null)
				return;
			this.replaceSelection('[youtube]' + (response == '' ? 'http://www.youtube.com/watch?v=' : response).replace(/^(?!(f|ht)tps?:\/\/)/,'http://') + '[/youtube]');
		},{
			className: 'bbcode_youtube_button',
			title: 'Youtube video'
		});

		this.toolbar.addButton('Flickr Resource',function(){
			selection = this.getSelection();
			response = prompt("Enter a Flickr URL (just a link to a user's page, a set page, a tag page, or a group page)",'');
			if(response == null)
				return;
			this.replaceSelection('[flickr]' + (response == '' ? 'http://www.flickr.com/photos/someone' : response).replace(/^(?!(f|ht)tps?:\/\/)/,'http://') + '[/flickr]');
		},{
			className: 'bbcode_flickr_button',
			title: 'Flickr images'
		});

		
		/* this.toolbar.addButton('Help',function(){
			window.open('http://en.wikipedia.org/wiki/BBCode');
		},{
			className: 'bbcode_help_button'
		}); */
	}
});
