﻿RuanYu.register('site.v1.forum');

site.v1.forum = {
    
    /*
     * 帖子 
     */
    thread:{
    
        url: '/services/RuanYu/Forum/Ajax.ForumThreadWrapper.aspx',
    
        post : function(categoryId)
        {
            location.href = '/forum/forum-post.aspx?categoryId=' + categoryId + '&returnUrl=' + location.pathname;
        },
        
        edit : function(id, categoryId)
        {
            location.href = '/forum/forum-post.aspx?id=' + id + '&categoryId=' + categoryId + '&returnUrl=' + location.pathname;
        },
        
        setUp : function(id)
        {
            var outString = '<?xml version="1.0" encoding="utf-8"?>';

            outString += '<ajaxStorage>';
            outString += '<action><![CDATA[setUp]]></action>';
            outString += '<id><![CDATA[' + id + ']]></id>';
            outString += '</ajaxStorage>';

            var options = {
                method:'post', 
                parameters:{ 
                    resultType:'json',
                    xml:outString
                },
                onSuccess: site.v1.forum.thread.setUp_callback
            }

            new Ajax.Request(site.v1.forum.thread.url, options);
        },
        
        setUp_callback : function(response)
        {
	        var result = response.responseText.evalJSON().message;

            switch(Number(result.returnCode))
            {
                case 0:
                    alert("您已经成功的顶了一下这篇帖子, 谢谢参与. ^_^");
                    break;

                case 1:
                    alert(result.value);
                    break;

                default:
                    break;
            }
        },
        
        setTop : function(id, status)
        {
            var outString = '<?xml version="1.0" encoding="utf-8"?>';

            outString += '<ajaxStorage>';
            outString += '<action><![CDATA[setTop]]></action>';
            outString += '<id><![CDATA[' + id + ']]></id>';
            outString += '<status><![CDATA[' + status + ']]></status>';
            outString += '</ajaxStorage>';

            var options = {
                method:'post', 
                parameters:{ 
                    resultType:'json',
                    xml:outString
                },
                onSuccess: site.v1.forum.thread.setTop_callback
            }

            new Ajax.Request(site.v1.forum.thread.url, options);
        },
        
        setTop_callback : function(response)
        {
	        var result = response.responseText.evalJSON().message;

            switch(Number(result.returnCode))
            {
                case 0:
                    alert(result.value);
                    location.href = '/forum/archive/' + $F("threadId") + '.aspx';
                    break;

                case 1:
                    alert(result.value);
                    break;

                default:
                    break;
            }
        },
        
        setHot : function(id, status)
        {
            var outString = '<?xml version="1.0" encoding="utf-8"?>';

            outString += '<ajaxStorage>';
            outString += '<action><![CDATA[setHot]]></action>';
            outString += '<id><![CDATA[' + id + ']]></id>';
            outString += '<status><![CDATA[' + status + ']]></status>';
            outString += '</ajaxStorage>';

            var options = {
                method:'post', 
                parameters:{ 
                    resultType:'json',
                    xml:outString
                },
                onSuccess: site.v1.forum.thread.setHot_callback
            }

            new Ajax.Request(site.v1.forum.thread.url, options);
        },
        
        setHot_callback : function(response)
        {
	        var result = response.responseText.evalJSON().message;

            switch(Number(result.returnCode))
            {
                case 0:
                    alert(result.value);
                    location.href = '/forum/archive/' + $F("threadId") + '.aspx';
                    break;

                case 1:
                    alert(result.value);
                    break;

                default:
                    break;
            }
        },
        
        save : function()
        {
            //数据检测
            var input;
            
            // title 地址
            input = $("title");
            
            if(input)
            {
                if(input.value == "")
                {
                    alert('提示:标题不能为空!');
                    input.focus();
                    return; 
                }
                
            }
            
            // content 内容
            input = $("content");
            
            if(input)
            {
                if(input.value == "")
                {
                    alert('提示:内容不能为空!');
                    input.focus();
                    return; 
                }
                
            }

            var memberToken = RuanYu.Web.memberToken;
            
            var outString = '<?xml version="1.0" encoding="utf-8"?>';

            outString += '<ajaxStorage>';
            outString += '<action><![CDATA[save]]></action>';
            outString += '<id><![CDATA[' + $F("id") + ']]></id>';
            outString += '<token><![CDATA[' + $F("token") + ']]></token>';
            outString += '<accountId>' + ((typeof(memberToken.id)=='undefined') ? '0' : memberToken.id) + '</accountId>';
            outString += '<categoryId><![CDATA[' + $F("categoryId") + ']]></categoryId>';
            outString += '<title><![CDATA[' + $F("title") + ']]></title>';
            outString += '<content><![CDATA[' + site.v1.forum.util.getTextAreaValue('content') + ']]></content>';
            outString += '<isTop>' + $F("isTop") + '</isTop>';
            outString += '<isHot>' + $F("isHot") + '</isHot>';
            outString += '</ajaxStorage>';

            var options = {
                method:'post', 
                parameters:{ 
                    resultType:'json',
                    xml:outString
                },
                onSuccess: site.v1.forum.thread.save_callback
            }

            new Ajax.Request(site.v1.forum.thread.url, options);
        },

        save_callback : function(response)
        {
	        var result = response.responseText.evalJSON().message;

            switch(Number(result.returnCode))
            {
                case 0:
                    alert("发布成功");
                    
                    location.href = '/forum/category/' + $F("categoryId") + '/default.aspx';
                    break;

                case 1:
                    alert(result.value);
                    break;

                default:
                    break;
            }
        },
        
        /*
         * 删除对象
         */
        confirmDelete: function(value) 
        {
            if (confirm('确定删除?')) 
            {
                var outString = '<?xml version="1.0" encoding="utf-8" ?>';
                
                outString += '<ajaxStorage>';
                outString += '<action><![CDATA[delete]]></action>';
                outString += '<ids><![CDATA[' + value + ']]></ids>';
                outString += '</ajaxStorage>';
                
                var options = {
                    method:'post',
                    parameters:{
                        resultType: 'json',
                        xml: outString
                    },

                    onSuccess: site.v1.forum.thread.confirmDelete_callback
                };

                new Ajax.Request(site.v1.forum.thread.url, options);
            }
        },

        confirmDelete_callback: function(response) 
        {
            var result = response.responseText.evalJSON().message;

            switch (Number(result.returnCode)) {
                case 0:
                    location.href = '/forum/category/'+ $F('categoryId') +'/default.aspx';
                    break;

                case 1:
                    alert(result.value);
                    break;

                default:
                    break;
            }
        },
        
        /*
         *
         */
        load : function()
        {
            var button = $("btnSubmit");
            
            if(button)
            {
                Event.observe(button, "click", site.v1.forum.thread.save);
            }
            
            if($("content") != null)
            {
                $('content').value = site.v1.forum.util.setTextAreaValue('content', $('content').value);
            }
        }
    },
    
    /*
     * 评论
     */
    comment : {
    
        url: '/services/RuanYu/Forum/Ajax.ForumCommentWrapper.aspx',

        reply : function() 
        {
            location.href = '/forum/forum-reply.aspx?categoryId=' + $F('categoryId') + '&threadId=' + $F('threadId') + '&returnUrl=' + location.pathname;
        },
        
        edit : function(id)
        {
            location.href = '/forum/forum-reply.aspx?id=' + id + '&categoryId=' + $F('categoryId') + '&threadId=' + $F('threadId') + '&returnUrl=' + location.pathname;
        },
        
        save: function() {
            //数据检测
            var input;

            // title 地址
            input = $("title");

            if (input) {
                if (input.value == "") {
                    alert('提示:标题不能为空!');
                    input.focus();
                    return;
                }

            }

            // content 内容
            input = $("content");

            if (input) {
                if (input.value == "") {
                    alert('提示:内容不能为空!');
                    input.focus();
                    return;
                }

            }

            var memberToken = RuanYu.Web.memberToken;

            var memberId = ((typeof(memberToken.id)=='undefined') ? '0' : memberToken.id) ;
            
            if(memberId == 0)
            {
                location.href = '/member/login.aspx?returnUrl=' + encodeURIComponent(location.href);
                return;
            }

            if($("threadId") == null)
                return;
            
            var outString = '<?xml version="1.0" encoding="utf-8"?>';

            outString += '<ajaxStorage>';
            outString += '<action><![CDATA[save]]></action>';
            outString += '<id><![CDATA[' + ($("id") == null ? '0' : $F("id")) + ']]></id>';
            outString += '<threadId><![CDATA[' + $F("threadId") + ']]></threadId>';
            outString += '<accountId>' + ((typeof(memberToken.id)=='undefined') ? '0' : memberToken.id) + '</accountId>';
            outString += '<title><![CDATA[' + $F("title") + ']]></title>';
            outString += '<content><![CDATA[' + site.v1.forum.util.getTextAreaValue('content') + ']]></content>';
            outString += '</ajaxStorage>';

            var options = {
                method: 'post',
                parameters: {
                    resultType:'json',
                    xml: outString
                },
                onSuccess: site.v1.forum.comment.save_callback
            }

            new Ajax.Request(site.v1.forum.comment.url, options);
        },

        save_callback: function(response) 
        {
            var result = response.responseText.evalJSON().message;

            switch (Number(result.returnCode)) {
                case 0:
                    alert("回复成功");

                    $("content").value = '';
                    
                    location.href = '/forum/archive/' + $F("threadId") + '.aspx';
                    
                    break;

                case 1:
                    alert(result.value);
                    break;

                default:
                    break;
            }
        },
        
        /*
         * 删除对象
         */
        confirmDelete: function(value) 
        {
            if (confirm('确定删除?')) 
            {
                var outString = '<?xml version="1.0" encoding="utf-8" ?>';
                
                outString += '<ajaxStorage>';
                outString += '<action><![CDATA[delete]]></action>';
                outString += '<ids><![CDATA[' + value + ']]></ids>';
                outString += '</ajaxStorage>';
                
                var options = {
                    method:'post',
                    parameters:{
                        resultType: 'json',
                        xml: outString
                    },

                    onSuccess: site.v1.forum.comment.confirmDelete_callback
                };

                new Ajax.Request(site.v1.forum.comment.url, options);
            }
        },

        confirmDelete_callback: function(response) 
        {
            var result = response.responseText.evalJSON().message;

            switch (Number(result.returnCode)) {
                case 0:
                    location.reload();
                    break;

                case 1:
                    alert(result.value);
                    break;

                default:
                    break;
            }
        },
        
        /*
         *
         */
        load: function()
        {
            var button = $("btnSubmit");

            if (button) 
            {
                Event.observe(button, "click", site.v1.forum.comment.save);
            }
            
            if($("content") != null)
            {   
                $('content').value = site.v1.forum.util.setTextAreaValue('content', $('content').value);
            }
        }
    },
    
    util:{
        getTextAreaValue : function(textareaName)
        {
            var re = /\n/g;
            
            var value = $(textareaName).value.replace(re,'</p><p>');
            
            value = '<p>' + value + '</p>';
            
            return value;
        },

        /*
	     *
	     */
        setTextAreaValue : function(textareaName, value)
        {
            var re = /<\/p><p>/g; 
            
            value = value.replace(re,"\n");
            
            re = /<p>/g; 
            value = value.replace(re,'');
            
            re = /<\/p>/g; 
            value = value.replace(re,'');
            
            if($(textareaName) != null)
                $(textareaName).value = value;
                
            return value;
        }
    }
}

if(location.pathname == '/forum/forum-post.aspx')
{
    Event.observe(window, "load", site.v1.forum.thread.load);
}
else
{
    Event.observe(window, "load", site.v1.forum.comment.load);
}