//This simple jQuery plugin is for showing timelined content.
(function() {

	jQuery.fn.timemachine = function(settings) {

		var cContainer = this;     //The jquery objects that contain our items.
		var cImages = jQuery('img:not(:first)',this);  //The jquery collection of inner-images of container.
		var cFirstImage = jQuery('img:first',this); //First inner image.
		if (cFirstImage.length==0) {return false;}
		var cTotalImagesCount = cImages.length+1;
		var tmp_number = 0;
//		alert(cTotalImagesCount);

		// define defaults and override with options, if available
		// by extending the default settings, we don't modify the argument
		var settings = jQuery.extend({
				command: "init",
				speed: 2500,
				images: {},
				header: "h3",
				content: "img",
				menu: "ul",
				menu_item: "li",
				to: 1,
				active: jQuery("li.isactive",cContainer).attr("number"),
				cContainer: cContainer
			}, settings);
		if (settings.command == "init"){
			jQuery(".radix_menu",this).remove();
			var new_menu = document.createElement(settings.menu);
			new_mi = document.createElement(settings.menu_item);
			newtext = document.createTextNode("Play");
			new_mi.appendChild(newtext);
			new_menu.appendChild(new_mi);
			jQuery(new_mi).click(function(){
					settings.cContainer.timemachine();
					settings.cContainer.timemachine({command:"start"});
				});
			cFirstImage.css({clear:"left",display:"block"});
			cFirstImage.add(cImages).each(function(){
				new_mi = document.createElement(settings.menu_item);
				newtext = document.createTextNode(++tmp_number);
				new_mi.appendChild(newtext);
				new_mi.setAttribute("number", tmp_number);
				if (tmp_number==1){
					jQuery(new_mi).addClass("isactive");
				}
				jQuery(new_mi).click(function(){
							jQuery(settings.cContainer).timemachine({command:"scroll",to:jQuery(this).attr("number")});
						});
				new_menu.appendChild(new_mi);
				this.setAttribute("number",tmp_number);
			});
			//jQuery(cContainer).append(new_menu);
			jQuery(new_menu).insertBefore(cFirstImage);
			$(new_menu).addClass("radix_menu");
			cImages.css({
				position:"absolute",
				left:cFirstImage.offset().left,
				top:cFirstImage.offset().top,
				opacity:"0"
			});
		} else if (settings.command == "start"){
			jQuery("li.isactive",settings.cContainer).removeClass("isactive");
			animateimages(cFirstImage,settings);
		} else if (settings.command == "scroll"){
//			alert("sc"+settings.to);
			scrolltoimage(settings);
		};

	};

	function scrolltoimage(settings){
		jQuery("li.isactive",settings.cContainer).removeClass("isactive");
		jQuery("li[@number="+settings.to+"]",settings.cContainer).addClass("isactive");
		if (settings.to<settings.active){
			jQuery("img:gt("+(settings.to-1)+"):lt("+(settings.active-settings.to-1)+")",settings.cContainer).css({opacity:"0"});
			jQuery("img[@number="+settings.to+"]",settings.cContainer).css({opacity:1});
			jQuery("img[@number="+settings.active+"]",settings.cContainer).animate({opacity:0},settings.speed);
		} else if(settings.to>settings.active){
			jQuery("img[@number="+settings.to+"]",settings.cContainer).animate({opacity:1},settings.speed);
		} else {
		};
	}

	function animateimages(firstimage,settings){
		jQuery("li[@number="+jQuery(firstimage).attr("number")+"]",settings.cContainer).addClass("isactive");
		jQuery(firstimage).animate({opacity:1}, settings.speed, function(){
						if (jQuery(this).next("img").get().length>0){
							jQuery("li[@number="+jQuery(firstimage).attr("number")+"]",settings.cContainer).removeClass("isactive");
							animateimages(jQuery(this).next("img"),settings);
						};
				});
	}
})(jQuery);
