/* 
Jquery Module General Bloka Ajax v1.0.0 (WEBDELO)

Описание: Библиотека работы ajax действий в клиентской части сайта Блока.
Разработчик: Черчел Дмитрий Юрьевич
Дата: 10.10.2010
Сайт: www.webdelo.org
Требования: 
 - jquery v1.4.2
 - jquery.webdelo.modal.js v1.2.0 
*/
// загрузка js-функций в режим мониторинга.
$(document).ready(function(){
	registration();
	checkMail();
	checkPassword();
	checkCaptcha();
	clearBasket();
	resetPassword();
	recountFooterPosition();
	showFullRecord();
	showTruncateRecord();
// 	showRemoveCategoryLink();
});

showRemoveCategoryLink = function() {
		$("ul#sortable li").hover(
			function(){
				var res = null;
				$("ul#sortable li").mousedown( function(){ res = 1;} );
				if ( !res )  {
					// Определение ИД текущего элемента
					var ID = $(this).attr('ID');
					// Определение высоты текущего элемента для вывода иконки удаления
					var top_offset_position = $("#"+ID).offset().top;
					// Очистка ИД от мусора
					ID = ID.replace('rec_', '');
					// Установка позиции для иконки
					$('#remLeftCategory_'+ID).css('top', top_offset_position-105);
					// Вывод иконки!
					$('#remLeftCategory_'+ID).delay(1000).fadeIn(100);
				}
			}, 
			function(){
				// Определение ИД текущего элемента
				var ID = $(this).attr('ID');
				// Очистка ИД от мусора
				ID = ID.replace('rec_', '');
				// Прячем Икнонку
				$('#remLeftCategory_'+ID).stop();
				$('#remLeftCategory_'+ID).fadeOut(0);
			}
		);
}

// показать полную запись
showFullRecord = function(){
	$(".showFullRecord").click(function(){
		var ID = $(this).attr('ID');
		ID = ID.replace('f', '');
		ID = ID.replace('t', '');
		
		// Замена текстов в блоках
		$('#trucate_text_'+ID).fadeOut(0).delay(0);
		$('#full_text_'+ID).fadeIn(0).delay(0);
		
		$('#f'+ID).hide();
		$('#t'+ID).show();
		var destination = $('#rem_'+ID).offset().top;
		$("html").animate({ scrollTop: destination}, 800 );
	});
}
// показать полную запись
showTruncateRecord = function(){
	$(".showTruncateRecord").click(function(){
		var ID = $(this).attr('ID');
		ID = ID.replace('f', '');
		ID = ID.replace('t', '');
		
		// Замена текстов в блоках
		$('#full_text_'+ID).fadeOut(0).delay(0);
		$('#trucate_text_'+ID).fadeIn(0).delay(0);
		
		$('#t'+ID).hide();
		$('#f'+ID).show();
		var destination = $('#rem_'+ID).offset().top;
		$("html").animate({ scrollTop: destination}, 800 );
	});
}

recountFooterPosition = function(){
	  var content_height = $('div.content').height();
	  var left_height = $('div.left').height();
	  if (content_height < left_height) {
		var footer = left_height-content_height-120;
	    $('div.footer').css('margin-top', footer+'px');
	  }
}



// Восстановление записи из корзины
restoreRecord = function(id, categoryID){
	restoreRecordAjax(id);
	$('#rem_'+id).fadeOut(500).delay(500);
	recountRestore(categoryID);
	if ($('#basketItems').html()==0) {
		$('ul.strlist').html('<li class="corner">Корзина пуста!</li>');
		$(".link-clear-basket").fadeOut(500).delay(500);
	}
	recountFooterPosition();
}
// Редактирование записи
editRecord = function(id){
	$('#rem_'+id).hide();
	$('#edit_'+id).fadeIn(500).delay(500);
	recountFooterPosition();
}
// Отмена редактирования записи
cancelEditRecord = function(id){
	$('#edit_'+id).hide();
	$('#rem_'+id).fadeIn(500);
	recountFooterPosition();
}

