
// IE6 check
var is_ie6 = false /*@cc_on || @_jscript_version < 5.7 @*/;


// Http Global Request 
var req;
var xml;

//call this function on page load	
function getSmallBasket(url, pricePosition)
{
	url = url + "&sid=" + Math.random()
	if (!xml) xml = xmlLoader(url);
	if (xml) smallBasketRenderer(xml);
}



function smallBasketRenderer(xml)
{
	if (!xml) return;
	
	//var productSimpleItemElem = xml.getElementsByTagName("productsimpleitem");
	//var itemCount = productSimpleItemElem.length;

	var basketElem = xml.getElementsByTagName("basket")[0];
	
	if (basketElem && basketElem.getElementsByTagName("username").length != 0) {
		if (document.getElementById('miniBasketUserName'))
			document.getElementById('miniBasketUserName').innerHTML = '(' + basketElem.getElementsByTagName('username')[0].childNodes[0].nodeValue + ')';
	}

	if (!basketElem || basketElem.getElementsByTagName("price").length == 0 ||
		basketElem.getElementsByTagName("measure").length == 0 ||
		basketElem.getElementsByTagName("items").length == 0) return;
	
	if (document.getElementById('miniBasketWrapper'))
		document.getElementById('miniBasketWrapper').className = 'hasItems';
	
	var price = basketElem.getElementsByTagName("price")[0].childNodes[0].nodeValue;
	var currency = basketElem.getElementsByTagName("measure")[0].childNodes[0].nodeValue;
	var itemCount = basketElem.getElementsByTagName("items")[0].childNodes[0].nodeValue;
	
	var miniBasketItemCount = document.getElementById('miniBasketItemCount');
	miniBasketItemCount.innerHTML = '(' + itemCount + ')';

	var miniBasketMeasure = document.getElementById('miniBasketMeasure');
	miniBasketMeasure.innerHTML = currency;

	var miniBasketPrice = document.getElementById('miniBasketPrice');
	miniBasketPrice.innerHTML = price;
}

function getElement(psID) { 
   if(document.all) { 
      return document.all[psID]; 
   } else { 
      return document.getElementById(psID); 
   } 
} 

function submitAllForms(count){
	var ids = "";
	var qtys = "";
	for (var x=1;x<=count;x++) {
		var formName = "favouriteForm" + x;
		ids = ids + getElement(formName).id.value + "|";
  		qtys = qtys + getElement(formName).qty.value + "|";
	}
	document.submitAll.id.value = ids;
	document.submitAll.qty.value = qtys;
	document.submitAll.submit();

}

