var MMSlider = Class.create();

var nextPic;

var lastTimeout;

var navLinks;

var timeout = 10000;

MMSlider.prototype = {
	currentPic: 1,
	initialize: function (container) {
		if($(container)) {
			this.setHandlers($(container));
		}
	},
	setHandlers: function (container) {
		navLinks = container.getElementsBySelector('a[href="#"]');
		navLinks[0].observe('click', function(event) { 
		   event.stop();
		   MMSlider.prototype.previousItem(this);
		});
		navLinks[1].observe('click', function(event) { 
		   event.stop();
		   MMSlider.prototype.nextItem(this);
		});
		if(navLinks[1].title == 'timeout')
		{
			var elementId = navLinks[1].identify();
			lastTimeout = setTimeout("MMSlider.prototype.nextItem($$('#" + elementId + "')[0])",	timeout);
		}
	},
	nextItem: function (linkElement) {
		if(linkElement.title == 'timeout')
		{
			var elementId = linkElement.identify();
			clearTimeout(lastTimeout);
			lastTimeout = setTimeout("MMSlider.prototype.nextItem($$('#" + elementId + "')[0])",	timeout);	
		}
		var currentElement = this.getCurrentElement(linkElement);
		if(currentElement.tagName == 'DIV')
		{
			if(currentElement)
			{
				var nextElement = currentElement.next();
				if(nextElement)
				{
					new Effect.Morph(currentElement, {
						style: 'left:-' + currentElement.getStyle("width"),
						duration: 1
					});
					
					new Effect.Morph(nextElement, {
						style: 'left:0px',
						duration: 1
					});	
					nextElement.setStyle({
						left: currentElement.getStyle("width")
					});
				}
				else
				{
					nextElement = currentElement.ancestors()[0].childElements()[0];
					nextElement.setStyle({
						left: '-' + currentElement.getStyle("width")
					});					
					new Effect.Morph(currentElement, {
						style: 'left:' + currentElement.getStyle("width"),
						duration: 1
					});
					
					new Effect.Morph(nextElement, {
						style: 'left:0px',
						duration: 1
					});	
				}
			
			}
		}
		if(currentElement.tagName == 'UL')
		{
			if(currentElement)
			{
				if (currentElement.getStyle("left") == '30px') {
					var nextElement = currentElement.next();
					if(nextElement)
					{
						new Effect.Morph(currentElement, {
							style: 'left:-' + (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 30) + "px",
							duration: 1
						});
						
						new Effect.Morph(nextElement, {
							style: 'left:30px',
							duration: 1
						});	
						nextElement.setStyle({
							left: currentElement.getStyle("width")
						});
					}
					else
					{
						nextElement = currentElement.ancestors()[0].childElements()[0];
						nextElement.setStyle({
							left: '-' + currentElement.getStyle("width")
						});					
						new Effect.Morph(currentElement, {
							style: 'left:' + (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 79) + "px",
							duration: 1
						});
						
						new Effect.Morph(nextElement, {
							style: 'left:30px',
							duration: 1
						});	
					}					
				}
				else
				{
					var nextElement = currentElement.next();
					if(nextElement)
					{
						new Effect.Morph(currentElement, {
							style: 'left:-' + (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 20) + "px",
							duration: 1
						});
						
						new Effect.Morph(nextElement, {
							style: 'left:7px',
							duration: 1
						});	
						nextElement.setStyle({
							left: currentElement.getStyle("width")
						});
					}
					else
					{
						nextElement = currentElement.ancestors()[0].childElements()[0];
						nextElement.setStyle({
							left: '-' + currentElement.getStyle("width")
						});					
						new Effect.Morph(currentElement, {
							style: 'left:' + (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 79) + "px",
							duration: 1
						});
						
						new Effect.Morph(nextElement, {
							style: 'left:7px',
							duration: 1
						});	
					}						
				}
			}			
		}
	},
	previousItem: function (linkElement) {
		if(linkElement.title == 'timeout')
		{		
			var elementId = linkElement.identify();
			clearTimeout(lastTimeout);
			lastTimeout = setTimeout("MMSlider.prototype.nextItem($$('#" + elementId + "')[0])",	timeout);
		}
		var currentElement = this.getCurrentElement(linkElement);
		if(currentElement.tagName == 'DIV')
		{
			if(currentElement)
			{
				var previousElement = currentElement.previous();
				if(previousElement)
				{
					previousElement.setStyle({
						left:  "-" + currentElement.getStyle("width")
					});
		
					new Effect.Morph(currentElement, {
						style: 'left:' + currentElement.getStyle("width"),
						duration: 1
					});
					
					new Effect.Morph(previousElement, {
						style: 'left:0px',
						duration: 1
					})
				}
				else
				{
					var length = currentElement.ancestors()[0].childElements().length;
					previousElement = currentElement.ancestors()[0].childElements()[length - 1];
					new Effect.Morph(currentElement, {
						style: 'left: -' + currentElement.getStyle("width"),
						duration: 1
					});
					
					new Effect.Morph(previousElement, {
						style: 'left:0px',
						duration: 1
					});
					previousElement.setStyle({
						left:  currentElement.getStyle("width")
					});					
				}
			}
		}
		if(currentElement.tagName == 'UL')
		{
			if(currentElement)
			{
				if (currentElement.getStyle("left") == '30px') {					
					var previousElement = currentElement.previous();
					if(previousElement)
					{
						previousElement.setStyle({
							left:  "-" +(parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 79) + "px"
						});
			
						new Effect.Morph(currentElement, {
							style: 'left:' + (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 79) + "px",
							duration: 1
						});
						
						new Effect.Morph(previousElement, {
							style: 'left:30px',
							duration: 1
						})
					}
					else
					{
						var length = currentElement.ancestors()[0].childElements().length;
						previousElement = currentElement.ancestors()[0].childElements()[length - 1];
						
						new Effect.Morph(currentElement, {
							style: 'left: -' + (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 30) + "px",
							duration: 1
						});
						
						new Effect.Morph(previousElement, {
							style: 'left:30px',
							duration: 1
						});
						previousElement.setStyle({
							left:  (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 30) + "px"
						});					
					}					
				}
				else
				{
					var previousElement = currentElement.previous();
					if(previousElement)
					{
						previousElement.setStyle({
							left:  "-" +(parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 79) + "px"
						});
			
						new Effect.Morph(currentElement, {
							style: 'left:' + (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 79) + "px",
							duration: 1
						});
						
						new Effect.Morph(previousElement, {
							style: 'left:7px',
							duration: 1
						})
					}
					else
					{
						var length = currentElement.ancestors()[0].childElements().length;
						previousElement = currentElement.ancestors()[0].childElements()[length - 1];
						
						new Effect.Morph(currentElement, {
							style: 'left: -' + (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 30) + "px",
							duration: 1
						});
						
						new Effect.Morph(previousElement, {
							style: 'left:7px',
							duration: 1
						});
						previousElement.setStyle({
							left:  (parseInt(currentElement.getStyle("width").replace(/px/g, '')) + 30) + "px"
						});					
					}					
				}
			}			
		}
	},
	getCurrentElement: function(linkElement) {
		var parent = linkElement.getOffsetParent();
		var currentElement = null;
		var found = false;
		parent.getElementsBySelector('div[title="image_holder"]').each(function (divElement) {
			if((divElement.getStyle("left") == "0px") && (!found))
			{
				currentElement = divElement;
				found = true;
			}
		});
		parent.getElementsBySelector('ul[title="image_holder"]').each(function (divElement) {
			if((divElement.getStyle("left") == "30px") && (!found))
			{
				currentElement = divElement;
				found = true;
			}
			if((divElement.getStyle("left") == "7px") && (!found))
			{
				currentElement = divElement;
				found = true;
			}
		});	
		return currentElement;
	}
}
document.observe('dom:loaded', function () { 
	new MMSlider(document.getElementById('destinos')); 
	new MMSlider(document.getElementById('ultimas')); 
	new MMSlider(document.getElementById('fotos')); 	
});