// Пересчет элементов для статистики левого блока
recountRestore = function(categoryID){
	var count = 0;
	if (categoryID) {
		// Пересчет количества записей для пункта указаной категории
		count = $('#left_rem_'+categoryID+' span.count').html();
		count++;
		$('#left_rem_'+categoryID+' span.count').html(count);
		// Пересчет количества записей для пункта - Все записи
		count = $('#all_records').html();
		count++
		$('#all_records').html(count);
	};
	// Пересчет количества записей для пункта - Корзина
	count = $('#basketItems').html();
	count--;
	$('#basketItems').html(count);
}
// AJAX-функция восстановления записи
restoreRecordAjax = function(id){
	var all_data = new Object();
	all_data = { 'action': 'restore_record', 'ID': id };
	$.ajax({
		async: true, 
		type: 'POST', 
		url: '/cp/ds/ds_includes/ajax.ds.bloka.php',
		data: all_data,
		dataType: "json",
		success: function(responce){
				if (responce['result']) {
				} else {
					webdeloError(responce['message'], 'Button');
				}
			}
	});
}

// Восстановление записи прямо со страницы записей
restoreBack = function(id, categoryID){
	restoreRecordAjax(id);
	$('#res_'+id).hide();
	$('#rem_'+id).fadeIn(500).delay(500);
	recountRestore(categoryID);
	recountFooterPosition();
}
// Удаление записи
removeRecord = function(id, categoryID){
	removeAjax(id, 'remove_record'); 
	// Добавление служебного сообщения об удалении записи
	$('#rem_'+id).after('<li id="res_'+id+'" class="hide">Запись была удалена. <a onclick="restoreBack('+id+', '+categoryID+');">восстановить</a></li>');
	// Скрытие строки удаленной записи
	$('#rem_'+id).hide();
	// Вывод служебного сообщения об удалении
	$('#res_'+id).fadeIn(500).delay(500);
	// Пересчет для левого блока
	recountRemove(categoryID);
	recountFooterPosition();
}
recountRemove = function(categoryID){
	var count = 0;
	// Пересчет количества записей для пункта - Корзина
	count = $('#basketItems').html();
	count++;
	$('#basketItems').html(count);
	// Выдача служебного сообщения в корзине
	if (count==0) {
		  $('ul.strlist').html('<li class="corner">Корзина пуста!</li>');
	}
	// Пересчет количества записей для пункта - Все записи
	count = $('#all_records').html();
	if (count!=0) { count--; }
	$('#all_records').html(count);
	// Пересчет количества записей для пункта указаной категории
	if (categoryID) {
		count = $('#left_rem_'+categoryID+' span.count').html();
		count--;
		$('#left_rem_'+categoryID+' span.count').html(count);
	}
}
// Окончательное Удаление записи
fatalRemoveRecord = function(id, color){
	// значение текста по умолчанию
	var message = 'Вы уверены что хотите окончательно удалить запись?';
	// выводим сообщение в модальном окне
	var cnfg = new webdeloModal.Settings();
	if (color) { cnfg.overlayColor=color; }
	cnfg.effectSlow = true;
	// вызываем класс вызова модального окна
	webdeloModal.setConfig(cnfg);
	return webdeloModal.confirm(message, function(){
	      removeAjax(id, 'fatal_remove_record'); 
	      $('#rem_'+id).remove();
	      recountRestore();
	      if ($('#basketItems').html()==0) {
		      $('ul.strlist').html('<li class="corner">Корзина пуста!</li>');
		      $(".link-clear-basket").fadeOut(500).delay(500);
	      }
	});
	recountFooterPosition();
}
// Очистка корзины
clearBasket = function(){
	$(".link-clear-basket").click(function(){
		// значение текста по умолчанию
		var message = 'Вы действительно хотите очистить корзину? После этого действия записи больше не будут доступны.';
		// Вывод окна конфирма
		return webdeloModal.confirm(message, function(){
			removeAjax(null, 'clear_basket'); 
			$('ul.strlist li').remove(); 
			$('ul.strlist').html('<li class="corner">Корзина пуста!</li>'); 
			$('#basketItems').html(0); 
			recountFooterPosition();
		});
	});
}

// Удаление сайта
removeSite = function(id){
	// значение текста по умолчанию
	var message = 'Вы уверены что хотите удалить эту запись о сайте?';
	return webdeloModal.confirm(message, function(){
		removeAjax(id, 'remove_site'); $('#rem_'+id).remove();
		recountFooterPosition();
	});
}
// Удаление контакта
removeContact = function(id){
	// значение текста по умолчанию
	var message = 'Вы уверены что хотите удалить эту запись о контакте?';
	return webdeloModal.confirm(message, function(){
		removeAjax(id, 'remove_contact'); 
		$('#rem_'+id).remove();
		recountFooterPosition();
	});
}
// Удаление контакта
removeFile = function(id){
	// значение текста по умолчанию
	var message = 'Вы уверены что хотите удалить этот файл?';
	return webdeloModal.confirm(message, function(){
		removeAjax(id, 'remove_file'); 
		$('#rem_'+id).remove();
		recountFooterPosition();
	});
}

