/**
 * Next Comments Plugin 
 * 
 * @author Dan Rades  dan.rades@gmail.com
 * @lastmod 13.03.2008
 * 
 * 
 */
var toBeDeleted = new Array();
var interval = '';
function logicCommentsToDelete() 
{
	if ('undefined' != typeof toBeDeleted)
	{
		for ( var i in toBeDeleted )
		{
			var d = new Date();
			var time = d.getTime();
			if(time - i >= 10000 )
			{
				if ($('a[id^=de_sters_'+toBeDeleted[i]+']').length > 0 )
				{
					_parent = $('a[id^=de_sters_'+toBeDeleted[i]+']').parent();
					_parent.html('<span class="ic16 ic16Close" style="font-weight: bold; color: white">Comentariu şters!</span>');					
					delete toBeDeleted[i];
				}
			}
		}
		if ( toBeDeleted.length > 0 )
		{
			logicCommentsToDelete(); 
		}
		else
		{
			clearInterval(interval); 
		}
	}
}

(function($) {                                         
$.fn.nextComments = function(o) {   
   var randNr = randNum = Math.floor(Math.random() * 30000);
    o = $.extend({
		url : '/?ajax_service=1&rnd=' + randNr,
		captchaPath : '/cms/images/captcha.jpg.php'
	}, o || {});

	function validate() {
		$('input').removeClass('error');
		$('textarea').removeClass('error');


		var author  = $('#commentsAuthor');
		var email   = $('#commentsEmail');	
		var title   = $('#commentsTitle');		
		var details = $('#commentsDetails');
		var website = $('#commentsWebsite');

		var hasError = false;	

		if (author.val() == '' || 'nume *' == author.val()) {
			$(author).addClass('error');
			hasError = true;
		}

		var regxp = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		var emailVal = email.val();
		if ('' != emailVal && regxp.test(emailVal) == false ) {
			$(email).addClass('error');
			hasError = true;
		}
		if ('' == emailVal || 'email *' == emailVal)
		{
			$(email).addClass('error');
			hasError = true;
		}

		var titleVal = title.val();
		if ('' == titleVal)
		{
			$(title).addClass('error');
			hasError = true;
		}

		if (details.val() == '' || 'comentariu' == details.val() || 'mesaj *' == details.val()) {
			$(details).addClass('error');
			hasError = true;
		}				
		if (hasError) {
			$('#commentsValidationError').css("display","block") ;
		}
		else {
			$('#commentsValidationError').hide();
		}

		return !hasError;
	};
	
	
	function resetCaptcha(boxId) {
		var randNr = randNum = Math.floor(Math.random() * 30000);
		$('#imgCaptcha'+ boxId).eq(0).attr('src', o.captchaPath + '?rnd=' + randNr);
	};
	
	function initCommentsReport() {
		$('a.commentsReport').click(function(){
			var _self = $(this);
			var id = _self.attr('title');
			var url = o.url + '&boxID=' + boxId + '&reportId='+id;
			var _parent = _self.parent();
			_parent.html('<b>Raportam...</b>');
			$.get(url, null, function() {
				_parent.html('<b>Comentariu raportat!</b>');				
			});
		});
	};
	
	function initPendingCommentsToDelete() 
	{
		$('a.commentsDelete').click(function(){
			var _self = $(this);
			var id = _self.attr('title');
			var itemId = $('input#comItemID').val();
			var d = new Date();
			var time = d.getTime();
			toBeDeleted[''+time+'']=id;
			var _parent = _self.parent();
			var mustDelete = true;
			if ((_self.attr('id') == 'de_sters_'+id+'') || ( _self.html()=='Comentariu sters!')) {
				var mustDelete = false;
			}else{
				_self.attr('id','de_sters_'+id+'');
			}
			if ( mustDelete )
			{
				$.get('/delete-comment/'+id+'/'+itemId +'?rand='+ Math.floor(Math.random() * 30000), null, function(data){
					_self.html('Undo').removeClass('ic16').removeClass('ic16Close');
					_self.css({color:'yellow', borderBottom:'1px dotted yellow'});
					_parent.css({background:'red',color:'#FFF',fontWeight:'bold'});
					_parent.prepend('<span class="ic16 ic16Close" style="font-weight: bold; color: white">Comentariu şters!</span>&nbsp');
					interval = setInterval('logicCommentsToDelete()',10000);
				}, 'json');
			}
			else
			{
				clearInterval(interval); 
				$.get('/undoDelete-comment/'+id +'?rand='+ Math.floor(Math.random() * 30000), null, function(data){
					_parent.css({background: 'none', color:'#0000EE', fontWeight: 'normal'});
					_parent.find('span').remove();
					_self.html('Şterge comentariul!').addClass('ic16 ic16Close').attr('id','').css({color: '#0000EE', border: '3px dotted red'});
				}, 'json');
			}   	
		});
	};
	function getFirstPage() {
		$('#commentsContainer').html('Se incarca comentariile...');		
		var url = o.url + '&item=' + itemId + '&boxID=' + boxId + '&cp=1';		
		
		$.get(url, null, function(data) {
			$('#commentsContainer').html(data.comments);
			initPagination();
			initCommentsReport();
	
		}, 'json');		
	};
	
	function initPagination() {
		initPendingCommentsToDelete();
		$('a', $('#commentsPagination')).click(function(){
			$('#commentsContainerOverlay').block({
				message: '<h3 style="font-size:13px;font-weight:bold;">Incarc comentariile</h3>',
				css: {
					border: '1px solid #80977D'
				}
			});		
			var url = o.url + '&item=' + itemId + '&boxID=' + boxId + '&cp=' + $(this).attr('title');
			if (0 < $('#all_comments').length) {
				url += '&all_comments='+ $('#all_comments').val();
			}
			$.get(url, null, function(data) {
				$('#commentsContainer').html(data.comments);
				initPagination();
				initCommentsReport();
				setTimeout(function(){
					$('#commentsContainerOverlay').unblock();
				}, 300);
			}, 'json');
		});
	};


	var form = $('form', $('#commentsForm')).eq(0);
	var container = $('#commentsContainer');	
	var boxId = $('#commentsBoxId').val();
	var itemId = $('#commentsItemId').val();
	
	var ajaxSubmit = true;
	var ajaxPagination = ($('#commentsAjaxPagination').val() == 1) ? true : false;
	var useCaptcha = parseInt($('#commentsUseCaptcha').val());
	var useAjax = parseInt($('#commentsUseAjax').val());
	var captchaContainer = $('#commentsCaptchaContainer');

	if (ajaxPagination) {
		initPagination();
	}

	initCommentsReport();

	form.submit(function() {
		var v = validate();
		if (v == true) {
			if (ajaxSubmit) {
				var url = o.url + '&boxID=' + boxId;
	            $('#commentsForm').block({  
	                message: '<h3 style="font-size:14px;font-weight:bold;">Postam comentariul</h3>',  
	                css: { 
						border: '2px solid #80977D'
					}  
	            });
	            				
				$.post(o.url, form.serialize(), function(data){
					
					if (typeof data.captcha_error != 'undefined') {
						resetCaptcha(itemId);
						$('#commentsCaptchaError').show();
						$('#captcha'+ itemId +'_'+ boxId).addClass('error');
						$('#commentsForm').unblock();
					}
					else {
						$('#commentsCaptchaError').hide();
						$('#commentAdded').css("display","block") ;
						$('#commentsCount').html(data.comments_count);
						container.html(data.comments);
						form.get(0).reset();
	
						if (useCaptcha == 1) {
							resetCaptcha(itemId);				
						}	
						
						initCommentsReport();
						initPagination();	
						
						
						setTimeout(function(){
							$('#commentsForm').unblock();
						}, 700);
			
					}
					
				}, 'json');
				return false;
			}
			else {
				return true;
			}
		}
		return false;
	});
	
	if (useAjax)
	{
		initPagination();
	}
};

})(jQuery);

