/**
 *  KC JS APP
 */

$(function(){

	/*$('.jdialog.login').dialog({
		modal: true,
		resizable: false,
		draggable: false
	});*/
	
	$('[class|="ajax"]').click(function(){
		var $this = $(this);
//		var ajaxAction = $(this).attr('class').replace(/^(.*)ajax-(\S+)(.*)$/, '$2');
//		var dialog = $(this).is('.dialog') ? true : false;
		runDialog (
			$this.attr('class').replace(/^(.*)ajax-(\S+)(.*)$/, '$2') ,
			$this.is('.dialog')
		);
		return false;
	});
	
	loadUserData();
	
	$('form').not('.ajax').parent('.visible').removeClass('visible').addClass('hidden');
	$('form.ajax').parent('.hidden').removeClass('hidden').addClass('visible');
	$('form.ajax:visible').validate();
//	$( "input:submit, a, button", ".ui-button" ).button();
	$('#rightColumnContainer').html( $('#rightColumnContainerSrc').html() );
	$('#rightColumnContainerSrc').remove();

	
	
	var FormModules = {
			
		doDefault: function($form) {
			$form.find('button[type=submit]').parent().append(
				$('.jdialog.default div.loader').html()
			);

			$.post(	
					$form.attr('action'), 
					$form.serialize(),
					function(res){
						if (res.message) {
							$('.jdialog.default').dialog({
	//							autoOpen: false,
								modal: true,
								resizable: false,
								draggable: false,
								close: function() {
									window.location.reload();
								}
							});
							
							$('.jdialog.default div.visible').hide();
							if (res.success == true) {
								$('.jdialog.default').find('div.success-true').removeClass('hidden').find('span.message').html(res.message);
							} else if (res.success == false) {
								$('.jdialog.default').find('div.success-false').removeClass('hidden').find('span.message').html(res.message);
							}
						} else {
							$form.find('button[type=submit]').parent().find('img').hide();
							window.location.reload();
						}
					}, 'json'
				);
				return false;
		},
		
		login: function ($form) {
			var dialog = $form.closest('.jdialog.login');
			var validator = $form.validate();
			$.post(	
				$form.attr('action'), 
				$form.serialize(),
				function(resp){
					if(resp.success) {
						dialog.dialog('destroy');
						window.location.reload();
					} else {
						validator.showErrors({ Login : resp.message ? resp.message : 'Ошибка логина!'});
					}
				}, 'json');
			return false;
		},
		loginRating: function ($form) {
			var dialog = $form.closest('.jdialog.login');
			var validator = $form.validate();
			$.post(	
				$form.attr('action'), 
				$form.serialize(),
				function(resp){
					if(resp.success) {
						sendRating($form.find('#selected_rating').val(),$form.find('#selected_article_id').val(),'','true');
						dialog.dialog('destroy');
						//window.location.reload();
					} else {
						validator.showErrors({ Login : resp.message ? resp.message : 'Ошибка логина!'});
					}
				}, 'json');
			return false;
		}
		,
		magazine_subscription : function ($form) {
			
			$form.find('button[type=submit]').parent().append(
					$('.jdialog.default div.loader').html()
				);
			
			$.post(	
					$form.attr('action'), 
					$form.serialize(),
					function(res){
						if (res.message) {
							$('.magazine_subscription').remove();
							$('.magazine_subscription_desc').remove();
							$('.result-container').html(res.message);
						}
					}, 'json'
				);
				return false;		
		}
		
	};
	
	$('form.ajax').live('submit', function(event){
		var moduleName = $(this).attr('module');
		var module = ( moduleName && FormModules[ moduleName ] ) ? 
						FormModules[ moduleName ] :
						FormModules.doDefault
		return module( $(this), event );
	});
	
//	DisplayedDate = {
//		year: {
//			now: 1990,
//			max: 2010,
//			min: 1910
//		},
//		month: {
//			now: 1,
//			max: 12,
//			min: 1
//		},
//		day: {
//			now: 1,
//			max: function () {
//				var m = [31,28,31,30,31,30,31,31,30,31,30,31];
//				if (DisplayedDate.month.now != 2) return m[DisplayedDate.month.now - 1];
//				if (DisplayedDate.year.now%4 != 0) return m[1];
//				if (DisplayedDate.year.now%100 == 0 && DisplayedDate.year.now%400 != 0) return m[1];
//				return m[1] + 1;
//			} ,
//			min: 1
//		}
//	};
//	
//	$('form[name="Register"] input[id$="year"]').change(function(){
//		var _this = $(this);
//		var val = _this.val();
//		if ( DisplayedDate.year.min < 1900 ) {
//			_this.val(DisplayedDate.year.min);
//		} else if ( DisplayedDate.year.max > 2010 ) {
//			_this.val(DisplayedDate.year.max);
//		}
//	});
//	
//	$('form[name="Register"] input[id$="month"]').autocomplete({
//		source: function(){
//			var list = [];
//			for(i=1; i<DisplayedDate.month.max; i++)  list.push(i+'');
//			return list;
//		}
//	});
//	
//	$('form[name="Register"] input[id$="day"]').autocomplete({
//		source: function(){
//			var list = [];
//			for(i=1; i<DisplayedDate.day.max; i++) list.push(i+'');
//			return list;
//		}
//	});

//	$('input.terms').closest('form').find('button').attr('disabled', 'disabled').removeClass('ui-state-focus');
	$('input.terms').change(function(){
		var buttons = $('input.terms').closest('form').find('button');
//		alert(buttons.html());
		if ( $(this).is(':checked') ) {
//			buttons.addClass('ui-state-focus');
			buttons.removeAttr('disabled');
		} else {
			buttons.attr('disabled', 'disabled');
//			buttons.removeClass('ui-state-focus');
		}
	});
	

	$('.articles_stars').each(function(){
		sendRating('',$(this).val(),$(this).attr('activity'));
	});
	$('.active_stars div').live('click',function(){
		var r = $(this).html();
		var article_id = $(this).parents('.stars_block').find('.articles_stars').val();
		var activity = $(this).parents('.stars_block').find('.articles_stars').attr('activity');
		sendRating(r,article_id,activity);
		return false;
	});
	
});

