Object.sizeof = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};

function classAttributes( classString, className ) {
	var data;
	var regex = new RegExp(className+"\\[(.*?)\\]");
	var matches = classString.match(regex);
	
	if ( matches ) {
		//matches[1] refers to options inside [] "required, email, ..."
			var spec = matches[1].split(/,\s*/);
			
			if ( spec.length > 0 ) {
				data = spec;
			}
	}
	
	return data;
}

$.widget('ui.ajaxsearch', {
	options: {
		container: '.search-container-results'
	},
	_create: function() {
		var obj = this;
		var container = this.options.container;
		this.element.find('form .search-bar').helperValue();
		this.element.find('form .search-bar').attr('autocomplete', 'off');
		
		$(container).find('ul li').live('click', function() {
			var url = $(this).find('.s-name a').attr('href');
			window.location = url;
		});
		
		$(container).find('ul li').live('mouseover mouseout', function(event) {
			if (event.type == 'mouseover') {
				$(this).addClass('hover');
			} else {
				$(this).removeClass('hover');
			}
		});
		
		this.element.find('form').submit(function() {
			if($(this).find('.search-bar').val() != $(this).find('.search-bar').attr('title')){
				$(this).find('.search-preloader').show();
				var formdata = $(this).serialize();
				obj.searching(formdata, container);
			}
			return false;
		});
		
		this.element.find('form .search-bar').keyup(function() {
			if($(this).val().length > 0 && $(this).val() != 'SEARCH'){
				$(this).parents('form').find('.search-preloader').show();
				var formdata = $(this).parents('form').serialize();
				obj.searching(formdata, container, $(this).val().length);
			}else{
				obj.closesearch(container, '.mainoverlay');
			}
		});
		
		$('body').click(function(event){
			if($(event.target).closest('.search').length == 0 && $('.search-container-results').is(':visible')){
				obj.closesearch(container, '.mainoverlay');
			}
		});
		
		$('#overlay, .mainoverlay').click(function() {
			obj.closesearch(container, this);
		});
	},
	
	searching: function(formdata, container, itemlength) {
		$.ajax({
			type: 'POST',
			url: '/search/search-ajax?ajax',
			data: formdata,
			success: function(data) {
				var jsonArray = $.parseJSON(data);
				var json = jsonArray['search'];
				
				if(json['confirm'] == 'success'){
					$(container).fadeIn(300);
					$('.search form .search-preloader').hide();
					if($('#overlay').length > 0){
						$('#overlay').show();
					}
					$('.mainoverlay').show();
					var html = '';
					for(var i in json['results']){
						html += '<li>';
							var image = 'no-image.jpg';
							if(json['results'][i]['url'] != null){
								image = json['results'][i]['url'];
							}
							if(json['results'][i]['order_nr'] == 1){
								html += '<div class="s-image"><a href="'+json['results'][i]['link']+'/'+json['results'][i]['pseo']+'"><img alt="" src="/misc/products/'+json['images']+'/'+image+'" /></a></div>';
							}else{
								html += '<div class="s-image"><a href="'+json['results'][i]['link']+'/'+json['results'][i]['pseo']+'/'+json['results'][i]['seo']+'"><img alt="" src="/misc/products/'+json['images']+'/'+image+'" /></a></div>';
							}
							html += '<div class="s-container" rel="'+json['results'][i]['order_nr']+'">';
								if(json['results'][i]['order_nr'] == 1){
									html += '<div class="s-name"><a href="'+json['results'][i]['link']+'/'+json['results'][i]['pseo']+'">'+json['results'][i]['name']+'</a></div>';
								}else{
									html += '<div class="s-name"><a href="'+json['results'][i]['link']+'/'+json['results'][i]['pseo']+'/'+json['results'][i]['seo']+'">'+json['results'][i]['name']+'</a></div>';
								}
								if(json['results'][i]['sale_price'] > 0){
									if(json['results'][i]['percent'] != '0'){
										html += '<div class="s-sale-item">'+json['results'][i]['sale_price_formated']+' (SAVE '+json['results'][i]['percent']+'%)</div>';
									}else{
										html += '<div class="s-price">'+json['results'][i]['sale_price_formated']+'</div>';
									}
									
									html += '<div class="s-was">(was '+json['results'][i]['price_formated']+')</div>';
								}else{
									html += '<div class="s-price">'+json['results'][i]['price_formated']+'</div>';
								}
							html += '</div>';
						html += '</li>';
					}
					
					$(container).find('ul').html(html);
					
				}
				
			}
			
		});
		
		if(itemlength == 0){
			obj.closesearch(container, '.mainoverlay');
		}
	},
	
	closesearch: function(container, overlay) {
		$(container).fadeOut(200, function(){
			$(this).find('ul').html('');
		});
		$(overlay).hide();
	}
	
});

$.widget('ui.productScroller', {

	_create: function() {
		var obj = this;
		var parent = this.element;
		var items = this.element.find('li');
		var itemWidth = items.width();
		this.element.find('ul').css('width', (items.length*itemWidth));
		parent.find('.item-content').attr('rel', '0');
		
		parent.find('.prev-arrow').click(function(){
			obj.scrollLeft(parent.find('.item-content'), itemWidth);
		});
		parent.find('.next-arrow').click(function(){
			obj.scrollRight(parent.find('.item-content'), itemWidth);
		});
	},
	
	scrollLeft: function(el, width){
		var parent = this.element;
		var mleft = parseInt(el.css('margin-left'));
		var itMoved = parseInt(el.attr('rel'));
		var citems = parseInt(el.parent().width()/width);
		itMoved -= citems;
		
		if(mleft < 0 && !el.hasClass('scrolling')){
			parent.find('.next-arrow').removeClass('hidden');
			el.addClass('scrolling');
			mleft += el.parent().width();
			el.animate({'margin-left': mleft+'px'},800,function(){
				el.removeClass('scrolling');
			});
			
			el.attr('rel', parseInt(itMoved));
			if(mleft == 0){
				parent.find('.prev-arrow').addClass('hidden');
			}
			
		}
	},
	
	scrollRight: function(el, width){
		var parent = this.element;
		var count = el.find('.item').length;
		var mleft = parseInt(el.css('margin-left'));
		//items  moved
		var itMoved = parseInt(el.attr('rel'));
		var citems = parseInt(el.parent().width()/width);
		//increase the "items moved" count
		itMoved += citems;
		var max = (count-citems)*width*-1;
		
		if(mleft > max && !el.hasClass('scrolling') && itMoved < count){
			parent.find('.prev-arrow').removeClass('hidden');
			el.addClass('scrolling');
			mleft -= el.parent().width();
			el.animate({'margin-left': mleft+'px'},1000,function(){
				el.removeClass('scrolling');
			});
			el.attr('rel', parseInt(itMoved));
			if((itMoved*2) > count || (itMoved*2) == count){
				parent.find('.next-arrow').addClass('hidden');
			}
			
		}
		
	}
	
});

