
// JavaScript Document
// Author: Andy Asberry, Ciphertek Systems, LLC
// Date: April 2010



var CTS_PROMO = {
	
	frame: null,
	image_dir: null,
	num_pics: null,
	delay: null,
	fade_length: null,
	promo_timer: null,
	index: null,
	captions: null,
	
	init: function(frame, delay, fade_length) {
	  var self = CTS_PROMO;
	  this.frame = frame;
	  this.delay = delay;
	  this.fade_length = fade_length;
	  this.num_pics = $('.promo_item').length;  
	  this.index = 0;
	  this.showPromoLinks();
	  $('.promo_caption > div').fadeTo(25, 0.85).children().fadeTo(25, 1);
	  
	  if (self.isIE6()) {
		self.fixIE6();
	  }
	  else {  
	    this.hideAllCaptions();
	    this.setZIndex();
	  }
	  this.startRotation();
	},
	
	
	
	startRotation: function() {
	  var self = CTS_PROMO;
	  if (self.promo_timer) {
		self.stopRotation();  
	  }
	  self.promo_timer = setInterval(function() { self.rotatePromo(); }, self.delay);
	  self.showCaption();
	},
	
	
	
	stopRotation: function() {
	  var self = CTS_PROMO;
	  clearInterval(self.promo_timer);
	},
	
	
	
	rotatePromo: function() {
	  var self = CTS_PROMO;
	  self.index = self.index % self.num_pics;
	  
	  
	  if (self.isIE6()) {
		$('.promo_caption > div').fadeOut('slow');
		var next = (self.index + 1) % self.num_pics;
	    $(self.frame + ' .promo_item')
		  .fadeOut(self.fade_length, function() {
			$(self.frame + ' > div.promo_caption').find('h3').html(self.captions[next].h3);
			$(self.frame + ' > div.promo_caption').find('p').html(self.captions[next].p);
		    $(this).attr({
			  src: self.captions[next].img			 
			})
			.fadeIn('fast', function() {
			  $(self.frame)
			    .css({
				  background: 'url(' + self.captions[(self.index+2)%self.num_pics].img + ') left top no-repeat' 
				});
			  $('.promo_caption > div').fadeIn('slow');
			  self.index++;
			  self.setOnPromoLink();
			});
		  });
	  }
	  else {
		self.hideCaption();
	    $(self.frame + ' div.promo_item').eq(self.index).fadeOut(self.fade_length, function() {
		   $(self.frame + ' div.promo_item').each(function(i) {
			 $(this).css('zIndex', ((self.num_pics - (i+1)) + self.index) % self.num_pics);											  
		   });
		   $(this).show( function() { self.setCaption(); });
		   self.showCaption();
		   self.setOnPromoLink();
	     });
		 self.index++;
	  }
	},
	
	
	
	showPromo: function(index) {
	  var self = CTS_PROMO;
	  self.stopRotation();
	  self.index = (index-1) % self.num_pics;
	  
	  if (self.isIE6()) {
	    $(self.frame + ' .promo_item').fadeOut(self.fade_length, function() {
		  $(self.frame)
		    .css({
			  background: 'url(' + $(this).attr('src') + ') left top no-repeat'	 
			});
		  self.index++;	
		  self.setOnPromoLink();
		  $(this).attr({
	        src: self.captions[self.index].img,
			width: self.captions[self.index].w,
			height: self.captions[self.index].h
		  });
		});
	  }
	  else {
	    $(self.frame + ' div.promo_item').eq(self.index).hide( function() {
		  self.setOnPromoLink();
		  $(self.frame + ' div.promo_item').each(function(i) {
			  $(this).css('zIndex', ((self.num_pics - (i+1)) + self.index) % self.num_pics);											  
		   });
		  $(this).show( function() { self.setCaption(); });
		  $('.promo_caption > div').show();
	    });
	    self.index++;
	  }
	  self.startRotation();
	},
	
	
	
	showPromoLinks: function() {
	  var self = CTS_PROMO;
	  
	  var links_x_start = $('#cts_promo_frame').width() - 40 - (self.num_pics*30);
	  var play_pause_x = links_x_start - 50;
	  
	  //$('<div class"promo_link_pause">Pause</div>').appendTo(this.frame + ' div.promo_links').css('left', (play_pause_x)+'px');
	  
	  for (var i = 0; i < this.num_pics; i++) {
	    $('<div class="promo_link"><a onclick="CTS_PROMO.showPromo(' + i + ');">' + (i+1) + '</a></div>')
		.appendTo(this.frame + ' div.promo_links')
		.css('left', (links_x_start+((i+1)*30))+'px');
	  }
	  
	  $('.promo_link:first a').css('backgroundImage', 'url(/js/cts_promo/images/on_icon.gif)');
	  
	  
	  $('<div class="promo_link_pause"><a>||</a></div>')
	  .appendTo(this.frame + ' div.promo_links')
	  .css('left', (play_pause_x)+'px')
	  .toggle(
		 function() {
		   $('.promo_link_pause a').css('background', 'url(/js/cts_promo/images/play_icon.gif) left top no-repeat');
		   self.stopRotation();
		   $(self.frame + ' div.promo_item').eq(self.index).stop().show();
		   $('.promo_caption > div').stop().css('left', '0px').show();
		 },
		 function() {
		   $('.promo_link_pause a').css('background', 'url(/js/cts_promo/images/pause_icon.gif) left top no-repeat');
		   self.rotatePromo();
		   self.promo_timer = setInterval(function() { self.rotatePromo(); }, self.delay);
		 }
	  )
	  .hover(
		 function() {
			$(this).css('cursor', 'pointer'); 
		 },
		 function() {
			$(this).css('cursor', 'default');
		 }
	  );
	  
	},
	
	
	
	hideCaption: function() {
	  var self = CTS_PROMO;
	  $('.promo_caption > div')
	     .animate({ left: '-475px' }, { easing: 'swing', duration: 1500}, function() {
			$(this).css('zIndex', $('.promo_item').eq(self.index).css('zIndex'));																										   
	     });
	},
	
	
	
	showCaption: function() {
	  var self = CTS_PROMO;
	  self.index = self.index % self.num_pics;
	  //alert($('.promo_div').eq(self.index).next().children('div').html());
	  $('.promo_caption > div').animate({ left: '0px' }, { easing: 'swing', duration: 1500} ).css('zIndex', '1000000');
	},
	
	
	
	hideAllCaptions: function() {
	  var self = CTS_PROMO;
	  $('.promo_item').children('div').css('left', '-475px');
	},
	
	
	
	setZIndex: function() {
	  var self = CTS_PROMO;
	  $('.promo_item').each(function(i) {
		$(this).css('zIndex', self.num_pics - (i+1));				 
	  });
	},
	
	
	
	setCaptionCoords: function() {
	  var self = CTS_PROMO;
	  $('.promo_caption').css('left', $('.promo_item > div').css('left'));
	},
	
	
	
	setCaption: function() {
	  var self = CTS_PROMO;
	  $('.promo_caption > div').html($('.promo_item').eq(self.index).children('div').html());
	},
	
	
	
	setOnPromoLink: function() {
	  var self = CTS_PROMO;
	  $('.promo_links > div.promo_link > a').css('backgroundImage', 'url(/js/cts_promo/images/off_icon.gif)');
	  $('.promo_links > div.promo_link > a').eq(self.index).css('backgroundImage', 'url(/js/cts_promo/images/on_icon.gif)');
	},
	
	
	
	isIE6: function() {
	  return ($.browser.msie && $.browser.version == '6.0');	
	},
	
	
	
	fixIE6: function() {
	  var self = CTS_PROMO;

	  $(self.frame).children().each(function(i) {
		$(this).css('position', 'absolute');									   
	  });
	  
	  
	  $('#left_nav ul li:first a')
	     .css({
		   backgroundPosition: '0 0'  
		 })
		 .hover(
		   function() {
			 $(this).css({ backgroundPosition: '0 192px' });
		   },
		   function() {
			 $(this).css({ backgroundPosition: '0 0' });   
		   }
		 );
	  
	  self.captions = new Array();
	  $(self.frame).css('overflow', 'visible');
	  $(self.frame + ' div.promo_item').each(function(i) {
			self.captions[i] = {};
			
			//alert($(this).find('h3').html());
			
			self.captions[i].h3 = $(this).find('h3').html();
			self.captions[i].p = $(this).find('p').html();
			self.captions[i].img = $(this).children('img:first').attr('src');
			
			var lastSlash = self.captions[i].img.lastIndexOf('/');
			var newSrc = self.captions[i].img.substring(0, lastSlash+1) + 'ie6' + self.captions[i].img.substring(lastSlash);
			self.captions[i].img = newSrc;
			
			self.captions[i].w = $(this).children('img:first').attr('width');
			self.captions[i].h = $(this).children('img:first').attr('height');
			$(this).remove();
	  });
	  
	  
	  // fix images
	  $(self.frame + ' div.promo_item, ' + self.frame + ' img').remove();
	  $(self.frame).css('background', 'url(' + self.captions[1].img + ') left top no-repeat');
	  var img_html = '<img src="' + self.captions[0].img + '" class="promo_item" '
		             + 'width="' + self.captions[0].w + '" height="' + self.captions[0].h + '" alt="" border="" />';
	  $(self.frame).append(img_html);
	  $('.promo_item').css('position', 'absolute');
	  
	  // fix caption
	  $(self.frame + ' .promo_caption div')
		 .css({
			  backgroundColor: '#28346C',
			  width: '410px',
			  padding: '10px 15px 15px 25px',
			  margin: '180px 0 0 0'
		 })
		 .children('h3').css({
		   margin: '0',
		   padding: '0 0 10px 0',
		   fontSize: '20px',
		   borderBottom: '1px solid #FFFFFF',
		   color: '#FFFFFF'
		 });
		 
	   $(self.frame + ' .promo_caption div')
		 .children('p').css({
		   margin: '10px 0 0 0',
		   padding: '0',
		   fontSize: '14px',
		   color: '#FFFFFF'
		 });

	   $(self.frame + ' .promo_links')
	     .css({
		   margin: '15px 0 0 0',
		   padding: '0',
		   width: '632px',
		   height: '19px',
		   position: 'absolute',
		   zIndex: '1000005'
	     });
	   
	   $(self.frame + ' .promo_links div.promo_link')
		 .css({
		   margin: '0',
		   padding: '1px 0 0 0',
		   position: 'absolute',
		   width: '24px',
		   height: '19px',
		   background: 'url(images/off_icon.gif) left top no-repeat',
		   fontFamily: 'Arial, Helvetica, sans-serif',
		   fontSize: '14px',
		   fontWeight: 'bold',
		   textAlign: 'center',
		   color: '#FFFFFF',
		   zIndex: '1000004'
		 });
	
	   $(self.frame + ' .promo_links div.promo_link_pause')
	     .css({
	       margin: '0',
	       padding: '1px 0 0 0',
	       position: 'absolute',
	       width: '24px',
	       height: '19px',
	       background: 'url(images/pause_icon.gif) left top no-repeat',
	       fontFamily: 'Arial, Helvetica, sans-serif',
	       fontSize: '14px',
	       fontWeight: 'bold',
	       textAlign: 'center',
	       color: '#FFFFFF',
	       zIndex: '10001'											
	     });
	   
	   $(self.frame + ' div.promo_links div.promo_link a')
	     .css({
		   width: '24px',
		   height: '19px',
		   display: 'block' 
		 })
		 .hover(
		   function() {
			 $(this).css({cursor: 'pointer'});   
		   },
		   function() {
			 $(this).css({cursor: 'default'});
		   }
		 );
	}
	
	
	
};
