/* @author  various authors
*  @build   2010-05-12 13:55
*  update for mootools 1.3.1
*/
var FollowNote={presets:{mainNoteID:0,noteType:0,mainNoteUserID:0,isLogin:false,rootCont:".contList",url:"/follownote.v",blackUrl:"/blacklist.v",noteTitle:"noteTitle",noteBody:"followNote",textarea:"noteAddText",emotion:"noteAddEmo",submitEle:"noteAddSubmit",noteError:"noteAdderror",noteCancel:"noteAddCancel",form:"followNoteAdd",onAdd:$empty},initialize:function(A){this.options={};this.setOptions(this.presets,A||{});this.url=(DP.data("ajaxSwitch")&&DP.data("ajaxSwitch")==1)?"/ajax/json/shop/reviewfollownote":this.options.url;this.title=$(this.options.noteTitle);this.body=$(this.options.noteBody);this.textarea=$(this.options.textarea);this.emo=$(this.options.emotion);this.sub=$(this.options.submitEle);this.error=$(this.options.noteError);this.form=$(this.options.form);this.formWrap=this.form.getParent();this.cancel=$(this.options.noteCancel);this.prompt=new Prompt();this.scroll=new Scroll({duration:300});this.build()},build:function(){if(this.sub||this.options.isLogin){this.sub.addEvent("click",function(){!this.pending&&this.add()}.bind(this));this.setEmotion()}return this},valid:function(A){if($(A).get("value").length<1||$(A).get("value").length>500){return false}return true},getEditCont:function(C,B){var A="do=get&follownoteid="+B;new AjaxReq({url:this.url,method:"post",data:A,onRequest:function(){C.getElement("textarea").set("value","正在加载数据...")},onSuccess:function(D){if(D&&D.code==200){C.getElement("textarea").set("value",D.msg.noteBody||"")}else{C.getElement(".noteError").setStyle("display","inline").set("html",D.msg.toString()||"操作失败，请重试")}}.bind(this),onError:function(){C.getElement(".noteError").setStyle("display","inline").set("html","操作失败，请重试")}}).send()},setEditEle:function(B,C,A){if(A){new Element("div").addClass("contList-edit").set("html",'<textarea style="width:500px" rows="8" cols="80"></textarea><p><input type="button" onclick="FollowNote.edit('+C+')" value="发表" /><input type="button" onclick=FollowNote.fn('+C+',"cancelEdit") value="取消" /><span class="noteError">回应内容应大于0小于500个字符!</span></p>').inject(B.getElement("dd"))}else{B.getElement(".contList-edit").dispose()}},fn:function(C,B){var A=$("FollowNote_"+C);if(!A){return }switch(B){case"edit":A.getElements(".contList-fn,.contList-con").setStyle("display","none");this.setEditEle(A,C,1);this.getEditCont(A,C);break;case"cancelEdit":A.getElements(".contList-fn,.contList-con").setStyle("display","block");this.setEditEle(A,C,0);break;case"del":A.getElement(".confirm").setStyle("display","block");break;case"cancelDel":A.getElement(".confirm").setStyle("display","none")}},add:function(){this.pending=true;var A=this.valid(this.textarea);if(!A){this.error.setStyle("display","inline");this.pending=false;return false}else{this.error.setStyle("display","none");if(this.$events.add!=null){this.fireEvent("onAdd",[this.addBlock,this]);this.pending=false}else{this.addBlock()}}},addBlock:function(){var A="do=isblock&follownoteid=000&mainnoteid="+this.options.mainNoteID+"&mainnoteuserid="+this.options.mainNoteUserID+(this.threadOn?"&grandpaID="+this.grandpaID:"");new AjaxReq({url:this.url,method:"post",data:A,onSuccess:function(B){if(B&&B.code==200){if(B.msg.isBlock==true){this.error.setStyle("display","inline").set("html",B.msg.oName+"已将你加入黑名单，不接受你的回应");this.pending=false}else{this.addData()}}else{this.error.setStyle("display","inline").set("html",B.msg.toString());this.pending=false}}.bind(this),onError:function(){this.error.setStyle("display","inline").set("html","操作失败");this.pending=false}.bind(this)}).send()},addData:function(){var A="do=add&follownoteid=000&mainnoteid="+this.options.mainNoteID+"&notetype="+this.options.noteType+"&notebody="+this.textarea.value.cnEncode()+(this.threadOn?"&grandpaID="+this.grandpaID:"");new AjaxReq({url:this.url,method:"post",data:A,onSuccess:function(B){if(B&&B.code==200){this.body.appendHTML(B.msg.noteBody);this.textarea.set("value","");this.pending=false;this.threadOn?this.setCount(1,this.grandpaID):this.setCount(1);this.threadOn&&this.recover()}else{this.error.setStyle("display","inline").set("html",B.msg.toString());this.pending=false}}.bind(this),onError:function(){this.error.setStyle("display","inline").set("html","操作失败");this.pending=false}.bind(this)}).send()},edit:function(E){var C=$("FollowNote_"+E);var B=C.getElement("textarea");var D=this.valid(B);if(!D){C.getElement(".noteError").setStyle("display","inline");return false}else{C.getElement(".noteError").setStyle("display","none");var A="do=update&follownoteid="+E+"&notebody="+B.value.cnEncode();new AjaxReq({url:this.url,method:"post",data:A,onRequest:function(){C.getElement(".contList-edit").set("html",'<span class="loading">正在提交，请稍候.....</span>')}.bind(this),onSuccess:function(F){if(F&&F.code==200){C.getElement(".contList-con").set("html",F.msg.noteBody);C.getElement(".date").set("html",F.msg.dateAction);this.fn(E,"cancelEdit")}else{C.getElement(".noteError").setStyle("display","inline").set("html",F.msg.toString()||"操作失败，请重试")}}.bind(this),onError:function(){C.getElement(".noteError").setStyle("display","inline").set("html","操作失败，请重试")}}).send()}},del:function(D,C){var B=$("FollowNote_"+D);var A="do=delete&follownoteid="+D;new AjaxReq({url:this.url,method:"post",data:A,onRequest:function(){B.getElement(".contList-con").set("html",'<span class="loading">正在删除，请稍候.....</span>')}.bind(this),onSuccess:function(F){if(F&&F.code==200){B.dispose();if(!C){var E=B.getNext(".sub-contList");E&&E.dispose()}this.setCount(0,C)}else{B.getElement(".contList-con").set("html",'<span class="loading">删除失败，请重试</span>')}}.bind(this),onError:function(){B.getElement(".contList-con").set("html",'<span class="loading">删除失败，请重试</span>')}}).send()},isBlock:function(C,B){var A=null;if(C!=null&&B!=null){A="do=follownoteblock&blockUserID="+C+"&blockUserNickName="+B;new AjaxReq({url:this.options.blackUrl,method:"post",data:A,onSuccess:function(D){if(D&&D.code==200){if(D.msg.isBlock){this.prompt.confirm(["删除黑名单",B+"已在您的黑名单中，是否解除？"],{onReturn:function(E){if(E){this.block("remove",C)}}.bind(this)})}else{if(!D.msg.isFriend){this.prompt.confirm(["加入黑名单","真的要将"+B+"踢到黑名单里吗？"],{onReturn:function(E){if(E){this.block("add",C)}}.bind(this)})}else{this.prompt.confirm(["加入黑名单",'<p style="width:200px; padding:5px; margin:0 auto; border:1px solid #999"><input type="checkbox" name="cbIsfriend" id="cbIsfriend" />同时将此人从我的好友中删除</p><p style="margin-top:15px; font-weight:bold">真的要将'+B+"踢到黑名单里吗？<p>"],{onReturn:function(E){if(E){this.block("add",C)}}.bind(this)})}}}else{this.prompt.confirm("操作失败，请重试")}}.bind(this),onError:function(){this.prompt.confirm("操作失败，请重试")}.bind(this)}).send()}},block:function(D,E){var C=$("cbIsfriend");var B="false";if(C){if(C.checked){B="true"}}var A=null;if(D!=null&&E!=null){A="do="+D+"&userid="+E+"&isdelfriend="+B;new AjaxReq({url:this.options.blackUrl,method:"post",data:A,onRequest:function(){Mbox.openLite('<p class="Doing">正在操作，请稍候...</p>',180,30)},onSuccess:function(G){if(G.code==200&&G.msg){var F=(D=="add")?"添加":"解除";Mbox.openLite('<p class="Doing">'+F+"黑名单成功</p>",180,30);setTimeout(function(){Mbox.close()},1000)}else{Mbox.openLite('<p class="Doing">操作失败，请重试</p>',180,30);setTimeout(function(){Mbox.close()},1000)}}.bind(this),onError:function(){Mbox.openLite('<p class="Doing">操作失败，请重试</p>',180,30);setTimeout(function(){Mbox.close()},1000)}}).send()}},setCount:function(C,G){if(!G){var D=this.body.getElements(this.options.rootCont).length||0;if(D==1&&C){this.title.set("html",'现有<span id="follownotecount">1</span>份回应')}else{if($type(C)=="number"){D=this.title.getElement("#follownotecount").get("text").toInt();this.title.set("html",'现有<span id="follownotecount">'+(C?D+1:D-1)+"</span>份回应")}}}else{var A=$("FollowNote_"+G).getNext(".sub-contList"),F=A.getElements("dl").length,D=A.getElement(".count"),E=A.getElement(".contList-ctrl");if(F<2){E&&E.addClass("Hide")}else{if(F===2){E&&E.removeClass("Hide");D.set("text",1)}else{if(D){var B=D.get("text").toInt()}E&&E.removeClass("Hide");D&&D.set("text",(C?B+1:B-1))}}this.threadFold(A,"remain")}},setEmotion:function(){$(this.options.emotion).getElements("p").addEvents({mouseover:function(){$(this).set("tween",{property:"fontSize",duration:120}).get("tween").cancel().start("18px")},mouseout:function(){$(this).set("tween",{property:"fontSize",duration:100}).get("tween").cancel().start("13px")},click:function(A){this.textarea.set("value",this.textarea.get("value")+$(A.target).get("text"))}.bind(this)});return this},extend:function(A){return $extend(this,A)},threadInit:function(){var A=this;this.cancel.addEvent("click",function(B){B&&new Event(B).preventDefault();A.recover()});this.defaultOp={body:this.body,options:{noteType:this.options.noteType}};this.threadReady=true},foldInit:function(A){var B=$$(A),C=this;B&&B.each(function(D){D.addEvent("click",function(E){E&&new Event(E).preventDefault();C.threadFold(D)})})},threadFold:function(D,B){if(B===undefined){var E=D.retrieve("toFold"),F=D.getParent().getAllNext()}else{var E,F;F=D.getElements(".contList");D=D.getElement(".contList-ctrl a");if(!D){return }E=B==="remain"?!D.retrieve("toFold"):B}for(var C=0,A=F.length;C<A;C++){C===A-1||!E?F[C].removeClass("Hide"):F[C].addClass("Hide")}if(E){D.getElement(".text").set("text","展开")}else{D.getElement(".text").set("text","收起")}D.store("toFold",!E)},thread:function(A){this.threadOn=true;this.grandpaID=A;this.body=$("FollowNote_"+A).getNext(".sub-contList");this.options.noteType=16},recover:function(){this.threadOn=false;this.form.inject(this.formWrap);this.cancel.addClass("Hide");this.body=this.defaultOp.body;$extend(this.options,this.defaultOp.options)},reply:function(B){if(!this.threadReady){this.threadInit()}this.thread(B);this.form.inject(this.body);this.cancel.removeClass("Hide");var A=window.getScroll().y;distance=this.form.getPosition().y+270-A-window.getSize().y;if(distance>0){this.scroll.start(0,distance+A)}}};FollowNote.extend(new Events).extend(new Options);Scroll=new Class({Extends:Fx,initialize:function(A,B){var C;if(B){C=$(B)}else{C=window}this.element=this.subject=C;this.parent(A)},set:function(){var A=Array.flatten(arguments);if(Browser.Engine.gecko){A=[Math.round(A[0]),Math.round(A[1])]}this.element.scrollTo(A[0],A[1])},compute:function(C,B,A){return[0,1].map(function(D){return Fx.compute(C[D],B[D],A)})},start:function(C,G){if(!this.check(C,G)){return this}var E=this.element.getScrollSize(),B=this.element.getScroll(),D={x:C,y:G};for(var F in D){var A=E[F];if($chk(D[F])){D[F]=($type(D[F])=="number")?D[F]:A}else{D[F]=B[F]}}return this.parent([B.x,B.y],[D.x,D.y])},toTop:function(){return this.start(false,0)},toLeft:function(){return this.start(0,false)},toRight:function(){return this.start("right",false)},toBottom:function(){return this.start(false,"bottom")},toElement:function(B){var A=$(B).getPosition(this.element);return this.start(A.x,A.y)}});
