$(document).ready(function() { 

	// pay and delivery
	$('#od_btn a').fancybox({'showCloseButton':false,'overlayOpacity':0.2,
			'onStart':function(){
				$('#pay_and_delivery').css('display','block')},
			'onClosed':function(){
				$('#pay_and_delivery').css('display','none')
			}			
	});
	
	$('#head_img_1').click(function(){location.href='/'});
						   
	// Галерея изображений
	$("a.show_image").fancybox({'overlayOpacity':0.1,'hideOnContentClick':true, 'showCloseButton' : false}); 
						   
	// Меням размер объектов в случае, если разрешение экрана по ширине меньше либо равно 1024px
	function resize()
	{
		var bodyWidth = $('html').width();
		//function obj_size 
		if(bodyWidth <= 1150) 
		{
			$("#right_column_img").css({'display':'none'});
			$("#head_img_2").css({'display':'none'});
			$("#right").css({'display':'none'});
			$(".brands").css({'display':'block','margin-left':'25px'});
			$('.spec_img').css({'width':'195px'});
			
		}
	}
	// Стартуем функцию ресайза объектов
	resize();
	
	//------> Web-shop 
	var user_loged_in = $('#user_status').attr('loged_in');
	if(user_loged_in == 1)
	{
		$('#login .panel .user_authorised').css('display','block');
	}
	else if(user_loged_in == 0)
	{
		$('#login .panel .user_not_authorised').css('display','block');
	}
	
	// login form
	validateLoginForm();
	
	// cancel button in login box
	$('#login .buttons .cancel').click(function(){
		$('#login .box').css('display','none');
		$('#login .panel').css('display','block');
		return false;
	});	
			
	// auth (show login form & etc data)		
	$('#login .panel .auth').click(function(){
		$(this).parents('.panel').css('display','none');
		$('#login .box').slideDown('fast');
		return false;
	});
	
	// log out
	$('#login .panel .exit').click(function(){
		$.get('/ajax/login.php?do=logout',function(result){
			// css
			$('#login .panel .user_authorised').css('display','none');
			$('#login .panel .user_not_authorised').css('display','block');	
			
			location.href='/';
		});	
		
		return false;
	});
	
	// register
	$('#login .register').fancybox({'showCloseButton':false,'overlayOpacity':0.2,
	'onStart':function(){
		$('#register_new_user').css('display','block');
		validateRegisterForm();		
	},'onClosed':function(){
		$('#register_new_user').css('display','none');	
	}});
	
	// edit profile
	$('#profile_form .edit_profile').click(function(){
		
		$('#profile_form').find('input').prev('span').css('display','none');
		$('#profile_form').find('textarea').prev('span').css('display','none');
		
		$('#profile_form').find('input').css('display','block');
		$('#profile_form').find('textarea').css('display','block');
		
		validateProfileForm();
		
		return false;
															
	});
	
	// count objects in order 
	init_order();
	
	// Add to order (basket)
	addToOrder();
		
	// Show basket
	showBasketHandler();
	
	//-> change count of goods (objects) in basket
	changeObjectsCount();
	
	//-> removing goods (objects)	
	deleteObjHandler();
	
	// init images height
	initObjImgHeight();
	
	// etc
	/*
	$('body').click(function(){
		$('#login .box').css('display','none');
		$('#login .panel').css('display','block');
	});
	*/
	//------> End of Web-shop
});

//->
function init_order()
{
	var count_objects = $('#basket_opened .box').size();
	if(count_objects  > 0)
	{
		if($('.order_panel').size() != 1)
			$('#do_order').fadeIn(400);
	}
	else{
		$('#do_order').hide();
	}
}

//->
function addToOrder()
{
	$('.object .order').click(function(){
		var id = $(this).attr('object_id');
		var order_obj = $(this);
		
		$.get('/ajax/basket.php?do=add&id='+id,function(result){
			// success
			if(result == 1)
			{
				// requesting objects DOM data
				var objects_data = $.get('/ajax/update_basket_objects.php',function(data_result){
				
					// appending data
					$('#basket_opened .objects').html(data_result);					
					//->
					changeObjectsCount();
					//->
					deleteObjHandler();
					// css
					order_obj.hide();
					order_obj.next().show();
				
					$.get('/ajax/basket.php?do=calculate',function(count_result){
						// success
						if(count_result != 0)
						{
							var data = count_result.split(':'); // data[0] - count objects, data[1] - total price
							$('#basket').html('<a href="#basket_opened" class="show_basket">Выбрано <span class="count_objects">'+data[0]+'</span> товаров</a>  на сумму <span class="count_price">'+data[1]+'</span> грн');
							// Show basket handler
							showBasketHandler();
							init_order();
							// show basket at first try to buy
							if(data[0] == 1)
							{
								$('#basket_opened').css('display','block');
								$('#basket .show_basket').trigger('click');
							}
						}
					});
				});
			}
		});
		return false
	});
}

