$(function() {
	/* ========== Reloading cart ========== */
	reloadCart();
	
	/* ========== Init currency selector ========== */
	$("#currency-selector").chosen();
	$("#currency_selector_chzn").hover(function(){ $("#currency-selector").trigger("liszt:open"); }, function(){ $("#currency_selector_chzn").trigger('click'); });
	
	/* ========== Init amount fields ========== */
	$(".amount-counter").spinner({ min: 1, max: 100 });
	
	/* ========== Product list hover ========== */
	$("#product-list li").hover( function () { $(this).find("h3").addClass("hover"); },  function () { $(this).find("h3").removeClass("hover"); } );
	
	/* ========== Login box slideout ========== */
	$('#login-button').click(function() { $('#loginbox').slideToggle('250', function() {});return false; });
	$("#loginbox .close").click(function() { $('#loginbox').slideToggle('250', function() {});return false; });

	/* ========== Searchbox border highlight ========== */
	$('#search-input').focus(function(){ $(this).parent().css({ "border-color": "#e7641c" });return false; });
	$('#search-input').blur(function(){ $(this).parent().css({  "border-color": '#cbcbcb'});return false; });

	/* ========== Input fields placeholder fix ========== */
	$('input:text, input:password, textarea').each(function(){
		var $this = $(this);
		$this.data('placeholder', $this.attr('placeholder'))
			 .focus(function(){$this.removeAttr('placeholder');})
			 .blur(function(){$this.attr('placeholder', $this.data('placeholder'));});
	});
	
	/* ========== Frontpage slideshow ========== */
	if($("#slideshow").length) {
		$("#slideshow").orbit({ bullets: true });
	}
	
	/* ========== Back-to-top button ========== */
	$(window).resize(function() {
		if($(this).width() > 1238) {
			$('#back-to-top').removeClass("hidden");
		} else {
			$('#back-to-top').addClass("hidden");
		}
	});
	
	$(window).scroll(function() {
		if(!$('#back-to-top').hasClass("hidden")) {
			if($(this).scrollTop()  > ($(window).height() / 2))
				$('#back-to-top').show();
			else
				$('#back-to-top').hide();
		}
	});
	
	$('#back-to-top').click(function(event){ event.preventDefault(); $('html, body').animate({scrollTop: $('body').offset().top}, 500);});
	
	/* ========== Copy address feature on registration page ========== */
	$("#copy-address-button").click(function(event){
		event.preventDefault();
		var regType = $('input[name="regtype"]:checked').val();

		if(regType != undefined) {
			var regTypeForm = "person";
			var fieldSet = $("#reg-person");
			var cityField = $("#reg-person").find(".city-field");
			var stateField = $("#reg-person").find(".state-field");

			if(regType == "C") {
				regTypeForm = "company";
				fieldSet = $("#reg-company");
				cityField = $("#reg-company").find(".city-field");
				stateField = $("#reg-company").find(".state-field");
			}

			$("#reg_delivery_firstname").val($("#reg_"+regTypeForm+"_firstname").val());
			$("#reg_delivery_familyname").val($("#reg_"+regTypeForm+"_familyname").val());
			$("#reg_delivery_zip_code").val($("#reg_"+regTypeForm+"_zip_code").val());
			$("#reg_delivery_country").val($("#reg_"+regTypeForm+"_country").val());
			$("#reg_delivery_address").val($("#reg_"+regTypeForm+"_address").val());
			$("#reg_delivery_phone").val($("#reg_"+regTypeForm+"_phone").val());

			if(regTypeForm == "company")
				$("#reg_delivery_company_name").val($("#reg_company_name").val());

			var deliveryStateField = $("#reg_delivery_state_text");
			var deliveryCityField = $("#reg_delivery_city_text");

			var deliveryCountryValue = $("#reg_delivery_country").val();
			var deliveryZipValue = $("#reg_delivery_zip_code").val();


			if(deliveryCountryValue != "") {
				if(addressValidation[deliveryCountryValue] != undefined && addressValidation[deliveryCountryValue].hasZipCodeDatabase) {
					deliveryStateField.attr("readonly", "readonly").val(localizedStrings["please_give_zipcode"]);
					deliveryCityField.attr("readonly", "readonly").val(localizedStrings["please_give_zipcode"]);
					if(deliveryZipValue != "" && deliveryZipValue != null) {
						getCityByZipCode(deliveryCountryValue, deliveryZipValue, deliveryStateField, deliveryCityField);
					}
				} else {
					deliveryStateField.val("").removeAttr("readonly");
					deliveryCityField.val("").removeAttr("readonly");
				}
			} else {
				deliveryStateField.val("").removeAttr("readonly");
				deliveryCityField.val("").removeAttr("readonly");
			}

			$("#reg-delivery").find(".state-field").val(stateField.val());
			$("#reg-delivery").find(".city-field").val(cityField.val());

			if(stateField.val() != "" && cityField.val() != "" && fieldSet.find(".zipcode-field").val() != "" && addressValidation[deliveryCountryValue] != undefined && addressValidation[deliveryCountryValue].hasZipCodeDatabase == true) {
				getCityByZipCode($("#reg_delivery_country").val(), $("#reg_delivery_zip_code").val(), deliveryStateField, deliveryCityField);
			}
		}

		$("#reg-delivery input, #reg-delivery select").each(function(){
			if($(this).val() != "")
				$(this).valid();
		});

		$("#reg_delivery_address_name").focus();
	});
	
	/* ========== Table - delete row ========== */
	if($(".table-row-delete").length) {
		$(".table-row-delete").click(function(){
			var confirmDelete = confirm(localizedStrings["delete_row_confirm"]);
		
			if(confirmDelete)
				$(this).closest("tr").remove();
		});
	}
	
	/* ========== Orders table - open/close ========== */
	if($(".orders-table .order-row").length) {
		$(".orders-table .order-row th").click(function(){
			var detailsTable = $(this).parent().parent().next();
			if(detailsTable.length && detailsTable.hasClass("order-details")) {
				detailsTable.toggle();
				$(this).parent().parent().toggleClass("opened");
			}
		});
	}
	
	/* ========== Orders table - show full comment ========== */
	$(".show-more").click(function(){
		$(this).parent().addClass("full-comment");
	});
	
	/* ========== Create new delivery address ========== */
	$("#create-address-button").click(function(){
		$("html, body").animate({ scrollTop: 0 }, "fast");
		$("#delivery-data-form:hidden").show("fast");
		$("#reg_delivery_address_name").focus();
	});
	
	/* ========== Lightbox for product images ========== */
	if($(".fancybox").length) {
		$(".fancybox").fancybox({helpers : { overlay : { locked : false } }});
	}
	
	/* ========== Forms & validations ========== */
	var regForm = $('#regform'),
		personDataFrom = $('#person-data-form'),
		companyDataFrom = $('#company-data-form'),
		deliveryDataFrom = $('#delivery-data-form'),
		changePasswordFrom = $('#change-password-form'),
		deleteAccountFrom = $('#delete-account-form'),
		forgotpassForm = $('#forgotpass-form'),
		messageForm = $('#message-form');
	
	// Registration form
	if(regForm.length) {
		$("#reg_person_country").change(countrySelectChange);
		$("#reg_company_country").change(countrySelectChange);
		$("#reg_delivery_country").change(countrySelectChange);
	
		regForm.validate(regformValidateOptions);
		
		// Show regform by type
		$("input[name='regtype']").change(function(){
			var reg_type = $(this).val();
			
			if(reg_type == "P") {
				$("#reg-company").hide();
				$("#reg-person").fadeIn();
				$("#reg-delivery").show();
			} else if(reg_type == "C") {
				$("#reg-person").hide();
				$("#reg-company").fadeIn();
				$("#reg-delivery").show();
			}
			
		});
	}
	
	// Change personal data form
	if(personDataFrom.length) {
		$("#reg_person_country").change(countrySelectChange);
		personDataFrom.validate(personDataFormValidateOptions);
	}
	
	// Change company data form
	if(companyDataFrom.length) {
	$("#reg_company_country").change(countrySelectChange);
		companyDataFrom.validate(companyDataFormValidateOptions);
	}
	
	// Change delivery data form
	if(deliveryDataFrom.length) {
		$("#reg_delivery_country").change(countrySelectChange);
		deliveryDataFrom.validate(deliveryDataFormValidateOptions);
	}
	
	// Change password form
	if(changePasswordFrom.length) {
		changePasswordFrom.validate(changePasswordFormValidateOptions);
	}
	
	// Delete account form
	if(deleteAccountFrom.length) {
		deleteAccountFrom.validate(deleteAccountFormValidateOptions);
	}
	
	// Message form
	if(messageForm.length) {
		messageForm.validate(messageFormValidateOptions)
	}
	
	// Forgotpass form
	if(forgotpassForm.length) {
		forgotpassForm.validate({ errorElement: 'span', focusInvalid: false, onkeyup: false });
	};
	
	// Close popup
	if ($('html').hasClass('getLayer')) {
		$('#layer, #layerBg').fadeIn('fast');
	}
	$('span.getLayer').click(function() {
		$('#layer, #layerBg').fadeIn('fast');
	});
	$('#layer .close, #layerBg').click(function() {
		$('#layer, #layerBg').fadeOut('fast');
	});
});