$.widget('ui.basketPageAction', {
	options: {
		itemcont: '.product-item',
		url: '/basket/manage-basket?ajax',
		price: '.row-prod .price',
		totalprice: '.row-prod .total-price',
		productamount: '.row-prod .amount',
		quantity: '.row-prod .quantity',
		itemadd: '.row-prod .add',
		itemsubtract: '.row-prod .subtract'
	},
	_create: function() {
		var obj = this;
		var itemcont = this.options.itemcont;
		var url = this.options.url;
		var price = this.options.price;
		var totalprice = this.options.totalprice;
		var quantity = this.options.quantity;
		var productamount = this.options.productamount;
		var itemadd = this.options.itemadd;
		var itemsubtract = this.options.itemsubtract;
		var increaseid;
		var decreaseid;
		var $subelement = $('.subtotal-update');
		var $totalelement = $('.total-update');
		var $basketitem = $('.baskettotal-update');
		
		this.element.find(itemadd).live('click', function() {
			var $button = $(this);
			var quntityinc = 0;
			increaseid = $(this).attr('rel').split(',');
			quntityinc = parseInt($(this).parents(itemcont).find(quantity).html());
			$('.basket-container .amount-overlay').show();
			
			
			$.ajax({
				type: 'POST',
				url: url,
				data: $.param({ calltype: 'checkquantity', colorid: increaseid, quantity: (quntityinc+1) }),
				success: function(data) {
					var json = $.parseJSON(data);
					var increase = quntityinc+1;
					
					if(json['conf'] == 'true' && increase != 0){
						$button.parents(itemcont).find(quantity).html(increase);
						$button.parents(itemcont).find(totalprice).html(''+json['item_total']);
						obj.update(json, itemcont, totalprice);
						obj.animatebackcont($subelement, $totalelement, $basketitem);
						$button.parents(itemcont).find(itemsubtract).removeClass('disabled');
					}else{
						if(json['stock'] < quntityinc && json['stock'] != 0){
							$button.parents(itemcont).find(quantity).html(json['stock']);
							$button.parents(itemcont).find(totalprice).html(''+json['item_total']);
							obj.update(json, itemcont, totalprice);
							obj.animatebackcont($subelement, $totalelement, $basketitem);
						}
						tooltip($button);
					}
					if(json['stock'] == quntityinc){
						$button.addClass('disabled');
					}
					$('.basket-container .amount-overlay').hide();
				}
				
			});
			
		});
		
		this.element.find(itemsubtract).live('click', function() {
			var buttonadd = $(this);
			var quntitydec = 0;
			decreaseid = $(this).attr('rel').split(',');
			quntitydec = parseInt($(this).parents(itemcont).find(quantity).html());
			$('.basket-container .amount-overlay').show();
			
			$.ajax({
				type: 'POST',
				url: url,
				data: $.param({ calltype: 'checkquantity', colorid: decreaseid, quantity: (quntitydec-1) }),
				success: function(data) {
					var json = $.parseJSON(data);
					var decrease = quntitydec-1;
					
					if(decrease == 1){
						$(buttonadd).addClass('disabled');
					}
					
					if(json['conf'] == 'true' && decrease != 0){
						$(buttonadd).parents(itemcont).find(quantity).html(decrease);
						$(buttonadd).parents(itemcont).find(totalprice).html(''+json['item_total']);
						obj.update(json, itemcont, totalprice);
						obj.animatebackcont($subelement, $totalelement, $basketitem);
						$(buttonadd).parents(itemcont).find(itemadd).removeClass('disabled');
					}else{
						if(json['stock'] < quntitydec && json['stock'] != 0){
							$(buttonadd).parents(itemcont).find(quantity).html(json['stock']);
							$(buttonadd).parents(itemcont).find(totalprice).html(''+json['item_total']);
							obj.update(json, itemcont, totalprice);
							obj.animatebackcont($subelement, $totalelement, $basketitem);
						}
					}
					$('.basket-container .amount-overlay').hide();
				}
				
			});
			
		});
		
		this.element.find('.products .remove-item').live('click', function(event) {
			var $currentbutton = $(this);
			var $product = $currentbutton.closest('.product-item');
			var delid = $(this).attr('rel').split(',');
	 
			event.preventDefault();
			$('.removing-product').css('top', $product.position().top + 'px').fadeIn(200,function() {
				$.ajax({
					type: 'POST',
					url: '/basket/remove-product?ajax',
					data: $.param({ calltype: 'removeproduct', colourid: delid }),
					success: function(data) {
						var json = $.parseJSON(data);
						if(json['itemcount'] == 0){
							var htmlelement = "<div style=\"display:none;\" class=\"no-items\"><div class=\"no-items-text\">There were no items in your shopping basket</div><div class=\"no-items-continue\"><a href=\"/\" title=\"Continue Shopping\">Continue Shopping</a></div></div>";
							$('.basket-container').fadeOut(400, function(){
								$('.basket-container').after(htmlelement);
								$('.basket-container').remove();
								$('.no-items').fadeIn();
							});
							
						}
						obj.update(json);
						
						obj.animatebackcont($subelement, $totalelement, $basketitem);
							
						$product.stop(true).slideUp(400);
						$('.removing-product').slideUp();
						
						
					}
				});
			});
		});
		
	},
	
	animatebackcont: function($subelement, $totalelement, $basketitem){
		if(!$subelement.hasClass('background-update-false')){
			$subelement.css('backgroundColor', '').stop().animate({ 'backgroundColor': '#bde8ff' }, 1000, function() {
				$subelement.css('backgroundColor', '#bde8ff').animate({ 'backgroundColor': '#ffffff' }, 1000);
			});
		}
		if(!$totalelement.hasClass('background-update-false')){
			$totalelement.css('backgroundColor', '').stop(true).animate({ 'backgroundColor': '#bde8ff' }, 1000, function() {
				$totalelement.animate({ 'backgroundColor': '#' + 'ffffff' }, 1000);
			});
		}
		if(!$basketitem.hasClass('background-update-false')){
			$basketitem.css('backgroundColor', '').stop(true).animate({ 'backgroundColor': '#bde8ff' }, 1000, function() {
				$basketitem.animate({ 'backgroundColor': '#' + 'F8F8F8' }, 1000);
			});
		}
	},
	
	update: function(json, itemcont, totalprice){
		if(parseInt(json['discount']) > 0 && $('#delivery-total .discount-row').is(':hidden')){
			$('#delivery-total .discount-row').slideDown();
		}else if(parseInt(json['discount']) == 0){
			$('#delivery-total .discount-row').hide();
		}
		
		$('.shopping-bag a span').html(json['itemcount']);
		$('.contains-items').html(json['itemcount']);
		$('.mini-cart .small-basket-total').html(json['total']);
		$('#delivery-total .total-row span').html(json['total']);
		$('.subtotal-container .stotal span').html(json['subtotal']);
		$('#delivery-total').find('.delivery-price a#'+json['did']).html(''+json['delamount']);
		$('.deliv-summary .del-item-price strong').html(''+json['delamount']);
		$('#delivery-total .discount-row').find('.right-cell span').html(json['discount']);
		$('.shopping-bag-cont .basket-total-amount').html(json['total_no_delivery']);
		$('.deliv-summary .del-item-desc span').html(json['summary']['delivery']);
		
		if(json['discount'].length > 0){
			$('.deliv-summary .del-item-desc span').html(json['promotion']['delDesc']);
		}else{
			$('.deliv-summary .del-item-desc span').html(json['summary']['delivery']);
		}
	}
	
});

$.widget('ui.deliveryupdate', {
	options: {
		delselect: '.delivery-type',
		delinput: 'input',
		url: '/basket?ajax&summary',
		deliveryprice: '.deliv-summary .del-item-price strong',
		deliverydesc: '.deliv-summary .del-item-desc span'
	},
	_create: function() {
		var obj = this;
		var delselect = this.options.delselect;
		var delinput = this.options.delinput;
		var deliveryprice = this.options.deliveryprice;
		var deliverydesc = this.options.deliverydesc;
		var url = this.options.url;
		var $elements = $('.total-update');
		var $basketitem = $('.baskettotal-update');
		
		this.element.find(delselect).click(function() {
			
			if(!$(this).hasClass('active')){
				obj.element.find('.delivery-type').removeClass('active');
				$(this).addClass('active');
				$(this).find(delinput).attr('checked', true);
				var delid = $(this).find(delinput).val();
				
				$.ajax({
					type: 'POST',
					url: url,
					data: $.param({ calltype: 'delivery', delid: delid }),
					success: function(data) {
						var json = $.parseJSON(data);
						
						if(json['summary']['discount_delivery'].length > 0){
							if(json['summary']['discount_delivery'].length > 26){
								var str = json['summary']['discount_delivery'];
								obj.element.find(deliverydesc).html(str.substring(0,26)+'...');
							}else{
								obj.element.find(deliverydesc).html(json['summary']['discount_delivery']);
							}
						}else{
							if(json['summary']['delivery'].length > 26){
								var str = json['summary']['delivery'];
								obj.element.find(deliverydesc).html(str.substring(0,26)+'...');
							}else{
								obj.element.find(deliverydesc).html(json['summary']['delivery']);
							}
						}
						obj.element.find(deliveryprice).html(''+json['summary']['delivery_amount_formated']);
						
						obj.update(json);
						obj.animateback($elements, $basketitem);
					}
					
				});
			}
		});
	},
	
	animateback: function($elements, $basketitem){
		$elements.css('backgroundColor', '').stop(true).animate({ 'backgroundColor': '#bde8ff' }, 1000, function() {
			$(this).animate({ 'backgroundColor': '#' + 'fff' }, 1000);
		});
		$basketitem.css('backgroundColor', '').stop(true).animate({ 'backgroundColor': '#bde8ff' }, 1000, function() {
			$(this).animate({ 'backgroundColor': '#' + 'F8F8F8' }, 1000);
		});
	},
	
	update: function(json){
		$('.mini-cart .small-basket-total').html(json['summary']['total_formated']);
		$('#delivery-total .total-row span').html(json['summary']['total_formated']);
		$('#delivery-total').find('.delivery-price a#'+json['summary']['delivery_id']).html(''+json['summary']['delivery_amount_formated']);
	}
	
});

$.widget('ui.archiveaddress', {
	options: {
		addersscont: '.address-block li',
		archive: '.archive-address',
		removing: '.removing'
	},
	_create: function() {
		var obj = this;
		var addersscont = this.options.addersscont;
		var archive = this.options.archive;
		var removing = this.options.removing;
		var url = this.options.url;
		
		this.element.find(archive).click(function() {
			var addressid = $(this).attr('rel');
			var button = $(this)
			$(button).parents(addersscont).find(removing).fadeIn();
			
			$.ajax({
				type: 'POST',
				url: url,
				data: $.param({ archive: addressid }),
				success: function(data) {
					var json = $.parseJSON(data);
					
					if(json['conf'] == 'success'){
						$(button).parents(addersscont).find(removing).delay(400).animate({opacity: 1}, 400, function(){
							$(button).parents(addersscont).remove();
						});
					}else{
						$(button).parents(addersscont).find(removing).hide();
					}
				}
				
			});
		});
	}
	
});


$.widget('ui.sliderwidget', {
	_create: function() {
		var obj = this;
		var parent = this.element;
		var container = this.options.container;
		var itemcount = this.options.itemcount;
		var handler = this.options.handler;
		var handlercont = this.element.find(handler).parent();
		var item = this.options.item;
		var itemWidth = $(container).find(item).width();
		var items = $(container).find(item).length;
		var handle_width = $(handlercont).width();
		
		if(items > itemcount){
			var handle_width = Math.round( handle_width / (100 / (100 - (((items - itemcount) / items)*100))) );
			$(handler).css('width',handle_width+'px');
		}else{
			$(handler).css('width',handle_width+'px');
		}
		
		var scrollarea = $(handlercont).width()-obj.element.find(handler).width();
		
		items = (items*itemWidth);
		
		$(container).css('width', items);
		
		var multiplier = (items-$(obj.element).width())/scrollarea;
		
		parent.find('.scroll-container').click(function(event){
			var original_pos = $(handler).offset();
			var target_pos = event.pageX;
			var left_side = original_pos.left;
			var right_side = original_pos.left + parseInt($(handler).css('width'));
			
			if(target_pos < left_side){
				var handleleft = parseInt( $(handler).css('left') ) - Math.round((left_side - target_pos)) + 'px';
				
				$(handler).stop(true,true).animate({ 'left': handleleft }, {
					duration: 600,
					step: function(){
						var pos = $(handler).position();
						var positionleft = (-1*multiplier)*(pos.left);
						$(container).css('margin-left', positionleft);
					}
				});
				
			}else if(target_pos > right_side){
				var handleleft = parseInt( $(handler).css('left') ) - Math.round((right_side - target_pos)) + 'px';
				
				$(handler).stop(true,true).animate({ 'left': handleleft }, {
					duration: 600,
					step: function(){
						var pos = $(handler).position();
						var positionleft = (-1*multiplier)*(pos.left);
						$(container).css('margin-left', positionleft);
					}
				});
			}
			
		});
		
		parent.find('.prev').click(function(){
			var handleleft = Math.max(0, parseInt( $(handler).css('left') ) - 30) + 'px';
			if(!$(handler).hasClass('animated')){
				$(handler).addClass('animated');
				$(handler).stop(true,true).animate({ 'left': handleleft }, {
					duration: 600,
					step: function(){
						var pos = $(handler).position();
						var positionleft = (-1*multiplier)*(pos.left);
						$(container).css('margin-left', positionleft);
					},
					complete: function(){
						$(this).removeClass('animated');
					}
				});
			}
		});
		
		parent.find('.next').click(function(){
			var handleleft = Math.min(scrollarea, parseInt( $(handler).css('left') ) + 30) + 'px';
			
			if(!$(handler).hasClass('animated')){
				$(handler).addClass('animated').stop(true,true).animate({ 'left': handleleft }, {
					duration: 600,
					step: function(){
						var pos = $(handler).position();
						var positionleft = (-1*multiplier)*(pos.left);
						$(container).css('margin-left', positionleft);
					},
					complete: function(){
						$(this).removeClass('animated');
					}
				});
			}
		});
		
		$(document).keydown(function(event){
			if (event.keyCode == '37') {
				parent.find('.prev').click();
			}
			if (event.keyCode == '39') {
				parent.find('.next').click();
			}
		});
		
		var result = (items-$(obj.element).width())/scrollarea;
		this.element.find(handler).draggable({
			containment: handlercont,
			scroll: false,
			drag: function(event, ui) {
				var pos = $(obj.element).find(handler).position();
				
				var positionleft = (-1*result)*(pos.left);
				$(container).css('margin-left', positionleft);
			}
		});
		
	}
	
});

