/**
 * @author Melnaron
 * 
 * AJAX функции
 */

$.ajaxSetup({
	type: 'post',
	dataType: 'json'
});

/**
 * Login
 */
function ajaxLogin() {
	var email    = $('#loginForm .inpEmail').val();
	var password = $('#loginForm .inpPassword').val();
	$.ajax({
		url: '/ajax/login/',
		data: 'email='+email+'&password='+password,
		success: function(data) {
			if (data.success) {
				$('.darkening, #loginForm, #regForm').hide();
				document.location = '/';
			} else {
				$('#loginForm input').parent().parent().removeClass('error');
				var error_text = '';
				for (var i = 0; i < data.errors.length; i++) {
					error_text += '<div>'+data.errors[i].text+'</div>';
					$('#loginForm .inp'+data.errors[i].inp).parent().parent().addClass('error');
				}
				$('#loginForm .error_text').html(error_text);
			}
		}
	});
}

/**
 * Registration
 */
function ajaxReg() {
	var email     = $('#regForm .inpEmail').val();
	var password  = $('#regForm .inpPassword').val();
	var passwordr = $('#regForm .inpPasswordR').val();
	var name      = $('#regForm .inpName').val();
	var lastname  = $('#regForm .inpLastname').val();
	var agree	  = $('#regForm .inpAgree:checked').size();
	$.ajax({
		url: '/ajax/reg/',
		data: 'email='+email+'&password='+password+'&passwordr='+passwordr+'&name='+name+'&lastname='+lastname+'&agree='+agree,
		success: function(data) {
			if (data.success) {
				$('.darkening, #loginForm, #regForm').hide();
				alert(
					'Регистрация успешно завершена.\n\n'					
				);
			} else {
				$('#regForm input').parent().parent().removeClass('error');
				var error_text = '';
				for (var i = 0; i < data.errors.length; i++) {
					error_text += '<div>'+data.errors[i].text+'</div>';
					$('#regForm .inp'+data.errors[i].inp).parent().parent().addClass('error');
				}
				$('#regForm .error_text').html(error_text);
			}
		}
	});
}

/**
 * Открытие диалога редактирования фотографии
 */
function openPhotoEdit(id, single) {
	$('#photo-edit-id').val(id);
	// запрашиваем с сервера параметры purpose, orig_price_com
	$.ajax({
		url		:	'/ajax/photo/getparams/',
		data	:	{id:id},
		success	:	function (data) {

			if (data) {
				if(data.purpose){
					var purpose = data.purpose;
				}else{
					var purpose = 0;
				}
				
				if(data.orig_price_com){
					var orig_price_com = data.orig_price_com;
				}else{
					var orig_price_com = 0;
				}

				if (purpose) {
					$('#purpose').attr('checked', 'checked');
					$('#orig_price_com input[@name=orig_price_com]').val('');
					$('#orig_price_com').css('display', 'none');
				} else {
					if (orig_price_com == 0){
						orig_price_com = '';
					}
					$('#purpose').removeAttr('checked');
					$('#orig_price_com input[@name=orig_price_com]').val(orig_price_com);
					$('#orig_price_com').css('display', 'block');
				}
				jQuery.fn.popup.setPosition();
			} else {
				return alert('Не удалось связаться с сервером.');
			}
		}
	});
	$.ajax({
		url      : '/ajax/photo/getrubrics/',
		dataType : 'html',
		data     : {id:id},
		success  : function(data) {
			if (data) {
				$('#photo-rubrics').html(data);	
				jQuery.fn.popup.setPosition();
			}
		}
	});

	if (single) {
		$('#photo-edit-name').val($('.single_foto img').attr('alt'));
		$('#photo-edit-desc').val($('.single_foto img').attr('desc'));
		$('#photo-edit-tags').val($('.single_foto img').attr('tags'));
	} else {
		$('#photo-edit-name').val($('#photo-'+id+' .photo-thumb').attr('name'));
		$('#photo-edit-desc').val($('#photo-'+id+' .photo-thumb').attr('tip'));
		$('#photo-edit-tags').val($('#photo-'+id+' .photo-thumb').attr('tags'));
	}
	$('#dialog-photo-edit').popup(1);
}


/**
 * Открытие диалога массового редактирования фотографий
 */
function openPhotoMassEdit() {
	if (! $('input[@name="cb_photos[]"]:checked').size() ) {
		return alert('Выберите одну или несколько фотографий.');
	}

	var pid = $('input[@name="cb_photos[]"]:checked').val();
	$.ajax({
		url		: '/ajax/photo/getrubrics/',
		dataType: 'html',
		data	: {id: pid},
		success	: function (data) {
			if (data) {
				$('#photo-mass-rubrics').html(data);
				$('#photo-mass-rubrics input[@type=checkbox]').removeAttr('checked');
				jQuery.fn.popup.setPosition();
			}
		}
	});
	$('#dialog-photo-mass-edit').popup(1);
}

