$(document).ready(function() {
   Sayings.init();
   Sayings.addReplyCharCounter();
});

var Sayings = (function() {
    //Private
    var _pageSize = 6;
    var _pageIndex = 1;
    var _maxChar = 160;
    
    //This function is use to calculate the number of characters typing
    var charCounter = function (obj, wcObj) {
        var value = obj.value;
        if (value.length > _maxChar) {
            value = value.substring(0, _maxChar);
            obj.value = value;
        }
        else
            wcObj.innerHTML = _maxChar - value.length;
    };
        
    //This function is use to send request to server to post a new blog
    var postBlog = function(msg, photo, isReplied, replyMsgId) {
        $.ajax({
            type: 'POST',
            url:  '/controllers/sayingCtrl.ashx',
            data: 'action=create&msg=' + encodeURIComponent(msg) + '&isReplied='+ isReplied +'&replyMsgId=' + replyMsgId +
                  '&fromSource=0&photo=' + photo + '&t=' + timestamp(),
            success: function(data) { 
                ProcessRPCResult(data);
                if(isReplied)
                {
                    $("#taReplyContentHint").html("Reply Success").fadeOut(800, function(){
                        $('#taReplyContent').show();
                        $('#linkPostReply').parent().parent().find('a.buttonlink')[0].innerHTML=displayReplyBoxTmp;
                        $('#linkPostReply').parent().hide();
                        $(this).remove();
                    });    
                }
                else
                {
                    getSayingList(Sayings.current_tab, 1, saying_current_user, 'mbl_div' + Sayings.current_tab + ' .msg');
                }
            }
        });
    };
    
    //This function is use to delete moblog
    var viewBlog = function(msgId) {
        $.ajax({
            type: 'POST',
            url:  '/rpc/MoBlogProxy.ashx',
            data: 'action=view&msgId=' + msgId + '&t=' + timestamp(),
            success: function(data) {
                var dObj = eval('('+data+')')[0];
                if(dObj && dObj.status != 1) {
                    var replyCon = '';
                    if(dObj.isReplied == 1 && dObj.repliedTo != "-1") {  
                        replyCon = ' <a title='+dObj.repliedMsgId +
                                   ' class="replyLink" onclick="Sayings.viewBlogDetails(this.title)"> in reply to '+  dObj.repliedTo +' </a>';
                    }else if(dObj.repliedTo == "-1"){
                        replyCon = ' <a title='+dObj.repliedMsgId +
                                   ' class="replyLink" onclick="jQuery.facebox(\'<h2>Blog deleted</h2>\')"> in reply to a deleted saying </a>';
                    }
                    jQuery.facebox('<table class="viewBox"><tr><td> '+
                                        '<img src="'+dObj.avatar+'" width="48px" height="48px"/> </td>' +
                                        '<td><div class="content-box">'+
                                            '<div class="author">'+ dObj.userName + ' (' + dObj.postedTime + ') from web' + replyCon +
                                            '</div>'+
                                            '<p>' + dObj.message + '</p>'+
                                        '</div></td>'+
                                    '</table>'
                                   );
                }
            }
        });
    };

    var getSayingList = function(action, page, username, divName){
        ajah("/rpc/sayings/list.aspx",divName,{action:action, page:page,username:username},function(){bind_delete_events('#' + divName + ' .blogbox')});
    };
    
    //This function is uses to display reply box 
    var displayReplyBoxTmp;
    var displayReplyBox = function(replyLink, cancel_text) {
        var replyBoxObj = $(replyLink).parent().parent();
        ddd(replyBoxObj[0].className);

        var divReplyBlog = $$('divReplyBox')
        if(!divReplyBlog)
        {
            str = '<div id="divReplyBox" class="blogbox reply"><div class="blogmsg"><textarea rows="3" cols="1" id="taReplyContent"></textarea></div><br class="br" /><span id="spReplyCounter">160</span><span class="counter"><b>&nbsp;left</b></span><a href="#" id="linkPostReply" class="buttonlink">Post</a></div>';
            divReplyBlog = $(str);
            divReplyBlog.insertAfter(replyBoxObj);
            Sayings.init();
            Sayings.addReplyCharCounter();
        }
        else
        {
            divReplyBlog = $(divReplyBlog);
            divReplyBlog.insertAfter(replyBoxObj);
        }

        $id('taReplyContent').value = '';
        $id('spReplyCounter').innerHTML = '160';
        if(replyLink.innerHTML == cancel_text) {
            divReplyBlog.fadeOut();    
            replyLink.innerHTML = displayReplyBoxTmp;
        }
        else
        {
            divReplyBlog.fadeIn();
            displayReplyBoxTmp = replyLink.innerHTML;
            $(replyLink).html(cancel_text);
        }
        $("#taReplyContent").focus();
    };
    
    return {
    
        dReplyBox: function(replyLink, lType) {
            displayReplyBox(replyLink, lType);
        },
        
        addReplyCharCounter: function() {
          $('#taReplyContent').keyup(function() {
		          charCounter(this, $id('spReplyCounter'));
		      });
        },

        //THis function is use to send request to server to delete a blog
        deleteSaying : function(msgId) {
            $.ajax({
                type: 'POST',
                url:  '/controllers/sayingCtrl.ashx',
                data: 'action=delete&msgId=' + msgId + '&t=' + timestamp(),
                success: function(data) {
                    if(data != 3) {
                      var dObj = eval('('+data+')');
                      if(dObj.status == 0) {
                          if($('#mht_blog_'+msgId)[0])
                            $('#mht_blog_'+msgId).fadeOut(1000);
                          if($('#utd_blog_'+msgId)[0])
                            $('#utd_blog_'+msgId).fadeOut(1000);
                      } else {
                          alert('Fail to delete!!!');
                          return;
                      }  
                    }else {
                      redirectLogin();
                    }
                }
            });
        },

        viewBlogDetails: function(msgId) {
            viewBlog(msgId);
        },
        current_tab: "WithFriends",
        
        init: function() {
            if(_userID != 0)
		        $('#linkMoBlogsPost').click(function() {
		            var blogMsg = $id('taMoBlogContent').value;
		            var photo = '';
		            if($.trim(blogMsg).length > 0) { 
		                postBlog(blogMsg, photo, 0, 0);
		            }
		            $id('taMoBlogContent').value = '';
		            $id('spWordCount').innerHTML = '160';
                    return false;
		        });

            $('#linkPostReply').click(function() {    
                var blogMsg = $id('taReplyContent').value;
                var photo = '';
                if($.trim(blogMsg).length > 0) { 
                    var replyBoxObj = $('#divReplyBox').prev();
                    var replyMsgId = replyBoxObj[0].id;
                    replyMsgId = replyMsgId.substring(9, replyMsgId.length);
                    //Send reply blog
                    $('#taReplyContent').hide().after('<div id="taReplyContentHint"><img src="/images/ajaxing.gif" /></div>');
                    postBlog(blogMsg, photo, 1, replyMsgId);
                }
                return false;
            });
           
            
            $('#taMoBlogContent').keyup(function() {
                charCounter(this, $id('spWordCount'));
            });
            
            $('#ul_mysayingTab > li').click(function(){
              $show($$('mbl_div' + this.title));
              Sayings.current_tab = this.title;
              $(this).addClass("active");
              if($('#mbl_div' + this.title + " .msg").html()=="")
              {
                  //action, page, username, divName
                  getSayingList(this.title, 1, saying_current_user, 'mbl_div' + this.title + " .msg");
              }

              $(this).siblings().each(function(){
                $(this).removeClass("active");
                $hide($$('mbl_div' + this.title));
              });
          });

        }
    }
 })();