// Удаление категории
removeCategory = function(id, color){
	// значение текста по умолчанию
	var message = 'Вы уверены что хотите удалить эту категорию? Записи находящиеся в ней, также будут удалены!';
	// выводим сообщение в модальном окне
	var cnfg = new webdeloModal.Settings();
	if (color) { cnfg.overlayColor=color; }
	cnfg.effectSlow = true;
	// вызываем класс вызова модального окна
	webdeloModal.setConfig(cnfg);
	return webdeloModal.confirm(message, function(){
		removeAjax(id, 'remove_category'); 
		$('#rem_'+id).remove(); 
		$('#left_rem_'+id).remove();
		recountFooterPosition();
	});
}
// AJAX-функция удаления
removeAjax = function(id, action){
	var all_data = new Object();
	all_data = { 'action': action, 'ID': id };
	$.ajax({
		async: true, 
		type: 'POST', 
		url: '/cp/ds/ds_includes/ajax.ds.bloka.php',
		data: all_data,
		dataType: "json",
		success: function(responce){
				if (responce['result']) {
					if (action=='remove_file') {
						$('#freeSpace').html(responce['free_space']);
					}
				} else {
					webdeloError(responce['message'], 'Button');
				}
			}
	});
}

// Проверка поля пароль на занятость
checkCaptcha = function(){
	var captcha = null;
	$('#captcha').blur(function(){
		captcha = $('#captcha').val();
		if (!captcha) {
			// вызываем функцию вывода сообщения
			registrationMessage('captcha', 'error');
		} else {
			$('#captcha_property').fadeOut(500).delay(500);
		}
	});
}
// Проверка поля пароль на занятость
checkPassword = function(){
	var password = null;
	$('#password').blur(function(){
		password = $('#password').val();
		if (!password) {
			// вызываем функцию вывода сообщения
			registrationMessage('password', 'error');
		} else {
			$('#password_property').fadeOut(500).delay(500);
		}
	});
}
// Проверка майла на занятость
checkMail = function(){
	var email = null;
	$('#email').blur(function(){
		email = $('#email').val();
		if (!email) {
			// вызываем функцию вывода сообщения
			registrationMessage('email', 'error', 'Это поле нельзя оставлять пустым');
		} else {
			if (!webdeloCheckMail(email)) {
				// вызываем функцию вывода сообщения
				registrationMessage('email', 'error', 'Проверьте правильность введенного email');
			} else {
				// Вывод изображения лодинга
				$('#email_status').fadeIn(500).delay(500);
				checkMailAjax(email);
			}
		}
	});
}
// AJAX-функция регистрации нового пользователя
checkMailAjax = function(email){
	var type = null;
	$.ajax({
		async: true, 
		type: 'POST', 
		url: '/cp/ds/ds_includes/ajax.ds.bloka.php',
		data: 'action=check_email&email='+email,
		dataType: "json",
		success: function(responce){
				if (responce['result']==false) {
					type = 'error';
				} else {
					type = 'success';
				}
				// вызываем функцию вывода сообщения
				registrationMessage('email', type, responce['message']);
			}
	});
}



