var Comments = {
	url: {
		load: '/modules/leafbase/components/core/comment_process.php',
		submit: '/modules/leafbase/components/core/comment_save.php',
		edit: '/modules/leafbase/components/core/comment_edit.php'
	},
	toggle: {
		allow: function(data){
			if (data) {
				data.elm = (data.elm) ? data.elm : false;
				if (data.elm) {
					if($(data.elm)._autoallow){
						if($(data.elm)._autoallow == 'true'){
							$(data.elm)._autoallow = 'false';
						}else{
							$(data.elm)._autoallow = 'true';
						}
					}else{
						$(data.elm)._autoallow = 'false';
					}
				}
				LeafBase.update_status('notsaved');
			}
		},
		items: function(data){
			
		}
	},
	editor: function(){
		var mce = tinyMCE.get('comment_body');
		if (mce != undefined) {
			if(window.console){
				mce = undefined;	
			}
		}
		if (mce == undefined) {
			tinyMCE.init({
				mode: "exact",
				elements: "comment_body",
				plugins: "inlinepopups,safari,table,paste",
				theme: "advanced",
				theme_advanced_buttons1: "",
				theme_advanced_buttons2: "",
				theme_advanced_buttons3: "",
				dialog_type: "modal",
				height: "150px",
				inline_styles: false,
				font_size_style_values: "8px,10px,12px,14px,18px,24px,36px",
				valid_elements: "span[mcs_style|style|align],p[align],br,a[href|target|title|name],strong/b,li,ul,ol,em/i,u,hr,sup,sub," +
				"table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|dir<ltr?rtl|height|lang|rules|summary|title|width]," +
				"tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rt|lang|title|valign<baseline?bottom?middle?top]," +
				"td[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff" +
				"|colspan|dir<ltr?rtl|headers|height|lang|nowrap<nowrap|rowspan|scope<col?colgroup?row?rowgroup" +
				"|title|valign<baseline?bottom?middle?top|width]," +
				"tfoot[align<center?char?justify?left?right|char|charoff|dir<ltr?rtl" +
				"|lang|title|valign<baseline?bottom?middle?top]," +
				"th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff" +
				"|colspan|dir<ltr?rtl|headers|height|lang|nowrap<nowrap|rowspan" +
				"|scope<col?colgroup?row?rowgroup|title|valign<baseline?bottom?middle?top|width]," +
				"thead[align<center?char?justify?left?right|char|charoff|dir<ltr?rtl|lang|title" +
				"|valign<baseline?bottom?middle?top]," +
				"tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class" +
				"|rowspan|dir<ltr?rtl|lang|title|valign<baseline?bottom?middle?top]",
				invalid_elements: "font,script,div,big,small,h1,h2,h3,h4,h5,h6,object,embed,img",
				relative_urls: false,
				convert_urls: false
			});
		}
	},
	show: function(elm){
		try {
			var element = elm
			var url = '/modules/leafbase/components/core/comment_public.php';
				url = url + '?elm=' +  element.up('.pbItem').id;
			var options = {
				width: 500,
				height: 250
			};
			lightwindow.load(url, options, function(){
				Comments.editor();
				Comments.pub({
					elm: element.up('.pbItem').id,
					itemid: element.up('.pbItem')._itemid,
					unapproved: 'false'
				});
				
			},function(){
				var mce = tinyMCE.get('comment_body');
				mce.save();
				mce.remove();
				});
		} 
		catch (e) {
			Extensions.error(e);
		}
	},
	pub: function(data){
		if (data) {
			data.elm = (data.elm) ? data.elm : false;
			if (data.elm) {
				data.itemid = (data.itemid) ? data.itemid : $(data.elm)._itemid;
				data.unapproved = 'false';
				if (!window.UserId) {
					$('commentDisable').setStyle("display:block;");
					$('commentDisable').setOpacity(.75);
				}
				var url = Comments.url.load;
				new Ajax.Request(url, {
					parameters: {
						'elm': data.elm,
						'itemid': data.itemid,
						'unapproved': data.unapproved
					},
					onComplete: function(transport){
						var elm = $(data.elm);
						$('comments').innerHTML = '';
						for (var n = 0; n<elm._comments.length;n++) {
							var cdata = elm._comments[n];
							if (!isNaN(parseInt(n))) {
								
								var comment = new Element('div', {
									'class': 'comment_single'
								});
								
								
								var dataelm = new Element('div', {
									'class': 'data'
								});
								
								var dateelm = new Element('span', {
									'class': 'date'
								});
								var c_D = new Date(parseInt(cdata.Date)*1000);
								dateelm.innerHTML = c_D.toLocaleString();
								var itemid = new Element('span', {
									'class': 'itemid'
								});
								itemid.innerHTML = cdata.ItemId;
								
								
								var bodyelm = new Element('div', {
									'class': 'body'
								});
								var displayname = new Element('span', {
									'class': 'displayname'
								});
								displayname.innerHTML = cdata.DisplayName;
								bodyelm.appendChild(displayname);
									if(typeof cdata.Body != 'undefined'){
										bodytext = cdata.Body;
										bodytext = bodytext.replace(/\&gt\;/img, ">");
										bodytext = bodytext.replace(/\&lt\;/img, "<");
									}else{
										bodytext = "";
									}
								bodyelm.innerHTML = bodyelm.innerHTML + bodytext;
								

								comment.appendChild(dataelm);
								dataelm.appendChild(dateelm);
								dataelm.appendChild(itemid);
														
								comment.appendChild(bodyelm);

								$('comments').appendChild(comment);
							}else{
								break;
							}
						}
					}
				});
			}
		}
	},
	load: function(data){
		if (data) {
			data.elm = (data.elm) ? data.elm : false;
			if (data.elm) {
				data.itemid = (data.itemid) ? data.itemid : $(data.elm)._itemid;
				data.unapproved = (data.unapproved) ? data.unapproved : 'true';
				
				if($('autoapprove')){
					if($(data.elm)._autoallow){
						if($(data.elm)._autoallow == 'true'){
							$('autoapprove').checked = true;
						}
					}else{
						$(data.elm)._autoallow = 'false';
					}
				}
				Comments.editor();
				var url = Comments.url.load;
				new Ajax.Request(url, {
					parameters: {
						'elm': data.elm,
						'itemid': data.itemid,
						'unapproved': data.unapproved
					},
					onComplete: function(){
						var elm = $(data.elm);
						$('comments').innerHTML = '';
						for (var n in elm._comments) {
							var cdata = elm._comments[n];
							if (!isNaN(parseInt(n))) {
								
								var comment = new Element('div', {
									'class': 'comment_single'
								});
								
								var delimg = new Element('img', {
									'src': '/modules/leafbase/images/01_10.png',
									'alt': 'Remove Comment',
									'title': 'Remove Comment',
									'class': 'delete_image'
								});
								delimg._elm = data.elm;
								delimg._cid = cdata.CommentId;
								Event.observe(delimg, 'click', function(ev){
									var elem = Event.element(ev);
									Comments.del({
										elm: elem._elm,
										commentid: elem._cid
									});
								});
								
								var dataelm = new Element('div', {
									'class': 'data'
								});
								
								var dateelm = new Element('span', {
									'class': 'date'
								});
								var c_D = new Date(parseInt(cdata.Date)*1000);
								dateelm.innerHTML = c_D.toLocaleString();
								var itemid = new Element('span', {
									'class': 'itemid'
								});
								itemid.innerHTML = cdata.ItemId;
								
								if(cdata.Approved == 'true'){
									var appelm = new Element('span', {
										'class': 'approved'
									});
									appelm._elm = data.elm;
									appelm._cid = cdata.CommentId;
									appelm.innerHTML = 'Approved';
									Event.observe(appelm, 'click', function(ev){
										var elem = Event.element(ev);
										Comments.approve({
											approved: 'false',
											elm: elem._elm,
											commentid: elem._cid
										});
									});
								}else{
									var appelm = new Element('span', {
										'class': 'unapproved'
									});
									appelm._elm = data.elm;
									appelm._cid = cdata.CommentId;
									appelm.innerHTML = 'Not Approved';
									Event.observe(appelm, 'click', function(ev){
										var elem = Event.element(ev);
										Comments.approve({
											approved: 'true',
											elm: elem._elm,
											commentid: elem._cid
										});
									});
								}
								
								
								var bodyelm = new Element('div', {
									'class': 'body'
								});
								var displayname = new Element('span', {
									'class': 'displayname'
								});
								displayname.innerHTML = cdata.DisplayName;
								bodyelm.appendChild(displayname);
									bodytext = cdata.Body;
									bodytext = bodytext.replace(/\&gt\;/img, ">");
									bodytext = bodytext.replace(/\&lt\;/img, "<");
								bodyelm.innerHTML = bodyelm.innerHTML + bodytext;
								
								comment.appendChild(delimg);
								comment.appendChild(dataelm);
								dataelm.appendChild(dateelm);
								dataelm.appendChild(itemid);
								dataelm.appendChild(appelm);						
								comment.appendChild(bodyelm);
								$('comments').appendChild(comment);
							}else{
								break;
							}
						}
					}
				});
			}
		}
	},
	submit: function(data){
		if (data) {
			data.elm = (data.elm)?data.elm:false;
			if (data.elm) {
				var mce = tinyMCE.get('comment_body');
				mce.save();
				mce.remove();
				if(window.console){console.log(mce);}
				data.body = (data.body) ? data.body : $('comment_body').getValue();
				data.itemid = (data.itemid) ? data.itemid : $(data.elm)._itemid;
				data.items = (data.items) ? data.items : '';
				data.approved = (data.approved) ? data.approved : ($(data.elm)._autoallow)?$(data.elm)._autoallow:'false';
				data.pub = (data.pub) ? data.pub : false;
				data.userid = (window.UserId) ? window.UserId : (window.LeafBase) ? LeafBase.user.UserId : "";
				
				var url = Comments.url.submit;
				new Ajax.Request(url, {
					parameters: {
						'body': data.body,
						'itemid': data.itemid,
						'items': data.items,
						'approved': data.approved,
						'userid': data.userid
					},
					onComplete: function(){
						if(data.pub){
							Comments.pub(data);
						}else{
							Comments.load(data);
						}
					}
				});
				
				$('comment_body').value = '';
				$('comment_body').innerHTML = '';
				
				Comments.editor();
				
				if ($(data.elm)._autoallow) {
					if ($(data.elm)._autoallow != 'true') {
						Comments.waiting_approval(data,'Your Message Has Been Submitted and is Waiting Approval');
					}
				}
			}
		}
	},
	del: function(data){
		if (data) {
			data.elm = (data.elm) ? data.elm : false;
			if (data.elm) {
				data.body = (data.body) ? data.body : $('comment_body').getValue();
				data.itemid = (data.itemid) ? data.itemid : $(data.elm)._itemid;
				data.items = (data.items) ? data.items : '';
				data.approved = (data.approved) ? data.approved : ($(data.elm)._autoallow)?$(data.elm)._autoallow:'false';
				
				var url = Comments.url.edit;
				new Ajax.Request(url, {
					parameters: {
						'delete': 'true',
						'itemid': data.itemid,
						'commentid': data.commentid
					},
					onComplete: function(){
						Comments.load(data);
					}
				});
			}
		}
	},
	approve: function(data){
		if (data) {
			data.elm = (data.elm) ? data.elm : false;
			if (data.elm) {
				data.body = (data.body) ? data.body : $('comment_body').getValue();
				data.itemid = (data.itemid) ? data.itemid : $(data.elm)._itemid;
				data.items = (data.items) ? data.items : '';
				data.approved = (data.approved) ? data.approved : ($(data.elm)._autoallow)?$(data.elm)._autoallow:'false';
				
				var url = Comments.url.edit;
				new Ajax.Request(url, {
					parameters: {
						'approved': data.approved,
						'itemid': data.itemid,
						'commentid': data.commentid
					},
					onComplete: function(){
						Comments.load(data);
					}
				});
			}
		}
	},
	waiting_approval: function(data,msg){
		if (data) {
			data.elm = (data.elm) ? data.elm : false;
			$('comment_message').innerHTML = msg;
			$('comment_message').setStyle({'display':'block'});
		}
	}
}