if(typeof logicbox == "undefined") var logicbox = {};

(function($) {
	$(function() {
		
		$(".promo-boxes .box").click(function() {
			document.location.href = $(this).find('a').attr('href');
		});
		$(".promo-boxes a").click(function(e) { e.stopImmediatePropagation(); });
		
		$(".logos").cycle();
		$(".webstore").supersleight();
	});		  
})(jQuery);

(function($) {
		  
	logicbox.prototype = $.extend(logicbox,{
			 
		//forces capitalisation on each word
		capitalize: function() {
			var text = $(this).val();
			var wordArray = text.split(" ");
			for (i=0; i<wordArray.length;i++) {
				var t = wordArray[i].substr(0,1);
				wordArray[i] = t.toUpperCase() + wordArray[i].substr(1);
			}
			$(this).val(wordArray.join(" "));
		},
		
		//new window wrapper
		newWin: function(el) {
			if (el===undefined) {
				el = this;
			}
			var w = window.open($(el).attr('href'),'_blank');
			w.focus();
			return false;
		},
		
		pageTrack: function(el,url) {
			//for dynamic/inline pageview only allow once per element
       		if (typeof pageTracker !== 'undefined' && typeof el.tracked === 'undefined') {
				if (typeof url === 'undefined') {
					url = $(el).attr('href');
				}
           		pageTracker._trackPageview(url);
				el.tracked=true;
        	}	
		},
		eventTrack: function(e,cat,str) {
			//get event type
			var type = typeof e !== 'string' ? e.type : e;			
			
			//if google analytics loaded
       	  	if (typeof pageTracker !== 'undefined') {
				pageTracker._trackEvent(cat,type,str);
          	}
		},
		validEvent: function(e) {
			key = this.keyCode(e);
			return ((typeof key === 'undefined' || key==0) || (key && key == 13)) ? true : false;
		},
		keyCode: function(e) {
			return e.charCode || e.keyCode;
		},
		arraySearch: function(needle, haystack) { //non-strict as opposed to $.inArray or .indexOf()
			var k;
			for (k in haystack) {
				if (haystack[k] == needle) {
					return k;
					break;
				}
			}	
		},
		urlPart: document.location.pathname.replace(/^\//,'').split('/'),
		validate: function(el,rules) {
			var error={};
			$(":input",el).each(
				function() {
					var attr = $(this).attr('name');
					var val  = $.trim($(this).val());
					if (typeof rules[attr] !== "undefined") {
						if (rules[attr][0]===true && val=="") {
							error[attr]='required';
						}
						else if (typeof rules[attr][1] !== "undefined" && rules[attr][1] != "" && val!="") {					//do validation on field
							var regex = new RegExp("^" + rules[attr][1] + "$","i"); 
							if (!regex.test(val)) {
								//failed
								error[attr]='invalid';
							}
						}
					}
				}
			);
			return error;
		},
		validateEmail: function(str) {
			return str.match(/[a-z0-9'\.\-_\+]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+/i);
		},
		getCookie: function( name ) {
			var start = document.cookie.indexOf( name + "=" );
			var len = start + name.length + 1;
			if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
				return null;
			}
			if ( start == -1 ) return null;
			var end = document.cookie.indexOf( ';', len );
			if ( end == -1 ) end = document.cookie.length;
			return unescape( document.cookie.substring( len, end ) );
		},
		setCookie: function( name, value, expires, path, domain, secure ) {
			var today = new Date();
			today.setTime( today.getTime() );
			if ( expires ) {
				expires = expires * 1000 * 60 * 60 * 24;
			}
			var expires_date = new Date( today.getTime() + (expires) );
			document.cookie = name+'='+escape( value ) +
				( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
				( ( path ) ? ';path=' + path : '' ) +
				( ( domain ) ? ';domain=' + domain : '' ) +
				( ( secure ) ? ';secure' : '' );
		},
		deleteCookie: function ( name, path, domain ) {
			if ( getCookie( name ) ) document.cookie = name + '=' +
					( ( path ) ? ';path=' + path : '') +
					( ( domain ) ? ';domain=' + domain : '' ) +
					';expires=Thu, 01-Jan-1970 00:00:01 GMT';
		}

	}); // /logicbox

	
	$(function() { //DOM load
			   
		$("a[rel=external]").bind('click keypress',
			function(e) {
				if (logicbox.validEvent(e)) {
					//only event track outgoing links
					if ($(this).attr('href').match(/^https?:\/\//)) {
						logicbox.eventTrack(e,'outgoing',$(this).attr('href'));
					}
					return logicbox.newWin(this);
				}
				return false;
			}
		);
		$("a[href^=mailto]").bind('click keypress',
			function(e) {
				if (logicbox.validEvent(e)) {
					logicbox.eventTrack(e,'email',$(this).attr('href'));
				}
				return true;
			}
		);
		$("a[href$=pdf]").bind('click keypress', 
			function(e){
				if (logicbox.validEvent(e)) {
					logicbox.pageTrack(this,e);
				}
			}
		);

	});
})(jQuery);
/*!
 * jQuery Cycle Lite Plugin
 * http://malsup.com/jquery/cycle/lite/
 * Copyright (c) 2008 M. Alsup
 * Version: 1.0 (06/08/2008)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.2.3 or later
 */
(function(D){var A="Lite-1.0";D.fn.cycle=function(E){return this.each(function(){E=E||{};if(this.cycleTimeout){clearTimeout(this.cycleTimeout)}this.cycleTimeout=0;this.cyclePause=0;var I=D(this);var J=E.slideExpr?D(E.slideExpr,this):I.children();var G=J.get();if(G.length<2){if(window.console&&window.console.log){window.console.log("terminating; too few slides: "+G.length)}return }var H=D.extend({},D.fn.cycle.defaults,E||{},D.metadata?I.metadata():D.meta?I.data():{});H.before=H.before?[H.before]:[];H.after=H.after?[H.after]:[];H.after.unshift(function(){H.busy=0});var F=this.className;H.width=parseInt((F.match(/w:(\d+)/)||[])[1])||H.width;H.height=parseInt((F.match(/h:(\d+)/)||[])[1])||H.height;H.timeout=parseInt((F.match(/t:(\d+)/)||[])[1])||H.timeout;if(I.css("position")=="static"){I.css("position","relative")}if(H.width){I.width(H.width)}if(H.height&&H.height!="auto"){I.height(H.height)}var K=0;J.css({position:"absolute",top:0,left:0}).hide().each(function(M){D(this).css("z-index",G.length-M)});D(G[K]).css("opacity",1).show();if(D.browser.msie){G[K].style.removeAttribute("filter")}if(H.fit&&H.width){J.width(H.width)}if(H.fit&&H.height&&H.height!="auto"){J.height(H.height)}if(H.pause){I.hover(function(){this.cyclePause=1},function(){this.cyclePause=0})}D.fn.cycle.transitions.fade(I,J,H);J.each(function(){var M=D(this);this.cycleH=(H.fit&&H.height)?H.height:M.height();this.cycleW=(H.fit&&H.width)?H.width:M.width()});J.not(":eq("+K+")").css({opacity:0});if(H.cssFirst){D(J[K]).css(H.cssFirst)}if(H.timeout){if(H.speed.constructor==String){H.speed={slow:600,fast:200}[H.speed]||400}if(!H.sync){H.speed=H.speed/2}while((H.timeout-H.speed)<250){H.timeout+=H.speed}}H.speedIn=H.speed;H.speedOut=H.speed;H.slideCount=G.length;H.currSlide=K;H.nextSlide=1;var L=J[K];if(H.before.length){H.before[0].apply(L,[L,L,H,true])}if(H.after.length>1){H.after[1].apply(L,[L,L,H,true])}if(H.click&&!H.next){H.next=H.click}if(H.next){D(H.next).bind("click",function(){return C(G,H,H.rev?-1:1)})}if(H.prev){D(H.prev).bind("click",function(){return C(G,H,H.rev?1:-1)})}if(H.timeout){this.cycleTimeout=setTimeout(function(){B(G,H,0,!H.rev)},H.timeout+(H.delay||0))}})};function B(J,E,I,K){if(E.busy){return }var H=J[0].parentNode,M=J[E.currSlide],L=J[E.nextSlide];if(H.cycleTimeout===0&&!I){return }if(I||!H.cyclePause){if(E.before.length){D.each(E.before,function(N,O){O.apply(L,[M,L,E,K])})}var F=function(){if(D.browser.msie){this.style.removeAttribute("filter")}D.each(E.after,function(N,O){O.apply(L,[M,L,E,K])})};if(E.nextSlide!=E.currSlide){E.busy=1;D.fn.cycle.custom(M,L,E,F)}var G=(E.nextSlide+1)==J.length;E.nextSlide=G?0:E.nextSlide+1;E.currSlide=G?J.length-1:E.nextSlide-1}if(E.timeout){H.cycleTimeout=setTimeout(function(){B(J,E,0,!E.rev)},E.timeout)}}function C(E,F,I){var H=E[0].parentNode,G=H.cycleTimeout;if(G){clearTimeout(G);H.cycleTimeout=0}F.nextSlide=F.currSlide+I;if(F.nextSlide<0){F.nextSlide=E.length-1}else{if(F.nextSlide>=E.length){F.nextSlide=0}}B(E,F,1,I>=0);return false}D.fn.cycle.custom=function(K,H,I,E){var J=D(K),G=D(H);G.css({opacity:0});var F=function(){G.animate({opacity:1},I.speedIn,I.easeIn,E)};J.animate({opacity:0},I.speedOut,I.easeOut,function(){J.css({display:"none"});if(!I.sync){F()}});if(I.sync){F()}};D.fn.cycle.transitions={fade:function(F,G,E){G.not(":eq(0)").css("opacity",0);E.before.push(function(){D(this).show()})}};D.fn.cycle.ver=function(){return A};D.fn.cycle.defaults={timeout:4000,speed:1000,next:null,prev:null,before:null,after:null,height:"auto",sync:1,fit:0,pause:0,delay:0,slideExpr:null}})(jQuery);

jQuery.fn.supersleight = function(settings) {
	settings = jQuery.extend({
		imgs: true,
		backgrounds: true,
		shim: '/images/x.gif',
		apply_positioning: true
	}, settings);
	
	return this.each(function(){
		if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {
			jQuery(this).find('*').andSelf().each(function(i,obj) {
				//console.log(this);
				var self = jQuery(obj);
				// background pngs
				if (settings.backgrounds && self.css('background-image').match(/\.png/i) !== null) {
					var bg = self.css('background-image');
					var src = bg.substring(5,bg.length-2);
					var mode = (self.css('background-repeat') == 'no-repeat' ? 'crop' : 'scale');
					var styles = {
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')",
						'background-image': 'url('+settings.shim+')'
					};
					self.css(styles);
				};
				// image elements
				if (settings.imgs && self.is('img[src$=png]')){
					var styles = {
						'width': self.width() + 'px',
						'height': self.height() + 'px',
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + self.attr('src') + "', sizingMethod='scale')"
					};
					self.css(styles).attr('src', settings.shim);
				};
				// apply position to 'active' elements
				if (settings.apply_positioning && self.is('a, input') && (self.css('position') === '' || self.css('position') == 'static')){
					self.css('position', 'relative');
				};
			});
		};
	});
};