/* ========== Country select event ========== */

function countrySelectChange(){
	var selectedValue = $(this).val();
	var fieldSet = $(this).closest("fieldset");
	
	var stateField = fieldSet.find(".state-field");
	var cityField = fieldSet.find(".city-field");
			
	/* Vat field masking */
	if(fieldSet.attr("id") == "reg-company") {
		if(selectedValue == "HU")
			$("#reg_company_vat_number").mask(vatNumberFormat["HU"]);
		else if(selectedValue == "DE")
			$("#reg_company_vat_number").mask(vatNumberFormat["EU"]);
		else 
			$("#reg_company_vat_number").unmask();
	}
	
	if(selectedValue != "" && addressValidation[selectedValue] != undefined) {
		var zipCodeField = fieldSet.find(".zipcode-field");
		zipCodeField.val("");
		
		if(addressValidation[selectedValue].hasZipCodeDatabase) {
			stateField.attr("readonly", "readonly").val(localizedStrings["please_give_zipcode"]);
			cityField.attr("readonly", "readonly").val(localizedStrings["please_give_zipcode"]);
			zipCodeField.focus();
		} else {
			fieldSet.find(".state-field").val("").removeAttr("readonly");
			fieldSet.find(".city-field").val("").removeAttr("readonly");
		}
	} else {
		stateField.val("").removeAttr("readonly");
		cityField.val("").removeAttr("readonly");
	}
}

