$(document).ready(function()
	{
		initNewsletterForm();
		initRegistrationForm();
		initProducts();
		if(document.trackDescriptions) {
			$('.tooltip').each(function()
				{
					var id = $(this).attr('id').substr(8);
					if(document.trackDescriptions[id]) {
						$(this).tooltip({ 
						    track: true, 
						    delay: 0, 
						    showURL: false,
						    extraClass: 'pretty',
							bodyHandler: function()
								{
									return document.trackDescriptions[$(this).attr('id').substr(8)];
								},
						    fixPNG: true, 
						    opacity: 0.95, 
						    left: -120 
						}).click(function(event)
							{
								event.stopPropagation();
								event.preventDefault();
								return false;
							}
						);
					}
				}
			);
		}
	}
);
var lockNewsletterForm = false;
function initNewsletterForm()
{
	if($('#newsletterBox').length != 0) {
		$('#newsletterBox input[name=email]').click(function()
			{
				if($(this).val() == 'enter email address') {
					$(this).val('');
				}
			}
		).blur(function()
			{
				if($(this).val() == '') {
					$(this).val('enter email address');
				}
			}
		);
		$('#newsletterBox form').submit(function(event)
			{
				if(!lockNewsletterForm) {
					lockNewsletterForm = true;
					$('#newsletterBox p.errorText').remove();
					var email = $('input[name=email]', this).val();
					if(!email.length || email == 'enter email address') {
						$('#newsletterBox p:last').after('<p class="errorText">Email address is empty.</p>');
						$('input[name=email]', this).val('enter email address');
						lockNewsletterForm = false;
					} else if(!/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(email)) {
						$('#newsletterBox p:last').after('<p class="errorText">Is an invalid e-mail address.</p>');
						$('input[name=email]', this).val('enter email address');
						lockNewsletterForm = false;
					} else {
						$(this).parent().fadeTo('slow',0.25, function()
							{
								var img = jQuery("<img>").attr({src:document.config.images.waiting,alt:'Loading...',title:'Loading...',id:'newsletterWaiting'}).addClass('waiting');
								$(this).after(img);
								$.ajax(
									{
										type: 'post',
										url: $('form', this).attr('action'),
										data: {email:$('form input[name=email]', this).val(),_newsletterForm:true,_ajax:true},
										dataType: 'json',
										success: function(data, textStatus)
											{
												if(data.success || data.alreadySubscribed) {
													$('#newsletterBox').empty().append('<p>'+$('<div/>').text(data.message).html()+'</p>');
												} else {
													$('#newsletterBox p:last').after('<p class="errorText">'+$('<div/>').text(data.message).html()+'</p>');
													$('#newsletterBox form input[name=email]').val('enter email address');
												}
											},
										error: function(XMLHttpRequest, textStatus, errorThrown)
											{
												$('#newsletterBox form').submit(function(){}).submit();
											},
										complete: function(XMLHttpRequest, textStatus)
											{
												$('img#newsletterWaiting').remove();
												$('#newsletterBox').fadeTo('slow',1);
												lockNewsletterForm = false;
											}
									}
								);
							}
						);
					}
				}
				event.stopPropagation();
				event.preventDefault();
				return false;
			}
		);
	}
}
function initRegistrationForm()
{
	if($('#shippingAddress').length != 0 && $('input#shippingIsBilling').length != 0) {
		$('input#shippingIsBilling').click(function()
			{
				var keys = ['Address0','Address1','City','County','Postcode','CountryCode'];
				if($(this).is(':checked')) {
					$('#shippingAddress').hide();
					for (var i=0; i<keys.length; i++) {
						if($('#regB'+keys[i]).length !=0 && $('#regS'+keys[i]).length !=0) {
							$('#regS'+keys[i]).val($('#regB'+keys[i]).val());
						}
					}
				} else {
					$('#shippingAddress').show();
				}
			}
		);
		if($('input#shippingIsBilling').is(':checked')) {
			$('#shippingAddress').hide();
		} else {
			$('#shippingAddress').show();
		}
	}
}
function initProducts()
{
	if($('tbody.tracks').length != 0 && $('.minmax').length != 0) {
		$('tbody.tracks').hide();
		$('#productsTitle').after('<p style="margin:10px 0px 10px 0px;">Click on product names below to see track details and to listen to track samples:</p>');
		$('.minmax.icon').html('<a href="#"><img src="'+document.config.images.maximize+'" alt="Maximise" width="11" height="11" border="0" /></a>');
		$('.minmax.title').wrapInner('<a href="#"></a>');
		$('.minmax a').click(function(event)
			{
				var tracks = $(this).parent().parent().parent().next('tbody.tracks');
				if($(tracks).is(':visible')) {
					$(tracks).hide(0).prev().find('.minmax.icon a').html('<img src="'+document.config.images.maximize+'" alt="Maximise" width="11" height="11" border="0" />');
				} else {
					$(tracks).show(0).prev().find('.minmax.icon a').html('<img src="'+document.config.images.minimize+'" alt="Minimize" width="11" height="11" border="0" />');
				}
				event.stopPropagation();
				event.preventDefault();
				return false;
			}
		);
	}
	if($('select.submitOnChange').length != 0) {
		$('select.submitOnChange').change(function()
			{
				$(this).parent('form').submit();
			}
		);
		$(':submit', $('select.submitOnChange').parent('form')).hide();
	}
}