jQuery().ready( function() {
	(function($){

		function DIPInit(){
			$.getJSON('/sites/all/themes/gs/_scripts/dip.home.json?'+Math.random(),
				function(data){
					document.DIPdata = data;
					document.DIPlength = data.elements.length;
					var dips = '';
					var startPos = document.currentSlide = (Math.round(Math.random() * document.DIPlength) % document.DIPlength);
					for(var i = 0; i < data.elements.length; i++){
						if(data.elements[i].type=='randomGSer') {
							var numberOfGSers = data.elements[i].gsers.length;
							var rgs = Math.round(Math.random()*(numberOfGSers-1));
							data.elements[i] = data.elements[i].gsers[rgs];
						} // if..randomGSer
						var inj = data.elements[i].html !== 0 ? data.elements[i].html : '';
						if(data.elements[i].url){
							inj += '<a style="display:none;" class="go" href="'+data.elements[i].url+'">'+data.elements[i].url+'</a>';
						}
						dips += '<div id="orderId' + i + '" class="dip-box'
						+(data.elements[i].url ? ' hand-cursor' : '')
						+(true ? (' pos' + ((startPos + 2) % document.DIPlength + 1)) : '')
						+ ' ' + data.elements[i].classSlug + '" style="background: url(\'/sites/all/themes/gs/_images/home/dips/' + data.elements[i].img + '\');">' + inj + "</div>\n";
						startPos = ((startPos + 1) % document.DIPlength);
					}
					$('#dip-strip').html(dips);
					$('#dip-left').click(PrevSlide);
					$('#dip-right').click(NextSlide);
					SetSlide(document.currentSlide);
					startSlideShow = setInterval(DIPSlideShow, data.delay);
					document.animating = false;
					$('.dip-box').click(SlideClicked);
				}
			);
		}// function..DIPInit

		function SlideClicked(e){
			var et = $(e.target);
			var cn = et.closest('div');
			if(document.animating || et.hasClass('dip-text')) return;
			e.preventDefault();
		
			var el = parseFloat(et.css('left'));
			var nid = 0;
			for(var i = 0; i < document.DIPlength; i++){
				if(cn.hasClass(document.DIPdata.elements[i]['classSlug'])){
					nid = i; //console.log(document.DIPdata.elements[i]);
					break;
				}
			}
			
			var oid = document.currentSlide == 0 ? 0 : (document.DIPlength - document.currentSlide);
			if(oid == 0 && nid == (document.DIPlength - 1)) nid = -1;
			else if(oid == (document.DIPlength - 1) && nid == 0) nid = document.DIPlength;
			
//			console.log(nid+' ? '+oid);
			
			if(nid > oid) NextSlide(e);
			else if(nid < oid) PrevSlide(e);
			else {
				var gurl = et.children('.go');
				if(gurl.length){
					window.location = gurl.text();
				}
			}
		}

		function EnableSwitch(){
			document.animating = false;
		}

		// for non-css-trans do not use pos classes
		// instead, animate left prop

		function SetSlide(ns){
			var startPos = document.currentSlide = ns;
			for(var i = 0; i < document.DIPlength; i++){
				var slide = $('#orderId' + i);
				if (Modernizr.csstransitions) {
					//iPad Transitions
					if (navigator.userAgent.match(/iPhone|iPad|iPod|Android/i)) {
						$('#dip').addClass('ios');
					} else {
						$('#dip').addClass('desktop');
					}
					var classList = slide.attr('class').split(/\s+/);
					$.each(classList, function(index, item){
						if (item.substr(0,3) == 'pos') slide.removeClass(item);
					});
					slide.addClass('pos' + (((startPos + 2) % document.DIPlength) + 1));
				} else {
					var newPos = 1024 * ((startPos + 2) % document.DIPlength);
					var newOpacity = (startPos == 0 ? 1.0 : ((startPos == (document.DIPlength-1) || startPos == 1) ? 0.5 : 0));
					if(Number(slide.css('opacity')) == 0 && newOpacity == 0){
						slide.css('left', newPos + 'px').css('opacity', newOpacity);
						slide.children('.dip-text').css('opacity', 0);
					} else {
						slide.animate({ left: newPos, opacity: newOpacity }, 1000);
						slide.children('.dip-text').animate({ opacity: (startPos == 0 ? 1.0 : 0 )});
					}
				}
				startPos = ((startPos + 1) % document.DIPlength);
			}
		}

		function PrevSlide(e){
			if(document.animating) return;
			if(e && startSlideShow){
				clearInterval(startSlideShow);
				startSlideShow = 0;
			}
			document.animating = true;
			setTimeout(EnableSwitch, 1000);
			SetSlide((document.currentSlide + 1) % document.DIPlength);
		}

		function NextSlide(e){
			if(document.animating) return;
			if(e && startSlideShow){
				clearInterval(startSlideShow);
				startSlideShow = 0;
			}
			document.animating = true;
			setTimeout(EnableSwitch, 1000);
			SetSlide((document.currentSlide - 1) >= 0 ? (document.currentSlide - 1) : (document.DIPlength - 1));
		}

		function DIPSlideShow() {
			NextSlide();
		}//function..DIPSlideShow

		DIPInit();

	})(jQuery);
}); // ready
;