/* ========== Cart animation ========== */

function reloadCart() {
	$.get('/ajax/getCart', function(data) {
		var obj = jQuery.parseJSON(data);
		$('#cart-data').html(obj.content);
		$('#cart-sum').html(obj.sum);
		reloadFullCart();
	});
}

function reloadFullCart() {
	$.get('/ajax/getBigCart', function(data) {
		$('#cart-full').html(data);
		if (data.length > 50) {
			$('#next').show();
		} else {
			$('#next').hide();
		}
	});
}

function addToBigCart(product_id) {
	var d = JSON.stringify({ name: $('#nbtitle'+product_id).html(), item: product_id, amount: 1 });
	$.ajax({
		url: '/ajax/addToCart',
		type: "POST",
		data: { data: d },
		success: function(data) {
			reloadCart();
			// reloadFullCart();
		},
		dataType: "html"
	});
}

function deleteCartItem(product_id) {
	$.ajax({
		url: '/ajax/deleteCartItem',
		type: "POST",
		data: { id: product_id },
		success: function(data) {
			reloadCart();
			// reloadFullCart();
		},
		dataType: "html"
	});
}

function decreaseItemQuantity(product_id) {
	$.ajax({
		url: '/ajax/decreaseItemQuantity',
		type: "POST",
		data: { id: product_id },
		success: function(data) {
			reloadCart();
			// reloadFullCart();
		},
		dataType: "html"
	});
}

function addToCart(product_id) {
	var productX = $("#product-image-"+product_id).offset().left;
	var productY = $("#product-image-"+product_id).offset().top;

	var basketX = $("#cart").offset().left;
	var basketY = $("#cart").offset().top;

	var gotoX = basketX - productX;
	var gotoY = basketY - productY;

	var newImageWidth 	= $("#product-image-"+product_id).width() / 3;
	var newImageHeight	= $("#product-image-"+product_id).height() / 3;

	$("#product-image-" + product_id + " img")
		.clone()
		.prependTo("#product-image-" + product_id)
		.css({'position' : 'absolute'})
		.animate({opacity: 0.6}, 200 )
		.animate({opacity: 0.0, marginLeft: gotoX, marginTop: gotoY, width: newImageWidth, height: newImageHeight}, 1000, function() {

			$(this).remove();

	});
	var d = JSON.stringify({ name: $('#nbtitle'+product_id).html(), item: product_id, amount: $('#amount'+product_id).val() });
	$.ajax({
		url: '/ajax/addToCart',
		type: "POST",
		data: { data: d },
		success: function(data) {
			reloadCart();
		},
		dataType: "html"
	});
}