$(document).ready(

	function() {

		initComments();
		initReportComment();

		// stemmen op reacties
		initRateComment();
	 
		 // reacties sorteren
		$('#orderby').change(function(){
			var sorting	= $('#orderby').val();
			sortComments(sorting, 0);
			var sorting	= sorting.split('_');
			var newID	= 'comments_'+sorting[1]+'_'+sorting[0]+'_'+sorting[3];
			$('div.pageable').attr('id', newID);
		});

		// reactie karakters tellen
		$('#comment').keyup(function(){
			limitChars('comment', 1000, 'charlimitinfo');
		});

	  }	

);

function limitChars(textid, limit, infodiv) {
	var text = $('#'+textid).val(); 
	var textlength = text.length;
	if(textlength > limit) {
		$('#' + infodiv).html('U kunt niet meer dan '+limit+' karakters typen.');
		$('#'+textid).val(text.substr(0,limit));
		return false;
	} else {
		$('#' + infodiv).html('U kunt nog '+ (limit - textlength) +' karakters typen.');
	return true;
	}
}

function initComments()
{
	$("#comments .closed").each(
	
		function()
		{
			var hidden = true;
			var link = $(this).find(".toggle");			
			
			var comment = $(this).find("blockquote");
			
			link.click(
			
				function()
				{
					if ( hidden )
					{
						comment.slideDown();
						hidden = false;
						$(this).text("Verberg reactie");
					} else {
						comment.slideUp();
						hidden = true;
						$(this).text("Toon reactie");
					}
					
					return false;
				}
			);
		}
	);
}


function initRateComment() {
	$('#comments .comment .header ul li img').click(function(){

		var action = $(this).attr('alt');

		if (action == 'ok') {
			var parts		= $(this).attr('rel').split('_');
			var arg2		= parts[0];
			var comment_id	= parts[1];
			rateComment('+1', arg2, comment_id);
		} else {
			var parts		= $(this).attr('rel').split('_');
			var arg2		= parts[0];
			var comment_id	= parts[1];
			rateComment('-1', arg2, comment_id);
		}
	
	})
}

// reactie rating
function rateComment(rating, arg2, comment_id) { 
   
   if (ReadCookie('comment_'+comment_id+'_vote') != comment_id) {
   
	    $.ajax({
			type: "POST",
			url: baseURL() + "ajax/rate_comment/" + arg2,
			data: {rating:rating, comment_id:comment_id},
			dataType: "data",
	
				success: function(data) {
					var part = data.split("|");
	
	                    if (part[1] == -1 && part[0] == 1) {
	                        $('#status_' + comment_id).html(part[1]);
	                        $('#status_' + comment_id).removeClass('statusok');
	                        $('#status_' + comment_id).addClass('statusnotok');
	                        $('#comment_' + comment_id + ' .header .toggle').show();
							$('#comment_' + comment_id + ' blockquote').slideUp();
							 $('#comment_' + comment_id).addClass('closed');
						} else if (part[1] < 0 && part[0] == 1) {
	                        $('#status_' + comment_id).html(part[1]);
	                        $('#status_' + comment_id).removeClass('statusok');
	                        $('#status_' + comment_id).addClass('statusnotok');
	                        $('#comment_' + comment_id).addClass('closed');
	                    } else if (part[1] > 0 && part[0] == 1) {
	                        $('#status_' + comment_id).html("+" + part[1]);
	                        $('#status_' + comment_id).removeClass('statusnotok');
	                        $('#status_' + comment_id).addClass('statusok');
	                        $('#comment_' + comment_id).removeClass('closed');
	                    } else if (part[1] == 0 && part[0] == 1) {
	                        $('#status_' + comment_id).html(part[1]);
	                        $('#status_' + comment_id).removeClass('statusnotok');
	                        $('#status_' + comment_id).addClass('statusok');
	                        $('#comment_' + comment_id + ' .header .toggle').hide();
	                        $('#comment_' + comment_id + ' blockquote').slideDown();
	                        $('#comment_' + comment_id).removeClass('closed');
	                    }
	                
	                createCookie('comment_'+comment_id+'_vote', comment_id, '90');
					initComments();

	            }
		})

	}
}

