
function Slide(idDiv) {
	var div = document.getElementById(idDiv); // Div que será manipulada
	var images = new Array(); // Array de imagens
	var nextImage = 0; // próxima imagem que será apresentada
	var currentImage  = null; // imagem atual
	
	// Adiciona imagem no inicio
	this.addBegin = function(timer, image, href, pageView) {
		var obj = {
			timer: timer,
			image: image,
			href: href,
			pageView: pageView
		}; 
		images.unshift(obj)
	}
	
	// Adiciona imagem no final
	this.addEnd = function(timer, image, href, pageView) {
		var obj = {
			timer: timer,
			image: image,
			href: href,
			pageView: pageView
		}; 
		images.push(obj)
	}
	
	// Criar o elemento html para adicionar na Div
    function createImage() {
    	currentImage = images[nextImage];

        var elementImg = document.createElement("img");
        elementImg.src = currentImage.image;
        elementImg.border = 0;

        var elementA = null;
        if(currentImage.href != null) {
        	elementA = document.createElement("a");
        	elementA.onclick = function() {
        		if (pageTracker != null && currentImage.pageView != null) {
        			pageTracker._trackPageview(currentImage.pageView);
        		}
        	}
        	elementA.href = currentImage.href;
        	elementA.target = "_BLANK";
            elementA.appendChild(elementImg);
        }
        return (elementA == null) ? elementImg : elementA;
    }

    // Mistura as imagens
    this.shuffle = function() {
        for (var i = images.length; i > 1; i--) {
            var j = Math.floor(Math.random() * i);
            var tmp = images[i-1];
            images[i-1] = images[j];
            images[j] = tmp;
        }
    }
    
    // Carrega a imagem na div
    this.show = function(){
    	// Remove imagem atual se existi
        var child = div.firstChild;
        if (child != null) {
            div.removeChild(child);
        }

        // Coloca nova imagem
        var element = createImage()
        div.appendChild(element);

        // Prepara a próxima imagem
        nextImage++
        if (nextImage >= images.length) {
        	nextImage = 0;
        }
    }
    
    this.isEmpty = function() {
    	return (images.length == 0)
    }

    this.getCurrentImage = function() {
    	return currentImage;
    }
    
    this.getNextImage = function() {
    	return images[nextImage];
    }
    
}

Slide.run = function(varName) {
	cmd = "if (!"+varName+".isEmpty()) {\n"
	    + "\t"+varName+".show();\n"
		+ "\twindow.setTimeout(\"Slide.run('"+varName+"');\", "+varName+".getCurrentImage().timer);\n"
		+ "}\n";
	eval(cmd);
}