//JavaScript document
/* Plugin Script para apresentação de banners em slider lateral indexado
   Criado por: Rui Torre
   Az Negócios - Internet e multimédia
*/

//Está a faltar a barra preta semi transparente com o titulo, subtitulo e indexação com link e respectivas acções pausando o slider
var delay, orientation, slider, sliderWidth, sliderHeight, sliders, title, subtitle, slideScroll, t;

var indexedSlider = {
    init: function(){
        if (!delay){ delay = 5000;}
		
        slider = document.getElementById('indexed_slider');
		sliderWidth = slider.getElementsByTagName('img')[0].offsetWidth;
		sliderHeight = slider.getElementsByTagName('img')[0].offsetHeight;
		
		title = document.getElementById('indexed_slider_title');
		subtitle = document.getElementById('indexed_slider_subtitle');
		
		slideScroll = document.getElementById('indexed_slider_scrooler');
		slideScroll.onselectstart = function(){ return false;}
		this.changeIndex(0);
		
		sliders = this.getSliders(slideScroll);
		title.innerHTML = sliders[0]["title"];
		subtitle.innerHTML = sliders[0]["subtitle"];

		t = setTimeout(function(){ indexedSlider.run(0);}, delay);
    },
	run: function(idx){
		clearTimeout(t);
		function slideRun (idx){
			idx = (idx < sliders.length-1)? idx+1 : 0; 
			var x = 0;
			var y = 0;
			
			if (orientation == 'vertical'){
				y = -sliderHeight*idx;	
			} else {
				x = -sliderWidth*idx;				
			}

			slideScroll.slideTo(x, y, idx);
			t = setTimeout(function(){ slideRun(idx);}, delay);
		}
		slideRun(idx);
	},
	getSliders: function(innerSlides){
		var slideNodes = innerSlides.childNodes;
		var sliders = new Array();
		
		idx = 0;
		for (s = 0; s < slideNodes.length; s++){
			if (slideNodes[s].tagName != 'SPAN'){ continue;}
			
			var slideImage = slideNodes[s].getElementsByTagName('img')[0];
			var title = (slideImage.title)? slideImage.title : '';
			slideImage.removeAttribute('title');
			
			var slideLabel = slideNodes[s].getElementsByTagName('label')[0];
			var subtitle = (slideLabel.innerHTML)? slideLabel.innerHTML : '';
			
			sliders[idx] = {'node': s, 'title': title, 'subtitle': subtitle};
			idx += 1;
		}
		return sliders;
	},
	changeIndex: function(idx){
		var index = slider.getElementsByTagName('li');
		
		for (i = 0; i < index.length; i++){
			var indexLink = index[i].childNodes[0];
			indexLink.style.background = '';
			indexLink.style.color = '#FFF';
		}
		
		var activeLink = index[idx].childNodes[0];
		activeLink.style.background = '#FFF';
		activeLink.style.color = '#000';
	},
	change: function(idx){
		clearTimeout(t);
		var showSlide = (idx == 0)? sliders.length : idx-1;
		this.run(showSlide);
	}
}

Element.prototype.slideTo = function(x, y, idx){
	var step = (orientation == 'vertical')? sliderHeight/10*2 : sliderWidth/10*2;
	if (x > this.offsetLeft || y > this.offsetTop){ step = step*parseInt(sliders.length/2);}
	
	title.innerHTML = '';
	subtitle.innerHTML = '';
	indexedSlider.changeIndex(idx);
	
	function changePosition(obj){
		var left = 0;
		var top = 0;
        var container = obj.parentNode;
        var objLeft = obj.offsetLeft-container.offsetLeft-1;
        var objTop = obj.offsetTop-container.offsetTop-1;
        
		if (orientation == 'vertical'){
			top = (objTop-step > y)? objTop-step :(y > objTop+step)? objTop+step : y;	
		} else {
			left = (objLeft-step > x)? objLeft-step :(x > objLeft+step)? objLeft+step : x;
		}
       
		obj.style.marginLeft = left+'px';
		obj.style.marginTop = top+'px';
		
		if (left != x || top != y){
            var t = window.setTimeout(function(){ changePosition(obj);}, 50);
		} else {
            clearTimeout(t);
			title.innerHTML = sliders[idx]["title"];
			subtitle.innerHTML = sliders[idx]["subtitle"];
		}
	}
	changePosition(this);
}

indexedSlider.init();