$.widget('ui.productAction', {
	options: {
		container: '.product',
		addtobasket: '.add-to-basket',
		instantcheckout: '.instant-checkout',
		itemquntity: '.item-count span',
		countcont: '.item-count',
		itemadd: '.add',
		subtract: '.subtract',
		quntity: 'span',
		amount: '.item-price'
	},
	_create: function() {
		var obj = this;
		var parent = this.element;
		var instantcheckout = this.options.instantcheckout;
		var itemquntity = this.options.itemquntity;
		var selectCont = $('.size-selection');
		var colourCont = $('.size-selection');
		
		this.add_tobasket_button = this.options.addtobasket;
		this.countcont = this.options.countcont;
		this.container = this.options.container;
		this.itemadd = this.options.itemadd;
		this.url = this.options.url;
		this.subtract = this.options.subtract;
		this.quntity = this.options.quntity;
		this.amount = this.options.amount;
		this.basketUrl = this.options.basketUrl;
		this.redirectUrl = this.options.redirectUrl;
		
		
		$('.size-selection').find('.stock-selection a').live('click', function(){
			if(!$(this).parent().hasClass('selected') && !$(this).parent().hasClass('out-of-stock')){
				$('.size-selection').find('.selected').removeClass('selected');
				$(this).parent().addClass('selected');
				parent.find('.add-to-basket').attr('rel', $(this).attr('rel'));
				parent.find('.item-count .subtract').attr('rel', $(this).attr('rel'));
				parent.find('.item-count .add').attr('rel', $(this).attr('rel'));
				obj.validate('false');
				$(obj.countcont).find(obj.quntity).html('1');
				$(obj.countcont).find(obj.subtract).addClass('disabled');
				$(obj.countcont).find(obj.itemadd).removeClass('disabled');
				
				var sizeName = $('.size-selection').find('.selected a').html();
				var cName = parent.find('.basket-actions .item').attr('title');
				if(sizeName != null){
					parent.find('.basket-actions .item').html(cName+', '+sizeName);
				}else{
					parent.find('.basket-actions .item').html(cName);
				}
			}else if($(this).parent().hasClass('out-of-stock')){
				stockTooltip($(this));
			}
		});
		
		parent.find(obj.add_tobasket_button).live('click', function() {
			var $button = $(this);
			var selection = selectCont.find('.selected');
			var colours = colourCont.find('.stock-selection');
			obj.validateCustomPricing('true', $(this));
			
			if(!$(this).hasClass('disabled') && selection.length > 0 && colours.length > 1){
				obj.validate('false');
				obj.addToBasket($button, itemquntity);
			}else if(!$(this).hasClass('disabled') && selectCont.length == 0 && colourCont.length == 0 && selection.length == 0 && colours.length == 0 && parseInt($(itemquntity).html()) > 0){
				//if there is no colours and sizes
				obj.validate('false');
				obj.addToBasket($button, itemquntity);
			}else{
				if(!$(this).hasClass('disabled') && colours.length == 1){
					obj.validate('false');
					obj.addToBasket($button, itemquntity);
				}else{
					obj.validate('true');
				}
			}
		});
		
		parent.find(obj.itemadd).live('click', function() {
			$button = $(this);
			var selection = $('.size-selection').find('.selected');
			var colours = $('.size-selection').find('.stock-selection');
			obj.validateCustomPricing('true', $(this));
			
			if(!$(this).hasClass('action-disabled') && selection.length > 0 && colours.length > 1){
				obj.validate('false');
				obj.addQuantity($button);
			}else if(!$(this).hasClass('action-disabled') && selectCont.length == 0 && colourCont.length == 0 && selection.length == 0 && colours.length == 0 && parseInt($(itemquntity).html()) > 0){
				//if there is no colours and sizes
				obj.validate('false');
				obj.addQuantity($button);
			}else{
				if(!$(this).hasClass('action-disabled') && colours.length == 1){
					obj.validate('false');
					obj.addQuantity($button);
				}else{
					obj.validate('true');
				}
			}
		});
		
		parent.find(obj.subtract).live('click', function() {
			$button = $(this);
			var selection = $('.size-selection').find('.selected');
			var colours = $('.size-selection').find('.stock-selection');
			obj.validateCustomPricing('true', $(this));
			
			if(!$(this).hasClass('action-disabled') && selection.length > 0 && colours.length > 1){
				obj.validate('false');
				obj.subtractQuantity($button);
			}else if(!$(this).hasClass('action-disabled') && !$(this).hasClass('disabled') && selectCont.length == 0 && colourCont.length == 0 && selection.length == 0 && colours.length == 0 && parseInt($(itemquntity).html()) > 0){
				//if there is no colours and sizes
				obj.validate('false');
				obj.subtractQuantity($button);
			}else{
				if(!$(this).hasClass('action-disabled') && colours.length == 1){
					obj.validate('false');
					obj.subtractQuantity($button);
				}else if(!$(this).hasClass('action-disabled') && !$(this).hasClass('disabled')){
					obj.validate('true');
				}
			}
		});
	},
	
	addQuantity: function($button) {
		var obj = this;
			
		if(!$button.hasClass('processing') && !$button.hasClass('disabled')){
			$button.addClass('processing');
			var elementid = $button.attr('rel').split(',');
			var quntityvar = parseInt($button.closest(obj.countcont).find(obj.quntity).html());
			
			var custom_pricing = obj.customPricing();
			
			$.ajax({
				type: 'POST',
				url: obj.url,
				data: $.param({ calltype: 'checkquantity', colorid: elementid, quantity: (quntityvar+1), custom_pricing: custom_pricing }),
				success: function(data) {
					var json = $.parseJSON(data);
					var increase = quntityvar+1;
					
					if(json['quantity']['conf'] == 'true'){
						$button.closest(obj.countcont).find(obj.quntity).html(increase);
						$button.closest(obj.countcont).find(obj.subtract).removeClass('disabled');	
						$button.closest(obj.container).find(obj.amount).each(function(){
							var price = increase * $(this).attr("rel");
							price = price.toFixed(2);
							$(this).html(''+price);
							
							if(json['quantity']['data'] != null && json['quantity']['data']['item_total'] != null && $(this).hasClass('basket-actions-item-price')){
								$(this).html(json['quantity']['data']['item_total_formated']);
							}
						});
					}else{
						if(json != null && json['quantity']['stock'] < quntityvar && json['quantity']['stock'] != 0){
							$button.closest(obj.countcont).find(obj.quntity).html(json['quantity']['stock']);
						}
						tooltip($button);
					}
					if(json['quantity']['stock'] == quntityvar+1){
						$button.closest(obj.countcont).find(obj.itemadd).addClass('disabled');
					}
					$button.removeClass('processing');
				}
				
			});
		}
	},
		
	subtractQuantity: function($button) {
		var obj = this;
		
		if(!$button.hasClass('processing') && !$button.hasClass('disabled')){
			$button.addClass('processing');
			var elementid = $button.attr('rel').split(',');
			var quntityvar = parseInt($button.closest(obj.countcont).find(obj.quntity).html());
			
			var custom_pricing = obj.customPricing();
			
			$.ajax({
				type: 'POST',
				url: obj.url,
				data: $.param({ calltype: 'checkquantity', colorid: elementid, quantity: (quntityvar-1), custom_pricing: custom_pricing }),
				success: function(data) {
					var json = $.parseJSON(data);
					var decrease = quntityvar-1;
					
					if(decrease == 1){$button.closest(obj.countcont).find(obj.subtract).addClass('disabled');}
					
					if(json['quantity']['conf'] == 'true' && decrease != 0){
						$button.closest(obj.countcont).find(obj.quntity).html(decrease);
						$button.closest(obj.countcont).find(obj.itemadd).removeClass('disabled');
						$button.closest(obj.container).find(obj.amount).each(function(){
							var price = decrease * $(this).attr("rel");
							price = price.toFixed(2);
							$(this).html(''+price);
						});
					}else{
						if(json['quantity']['stock'] < quntityvar && json['quantity']['stock'] != 0){
							$button.closest(obj.countcont).find(obj.quntity).html(json['quantity']['stock']);
						}
					}
					$button.removeClass('processing');
				}
				
			});
		}
	},
	
	addToBasket: function($button, itemquntity){
		var obj = this;
		
		if(!$button.hasClass('disabled')){
			$button.parent().addClass('processing');
			var elementid = $button.attr('rel').split(',');
			if( $button.closest(obj.container).find(itemquntity).html() ){
				var quntity = parseInt( $button.closest(obj.container).find(itemquntity).html() );
			}else{
				var quntity = 1;
			}
			
			var custom_pricing = obj.customPricing();
			
			$.ajax({
				type: 'POST',
				url: obj.basketUrl,
				data: $.param({ colorid: elementid[0], coloursize: elementid[1], quantity: quntity, custom_pricing: custom_pricing }),
				success: function(data) {
					if( obj.redirectUrl != null ) {
						window.location = obj.redirectUrl;
						return false;
					}
				
					$('#overlay').show();
					var json = $.parseJSON(data);
					var $popup = $('.window-popup');
					$popup.hide();
					$popup.find('.continue-shopping-btn').unbind('click').click(function(){
						if(!$.browser.msie){
							$popup.stop(true,true).fadeOut();
						}else{
							$popup.hide();
						}
						$('#overlay').hide();
					});

					$button.animate({ marginTop: 0 }, { duration: 500 });
					$button.fadeIn(400);
					var sizeName = $('.size-selection').find('.selected a').html();
					
					$popup.find('.product-count').html(quntity+'x');
					$popup.find('.product-total font').html(json['add']['total']);
					
					// $popup.find('.name strong').html(json['add']['group'] + " - ");
					$popup.find('.name strong').html(json['add']['group']);
					/*if(sizeName != null){
						$popup.find('.name span').html(json['add']['name']+', '+sizeName);
					}else{
					}*/
					
					
					$popup.css('left', (($button.offset().left - Math.round($popup.width() / 2))+($button.width()/2)) + 'px').css('top', ($button.offset().top - $popup.height()) + 'px');
					if(!$.browser.msie){
						$popup.stop(true,true).fadeIn(600,function(){
							$('#overlay').unbind().bind('click',function(){
								$(this).hide();
								$popup.hide();
							});
							$button.parent().removeClass('processing');
							if(json['add']['conf'] == 'success'){
								$('.shopping-bag a span').html(json['add']['items']);
								$('.shopping-bag-cont .basket-total-amount').html(json['add']['total_no_delivery']);
							}
							
						});
					}else{
						$popup.show();
						$('#overlay').unbind().bind('click',function(){
							$(this).hide();
							$popup.hide();
						});
						$button.parent().removeClass('processing');
						if(json['add']['conf'] == 'success'){
							$('.shopping-bag a span').html(json['add']['items']);
							$('.shopping-bag-cont .basket-total-amount').html(json['add']['total_no_delivery']);
						}
					}
				
				}
				
			});
		}
	},
	
	validate: function(validated){
		var error1 = $('.size-picker-error1');
		var error2 = $('.size-picker-error2');
		
		if(validated == 'true'){
			var size = $('.size-selection');
			var addbasket = $('.basket-actions .right');
			
			var sizeOffset = $(size).position();
			var addbasketOffset = $(addbasket).position();
			if(sizeOffset != null){
				$(error1).css('left', (sizeOffset.left-(error1.width()+25)));
				$(error1).css('top', (sizeOffset.top-((error1.height()/2)-5)));
				$(error1).show();
			}
			if(addbasketOffset != null){
				$(error2).css('left', (addbasketOffset.left));
				$(error2).css('top', (addbasketOffset.top+addbasket.height()+10));
				$(error2).show();
			}
		}else{
			$(error1).hide();
			$(error2).hide();
		}
	},
	
	customPricing: function(){
		var obj = this;
		var spaceregex = /^[\s]*(.*?)[\s]*$/ig;
		
		Registry.set('/CustomPricing/', '');
		
		if(this.element.find('.custom-pricing li').length > 0){
			this.element.find('.custom-pricing li').each(function(){
				if($(this).hasClass('textfield-input') && $(this).find('input').val().length > 0 && $(this).find('input').val() != $(this).find('input').attr('title')){
					Registry.set('/CustomPricing/'+$(this).attr('value')+'/id/', $(this).attr('value'));
					Registry.set('/CustomPricing/'+$(this).attr('value')+'/value/', $(this).find('input').val());
					Registry.set('/CustomPricing/'+$(this).attr('value')+'/type/', 'textfield');
				}
				if($(this).hasClass('textarea-input') && $(this).find('textarea').val().length > 0 && $(this).find('textarea').val() != $(this).find('textarea').attr('title')){
					Registry.set('/CustomPricing/'+$(this).attr('value')+'/id/', $(this).attr('value'));
					Registry.set('/CustomPricing/'+$(this).attr('value')+'/value/', $(this).find('textarea').val());
					Registry.set('/CustomPricing/'+$(this).attr('value')+'/type/', 'textarea');
				}
				if($(this).hasClass('dropdown-list') && $(this).find('select').val().length > 0){
					var value = $(this).find('select option[value="'+$(this).find('select').val()+'"]').html();
					
					//removes spaces at the bigging and the end of the string
					value = value.replace(spaceregex, "$1");
					
					Registry.set('/CustomPricing/'+$(this).find('select').val()+'/id/', $(this).find('select').val());
					Registry.set('/CustomPricing/'+$(this).find('select').val()+'/value/', value);
					Registry.set('/CustomPricing/'+$(this).find('select').val()+'/type/', 'select');
				}
			});
		}
		
		return Registry.get('/CustomPricing/');
	},
	
	validateCustomPricing: function(validated, $button){
		var obj = this;
		var error3 = '.size-picker-error3';
		
		if(validated == 'true'){
			var custom_price = obj.element.find('.custom-pricing');
			var k = 0;
			
			custom_price.find('li').each( function(){
				var offset = $(this).position();
				if(offset != null && ($(this).find('input').hasClass('required') || $(this).find('textarea').hasClass('required') || $(this).find('select').hasClass('required'))){
					var check = 1;
					if($(this).hasClass('textfield-input') && $(this).find('input').val().length > 0 && $(this).find('input').val() != $(this).find('input').attr('title')){
						check = 0;
					}
					if($(this).hasClass('textarea-input') && $(this).find('textarea').val().length > 0 && $(this).find('textarea').val() != $(this).find('textarea').attr('title')){
						check = 0;
					}
					if($(this).hasClass('dropdown-list') && $(this).find('select').val().length > 0){
						check = 0;
					}
					
					if(check == 1){
						$(this).find(error3).css('left', (offset.left-($(this).find(error3).width()+25)));
						$(this).find(error3).css('top', (offset.top-(($(this).find(error3).height()/2)-5)));
						$(this).find(error3).show();
						k++;
					}else{
						$(this).find(error3).hide();
					}
				}
			});
			
			if(k > 0){
				$button.closest(obj.container).find(obj.add_tobasket_button).addClass('disabled');
				$button.addClass('action-disabled');
			}else{
				$button.closest(obj.container).find(obj.add_tobasket_button).removeClass('disabled');
				$button.removeClass('action-disabled');
				$(error3).hide();
			}
		}else{
			$(error3).hide();
		}
	}
	
});


	
	$.widget('ui.checkoutForm', {
		options: {
			reqclass: '',
			type: 'POST'
		},
		
		_create: function() {
			var obj = this;
			var parent = this.element;
			var reqclass = this.options.reqclass;
			
			parent.submit(function(){
				if(reqclass.length > 0){
					if(parent.hasClass(reqclass)){
						parent.find('.continue').css('visibility', 'hidden');
						return true;
					}
				}else if(reqclass.length == ''){
					parent.find('.ret-cust-btn').css('visibility', 'hidden');
					return true;
				}
				return false;
			});
		}
		
	});

