if(!VM_PreSales) {var VM_PreSales = {};}
if(!VM_PreSales.dynCarousel) {VM_PreSales.dynCarousel = {};}

VM_PreSales.dynCarousel.nextPromo = 0;
VM_PreSales.dynCarousel.promoCount = 0;
VM_PreSales.dynCarousel.showArrows = 0;
VM_PreSales.dynCarousel.timeout = null;


// Function to change the carousel to a different (dynamic) style using JQuery calls.
VM_PreSales.dynCarousel.replaceCarousel = function(style) {
	if((style!=undefined)&&(!((style=='none')||(style=='')))) {
		if(style.match(/thumbnail/)) {
			$('.campaign').addClass('dyn-campaign');
			$('.campaign-display').addClass('dyn-campaign-display');
			
			if(style.match(/no-arrows/)) {
				$('.campaign-controller').addClass('dyn-campaign-controller');
			} else {
				$('.campaign-controller').addClass('dyn-campaign-controller').before('<div class="dyn-div-l"></div>').after('<div class="dyn-div-r dyn-div-r-selected"></div>');
				VM_PreSales.dynCarousel.showArrows = 0;
			}
			
			var cLinks = $('.dyn-campaign-controller li a').get();
			for(var cLink=0; cLink < cLinks.length; cLink++) {
				$('.dyn-campaign-controller li a:eq(' + cLink + ')').prepend('<span class="dynImgC"><img src="' + $('.dyn-campaign-display li img:eq(' + cLink + ')').attr("src") + '" alt="" height="41" width="96"/></span>').wrapInner('<span class="dynTxt"></span>');
			}
		}
	}
}

// Activate the carousel - make it automatically update by setting a timeout and mouse events on the controls.
VM_PreSales.dynCarousel.activateCarousel = function() {
	VM_PreSales.dynCarousel.promoCount = $('.campaign-controller li a').length;
	
	var cLinks = $('.campaign-controller li').get();
	for(var cLink=0; cLink < cLinks.length; cLink++) {
		$('.campaign-controller li:eq(' + cLink + ')').attr('id','carousel-control-' + cLink).mouseenter(function() {VM_PreSales.dynCarousel.mouseEntered(this);}).mouseleave(function() {VM_PreSales.dynCarousel.mouseExited(this);});
	}

	if(VM_PreSales.dynCarousel.showArrows) {
		$('.dyn-div-l').mousedown(function(){VM_PreSales.dynCarousel.nextPromo = ((VM_PreSales.dynCarousel.nextPromo + VM_PreSales.dynCarousel.promoCount -2)%VM_PreSales.dynCarousel.promoCount);VM_PreSales.dynCarousel.updateSelection(1);});
		$('.dyn-div-r').mousedown(function(){VM_PreSales.dynCarousel.updateSelection(1);});
	}

	VM_PreSales.dynCarousel.updateSelection(1);
}

// Function to handle updating when the mouse enters one of the thumbnail controls.
VM_PreSales.dynCarousel.mouseEntered = function(ctrl) {
	if(VM_PreSales.dynCarousel.timeout != undefined) {
		clearTimeout(VM_PreSales.dynCarousel.timeout);
	}

	VM_PreSales.dynCarousel.nextPromo = parseInt($(ctrl).attr('id').match(/\d+$/));
	
	VM_PreSales.dynCarousel.updateSelection(0);
}

// Function to handle updating when the mouse enters one of the thumbnail controls.
VM_PreSales.dynCarousel.mouseExited = function(ctrl) {
	VM_PreSales.dynCarousel.updateSelection(1);
}

VM_PreSales.dynCarousel.updateSelection = function(cyclePromos) {
	// Switch to the nextPromo
	// If there is a timeout 

	$('.campaign-display li:eq(' + VM_PreSales.dynCarousel.nextPromo + ')').addClass('selected');
	$('.campaign-controller li:eq(' + VM_PreSales.dynCarousel.nextPromo + ')').addClass('selected');

	var cLinks = $('.campaign-controller li').get();
	for(var cLink=0; cLink<cLinks.length; cLink++) {
		if(cLink!=VM_PreSales.dynCarousel.nextPromo) {
			$('.campaign-display li:eq(' + cLink + ')').removeClass('selected');
			$('.campaign-controller li:eq(' + cLink + ')').removeClass('selected');	
		}
	}
	
	/* Change which arrow is highlighted if there are any. */
	if(VM_PreSales.dynCarousel.showArrows) {
		switch(VM_PreSales.dynCarousel.nextPromo) {
		case 0:
			$('.dyn-div-r').addClass('dyn-div-r-selected');
			$('.dyn-div-l').removeClass('dyn-div-l-selected');
			break;
		case 1:
			$('.dyn-div-l').addClass('dyn-div-l-selected');
			break;
		case (cLinks.length - 2):
			$('.dyn-div-r').addClass('dyn-div-r-selected');
			break;
		case (cLinks.length - 1):
			$('.dyn-div-r').removeClass('dyn-div-r-selected');
			break;
		}
	}
	
	if(cyclePromos) {
		VM_PreSales.dynCarousel.nextPromo = (VM_PreSales.dynCarousel.nextPromo + 1) % VM_PreSales.dynCarousel.promoCount;
		
		if(VM_PreSales.dynCarousel.timeout != undefined) {
			clearTimeout(VM_PreSales.dynCarousel.timeout);
		}
		
		VM_PreSales.dynCarousel.timeout = setTimeout("VM_PreSales.dynCarousel.updateSelection(1);", 3000);
	}
}