function initReportComment() {

	$("#comments .comment").each(function() {

			var hidden = true;
			var link = $(this).find(".report_abuse");			
			var report = $(this).find(".report");
			
			link.click(function() {

					if ( hidden ) {
						report.slideDown();
						hidden = false;
						$(this).text("sluiten");
					} else {
						report.slideUp();
						hidden = true;
						$(this).text("rapporteer als ongepast");
					}
					
					$('.select_report').change(function(){
						reportComment($(this).val());
					});
					
					return false;
				}
			);
		}
	);

}

	
	
// reacties rapporteren
function reportComment(value) {
	
 	var part		= value.split("|");
 	var reason		= part[0];
 	var commentID	= part[1];
 	var type		= part[2];
	
	
	$.ajax({
			type: "POST",
			url: baseURL() + "ajax/report_comment",
			data: {reason:reason, commentID:commentID, type:type},
			dataType: "data",
	
			success: function(data) {

				if(data == "gerapporteerd") {
					
					var link	= $('#comment_'+commentID).find(".report_abuse");
					var report	= $('#comment_'+commentID).find(".report");

					report.slideUp();
					link.replaceWith("<p class=\"reported\">gerapporteerd</p>");
					
				}

			}
	
	});
}




// comments sorteren
function sortComments(sort, currentIndex, currentSubject) {

	var parts		= sort.split('_');
	var arg2		= parts[3];
	var sort		= parts[0]+'_'+parts[1]+'_'+parts[2];

	$.ajax({
		type: "GET",
		url: baseURL() + "ajax/sort_comment/" + arg2 + "/" + sort,
		dataType: "xml",
			success: function(xml) {


				//aantal pagina's
				var num_pages = $(".pager p a:last").text();
				
				//bijbehorende pager selecteren
				var pager = " #pager";

				resultLimit = $(xml).find('comment').size();
				//pager items opbouwen wanneer er meer dan 1 pagina is
				if(num_pages > 1) {
					
						$( pager).text("");	
					
						//build pager
						pagertemplate = getPagerTemplate(num_pages, currentIndex, 5);
						$(pager).append(pagertemplate);
					
						initPages('comments_1_new_stelling', 'comments', parts[1], currentIndex, resultLimit, pager, num_pages );

				}
				else {
					$(pager).text("");	
				}			
				
				$("#comments").empty();

					var x = 0;
					$(xml).find('comment').each(function(){
						x++;
					});
					var numOfCom = x-1;

				var i = 0;
				$(xml).find('comment').each(function(){

					var com_id = $(this).find('id').text();
					var com_name = $(this).find('name').text();
					var com_city = $(this).find('city').text();
					var com_date = $(this).find('date').text();
					var com_reaction = $(this).find('reaction').text();
					var com_reaction = com_reaction.replace(/__BR__/g, '<br />');
					var com_grade = $(this).find('grade').text();
					var com_reported = $(this).find('reported').text();

					if (com_grade < 0 && numOfCom != i) {
						var comment	=	'<div id="comment_' + com_id + '" class="comment closed">';
					} else if (com_grade < 0 && numOfCom == i) {
						var comment	=	'<div id="comment_' + com_id + '" class="comment closed last">';
					} else if (com_grade >= 0 && numOfCom == i) {
						var comment	=	'<div id="comment_' + com_id + '" class="comment last">';
					} else {
						var comment	=	'<div id="comment_' + com_id + '" class="comment">';
					}
					var comment	=	comment + '<div class="header">';
					var comment	=	comment + '<span class="time">';
					var comment	=	comment + com_date + '</span>';
					if (com_grade >= 0) {					
						var comment	=	comment + '<a class="toggle" style="display:none;" href="#">Toon reactie</a>';
					} else {
						var comment	=	comment + '<a class="toggle" href="#">Toon reactie</a>';
					}
					if (com_reported != '') {
						var comment	=	comment + '<ul><li><p class="reported">gerapporteerd</p> | </li>';
					} else {
						var comment	=	comment + '<ul><li><a class="report_abuse" rel="' + com_id + '" href="#">rapporteer als ongepast</a> | </li>';
					}
					if (com_grade == 0) {
						var comment	=	comment + '<li id="status_' + com_id + '" class="statusok">' + com_grade + '</li>';
					} else if (com_grade > 0) {
						var comment	=	comment + '<li id="status_' + com_id + '" class="statusok">+' + com_grade + '</li>';
					} else {
						var comment	=	comment + '<li id="status_' + com_id + '" class="statusnotok">' + com_grade + '</li>';
					}
					var comment	=	comment + '<li><img src="/static/images/thumb_up.gif" alt="ok" rel="' + arg2 + '_' + com_id + '" /></li>';
					var comment	=	comment + '<li><img src="/static/images/thumb_down.gif" alt="niet ok" rel="' + arg2 + '_' + com_id + '" /></li></ul></div>';
					var comment	=	comment + '<div class="report"><p>Selecteer een reden</p><form action="/"><fieldset>';
					var comment	=	comment + '<select class="select_report" name="select_reason"><option value="" selected="selected">Maak uw keuze</option>';
					var comment	=	comment + '<option value="grof taalgebruik|'+com_id+'|'+currentSubject+'">Grof taalgebruik</option>';
					var comment	=	comment + '<option value="beledigend|'+com_id+'|'+currentSubject+'">Beledigend</option>';
					var comment	=	comment + '<option value="niet interessant|'+com_id+'|'+currentSubject+'">Niet interessant</option>';
					var comment	=	comment + '<option value="oeverloos|'+com_id+'|'+currentSubject+'">Oeverloos</option>';
					var comment	=	comment + '<option value="vaste klant|'+com_id+'|'+currentSubject+'">Vaste klant</option>';
					var comment	=	comment + '</select></fieldset></form></div>';
					var comment	=	comment + '<blockquote><p>' + com_reaction + '</p>';
					var comment	=	comment + '<p class="author">- ' + com_name + ' uit ' + com_city + '</p></blockquote></div>';

					$("#comments").append(comment);
					$("#comment_"+com_id).hide();
					$("#comment_"+com_id).fadeIn("slow");
					i++;
				
				});
			
				if (numOfCom == 1) {
					$("#comments-order").fadeIn("slow");
				}
								
				var offset = sort.split('_');
				var offset = offset[2];
		
				initComments();
				initRateComment();
				initReportComment();
			}
	})
}

