/*
var reloader = {
	options: {
		itemSelector: '.dynamicreload'
	},

	requestIndex: 0,
	
	update: function() {
		var self = this;
		
		var elements = $(this.options.itemSelector);
		elements.addClass('loading');
		elements.css('border', '1px solid red');
		
		var dump = $('<div />');

		dump.load(
			window.location + ' ' + this.options.itemSelector,
			{
				_requestIndex: ++this.requestIndex
			},
			function() {
				elements.removeClass('loading');
				
				dump.each( function() {
					var child = $(this);
					var id = self.attr('id');
					child.html(child.html() + 'hello');
					alert(child.html());
					
					if(!id) {
						alert(id);
						alert($('body #' + id).html());
					}
					
				});
				
				dump.remove();
			}
		);
	}
};
*/


function addProductToBasket(productID, quantity, callback) {
	$.ajax( {
		type: 'POST',
		url: interfaceBaseURI + 'store/basket_add_product',
		data: {
			product_id: productID,
			quantity: quantity
		},
		dataType: 'json',

		success: function(data, textStatus, jqXHR) {
			//reloader.update();
			
			if(data.display_text) {
				$('#store-summary-info').html(data.display_text);
			}
				
			var text = 'The item has been added to your basket';
			
			if(data.location === 'wishlist') {
				text = 'The item has been added to your wishlist';
			}
				
			if(window.self != window.top) {
				window.top.showBasketPopup(text);
			} else {
				showBasketPopup(text);
			}

			if(callback) {
				callback()
			}
		},
		
		error: function(jqXHR, textStatus) {
			if(callback) {
				callback()
			}
		}
	});
}

function showBasketPopup(text) {
	var popup = $('#basket-popup');
	
	if(!popup.size()) {
		popup = $('<div />').attr('id', 'basket-popup');
		$('body').append(popup);

		$(window).bind(
			'scroll.basketpopup',
			function() {
				var storeSummary = $('#store-summary-info');
				var popupX = (storeSummary.offset().left + Math.floor(storeSummary.outerWidth() / 2)) - 170;
				var popupY = storeSummary.offset().top + storeSummary.height();
				
				var scrollTop = ($(document.documentElement).scrollTop() || $(document.documentElement.ownerDocument.body).scrollTop());
			
				if(scrollTop > popupY) {
					popupY = scrollTop;
				}
					
				popup.css( {
					left: popupX + 'px',
					top: popupY + 'px'
					});
			}
			);
	
		$(window).trigger('scroll.basketpopup');
	}
	
	popup.text(text);
	popup.stop(true, true).fadeIn('fast');
	
	var popupTimeout = popup.data('timeout');

	if(popupTimeout) {
		window.clearTimeout(popupTimeout);
	}
	
	popupTimeout = window.setTimeout(
		function() {
			popup.stop(true, true).fadeOut('fast');
		},
		2000
		);

	popup.data('timeout', popupTimeout);
}

function linkClick() {
	var element = $(this);

	if(element.hasClass('ignore'))
		return;
	
	var uri = element.attr('href');
	var isInFrame = (window.self != window.top);

	if(!uri || (uri.indexOf('#') === 0)) {
		return;
	}
	
	if(uri.match(/\/store\/(productview|pv)\/[a-z0-9]+/)) {
		var anchor = '';
		
		if(uri.match(/(#.+)$/)) {
			anchor = RegExp.$1;
			uri = uri.replace(anchor, '');
		}
		
		if(!uri.match(/[\&\?]layout=popup/)) {
			uri += (uri.indexOf('?') >= 0 ? '&' : '?') + 'layout=popup';
		}
			
		if(window.location.pathname.match(/\/store\/basket$/)) {
			uri += (uri.indexOf('?') >= 0 ? '&' : '?') + 'allow_basket_add=no';
		}

		if(anchor) {
			uri += anchor;
		}
			
		if(!isInFrame) {
			openFancybox(uri);
			return false;
		} else {
			element.attr('href', uri);
		}
	} else if(uri.match(/\/store\/basket\?addproduct=([a-z0-9\-]+)/i)) {
		var productID = RegExp.$1;
			
		var pending = parseInt(element.data('pendingBasketAdd'), 10) || 0;
		
		element.data('pendingBasketAdd', pending + 1);
		element.addClass('pending');
		
		addProductToBasket(
			productID,
			1,
			function() {
				var pending = element.data('pendingBasketAdd') - 1;
				element.data('pendingBasketAdd', pending);
				
				if(!pending) {
					element.removeClass('pending');
				}
			});
		
		return false;
	} else if(element.hasClass('open-new-window')) {
		window.open(uri);
		return false;
	} else if(isInFrame) {
		window.parent.location = uri;
		return false;
	}
}

function openFancybox($uri)
{
	var link = $('<a />').attr('href', $uri).addClass('ignore');
	link.appendTo($('body'));
	
	// Test if FancyBox plugin is loaded
	if(jQuery().fancybox) {
		link.fancybox( {
			type: 'iframe',
			width: 740,
			height: '90%',
			padding: 20,
			centerOnScroll: true,
			titleShow: false,
			overlayOpacity: 0.5,
			overlayColor: '#000000'
		});
	}
	
	link.trigger('click');
	link.remove();
}

$(document).ready( function() {
	// Test if InnerFade plugin is loaded
	$('#banner').innerfade( {
		speed: 1000,
		timeout: 8000,
		type: 'random_start',
		children: '.banner-item',
		containerheight: 150
	});

	$('#greybar .placeholder').append($('.move-greybar').removeClass('move-greybar').show());
	$('#sidebar .placeholder').append($('.move-sidebar').removeClass('move-sidebar').show());

	$('a[href]').live('click', linkClick);

	// Lazy pager
	$('#lazypager').lazyPager(
		{
		itemSelector: '#lazypager > .lazypager-item',
		loadingText: '',
		completeText: ''
		},
		function(elements) {
			if($(this).hasClass('masonry')) {
				$(this).masonry('appended', elements);
			}
			
			$('#footer').addClass('fixed');
		}
	);

	if(jQuery().dynamicReload) {
		$('.dynamicreload').dynamicReload( {
			itemSelector: '.dynamicreload'
		});
	}

	$('.line-items.masonry').masonry( {
		singleMode: true,
		itemSelector: '.line-item'
	});

	// Product sheet image zoom
	$('.product-image-sheet a').jqzoom( {
		xOffset: 20,
		yOffset: -5,
		zoomWidth: 600,
		zoomHeight: 290,
		position: 'top',
		title: false
	});

	// Scroll to first element that should be visible
	var scrollElement = $('.scroll-here, .form-notice, .form-input-notice, .form-error, .form-input-error').filter(':first');
	
	if(scrollElement.size()) {
		//alert(scrollElement.position().top);
		$.scrollTo(scrollElement.position().top);
	}
	
	// Auto popup
	var autoPopup = $('#auto-popup');
	
	if(autoPopup.size()) {
		openFancybox(autoPopup.attr('href'))
		autoPopup.remove();
	}
});
		
(function() {
	// Check if we are in a popup
	var isInFrame = (window.self != window.top);

	/*
	if(window.location.pathname.match(/\/store\/(productview|pv)\/([a-z0-9]+)/i) && !isInFrame) {
		window.location = baseURI + 'store/productsearch?showproduct=' + escape(RegExp.$2);
	}
	*/
}());
