﻿/* @Perfect World Entertainment
 * @class MediaManager
 * @requires document, Page, jQuery
 * @description
 *
 * Handles js for the media module
 *
 */


MediaManager = {

    replyID: null,

    init: function(){

        MediaManager.bindEvents();
    },

    bindEvents: function(){

        $('.reply-btn').bind('click', MediaManager.showReply);
        $('.postReply').bind('click', MediaManager.validateReply);
        $('.PostComment').bind('click', MediaManager.validateComment);
        $('#article').find('.check-login').bind('click', MediaManager.scrollToComment);
		$('.Delete').bind('click', MediaManager.deleteComment);
    },

    scrollToComment: function(){

        if($(this).hasClass('require-login')) return;

        $('html').animate({ scrollTop: $('#comment-title').offset().top - 200 }, 450);

    },

    showReply: function(){
		
        MediaManager.replyID = $(this).parent().parent().attr("id").replace('commentsId', '');
        
		var addReply = $('#r'+MediaManager.replyID).find('.addReply');
        
		if(addReply.is(":visible") || addReply.hasClass('curReply')){

             addReply.slideUp(350);
             addReply.removeClass('curReply');

        }else{

             $('.curReply').slideUp(350);
             $('.curReply').removeClass('curReply');
             addReply.slideDown(350);
             addReply.addClass('curReply');
        }

    },

    validateReply: function(){

        $('p.media-error').hide();
        $('textarea.media-error').removeClass('media-error');

        var container = $(this).parent().parent();
        var textarea = container.find('textarea').eq(0);
		var id = container.attr('id').replace('r', '');

        if(textarea.val() == ''){

            container.find('p.media-error').show();
            textarea.addClass('media-error');
            return;
        }
        
		$.ajax({

			url: '/media/addComment/',
            type: 'post',
            data: 'content='+$.trim(textarea.val())+'&parentid='+id+'&rootid='+id+'&type='+$('#commenttype').val()+'&vid='+$('#parentid').val(),
            success: function(data){

                var replyData = JSON.parse(data);

                if(replyData.status != 'successful'){ //if the data wasn't written to the DB

                    textarea.after('<p class="media-error">'+replyData.msg+'</p>');
                    container.find('.media-error').eq(0).show();
                    return;

                };

                var html = '<li class="sub01" style="display: none;"><h3><a href="http://core.perfectworld.com/u/'+replyData.data.nickname+'">'+replyData.data.nickname+'</a></h3><p>'+replyData.data.content+'</p></li>';
                var sibling = container.parent(), target = null;

                while(true){ //gets last response so we can append it to the end of the responses

                    target = sibling.next();
                    if(target.attr('id').length > 0){

                        sibling.after(html);
                        break;

                    }

                    sibling = target;

                }

                sibling.next().slideDown(500);
                container.find('.curReply').slideUp(350);
                textarea.val('');
            },

            error: function(xhr, err){

                 textarea.after('<p class="media-error">There was an error submitting your response.</p>');

            }

        });


    },

    validateComment: function(){

        $('p.media-error').hide();
        $('textarea.media-error').removeClass('media-error');

        var container = $(this).parent();
        var textarea = container.find('textarea').eq(0);

        if(textarea.val() == ''){

            container.find('p.media-error').show();
            textarea.addClass('media-error');
            return;
        }
        
		$.ajax({

            url: '/media/addComment/',
            type: 'post',
            data: 'content='+$.trim(textarea.val())+'&parentid='+$('#userReplyTo').next().val()+'&rootid='+$('#userReplyTo').next().val()+'&type='+$('#commenttype').val()+'&vid='+$('#parentid').val(),

            success: function(data){

                var replyData = JSON.parse(data);
                if(replyData.status != 'successful'){ //if the data was unable to be written to the DB

                    textarea.next().after('<p class="media-error">'+replyData.msg+'</p>');
                    container.find('.media-error').eq(0).show();
                    return;

                };

                var commentsList = $('.commentsList');
                var cls = '';

                (commentsList.find('li').eq(0).attr('class') == 'odd')? cls = 'even' : cls = 'odd';

                var html = '<li id="commentsId'+replyData.data.id+'" class="'+cls+'" style="display: none;"><a id="b'+replyData.data.id+'" class="btnsm-blue reply-btn-blue"><span class="ico-arrow reply-btn">Reply</span></a><h3><a href="http://core.perfectworld.com/u/'+replyData.data.nickname+'">'+replyData.data.nickname+'</a><span class="timestamp">@ '+replyData.data.dateline+'</span></h3><p>'+replyData.data.content+'</p>';

                var replyhtml = '<form id="r'+replyData.data.id+'" class="reply-form" method="post" action="/blog/wp-comments-post.php"><div class="addComments addReply"><p>Replying to <strong>'+replyData.data.nickname+'</strong></p><textarea cols="" rows="" name="comment"></textarea><p class="media-error" style="display: none;">Please write a reply</p><p id="s'+replyData.data.id+'" class="postReply">Post Reply</p></div><input type="hidden" class="postID" value="'+replyData.data.id+'" /><input type="hidden" class="commentParent" value="0" /></form>';

                if(location.search.indexOf('page') != -1){

                    var notehtml = '<p> *note: This comment will appear on page 1 upon page refresh. </p>';

                }else{

                    var notehtml = '';

                }

                var endinghtml = '</li>'

                commentsList.prepend(html + replyhtml + notehtml + endinghtml);

                commentsList.find('li').eq(0).find('.reply-btn').bind('click', MediaManager.showReply);
                commentsList.find('li').eq(0).find('.postReply').bind('click', MediaManager.validateReply);

                if($.browser.safari){

                    $('body').animate({ scrollTop: commentsList.offset().top - 250 }, 550);

                }else{

                    $('html').animate({ scrollTop: commentsList.offset().top - 250 }, 550);

                }

                setTimeout("$('.commentsList').find('li').eq(0).slideDown(500)", 600);
                textarea.val('');

            },

            error: function(xhr, err){

                 textarea.after('<p class="media-error">There was an error submitting your response.</p>');

            }

        });

	},

	deleteComment: function(){

		var c = confirm("Are you sure you want to delete this comment?");

		if(!c) return;

		var comment = $(this).parent();
		var id = comment.attr('id').replace('commentsId', '');

		$.ajax({

			url: '/media/deleteComment',
			type: 'post',
			data: 'id='+id,
			success: function(data){
				
				var replyData = JSON.parse(data);

				if(replyData.status == 'failed'){

					alert(replyData.msg);
					return;

				}

				comment.slideUp(350);
				setTimeout("comment.remove()", 375);
			},

			error: function(){

				alert("There was an error deleting this post.");

			}

		});			

    }

}

Page.queue(MediaManager.init);