function tooltip($button) {
	var $popup;
	var description;
   
	$popup = $('.helper-info');
	$popup.css('left', ($button.offset().left-9) + 'px').css('top', ($button.offset().top - $popup.height()) + 'px').fadeIn();
   
	description = $button.attr('title');
	if (!description) description = "Sorry, this product is not available for the quantity you selected.";
	$popup.find('.desc').html(description);
}

function stockTooltip($button) {
	var $popup;
	var description;
   
	$popup = $('.helper-info');
	$popup.css('left', $button.offset().left + 'px').css('top', ($button.offset().top - $popup.height()) + 'px').fadeIn();
   
	description = $button.attr('title');
	if (!description) description = "Sorry, this size is currently out of stock.";
	$popup.find('.desc').html(description);
}

$.widget('ui.popup', {
	options: {
		closebutton: '.close-button a, .overlay, #overlay, #login-overlay'
	},
	_init: function() {
		var obj = this;
		var closebutton = this.options.closebutton;
		var parent = this.element;
		var popup = parent.attr('rel');
		
		parent.click(function(){
			/*if($(this).parent().hasClass('delivery-info')){
				var seo = 'delivery-info-rates';
				$.ajax({
					type: 'POST',
					url: '/page/request',
					data: $.param({ seo: seo }),
					success: function(data) {
						//$(popup).find('.delivery-content').html(data);
					}
				});
			}*/
			
			if(popup == '.popup-pwd-retrieve'){
				$(popup).find('.valmsg').hide();
				$(popup).find('.pwd-content').show();
				$(popup).find('input[name="emailreset"]').val('');
				$(popup).find('.close-button').hide();
			}
			if(popup == '.popup-login'){
				$(popup).find('.error-msg').hide();
			}
		
			$(popup).find('form').removeClass('validated');
			$(popup).find('form .validation-msg').remove();
			$(popup).find('.content').css("left", ( $(window).width() - $(popup).find('.content').outerWidth() ) / 2 + "px");
			
			var visiblepops = $('.popup:visible').length;
			$(popup).center();
			if(visiblepops > 0){
				if(!$.browser.msie){
					$('.popup:visible').fadeOut(function(){
						$(popup).fadeIn();
					});
				}else{
					$('.popup:visible').hide();
					$(popup).show();
				}
			}else{
				if(!$.browser.msie){
					$(popup).fadeIn();
				}else{
					$(popup).show();
				}
			}
		});
		
		$(popup).find('.close-button a, .overlay, #overlay, .cancel, #login-overlay').click(function(){
			$(popup).fadeOut();
		});
		
	}
	
});

$.widget('ui.downloadpopup', {
	options: {
		closebutton: '.download-cancel .cancel'
	},
	_create: function() {
		var obj = this;
		var closebutton = this.options.closebutton;
		var parent = this.element.find('.category-scroller .image a');
		var popup = '.popup-download';
		
		$(parent).click(function(){
			var linkvar = $(this).attr('rel');
			
			$(popup).find('.content').css("left", ( $(window).width() - $(popup).find('.content').outerWidth() ) / 2 + "px");
			
			var visiblepops = $('.popup:visible').length;
			$(popup).center();
			if(visiblepops > 0){
				if(!$.browser.msie){
					$('.popup:visible').fadeOut(function(){
						$(popup).fadeIn();
					});
				}else{
					$('.popup:visible').hide();
					$(popup).show();
				}
			}else{
				$(popup).fadeIn();
			}
			
			$(popup).find('.download-image a').attr('href', linkvar);
			
		});
		
		$(popup).find('.download-image a').click(function(){
			$(popup).fadeOut();
		});
		
		$(popup).find(closebutton).click(function(){
			$(popup).fadeOut();
		});
		
	}
	
});

