(function(jq){
	jq.fn.moods = function()
	{
		this.each(function(){

			var t1, t2, images, texts;
			var ie = jq.browser.msie();

			function animateImage()
			{
				clearTimeout(t1);
				if (images.max > 1) {
					var now  = images.now;
					var next = now<images.max ? now+1 : 0;
	
					jq(images.elements[now]).fadeOut(images.time);
					jq(images.elements[next]).fadeIn(images.time);
	
					images.now = next;
	
					t1 = window.setTimeout(animateImage, images.delay+images.time);
				}
			}

			function animateText()
			{
				clearTimeout(t2);
				if (!ie) {
					jq(texts.elements[texts.now]).css({'left':'15px', 'display':'block', 'opacity':0});
					jq(texts.elements[texts.now]).animate({'left':'55px', 'opacity':1}, texts.fadeTime, 'linear');
					jq(texts.elements[texts.now]).animate({'left':'155px'}, (texts.time), 'linear');
					jq(texts.elements[texts.now]).animate({'left':'195px', 'opacity':0}, texts.fadeTime, 'linear', onCompleteText);
				} else {
					jq(texts.elements[texts.now]).css({'left':'-800px', 'display':'block'});
					jq(texts.elements[texts.now]).animate({'left':'35px'}, texts.fadeTime);
					jq(texts.elements[texts.now]).animate({'left':'175px'}, (texts.time), 'linear');
					jq(texts.elements[texts.now]).animate({'left':'1500px'}, texts.fadeTime, 'swing', onCompleteText);
				}
			}

			function onCompleteText() {
				//alert(texts);
				jq(texts.elements[texts.now]).css('display', 'none');
				texts.now = texts.now<texts.max ? texts.now+1 : 0;
				//jq(texts.elements[texts.now]).css('display', 'block');
				t2        = window.setTimeout(animateText, texts.delay);
			}

			function clickedMe() {
				var link = jq(texts.elements[images.now]).find('a').attr('href');
				if (link != undefined) {
					document.location.href=link;
				}
			}
			
			images = {
				delay: 9000,
				time:  2000,
				elements: jq(this).find('div.images img'),
				now: 0,
				max: jq(this).find('div.images img').length-1
			}

			texts    = {
				start: 500,
				delay: 2500,
				time:  4500,
				fadeTime: 2000,
				elements: jq(this).find('div.text div'),
				now: 0,
				max: jq(this).find('div.text div').length-1,
				fade:'in'
			}
			if (ie) {
				texts.fadeTime = 1500;
				texts.time = 5500;
			}

			jq(this).click(clickedMe);

			//texts.elements.hide(0);
			t1 = window.setTimeout(animateImage, images.delay);
			t2 = window.setTimeout(animateText, texts.start);
		})
			
	}
})(jQuery);
