tuiCarousels = function () {

    var instances = [];    



    var init = function () {

    	var n = instances.length;

		if(!n) return;

		for(i=0; i<n; i++){

			

			var args = instances[i]; // id, type, visible, btnNext, btnPrev, btnGo, start, visible, speed, auto

			var c = {};

			c.id = '#' + args.id;

			if(args.btnNext && args.btnPrev){

				c.btnNext = '#' + args.btnNext;

				c.btnPrev = '#' + args.btnPrev; 

			}

			if(args.btnGo){

				c.btnGo = args.btnGo;

			}

			if(args.auto){

				c.auto = args.auto;

			}

			

			// hard coded params

			c.start = 0;

			c.speed = 600;

			// added by adam to show carousel only after the pieces have loaded
			document.getElementById("carousel_nav").style.display = "block";	
			document.getElementById("banner1").style.display = "block";
			document.getElementById("banner2").style.display = "block";
			document.getElementById("banner3").style.display = "block";
			document.getElementById("banner4").style.display = "block";
			document.getElementById("banner5").style.display = "block";
			document.getElementById("carousel_home1").style.display = "block";
			

			// type-specific values

			switch(args.type){

				

				case "box_onecol":

					c.visible = 1;

					c.afterEnd = function(a){					

						

						// find index of 1st visible item

						var id = a[0].getElementsByTagName('DIV')[0].id;			

						var n = parseInt(id.substring(id.length-1));

						

						// find carousel outer div wrapper

						var d = a[0].parentNode;

						while(d.className.indexOf('carousel_wrap') < 0 && d.nodeName != 'BODY'){

							d = d.parentNode;

						}						

	

						var el = "div#" + d.id;

						// update buttons						

						jQuery(el + " .nav li.active").removeClass("active");

						jQuery(el + " .nav li.btn" + n).addClass("active");
					}

					break;

				

				case "single_col":

					c.visible = 1;

					c.afterEnd = function(a){

						

						// find index of 1st visible item

						var id = a[0].getElementsByTagName('DIV')[0].id;		

						var n = parseInt(id.substring(id.length-1));					

						

						// find carousel outer div wrapper

						var d = a[0].parentNode;

						while(d.className.indexOf('carousel_wrap') < 0 && d.nodeName != 'BODY'){

							d = d.parentNode;						

						}

	

						var el = "div#" + d.id;

						

						// update buttons						

						jQuery(el + " .nav li.active").removeClass("active");

						jQuery(el + " .nav li.btn" + n).addClass("active");



					}

					break;				

				

				case "twocol_short":

					

					c.visible = 3;

									

					c.beforeStart = function(a){						

						// find carousel outer div wrapper

						var d = a[0].parentNode;

						while(d.className.indexOf('carousel_wrap') < 0 && d.nodeName != 'BODY'){

							d = d.parentNode;													

						}						

						var el = "div#" + d.id;							

						jQuery(el + " div.active").removeClass("active");						

					}

					

					c.afterEnd = function(a){

						

						// find index of 1st visible item

						var id = a[0].getElementsByTagName('DIV')[0].id;			

						var n = parseInt(id.substring(id.length-1));											

						

						// find carousel outer div wrapper

						var d = a[0].parentNode;

						while(d.className.indexOf('carousel_wrap') < 0 && d.nodeName != 'BODY'){

							d = d.parentNode;													

						}		

						

						var el = "div#" + d.id;				

						var max = jQuery(el + " .nav li.button_short1").length;

						

						// update buttons

						jQuery(el + " .nav li.active").removeClass("active");

						jQuery(el + " .nav li.btn" + n).addClass("active");

						

						// update description

						var index = n+1;

						if(index > max) index = 1;

						jQuery(".descriptor.active").removeClass("active");

						jQuery(".descriptor" + index).addClass("active");

						

						// update item highlight						

						jQuery(el + " div.item" + index).addClass("active");				

						

					}				

					break;

				

				default:

					c.visible = 1;

					break;

			}

			

			// init carousel

			jQuery(c.id).jCarouselLite(c);

		}

		

    };



	var addCarousel = function(args){

		instances.push(args);

	};



    return {

        // set up which functions should be public

        init: init, addCarousel: addCarousel

    };

}();