$.widget('ui.validation', {
	options: {
		validate: '',
		valtype: 'outline' //outline, inline
	},
	_create: function() {
		var obj = this;
		var parent = this.element;
		var items = parent.find('.validate');
		var validated = 0;
		var validate = this.options.validate;
		var valtype = this.options.valtype;
		
		items.blur(function(){
			validated = 0;
			validated = obj.validate($(this));
		});
		parent.submit(function(){
			$('.validation-msg').remove();
			validated = 0;
			items.each(function(){
				if($(this).is(':visible')){
					validated += obj.validate($(this));
				}
			});
			if(validated != 0){
				parent.removeClass('validated');
				return false;
			}else{
				parent.addClass('validated');
				return true;
			}
		});
		
	},
	
	_init: function(){
		var obj = this;
		var validate = this.options.validate;
		var items = this.element.find('.validate');
		var validated = 0;
		var valtype = this.options.valtype;
		
		if(validate == 'validate'){
			validated = 0;
			items.each(function(){
				validated += obj.validate($(this));
			});
			if(validated != 0){
				this.element.removeClass('validated');
			}else{
				this.element.addClass('validated');
			}
		}
	},
	
	validate: function(el){
		var content = el.val();
		var emailregex = /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/;
		var spaceregex = /^[\s]*(.*?)[\s]*$/ig;
		var creditregex = /^[0-9\-\ ]+$/;
		var cvvregex = /^([0-9]{3,4})$/;
		var passregex = /^([A-Za-z0-9]+)$/;
		var passlength = /^([A-Za-z0-9]{6,25})$/;
		var errors = 0;
		var error_msg = '';
		var valtype = this.options.valtype;
		
		//removes spaces at the bigging and the end of the string
		el.val(content.replace(spaceregex, "$1"));
		content = el.val();
		
		if(el.hasClass('vldemail')){
			if(el.hasClass('vldrequired') || el.val().length > 0){
				if(el.val() != el.attr('title') || el.attr('title') == ''){
					if(content.search(emailregex) == -1){
						errors+=1;
						error_msg += '<li class="entry">A valid email is required</li>';
					}
				}
			}
		}
		if(el.hasClass('vldcheckbox')){
			if(!el.is(':checked')){
				errors+=1;
				error_msg += '<li class="entry">This field is required</li>';
			}
		}
		if(el.hasClass('vldcredit')){
			if(el.hasClass('vldrequired') || el.val().length > 0){
				if(content.search(creditregex) == -1){
					errors+=1;
					error_msg += '<li class="entry">A valid credit card number is required</li>';
				}
			}
		}
		if(el.hasClass('vldcvv')){
			if(el.hasClass('vldrequired') || el.val().length > 0){
				if(content.search(cvvregex) == -1){
					errors+=1;
					error_msg += '<li class="entry">A valid CSV code is required</li>';
				}
			}
		}
		if(el.hasClass('vldpass')){
			if(el.hasClass('vldrequired') || el.val().length > 0){
				if(el.val().length < 8){
					errors+=1;
					error_msg += '<li class="entry">Minimum length 8 characters</li>';
				}
			}
		}
		if(el.hasClass('vldpasslength')){
			if(el.hasClass('vldrequired') && el.val().length > 0){
				if(content.search(passlength) == -1){
					errors+=1;
					error_msg += '<li class="entry">A minimum of 6 characters long</li>';
				}
			}
		}
		if(el.hasClass('vldrequired')){
			if(content.length == 0 || el.val() == el.attr('title')){
				errors+=1;
				error_msg += '<li class="entry">This field is required</li>';
			}
		}
		
		el.next('.validation-msg').remove();
		el.parent().css('z-index', '1');
		if(errors > 0){
			el.addClass('error');
			
			if(valtype == 'outline' || el.hasClass('outline')){
				el.parent().css('z-index', '10');
				el.after('<div class="validation-msg"><ul class="list">'+ error_msg +'</ul><div class="validation-bottom"></div></div>');
				el.next('.validation-msg').show();
				el.next('.validation-msg').mouseleave(function(){
					if(!$.browser.msie){
						$(this).fadeOut(function(){
							$(this).remove();
						});
					}else{
						$(this).remove();
					}
					el.parent().css('z-index', '1');
				});
			}
		
			return 1;
		}else{
			el.removeClass('error');
			return 0;
		}
		
	}
	
});

$.widget('ui.customeraddress', {
	options: {
		popupcont: '.new-address',
		actionedit: '.action-links .edit',
		actionnew: '.action-links .add-new-address a',
		addressupdate: '.address-list',
		addressselect: '.address-selector'
	},
	_create: function() {
		var obj = this;
		var parent = this.element;
		var actionedit = this.options.actionedit;
		var addressupdate = this.options.addressupdate;
		var popupcont = this.options.popupcont;
		var addressselect = this.options.addressselect;
		var actionnew = this.options.actionnew;
		this.button = '';
		
		/**
		 * edit Returning customer address
		 */
		this.element.find(actionedit).live('click', function() {
			obj.button = $(this);
			var button = $(this);
			var editid = $(button).attr('rel');
			
			$.ajax({
				type: 'POST',
				url: '/account/get-user-address-data?ajax',
				data: $.param({ addressid: editid }),
				success: function(data) {
					var json = $.parseJSON(data);
					json = json['data'];
					if(json != null && json['conf'] != null && json['conf'] == 'true'){
						$(popupcont).find('form input[name="first-name"]').val(json['address']['first_name']);
						$(popupcont).find('form input[name="last-name"]').val(json['address']['last_name']);
						$(popupcont).find('form input[name="address1"]').val(json['address']['address1']);
						$(popupcont).find('form input[name="address2"]').val(json['address']['address2']);
						$(popupcont).find('form input[name="city"]').val(json['address']['city']);
						$(popupcont).find('form input[name="country-state"]').val(json['address']['county']);
						$(popupcont).find('form input[name="postcode"]').val(json['address']['postcode']);
						$(popupcont).find('form input[name="phonenumber"]').val(json['address']['home_no']);
						$(popupcont).find('form select[name="country"]').val(json['address']['country']);
						
						$(popupcont).find('form input[name="newaddress"]').val('update');
						$(popupcont).find('form input[name="itemid"]').val(json['address']['id']);
						$(popupcont).find('form .continue').removeClass('continue').addClass('save');
						$(popupcont).center();
						$(popupcont).show();
					}else{
						$(this).addClass('error');
					}
				}
				
			});
			
		});
		
		$(popupcont).find('form ul .save, form ul .continue').live('click', function(){
			var formdata = $(this).closest('form').serialize();
			$(this).closest('form').validation({validate: 'validate'});
			var type = $(this).closest('form').find('input[name="newaddress"]').val();
			
			var url = '';
			if(type == 'update'){
				url = '/account/update-user-address?ajax';
			}else if(type == 'save'){
				url = '/account/save-user-address?ajax';
			}
			
			if($(this).closest('form').hasClass('validated')){
				$.ajax({
					type: 'POST',
					url: url,
					data: formdata,
					success: function(data) {
						var json = $.parseJSON(data);
						if(json['data']['conf'] != null && json['data']['conf'] == 'true'){
							json = json['data'];
							console.log(type);
							if(type == 'update'){
								$('.return-cust-add').find('.address-selector').each(function(){
									$(this).find('option[value="'+json['id']+'"]').text(json['title']);
								});
								
								if($('.billing-address .action-links .edit').attr('rel') == $('.delivery-address .action-links .edit').attr('rel')){
									$('.billing-address .address-selector').change();
									$('.delivery-address .address-selector').change();
								}else{
									obj.button.closest('.action-links').parent().find('.address-selector').change();
								}
								$(popupcont).find('.cancel').click();
							}else if(type == 'save'){
								var option = '<option value="'+json['address']['id']+'">'+json['address']['first_name']+' '+json['address']['last_name']+''+json['address']['address1']+''+json['address']['city']+'</option>';
								$('.return-cust-add').find('.address-selector').each(function(){
									$(this).append(option);
								});
								//$('.return-cust-add').closest('.regist-addr').find('.address-selector').append(option);
								obj.button.closest('.action-links').parent().find('.address-selector').val(json['address']['id']);
								obj.button.closest('.action-links').parent().find('.address-selector').change();
								
								$(popupcont).find('.cancel').click();
							}else{
								alert('fail');
							}
						}
					}
				});
			}
		});
		
		$(popupcont).find('.cancel, #overlay').click(function(){
			$(popupcont).fadeOut(function(){
				$(this).find('form').removeClass('validated');
				$(this).find('form .validation-msg').remove();
				$(this).find('form input').each(function(){
					$(this).val('');
				});
			});
		});
		
		/**
		 * Save Returning customer address
		 */
		this.element.find(actionnew).live('click', function() {
			obj.button = $(this);
			
			$(popupcont).find('form input').each(function(){
				$(this).val('');
			});
				
			$(popupcont).find('form input[name="newaddress"]').val('save');
			$(popupcont).find('form .save').removeClass('save').addClass('continue');
			$(popupcont).center();
			$(popupcont).show();
		});
		
		this.element.find(addressselect).live('change', function() {
			var selector = $(this);
			var addressid = $(this).val();
			var type = $(this).parents('.address-block').attr('title');
			
			$.ajax({
				type: 'POST',
				url: '/account/get-user-address-data?ajax',
				data: $.param({ addressid: addressid }),
				success: function(data) {
					var json = $.parseJSON(data);
					json = json['data'];
					var html = '<li id="'+addressid+'"><strong>'+json['address']['first_name']+' '+json['address']['last_name']+'</strong></li><li>'+json['address']['address1']+'</li><li>'+json['address']['address2'];
					if(json['address']['address2'].length > 0){
						html += ', ';
					}
					html += json['address']['city']+'</li><li>'+json['address']['county']+', '+json['address']['postcode']+'</li><li>'+json['address']['country']+'</li><li><strong>Phone:</strong> '+json['address']['home_no']+'</li>';
					selector.next(addressupdate).html(html);
					selector.parent().find(actionedit).attr('rel',addressid);
				}
			});
		});
		
	}
	
});

$.widget('ui.helperValue', {
	_create: function() {
		var obj = this;
		var parent = this.element;
		
		if(parent.val().length == 0){
			parent.val(parent.attr('title'));
		}
		parent.focus(function(){
			if($(this).val() == $(this).attr('title')){ $(this).val(''); }
		});
		parent.blur(function(){
			if($(this).val() == ''){ $(this).val($(this).attr('title')); }
		});
		
	}
	
});

