// equal heights
(function($) {
        $.fn.equalHeight = function() {
                var minimum = arguments[0] || 0;
                this.each(function() {
                        if($(this).height() > minimum) {
                                minimum = $(this).height();
                        }
                });
                
                $(this).css("min-height",minimum+'px');
                if($.browser.msie){
                        $(this).height(minimum).css('overflow','hidden');
                }
        }
})(jQuery);





/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright © 2008 George McGinley Smith
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});',62,74,'||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce'.split('|'),0,{}));


/**
 * sfTestimonial
 *
 * @version: 1.1
 * @author SimpleFlame http://www.simpleflame.com/
 *
 * Settings
 *  nextClass   - optional class for the next link
 *  item        - selector matching single testimonial
 *  nextLabel   - text of the next link
 *  duration    - autorotate interval
 *  autorotate  - autorotate on/off switch
 *  activeClass - which testimonial should be displayed as the first active one
 */
(function($){var sfTestimonial=function(el,options){var defaults={nextClass:null,prevClass:null,item:'div.item',nextLabel:'Next',prevLabel:'Prev',duration:5000,autorotate:true,activeClass:'active'};this.options=$.extend(defaults,options);this.wrapper=$(el);this.items=this.wrapper.find(this.options.item);this.current=this.items.index('.'+this.options.activeClass);if(this.current<0){this.current=0;} this.items.hide().eq(this.current).show();this.buildNavigation();if(this.options.autorotate){this.autorotate();}};sfTestimonial.prototype.buildNavigation=function(){var buildNavItem=$.proxy(function(label,offset,className){var el=$('<a>',{'href':'#','text':label,click:$.proxy(function(e){e.preventDefault();this.cycle(offset);},this)});if(className){el.addClass(className);} return $('<li />').append(el);},this);var next=buildNavItem(this.options.nextLabel,1,this.options.nextClass),prev=buildNavItem(this.options.prevLabel,-1,this.options.prevClass);var ul=$('<ul class="nav" />').append(next,prev);this.wrapper.append(ul);};sfTestimonial.prototype.cycle=function(){var offset=arguments[0]||1;this.items.stop().eq(this.current).hide();this.current=this.current+offset;if(this.current===this.items.length){this.current=0;} else if(this.current===-1){this.current=this.items.length-1;} this.items.stop().eq(this.current).fadeIn();if(this.options.autorotate){this.autorotate();}};sfTestimonial.prototype.autorotate=function(){window.clearTimeout(this.timeout);this.timeout=window.setTimeout($.proxy(function(){this.cycle();},this),this.options.duration);};$.fn.sfTestimonial=function(){var options=arguments[0]||{};return this.each(function(){return new sfTestimonial(this,options);});};})(jQuery);

/**
 * sfSlider
 *
 * @version: 1.6.0
 * @author SimpleFlame http://www.simpleflame.com/
 *
 * Required settings:
 *  display   - provide number of items displayed at once
 *
 * Other settings:
 *  time       - transition time
 *  easing     - easing for the transition
 *  width      - width of the scrolled area (by default visible area + right margin on the last visible item)
 *  previous   - previous link text
 *  next       - next link text
 *  wrap       - wrap container selector
 *  slider     - items container selector
 *  items      - items selector
 *  paging     - set it to true if you want to display paging numbers
 *  auto       - set to true to enable autosliding
 *  autoTime   - duration between auto sliding
 *  transition - transition effect to be used - slide (default) or fade
 *  wrapSlides - should first slide be displayed after the last slide
 *  hoverPause - boolean, default false
 *  vertical   - false (is slider up and down)
 *  height     - used instead of "width" when using a vertical slider 
 */ 