/**
 * Массовое удаление фотографий
 */
function photoMassDelete() {
	if (! $('input[@name="cb_photos[]"]:checked').size() ) {
		return alert('Выберите одну или несколько фотографий.');
	}
	if (! confirm('Вы уверены, что хотите удалить все выбранные фото?') ) {
		return;
	}

	var photo_ids = new Array();

	var photos = $('input[@name="cb_photos[]"]:checked');
	
	jQuery.each(photos, function() {
		photo_ids.push($(this).val());
	})

	$.ajax({
		url: '/ajax/photo/massdelete/',
		data : {
			photo: [photo_ids]
		},
		success: function(data) {
			if (data.success) {
				alert('Выбранные фото удалены.');
				document.location.replace(document.location.href);
			} else {
				alert(data.message);
			}
		}
	});
}

/**
 * Редактирование фотографии
 */
function ajaxPhotoEdit(single) {
	var id   = $('#photo-edit-id').val();
	var name = $('#photo-edit-name').val();
	var desc = $('#photo-edit-desc').val();
	var tags = $('#photo-edit-tags').val();
	var purpose = $('#purpose:checked').size();
	var orig_price_com = $('#orig_price_com input[@name=orig_price_com]').val();

	var rubric = $("input[name='rubric[]']:checked");
	var rubric_ids  = new Array();
	
	jQuery.each(rubric, function(){
		rubric_ids.push($(this).val());
	});
	
	$('#dialog-photo-edit').find('.dialog-buttons').hide().end().find('.dialog-status').show();
	$.ajax({
		url: '/ajax/photo/edit/',
		data : {
			id:id,
			name:name,
			desc:desc,
			tags:tags,
			purpose: purpose,
			orig_price_com: orig_price_com,
			rubric:[rubric_ids]
		},
		success: function(data) {
			if (data.success) {
				if (single) {
					$('.block2 h1').text(name);
					$('.single_foto img').attr('alt', name).attr('desc', desc).attr('tags', tags);
					$('.info_foto .info_name').text(name);
					$('.info_foto .info_desc').text(desc || '-');
					$('.info_foto .info_tags').html(data.tags || '-');					
				} else {
					$('#photo-'+id+' .photo-thumb').attr('name', name).attr('tags', tags).tip(desc);
					$('#photo-'+id+' .photo-name').html(name);
				}
				$('#dialog-photo-edit').hide();
			} else {
				alert(data.message);
			}
		},
		complete: function() {
			$('#dialog-photo-edit').find('.dialog-status').hide().end().find('.dialog-buttons').show();
		}
	});
}

function ajaxPhotoMassEdit() {

	if (! confirm('Переместить в выбранные рубрики?')) {
		return;
	}

	var tags = $('#photo-mass-edit-tags').val();

	var rubric_ids = new Array();
	var photo_ids = new Array();
	
	var rubric = $('input[@name="rubric[]"]:checked');
	jQuery.each(rubric, function() {
		rubric_ids.push($(this).val());
	});
	var photos = $('input[@name="cb_photos[]"]:checked');

	jQuery.each(photos, function() {
		photo_ids.push($(this).val());
	})

	$('#dialog-photo-mass-edit').find('.dialog-buttons').hide().end().find('.dialog-status').show();
	$.ajax({
		url: '/ajax/photo/massedit/',
		data : {
			tags:tags,
			rubric:[rubric_ids],
			photo:[photo_ids]
		},
		success: function(data) {
			if (data.success) {
				$('#dialog-photo-mass-edit').hide();
			} else {
				alert(data.message);
			}
		},
		complete: function() {
			$('#dialog-photo-mass-edit').find('.dialog-status').hide().end().find('.dialog-buttons').show();
			document.location.replace(document.location.href);
		}
	});
}

/**
 * Удаление фотографии
 */
function ajaxPhotoDelete(id, single) {
	if (! confirm('Вы точно хотите удалить выбранную фотографию?')) {
		return;
	}
	$.ajax({
		url: '/ajax/photo/delete/',
		data: 'id='+id,
		success: function(data) {
			if (data.success) {
				if (single) {
					window.history.go(-1);
				} else {
					$('#photo-'+id).fadeOut('fast');
				}
			} else {
				alert(data.message);
			}
		}
	});
}

/**
 * Добавление фотографии в избранное
 */