$.widget('ui.csvtooltip', {
	_create: function() {
		var obj = this;
		var parent = this.element;
		var tooltip = this.element.attr('rel');
		
		parent.click(function(){
			var offset = $(this).offset();
			$(tooltip).css('left',offset.left+30);
			$(tooltip).css('top',offset.top-230);
			if(!$.browser.msie){
				$(tooltip).stop(true,true).fadeIn('normal',function(){
					$(this).css('opacity','1');
				});
			}else{
				$(tooltip).stop(true,true).show();
				$(this).css('opacity','1');
			}
		});
		
		$(tooltip).mouseover(function(){
			$(this).stop(true,true).show();
		});
		$(tooltip).mouseout(function(){
			if(!$.browser.msie){
				$(this).delay(800).fadeOut(1000);
			}else{
				$(this).hide();
			}
		});
		$(tooltip).find('.close').click(function(){
			$(tooltip).hide();
		});
		
	}
	
});

function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toUTCString());
}

function getCookie(c_name)
{
	if (document.cookie.length>0)
	  {
	  c_start=document.cookie.indexOf(c_name + "=");
	  if (c_start!=-1)
		{
		c_start=c_start + c_name.length+1;
		c_end=document.cookie.indexOf(";",c_start);
		if (c_end==-1) c_end=document.cookie.length;
		return unescape(document.cookie.substring(c_start,c_end));
		}
	  }
	return "";
}

$.widget('ui.wallpapers', {
	_create: function() {
		var obj = this;
		var parent = this.element;
		
		
		parent.click(function(){
			$('.customer-nav .wallpaper-cont').stop(true,true).slideToggle(function() {
				if($('#overlay').is(':hidden')){
					$('#overlay').show();
				}else{
					$('#overlay').hide();
				}
			});
			$
		});
		
		$('#overlay').click(function(){
			$('.customer-nav .wallpaper-cont').stop(true,true).fadeOut();
			$('#overlay').hide();
		});
		
		$('.customer-nav .wallpaper-list .entry a').click(function(){
			var image = 'url("'+$(this).find('img').attr('src')+'")';
			
			$('body').css('background-image',image);
			$('body').css('background-repeat','repeat');
			
			setCookie('wallpaper', image);				
		});
	}
	
});

$.widget('ui.ajaxform', {
	options: {
		reqclass: '',
		type: 'POST'
	},
	
	_create: function() {
		var obj = this;
		var parent = this.element;
		var reqclass = this.options.reqclass;
		
		parent.submit(function(){
			if(reqclass.length > 0){
				if(parent.hasClass(reqclass)){
					obj.sendout();
				}
			}else{
				obj.sendout();
			}
			return false;
		});
	},
	
	sendout: function(){
		var formdata = this.element.serialize();
		var callback = this.options.change;
		var type = this.options.type;
		var address = this.options.address;
		
		$.ajax({
			type: type,
			url: address,
			data: formdata,
			success: function(data) {
				if ($.isFunction(callback)) callback(data); 
			}
		});
	}
	
});

$.widget('ui.promohelper', {
	options: {
		firsthelper: '.promo-first-helper-popup',
		secondhelper: '.promo-second-helper-popup',
		thirdhelper: '.promo-third-helper-popup',
		overlay: '.promo-helper-overlay'
	},
	
	_create: function() {
		var obj = this;
		var firsthelper = this.options.firsthelper;
		var secondhelper = this.options.secondhelper;
		var thirdhelper = this.options.thirdhelper;
		var overlay = this.options.overlay;
		
		this.element.find('.need-some-help a').click(function() {
			var button = $(this);
			var firstwidth = obj.element.find('.promo-code-cont .promotionalcode').width();
			var secondwidth = $(secondhelper).height();
			var thirdwidth = $(thirdhelper).width();
			var thirdcontheight = obj.element.find('.mini-cart .checkout-button').height();
			
			$(overlay).fadeIn();
			$(firsthelper).css('left', (obj.element.find('.promo-code-cont .promotionalcode').offset().left+(firstwidth/2)) + 'px').css('top', (obj.element.find('.promo-code-cont .promotionalcode').offset().top - $(firsthelper).height()) + 'px').fadeIn();
			$(secondhelper).css('left', obj.element.find('.delivery-row').offset().left + 'px').css('top', (obj.element.find('.delivery-row').offset().top + (secondwidth/3)) + 'px').fadeIn();
			$(thirdhelper).css('left', (obj.element.find('.mini-cart .checkout-button').offset().left - (thirdwidth/4)) + 'px').css('top', (obj.element.find('.mini-cart .checkout-button').offset().top + (thirdcontheight/2)) + 'px').fadeIn();
		});
		
		$(overlay).click(function() {
			obj.hidehelper(firsthelper, secondhelper, thirdhelper, this);
		});
	},
	
	hidehelper: function(firsthelper, secondhelper, thirdhelper, overlay){
		$(firsthelper).hide();
		$(secondhelper).hide();
		$(thirdhelper).hide();
		$(overlay).fadeOut();
	}
	
});


$.widget('ui.promocode', {
	options: {
		submitbutton: '.promo-code-cont form .submit-promotion',
		promoForm: '.promo-code-cont form',
		promocont: '.input-code',
		promocode: '.promotionalcode'
	},
	
	_create: function() {
		var obj = this;
		var submitbutton = this.options.submitbutton;
		var promoinput = this.options.promocont;
		var promoval = this.options.promocode;
		var promoForm = this.options.promoForm;
		var url = this.options.url;
		var $subelement = $('.subtotal-update');
		var $totalelement = $('.total-update');
		var $basketitem = $('.baskettotal-update');
		
		$(promoForm).submit(function(){
			$(submitbutton).click();
			return false;
		});
		
		$(submitbutton).click(function() {
			if(!$(this).hasClass('submiting')){
				$(this).addClass('submiting');
				var clickcont = $(this);
				var promocont = $(clickcont).parents('form').find(promoinput);
				var promocode = $(clickcont).parents('form').find(promoval).val();
				var promotitle = $(clickcont).parents('form').find(promoval).attr('title');
				
				if(promocode.length > 1 && promocode != promotitle){
					$('.promo-validation-proc .promo-loader').show();
					$('.promo-validation-proc .promo-loader img').show();
					$('.promo-validation-proc .promo-valid-text').show();
					$('.promo-validation-proc .promo-conde-invalid').hide();
					$('.promo-validation-proc').show();
					$('.promo-validation-proc .overlay').show();
					$.ajax({
						type: 'POST',
						url: url,
						data: $.param({ promocode: promocode }),
						success: function(data) {
							var json = $.parseJSON(data);
							
							switch(json['promotion']['status']){
								case 'fail':
									$('.promo-validation-proc .promo-close a').show();
									$('.promo-validation-proc .promo-loader').hide();
									$('.promo-validation-proc .promo-loader img').hide();
									$('.promo-validation-proc .promo-valid-text').hide();
									$('.promo-validation-proc .promo-conde-invalid').html(json['promotion']['results']);
									$('.promo-validation-proc .promo-conde-invalid').show();
									
									if(!$(promocont).hasClass('wrong-promotion')){
										$(promocont).addClass('wrong-promotion');
									}
									$('.popup-button').popup();
									break;
								case 'success':
									$('#delivery-total .discount-row').find('.right-cell span').html(json['promotion']['discount']);
									if(json['promotion']['summary']['discount_code'].length > 1){
										$('#delivery-total .discount-row').find('.cell span').html('('+json['promotion']['summary']['discount_code']+')');
									}else{
										$('#delivery-total .discount-row').find('.cell span').html('');
									}
									obj.update(json['promotion']);
									obj.animatebackcont($subelement, $totalelement, $basketitem);
									$(clickcont).parents('form').find(promoval).val(promotitle);
									$(promocont).removeClass('wrong-promotion');
									$(promocont).parent().removeClass('wrong-promotion');
									$(promocont).parent().addClass('verified-promotion');
									$(promocont).addClass('verified-promotion');
									
									$('.promo-validation-proc .promo-loader img').fadeOut(600, function(){
										obj.closeValidation();
									});
									break;
							}
							
							$(clickcont).removeClass('submiting');
						}
					
					});
				}else{
					$(promocont).addClass('wrong-promotion');
					$(clickcont).removeClass('submiting');
				}
			}
		});
		
		$('.promo-validation-proc .promo-login .join-now, .promo-validation-proc .promo-login .register').live('click', function(){
			$('.promo-validation-proc .promo-loader').show();
			obj.closeValidation();
		});
		
		$('.promo-validation-proc .promo-close a').live('click', function(){
			$('.promo-validation-proc .promo-loader').show();
			obj.closeValidation();
		});
	},
	
	closeValidation: function(){
		$('.promo-validation-proc .overlay').hide();
		$('.promo-validation-proc').fadeOut(function(){
			$('.promo-validation-proc .promo-valid-text').html('Checking Promotion...');
		});
		$('.promo-validation-proc .promo-close a').hide();
		$('.promo-validation-proc .promo-valid-text').removeClass('promo-valid-error');
		
	},
	
	update: function(json){
		if(parseInt(json['discount']) > 0 && $('#delivery-total .discount-row').is(':hidden')){
			$('#delivery-total .discount-row').slideDown();
		}else if(parseInt(json['discount']) == 0){
			$('#delivery-total .discount-row').hide();
		}
		$('.shopping-bag a span').html(json['itemcount']);
		$('.contains-items').html(json['itemcount']);
		$('.mini-cart .small-basket-total').html(json['total']);
		$('#delivery-total .total-row span').html(json['total']);
		$('.subtotal-container .stotal span').html(json['subtotal']);
		$('#delivery-total').find('.delivery-price a#'+json['did']).html('&pound;'+json['delamount']);
		$('.deliv-summary .del-item-price strong').html('&pound;'+json['delamount']);
		$('#delivery-total .discount-row').find('.right-cell span').html(json['discount']);
		if(json['discount'] != null && json['promotion'] != null && json['discount'].length > 0){
			$('.deliv-summary .del-item-desc span').html(json['promotion']['delDesc']);
		}else{
			$('.deliv-summary .del-item-desc span').html(json['summary']['delivery']);
		}
	},
	
	animatebackcont: function($subelement, $totalelement, $basketitem){
		if(!$subelement.hasClass('background-update-false')){
			$subelement.css('backgroundColor', '').stop().animate({ 'backgroundColor': '#bde8ff' }, 1000, function() {
				$subelement.css('backgroundColor', '#bde8ff').animate({ 'backgroundColor': '#ffffff' }, 1000);
			});
		}
		if(!$totalelement.hasClass('background-update-false')){
			$totalelement.css('backgroundColor', '').stop(true).animate({ 'backgroundColor': '#bde8ff' }, 1000, function() {
				$totalelement.animate({ 'backgroundColor': '#' + 'fff' }, 1000);
			});
		}
		if(!$basketitem.hasClass('background-update-false')){
			$basketitem.css('backgroundColor', '').stop(true).animate({ 'backgroundColor': '#bde8ff' }, 1000, function() {
				$basketitem.animate({ 'backgroundColor': '#' + 'F7F7F7' }, 1000);
			});
		}
	}
	
});