//->
function changeObjectsCount()
{
	$('#basket_opened .box input[name="count"]').keyup(function(){
		var count = $(this).val();
		
		if(count != null && count != 0)
		{
			var ok_obj = $(this).next('.update_count');
			ok_obj.fadeIn(200,function(){
				// change price
				$(this).unbind('click');
				$(this).bind('click',function(){
					// data
					var id = $(this).parents('.box').attr('object_id');
					var price_for_one = $(this).parents('.box').attr('price_for_one');
					var price_for_all = count*price_for_one;
					
					$(this).parents('.box').find('.price').html(price_for_all+' грн');
					// updating cookies
					$.get('/ajax/basket.php?do=update_count&id='+id+'&count='+count,function(result){
						if(result == 1)
						{
							recalculateOrder();
							// css
							ok_obj.fadeOut(200);
						}
					});
				});												   
			});
		}
	});
}

//->
function showBasketHandler()
{
	$('#basket .show_basket').fancybox({'showCloseButton':false,'overlayOpacity':0.2,
	'onStart':function(){
		$('#basket_opened').css('display','block');
		$('#basket_opened .colors_box').find('input[type="radio"]').css('display','none');
		$('#basket_opened .sizes_box').css('display','none');
	},'onClosed':function(){
		$('#basket_opened').css('display','none');
	},'onComplete':function(){
		$('#basket_opened .bottom_panel .continue_shopping').click(function(){$.fancybox.close()});	
	}
	});
}

//->
function deleteObjHandler()
{
	var obj = $('#basket_opened .box .cancel');
	
	obj.unbind('click');
	obj.bind('click',function(){
		// data
		var remove_container = $(this).parents('.box');
		var id = $(this).parents('.box').attr('object_id');					  
		// removing
		$.get('/ajax/basket.php?do=remove&id='+id,function(result){
			if(result == 1)
			{
				remove_container.fadeOut(200).remove();
				recalculateOrder();
				init_order();
				
				$.get('/ajax/basket.php?do=calculate',function(count_result){
					// success
					if(count_result != 0)
					{
						var data = count_result.split(':'); // data[0] - count objects, data[1] - total price
						$('#basket').html('<a href="#basket_opened" class="show_basket">Выбрано <span class="count_objects">'+data[0]+'</span> товаров</a>  на сумму <span class="count_price">'+data[1]+'</span> грн');
						// Show basket handler
						showBasketHandler();
					}
					else{
						var mod = $('#user_status').attr('mod');
						if(mod == 'order') {
							location.href = '/';
						}else{
							$('#basket').html('Корзина пуста');
						}
					}
				});
			}
		});
	});
}

//->
function recalculateOrder()
{
	// updating order full price
	var total_price = 0;
	$('#basket_opened .box').each(function(){
		var this_count = $(this).find('input[name="count"]').val();
		var this_price = $(this).attr('price_for_one');
		total_price += this_count*this_price;
	});

	if(total_price == 0)
	{				
		$.fancybox.close();
		$('#basket_opened').fadeOut(200);
	}
	else
		$('#basket_opened .bottom_panel .total_price .num').html(total_price);
		
	$.get('/ajax/basket.php?do=calculate',function(count_result){
		// success
		if(count_result != 0)
		{
			var data = count_result.split(':'); // data[0] - count objects, data[1] - total price
			$('#basket').html('<a href="#basket_opened" class="show_basket">Выбрано <span class="count_objects">'+data[0]+'</span> товаров</a>  на сумму <span class="count_price">'+data[1]+'</span> грн');
			// Show basket handler
			showBasketHandler();
		}
		else
			$('#basket').html('Корзина пуста');
	});
}

//->
function initObjImgHeight()
{
	var count_obj = $('.object').size();
	
	if(count_obj > 0)
	{
		$('.object').each(function(){
			$(this).find('.photos img').each(function(){
				var img_height = $(this).height();
				if(img_height > 190)
					$(this).height(190);
			});						   
		});
	}
}

