MessageDetail = {
  mid : 0,
  group_id : 0,
  myTags : '',
  config : {},
  contrib_domId : '',
  
  popinLinks : ['fblikediv', 'editdiv', 'hidediv', 'bookmarkdiv', 'sharediv', 'marktakendiv', 'bookmark_edit', 'add_tag_link', 'deletediv'],
  
  setConfig : function (jsonconfig)
  {
    this.config = jsonconfig;
    
    Ext.onReady(MessageDetail.updateTitle, MessageDetail);
    
    EditMessage.init();
    EditMessage.setContext('approved');
  },
  
  updateTitle : function()
  {
    var type_icon_el = document.getElementById('msg_type_icon');
    var type_sentence_el = document.getElementById('msg_type_sentence');
    var subject_el = document.getElementById('msg_subject');
    
    if (type_icon_el)
    {
      type_icon_el.innerHTML = MessageDetail.config['msg_type_icon'];
    }
    
    if (type_sentence_el)
    {
      type_sentence_el.innerHTML = MessageDetail.config['msg_type_sentence'];
    }
    
    if (subject_el)
    {
      subject_el.innerHTML = MessageDetail.config['message']['subject'];
    }
    
    if (MessageDetail.config['message']['bookmarked_flg'] == 'Y')
    {
      document.getElementById('bm_img').style.display='';
    } else
    {
      document.getElementById('bm_img').style.display='none';
    }
    
  },
  
  setAttr : function (key, value)
  {
    this.config[key] = value;
  },
  
  toggleHide : function()
  {
    if (!CC.membersOnly())
    {
      return;
    }
    
    Grouply.hideEl("hidediv");
    
    var hflag = MessageDetail.config['hidden_flg'] == 'Y' ? 'N' : 'Y';
    Grouply.ajax(CC.address + "/ajax/message.hide.ajax", {"row_id":MessageDetail.config['mid'],"group_id":MessageDetail.config['group_id'],"hidden_flg":hflag}, MessageDetail.toggleHideCallback);
  },
  
  toggleHideCallback : function(options, success, response)
  {
    Grouply.showEl("hidediv");
    if (success) {
      var value = response.responseText;
      var vals = value.split("/");
      if (vals[0] == "success") {
        MessageDetail.config['hidden_flg'] = vals[1];
        if (vals[1] == 'Y')
        {
          document.getElementById('hidedivlink').innerHTML = LocStrings['Unhide'];
        } else
        {
          document.getElementById('hidedivlink').innerHTML = LocStrings['Hide'];
        }
        
      }
    }
  },
  
  showTagPopin : function ()
  {
    if (!CC.membersOnly())
    {
      return;
    }
    MessageDetail.showBookmarkPopin();
  },
  
  showBookmarkPopin : function()
  {
    if (!CC.membersOnly())
    {
      return;
    }
    
    Grouply.get('bookmarkPopin').get().on('hide', function(){
      Grouply.unregister('tag_field_tagpopin');
      Grouply.unregister('tag_addtagbutton');
      Grouply.unregister('bm_savebutton');
      Grouply.unregister('tag_cancelbutton');
      Grouply.unregister('note_bmpopin');
    });
    
    Grouply.currentPopin = 'bookmarkPopin';
    MessageDetail.config['tagsToSubmit'] = Grouply.copyObj(MessageDetail.config['myTags']);
    
    Grouply.popin.ajaxShow('bookmarkPopin', CC.address + '/ajax/message.popin.bookmark.ajax', 'messageid='+encodeURIComponent(MessageDetail.config['mid']), null, 
      function() {
        Grouply.popin.fixYMapOverlap(Grouply.currentPopin);
        
        Grouply.renderComponent('tag_field_tagpopin');
        Grouply.renderComponent('tag_addtagbutton');
        Grouply.renderComponent('bm_savebutton');
        Grouply.renderComponent('tag_cancelbutton');
        Grouply.renderComponent('note_bmpopin');
        
        Grouply.get('tag_field_tagpopin').on('specialkey', function(field, e) {
          if (e.getKey() == 13) {
            if (field.getEl().getValue())
            {
              MessageDetail.addTag('tag_field_tagpopin', 'tags_display_bmpopin');
            }  
          }
        });
        
        setTimeout("Grouply.get('tag_field_tagpopin').focus();", 500);
        Grouply.popin.resizeToContent(Grouply.currentPopin);
        
        // set bookmark value.
        Grouply.get('note_bmpopin').setValue(Ext.util.Format.htmlDecode(Ext.get("grouply_bookmark_note").dom.innerHTML));
      });
  },
  
  saveBookmark : function ()
  {
    if (!CC.membersOnly())
    {
      return;
    }
    
    var note = Grouply.get('note_bmpopin').getEl().getValue();
    var bookmark_flag = '';
    if (Ext.get('bookmark_flag_y').dom.checked)
    {
      bookmark_flag = 'Y';

    }
    else //document.getElementById('bookmark_flag_n').checked
    {
      bookmark_flag = 'N';
    }
  
    
    // get current my tags
    var myparams = "";
      
    for(tag_i in MessageDetail.config['tagsToSubmit'])
    {
      var tag = MessageDetail.config['tagsToSubmit'][tag_i];
      
      if (typeof(tag) == 'string' || typeof(tag) == 'number')
      {
        if (myparams != "")
        {
          myparams = myparams + ",";
        }
        
        myparams = myparams + encodeURIComponent(tag);
      }
    }
    
    if (myparams != "")
    {
      myparams = "&tags="+myparams;
    }
    
    myparams = myparams 
              + '&messageid=' + encodeURIComponent(MessageDetail.config['mid'])
              + '&bookmark_flg=' + encodeURIComponent(bookmark_flag)
              + '&note=' + encodeURIComponent(note);
              
  
    Grouply.ajaxload(Grouply.currentPopin + "_content", CC.address + "/ajax/message.popin.bookmark.ajax", "submit=1"+myparams, function()
    {
      MessageDetail.refreshTagBookmarkInfo();
      
      // update bookmark portlet
      MessageDetail.reloadContributorsPorlet(); 
      
    });
    
    Grouply.popin.hide(Grouply.currentPopin);
    
    MessageDetail.config['myTags'] = Grouply.copyObj(MessageDetail.config['tagsToSubmit']);

    
  },
  
  reloadContributorsPorlet : function()
  {
    CC.ajax.reload(MessageDetail.contrib_domId, true);
  },
  
  refreshTagBookmarkInfo : function()
  {
    
    MessageDetail.reloadMessage();
  },
  
  removeTag : function(tag, divid)
  {
    if (!CC.membersOnly())
    {
      return;
    }
    
    var tag2 = tag.replace(/[!@#$%&\(\)_+=\{\}\[\]|\\<">,\?\/\^\*;:]/g, " ");
    tag2 = tag2.replace(/(\s)+/g, " ");
    tag2 = tag2.replace(/^\s+/, '');
    tag2 = tag2.replace(/\s+$/, '');
  
    if (tag2=="")
      return;
  
    var tags = "";
    var i;
    
    var tagIndex = MessageDetail.config['tagsToSubmit'].indexOf(tag2);
    
    if (tagIndex < 0)
    {
      return;
    }
    
    delete MessageDetail.config['tagsToSubmit'][tagIndex];
    
    document.getElementById(divid).innerHTML = '';
    
    for (mytag_i in MessageDetail.config['tagsToSubmit'])
    {
      var mytag = MessageDetail.config['tagsToSubmit'][mytag_i];
      if (typeof(mytag) == 'string' || typeof(mytag) == 'number')
      {
        var taglink = "  " + mytag + " " + "<a href=\"javascript:MessageDetail.removeTag('" + mytag.replace(/'/g, "\\'") + "', '" + divid +"')\">[x]</a>";
        Ext.DomHelper.append(divid, taglink);
      }
    }

    Grouply.popin.resizeToContent(Grouply.currentPopin);
    return;
  },
  
  enterTag : function (event, divid, inputel)
  {
     var keyCode = event.keyCode ? event.keyCode :
                event.which ? event.which : event.charCode;

    if (keyCode == 13) 
    {
      MessageDetail.addTag(inputel.id,divid);
      return false;
    }
    else
      return true;
  },
  
  tagButtonAddTag : function()
  { 
    if (!CC.membersOnly())
    {
      return;
    }
    
    if (Grouply.currentPopin == "addTagPopin")
    {
      MessageDetail.addTag('tag_field_tagpopin', 'tags_display_tagpopin');
    } else if (Grouply.currentPopin == "bookmarkPopin")
    {
      MessageDetail.addTag('tag_field_tagpopin', 'tags_display_bmpopin');
    }
    
  },
   
  addTag : function (fieldid, divid)
  {
    var tag = Grouply.get(fieldid).getRawValue();
    var tag2 = tag.replace(/[!@#$%&\(\)_+=\{\}\[\]|\\<">,\?\/\^\*;:]/g, " ");
    tag2 = tag2.replace(/(\s)+/g, " ");
    tag2 = tag2.replace(/^\s+/, '');
    tag2 = tag2.replace(/\s+$/, '');
    
    if (tag2 == "")
      return;
  
    if (MessageDetail.config['tagsToSubmit'].indexOf(tag2) >= 0)
    {
      return;
    }
    
    var taglink =  "  " + tag2 + " " + "<a href=\"javascript:MessageDetail.removeTag('" + tag2.replace(/'/g, "\\'") + "', '" + divid + "')\">[x]</a>"; 
    
    MessageDetail.config['tagsToSubmit'].push(tag2);

    Ext.DomHelper.append(divid, taglink);
    Grouply.popin.resizeToContent(Grouply.currentPopin);
    Grouply.get(fieldid).setRawValue("");
    return;
  },
  
  toggleMap : function ()
  { 
    var mapContainer = Ext.get('maptogglediv');
    
    if (mapContainer)
    {
      if (mapContainer.isDisplayed())
      {
        Grouply.hideEl('maptogglediv');
        document.getElementById('viewmap_toggler').innerHTML = MessageDetail.xlmap['View map'];
      } else
      {
        Grouply.showEl('maptogglediv');
        document.getElementById('viewmap_toggler').innerHTML = MessageDetail.xlmap['Hide map'];
        mdv_updateMap();
      }
      
    }
    
  },
  
  markAsTaken : function() 
  {
    if (!CC.membersOnly())
    {
      return;
    }
    
    // mark taken in database
    var postStr = "msg_sid=" + encodeURIComponent(MessageDetail.config['msg_pnum']) + "&thread_id=" + encodeURIComponent(MessageDetail.config['mid']);
                  
    Grouply.ajaxload(
      'post_result', 
      CC.address + '/ajax/message.marktaken.ajax', 
      postStr, 
      MessageDetail.markAsTakenCallback);
      
  },
  
  markAsTakenCallback : function ()
  {
    // reload portlet here?
    Grouply.hideEl("marktakendiv");
    
    var mt_status = Ext.get('marktaken_status_json');
    Ext.get('marktaken_status_json').remove();
    if (mt_status) {
      var mt_status_json = Ext.util.JSON.decode(mt_status.dom.innerHTML);
      if (mt_status_json && mt_status_json['status'] == 0)
      {
        Grouply.alert(mt_status_json['msg'], mt_status_json['title']);       
        return;
      }
    }
    
    // bring up the popin so that user can choose to send a message
    SendEmail.openEmailPopin("marktaken", 
     null,
     MessageDetail.xlmap["Mark as Taken"], MessageDetail.reloadMessage);
  },
  
  edit : function ()
  {
    if (!CC.membersOnly())
    {
      return;
    }
    EditMessage.setContext("approved");
    EditMessage.message = MessageDetail.config['message'];
    Grouply.ajax(CC.address + "/ajax/get_msg_desc.ajax", {msg_num: MessageDetail.config['msg_num']}, MessageDetail.editCb);
  },
  
  editCb : function (options, success, response)
  {
		if (success)
		{
			EditMessage.message.desc_text = response.responseText;
		}
    Grouply.popin.show("editmessage", document.body, "t-t", EditMessage.onShow);
	},
  
  share : function ()
  {
    if (!CC.membersOnly())
    {
      return;
    }
    
    SendEmail.openEmailPopin("emailthis", {group_id : MessageDetail.config['group_id'], msg_num:MessageDetail.config['msg_num'], sendas:"rich"}, MessageDetail.xlmap["Forward Message"]);
  },
  
  cancel : function ()
  {
    Grouply.popin.hide(Grouply.currentPopin);
    MessageDetail.tagsToSubmit = Grouply.copyObj(MessageDetail.myTags);
  },
  
  // Star rating functions
  rating : {
    outStar : function() {
      MessageDetail.rating.overStar(MessageDetail.config['rating']);
    },
    overStar : function(rating) {
      for (var i=1; i<=5; i++) {
        document.getElementById("star"+i).src = i <= rating ? Grouply.sitebase + "img/icons/rating/ico_star_md_green_on.gif" : Grouply.sitebase + "img/icons/rating/ico_star_md_off.gif";
      }
    },
    clickStar : function(rating) {
      if (!CC.membersOnly())
      {
        return;
      }
    
      MessageDetail.config['rating'] = rating;
      Grouply.ajaxload("rating_result", "/ajax/message.rating.ajax", {"mid":MessageDetail.config['mid'],"r":rating}, MessageDetail.rating.clickStarCallback, false, true);
    },
    
    clickStarCallback : function () {
      // get avgrating
      var avgratingel = document.getElementById('avgrating_ajax_results');
      if (avgratingel)
      {
        var avgrating = parseInt(avgratingel.innerHTML);
        if (avgrating >= 0)
        {
          MessageDetail.config['avgrating'] = avgrating;
          for (var i=1; i<=5; i++)
          {
            var starimg = document.getElementById('avgrating'+i+'_img');
            if (avgrating >= i)
            {
              starimg.src = Grouply.sitebase + 'img/icons/rating/ico_star_md_red_on.gif';
            }
            else if (avgrating > (i-1))
            {
              starimg.src = Grouply.sitebase + 'img/icons/rating/ico_star_md_red_half_on.gif';
            }
            else
            {
              starimg.src = Grouply.sitebase + 'img/icons/rating/ico_star_md_off.gif';
            }
          }
        }
      }
      
      var ratingscountel = document.getElementById('ratingscount_ajax_results');
      if (ratingscountel)
      {
        document.getElementById('ratingscount').innerHTML = ratingscountel.innerHTML;
      }
      
      // reload firsts portlet
      MessageDetail.reloadContributorsPorlet();
    }
  },
  
  reloadMessage : function()
  {
    for (var i in MessageDetail.popinLinks)
    {
      if (Ext.get(MessageDetail.popinLinks[i]))
      {
        Ext.get(MessageDetail.popinLinks[i]).remove();
      }
    }
    Grouply.showEl('refreshing_text');
    CC.ajax.reload(MessageDetail.config['portletid'], true);
  },
  
  comments : {
    viewedCommentNum : 0,
    skipped : [],
    numProcessed : 0,
    skipSize : 5,
    numComments : 0,
    last_ts : 0,
    editparams : {},
    att_i : 0,
    post_pb : null,
    switchRecipient : function(el){
	    if (el && el.id == 'comment_send_to_group')
	    {
	      Grouply.showEl('cm_attachments_ct');
	      Grouply.showEl('comment_notifymembers_ct');
	      Grouply.showEl('comment_forcenotify_ct');
	    } else
	    {
	    	MessageDetail.comments.resetAttachments();
	      Grouply.hideEl('cm_attachments_ct');
	      Grouply.hideEl('comment_notifymembers_ct');
	      Grouply.hideEl('comment_forcenotify_ct');
	    }
	  },
	  toggleNotifyMembers : function (el) {
			if (el.checked)
			{
				Grouply.showEl('comment_forcenotify_ct');
			} else
			{
				Grouply.hideEl('comment_forcenotify_ct');
			}
		},
    toggleViewed : function(rowNum, hintId) {
      if (!document.getElementById(hintId))
      {
        return;
      }
      var html = document.getElementById(hintId).innerHTML;
      document.getElementById(hintId).innerHTML = html == LocStrings["Show"] ? LocStrings["Hide"] : LocStrings["Show"];
      for (var x = 1; x <= rowNum; x++) {
        if (html == LocStrings["Show"])
        {
          Grouply.showEl('md_cm_row_' + x); 
        } else
        {
          Grouply.hideEl('md_cm_row_' + x);
        }
      }
      
      setTimeout('MessageDetail.comments.toggleViewedCb();', 1000);
      
    },
    
    toggleViewedCb : function ()
    {
      if (window.location.hash != '')
      {
        window.location.hash = window.location.hash;
        var mdrowEl = Ext.get('md_cm_row_body_' + window.location.hash);
        if (mdrowEl)
        {
          mdrowEl.frame('C3DAF9', 2, {duration : 1.5, afterCls:'selected'});
        }
      }
    },
    
    load : function() {
      MessageDetail.comments.viewedCommentNum = 0;
      MessageDetail.comments.numComments = parseInt(document.getElementById('num_comments_text').innerHTML);
      var el = document.getElementById("viewedCommentNum");
      if (el) {
        MessageDetail.comments.viewedCommentNum = + el.innerHTML;
      }
      if (window.location.hash!="" && MessageDetail.comments.viewedCommentNum > 0) {
        MessageDetail.comments.toggleViewed(MessageDetail.comments.viewedCommentNum, 'viewed_comments_hint');
      }
      if (MessageDetail.comments.skipped) {
        MessageDetail.comments.numProcessed = 0;
        MessageDetail.comments.processSkipped();
      }
    },
    showComment : function(msgno) {
      var el1 = document.getElementById("cmdiv_delayed_"+ MessageDetail.config['group_id'] + "_" + msgno);
      var attel = document.getElementById("cmattdiv_delayed_"+ MessageDetail.config['group_id'] + "_" + msgno);
      var videl = document.getElementById("cmviddiv_delayed_"+ MessageDetail.config['group_id'] + "_" + msgno);
      var el2 = document.getElementById("cmdiv_" + MessageDetail.config['group_id'] + "_" + msgno);
      if (el1 && el2) {
        el2.innerHTML = el1.innerHTML;
        if (attel)
        {
					el2.innerHTML += attel.innerHTML;
				}
				if (videl)
        {
					el2.innerHTML += videl.innerHTML;
				}
        return true;
      }
      return false;
    },
    processSkipped : function() {
      if (!(MessageDetail.comments.skipped && MessageDetail.comments.skipped.slice)) return;
      if (MessageDetail.comments.numProcessed < MessageDetail.comments.skipped.length) {
        var i = MessageDetail.comments.numProcessed;
        var skip = MessageDetail.comments.skipped.slice(i, i+MessageDetail.comments.skipSize);
        MessageDetail.comments.processSkippedSlice(skip);
      }
    },
    processSkippedSlice : function(skip) {
      var ajskip = [];
      for (var i = 0; i < skip.length; i++) {
        if (!MessageDetail.comments.showComment(skip[i])) {
          ajskip.push(skip[i]);
        }
      }
      if (ajskip.length) {
        var t_url = CC.address + '/ajax/message.comments.ajax';
        Grouply.ajax(t_url, {"cm_group_id":MessageDetail.config['group_id'], "thread_num":MessageDetail.config['mid'], "cm_msg_num" : ajskip.join(",")}, MessageDetail.comments.skippedCallback);
      } else {
        MessageDetail.comments.numProcessed += MessageDetail.comments.skipSize;
        MessageDetail.comments.processSkipped();
      }
    },
    skippedCallback : function(options, success, response) {
      if (success && response.responseText) {

        var msgs = Ext.util.JSON.decode(response.responseText);
        for (var msg in msgs) {
          var el = document.getElementById("cmdiv_" + MessageDetail.config['group_id'] + "_" + msg);
          if (el) {
            //el.innerHTML = Base64.decode(msgs[msg]);
            el.innerHTML = msgs[msg];
          }
        }
        MessageDetail.comments.numProcessed += MessageDetail.comments.skipSize;
        MessageDetail.comments.processSkipped();
      }
    },
    refresh : function ()
    {
      var t_url = CC.address + '/ajax/message.comments.refresh.ajax';
      Grouply.ajax(t_url, {"c_i":MessageDetail.comments.numComments+1, "msg_sid" : MessageDetail.config['msg_pnum'], "last_ts" : MessageDetail.comments.last_ts}, MessageDetail.comments.refreshCallback);
    },
    
    refreshCallback : function(options, success, response) {
      var resp_json = Ext.util.JSON.decode(response.responseText);
      if (!resp_json)
      {
        return;
      }
      
      var msgs = resp_json['msgs'];
      if (typeof(resp_json['last_ts']) != 'undefined')
      {
        MessageDetail.comments.last_ts = resp_json['last_ts'];
      }
      
      for (var msg in msgs) {
        if (typeof(msgs[msg]) != 'string')
        {
          continue;
        }
        Ext.DomHelper.append('msgCommentsTbl', msgs[msg]);
        MessageDetail.comments.numComments++;
      }
      
      document.getElementById('num_comments_text').innerHTML = MessageDetail.comments.numComments;
    },
    
    deleteComment : function (msgnum, ci) {
			Grouply.confirm(MessageDetail.xlmap['Do you want to permanently delete this comment?'], 
														function() {
															Grouply.ajax(CC.address + "/ajax/message.delete.ajax", {"msg_num":msgnum}, function(options, success,response) { MessageDetail.comments.deleteCommentCallback(options, success, response, ci); });
														},
														null, 
														MessageDetail.xlmap['Delete Comment'],
														true);
		},
		
		deleteCommentCallback : function (options, success, response, ci) {
			var status_json = Ext.util.JSON.decode(response.responseText);
	    if (status_json && status_json['success'] > 0)
	    {
	    	Ext.get('md_cm_row_'+ci).remove();
	    } else
			{
				var errorText = LocStrings['Something went wrong...'];
				if (status_json && status_json['error'])
				{
					errorText = status_json['error'];
				}
				
				Grouply.alert(errorText, MessageDetail.xlmap['Unable to delete comment']);
				Grouply.messageBox.hide(3000);
			}
		},
		
		editComment : function (msgnum, ci)
		{
			MessageDetail.comments.editparams = {};
			MessageDetail.comments.editparams['msg_num'] = msgnum;
			Grouply.ajax(CC.address + "/ajax/get_msg_desc.ajax", {msg_num: msgnum}, MessageDetail.comments.editCommentCb);
		},
		
		editCommentCb : function (options, success, response)
	  {
	  	if (success)
	  	{
				
				Grouply.popin.show('editcomments');
				Grouply.reRenderComponent("editcommentssavebutton");
		    Grouply.reRenderComponent("editcommentscancelbutton");
		    var g = EditMessage.ginfo[CC.owner['id']];
		    if (!g)
		    {
					return false;
				}	
				
	      if (g.rich != "Y") {
	        Grouply.editor.hideSwitcher("editcomments_editor");
	        editcomments_editor_code.setPt();
	        Grouply.editor.setValue('editcomments_editor', Ext.util.Format.htmlDecode(response.responseText));
	      } else {
	        Grouply.editor.showSwitcher("editcomments_editor");
	        editcomments_editor_code.setRt();
	        Grouply.editor.setValue('editcomments_editor', response.responseText);
	      }
		    
		    Grouply.popin.resizeToContent("editcomments");
			} else
			{
				Grouply.alert(LocStrings["Something went wrong..."], LocStrings["Error"]);
			}
			
		},
		
		submitEdit : function ()
		{
			MessageDetail.comments.editparams['desc_text'] = Grouply.editor.cleanValue('editcomments_editor').replace(/^\s+|\s+$/g,"");
	    Grouply.popin.hide('editcomments');
	    Grouply.ajax(CC.address + "/ajax/editcomments.ajax", MessageDetail.comments.editparams, MessageDetail.comments.submitEditCb);
	  },
	  
	  submitEditCb : function (options, success, response)
	  {
	  	if (success)
	  	{
				document.getElementById('cmdiv_'+CC.owner['id']+'_'+MessageDetail.comments.editparams['msg_num']).innerHTML = response.responseText;
			}
			
		},
		
		addAttachment : function () {
	    var dh = Ext.DomHelper;
	    dh.append('cm_attachments_div', [
	        {tag: 'div', id: 'postcm_att'+MessageDetail.comments.att_i, children: [
	            {tag: 'input', type: 'file', name: 'fupl[]'},
	            {tag: 'a', html: '[x]', href: 'javascript:MessageDetail.comments.removeAttachment('+MessageDetail.comments.att_i+')'}
	          ]
	        }
	    ]);
	    MessageDetail.comments.att_i++;
	  },
	  removeAttachment : function(att_i) {
	    Ext.removeNode(Ext.getDom('postcm_att'+att_i));
	  },
	  resetAttachments : function() {
	    for (var i = 0; i < MessageDetail.comments.att_i; i++) {
	      MessageDetail.comments.removeAttachment(i);
	    }
	    MessageDetail.comments.att_i = 0;
	  },
	  showOpt : function (tid) {
	    Grouply.hideEl('toggler_'+tid);
	    Grouply.showEl(tid);
	  }
  },
  
  postComment : function()
  {
    if (!CC.usersOnly())
    {
      return;
    }
    
    var formId = 'comment_form';
    var defaultText = '';
    
    var commentEditor = 'comment_editor';
    
    if (Grouply.get(commentEditor).emptyText)
    {
      defaultText = Grouply.get(commentEditor).emptyText;
    }
    
    var textField = 'comment';
  
    var form = document.getElementById(formId);
    form.comment.value = Grouply.editor.cleanValue(commentEditor);
    form.setdomain.value = document.domain;
    // don't post if comment is empty
    var comment = form.comment.value;
    comment = comment.replace(/^<br>/, "");
    comment = comment.replace(/^\s+|\s+$/g, "");
    if (comment == "")
    {
      Grouply.messageBox.show(LocStrings['Something went wrong...'], MessageDetail.xlmap["Comment is empty. Please enter your comment before clicking Post Comment button"]);
      Grouply.messageBox.hide(3000);
      Grouply.editor.setValue(commentEditor, defaultText);
    }
    else
    {
    	var commentparams = {textstyle : comment_editor_code.style, groupid : encodeURIComponent(MessageDetail.config['group_id']),
														msg_num : encodeURIComponent( MessageDetail.config['msg_num'])};
    	var form = Ext.get('comment_form').dom;
    	if (form.comment)
	    {
	      commentparams['comment'] = form.comment.value;
	    } 
			
			var f_els = Ext.DomQuery.select('#comment_form input[type=file]');
      var has_att = false;
      if (typeof(f_els) == 'object' && f_els.length > 0)
      {
        for (var i=0;i<f_els.length;i++)
        {
          var f_el = f_els[i];
          if (f_el && f_el.value != '')
          {
            has_att = true;
            break;
          }
        }
      }
      
      if (has_att)
      {
				Grouply.showEl('postcomment_pb');
	      Grouply.hideEl('postcomment_btn');
	      
	      if (!MessageDetail.comments.post_pb)
	      {
	        MessageDetail.comments.post_pb = new Ext.ProgressBar({
	           renderTo: 'postcomment_pb',
	           width: 400
	        });
	      }
	      var pbtext = MessageDetail.xlmap['Your attachment is uploading...'];
	      if (f_els.length > 1)
	      {
	        pbtext = MessageDetail.xlmap['Your attachments are uploading...'];
	      }
	      MessageDetail.comments.post_pb.wait({
	         interval: 100,
	         increment: 15,
	         text: pbtext,
	         scope: this
	      });
			}
			
      Grouply.ajaxform2('comment_form',
      
        function (el, success, response){
        	if (MessageDetail.comments.post_pb)
			    {
			      MessageDetail.comments.post_pb.reset();
			      Grouply.showEl('postcomment_btn');
			      Grouply.hideEl('postcomment_pb');
			    }
        	Ext.get('post_result').dom.innerHTML = response.responseText;
          var captcha = Ext.get('pc_captcha_error');
          if (captcha)
          {       
            captcha.remove(); // this to prevent isntances where we have 2 captcha divs    
            Grouply.get('captchapopin').get().on('hide', function(){
              
              Grouply.unregister('captcha_savebutton');
              Grouply.unregister('user_secword');
              Ext.get('captchapopin' + '_content').dom.innerHTML = "";
            });
            
            Grouply.popin.ajaxShow('captchapopin', CC.address + '/ajax/message.postcomment.captcha.ajax', '', null,   function() {
              Grouply.renderComponent('captcha_savebutton');
              Grouply.get('captcha_savebutton').setHandler(MessageDetail.postCaptcha ,captcha_savebutton_code);
              Grouply.renderComponent('user_secword');
              Grouply.get('user_secword').purgeListeners();
              Grouply.get('user_secword').on('specialkey', function(field, e) {
                if (e.getKey() == 13) {
                    MessageDetail.postCaptcha();
                }
              });
            });
          } else
          {
            var post_status_json = Ext.util.JSON.decode(Ext.get('pc_status_json').dom.innerHTML);
            Ext.get('pc_status_json').remove();
            if (post_status_json['status'] == 1)
            {
              Grouply.editor.setValue(commentEditor, defaultText);
            }
            
            Grouply.alert(post_status_json['msg'], post_status_json['title']);
            MessageDetail.comments.resetAttachments();
            if (post_status_json['refreshcomments'] == 1)
            {
              MessageDetail.comments.refresh();
            }
              
          }
          
        
        }
      
      , {params : commentparams});

      
      
    }
    
  },
  
  postCaptcha : function()
  {
    Grouply.ajaxloadform("captchapopin_content", Ext.get("pc_captcha_form").dom, function()
      {
        Grouply.popin.hide('captchapopin');
        MessageDetail.postComment();
      });
  },
  
  getFormParams : function(formId) {
  
    var form = document.getElementById(formId);
    var poststr = "";

    if (form.comment)
    {
      poststr = poststr + "&comment=" + encodeURIComponent( form.comment.value );
    } 

    if (form.copyme && form.copyme.checked) {
      poststr += "&copyme=" + form.copyme.value;
    }
    
    poststr = poststr + "&groupid=" + encodeURIComponent(MessageDetail.config['group_id'])
                      + "&msg_num=" + encodeURIComponent( MessageDetail.config['msg_num'] )
                      + "&textstyle=" + comment_editor_code.style
                      + "&submit=1";

    return poststr;
  },
  
  deleteThread : function () {
		Grouply.confirm(MessageDetail.xlmap['Do you want to permanently delete this conversation?'], 
													function() {
														Grouply.ajax(CC.address + "/ajax/message.delete.ajax", {"msg_num":MessageDetail.config['msg_num']}, MessageDetail.deleteThreadCallback);
													}, 
													null, 
													MessageDetail.xlmap['Delete Conversation'],
													true);
	},
	
	deleteThreadCallback : function (options, success, response) {
		var status_json = Ext.util.JSON.decode(response.responseText);
    if (status_json && status_json['success'] > 0)
    {
    	Grouply.alert(MessageDetail.xlmap['The conversation has been deleted'], MessageDetail.xlmap['Conversation deleted']);
    	Grouply.messageBox.hide(3000);
      window.location.href = CC.address;
    } else
		{
			var errorText = LocStrings['Something went wrong...'];
			if (status_json && status_json['error'])
			{
				errorText = status_json['error'];
			}
			
			Grouply.alert(errorText, MessageDetail.xlmap['Unable to delete conversation']);
			Grouply.messageBox.hide(3000);
		}
	},
  loadVideo : function (el, p, v)
  {		
  	var el_ct = el.parentNode;
  	Ext.get(el_ct).addClass('loaded');
		VideoUtils.getVideoEmbed(el_ct,p,v,{autoplay:1,fs:1,allowiframe:1});
	}
	
};