(function($) {
	$.fn.sfSlider = function(options){
		var defaults = {
			width     : 0,
			display   : 6,
			
			time      : 500,
			easing    : 'swing',
			
			previous  : 'Previous',
			next      : 'Next',
			wrap      : 'div.wrap',
			slider    : 'ul.items',
			items     : 'ul.items li',
			paging    : false,
			auto      : false,
			autoTime  :	3000,	
			transition : 'slide',
			wrapSlides : false,
			hoverPause : false,
			vertical  : false,
			height    : 0
		};
		
		var settings = $.extend({}, defaults, options);
		
		return this.each(function(){
			var 
				move, $pagingTriggers,
				$root = $(this),
				$wrap = $root.find(settings.wrap),
				$slider = $root.find(settings.slider),
				$items = $root.find(settings.items),
				all = $items.size(),
				pages = Math.ceil(all/settings.display),
				i;
				
			
			$items.filter(':last').addClass('last');
			$items.filter(':first').addClass('first');
			
			// check is there enough items for paging
			if($items.size() <= settings.display) {
				return false;
			}
			
			// try to estimate visible area width if not set
			var width = settings.width;
			if(settings.width === 0) {
				width = $wrap.width() + parseInt($items.css('margin-right'),10);
			}
			
			var height = settings.height;
			if (height === 0) {
				height = $wrap.height() + parseInt($items.css('margin-bottom'), 10);
			}
			// defaults
			var current = 0;
			
			// insert paging links					
			
			var $previousTrigger = $('<a href="#previous">'+settings.previous+'</a>').click(function(e){
				e.preventDefault();
				move(current - 1);
			});
			
			if (settings.wrapSlides === false) {
				$previousTrigger.addClass('off');
			}
			
			var $nextTrigger = $('<a href="#next">'+settings.next+'</a>').click(function(e){
				e.preventDefault();
				move(current + 1);
			});
			var $controls = $('<ul class="index"><li class="prev"/><li class="next"/></ul>');
			
			$controls.find('.prev').append($previousTrigger);
			$controls.find('.next').append($nextTrigger);
			
			$root.append($controls);			
			
			if (settings.paging === true) {
				var 
					$paging = $('<ul class="paging"></ul>');

				for (i = 0; i < pages; i++) {
					$paging.append('<li><a href="#">'+(i+1)+'</a></li>');
				}
				
				$pagingTriggers = $paging.find('a');
				$pagingTriggers.eq(0).addClass('active');
				$pagingTriggers.click(function(e){
					e.preventDefault();					
					move(parseInt($(this).text(), 10) - 1);
				});
				$root.append($paging);
			}
			
			var timeout = null;

			var restartTimer = function(){
				timeout = window.setTimeout(function(){
					move(current + 1);
				}, settings.autoTime + settings.time);
			};
			
			if (settings.auto === true) {			
				restartTimer();
			}
			
			//hide all but the first element
			if (settings.transition === 'fade') {
				$items.filter(':gt(' + (settings.display - 1) + ')').hide();
			}
			
			move = function(position){		
				var i;
				
				if(position === current) {
					return false;
				}						
				
				if (settings.wrapSlides === false && (position < 0 || position >= pages)) {
					return false;
				}
				else if (settings.wrapSlides === true && position < 0) {
					position = pages - 1;
				}
				else if (settings.wrapSlides === true && position >= pages) {
					position = 0;
				}
				
				
				current = position;
				//disable navigation if first/last item and slider should not wrap
				if (settings.wrapSlides === false) {
					$previousTrigger.toggleClass('off', current === 0);
					$nextTrigger.toggleClass('off', current + 1 === pages);				
				}
			
				if (settings.paging === true) {
					$pagingTriggers.removeClass('active');
					$pagingTriggers.eq(current).addClass('active');
				}
				
				if (settings.transition === 'slide') {					
					if (settings.vertical) {
						var offset = - position * height;
						$slider.stop().animate({'marginTop': offset + 'px'}, settings.time, settings.easing);	
					}
					else {
						var offset = - position * width;
						$slider.stop().animate({'marginLeft': offset + 'px'}, settings.time, settings.easing);	
					}					
				}
				else if (settings.transition === 'fade') {
					$items.filter(':visible').fadeOut(function(){
						$(this).hide();
						
						var limit = (position + 1) * settings.display;
						for (i = position * settings.display; i < limit; i++) {
							$items.eq(i).fadeIn();	
						}											
					});
				}
				
				if (settings.auto === true) {
					window.clearTimeout(timeout);
					restartTimer();
				}
			};		
					
			if (settings.hoverPause === true) {
				$root.hover(function(){
					window.clearTimeout(timeout);
				},function(){
					restartTimer();
				});
			}				
		});
	};
}(jQuery));