//-> 
function validateLoginForm()
{
	$.validator.methods.equal = function(value, element, param) {
			return value == param;
		};
	var form = $('#login_form');
		form.validate({
			submitHandler: function() 
			{			
				var email = form.find('input[name="email"]').val();
				var password = form.find('input[name="password"]').val();
				
				var postdata = {'email':email,
								'password':password};
						
				$.post('/ajax/login.php?do=auth',postdata,function(result){
					switch(result)
					{
						// success
						case '1':
							$('#login .box').css('display','none');
							$('#login .panel .user_not_authorised').css('display','none');
							$('#login .panel').css('display','block');						
							$('#login .panel .user_authorised').css('display','block');
						break;
						
						// no user
						case '2':
							$('#login .box .error').html('Неверный пароль');
						break;
					}
				});
			},
			rules : {
						email : {required : true, email : true},
						password : {required : true, minlength: 5, maxlength: 12}
					},
			messages : {
							email : {required : "*",email : "*"},
							password : {required : "*",minlength : "*",maxlength : "*"}
					   },
			errorPlacement: function(error, element)
			{
				var er = element.attr("name");
				error.appendTo(element.parent().find("label[for='" + er + "']").find("em"));
			}
		});
}

//-> 
function validateRegisterForm()
{
	$.validator.methods.equal = function(value, element, param) {
			return value == param;
		};
		
		var form = $('#register_new_user_form');
		form.validate({
			submitHandler: function() 
			{
				// css
				form.find('input[type="submit"]').css('display','none');
				
				// data
				var name = form.find('input[name="name"]').val();
				var email = form.find('input[name="email"]').val();
				var password = form.find('input[name="password"]').val();
				
				var postdata = {'name':name,
								'email':email,
								'password':password};
						
				$.post('/ajax/register.php',postdata,function(result){							   
					// success
					if(result == 1)
					{
						$.post('/ajax/login.php?do=auth',{'email':email,'password':password},function(auth_result){
							// auth success
							if(auth_result == 1)
							{
								// css
								form.find('.buttons').after('<div class="user_registered">Учетная запись успешно создана, Вы можете приступить к покупкам :)</div>');
				
								$('#login .box').css('display','none');
								$('#login .panel .user_not_authorised').css('display','none');
								$('#login .panel').css('display','block');
								$('#login .panel .user_authorised').css('display','block');
							}
						});
					}
					else if(result == 2) // user exists
					{
						form.find('.user_exists').remove();
						form.find('.buttons').after('<div class="user_exists">Пользователь с таким адресом электронной почты уже зарегистрирован!</div>');
						// css
						form.find('input[type="submit"]').css('display','block');
					}
				});
			},
			rules : {
						name : {required : true, minlength: 1, maxlength : 50},
						email : {required : true, email : true},
						password : {required : true, minlength: 5, maxlength: 12}
					},
			messages : {
							name : {required : "*",minlength : "*",maxlength : "*"},
							email : {required : "*",email : "*"},
							password : {required : "*",minlength : "*",maxlength : "*"}
					   },
			errorPlacement: function(error, element)
			{
				var er = element.attr("name");
				error.appendTo(element.parent().find("label[for='" + er + "']").find("em"));
			}
		});
}

//-> 
function validateProfileForm()
{
	$.validator.methods.equal = function(value, element, param) {
			return value == param;
		};
		
		var form = $('#profile_form');
		form.validate({
			submitHandler: function() 
			{
				// css
				form.find('input[type="submit"]').css('display','none');
				
				// data
				var name = form.find('input[name="name"]').val();
				var phone = form.find('input[name="phone"]').val();
				var address = form.find('textarea[name="address"]').val();
				
				var postdata = {'name':name,
								'phone':phone,
								'address':address};
						
				$.post('/ajax/profile.php?do=save',postdata,function(result){
					// success
					if(result == 1)
					{
						location.href = '/?mod=profile';
					}
				});
			},
			rules : {
						name : {required : true, minlength: 1, maxlength : 50},
						phone : {maxlength : 50},
						address : {maxlength: 100}
					},
			messages : {
							name : {required : "*",minlength : "*",maxlength : "*"},
							phone : {maxlength : "*"},
							address : {maxlength : "*"}
					   },
			errorPlacement: function(error, element)
			{
				var er = element.attr("name");
				error.appendTo(element.parent().find("label[for='" + er + "']").find("em"));
			}
		});
}