function submitComment() {
	
	$('#commentbutton').click(function(){
		$('#commentform form fieldset .succes').slideUp();
	});

	var comItemID			=	$('#id_item').val();
	var arg2				=	$('#arg1').val();
	var comCaptchaChecksum	=	$('#captcha_checksum').val();
	var comCaptchaTime		=	$('#captcha_time').val();
	var comName				=	$('#name').val();

	var comCity				=	$('#city').val();
	var comEmail			=	$('#email').val();
	var comComment			=	$('#comment').val();
	var comCaptcha			=	$('#captcha').val();
	var comNotify			=	$('#notify:checked').val();
	var regex				=	/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var internalErrors		=	0;
	var userErrors			=	0;
	
	// controleer op interne errors
	if (comItemID == '') {
		internalErrors++;
	}
	if (arg2 == '') {
		internalErrors++;
	}
	if (comCaptchaChecksum == '') {
		internalErrors++;
	}
	if (comCaptchaTime == '') {
		internalErrors++;
	}

	// controleer op user errors
	if (comName == '') {
		$('#commentform .js-error.name-err').html('Er is geen naam ingevuld.');
		$('#name').addClass('error');
		$('#commentform .js-error.name-err').slideDown();
		userErrors++;
		$('#name').focus(function(){ 
			$('#commentform .js-error.name-err').slideUp();
			$('#name').removeClass('error');
		})
	}
	if (comCity == '') {
		$('#commentform .js-error.city-err').html('Er is geen woonplaats ingevuld.');
		$('#city').addClass('error');
		$('#commentform .js-error.city-err').slideDown();
		userErrors++;
		$('#city').focus(function(){
			$('#commentform .js-error.city-err').slideUp();
			$('#city').removeClass('error');
		})
	}
	if (comEmail == '') {
		$('#commentform .js-error.email-err').html('Er is geen e-mailadres ingevuld.');
		$('#email').addClass('error');
		$('#commentform .js-error.email-err').slideDown();
		userErrors++;
		$('#email').focus(function(){
			$('#commentform .js-error.email-err').slideUp();
			$('#email').removeClass('error');
		})
	} else {
		if (!comEmail.match(regex)) {
			$('#commentform .js-error.email-err').html('Er is geen geldig e-mailadres ingevuld.');
			$('#email').addClass('error');
			$('#commentform .js-error.email-err').slideDown();
			userErrors++;
			$('#email').focus(function(){
				$('#commentform .js-error.email-err').slideUp();
				$('#email').removeClass('error');
				
			})
		}
	}
	if (comComment == '') {
		$('#commentform .js-error.comment-err').html('Er is geen reactie ingevuld.');
		$('#comment').addClass('error');
		$('#commentform .js-error.comment-err').slideDown();
		userErrors++;
		$('#comment').focus(function(){
			$('#commentform .js-error.comment-err').slideUp();
			$('#comment').removeClass('error');
		})
	}
	if (comCaptcha == '') {
		$('#commentform .js-error.captcha-err').html('Er is geen code ingevuld.');
		$('#captcha').addClass('error');
		$('#commentform .js-error.captcha-err').slideDown();
		userErrors++;
		$('#captcha').focus(function(){
			$('#commentform .js-error.captcha-err').slideUp();
			$('#captcha').removeClass('error');
		})
	}

   if (internalErrors <= 0 && userErrors <= 0) {
		$.ajax({
			type:		"POST",
			url:		baseURL() + "ajax2/reactie_plaatsen/" + arg2,
			data:		{captcha_time:comCaptchaTime,
						captcha_checksum:comCaptchaChecksum,
						captcha:comCaptcha,
						id_item:comItemID,
						name:comName,
						city:comCity,
						email:comEmail,
						comment:comComment,
						notify:comNotify},
			dataType:	"xml",

			success: function(xml) {

				var numOfErrors = $(xml).find('errors').text();

				if (numOfErrors == 0) {

					$('#commentform .succes').html($(xml).find('succes').text());
					$('#commentform .succes').slideDown();
					sortComments('new_' + comItemID + '_0_' + arg2, 0, arg2);
					$('#commentform form fieldset input:not(:hidden)').val('');
					$('#commentform form fieldset textarea').val('');
					$('#commentform form fieldset input:checked').attr('checked', '');

				} else {

					var showErrors = '<ul class="errors" style="display:none;">';

					for (i = 1; i < numOfErrors; i++) {

						var showErrors = showErrors + '<li>'+$(xml).find('error_'+i).text();+'</li>';
					}
					
					var showErrors = showErrors +'</ul>';
					
					$('#commentform form fieldset').prepend(showErrors);
					
					$('#commentform form fieldset .errors').slideDown();

					$('#commentform form fieldset input').focus(function(){
						$('#commentform form fieldset .errors').slideUp(function(){
							$('#commentform form fieldset .errors').remove();
						});
					})
					
					$('#commentform form fieldset textarea').focus(function(){
						$('#commentform form fieldset .errors').slideUp(function(){
							$('#commentform form fieldset .errors').remove();
						});
					})
				
				}

			}
		})
	}
	
	return false;
}
