var ERRC_CART_IS_FULL = 1;
var ERRC_GENERIC = 10;

function assignEventTrackers() {
	if (! isGaActive) {
		return;
	}
	$('.trackable').each(function() {
		var relAttr = $(this).attr('rel');
		if (typeof relAttr != 'undefined') {
			var relParts = relAttr.split(/;\s*/);
			$(this).click(function() {
				_gaq.push(['_trackEvent', relParts[0], relParts[1], relParts[2], relParts[3]]);
			});
		}
	});
}

function addToCart(offerId, overwrite) {
	$('#add-to-cart-loader-' + offerId).css('visibility', 'visible');
	$.ajax({
		type: 'POST',
		url: 'shopping-cart/add',
		data: {
			offerId:   offerId,
			overwrite: overwrite
		},
		dataType: 'json',
		success: function(response) {
			$('#add-to-cart-loader-' + offerId).css('visibility', 'hidden');
			if (typeof response.success != 'undefined') {
				window.location.href = shoppingCartUrl;
			} else {
				if (response.errorCode == ERRC_CART_IS_FULL) {
					if (confirm(response.errorMessage)) {
						addToCart(offerId, 1);
					}
				} else {
					alert(response.errorMessage);
				}
			}
		},
		error: function() {
			$('#add-to-cart-loader-' + offerId).css('visibility', 'hidden');
		}
	});
}
function handleAddToCart() {
	$('.add_to_cart').click(function(e) {
		e.preventDefault();
		var offerId = $(this).attr('id').replace('add-to-cart-', '');
		addToCart(offerId, 0);
	});
}

$().ready(function() {
	assignEventTrackers();
	handleAddToCart();
	
	// Make language selector available
	var languageSelector = $('.available-languages');
	
	$('.selected-language').click(function(e) {
		e.preventDefault();
		if (languageSelector.is(':hidden')) {

			languageSelector.show('fast', function() {
				$('html,body').one('click', function() {
					languageSelector.hide();
				});
			});
		} else {
			languageSelector.hide();
		}
	});
	
	// Terms and Conditions and Privacy Policy open in a popup
	var popupFeatures = 'menubar=no,location=no,resizable=yes,scrollbars=yes,status=yes,'
					  + 'width=600,height=500';
	$('.terms-and-conditions').click(function(e) {
		e.preventDefault();
		window.open(termsAndConditionsUrl, 'termsAndConditions', popupFeatures)
	});
	$('.privacy-policy').click(function(e) {
		e.preventDefault();
		window.open(privacyPolicyUrl, 'termsAndConditions', popupFeatures);
	});
	
	// Your e-mail is safe
	$('.safe-email').click(function(e) {
		e.preventDefault();
		$('.email_safe_info').toggle();
	});
	
	// Subscribe to custom alerts
	$('#custom-alerts-subscribe .subscribe-email').focus(function() {
		if ($(this).val() == $(this).get(0).defaultValue) {
			$(this).val('');
		}
	}).blur(function() {
		if ($(this).val() == '') {
			$(this).val($(this).get(0).defaultValue);
		}
	});
	$('#custom-alerts-subscribe .subscribe-submit').click(function() {
		var emailField		= $('#custom-alerts-subscribe .subscribe-email');
		var emailFieldValue = emailField.val();
		if (emailFieldValue == emailField.get(0).defaultValue) {
			emailFieldValue = '';
		}
		$.ajax({
			type: 'GET',
			timeout: 50000,
			data: {
				email: emailFieldValue
			},
			url: '/subscribers/add',
			dataType: 'json',
			success: function(result) {
				if (typeof result.error != 'undefined') {
					$('#custom-alerts-subscribe .message').removeClass('message-error')
														  .removeClass('message-notice')
														  .addClass('message-error')
														  .text(result.error)
														  .show();
					if (isGaActive) {
						_gaq.push(['_trackEvent', 'Home', 'Subscribe', 'unsuccessful']);
					}
				} else {
					if (isGaActive) {
						_gaq.push(['_trackPageview', '/subscribers/add']);
						_gaq.push(['_trackEvent', 'Home', 'Subscribe', 'successful']);
					}
					$('#custom-alerts-subscribe .message').removeClass('message-error')
														  .removeClass('message-notice')
														  .addClass('message-notice')
														  .text(result.notice)
														  .show();
					$('#custom-alerts-subscribe .subscribe-email').val('');
				}
			}
		});
	});
});
