var bannerRotate = (function() {
	    
		var con, ban = [], images = [], nBan, iPrev, iActive, interv = 6000, intervId, fade = 50, nav, isActive = false,
            
            next = function() {
				//document.getElementById('log').innerHTML = document.getElementById('log').innerHTML + (typeof iActive === 'number' ? (iActive + 1 >= nBan ? 0 : iActive + 1) : 0) + '<br />';
                return typeof iActive === 'number' ? (iActive + 1 >= nBan ? 0 : iActive + 1) : 0;
            },
			
			previous = function() {
			    //document.getElementById('log').innerHTML = document.getElementById('log').innerHTML + (typeof iActive === 'number' ? (iActive - 1 >= 0 ? iActive - 1 : nBan - 1 ) : nBan - 1) + '<br />';
                return typeof iActive === 'number' ? (iActive - 1 >= 0 ? iActive - 1 : nBan - 1 ) : nBan - 1;
		    },
			
			switchImage = function(i) {
			    if(typeof iActive === 'number' && iActive !== i) {
				    ban[iActive].style.zIndex = '10';
				    $FADE(ban[iActive], 'out', fade);
					//ban[iActive].style.visibility = 'hidden';
					if(typeof iPrev === 'number') {
				        ban[iPrev].style.zIndex = '0';
					}
				    iPrev = iActive;
				}
				//$FADE(ban[i], 'in', fade);
				ban[i].style.visibility = 'visible';
				
				//Muda o estado da class do link atual para 'active'
				if(document.getElementById('bannerRotate-navbar')) {
				    if(document.getElementById('item-' + iActive)) {
					    document.getElementById('item-' + iActive).className = '';
				    }
					document.getElementById('item-' + i).className = 'active';
				}
				iActive = i;
				//document.getElementById('log').innerHTML = document.getElementById('log').innerHTML + (typeof iActive === 'number' ? (iActive + 1 >= nBan ? 0 : iActive + 1) : 0) + '<br />';
			},
			
			setSlideShow = function() {
				function s() {
					whenLoaded(next(), function(nbanner) {
						if(!isActive){
							if(document.getElementById('bannerRotate-navbar')) {
								//$FADE($CLASS('bannerRotate-navbar')[0], 'in', fade);
								document.getElementById('bannerRotate-navbar').style.visibility = 'visible';
							}
							isActive = true;
						}
						switchImage(nbanner);
					});
					if(nBan > 1) {
				        intervId = window.setTimeout(s, interv)
					}
				}
				s();
			},
			
			whenLoaded = function(i, f) {
			    var i = i,
				    f = f;
				if(images[i].isLoaded) {
				    f(i);
				} else {
					function go() {
						if(images[i].isLoaded) {
							f(i);
						} else {
							window.setTimeout(go, 200);
						}
					}
					window.setTimeout(go, 200);
				}
			},
			
			buildNav = function() {
			    var navBar = document.createElement('div'), i, j, button;
				navBar.id = 'bannerRotate-navbar';
				navBar.style.visibility = 'hidden';				
				navBar.style.position = 'absolute';
				navBar.style.cursor = 'pointer';
				navBar.style.zIndex = 99;
				
				//NUMBERS
				for(i = 0; i < nBan; i++) {
					button = document.createElement('a');
					button.className = 'bt-itens';
					button.innerHTML = '<span id="item-' + (i) + '">' + (i+1) + '</span>';
					button.onclick = function(index) {
					    return function() {
							window.clearTimeout(intervId);
							whenLoaded(index, function(nbanner) {
								switchImage(nbanner);
							});
						}
					}(i)
					navBar.appendChild(button);
				}
				con.appendChild(navBar);

			};
			
		return function(el, time, transition, menu) {
		
		    var node = el.firstChild,
			    i = 0;
		        con    = el;
			    interv = time || interv;
			    fade   = transition || fade;
				nav = menu ? menu : true;
			while (node) {
				if(node.nodeType == 1) {
				    var image = (node.tagName).toUpperCase() == 'IMG' ? node : node.getElementsByTagName('img')[0];
					if(image) {
						images.push({'image' : new Image, 'isLoaded' : true});
						images[i].image.src = image.src;
						//image.src = "";
						node.style.visibility = 'hidden';
						
						images[i].image.onload = function(ph, im)
						{
							return function()
							{
							    im.src = ph.image.src;
								ph.isLoaded = true;
							}
						}(images[i], image );
						ban.push(node);
						i++;
						image = undefined;
					}
				}
				node = node.nextSibling;
			}
			nBan = ban.length;
			if(nav && nBan > 1) {
			    buildNav();
			}
			setSlideShow();
		}	
})();