// Сброс вывода сообщений в форме заказа
resetRegistrationForm = function(){
	$('#email_property').fadeOut(500).delay(500);
	$('#password_property').fadeOut(500).delay(500);
	$('#captcha_property').fadeOut(500).delay(500);
	$('#general_property').fadeOut(500).delay(500);
	$('#email').val('');
	$('#password').val('');
	$('#captcha').val('');
}
registrationMessage = function(id, type, message){
	if (message) { $('#'+id+'_property').html(message); }
	// Определение типа сообщения
	if (type=='error') {
		$('#'+id+'_property').css({color: 'red'});
	}
	if (type=='success') {
		$('#'+id+'_property').css({color: 'blue'});
	}
	// Скрытие изображения загрузки
	$('#'+id+'_status').fadeOut(500).delay(500);
	// Непосредственный вывод сообщения
	$('#'+id+'_property').fadeIn(500).delay(500);

}
// Функция регистрации нового пользователя
registration = function(){
	$("#reg").click(function(){
		// Вывод изображения лодинга
		$('#form_status').fadeIn(500).delay(500);
		// Скрытие всех сообщений
		$('#email_property').fadeOut(500).delay(500);
		$('#password_property').fadeOut(500).delay(500);
		$('#captcha_property').fadeOut(500).delay(500);
		$('#general_property').fadeOut(500).delay(500);
		// Выборка данных из формы
		var data = new Array();
		data['email'] = $('#email').val();
		data['password'] = $('#password').val();
		data['captcha'] = $('#captcha').val();
		// Проверка незаполненых полей
		if (!data['email']) { 
			$('#email_property').fadeIn(500).delay(500);
		} else {
			if (!webdeloCheckMail(data['email'])) {
				$('#email_property').fadeIn(500).delay(500);
			}
		}		
		if (!data['password']) { $('#password_property').fadeIn(500).delay(500); }
		if (!data['captcha']) { $('#captcha_property').fadeIn(500).delay(500); }
		// Осуществление регистрации в случае присутствия всех необходимых данных
		if (data['password'] && data['email'] && data['captcha']) {
			registationAjax(data);
		}
	});
}
// AJAX-функция регистрации нового пользователя
registationAjax = function(data){
	var res = null;
	$.ajax({
		async: true, 
		type: 'POST', 
		url: '/cp/ds/ds_includes/ajax.ds.bloka.php',
		data: 'action=registration&email='+data['email']+'&password='+data['password']+'&captcha='+data['captcha'],
		dataType: "json",
		success: function(responce){
				if (responce['result']==false) {
					// скрытие изображения лодинга
					$('#form_status').fadeOut(500).delay(500);
					// вызываем функцию вывода сообщения
					registrationMessage(responce['id'], 'error', responce['message']);
				} else {
					// скрытие изображения лодинга
					$('#form_status').fadeOut(500).delay(500);
					webdeloMessage("Регистрация прошла успешно! <br /> Пожалуйста подождите, сейчас вы будете перемещены на главную страницу с первыми категориями, и записью.");
					window.location.href = "/";
				}
			}
	});
}
// Функция регистрации нового пользователя
resetPassword = function(){
	$("#forgotten").click(function(){
		// Вывод изображения лодинга
		$('#form_forgotten_status').fadeIn(500).delay(500);
		// Скрытие всех сообщений
		$('#email_forgotten_property').fadeOut(500).delay(500);
		$('#general_forgotten_property').fadeOut(500).delay(500);
		// Выборка данных из формы
		var email = null;
		email = $('#email_forgotten').val();
		// Проверка незаполненых полей
		if (!email) { 
			$('#email_forgotten_property').fadeIn(500).delay(500);
		} else {
			if (!webdeloCheckMail(email)) {
				$('#email_property').fadeIn(500).delay(500);
			}
		}		
		// скрытие изображения лодинга
		$('#form_forgotten_status').fadeOut(500).delay(500);
		// Осуществление регистрации в случае присутствия всех необходимых данных
		if (email) {
			resetPasswordAjax(email);
		}
	});
}
// AJAX-функция регистрации нового пользователя
resetPasswordAjax = function(email){
	var res = null;
	$.ajax({
		async: true, 
		type: 'POST', 
		url: '/cp/ds/ds_includes/ajax.ds.bloka.php',
		data: 'action=reset_password&email='+email,
		dataType: "json",
		success: function(responce){
				if (responce['result']==false) {
					// вызываем функцию вывода сообщения
					registrationMessage(responce['id'], 'error', responce['message']);
				} else {
					// вызываем функцию вывода сообщения
					webdeloMessage(responce['message'], 'button');
				}
			}
	});
}

setPriorityHTML = function(ID) {
	var all_data = new Object();
	var categoryID = null;
	var liID = null;
	$(ID+' li').each(function(i, val) {
		// Обновление приоритета в HTML
		$(this).attr({'priority': i});
		// Выборка текущего ID
		liID = $(this).attr('id');
		if (liID) {
			// Выборка ID категории
			categoryID = $('#'+liID+' a').attr('id');
			categoryID = categoryID.replace('left_rem_','');
			all_data[i] = categoryID;
		}
	});
	setPriorityCatAjax(all_data);
}
// Установка приоритета для категорий
setPriorityCatAjax = function(data){
	var all_data = new Object();
	all_data = { 'action': 'set_priority_category', 'data': data };
	$.ajax({
		async: true, 
		type: 'POST', 
		url: '/cp/ds/ds_includes/ajax.ds.bloka.php',
		data: all_data,
		dataType: "json",
		success: function(responce){
				if (responce['result']==false) {
					// вызываем функцию вывода сообщения
					webdeloMessage(responce['message'], 'button');
				} else {
					var result = null;
					result = true;
				}
			}
	});
}
