/**
 * @author swannc
 */
var coversation_handle_page_load = function(obj){};

var IgnoreUserCommand = Class.create();

IgnoreUserCommand.prototype = {
	initialize: function(evt)
	{
		this.evt = evt;
	},
	execute: function( conversation_use_lite )
	{
		var elem = Event.findElement(this.evt,'a');
		var params = elem.href.split('?')[1].toQueryParams();
		var user_to_ignore = params.user_to_ignore;
		try{ var username = profile_usernameLoggedIn; } catch(e){ var username = ''; }
		if( location.href.indexOf('?') != -1 )
		{
			var return_url = encodeURIComponent(location.href + '&update=ignorelist');
		}
		else
		{
			var return_url = encodeURIComponent(location.href + '?update=ignorelist');
		}

		if( conversation_use_lite )
		{
			var are_sure = confirm('Are you sure you want to add ' + user_to_ignore + ' to your ignore list?');
			if( are_sure )
			{
				location.href = 'http://myespn.go.com/s/blocked/update?block=' + user_to_ignore + '&return_to=' + return_url;
			}
			return;
		}

		var url = "/profile/ignoreconvouser";
		var params = "username=" + username + "&ignore=" + user_to_ignore + "&format=html&returnUrl=" + return_url;
		var lightbox = new Lightbox();
		var event = {
			href: url + '?' + params,
			type: 'ajax'
			};
			var opts =
			{
				hideClose: true,
				cancelId: 'ignoreUser-button-cancel',
				handleCancel: lightbox.end,
				submitId: 'ignoreUser-form'
			};
			lightbox.start(event,null,opts);
	}

};

var MessageFactory = Class.create();
MessageFactory.prototype = {
	initialize: function(parse_function,obj)
	{
		if(obj)
		{
			this.parse_function = parse_function.bind(obj);
		}
		else
		{
			this.parse_function = parse_function;
		}
	},
	create: function(obj)
	{
		return new Message(obj,this.parse_function)
	}
};

var PageFactory = Class.create();
PageFactory.prototype = {
	initialize: function(parse_function,obj)
	{
		if(obj)
		{
			this.parse_function = parse_function.bind(obj);
		}
		else
		{
			this.parse_function = parse_function;
		}
	},
	create: function(obj)
	{
		return new Page(obj,this.parse_function)
	}
};

var Page = Class.create();
Page.prototype = {
	initialize: function(obj,parse_function)
	{
		this.parse_function = parse_function;
		for(var i in obj)
		{
			this[i] = obj[i];
		}
	},
	to_string: function()
	{
		return this.parse_function(this)
	}
};

var Message = Class.create();
Message.prototype = {
	initialize: function(obj,parse_function)
	{
		this.parse_function = parse_function;
		for(var i in obj)
		{
			if(i == 'item' || i == 'User')
			{
				for(var j in obj[i])
				{
					this[j] = obj[i][j];
				}
			}
			else
			{
				this[i] = obj[i];
			}
		}
	},
	to_string: function()
	{
		return this.parse_function(this)
	}
};

