$( function() {
    
    var graded = false;
    
    function writeNewIcon(date) {
        var curDatum = new Date();

        var year = date.substring(0,4);
        var month = date.substring(5,7);
        var day = date.substring(8,10);
        var hour = date.substring(11,13);
        var minute = date.substring(14,16);
        var second = date.substring(17,19);
        var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second));

        var diff = curDatum.getTime() - datum.getTime();
        var gap = 12 * 60 * 60 * 1000;
        if (diff < gap) {
            return '<img src="http://static.adwaple.net/images/common/icon/new.gif" />';
        } else {
            return '';
        }
    }

    
    $.fn.agreeForm = function(options) {
        defaults = {
            oid : null,
            ukey : null,
            memberUkey : null,
            url : null,
            submitButtonSrc : 'http://static.adwaple.net/images/forum/button/sympathy_given.gif',
            success: function() {}
        };
        options = $.extend(defaults, options || {});

        
        this.append('<img src="' + options.submitButtonSrc + '" />')
        
        $(this).click(function() {
            if (options.memberUkey == null || options.memberUkey == '') {
                //$("#signInDialog").dialog("open");
                $("#signInForm").submit();
            } else {
                var href = null;
                if (options.url != null) {
                    href = options.url + '?ukey=' + options.ukey + '&oid=' + options.id;
                } else {
                    href = 'agree.json?ukey=' + options.ukey + '&oid=' + options.id;
                }
                $.get(href, function(data){
                    if (data == 0) {
                        alert("이미 추천하셨습니다.");
                    } else {
                        options.success(data);
                        alert("추천점수가 반영되었습니다.");
                    }
                });
            }
            return false;
        });
    }

    $.fn.commentForm = function(options) {
        defaults = {
            objectType : null,
            objectUkey : null,
            memberUkey : null,
            graded : false,
            submitButtonSrc : 'http://static.adwaple.net/images/journal/info/commentSubmit.gif',
            success: function() {}
        };
        options = $.extend(defaults, options || {});
        
        graded = options.graded;
        
        var removeComment = function() {
            var href = this;
            if (confirm("정말로 삭제하시겠습니까?")) {
                $.get(href, function(data) {
                    if (data == 0) {
                        alert("삭제 되지 않았습니다.");
                    } else {
                        $('#commentListForm').submit();
                    }
                });
            }
            return false;
        }

        var agreeComment = function() {
            var href = this;
            if (options.memberUkey == null || options.memberUkey == '') {
                $("#signInForm").submit();
                //$("#signInDialog").dialog("open");
            } else {
                $.get(href, function(data) {
                    if (data == 0) {
                        alert("이미 추천하셨습니다.");
                    } else {
                        $('#commentListForm').submit();
                    }
                });
            }
            return false;
        }

        /* 입력폼 */
        $("#commentForm .select .selectedOption").click(function() {
            $("#commentForm .select .options").css("visibility", "visible");
            return false;
        });
        
        $("#commentForm .select .options .gradeBG").click(function(){
            var grade = $(this).attr("name");
            $("#commentGradeInput").val(grade);
            $("#commentForm .select .selectedOption .gradeBG .gradeIndicator").css("width", (grade*10)+"%");
            $("#commentForm .select .options").css("visibility", "hidden");
            return false;
        });
        
        $('#commentForm').ajaxForm( {
            url :'saveComment.json',
            type :'POST',
            dataType :'json',
            beforeSubmit : function(a, f, o) {
                if (!graded) {
                    if ($('#commentGradeInput').attr("value") == "") {
                        alert("별점을 선택해주세요.");
                        return false;
                    }
                }
                if ($('#commentContent').attr("value") == "") {
                    alert("내용을 입력해주세요.");
                    return false;
                }
            },
            success : function() {
                options.success();
                $("#commentContent").val('');
                $('#commentListForm').submit();
            }
        });
       

        
        /* 리스트폼 */
        var commentListForm = $('<form id="commentListForm"></form>');
        commentListForm.append($('<input type="hidden" name="pageNumber" value="1" />'));
        commentListForm.append($('<input type="hidden" name="objectUkey" value="' + options.objectUkey + '" />'));
        
        var bestCommentListTableContainer = $('<div id="bestCommentListTableContainer"></div>');
        bestCommentListTableContainer.append($('<table id="bestCommentListTable"><tbody></tbody></table>'));

        var commentListTableContainer = $('<div id="commentListTableContainer"></div>');
        commentListTableContainer.append($('<table id="commentListTable"><tbody></tbody></table>'));
        commentListTableContainer.append($('<div id="commentPaginationContainer"><div id="pagination" class="pagination"></div></div>'));
        
        var bestCommentListContainer = $('#bestCommentListContainer');
        bestCommentListContainer.append(bestCommentListTableContainer);

        var commentListContainer = $('#commentListContainer');
        commentListContainer.append(commentListForm);
        commentListContainer.append(commentListTableContainer);

        
        var commentList = function(jsonObject) {
            var bestCommentList = jsonObject.bestCommentList;
            var resultList = jsonObject.commentList;

            var bestCommentListTableBody = $('#bestCommentListTable tbody');
            bestCommentListTableBody.html('');

            if (bestCommentList.length > 0) {
                $.each(
                                bestCommentList,
                                function() {
                                    var oid = this.oid;
                                    var ukey = this.ukey;
                                    var content = this.content;
                                    var writerUkey = this.writerUkey;
                                    var writerId = this.writerId;
                                    var wdate = this.wdate;
                                    var objectUkey = this.objectUkey;
                                    var acount = this.acount;
                                    var grade = this.grade;
                                    var tr1 = $('<tr />');
                                    var tr2 = $('<tr />');

                                    var writer = $('<td class="writer"></td>');
                                    var writerIdDiv = $('<div class="writerId">' + writerId + '</div>');
                                    writerIdDiv.appendTo(writer);
                                    if (grade != null && grade != '') {
                                        var gradeDiv = $('<span class="grade"><span class="gradeBG"><span class="gradeIndicator" style="width:'+(grade*10)+'%">&nbsp;</span></span></span>');
                                        gradeDiv.appendTo(writer);
                                    }                                    
                                    $('<div class="agree"><span>공감</span><span class="count">' + acount + '</span></div>').appendTo(writer);
                                    writer.appendTo(tr1);
                                    $('<td class="content"><span class="content">' + content+ '</span></td>').appendTo(tr2);
                                    tr1.appendTo(bestCommentListTableBody);
                                    tr2.appendTo(bestCommentListTableBody);
                                });

                $('.removeComment').click(removeComment);
                $('.agreeComment').click(agreeComment);
                $('#bestCommentListContainer').css('display', 'block');
            } else {
                $('#bestCommentListContainer').css('display', 'none');
                //$('#bestCommentListTableContainer').css('visibility', 'hidden');
            }

            var commentListTableBody = $('#commentListTable tbody');
            commentListTableBody.html('');

            if (resultList.length > 0) {
                $
                        .each(
                                resultList,
                                function() {
                                    var oid = this.oid;
                                    var ukey = this.ukey;
                                    var content = this.content;
                                    var writerUkey = this.writerUkey;
                                    var writerId = this.writerId;
                                    var wdate = this.wdate;
                                    var objectUkey = this.objectUkey;
                                    var acount = this.acount;
                                    var grade = this.grade;
                                    var tr1 = $('<tr />');
                                    var tr2 = $('<tr />');

                                    var writer = $('<td class="writer"></td>');
                                    var writerIdDiv = $('<div class="writerId">' + writerId + '</div>');
                                    writerIdDiv.appendTo(writer);
                                    var wdateSpan = $('<span class="wdate">' + wdate.substring(0, 16) + '</span>');
                                    wdateSpan.appendTo(writer);
                                    if (grade != null && grade != '') {
                                        var gradeDiv = $('<span class="grade"><span class="gradeBG"><span class="gradeIndicator" style="width:'+(grade*10)+'%">&nbsp;</span></span></span>');
                                        gradeDiv.appendTo(writer);
                                    }                                    
                                    if (writerUkey == options.memberUkey) {
                                        var remove = $('<span><a class="removeComment" href="deleteComment.json?ukey='
                                                + ukey
                                                + '&oid='
                                                + oid
                                                + '&objectUkey='
                                                + objectUkey
                                                + '"><img src="http://static.adwaple.net/images/common/button/deleteComment.gif" /></a></span>');
                                        remove.appendTo(writer);
                                    }
                                    
                                    $('<div class="agree"><a class="agreeComment" href="agreeComment.json?ukey='
                                                    + ukey + '&oid=' + oid
                                                    + '">' + acount
                                                    + '</a></div>').appendTo(
                                            writer);
                                    writer.appendTo(tr1);
                                    $('<td class="content">' + content + ' ' + writeNewIcon(wdate) + '</td>').appendTo(tr2);
                                    tr1.appendTo(commentListTableBody);
                                    tr2.appendTo(commentListTableBody);
                                });

                var pageInfo = jsonObject.pageInfo;
                if (pageInfo) {
                    $("#pagination")
                            .pagination(
                                    pageInfo.totalCount,
                                    {
                                        link_to :"#",
                                        items_per_page :pageInfo.pageSize,
                                        current_page :pageInfo.pageNumber - 1,
                                        callback : function(page_id, jq) {
                                            $(
                                                    "#commentListForm :input[name='pageNumber']")
                                                    .val(page_id + 1);
                                            $('#commentListForm').submit();
                                        }
                                    });
                }

                $('.removeComment').click(removeComment);
                $('.agreeComment').click(agreeComment);
            } else {
                $('#commentPaginationContainer').css('visibility', 'hidden');
                // commentListTableBody.html('<tr><td>의견이 없습니다.</td></tr>');
            }

            var totalCount = 0
            if (pageInfo) {
                totalCount = pageInfo.totalCount;
            }
            $('#commentTotalCount').html('총  <span>' + totalCount + '</span> 개');
        }
        
        $('#commentListForm').ajaxForm( {
            url :'listComment.json',
            type :'POST',
            dataType :'json',
            beforeSubmit : function(a, f, o) {
            },
            success :commentList
        });
        $('#commentListForm').submit();

        $('#commentContent').click( function() {
            if (options.memberUkey == null || options.memberUkey == '') {
                $("#signInForm").submit();
            }
        });
    }
});

