	
	function r_error(message){
		$.jGrowl(message,{
			life: 8000,
			theme: 'error'
		});
	}
	
	function r_message(message){
		$.jGrowl(message,{
			life: 8000,
			theme: 'ok'
		});
	}
	
	function standard_ajax_error(){
		r_error('Ошибка передачи данных.');	
	}
	

	/**********
	 * Отправляем запрос к php
	 * @param {Object} polls
	 * @param {Object} loader
	 * @param {Object} data
	 * @param {Object} ajax_path
	 */

	function sp_polls_send_query(polls,loader,data,ajax_path){
	
		$.ajax({
			type: 'POST',
			dataType: 'json',
			url: ajax_path,
			data: data,
			beforeSend:
				function(){
			        loader.show();
					polls.hide();
				},
			success:
				function(json,textStatus){
					
					// Если произошла ошибка
					if( 1 == json.error_code){
						alert(json.error_description);
					}
					else{
						loader.hide();
						polls.show();
						polls.html( json.resp );
					}
				},
			error:
				function(){
					loader.hide();
					polls.show();
					alert('Ошибка браузера.');
				}
		});
	}


	/***********
	 * Выводим результаты голосования
	 * @param {Object} q_id
	 */

	function sp_polls_results(q_id){
		
		var data = 'type=results&q_id=' + q_id;
		var polls = $('#sp_polls_' + q_id);
		var loader = $('#sp_polls_loader_' + q_id);
		
		// Отправляем POST запрос
		var ajax_path = $('#sp_ajax_path_' + q_id).val();
		
		if( ajax_path.length ){
			sp_polls_send_query(polls,loader,data,ajax_path);
		}		
	}
	
	/*********
	 * Учитываем голос
	 * @param {Object} q_id
	 */
	
	function sp_polls_vote(q_id){
		
		var data = 'type=vote&q_id=' + q_id; 
		var polls = $('#sp_polls_' + q_id);
		var loader = $('#sp_polls_loader_' + q_id);
		
		// Получаем результаты голосования
		$('.sp_question_' + q_id).each(function(i){
			
			if( true == $(this).attr('checked') ){
				
				data += '&a_id[]=' + $(this).val();
			}
		});
		
		// Отправляем POST запрос
		var ajax_path = $('#sp_ajax_path_' + q_id).val();
		
		if( ajax_path.length ){
			sp_polls_send_query(polls,loader,data,ajax_path);
		}	
	}

	function r_ajax(path,data,fn_success){
		
		$.ajax({
			type: 'POST',
			dataType: 'json',
			url: '/new_ajax/'+ path +'/',
			async: false,
			data: data,
			beforeSend:
				function(){
					// Заставка
					if( !$('#new_ajax_loader').dialog('isOpen') ){
						$('#new_ajax_loader').dialog('open');	
					}
				},
			complete: 
				function(){
					// Убираем заставку
					if( $('#new_ajax_loader').dialog('isOpen') ){
						$('#new_ajax_loader').dialog('close');	
					}
				},
			success:
				function(json,textStatus){
					
					// Если произошла ошибка
					if( 1 == json.error_code){
						r_error(json.error_description);
					}
					else{
						// Выполнено без ошибок
						fn_success(json);						
					}
				},
			error:
				function(){
					if( $('#new_ajax_loader').dialog('isOpen') ){
						$('#new_ajax_loader').dialog('close');	
					}
					standard_ajax_error();
				}
		});	
	}	

	$(document).ready(function() {
		
		/*********************
		 * 
		 * Дейтпикер
		 * 
		 */
		
		$('#datebirth').datepicker({ 
			showOn: 'button', 
			buttonImage: '/i/calendar.gif', 
			buttonImageOnly: true,
			yearRange: '1930:2009',
			changeYear: true,
			changeMonth: true
		});	
		
		/*********************
		 * 
		 * Заставочка
		 * 
		 *********************/
		
		$("#new_ajax_loader").dialog({
			bgiframe: true,
			width: 280,
			autoOpen: false,
			modal: true,
			resizable: false,
			draggable: false,
			closeOnEscape: false
		});	
		
		// Убираем тайтлбар с загрузочного диалога
		$('.ui-dialog-titlebar').hide();
	
		/********************
		 * НАЧАЛО
		 * 
		 * Для регистрации юзеров 
		 * 
		 *******************/
		
		var login = $("#login"),
			email = $("#email"),
			password = $("#password"),
			password2 = $("#password2");
		
		function r_registration(){
			
			if (password.val() != password2.val()) {
				r_error('Пароли не совпадают');
			}
			else {
				// Регистрируем юзера
				r_ajax(
					'registration',
					{
						'login': login.val(),
						'email': email.val(),
						'password': password.val(),
						'password2': password2.val()
					},
					function(json){
						// Регистрация прошла успешно, выполняем вход
						$('#registration_dlg').dialog('close');
						window.location = '/';
					}
				);
			}
		}	
		
		/********************
		 * КОНЕЦ
		 * 
		 * Для регистрации юзеров 
		 * 
		 *******************/
		
		$('.more').click(function(){
			$(this).next().slideToggle("fast");
		});
		
		/*********************** Accordion ***********************/
		$('#accordion a').click(function(){
	
			if( 'none' == $(this).next("ul").css("display") ){
				$('.accordion_hidden').hide();
				
				$(this).next("ul").slideToggle("fast");
				
				$('#accordion a').removeClass("active");
				$(this).toggleClass("active");
			}
		});
		
		// Выходим (login)
		$('#flogin_submit').click(function(){
			r_ajax(
				'login',
				{
					'login': $('#r_login').val(),
					'password': $('#r_pass').val()
				},
				function(json){
					window.location = '/';
				}
			);
		});

		$('#r_pass,#r_login').keypress(function(evt){
		
			if (evt.which == 13){
				$('#flogin_submit').click();
			}
		});
		
		// Выходим (logout)
		$('#logout').click(function(){
			r_ajax(
				'logout',
				{},
				function(json){
					window.location = '/';
				}
			);
		});
		
		$('.registration_click').click(function(){
			$('#registration_dlg').dialog('open');
		});
		
		$('#login,#email,#password,#password2').keypress(function(evt){
			if (evt.which == 13) {
				r_registration();
			}	
		});
		
		// Показываем регистрационный диалог		
		$("#registration_dlg").dialog({
			bgiframe: true,
			height: 460,
			autoOpen: false,
			modal: true,
			buttons: {
				'Зарегистрироваться': r_registration
			},
			close: function() {
				$('#registration_dlg fieldset input').each(function(i){
					$(this).removeClass('ui-state-error');
				});
				$('#validateTips').val('');
			}
		});
		
		/*****************
		 * Профиль
		 */
		
		// Восстаносление пароля
		$('#recover_password').click(function(){
			
			r_ajax(
				'recover_password',
				{
					'email': $('#recover_email').val() 
				},
				function(json){
					r_message('Проверьте свой почтовый ящик, следуйте дальнейшим инструкциям');
				}
			);
		});
		
		// Смена пароля
		$('#profile_password_change').click(function(){
			
			r_ajax(
				'profile_password_change',
				{
					'password': $('#f_new_password').val(),
					'password2': $('#f_new_confirm_password').val()
				},
				function(json){
					r_message('Пароль успешно изменен');	
				}
			);
		});
		
		// Основные данные
		$('#profile_main_save').click(function(){
			
			r_ajax(
				'profile_main_save',
				{
					'users_nik': $('#users_nik').val(),
					'users_last_name': $('#users_last_name').val(),
					'users_first_name': $('#users_first_name').val(),
					'users_date_birth': $('#datebirth').val(),
					'users_description': $('#users_description').val()
				},
				function (){
					r_message('Профиль успешно изменен');
				}
			);
		});
		
		// Контакты
		$('#profile_contacts_save').click(function(){
			
			r_ajax(
				'profile_contacts_save',
				{
					'users_email': $('#users_email').val(),
					'users_icq': $('#users_icq').val(),
					'users_url': $('#users_url').val(),
					'users_skype': $('#users_skype').val(),
					'users_jaber': $('#users_jaber').val()
				},
				function (){
					r_message('Контактная информация сохранена');
				}
			);
		});
		
		// Смена пароля
	
		// Установка аватора
		var avatar_file;
	
		function preview(img, selection){ 
		
			var scaleX = 96 / selection.width; 
			var scaleY = 96 / selection.height; 
			
			$('#user_photo_thumb').css({ 
				width: Math.round(scaleX * $('#cropimage').width()) + 'px', 
				height: Math.round(scaleY * $('#cropimage').height()) + 'px', 
				marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', 
				marginTop: '-' + Math.round(scaleY * selection.y1) + 'px' 
			});
			
			$('#x1').val(selection.x1);
			$('#y1').val(selection.y1);
			$('#x2').val(selection.x2);
			$('#y2').val(selection.y2);
			$('#w').val(selection.width);
			$('#h').val(selection.height);		
		}
		
		$('.save_thumb').click(function(){
			
			r_ajax('make_avatar',
				{
					'avatar_file': avatar_file,
					'x1': $('#x1').val(),
					'y1': $('#y1').val(),
					'x2': $('#x2').val(),
					'y2': $('#y2').val(),
					'w': $('#w').val(),
					'h': $('#h').val()
				},
				function(json){
					r_message('Аватар успешно установлен');
				}
			);
		});
		
		$('#profile_avatar_upload').click(function(){
			
			$('#new_ajax_loader').ajaxStart(function(){
				$(this).dialog('open');
			}).ajaxComplete(function(){
				$(this).dialog('close');
			});
				
			$.ajaxFileUpload({
				url: '/new_ajax/upload_avatar/',
				secureuri: false,
				fileElementId: 'avatar',
				dataType: 'json',
				success: function (json, status){
					
					// Если произошла ошибка
					if( 1 == json.error_code){
						r_error(json.error_description);
					}
					else{
						// Вместо формы загрузки выводим редактор аватара
						$('#table_profile').hide();
						$('#thumbmaker').show();
						
						// Устанавливаем фотку
						avatar_file = json.avatar_file;
						$('#cropimage').attr('src',json.resp);
						$('#cropimage').width(json.width);
						$('#cropimage').height(json.height);
						$('#user_foto_id').addClass('user_foto_preview');
						$('#user_photo_thumb').attr('src',json.resp);
						
						ias = $('#cropimage').imgAreaSelect({ 
							aspectRatio: '1:1',						
							x1: ( ( (json.width/2) - 40 ) ),
							y1: ( ( (json.height/2) - 40 ) ),
							x2: ( ( (json.width/2) + 40 ) ),
							y2: ( ( (json.height/2) + 40 ) ),
							onSelectChange: preview,
							handles: true,
							enable: true
						});
						
						$(window).bind('resize', function() {
							ias = $('#cropimage').imgAreaSelect( ias.options );
						});
						
						preview($('#cropimage'),{
							width: 96, 
							height: 96, 
							x1: ( ( (json.width/2) - 40 ) ), 
							y1: ( ( (json.height/2) - 40 ) )
						});
					}
				},
				error: function (data, status, e){
					$('#new_ajax_loader').dialog('close');
					standard_ajax_error();
				}
			});			
		});
		
		// Рейтинги
		// +1
		$('.samborsky_rating_plus').click(function(){
			
			r_ajax('samborsky_rater',
				{
					'page_id': $('#page_id').val(),
					'rate': 'plus'
				},
				function(json){
					r_message('Спасибо. Ваша оценка учтена!');
					$('#samborsky_rater').html(json.resp);
				}
			);
		});
		
		// -1
		$('.samborsky_rating_minus').click(function(){
			
			r_ajax('samborsky_rater',
				{
					'page_id': $('#page_id').val(),
					'rate': 'minus'
				},
				function(json){
					r_message('Спасибо. Ваша оценка учтена!');
					$('#samborsky_rater').html(json.resp);
				}
			);
		});
		
		$('#samborsky_rater_stat').dialog({
			bgiframe: true,
			width: 400,
			autoOpen: false,
			modal: true,
			resizable: true,
			draggable: true,
			closeOnEscape: true,
			buttons: {
				'Закрыть': function(){
					$(this).dialog('close');
				}
			}
		});
		
		$('#samborsky_rater_stat_click').click(function(){
			
			r_ajax('samborsky_rater_stat',{
					'page_id': $('#page_id').val()
				},
				function(json){
					$('#samborsky_rater_stat').html(json.resp);
					$('#samborsky_rater_stat').dialog('open');
				}
			);
		});
		
		// Пригласить друга
		$('#invite_friend_dialog').dialog({
			bgiframe: true,
			width: 400,
			autoOpen: false,
			modal: true,
			resizable: true,
			draggable: true,
			closeOnEscape: true,
			buttons: {
				'Отправить приглашение': function(){
					
					r_ajax('invite_friend',{
						'name': $('#invite_friend_name').val(),
						'email': $('#invite_friend_email').val()
					},function(json){
						r_message('Приглашение Вашему другу отправлено!');
					});
					
					$(this).dialog('close');
				}
			}
		});
		
		$('#invite_friend').click(function(){
			$('#invite_friend_dialog').dialog('open');	
		});
		
	});