var __espn_conversation__ = function()
{

	var TranslationLookUp = {
		entries: {
			"delete this entry": 'borrar',
			'edit this entry': 'cambia',
			'report violation': 'reporter violación',
			'ignore user': 'ignorar este usuario',
			'add comment': 'Añade tu comentario',
			'comments': 'Comentarios',
			'comment': 'Comentario',
			'on': 'en',
			'be the first to comment': 'Sé el primero en comentar',
			'report this as a violation': 'reportar violación',
			'ignore this user': ' ',
			'delete this entry': ' ',
			'You must be at least 18 years old to contribute to ESPN Conversations': ' ',
			'comments are closed': ' '
		},
		look_up: function( term, lang )
		{
			if( lang == 'es' )
			{
				return TranslationLookUp.entries[term.toLowerCase()] || term;
			}
			return term;
		}

	};

	var User = Class.create();
	User.prototype = {
		initialize: function(username,ignore_list,feed_url,options)
		{
			this.username = username;
			this.ignore_list = ignore_list;
			this.feed_url = ignore_list;
			this.options = options;
		},
		can_post: function()
		{
			return this.username;
		},
		can_edit: function(from_user_name)
		{
			var can_edit = false;
			if( this.options.conversation_forbid_changes )
			{
				can_edit = false;
			}
			else if( this.username == from_user_name || this.options.conversation_global_allow_editing )
			{
				can_edit = true;
			}

			return can_edit;
		},
		can_delete: function(from_user_name)
		{
			var can_delete = false;

			if( this.options.conversation_forbid_changes )
			{
				can_delete = false;
			}
			else if( this.username == from_user_name || this.options.conversation_global_allow_deleting )
			{
				can_delete = true;
			}

			return can_delete;
		},
		can_delete_others: function()
		{

		},
		owns_message: function(message)
		{
			return this.username == message['@displayName'];
		}
	};

	var Conversation = Class.create();
	Conversation.prototype = {
		initialize: function()
		{
			this.send_to_reinstatement();

			this.options = this.build_options();

			this.prospero_login_code = typeof( conversation_prospero_login_code ) != 'undefined' ? conversation_prospero_login_code : '';

			this.store_in_buffer = ( this.options.conversation_attach_point != null );
			this.html = '';
			this.user = new User(profile_usernameLoggedIn,profile_ignoredList,conversation_feed_url,this.options);



			this.violation_click_listener = this.toggle_violation_form.bindAsEventListener(this);
			this.page_click_listener = this.handle_page_click.bindAsEventListener(this);
			this.ignore_click_listener = this.handle_ignore_click.bindAsEventListener(this);
			this.form_submit_listener = this.handle_form_submission.bindAsEventListener(this);
			this.delete_click_listener = this.delete_message.bindAsEventListener(this);
			this.edit_click_listener = this.edit_message.bindAsEventListener(this);

			var message_parse_function = this.options.conversation_parse_function || function(message)
			{
				if(message.skip) return '';

				var date_copy = new Date( message['@datePosted']+'' );
				var date_title = ( date_copy.date_time_to_local ) ? date_copy.date_time_to_local() : '';
				var time_ago_in_words = message['@datePosted'].time_ago_in_words().replace(' ','')
				time_ago_in_words = date_title

				if( this.options.conversation_lang == 'es' )
				{
					time_ago_in_words = time_ago_in_words.replace( 'Just now', 'Recien enviado' );
					time_ago_in_words = time_ago_in_words.replace( 'Less than a minute ago', 'Recien enviado' );
					time_ago_in_words = time_ago_in_words.replace( 'months', 'Meses' );
					time_ago_in_words = time_ago_in_words.replace( 'month', 'Mes' );
					time_ago_in_words = time_ago_in_words.replace( 'year', 'año' );
					time_ago_in_words = time_ago_in_words.replace( 'minute', 'minuto' );
					time_ago_in_words = time_ago_in_words.replace( 'hour', 'hora' );
					time_ago_in_words = time_ago_in_words.replace( 'week', 'semana' );
					time_ago_in_words = time_ago_in_words.replace( 'day', 'día' );
					time_ago_in_words = time_ago_in_words.replace( 'ago', '' );
					time_ago_in_words = time_ago_in_words.replace( ' at ', ' - ' );

					/*if( time_ago_in_words.indexOf( 'Recien enviado' ) == -1 )
					{
						time_ago_in_words = 'hace ' + time_ago_in_words;
					}*/
				}

				return '<li id="' + message.conversation_id_prefix + message['@userId'] + '-' + message['@tsn'] + '" class="conversation-row-' + message.row + '">\
						' + message.img_section + '\
						<div class="conversation-body-wrapper-outer">\
							<div class="conversation-body-wrapper">\
								<div class="conversation-body-header">\
									<strong><a href="' + message.user_link + '">' + message['@fromDisplayName'] + '</a></strong>\
									<span title="' + date_title + '" class="conversation-item-date">(' + time_ago_in_words.strip() + ')</span>\
								</div>\
								<div class="conversation-item-options">' + message.moderation_link + message.pipe + message.ignore_link + message.delete_link + ' ' + message.edit_link + '</div>\
								<div class="conversation-item-body">' + message.title + message.text.truncate(message.max_length) + '</div>\
							</div>\
						</div>\
						<div style="clear:both;"></div>\
					</li>';
			};

			var page_parse_function = this.options.conversation_parse_page_function || function(page)
			{
				var tag = this.options.conversation_pagination_type != 'between' ? 'span' : 'li';
				var parent_class_name = page.class_name == 'conversation-page-item-open' ? 'conversation-page-item-parent-open' : '';

				return '<' + tag + ' class="' + parent_class_name + '" id="' + this.options.conversation_page_id_prefix + page['@name'] + '">\
					<a id="' + this.options.conversation_page_id_prefix + page['@name'] + '-link" class="conversation-page-item ' + page.class_name + '" href="?feed=' + encodeURIComponent(page['@QS']) + '">' + page.text + ((this.options.conversation_pagination_type == 'between') ? ' (' + page.start + '-' + page.end + ')</a>' : '</a>' + page.next) + '\
					<div class="conversation-page-holder" id="' + this.options.conversation_page_id_prefix + page['@name'] + '-container"></div>\
				</' + tag + '>';
			};

			this.pf = new PageFactory(page_parse_function,this);
			this.mf = new MessageFactory(message_parse_function,this);


			var title_input = this.options.conversation_include_title ? '<input class="conversation-post-title" type="text" maxlength="100" />' : '';

			if( typeof( profile_age ) == 'undefined' || profile_age >= 18 )
			{
				this.form_template = new Template(
					'<form charset="UTF-8" accept="UTF-8" accept-charset="UTF-8" class="conversation-form" style="display:#{display};" id="' + this.options.conversation_id_prefix + 'submit-post-form" method="post" action="http://mb.espn.go.com/dir-app/acx/ACPost.aspx?' + this.prospero_login_code + '&webtag=' + this.options.conversation_webtag + '&returnStatus=y">\
						' + title_input + '\
						<textarea id="' + this.options.conversation_id_prefix + '_post_edit" onkeyup="inputCounter(\'' + this.options.conversation_id_prefix + '_post\', ' + this.options.conversation_max_length + ');" class="conversation-form-body" name="body">#{conversation_post_body}</textarea>\
						<div class="inputCounter"><span id="' + this.options.conversation_id_prefix + '_post_counter">0</span> / ' + this.options.conversation_max_length + '</div>\
						<input type="hidden" name="toUserId" value="#{conversation_to_user_id}" />\
						<input type="hidden" name="webtag" value="' + this.options.conversation_webtag + '" />\
						<input type="hidden" name="folderId" value="#{conversation_folder_id}" />\
						<input type="hidden" name="catList" value="#{conversation_cat_list}" />\
						<input type="hidden" name="subject" value="#{conversation_subject}" />\
						<input type="hidden" name="contentId" value="#{conversation_content_id}" />\
						<input type="hidden" name="returnUrl" value="#{conversation_return_url}" />\
						<input type="hidden" name="errorUrl" value="#{conversation_error_url}" />\
						<input type="hidden" name="contentUrl" value="#{conversation_content_url}"  />\
						<input type="image"  src="' + this.options.conversation_post_submit_image + '" alt="Submit" name="Send" value="Submit" />\
						<a href="#" id="' + this.options.conversation_id_prefix + 'cancel-button"><img src="' + this.options.conversation_post_cancel_image + '" alt="Cancel" /></a>\
					</form>'
				);
			}
			else if( typeof( conversation_dont_show ) != 'undefined' && conversation_dont_show )
			{
				this.form_template = new Template(
					'<form class="conversation-form" style="display:#{display};" id="' + this.options.conversation_id_prefix + 'submit-post-form" method="post" action="http://mb.espn.go.com/dir-app/acx/ACPost.aspx?webtag=' + this.options.conversation_webtag + '&returnStatus=y">' + TranslationLookUp.look_up('Comments are closed', this.options.conversation_lang ) + '</form>'
				);
			}
			else
			{
				this.form_template = new Template(
					'<form class="conversation-form" style="display:#{display};" id="' + this.options.conversation_id_prefix + 'submit-post-form" method="post" action="http://mb.espn.go.com/dir-app/acx/ACPost.aspx?webtag=' + this.options.conversation_webtag + '&returnStatus=y">\
						' + TranslationLookUp.look_up('You must be at least 18 years old to contribute to ESPN Conversations', this.options.conversation_lang) + '.\
					</form>'
				);
			}


			this.edit_form_template = new Template(
				'<form charset="UTF-8" accept="UTF-8" accept-charset="UTF-8" method="post" class="conversation-form" id="form-#{tid}-#{tsn}" action="http://mb.espn.go.com/dir-app/acx/ACPost.aspx?' + this.prospero_login_code + '&webtag=' + this.options.conversation_webtag + '&returnStatus=y">\
					' + title_input + '\
					<textarea id="' + this.options.conversation_id_prefix + '_post_edit" onkeyup="inputCounter(\'' + this.options.conversation_id_prefix + '_post\', ' + this.options.conversation_max_length + ');" class="conversation-form-body" name="body">#{body}</textarea>\
					<div class="inputCounter" ><span id="' + this.options.conversation_id_prefix + '_post_counter">#{body_length}</span> / ' + this.options.conversation_max_length + '</div>\
					<input type="hidden" name="editTsn" value="#{tsn}" />\
					<input type="hidden" name="tid" value="#{tid}" />\
					<input type="hidden" name="webtag" value="' + this.options.conversation_webtag + '" />\
					<input type="hidden" name="returnUrl" value="' + location.href + '" />\
					<input type="image"  src="' + this.options.conversation_post_edit_image + '" alt="Submit" name="Send" value="Submit" />\
					<a class="conversation-cancel-edit-link" href="#"><img src="' + this.options.conversation_post_cancel_image + '" alt="Cancel" /></a>\
				</form>'
			);

			coversation_handle_page_load = this.handle_page_load.bind(this);


			this.build_meta();
			this.build_context();

			if( this.options.conversation_show_form_if_no_comments && !this.meta['@messageCount'] )
			{
				this.options.conversation_show_post_form = true;
			}
			if( !this.meta['@messageCount'] && this.options.conversation_if_no_comments_text )
			{
				this.options.conversation_add_text = this.options.conversation_if_no_comments_text;
			}

			if(this.options.conversation_feed_type == 'talkback' && this.options.conversation_content_id == '0') return;

			this.write_to_buffer('<div class="conversation" id="' + this.options.conversation_id_prefix + 'container">');

			if( this.options.conversation_put_form_above_comments )
			{
				this.build_submission_form();
			}
			this.build_top_navigation();
			this.build_message_list();
			if(this.options.conversation_pagination_type) this.build_pagination();
			if( !this.options.conversation_put_form_above_comments )
			{
				this.build_submission_form();
			}

			this.write_to_buffer('</div>');

			this.render();
		},
		send_to_reinstatement: function()
		{
			var q_string = location.href.indexOf('?') != -1 ? location.href.split('?')[1] : '';
			var params = q_string.toQueryParams();

			if( params.status == 'moderated' )
			{
				location.href = 'http://myespn.go.com/s/users/reinstate';
			}
		},
		build_message_object: function(message)
		{

			window['conversation_global_tsn'] = message['@tsn'];

			message.conversation_id_prefix = this.options.conversation_id_prefix;
			message.skip = profile_ignoredList.include(message['@displayName']);
			message.max_length = this.options.conversation_max_length + 50;
			message.moderation_link = (this.options.conversation_violation_text && !this.user.owns_message(message)) ? '<a title="' + TranslationLookUp.look_up('Report this as a violation', this.options.conversation_lang) + '" href="?from_user_id=' + message['@fromUserId'] + '&to_user_id=' + (message['@toUserId'] || 0) + '&tid=' + this.meta['@tid'] + '&tsn=' + (message['@tsn'] || 0) + '&reply_to_tsn=' + (message['@replyToTsn'] || 0) + '&reply_to_id=' + (message['@tid'] || 0) + '" class="conversation-item-report">' + this.options.conversation_violation_text + '</a>' : '';
			message.ignore_link = (this.user.username != message['@displayName'] && this.options.conversation_ignore_text) ? '<a title="' + TranslationLookUp.look_up('Ignore this user', this.options.conversation_lang) + '" href="?user_to_ignore=' + message['@displayName'] + '" class="conversation-item-ignore">' + this.options.conversation_ignore_text + '</a>' : '';
			message.edit_link = (this.user.can_edit(message['@displayName']) && this.options.conversation_edit_text) ? '<a title="' + TranslationLookUp.look_up('Edit this entry', this.options.conversation_lang) + '" href="?action=edit&tid=' + this.meta['@tid'] + '&tsn=' + message['@tsn'] + '" class="conversation-item-edit">' + this.options.conversation_edit_text + '</a>' : '';
			message.delete_link = (this.user.can_delete(message['@displayName']) && this.options.conversation_delete_text) ? '<a title="' + TranslationLookUp.look_up('Delete this entry', this.options.conversation_lang) + '" href="?action=delete&folderId=' + this.meta['@folderId'] + '&contentId=' + this.meta['@contentId'] + '&tid=' + this.meta['@tid'] + '&tsn=' + message['@tsn'] + '" class="conversation-item-delete">' + this.options.conversation_delete_text + '</a>' : '';
			message.user_link = this.options.conversation_link_user_to == 'search' ? __community_base + '/conversation/?ccmb_search_type=user&ccmb_search_text=' + message['@displayName'] : this.options.conversation_link_user_to == 'profile' ? 'http://sportsnation.espn.go.com/fans/' + message['@displayName'] : '';

			message.ignore_link = ''
			//DIRTY HACK

			message.user_link = message.user_link.replace('.com//','.com/')

			if( this.options.conversation_forbid_deletes )
			{
				message.delete_link = '';
			}

			message.pipe = (this.options.conversation_violation_text && this.options.conversation_ignore_text && message.ignore_link && message.moderation_link) ? ' | ' : '';

			message.img_section = this.image_section(message['@displayName'] || '');

			message.text = conversation_body( message, this.options.conversation_allow_html )
			message.title = conversation_title( message )



			message.text = conversation_protect_accented_characters( message.text );
			message.title = conversation_protect_accented_characters( message.title );

			if( this.options.conversation_link_titles && message.title )
			{
				message.title = '<a href="' + conversation_title_url( message,this.options.conversation_link_to )  + '">' + message.title + '</a>'
			}

			if(message.title)
			{
				message.title = '<h2 class="conversation-post-header">' + message.title + '</h2>'
			}


			if( this.meta['@contentId'] )
			{
				window['conversation_global_id'] = this.meta['@contentId'].replace('NOTES','COMMENTWALL') + '/' + this.meta['@tid'] + '/' + message['@tsn'];
			}
			return message;
		},
		image_section: function(user_name)
		{
			if(!this.options.conversation_include_photos) return '';

			var src = __mug_path + user_name.toLowerCase() + '/48/' + user_name.toLowerCase() + '.jpg';


			if(this.options.conversation_show_default_image)
			{
				return '<div class="conversation-mug-shot"><a href="http://sportsnation.espn.go.com/fans/' + user_name +'"><img alt="' + user_name + '" src="' + src + '" onerror="this.src=__static_base+\'/i/profile/default/silo1_guy_35x48.jpg\'; this.onerror=null;" /></a></div>';
			}
			else
			{
				return '<div class="conversation-mug-shot"><img alt="' + user_name + '" src="' + src + '" onerror="$(this.parentNode).remove();" /></div>';
			}
		},
		build_top_navigation: function()
		{
			if( this.options.conversation_feed_type == 'featuredmsgs' )
			{
				var url = this.meta['@contentURL'] || this.options.conversation_content_url;
				url = /http:\/\/sports\.espn\.go\.com\/\w+\/news/.test(url) ? 'http://myespn.go.com/s/conversations/show/story/' + this.meta['@contentId'] : url;

				if( this.options.conversation_lang == 'es' )
				{
					//this.write_to_buffer( '<div class="conversation-banner"><a href="' + url + '"><img src="http://assets.espn.go.com/profile/i/deportes_conversacion.gif" alt="" /></a></div>' );
				}
				else
				{
					//this.write_to_buffer( '<div class="conversation-banner"><a href="' + url + '"><img src="http://assets.espn.go.com/profile/i/espnconvo_small.gif" alt="" /></a></div>' );
				}

				if( this.meta['@messageCount'] > 1 )
				{
					this.write_to_buffer( '<p><strong><a href="' + url + '">' + this.meta['@messageCount'] + ' ' + TranslationLookUp.look_up('comments',this.options.conversation_lang) + '</a></strong> ' + TranslationLookUp.look_up('on',this.options.conversation_lang) + ' <strong>"' + this.meta['@subject'] + '"</strong></p>');
				}
				else if( this.meta['@messageCount'] )
				{
					this.write_to_buffer( '<p><strong><a href="' + url + '">' + this.meta['@messageCount'] + ' ' + TranslationLookUp.look_up('comment',this.options.conversation_lang) + '</a></strong> ' + TranslationLookUp.look_up('on',this.options.conversation_lang) + ' <strong>"' + this.meta['@subject'] + '"</strong></p>');
				}
				else
				{
					var id_for_closure = this.options.conversation_id_prefix + '-featured-count';
					var lang = this.options.conversation_lang;
					window['count_for_featured'] = function( data )
					{
						try
						{
							var count = data.ContentElement.Forum[0].Folder[0].Discussion[0]['@messageCount'];
							if( count == 1 ){ $(id_for_closure).update( count + ' ' + TranslationLookUp.look_up('comment',lang) ); }
							else if( count ){ $(id_for_closure).update( count + ' ' + TranslationLookUp.look_up('comments',lang) ); }


						}catch(e){}
					}

					var script = document.createElement( 'script' );
					script.type = 'text/javascript';
					script.src = this.options.conversation_feed_url.replace('type=featuredmsgs','type=talkback') + '&callback=count_for_featured&callbackParam=local';
					$$('head')[0].appendChild( script );

					this.write_to_buffer( '<p><strong><a href="' + url + '" id="' + this.options.conversation_id_prefix + '-featured-count">' + TranslationLookUp.look_up('Be the first to comment',this.options.conversation_lang) + '</a></strong> ' + TranslationLookUp.look_up('on',this.options.conversation_lang) + ' <strong>"' + this.options.conversation_subject + '"</strong></p>');
				}
			}
			if(!this.options.conversation_include_top_navigation || this.options.conversation_put_form_above_comments) return;
			if(!this.meta['@messageCount'] && this.options.conversation_hide_top_nav_if_no_comments) return;
			if(this.options.conversation_allow_posting) this.write_to_buffer('<div id="' + this.options.conversation_id_prefix + 'nav-top"><a class="commentBubble conversation-form-toggle" href="#conversation_submit_post_form">' + this.options.conversation_add_text + '</a> (' + (this.meta['@messageCount'] || 0) + ')</div>');
		},
		handle_form_submission: function(evt)
		{

			//if( this.options.conversation_dont_pre_check ){ return true; }

			var base = location.href.split('?');
			base = base.length ? base[0] : location.href;
			var url = 'https://r.espn.go.com/espn/memberservices/pc/login?ref=conversation&appRedirect=' + encodeURIComponent(location.href);

			if( this.options.conversation_lang != 'en' )
			{
				url = url.replace( '/pc/login','/pc/login_deportes' );
			}

			var seperator = ( location.href.indexOf('?') == -1 ) ? '?' : '&';


			if(!this.user.can_post())
			{
				Event.stop(evt);
				$A($('conversation-submit-post-form').childNodes).each(function(node)
				{
					if(node.nodeName.toLowerCase() == 'textarea')
					{
						url += encodeURIComponent(seperator + node.name + '=' + encodeURIComponent(node.value));
					}
				});
				location.href = ( url + encodeURIComponent('#conversation-_post_edit') );
			}
			else if(this.options.conversation_include_title)
			{
				var form = $(Event.findElement(evt,'form'));
				var title_input = $(form.select('.conversation-post-title')[0]);
				var textarea = $(form.getElementsByTagName('textarea')[0]);

				textarea.value = '~~##' + title_input.value + '##~~' + textarea.value;
			}
		},
		build_submission_form: function()
		{
			if(!this.options.conversation_allow_posting) return;

			try{ var options = location.href.split('?')[1].toQueryParams(); } catch(e) { var options = {}; }

			options.display = this.options.conversation_show_post_form ? '' : 'none';
			options.conversation_to_user_id = options.toUserId || this.options.conversation_to_user_id;
			options.conversation_folder_id = options.folderId || this.options.conversation_folder_id;
			options.conversation_cat_list = options.catList || this.options.conversation_cat_list;
			options.conversation_subject = options.subject || this.options.conversation_subject;
			options.conversation_content_id = options.contentId || this.options.conversation_content_id;
			options.conversation_return_url = options.returnUrl || this.options.conversation_return_url;
			options.conversation_error_url = options.errorUrl || this.options.conversation_error_url;
			options.conversation_content_url = options.contentUrl || this.options.conversation_content_url;
			options.conversation_reply_to_tsn = options.ReplyToTsn || this.options.conversation_reply_to_tsn;
			options.conversation_post_body = options.body || '';


			options.conversation_subject = conversation_protect_accented_characters( options.conversation_subject );

			if(!this.options.conversation_show_post_form)
			{
				this.write_to_buffer('<div class="conversation-toggle-form-item" id="' + this.options.conversation_id_prefix + 'form-toggle-container"><a href="#" class="conversation-form-toggle">' + this.options.conversation_add_text + '</a> on <strong>' + (this.options.conversation_subject || this.meta['@subject']) + '</strong></div>');
			}

			this.write_to_buffer(this.form_template.evaluate(options));


			if( this.options.conversation_lang != 'es' && this.options.conversation_include_legal_terms )
			{
				this.write_to_buffer('<div class="conversation-legal"><em>Member comments together with Member Names may be used on TV and other ESPN media platforms.</em></div>');
			}

		},
		handle_ignore_click: function(evt)
		{
			new IgnoreUserCommand(evt).execute( this.options.conversation_use_lite  );
			Event.stop(evt);
		},
		toggle_violation_form: function(evt)
		{
			var elem = $(Event.findElement(evt,'a'));
			var li = $(Event.findElement(evt,'li'));
			var params = elem.href.split('?')[1].toQueryParams();
			var rgb = li.getStyle('backgroundColor');
			var color = (rgb == 'transparent') ? 'ffffff' : rgb.parseColor().replace('#','');

			if( this.options.conversation_violation_style == 'lightbox' )
			{
				color = 'ffffff';
			}

			var iframe_url = 'http://mb.espn.go.com/n/pfx/forum.aspx?webtag=' + this.options.conversation_webtag + '&folderId=' + this.options.folder_id + '&bgcolor=' + color + '&style=conversation&catList=Conversations^Blogs&fromUID=' + params.from_user_id + '&toUserId=' + params.to_user_id + '&nav=TosReportMaster&quoted=true&tid=' + params.tid + '&tsn=' + params.tsn + '&replyToTid=' + params.reply_to_id + '&replyToTsn=' + params.reply_to_tsn + '&url=' + encodeURIComponent(location.href);

			if( this.options.conversation_lang == 'es' )
			{
				iframe_url += '&sport=deportes';
			}

			var iframe_html = '<div class="lb" style="height:215px; background:#EEE;"><iframe src="' + iframe_url + '" width="510" height="200" border="0" frameborder="0" marginheight="0" marginheight="0" scrolling="no"></iframe></div>';
			//http://mb.espn.go.com/n/pfx/forum.aspx?webtag=ESPNSpanish&folderId=1&catList=Comentarios+Generales&fromUID=1871174712&toUserId=1871174712&id=general&nav=TosReportMaster&quoted=true&sport=deportes&tid=18596&tsn=1&replyToTid=18596&replyToTsn=1



			if( this.options.conversation_violation_style == 'lightbox' )
			{
				var iframe_html = '<div class="lb" style="text-align:left;border: 1px solid rgb(153, 153, 153); padding: 8px; font-size: 110%;">\
					<h2>\
						<span><img alt="" src="http://assets.espn.go.com/profile/i/icon_error.gif"/> </span>\
						Report a Violation\
					</h2>\
					<p>\
						<iframe src="' + iframe_url + '" width="510" height="200" border="0" frameborder="0" marginheight="0" marginheight="0" scrolling="no"></iframe>\
					</p>\
				</div>';
			}
			else
			{
				var iframe_html = '<p><iframe src="' + iframe_url + '" width="510" height="200" border="0" frameborder="0" marginheight="0" marginheight="0" scrolling="no"></iframe></p>';
			}

			var iframes = li.getElementsByTagName('iframe');

			if( this.options.conversation_violation_style == 'lightbox' )
			{
				var lightbox = new Lightbox();
				var event = {
					href: iframe_html,
					type: 'html'
				};

				var opts =
				{
					hideClose: true
				};
				Event.stop(evt);
				lightbox.start(event,null,opts);
			}
			else
			{
				if(iframes.length)
				{
					$A(iframes).each(function(iframe){ $(iframe).remove(); })
					elem.update(this.options.conversation_violation_text);
				}
				else
				{
					new Insertion.Bottom(li, iframe_html);
					if(this.options.conversation_violation_cancel_text) elem.update(this.options.conversation_violation_cancel_text);
				}

				Event.stop(evt);
			}
		},
		handle_page_load: function(obj)
		{
			try{ var messages = obj.ContentElement.Forum[0].Folder[0].Discussion[0].Message; }
			catch(e){ var messages = []; }

			if( this.options.conversation_reverse_messages )
			{
				messages.reverse();
			}

			this.build_context(context);

			$(this.options.conversation_page_id_prefix + this.page + '-link').removeClassName('conversation-page-item-closed').removeClassName('conversation-page-item-progress').addClassName('conversation-page-item-open');

			try{
				$($(this.options.conversation_page_id_prefix + this.page + '-link').parentNode).addClassName('conversation-page-item-parent-open');
			}catch(e){  }

			if(this.options.conversation_pagination_type == 'between')
			{
				try{ var context = obj.ContentElement }
				catch(e){ var context = {}; }
				this.build_message_list(messages);
				$(this.options.conversation_page_id_prefix + this.page + '-container').update(this.empty_buffer()).scrollTo();
			}
			else
			{
				this.build_message_list(messages,true);
				$(this.options.conversation_id_prefix + 'message-list').update(this.empty_buffer()).scrollTo();
			}
			this.activate_violation_links();
			this.activate_delete_links();
			this.activate_edit_links();
			this.activate_ignore_links();
		},
		hide_others: function()
		{
			for(var i = 1; i <= this.page_count; i++ )
			{
				if(i != this.page)
				{
					$(this.options.conversation_page_id_prefix + i + '-link').removeClassName('conversation-page-item-open');
					try{
						$($(this.options.conversation_page_id_prefix + i + '-link').parentNode).removeClassName('conversation-page-item-parent-open');
					}catch(e){}

					$(this.options.conversation_page_id_prefix + i + '-link').removeClassName('conversation-page-item-progress');
					$(this.options.conversation_page_id_prefix + i + '-link').addClassName('conversation-page-item-closed');
					$(this.options.conversation_page_id_prefix + i + '-container').hide();
				}
				else
				{
					$(this.options.conversation_page_id_prefix + i + '-link').removeClassName('conversation-page-item-closed');
					$(this.options.conversation_page_id_prefix + i + '-link').addClassName('conversation-page-item-progress');
					$(this.options.conversation_page_id_prefix + i + '-link').removeClassName('conversation-page-item-open');
					try{
						$($(this.options.conversation_page_id_prefix + i + '-link').parentNode).removeClassName('conversation-page-item-parent-open');
					}catch(e){}
					$(this.options.conversation_page_id_prefix + i + '-container').show();
				}
			}
		},
		apply_behaviors: function()
		{
			$$('#' + this.options.conversation_id_prefix + 'page-list .conversation-page-item').each(function(node)
			{
				$(node).observe('click',this.page_click_listener);
			}.bind(this));
			try{ $(this.options.conversation_id_prefix + 'submit-post-form').observe('submit',this.form_submit_listener); } catch(e){}

			$$('#' + this.options.conversation_id_prefix + 'container .conversation-form-toggle').each(function(node)
			{
				$(node).observe('click',function(evt)
				{
					$(this.options.conversation_id_prefix + 'submit-post-form').show().scrollTo();
					Event.stop(evt);
				}.bind(this));
			}.bind(this));

			$$('#' + this.options.conversation_id_prefix + 'container .conversation-form').each(function(node)
			{
				$(node).observe('submit',function(evt)
				{
					$A( node.getElementsByTagName('textarea') ).each( function( textarea ){
						textarea.value = conversation_protect_accented_characters( textarea.value );
					});
				}.bind(this));
			}.bind(this));

			if(this.options.conversation_show_post_form)
			{
				try{ $(this.options.conversation_id_prefix + 'cancel-button').hide(); } catch(e){}
			}
			else
			{
				try{ $(this.options.conversation_id_prefix + 'cancel-button').observe('click',function(evt)
				{
					$(Event.findElement(evt,'form')).hide();
					Event.stop(evt);
				}); } catch(e){}
			}

			this.activate_ignore_links();
			this.activate_delete_links();
			this.activate_edit_links();
			this.activate_violation_links();
		},
		activate_delete_links: function()
		{
			var nodes = $$('#' + this.options.conversation_id_prefix + 'message-list a.conversation-item-delete');

			nodes.each(function(node)
			{
				$(node).observe('click',this.delete_click_listener);
			}.bind(this));
		},
		activate_edit_links: function()
		{
			var nodes = $$('#' + this.options.conversation_id_prefix + 'message-list a.conversation-item-edit');

			nodes.each(function(node)
			{
				$(node).observe('click',this.edit_click_listener);
			}.bind(this));
		},
		handle_page_click: function(evt)
		{
			Event.stop(evt);
			var el = $(Event.findElement(evt,'a'));

			if(el.hasClassName('conversation-page-item-open'))
			{
				return;
			}

			var query_string = decodeURIComponent(el.href.split('feed=')[1]);
			var args = query_string.toQueryParams();
			var container_id = $(this.options.conversation_page_id_prefix + args.page + '-container');

			this.page = args.page;

			this.hide_others();
			if($(container_id).empty())
			{
				var script = document.createElement('script');
				var base = this.options.conversation_feed_url.split('?')[0];
				var src = base + '?' + query_string + '&callbackParam=local&callback=coversation_handle_page_load';

				script.src = src;
				script.type = 'text/javascript';

				$$('head')[0].appendChild(script);
			}
			else
			{
				$(this.options.conversation_page_id_prefix + args.page + '-link').removeClassName('conversation-page-item-progress');
				$(this.options.conversation_page_id_prefix + args.page + '-link').removeClassName('conversation-page-item-closed');
				$(this.options.conversation_page_id_prefix + args.page + '-link').addClassName('conversation-page-item-open');
				try{
					$($(this.options.conversation_page_id_prefix + args.page + '-link').parentNode).addClassName('conversation-page-item-parent-open');
				}catch(e){  }
				$(this.options.conversation_page_id_prefix + args.page).scrollTo();
			}
		},
		activate_violation_links: function(elem)
		{
			var nodes = $$('#' + this.options.conversation_id_prefix + 'message-list a.conversation-item-report');

			nodes.each(function(node)
			{
				$(node).observe('click',this.violation_click_listener);
			}.bind(this));
		},
		activate_ignore_links: function()
		{
			$$('#' + this.options.conversation_id_prefix + 'message-list .conversation-item-ignore').each(function(node)
			{
				$(node).observe('click',this.ignore_click_listener);
			}.bind(this));
		},
		prospero_response: function()
		{
			this.response = this.response || window['ProsperoResponse' + this.options.conversation_script_key];

			return this.response;
		},
		build_context: function(context)
		{
			if(!context)
			{
				try{ context = this.prospero_response().ContentElement; }
				catch(e){ context = {}; }
			}
			context = context || {};
			try{ var pages = this.prospero_response().ContentElement.DirectoryContext.Page || []; }
			catch(e){ var pages = []; }

			var arg_s = context['@args'];
			try { var args = arg_s.split(';'); } catch(e) { var args = []; }

			args.each(function(arg)
			{
				var pieces = arg.split(':');
				this[pieces[0]] = pieces[1];

			}.bind(this));

			if(!this.page)
			{
				this.page = 1;
				/*if(this.options.conversation_reverse_pagination || this.options.conversation_pagination_type != 'between')
				{
					this.page = 1;
				}
				else
				{
					this.page = pages.length;
				}*/
			}

			this.page_count = pages ? pages.length : 0;
		},
		build_meta: function()
		{
			try{ this.meta = this.prospero_response().ContentElement.Forum[0].Folder[0].Discussion[0]; }
			catch(e){ this.meta = {}; }

			window['conversation_global_id'] = this.meta['@tid'];
		},
		build_pagination: function()
		{
			try{ var pages = this.prospero_response().ContentElement.DirectoryContext.Page || []; }
			catch(e){ var pages = []; }

			if(this.options.conversation_reverse_pagination && this.options.conversation_pagination_type != 'between')
			{
				pages.reverse();
			}
			var tag = this.options.conversation_pagination_type != 'between' ? 'div' : 'ul';
			if(pages.length < 2 && this.options.conversation_pagination_type != 'between') return;
			this.write_to_buffer('<' + tag + ' id="' + this.options.conversation_id_prefix + 'page-list" class="conversation-pagination">');

			var greatest = parseInt( this.meta['@messageCount'] );
			var end = parseInt( (this.options.conversation_reverse_pagination) ? this.count : this.meta['@messageCount'] );

			pages.each(function(page)
			{
				var range = parseInt(this.count);
				var start = end - range + 1; //((pages.length - page['@name']) * range) + 1;


				if( start < 1 ) start = 1;

				var text = (this.options.conversation_pagination_type == 'between') ? TranslationLookUp.look_up('Comments', this.options.conversation_lang) : page['@name'];
				var class_name = (page['@name'] == this.page) ? 'conversation-page-item-open' : 'conversation-page-item-closed';


				/*if(page == pages[pages.length-1] && !this.options.conversation_reverse_pagination)
				{
					range = this.meta['@messageCount'];
					end = range;
				}
				else if(page == pages[0] && this.options.conversation_reverse_pagination)
				{
					range = this.meta['@messageCount'];
					end = range;
				}*/
				page.start = start;
				page.end = end;
				page.class_name = class_name;
				page.text = text;
				page.next = page == pages.last() ? '': ', ';

				if(this.options.conversation_reverse_pagination)
				{
					end = end + range;
				}
				else
				{
					end = start - 1;
				}

				if( page.end > greatest )
				{
					page.end = greatest;
				}

				var c_page = this.pf.create(page);
				this.write_to_buffer(c_page.to_string());
			}.bind(this));
			this.write_to_buffer('</' + tag + '>');
		},
		build_message_list: function(messages,exclude_ul)
		{
			if(!messages)
			{
				if(this.options.conversation_feed_type != 'talkback' && this.options.conversation_feed_type != 'featuredmsgs')
				{
					messages = [];
					base = null;

					try{ base = this.prospero_response().ContentElement.Forum[0]; }
					catch(e){}

					if( base && base.Folder && base.Folder.each )
					{
						base.Folder.each( function( item )
						{
							item.Discussion.each( function( sub_item )
							{
								if( sub_item && sub_item.Message )
								{
									sub_item.Message.each( function ( m )
									{
										for( var i in sub_item )
										{
											m[i] = sub_item[i];
										}
										messages.push( m );
									});
								}
							});
						});
					}
				}
				else
				{
					try{ messages = this.prospero_response().ContentElement.Forum[0].Folder[0].Discussion[0].Message; }
					catch(e){ messages = []; }

				}
				if( this.options.conversation_reverse_messages )
				{
					messages.reverse();
				}
			}


			if(!messages.length && this.options.conversation_send_to_if_not_found && location.href.indexOf('target_tsn') != -1)
			{
				location.href = this.options.conversation_send_to_if_not_found;
			}
			else if(!messages.length && this.options.conversation_no_items_message)
			{
				this.write_to_buffer('<div id="' + this.options.conversation_id_prefix + 'message-list">');
				this.write_to_buffer(this.options.conversation_no_items_message);
				this.write_to_buffer('</div>');
			}
			else
			{
				if(!exclude_ul) this.write_to_buffer('<ul id="' + this.options.conversation_id_prefix + 'message-list" class="conversation-list">');
				messages.each(function(i,count)
				{
					i.row = count % 2 == 0 ? 'even' : 'odd';
					var message = this.build_message_object(this.mf.create(i));
					this.write_to_buffer(message.to_string());
				}.bind(this));
				if(!exclude_ul) this.write_to_buffer('</ul>');
			}
		},
		render: function()
		{
			if(this.options.conversation_attach_point)
			{
				Event.onDOMReady(
					function()
					{
						this.post_render();
					}.bind(this)
				);
			}
			else
			{
				this.post_render();
			}
		},
		post_render: function()
		{
			try { $(this.options.conversation_attach_point).update(this.empty_buffer()); } catch(e){ }
			this.store_in_buffer = true;
			if(this.options.conversation_pagination_type == 'between' && this.options.conversation_feed_type != 'featuredmsgs')
			{
				try {
					var el = $(this.options.conversation_id_prefix + 'message-list');
					el.remove();
					$(this.options.conversation_page_id_prefix + this.page + '-container').appendChild(el);
					delete(el);
				}catch(e){}
			}

			this.apply_behaviors();
		},
		build_options: function()
		{
			var options = {};
			var return_url = location.href;

			if( location.href.indexOf('?') > -1 ){ return_url += '&prosaction=newpost'; }
			else { return_url += '?prosaction=newpost'; }


			var error_url = (location.href.indexOf('?') == -1) ? location.href + '?prosaction=newpost' : location.href + '&prosaction=newpost';
			var vars = {
				conversation_post_submit_image: __static_base + '/profile/i/btn_postComment.gif',
				conversation_post_edit_image: __static_base + '/profile/i/btn_submit.gif',
				conversation_post_cancel_image: __static_base + '/profile/i/btn_cancel.gif',
				conversation_attach_point: null,
				conversation_pagination_type: 'bottom',
				conversation_feed_url: '',
				conversation_reverse_pagination: true,
				conversation_reverse_page_text: false,
				conversation_violation_text: 'Report Violation',
				conversation_violation_cancel_text: 'Cancel',
				conversation_ignore_text: 'Ignore User',
				conversation_edit_text: '<img alt="" src="' + __static_base + '/profile/i/icon_edit.gif" />',
				conversation_delete_text: '<img alt="" src="' + __static_base + '/profile/i/icon_del.gif" />',
				conversation_reply_text: false,
				conversation_include_photos: true,
				conversation_allow_posting: true,
				conversation_show_post_form: true,
				conversation_include_top_navigation: true,
				conversation_link_user_to: 'profile',
				conversation_show_default_image: false,
				conversation_script_key: '_conversation',
				conversation_id_prefix: 'conversation-',
				conversation_max_length: 1000,
				conversation_no_items_message: null,
				conversation_parse_function: null,
				conversation_add_text: 'Add Comment',
				conversation_use_url: false,
				conversation_link_titles: false,
				conversation_content_id_ref: null,
				conversation_image_size: 35,
				conversation_link_to: location.href,
				conversation_send_to_if_not_found: null,
				conversation_allow_html: false,
				conversation_allow_links: true,
				conversation_hide_body_on_edit: false,
				conversation_screen_name_list: null,
				conversation_feed_type: 'talkback',
				conversation_global_allow_editing: false,
				conversation_global_allow_deleting: false,
				conversation_forbid_deletes: false,
				conversation_forbid_changes: false,
				conversation_reverse_messages: false,
				conversation_if_no_comments_text: null,
				conversation_hide_top_nav_if_no_comments: true,
				conversation_show_form_if_no_comments: false,
				conversation_dont_pre_check: false,
				conversation_forbid_deletes: false,
				conversation_violation_style: 'lightbox',
				conversation_use_lite: false,
				conversation_put_form_above_comments: false,
				conversation_lang: 'en',
				conversation_include_legal_terms: false,
				conversation_comments_closed: false,

				conversation_webtag: 'espnmb',
				conversation_to_user_id: '0',
				conversation_folder_id: '1',
				conversation_leave_html: 'true',
				conversation_count: '500',
				conversation_cat_list:'Conversations',
				conversation_subject: '',
				conversation_content_id: '0',
				conversation_content_url: '',
				conversation_subject: '',
				conversation_return_url: return_url,
				conversation_error_url: error_url,
				conversation_include_title: false,
				conversation_reply_to_tsn: '1'

			};


			for(var i in vars)
			{
				options[i] = (window[i] === null || window[i] === undefined) ? vars[i] : window[i];
				window[i] = undefined;
			}

			if( /Deportes/i.test( options.conversation_cat_list ) )
			{
				options.conversation_webtag = 'ESPNSpanish';
			}

			if(options.conversation_content_id_ref != null && window[options.conversation_content_id_ref] != null)
			{
				options.conversation_content_id = window[options.conversation_content_id_ref];
			}

			//options.conversation_return_url += '#' + options.conversation_id_prefix + 'container';
			options.conversation_page_id_prefix = options.conversation_id_prefix + 'page-'
			if( options.conversation_feed_type == 'featuredmsgs' )
			{
				options.conversation_allow_posting = false;
				options.conversation_violation_text = false;
				options.conversation_ignore_text = false;
				options.conversation_forbid_deletes = true;
				options.conversation_forbid_changes = true;
				options.conversation_no_items_message = false;
			}
			return options;
		},
		delete_message_lite: function( params )
		{
			var text = this.options.conversation_lang == 'es' ? '¿Estas seguro de que quieres borrar el mensaje?' : 'Are you sure you want to delete this message?';
			var do_it = confirm( text );

			if( do_it )
			{
				var form = document.createElement( 'form' )
				var input = document.createElement( 'input' );

				form.action = 'http://mb.espn.go.com/dir-app/acx/ACPost.aspx';
				form.method = 'get';

				input.type = 'hidden';
				input.name = 'deleteTsn';
				input.value = params.tsn;

				form.appendChild( input );

				var input_2 = input.cloneNode( true );
				input_2.name = 'returnUrl';
				input_2.value = location.href;

				form.appendChild( input_2 );

				var input_3 = input.cloneNode( true );
				input_3.name = 'folderId';
				input_3.value = 1;

				form.appendChild( input_3 );

				var input_4 = input.cloneNode( true );
				input_4.name = 'tid';
				input_4.value = params.tid;

				form.appendChild( input_4 );

				var input_5 = input.cloneNode( true );
				input_5.name = 'webtag';
				input_5.value = this.options.conversation_webtag;

				form.appendChild( input_5 );

				document.body.appendChild( form );

				form.submit();
			}
		},
		delete_message: function(evt)
		{
			var elem = Event.findElement(evt,'a');
			var parts = elem.href.split('?')[1].toQueryParams();
			var tid = parts['tid'];
			var tsn = parts['tsn'];
			var contentId = parts['contentId']
			var username = this.user.username;
			var returnUrl = encodeURIComponent(location.href);
			var url = "/s/conversations/delete";
			var params = "username=" + username + "&tid=" + tid + "&tsn=" + tsn + "&format=html&returnUrl=" + returnUrl + '&contentId=' + contentId;

			if( contentId != null && contentId.indexOf('COMMENTWALL') != -1 )
			{
				params += '&folderId=2';

			}
			else if( contentId != null && contentId.indexOf('NOTES') != -1 )
			{
				params += '&folderId=3';

			}

			if( this.options.conversation_use_lite )
			{
				this.delete_message_lite( params.toQueryParams() );
				Event.stop( evt );
				return;
			}

			var lightbox = new Lightbox();

			var event = {
				href: url + '?' + params,
				type: 'ajax'
			};

			var opts =
			{
				hideClose: true,
				cancelId: 'deleteComment-button-cancel',
				handleCancel: lightbox.end,
				submitId: 'deleteComment-form'
			};
			Event.stop(evt);
			lightbox.start(event,null,opts);

		},
		edit_message: function(evt)
		{
			var elem = Event.findElement(evt,'a');
			var li = $(Event.findElement(evt,'li'));
			var parts = elem.href.split('?')[1].toQueryParams();


			var remove_line_breaks = function(text)
			{
				text = text.replace(/<p><\/p>/gi, '%0D%0A%0D%0A');
				text = text.replace(/<br \/>/gi, '%0D%0A');
				text = text.replace(/<br>/gi, '%0D%0A');
				text = text.replace(/<p>/gi, '%0D%0A%0D%0A');
				text = text.replace(/<\/p>/gi, '');
				text =  unescape(text);

				return text;
			}

			parts.body = remove_line_breaks(li.select('.conversation-item-body')[0].innerHTML);
			parts.body_length = parts.body && parts.body.length ? parts.body.length : 0;

			try{ $('form-' + parts.tid + '-' + parts.tsn).show(); }
			catch(e) { new Insertion.Bottom(li,this.edit_form_template.evaluate(parts)); }

			li.select(".conversation-cancel-edit-link").each(function(node)
			{
				$(node).observe('click',function(evt)
				{
					var form = $(li.getElementsByTagName('form')[0]);
					form.remove();
					if(this.options.conversation_hide_body_on_edit)
					{
						try { li.select('.conversation-post-header')[0].show(); } catch(e){}
						try { li.select('.conversation-body-wrapper')[0].show(); } catch(e){}
					}
					Event.stop(evt);
				}.bind(this));
			}.bind(this));

			if(this.options.conversation_hide_body_on_edit)
			{
				try { li.select('.conversation-post-header')[0].hide(); } catch(e){}
				try { li.select('.conversation-body-wrapper')[0].hide(); } catch(e){}
			}

			Event.stop(evt);

			var form = $(li.getElementsByTagName('form')[0]);
			var textarea = $(form.getElementsByTagName('textarea')[0]);

			form.observe('submit',function(evt)
			{
				textarea.value = conversation_protect_accented_characters( textarea.value );
			});

			if(!this.options.conversation_include_title) return;


			var title_el = $(form.select('.conversation-post-title')[0]);
			var header_el = $(li.select('.conversation-post-header')[0]);

			var title_matches = textarea.value.match(/<h2 class="conversation-post-header"><a href=".+">(.+)<\/a><\/h2>/);
			var header = '';

			if(header_el.firstChild.nodeName.toLowerCase() == 'a')
			{
				header = header_el.firstChild.innerHTML;
			}
			else
			{
				header = header_el.innerHTML;
			}

			if(!title_matches)
			{
				title_matches = textarea.value.match(/<h2 class="conversation-post-header">(.+)<\/h2>/);
			}

			//var text_found = (title_matches && title_matches.length) ? title_matches[1] : '';

			var text_found = header;

			try{ title_el.value = text_found; } catch(e){}

			textarea.value = textarea.value.replace(/<h2 class="conversation-post-header">(.+)<\/h2>/,'');

			form.observe('submit',function(evt)
			{
				textarea.value = '~~##' + title_el.value + '##~~' + textarea.value;
				textarea.value = conversation_protect_accented_characters( textarea.value );
			});



		},
		write_to_buffer: function(html)
		{
			if(this.store_in_buffer)
			{
				this.html += html;
			}
			else
			{
				document.write(html);
			}
		},
		empty_buffer: function()
		{
			var html = this.html;

			this.html = '';

			return html;
		}
	};

	new Conversation;
}();