// http://bit.ly/ishiv | WTFPL License
window.innerShiv=function(){function h(c,e,b){return/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i.test(b)?c:e+"></"+b+">"}var c,e=document,j,g="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video".split(" ");return function(d,i){if(!c&&(c=e.createElement("div"),c.innerHTML="<nav></nav>",j=c.childNodes.length!==1)){for(var b=e.createDocumentFragment(),f=g.length;f--;)b.createElement(g[f]);b.appendChild(c)}d=d.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/(<([\w:]+)[^>]*?)\/>/g,h);c.innerHTML=(b=d.match(/^<(tbody|tr|td|col|colgroup|thead|tfoot)/i))?"<table>"+d+"</table>":d;b=b?c.getElementsByTagName(b[1])[0].parentNode:c;if(i===!1)return b.childNodes;for(var f=e.createDocumentFragment(),k=b.childNodes.length;k--;)f.appendChild(b.firstChild);return f}}();

/*!
 * CSS Browser Selector v0.4.0 (Nov 02, 2010)
 * http://rafael.adm.br/css_browser_selector
 */
function css_browser_selector(u){var ua=u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1},g='gecko',w='webkit',s='safari',o='opera',m='mobile',h=document.documentElement,b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3.6')?g+' ff3 ff3_6':is('firefox/3')?g+' ff3':is('gecko/')?g:is('opera')?o+(/version\/(\d+)/.test(ua)?' '+o+RegExp.$1:(/opera(\s|\/)(\d+)/.test(ua)?' '+o+RegExp.$2:'')):is('konqueror')?'konqueror':is('blackberry')?m+' blackberry':is('android')?m+' android':is('chrome')?w+' chrome':is('iron')?w+' iron':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?m+' j2me':is('iphone')?m+' iphone':is('ipod')?m+' ipod':is('ipad')?m+' ipad':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win'+(is('windows nt 6.0')?' vista':''):is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);

/*!
 * (v) Compact labels plugin (v20110124)
 * Takes one option: labelOpacity [default: true] set to false to disable label opacity change on empty input focus
 */
(function($){$.fn.compactize=function(options){var defaults={labelOpacity:true};options=$.extend(defaults,options);return this.each(function(){var label=$(this),input=$('#'+label.attr('for'));input.focus(function(){if(options.labelOpacity){if(input.val()===''){label.css('opacity','0.5');}}else{label.hide();}});input.keydown(function(){label.hide();});input.blur(function(){if(input.val()===''){label.show();if(options.labelOpacity){label.css('opacity',1);}}});window.setTimeout(function(){if(input.val()!==''){label.hide();}},50);});};})(jQuery);

/*!
 * (v) hrefID jQuery extention
 * returns a valid #hash string from link href attribute in Internet Explorer
 */
(function($){$.fn.extend({hrefId:function(){return $(this).attr('href').substr($(this).attr('href').indexOf('#'));}});})(jQuery);

/*!
 * Scripts
 *
 */
