Type.registerNamespace("x");x.Comments=function(A,B,D,C){this.element=A;this._editor=new x.EditorHelper(A,B.controls,B.ajaxButtons);this._resources=D;this._doc=C;this._onRequestFailedHandler=null;this.initialize()};x.Comments.prototype={initialize:function(){this._onRequestFailedHandler=Function.createDelegate(this,this._onRequestFailed)},dispose:function(){this._onRequestFailedHandler=null},_onRequestFailed:function(B,C,A){alert(B._message);this._editor.enableAjaxButtons()},isAjax:function(){return $ajaxController.isAjax()},checkAuthorName:function(D,B){B.IsValid=true;var A=B.Value.trim().toLowerCase();var E=this._resources.ReservedAuthorsNames;for(var C=0;C<E.length;C++){if(E[C].toLowerCase()==A){B.IsValid=false;break}}},_cleanPreview:function(){var B=$get(this._editor.get_controls().Preview.control);var A=$get("c0",B);if(A){B.removeChild(A)}return B},_cleanEditor:function(){if(!this._editor.get_controlValue("SavePersonalInfo")){this._editor.set_controlValue("Author","");this._editor.set_controlValue("EmailAddress","")}this._editor.set_controlValue("Title","RE: "+this._doc.Title);this._editor.set_controlValue("Comment","");this._cleanPreview()},_appendComment:function(C){var A=$get("comments");var B=A.firstChild;B.style.display="block";A.innerHTML+=C;this._cleanEditor()},_onSaveRequestSucceeded:function(A,D,B){this._appendComment(A);var C=$get("status");C.className="success";C.innerHTML=this._resources.strings.CommentSaveSucceeded;this._editor.enableAjaxButtons()},_getEditor:function(B){var A;if(typeof B==="undefined"||B==null){A=new Model.CommentInfo();A.Id=0;A.TimePoint=new Date()}else{A=B}A=this._editor.get_Editor(A);A.DocumentId=this._doc.Id;return A},save:function(){if(!this.isAjax()){return true}this._editor.disableAjaxButtons();c=this._getEditor();Web.Services.Comments.SaveAndView(c,c.SavePersonalInfo,Function.createDelegate(this,this._onSaveRequestSucceeded),this._onRequestFailedHandler);return false},_previewComment:function(B){var A=this._cleanPreview();A.style.display="block";A.innerHTML+=B},_onPreviewRequestSucceeded:function(A,C,B){this._previewComment(A);this._editor.enableAjaxButtons()},preview:function(){if(!this.isAjax()){return true}this._editor.disableAjaxButtons();var A=this._getEditor();Web.Services.Comments.Preview(A,Function.createDelegate(this,this._onPreviewRequestSucceeded),this._onRequestFailedHandler);return false}};x.Comments.registerClass("x.Comments",null);