// shopping basket open/close behaviour in right col
// requires: prototype & scriptaculous
var protoaculous_included = (typeof Prototype != 'undefined' && typeof Scriptaculous != 'undefined');
if (protoaculous_included) {

	// we need to store the original height of the content, so that this is the minimum height when resizing due to opening of the basket
	var contentCentreInitialHeight;

	function eShopBasketInit() {
	
		var isCollapsableBasket = $('eShopBasketWrapper') && $('eShopBasketWrapper').hasClassName('eShopCollapsableBasket');
		if (isCollapsableBasket) {
			// remove "special" workaround for initial display:none styling
			if ($('eShopBasketContainer').down('.eShopMinOrderMessage')) {
				$('eShopBasketContainer').down('.eShopMinOrderMessage').hide();
				$('eShopBasketContainer').down('.eShopMinOrderMessage').removeClassName('eShopMinOrderMessageSpecial');
			}
			$('eShopBasketContainer').down('.eShopBasketItems').hide();
			$('eShopBasketContainer').down('.eShopBasketItems').removeClassName('eShopBasketItemsSpecial');
			$('eShopBasketContainer').down('.grandTotal').hide();
			$('eShopBasketContainer').down('.grandTotal').removeClassName('grandTotalSpecial');
			
			contentCentreInitialHeight = $('contentCentre').getDimensions().height;
			
			function setPageBodyHeight() {
				var newPageBodyHeight = $('eShopBasketContainer').getDimensions().height;
				var newHeight = Math.max(newPageBodyHeight, contentCentreInitialHeight) + 'px';
				if (is_ie6)
					$('pageBody').style.height = newHeight;
				else
					$('pageBody').style.minHeight = newHeight;
			}
			
			function toggleBasketHandle() {
				var handle = $('eShopBasketContainer').down('.eShopBasketHandle');
				// check if we need to open or close the basket and start appropriate effects
				if (handle.hasClassName('handleOpened')) {
					handle.removeClassName('handleOpened');
					if ($('eShopBasketContainer').down('.errorMinOrder')) {
						new Effect.BlindUp($('eShopBasketContainer').down('.eShopMinOrderMessage'), {duration: 0.5, queue: { position: 'end', scope: 'orderMsg'}});
					}
					new Effect.BlindUp($('eShopBasketContainer').down('.eShopBasketItems'), {duration: 0.5, queue: { position: 'end', scope: 'basketItems'}, afterUpdate: setPageBodyHeight});
					new Effect.BlindUp($('eShopBasketContainer').down('.grandTotal'), {duration: 0.5, queue: { position: 'end', scope: 'grandTotal'}});
				} else {
					handle.addClassName('handleOpened');
					if ($('eShopBasketContainer').down('.errorMinOrder')) {
						new Effect.BlindDown($('eShopBasketContainer').down('.eShopMinOrderMessage'), {duration: 0.5, queue: { position: 'end', scope: 'orderMsg'}});
					}
					new Effect.BlindDown($('eShopBasketContainer').down('.eShopBasketItems'), {duration: 0.5, queue: { position: 'end', scope: 'basketItems'}, afterUpdate: setPageBodyHeight});
					new Effect.BlindDown($('eShopBasketContainer').down('.grandTotal'), {duration: 0.5, queue: { position: 'end', scope: 'grandTotal'}});
				}
			}

			var basketHandle = $('eShopBasketContainer').down('.eShopBasketHandle');
			basketHandle.setStyle({cursor: 'pointer'});
			Event.observe(basketHandle, 'click', toggleBasketHandle.bindAsEventListener());
		}
	}
	
	
	function eShopTeaserInit() {
		if (!$('contentCentre')) return;
		var eShopCatProds = $('contentCentre').select('.eshopCategoryProducts');
		if (eShopCatProds) eShopCatProds.each(function(eShopCatProd) {
			if (eShopCatProd.getAttribute('id') == 'eshopHomeProductTeaser_big' || eShopCatProd.getAttribute('id') == 'eshopHomeProductTeaser_small')
				new eShopTeaser(eShopCatProd);
		});
	}
	
	eShopTeaser = Class.create({
		initialize: function(ele) {
			this.ele = ele;
			this.activeItem = 1;
			if (ele.hasClassName('autoRotate'))
				this.pe_autoRotate = new PeriodicalExecuter(this.showNext.bindAsEventListener(this), 6);
			
			var t = this;
			
			// register click event on handles
			var handles = ele.select('.categoryProductHandle div');
			if (handles) handles.each(function(handle) {
				handle.setStyle({cursor: 'pointer'});
				Event.observe(handle, 'click', t.click.bindAsEventListener(t));
			});
			
			// deactivate link behaviour on images
			/*var images = ele.select('img.eshopProduct_image');
			if (images) images.each(function(image) {
				image.setStyle({cursor: 'default'});
				Event.observe(image, 'click', function(evt) { evt.stop(); });
			});*/
			
			// remove "special" workaround for initial display:none styling
			var items = ele.select('.eshopProductForm');
        	if (items) items.each(function(item) {
	        	if (!item.hasClassName('first') && items.length > 1) item.hide();
	        	item.removeClassName('eshopProductFormSpecial');
        	});
		},
		showNext: function() {
			// used by auto rotate to show next item
			this.click(this.activeItem + 1);
		},
		click: function(evt) {
			if (!evt) return;
			
			// stop auto rotate if manually clicked
			var clickedHandle;
			if (typeof evt == 'object') {
				if (this.pe_autoRotate) this.pe_autoRotate.stop();
				clickedHandle = Event.element(evt).up();
			} else {
				clickedHandle = this.ele.down('.handle' + evt);
				if (!clickedHandle) clickedHandle = this.ele.down('.handle1');
			}
			
			// which number has been clicked?
			var handleNum;
			if (clickedHandle.className) {
				clickedHandle.className.split(" ").each(function(v){
					if (v.match(/^handle\d+$/))
						handleNum = parseInt(v.gsub(/^handle(\d+)/, '#{1}'));
				})
			}
			if (handleNum == this.activeItem) return;
			
			// start fading between involved products
			this.ele.down('.handle' + this.activeItem).removeClassName('handleActive');
	        if (handleNum) {
	        	var items = this.ele.select('.eshopProductForm');
	        	var activeItem = this.activeItem;
	        	if (items) items.each(function(item) {
	        		if (item.attributes['id'].nodeValue.match(new RegExp('productItem' + handleNum + '$')))
	        			new Effect.Appear(item, {duration: 0.7, queue: { position: 'end', scope: 'item' + handleNum}});
	        		if (item.attributes['id'].nodeValue.match(new RegExp('productItem' + activeItem + '$')))
	        			new Effect.Fade(item, {duration: 0.7, queue: { position: 'end', scope: 'item' + activeItem}});
	        	});
	        }
	        this.activeItem = handleNum;
	        this.ele.down('.handle' + this.activeItem).addClassName('handleActive');
		}
	});
	
	Event.observe(window, 'load', eShopBasketInit);
	Event.observe(window, 'load', eShopTeaserInit);
	
	
	// toggable info areas for product detail pages
	function eShopAdditionalInfoInit() {
		if (!$('contentCentre')) return;
		var additionalInfoAreas = $('contentCentre').select('.eshopProductAdditionalInfo_wrapper div.eshopProductAdditionalInfo');
		
		if (additionalInfoAreas) additionalInfoAreas.each(function(additionalInfoArea) {
			new eShopAdditionalInfoArea(additionalInfoArea);
		});
	}
	
	eShopAdditionalInfoArea = Class.create({
		initialize: function(ele) {
			this.ele = ele;
			this.handle = this.ele.down('h4');
			this.contentWrapper = this.ele.down('.additionalInfoContentWrapper');
			
			if (this.contentWrapper && this.contentWrapper.hasClassName('additionalInfoContentWrapper_closed')) {
				this.contentWrapper.hide();
				this.contentWrapper.removeClassName('additionalInfoContentWrapper_closed');
			}

			this.handle.setStyle({cursor: 'pointer'});
			Event.observe(this.handle, 'click', this.click.bindAsEventListener(this));
		},
		
		click: function(evt) {
			if (this.handle.hasClassName('additionalInfoOpened')) {
				this.handle.removeClassName('additionalInfoOpened');
				this.contentWrapper.setStyle({height: 'auto'});
				new Effect.BlindUp(this.contentWrapper, {duration: 0.5});
			} else {
				this.handle.addClassName('additionalInfoOpened');
				this.contentWrapper.setStyle({height: 'auto'});
				new Effect.BlindDown(this.contentWrapper, {duration: 0.5});
			}
		}
	});
	
	Event.observe(window, 'load', eShopAdditionalInfoInit);
	
}