jQuery(function(jQuery) {
 
	var Engine = {
		utils : {
			links : function(){
				jQuery('a[rel*="external"]').click(function(e){
					e.preventDefault();
					window.open(jQuery(this).attr('href'));
				});
			},
			mails : function(){
				jQuery('a[href^="mailto:"]').each(function(){
					var mail = jQuery(this).attr('href').replace('mailto:','');
					var replaced = mail.replace('/at/','@');
					jQuery(this).attr('href','mailto:'+replaced);
					if(jQuery(this).text() === mail) {
						jQuery(this).text(replaced);
					}
				});
			},
			labels : function(){
				jQuery('form.search-a label, .newsletter-a label').compactize();
			},
			navSelectedState : function(nav){
				// pass in the selector to get to the root ul on the nav
				jQuery(nav + " li").each(function(){
					if (jQuery(this).find("a").attr('href') === window.location.pathname)
					{
						jQuery(this).addClass('selected');	
					}	
				});
			}
		},
		ui : {
			fancyBoxVideo : function(){
				
					jQuery(".fancyBoxVideo").click(function() {
						jQuery.fancybox({
							'padding'		: 0,
							'autoScale'		: false,
							'transitionIn'	: 'none',
							'transitionOut'	: 'none',
							'title'			: this.title,
							'width'			: 640,
							'height'		: 385,
							'href'			: this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
							'type'			: 'swf',
							'swf'			: {
								'wmode'				: 'transparent',
								'allowfullscreen'	: 'true'
							}
						});
						return false;
					});
			
			}, // fancyboxvideo
			
			fancyBox : function(){
				if(jQuery("a.fancyBox").size() === 0){return;}
				jQuery("a.fancyBox").fancybox({
					'transitionIn'	: 'elastic',
					'transitionOut'	: 'elastic'
				});
			}, // fancyBox
			
			equalize : function(){
				if(jQuery(".prodLarge").length > 0){ return; }
				
				jQuery('ul.productList li').equalHeight();
				jQuery('ul.catalogueList li').equalHeight();

             },
			
			featured : function(){
				jQuery('#featured-a').each(function(){
					
					var items = jQuery(this).find('div.items article');
					if (items.length < 2)  {
						return;
					}
					
					var 
						wrap = jQuery(this).find('div.slider'),
						slider = wrap.find('div.items'),
						pointer = jQuery('<span class="pointer"/>'),
						pagination = jQuery('<div class="pagination"><ul/></div>'),
						nextprev = jQuery('<div class="np"><ul/></div>'),
						brands = jQuery(this).find('.brands a'),
						current = 0,
						offset = 940;
						
						
					function move(index) {
						current = index;
						slider.stop().animate({'left' : - ( index * offset ) }, 1000, 'easeOutExpo');
						
						brands.removeClass('active').eq(current).addClass('active');
						pagination.find('a').removeClass('active').eq(current).addClass('active');
						
						pointer.stop().animate({ 'left' : index * 235 + 112 }, 1000, 'easeOutExpo');
					}

					//next previous buttons
					var prev = jQuery('<a/>',{
						'href' : '#',
						'text' : 'Previous',
						'click' : function(e){
							e.preventDefault();							
							var pos = current - 1;
							if (pos < 0) {
								pos = items.length - 1;
							}							
							move(pos);
						}
					});

					nextprev.find('ul').append(jQuery('<li class="prev"/>').append(prev));
						
					var next = jQuery('<a/>',{
						'href' : '#',
						'text' : 'Next',
						'click' : function(e){
							e.preventDefault();							
							var pos = current + 1;
							if (pos >= items.length) {
								pos = 0;
							}							
							move(pos);
						}
					});
					
					nextprev.find('ul').append(jQuery('<li class="next"/>').append(next));
					
					jQuery(this).append(nextprev);
					
					
					//pagination	
					items.each(function(index){
						var trigger = jQuery('<a />',{
							'href' : '#',
							'text' : (index + 1),
							'click' : function(e){
								e.preventDefault();
								move(index);
							}
						});
						
						pagination.find('ul').append(jQuery('<li/>').append(trigger));
					});
						
					wrap.after(pagination);
					
					//brands
					jQuery(this).find('.brands').append(pointer);
					
					brands.each(function(index){
						jQuery(this).data('index',index);
					}).click(function(e){
						e.preventDefault();
						move(jQuery(this).data('index'));
					});
					
					
					//init
					move(0);
				});			
			},
			testimonials : function(){
				jQuery('.testimonials-a').sfTestimonial({
					'nextClass' : 'next',
					'prevClass' : 'prev',
					'item' : 'article'
				});
			},
			faq : function(){
				jQuery('.faq-a li > a').click(function(e){
					e.preventDefault();
					jQuery(this).next('div.answer').toggle();
				});
			},
			productPage : function(){
				
				jQuery("ul.productfeaturelist").addClass("items");
				
				jQuery('section.featured-a').sfSlider({
					paging : false,
					auto : false,
					width : 765,
					display : 3
				});
				
				jQuery('div.images').sfSlider({
					wrap : 'div.thumbs',
					paging : false,
					auto : false,
					height : 372,
					display : 4,
					vertical : true
				});				
				
				var preview = jQuery('div.images div.large');
				jQuery('div.images div.thumbs a').each(function(){ //preload
					var img = new Image();
					img.src = this.href;					
				}).click(function(e){
					e.preventDefault();
					preview.empty().append(jQuery('<img />',{
						src : this.href,
						alt : this.title
					}));
				});
				
				jQuery('div.tabs-a').each(function(){
					var 
						items = jQuery(this).find('article'),
						triggers = jQuery(this).find('nav a');
					
					triggers.click(function(e){
						e.preventDefault();
						triggers.removeClass('active');
						jQuery(this).addClass('active');
						
						items.hide();
						jQuery(jQuery(this).hrefId()).show();
					}).eq(0).triggerHandler('click');
				});
			}
		},
		fixes : {
			ie : function() {
				if (!jQuery.browser.msie){
					return;
				}

				//under IE9
				if(parseInt(jQuery.browser.version,10) < 9){
					
					//:after
					jQuery('#featured-a .slider .items article .details a, .video-a a, .cta-a p, .wrap-a, #nav ul li.selected, nav.blog-nav ul.a li a, .listing-categories li a, .comments article, section.tweets-a article, li.productLarge .images .thumbs .items li a').append('<span class="after"/>');
					
					//before
					jQuery('.address-a h3, nav.sidenav-a ul li.selected, nav.blog-nav h2, .figures-a a figure, section.tweets-a h2, li.productLarge .images .thumbs .items li a').prepend('<span class="before"/>');
				}
			},
			select : function(){
				if(!jQuery.browser.msie){      
					return;
				}              
				
				jQuery('span.select select').each(function() {
					var jQueryselected = jQuery(this).find('option:selected');
					if(jQueryselected.size() === 0) {
									jQueryselected = jQuery(this).find('option:eq(0)');			
								}
					jQuery(this).before(jQuery('<small/>',{ text : jQueryselected.text() }));
				}).change(function() {
					jQuery(this).prev('small').text(jQuery(this).find('option:selected').text());
				});
			}
		},
		
		tweaks : {
			
			cartSummary : function() {
				
				if (jQuery('#catCartSummary .cartSummaryItem').html() != 'Shopping cart is empty.') {
						
						var summary = jQuery('#catCartSummary .cartSummaryItem').text().split(" ");
					
						var total = summary[0];
					
						jQuery('span.cartTotal').html(total);
					}else{
						jQuery('span.cartTotal').html("0");
					}
					
				},	// cart
				
				ccvTip : function(){
							if(jQuery(".qtip").length > 0){
								jQuery('.qtip').qtip({
									content: 'The CCV is a 3 or 4 digit code embossed or imprinted on the signature panel on the reverse side of Visa, MasterCard and Discover cards and on the front of American Express cards.',
									show: 'mouseover',
									hide: 'mouseout',
									style: { 
										  name: 'light' // Inherit from preset style
									   },
									position: {
										  corner: {
											 target: 'topRight',
											 tooltip: 'bottomLeft'
										  }
									   }
								});
							}
					
						}, // ccvTip
						
						checkout : function(){
								// -----------------------------------------------------
							// This will copy over the shipping address value to the 
							// billing address.  Make sure the checkbox Id is "SameAsShipping"
							//
							// * Update - changed to check length and clear fields on unchecked
							// -----------------------------------------------------	
							jQuery("#f-shipping-same").bind("change", function(e){
								
								var n = jQuery("#f-shipping-same:checked").length
									if(n == 0){
										
										jQuery("#BillingAddress").val('');
										jQuery("#BillingAddress2").val('');
										jQuery("#BillingCity").val('');
										jQuery("#BillingState").val('');
										jQuery("#BillingZip").val('');
										jQuery("#BillingPhone").val('');
									}else{
										
										
										jQuery("#BillingAddress").val(jQuery("#ShippingAddress").val());
										jQuery("#BillingAddress2").val(jQuery("#ShippingAddress2").val());
										jQuery("#BillingCity").val(jQuery("#ShippingCity").val());
										jQuery("#BillingState").val(jQuery("#ShippingState").val());
										jQuery("#BillingZip").val(jQuery("#ShippingZip").val());
										jQuery("#BillingPhone").val(jQuery("#ShippingPhone").val());
									}
							
							});
							
							// paypal
							jQuery("#PaymentMethodType_5").click(function(){
								jQuery(".hide-cc").hide();
							});
							
							jQuery("#PaymentMethodType_1").click(function(){
								jQuery(".hide-cc").show();
							});
								 
							
							// if zero
							if (jQuery('input#Amount').val() === '0.00') {
								jQuery('#PaymentMethodType_9').attr('checked','checked');
								   jQuery('#credit-card-information').css('display','none');   
								   // alert(jQuery('input#Amount').val());   
								   }else{
									 //console.log('nope not zero');
								}
							   
								   
							// show amount in span from amount form field
							jQuery("span.amountSpan").text(jQuery("input#Amount").val());  
					
						}, // checkout
						
						tweets : function(){
						  if (jQuery('#tweets').size() === 0) { return;}
					   
							 jQuery('#tweets').twit('adobebc', {
							   limit: 3,
							   icon: false
							 });
							
						}, // tweets
						
						hideProdsCats : function(){
							// hide no prods if empty on cat view
							if(jQuery("li.productItemNotFound").text() == "This catalog has no products."){
								 jQuery("div.prodList").hide();
							}
						   
							// hide no prods if empty on cat view
							if(jQuery("li.catalogueItemNotFound").text() == "This catalog has no sub-catalogs."){
								 jQuery("div.catList").hide();
							}
						},
						
						catalogs : function(){
							// manipulate catalogs for big links
							if(jQuery(".catItem").size() === 0){ return; }
							jQuery(".catItem").each(function(){
								var link = jQuery(this).find("span.name a").attr("href");
								
								jQuery(this).wrap("<a href="+link+">");
							
							});
						},
						
						products : function(){
							// manipulate product lists for big links
							if(jQuery(".prodItem").size() === 0){ return; }
							jQuery(".prodItem").each(function(){
								var link = jQuery(this).find("span.name a").attr("href");
								
								jQuery(this).wrap("<a href="+link+">");
							
							});
						}, // products
						
						breadCrumbs : function(){
						
							// ecom breadcrumbs
							if(jQuery(".catcrumbs").length > 0){
						
								jQuery("div.catcrumbs a").each(function(){
										
										var url = jQuery(this).attr("href");
										var text = jQuery(this).text();
										
										jQuery("nav.breadcrumbs-a").append("<a href='"+url+"'>"+text+"</a> <span class='cat-crumb-pipe sep'>/</span> ");
									});
								
								jQuery(".cat-crumb-pipe:last").hide();
							
							}
						
						},// breadCrumbs
						
						cart : function(){
							if(jQuery(".cartProductImage img").size() === 0){return;}
							// for image size in cart
							//jQuery(".cartProductImage img").attr("width","110px");	
							// add style to dropwdown
							jQuery(".shippingCountryDiv select, div.shippingDiv select, div.shippingStateDiv select").wrap("<span class='select'>");
							
							// sniff for change and apply style to dropdowns
							// ajax will pull the rug
							jQuery("#shippingCountry, #ShippingOptions, #shippingState").live('change', function(e){    							jQuery(".shippingCountryDiv select, div.shippingDiv select, div.shippingStateDiv select").wrap("<span class='select'>");
								
								jQuery(".cartProductImage img").attr("width","110px");	
							});
							
						},
						
						logIn : function(){
							if(jQuery('#notice-slider').size() === 0){return;}
							
							// handles log in error messaging 
							 if (window.location.search === '?status=failed'){
								 jQuery('#notice-slider').addClass('alarm');
								 jQuery('#notice-slider').text('In order to gain access to your account you must first log in..');
								 jQuery('#notice-slider').slideDown('slow')
								 .animate({"opacity": 0}, "normal")
								 .animate({"opacity": 1}, "normal")
							}
							if (window.location.search === '?status=401'){
								 jQuery('#notice-slider').addClass('caution');
								 jQuery('#notice-slider').text('In order to gain access to your account you must first log in.');
								 jQuery('#notice-slider').slideDown('slow')
								 .animate({"opacity": 0}, "normal")
								 .animate({"opacity": 1}, "normal")
							}	
						},// logIn
						
						checkOutBtn : function(){
							var cartTotal =  jQuery("span.cartTotal").text();

							if(cartTotal > 0){
								jQuery("a.view-cart").show();
							}
								
						} // checkOutBtn
						
						
				
						
		} // tweaks 
	};

	Engine.utils.links();
	Engine.utils.mails();
	Engine.utils.labels();	
	Engine.utils.navSelectedState('nav ul');
	Engine.ui.fancyBox();
	Engine.ui.fancyBoxVideo();
	Engine.ui.equalize();
	Engine.ui.faq();
	Engine.ui.productPage();
	Engine.ui.testimonials();
	Engine.ui.featured();
	Engine.fixes.ie();	
	Engine.fixes.select();	
	
	Engine.tweaks.cartSummary();
	
	Engine.tweaks.ccvTip();
	Engine.tweaks.checkout();
	Engine.tweaks.tweets();
	Engine.tweaks.hideProdsCats();
	Engine.tweaks.catalogs();
	Engine.tweaks.products();
	Engine.tweaks.breadCrumbs();
	Engine.tweaks.cart();
	Engine.tweaks.logIn();
	Engine.tweaks.checkOutBtn();
	
});