function runDialog(ajaxAction,dialog){
	if (dialog == true) {
		$('.jdialog.'+ajaxAction).dialog({
			modal: true,
			resizable: false,
			draggable: false,
			open: function(event, ui) { 
				appendValidator($(this).find('form'));
			}
		});
	} else {
		
	}
}

function appendValidator($el) {
	$el.validate({
		errorContainer: '.error-container',
		errorLabelContainer: ".error-container ul",
		wrapper: "li",
		errorClass: "error"

//		showErrors: function(errorMap, errorList) {
//			$("#summary").html("Your form contains "
//	                                   + this.numberOfInvalids() 
//	                                   + " errors, see details below.");
//			this.defaultShowErrors();
//		}
	});
}

function loadUserData() {
	$.post(BASE_PATH+'/kc/ajax/Content/getUserInfo', function(r){
		if (r.success) {
			$('.user-name-string').html(r.content.name);
			$('.user-id').html(r.content.id);
		}
	}, 'json');
}

function sendRating(rating,article_id,activity,window_reload){
	if(!window_reload){
		window_reload = 'false';
	}
	var this_stars = $('#stars_' + article_id);
	this_stars.find('.stars_loader').show();
	this_stars.find('.stars').removeClass('active_stars').addClass('deactive_stars');
	$.post(BASE_PATH+'/kc/ajax/Rating/getRating',{rating:rating,article_id:article_id,activity:activity}, function(data) {
		if(window_reload == 'true'){
	    	window.location.reload();
	    }
		obj = jQuery.parseJSON(data);
		this_stars.find("li").each(function(){
	    	if($(this).find('div').html()-1 == obj.rating-1){
	    		this_stars.find('.cur').removeClass("cur");
				$(this).find('div').addClass("cur");
		    }
	    });
	    if(obj.active == 'true'){
	    	this_stars.find('.stars').removeClass('deactive_stars').addClass('active_stars');
		}
	    if(obj.voted == 'true'){
	    	this_stars.find('.stars_info').show('slow');
	    	this_stars.find('.stars_info').children('#rating_value').html(obj.stored_rating);
	    } else {
	    	this_stars.find('.stars_info').hide();
	    }
	    if(obj.guest == 'true' && obj.selected_rating){
	    	ajaxAction = 'login';
	    	runDialog(ajaxAction,true);
	    	$('.jdialog.'+ajaxAction).find('form').attr('module','loginRating').append('<input type="hidden" id="selected_rating" value="'+obj.selected_rating+'"/><input type="hidden" id="selected_article_id" value="'+article_id+'"/>');
	    }
	    this_stars.find('.stars_loader').hide();
	});
}