$.widget('ui.feedbackSlider', {

	_create: function() {
		var obj = this;
		var parent = this.element;
		
		parent.find('.feedback-handle').click(function(){
			var button = $(this);
			if(!button.hasClass('working')){
				button.addClass('working');
				
				if(parent.css('right') == '0px'){
					parent.animate({right : '-=320'}, 1000, function(){
						button.removeClass('working');
					});
				}else{
					parent.animate({right : '+=320'}, 1000, function(){
						button.removeClass('working');
					});
				}
			}
		});
		
		parent.find('.feedback-form textarea').keydown(function(){
			$(this).removeClass('error');
			var string = $(this).val();
			if(string.length > 500){
				var newStr = string.substring(0, string.length-1);
				$(this).val(newStr);
			}
		});

		parent.find('.close-button').click(function(){
			var button = parent.find('.feedback-handle');
			if(!button.hasClass('working')){
				button.addClass('working');
				
				parent.animate({right : '-=320'}, 1000, function(){	
					$('.feedback-slider .feedback-thankyou').hide();
					$('.feedback-slider .feedback-form').show();
					button.removeClass('working');
				});
			}
		});

		parent.find('.more-feedback').click(function(){
			$('.feedback-slider .feedback-thankyou').hide();
			$('.feedback-slider .feedback-form').fadeIn();
		});

	}
	
});
	
jQuery.fn.globalcenter = function () {
	var popup = this;
	if ($.browser.msie){
		popup.css('left','0px');
		popup.css('top','0px');
	}
	
	popup.find('.content').css("margin-left", "0");
	popup.find('.content').css("margin-top", "0");
	popup.css({ position: "absolute", visibility: "hidden", display: "block" });
	popup.find('.content').css("left", ( $(window).width() - popup.find('.content').width() ) / 2 + "px");
	popup.find('.content').css("top", ( $(window).height() - popup.find('.content').height() ) / 2 + "px");
	
	popup.css({ position: "", visibility: "", display: "" });
	
    return this;
}