function ajaxPhotoAddFavorite(id, single) {
	$.ajax({
		url: '/ajax/photo/addfavorite/',
		data: 'id='+id,
		success: function(data) {
			if (data.success) {
				if (single) {
					$('a.fav span').text('Удалить из избранного');
					$('a.fav')
						.attr('class', 'fav_add')
						.attr('href', 'javascript:void(ajaxPhotoDeleteFavorite('+id+', true));')
					;
				} else {
					$('#photo-'+id+' li.favorite')
						.attr('class', 'favorite_add')
						.find('a')
						.attr('href', 'javascript:void(ajaxPhotoDeleteFavorite('+id+'));')
						.text('Удалить из избранного')
						.tip('Удалить из избранного')
					;
				}
			} else {
				alert(data.message);
			}
		}
	});
}

/**
 * Удаление фотографии из избранного
 */
function ajaxPhotoDeleteFavorite(id, single) {
	$.ajax({
		url: '/ajax/photo/deletefavorite/',
		data: 'id='+id,
		success: function(data) {
			if (data.success) {
				if (single) {
					$('a.fav_add span').text('Добавить в избранное');
					$('a.fav_add')
						.attr('class', 'fav')
						.attr('href', 'javascript:void(ajaxPhotoAddFavorite('+id+', true));')
					;
				} else {
					$('#photo-'+id+' li.favorite_add')
						.attr('class', 'favorite')
						.find('a')
						.attr('href', 'javascript:void(ajaxPhotoAddFavorite('+id+'));')
						.text('Добавить в избранное')
						.tip('Добавить в избранное')
					;
				}
			} else {
				alert(data.message);
			}
		}
	});
}

/**
 * Добавление фотографии в корзину
 */
function ajaxPhotoAddToCart(id, single) {
	$.ajax({
		url: '/ajax/photo/addtocart/',
		data: 'id='+id,
		success: function(data) {
			if (data.success) {
				if (single) {
					$('.block3 .buy').hide();
					$('.block3 .status_ok').html('Фотография добавлена в <a href="/mycart/">корзину</a>.').show();
				} else {
					$('#photo-'+id+' li.basket')
						.attr('class', 'basket_add')
						.find('a')
						.attr('href', 'javascript:void(ajaxPhotoDeleteFromCart('+id+'));')
						.tip('Удалить из корзины')
					;
				}
				$('li.basket > a').text('Корзина ('+data.incart+')');
			} else {
				alert(data.message);
			}
		}
	});
}

/**
 * Удаление фотографии из корзины
 */
function ajaxPhotoDeleteFromCart(id, mycart) {
	$.ajax({
		url: '/ajax/photo/deletefromcart/',
		data: 'id='+id,
		success: function(data) {
			if (data.success) {
				if (mycart) {
					if (data.totalprice >= 0) {
						$('.totalprice').text(data.totalprice);
					} else {
						$('.totalprice').text('0');
						document.location = '/mycart/';
					}
					$('#photo-'+id).slideUp();
				} else {
					$('#photo-'+id+' li.basket_add')
						.attr('class', 'basket')
						.find('a')
						.attr('href', 'javascript:void(ajaxPhotoAddToCart('+id+'));')
						.tip('Добавить в корзину')
					;
				}
				if (data.incart) {
					$('li.basket > a').text('Корзина ('+data.incart+')');
				} else {
					$('li.basket > a').text('Корзина');
				}
			} else {
				alert(data.message);
			}
		}
	});
}

/**
 * Обновление фотографии в корзине
 */
function ajaxPhotoUpdateInCart(id, data) {
	$.ajax({
		url: '/ajax/photo/updateincart/',
		data: 'id='+id+'&data='+data,
		success: function(data) {
			if (data.success) {
				if (data.totalprice >= 0) {
					$('.totalprice').text(data.totalprice);
				} else {
					$('.totalprice').text('0');
					document.location = '/mycart/';
				}
				$('#photo-'+id+' .price').text(data.price);
			} else {
				alert(data.message);
			}
		}
	});
}

/**
 * Установка рейтинга фотографии
 */
function ajaxPhotoSetRating(id, rating) {
	$.ajax({
		url: '/ajax/photo/setrating/',
		data: 'id='+id+'&rating='+rating,
		success: function(data) {
			if (data.success) {
				$('div.rating .lbl').html('Спасибо за вашу оценку.');
				$('div.rating ul').addClass('mine');
				//$('div.rating ul li.star a').attr('href', 'javascript:;');
				$('div.rating ul li.current-rating').css('width', data.rating+'%');
			} else {
				//alert(data.message);
				$('div.rating .lbl').html(data.message);
			}
		}
	});
}

