// global vars for featured product browser
var featureWidth;
var pageWidth;
var featuredPage = 1;
var maxPages;
var selectedProduct;

var maxHeight = 188;
var heightAdj = 30;

function recalculateFeaturePages() {
	featureWidth = $('featured-links-container').getElement('.short-image').getWidth() + parseFloat($('featured-links-container').getElement('.short-image').getStyle('margin-right').replace('px',''));
	pageWidth = Math.floor($('featured-links-container').getElement('.wrapper').getWidth() / featureWidth) * featureWidth;
	maxPages = Math.ceil(featureWidth * $('featured-links-container').getElements('.short-image').length / pageWidth);
}

function makeFeaturedTips() {
	var featuredLinks = $$('#featured-links .short-image a');
	featuredLinks.each(function(el) {
		var dual = el.title.split('::');
		if (dual.length>1) {
			el.title = dual[0].trim();
			el.rel = dual[1].trim();
		} else {
			el.rel = ' ';
		}
	});
	var featuredTips = new Tips(featuredLinks, {
		fixed:true,
		showDelay:0,
		orientation:'bottom',
		className:'featuredtips',
		offsets: {'x':0, 'y': 54}
	});
}
function hijackFeaturedLinks() {
	$$('#featured div.short-image').each(function(el) {
		var loadingSpan = new Element('span', {'class':'spinner'}).inject(el);
		var elId = el.id.replace(/[^\d]/g,'');
		// console.log(elId);
		var loadFeatured = new Request({url:'/inc/util.php?show=single&id='+elId,
			onSuccess: function(res) {
				$('featured-item').set('html', res);
				$(selectedProduct).removeClass('loading');
				parseCartLinks();
			},
			onFailure: function() {
				$('featured-item').set('text', 'The request failed.');
			}
		});
		el.addEvent('dblclick', function(e) {
			e.stop();
			window.location = this.getElement('a');
		});
		el.addEvent('click', function(e) {
			e.stop();
			if (!this.hasClass('on')) {
				selectedProduct = el.id;
				hiliteProduct();
				el.addClass('loading');
				loadFeatured.send()
			} else {
				window.location = this.getElement('a');
			}
		});
		// console.log(el.getElement('a'));
	});
}

function hiliteProduct() {
	$$('#featured div.short-image').each(function(ck, i) {
		if (ck.id != selectedProduct) {
			ck.removeClass('on');
		} else {
			ck.addClass('on');
		}
	});
}

window.addEvent('domready', function() {

	// ajaxify newsletter form
	$$('#newsletter-form').addEvent('submit', function(e) {
		e.stop();
		if ($('newsletter-email').value=='your email') {
			slideAlert('Please enter your email.','error');
		} else if (!isEmail($('newsletter-email').value)) {
			slideAlert('"' + $('newsletter-email').value+'" is not a valid email.','error');
		} else {
			// simple Request caused 80020101 error in IE, go figure
			var req = new Request.HTML({
				url: '/inc/cm_proxy.php',
				onSuccess: function(resTree,resArr,resHTML) {
					slideAlert(resHTML,'nocart');
					$('newsletter-email').value="your email";
				},
				onFailure: function() {
					slideAlert('fail!','nocart');
				}
			}).post($('newsletter-form').toQueryString() + '&action=' + $('newsletter-form').action);
		}
	});

	if ($('newsletter-email')) {
		blankOnFocus('newsletter-email', 'your email');
	}

	// is homepage? (homepage.js is now used on /about page too, for newsletter form -n)
	if ($('homepage')) {

		recalculateFeaturePages();

		// highlight first item in New Arrivals browser
		firstProduct = $('featured-links').getElement('.short-image');
		selectedProduct = firstProduct.id;
		hiliteProduct();
		hijackFeaturedLinks();
		makeFeaturedTips();

		var linksFx = new Fx.Tween('featured-links', {duration: 'short'});
		var featuredNext = new Element('a',{'href':'#','class':'move-right'}).inject($('featured-links-container')).addEvent('click', function(e) {
			e.stop();
			if (!this.hasClass('off')) {
				featuredPage += 1;
				checkFeaturedLinks();
			}
		});
		var featuredPrev = new Element('a',{'href':'#','class':'move-left off'}).inject($('featured-links-container')).addEvent('click', function(e) {
			e.stop();
			if (!this.hasClass('off')) {
				featuredPage -= 1;
				checkFeaturedLinks();
			}
		});
		function checkFeaturedLinks() {
			linksFx.start('margin-left', (-pageWidth * (featuredPage-1)));
			if (featuredPage==maxPages) { featuredNext.addClass('off'); } else { featuredNext.removeClass('off'); }
			if (featuredPage==1) { featuredPrev.addClass('off'); } else { featuredPrev.removeClass('off'); }
		}


		resizeNewsCols();
		window.addEvent('resize',function(e){
			resizeNewsCols();
			recalculateFeaturePages();
		});
	}
});
window.addEvent('load',function(){
	// truncate news items
	$$('#homepage-news .news').each(function(l) {
		var rrr = l.getElement('.rrrap');
		rrr.set('morph', {duration: '200'});
		rrr.store('return-height', rrr.getHeight() > maxHeight+heightAdj ? maxHeight : rrr.getHeight());

		if (rrr.getHeight() > maxHeight+heightAdj) {
			rrr.tween('height', rrr.retrieve('return-height'));
			rrr.addEvent('mouseleave', function(e) {
				$$('#homepage-news .news .rrrap').each(function(el) {
					el.morph({height: el.retrieve('return-height') }).getParent().tween('opacity',1);
					if (miniButt = el.getNext('a.mini-button')) { miniButt.removeClass('on').set('text', 'more'); }
				});
				rrr.removeClass('on');
			});
			butt = new Element('a',{'href':'#','class':'mini-button','html':'more'}).inject(l).addEvent('click', function(e) {
				e.stop();
				var nw = (this.hasClass('on')) ? rrr.retrieve('return-height') : rrr.getElement('.pad').getHeight();
				var nt = (this.hasClass('on')) ? 'more' : 'less';
				this.toggleClass('on');
				this.getPrevious('.rrrap').addClass('on');
				// console.log(this, this.getPrevious('.rrrap'));
				this.set('html',nt);
				rrr.morph({height: rrr.getElement('.pad').getHeight()+30,opacity: 1});
				$$('#homepage-news .news .rrrap').each(function(el) {
					if (el!=rrr) el.morph({height: el.retrieve('return-height') }).getParent().tween('opacity',.3);
				});
			});
		}
	});
});
function resizeNewsCols() {
	h = $('homepage-news').getWidth();
	$$('#homepage-news .spacer').destroy();
	var colCheck = (h<570) ? 2 : 3;
	$$('.news-cat').each(function(newsCat) {
		newsCat.getElements('.news').each(function(el, i) {
			if (colCheck==2) {
				el.addClass('twocol');
			} else {
				el.removeClass('twocol');
			}
			if (en = el.getNext()) {
				if((i+1) % colCheck == 0) {
					var sp = new Element('div',{'class':'spacer'}).inject(el,'after');
				}
			}
		});
	});
}