jQuery.fn.center = function () {
	var popup = this;
	if ($.browser.msie){
		popup.css('left','0px');
		popup.css('top','0px');
	}
	
	popup.find('.content').css("margin-left", "0");
	popup.find('.content').css("margin-top", "0");
	popup.css({ position: "absolute", visibility: "hidden", display: "block" });
	popup.find('.content').css("left", ( $(window).width() - popup.find('.content').width() ) / 2 + "px");
	popup.find('.content').css("top", ( $(window).height() - popup.find('.content').height() ) / 2 + "px");
	
	popup.css({ position: "", visibility: "", display: "" });
	
    return this;
}

	
$().ready(function() {

	//$('.press-inner .product').basketaction();
   
	$('.main-nav .shop a').live('click', function() {
		if($('.secondary-navigation').is(':hidden')){
			$('.secondary-navigation').slideDown(400);
		}else{
			$('html, body').animate({
				scrollTop: $("#header").offset().top
			}, 400);
			$('.secondary-navigation').slideUp(400);
		}
	});
	$('.product-box').productScroller();
	$('.gallery-container .thumbnails').productScroller();
	
	$('.color-select .c-select').click(function() {
		if($('.color-select .select-colour-list').is(':hidden')){
			$('#coloroverlay').show();
			$('.color-select .select-colour-list').slideDown(400);
		}else{
			$('#coloroverlay').hide();
			$('.color-select .select-colour-list').slideUp(400);
		}
	});
	$('#coloroverlay').live('click', function() {
		$(this).hide();
		$('.color-select .select-colour-list').slideUp(400);
	});
	
	$('.search-container-results ul li').live('mouseover mouseout', function(event) {
		if (event.type == 'mouseover') {
			$(this).addClass('hover');
		} else {
			$(this).removeClass('hover');
		}
	});
	$('.color-select .select-colour-list li').hover(
		function() { $(this).addClass('hover'); },
		function() { $(this).removeClass('hover'); }
	);
	$('.past-orders .tbl-po li').hover(
		function() { $(this).addClass('hover'); },
		function() { $(this).removeClass('hover'); }
	);
	
	$(".tab-container").tabs();
	
	$('.basket-container').basketPageAction();
	$('#delivery-total').deliveryupdate();
	
	$('.co-address-box .ship-to .radio').live('click', function() {
		switch($(this).val()){
			case 'billing':
				$('.co-address-box .deliv-addr').hide();
				$('.co-address-box .bill-addr .action').show();
				$('.co-address-box .deliv-addr-holding').show();
				break;
			case 'other':
				$('.co-address-box .deliv-addr').show();
				$('.co-address-box .bill-addr .action').hide();
				$('.co-address-box .deliv-addr-holding').hide();
				break;
		}
	});
	
	$('.popup-register .close-button a').click(function() {
		$button = $(this);
		$button.parents('.popup-register').find('.register-popup').fadeOut(300);
		$button.parents('.popup-register').find('#overlay').fadeOut(600, function(){
			$button.parents('.popup-register').hide();
		});
		
	});
	
	$('.payment-information .submit-secure-payment').click(function() {
		$('.payment-form').validation({validate : 'validate'});
		if($('.payment-form').hasClass('validated')){
			$('.popup-processing').globalcenter();
			$('.popup-processing').show();
		}
	});
	
	$('.account-right-side .address-list').archiveaddress({ url: '/account/address-book-archive?ajax' });
	
	$('.main-nav .search').ajaxsearch();
	$('.header .search').ajaxsearch();
	
	$('.secured .content a').click(function(){
		$.ajax({
			type: 'POST',
			url: '/page/request',
			data: 'seo=privacy-security',
			success: function(data) {
				my_window= window.open("", "mywindow1","status=1,width=900,height=650,scrollbars=yes");
				my_window.document.write('<html><head><style>a{color:#FB64B1;}</style></head><body>'+data+'</body></html>');
				my_window.document.getElementsByTagName('body')[0].style.fontFamily = 'Arial';
				my_window.document.getElementsByTagName('body')[0].style.fontSize = '12px';
			}
		});
		return false;
	});
	
	var wallpaper = getCookie('wallpaper');
	if(wallpaper.length > 0){
		$('body').css('background-image', wallpaper);
		$('body').css('background-repeat', 'repeat');
	}

	$('.customer-nav .wallpaper').wallpapers();

	var $cart = $('#mini-cart');
	if ($cart.length > 0) {
	  $cart.data('limit', $cart.position().top);

	  if (!($.browser.msie && $.browser.version < 7)) $cart.css('position', 'fixed');
	  
	  $(window).scroll(function() {
		 var $offset;
		 var $scroll;

		 $offset = $cart.data('limit');
		 $offset = 186;
		 
		 $scroll = $(window).scrollTop();
		 if ($cart.css('position') == 'fixed') {
			$cart.css('top', Math.max(15, (-$scroll + $offset)) + 'px');
		 }
		 else {
			$cart.css('margin-top', Math.max(15, ($scroll - $offset)) + 'px');
		 }
	  }).trigger('scroll');
	}
	
	var $signup_form = $('.confirmation-page .one-third');
	if ($signup_form.length > 0) {
		$signup_form.data('limit', $signup_form.offset().top);

		if (!($.browser.msie && $.browser.version < 7)) $signup_form.css('position', 'fixed');
	  
		$(window).scroll(function() {
			var $offset;
			var $scroll;

			//$offset = $signup_form.data('limit');
			$offset = 163;
		 
			$scroll = $(window).scrollTop();
			if ($signup_form.css('position') == 'fixed') {
				$signup_form.css('top', Math.max(15, (-$scroll + $offset)) + 'px');
			}else {
				$signup_form.css('margin-top', Math.max(15, ($scroll - $offset)) + 'px');
			}
		}).trigger('scroll');
	}
	
	var $payment_page = $('.payment-page .one-third');
	if ($payment_page.length > 0) {
		$payment_page.data('limit', $payment_page.offset().top);

		if (!($.browser.msie && $.browser.version < 7)) $payment_page.css('position', 'fixed');
	  
		$(window).scroll(function() {
			var $offset;
			var $scroll;

			$offset = $payment_page.data('limit');
			//$offset = 129;
		 
			$scroll = $(window).scrollTop();
			if ($payment_page.css('position') == 'fixed') {
				$payment_page.css('top', Math.max(15, (-$scroll + $offset)) + 'px');
			}else {
				$payment_page.css('margin-top', Math.max(15, ($scroll - $offset)) + 'px');
			}
		}).trigger('scroll');
	}

	$('.payment-form .csv-example').csvtooltip();
	
	$('.content .return-cust-add').customeraddress();
	$('.new-address-popup form').validation();
	$('.return-cust form').validation();
	$('.new-cust form').validation();
	$('.payment-information .payment-form').validation();
	$('.contact-form form').validation();
	$('.email-signup-style-page form').validation();
	$('.contact-form form').ajaxform({
		address:'/pages/send-email?ajax', 
		reqclass:'validated', 
		change: function(data){
			var json = $.parseJSON(data);
			if(json['conf'] == 'success'){
				$('.contact-form form input[type="text"]').val('');
				$('.contact-form form textarea').val('');
				if(!$.browser.msie){
					$('.popup-thankyou-contact').fadeIn().delay(2000).fadeOut();
					$('.popup-thankyou-contact').find('.close-button a, .overlay').click(function(){
						$('.popup-thankyou-contact').fadeOut();
					});
				}else{
					$('.popup-thankyou-contact').show().delay(2000).hide();	
					$('.popup-thankyou-contact').find('.close-button a, .overlay').click(function(){
						$('.popup-thankyou-contact').hide();
					});		
				}
			}
		}
	});
	
	$('.popup-button').popup();
	$('.free-downloads-style-page').downloadpopup();
	$('.request-pass').popup({ closebutton: '.retrieve-btn .cancel'});
	$('.email-basket').validation();
	$('.email-basket .send').click(function(){
		$('.email-basket').submit();
	});
	
	
	$('.cat-product-container').sliderwidget({ container: '.category-scroller', item: '.item', handler: '.scroll-handler', itemcount: 4 });
	// $('.prod-container .product').productAction({ countcont: '.item-count', additem: '.add', subtract: '.subtract', quntity: 'span', amount: '.item-price', url: '/products-module/manage?ajax&quantity&conf' });
	
	$('.prod-container .product .overview').productAction({ 
		countcont: '.item-count', 
		container: '.overview',
		additem: '.add', 
		subtract: '.subtract', 
		quntity: 'span', 
		amount: '.item-price', 
		basketUrl: '/basket/add-to-basket?ajax',
		url: '/products-module/manage?ajax&quantity&conf'
	});
	
	$('.helper-info').mouseover(function() {
		$(this).unbind('mouseover');
		$('.helper-popup, .helper-info').delay(500).fadeOut(function() { $(this).hide(); });
  	});
	
	$('.helper-info').mouseover(function() {
		$(this).unbind('mouseover');
		$('.helper-popup2, .helper-info').delay(500).fadeOut(function() { $(this).hide(); });
  	});

   $('.helper-popup .close, .helper-popup .cancel, .helper-info .close').click(function(event) {
		event.preventDefault();
		$('.helper-info').fadeOut(function() { $(this).hide(); });
   });
   
	$('.signup-bar .signup-form .signup-bar input').helperValue();
	$('.search .search-bar').helperValue();
	$('.basket-container .promo-code-cont .promotionalcode').helperValue();
	$('.signup-bar .signup-form form').validation({ valtype : 'inline' });
	$('.co-details-box form').validation();
	$('.co-address-box form').validation();
	$('.co-address-box form').checkoutForm({ reqclass: 'validated' });
	$('.return-cust-add form').checkoutForm({ reqclass: '' });
	$('.new-acc-form form').validation();
	$('.login-form form').validation();
	$('.left .email-signup-form').validation();
	$('.left .email-signup-form').ajaxform({ 
		address:'/email-signup/send-email?ajax', 
		reqclass:'validated', 
		change: function(data){
			var json = $.parseJSON(data);
			if(json['conf'] == 'success'){
				window.location = "/email-signup/thank-you";
			}else{
				$('.email-signup-form input[name="email"]').val('This email has already been used!');
				$('.email-signup-form input[name="email"]').addClass('error');
			}
		}
	});
	
   
	$('.login-form form').submit(function(){
		
		if($(this).hasClass('validated')){
			var formdata = $(this).serialize();
			var form = $(this);
			
			$.ajax({
				type: 'POST',
				url: '/account/user-login?ajax',
				data: formdata,
				success: function(data) {
					var json = $.parseJSON(data);
					switch(json['conf']){
						case 'success':
							window.location = "/account";
							break;
						case 'basket':
							var html = "<a title=\"My Account\" href=\"/account\">My Account</a><a href=\"/account/logout\" class=\"logout-link\">&nbsp;(Logout)</a>";
							$('.customer-nav').find('.account-section').html(html);
							$('.basket-container .promo-code').fadeOut(200, function(){
								$('.basket-container .promo-code-cont').fadeIn();
							});
							$(form).parents('.popup-login').fadeOut(400);
							break;
						case 'custom-hand-bag':
							window.location.reload();
							break;
						case 'fail':
							$('.popup-login').find('.error-msg').stop(true,true).fadeIn();
							break;
					}
				}
			
			});
		
			return false;
		}
	});
	
	$('.new-acc-form form .sign-me-up').click(function(){
		$('.new-acc-form form').submit();
	});
    $('.new-acc-form form').submit(function(){
		if($(this).hasClass('validated')){
			var formdata = $(this).serialize();
			var email = $(this).find('input[name="email"]').val();
			var pass = $(this).find('input[name="pass1"]').val();
			
			$.ajax({
				type: 'POST',
				url: '/account/user-register?ajax',
				data: formdata,
				success: function(data) {
					var json = $.parseJSON(data);
					if(json['conf'] == 'success'){
						window.location = "/account";
					}else{
						$('.new-acc-popup .popup-error-message').remove();
						$('.new-acc-form').before('<div class="popup-error-message">This email has already been used to register an account or your passwords do not match. Please check and try again.</div>');
						$('.new-acc-popup .popup-error-message').fadeIn(3000, function(){
							$(this).delay(2000).fadeOut(3000,function(){
								$(this).remove();
							});
						});
					}
				}
			
			});
		
			return false;
		}
	});
	
	$('.pwd-retrieve-popup .retrieve-submit').click(function() {
		var formcont = $(this).parents('form');
		var formdata = $(formcont).serialize();
		
		formcont.validation({validate: 'validate'});
		
		if(formcont.hasClass('validated')){
			$.ajax({
				type: 'POST',
				url: '/reset/email?ajax',
				data: formdata,
				success: function(data) {
					$('.pwd-retrieve-popup .valmsg:hidden').slideDown();
					$('.pwd-retrieve-popup .pwd-content').stop(true,true).fadeOut(function(){
						$('.pwd-retrieve-popup .close-button').fadeIn();
					});
				}
			
			});
		}
	});
	$('.pwd-retrieve-popup form').submit(function() {
		$('.pwd-retrieve-popup .retrieve-submit').click();
		return false;
	});
	
	$('.confirmation-page .register-form .create-acc-btn a').click(function() {
		var validform = $(this);
		$(validform).parents('.register-form').find('form').validation({validate : 'validate'});
		if($(validform).parents('.register-form').find('form').hasClass('validated')){
			var formdata = $(validform).parents('.register-form').find('form').serialize();
			
			$.ajax({
				type: 'POST',
				url: '/account/order-account-create?ajax',
				data: formdata,
				success: function(data) {
					var json = $.parseJSON(data);
					
					switch(json['conf']){
						case 'success':
							$('.confirmation-page .register-left').fadeOut(400, function() {
								var html = "<div class=\"created-acc-success\"><h1 class=\"account-success\" title=\"Account Created Successfully\">Account Created Successfully</h1></div><div class=\"info\">We have sent you an email confirming your account details. You can also manage  your account using the link below.</div><div class=\"register-form\"><ul><li class=\"my-acc-btn\"><a title=\"My Account\" href=\"/account\">My Account</a></li></ul></div>";
								$('.confirmation-page .register-left').html(html);
							});
							$('.confirmation-page .register-left').fadeIn(400);
							
							break;
						case 'fail1':
							alert('Sorry your Passwords don\'t match');
							break;
						case 'fail2':
							alert('Password has to be at least 6 characters long');
							break;
						case 'fail3':
							alert('Account already exists');
							break;
					}
				}
				
			});
		}
	});
	
	
	var images = $('.main-banner .image');
	var counter = 0;

	$(images).hide();
	$(images[0]).show();
	
	
	var refreshIntervalId = setInterval(function() {
		$(images[counter]).stop(true,true).fadeOut('slow');
		
		counter++;
		if (counter == images.length) {
			counter = 0;
		}
		$(images[counter]).stop(true,true).fadeIn(1000);
		
	}, 5000);
	
	images.mouseenter(function(){
		clearInterval(refreshIntervalId);
	});
	images.mouseleave(function(){
		refreshIntervalId = setInterval(function() {
			$(images[counter]).stop(true,true).fadeOut('slow');
			
			counter++;
			if (counter == images.length) {
				counter = 0;
			}
			$(images[counter]).stop(true,true).fadeIn(1000);
			
		}, 5000);
	});
	
	$('.basket-container').promocode({ submitbutton: '.promo-code-cont form .submit-promotion', promocont: '.input-code', promocode: '.promotionalcode', url: '/basket/run-code-promotion?ajax' });
	
	$('.basket-container').promohelper();
	
	$('.size-selection .size-select-action').change(function(){
		var itemdet = $(this).val();
		var maincont = $('.prod-container .basket-actions');
		var itemprice = $(maincont).find('.item-price').attr('rel');
		$(maincont).find('.add-to-basket').attr('rel', itemdet);
		$(maincont).find('.item-count .subtract').attr('rel', $(this).val());
		$(maincont).find('.item-count .subtract').addClass('disabled');
		$(maincont).find('.item-count .add').attr('rel', $(this).val());
		$(maincont).find('.item-count .add').removeClass('disabled');
		$(maincont).find('.item-count span').html('1');
		
		$(maincont).find('.item-price').html('&pound;'+itemprice);
	});
	
	$('.feedback-slider').feedbackSlider();
	$('.feedback-slider .feedback-list textarea').helperValue();
	$('.feedback-slider .feedback-form').validation({valtype: 'inline'});
	$('.feedback-slider .feedback-form').ajaxform({address:'/feedback/send', reqclass:'validated', change: function(data){
		if(data == 'success'){
			$('.feedback-slider .feedback-form').hide();
			$('.feedback-slider .feedback-form input:checkbox').removeAttr('checked');
			$('.feedback-slider .feedback-form textarea').val($('.feedback-slider .feedback-form textarea').attr('title'));
			$('.feedback-slider .feedback-thankyou').fadeIn();
		}
	}});
	
	$('.search .search-bar').attr('autocomplete', 'off');

	$('.validate-form').validation();
	
	$('.product-scroller').productScroller();
	
	$('.color-select-cont .colour-list').change(function(){
		window.location = $(this).val();
	});
	
	$('.cat-product-list .category-list .item').click(function(){
		var link = $(this).find('.image a').attr('href');
		window.location = link;
	});
	
	$('.select-color-text .sizng-chart').click(function(){
		var size = $(this).parent().find('.sizng-chart-content').attr('rel');
		var container = $('.sizing-chart-box .middle-sizing-header');
		container.html('<img src="'+size+'" />');
	});
	
	$('.sizing-chart-box .close-chart').click(function(){
		$('.sizing-chart-box .overlay').click();
	});
	
	$('.navigation ul li').live('mouseover mouseout', function(event) {
		if (event.type == 'mouseover') {
			$(this).addClass('hover');
		} else {
			$(this).removeClass('hover');
		}
	});
	
	
	
	$('.product .sizng-chart').live('click', function(){
		if($('.sizing-chart-box').find('.chart-image img').attr('src').length == 0){
			$('.sizing-chart-box').find('.chart-preloader').show();
			
			var image = $(this).next().attr('rel');
			$('.sizing-chart-box').find('.chart-image img').attr('src', image);
			$('<img />').attr('src', image).load(function(){
				$('.sizing-chart-box').find('.chart-preloader').fadeOut(400);
			});
		}
	});
	
	
	$('.sort-by').find('select[name="orderset"]').change(function(){
		window.location = $(this).val();
	});
	
	
	
	
	
});

