/*****

Image Cross Fade Redux
Version 1.0
Last revision: 02.15.2006
steve@slayeroffice.com

Please leave this notice intact. 

Rewrite of old code found here: http://slayeroffice.com/code/imageCrossFade/index.html


*****/


window.addEventListener?window.addEventListener("load",so_init,false):window.attachEvent("onload",so_init);

var d=document, imgs = new Array(), zInterval = null, current=0, pause=false;

var imgsArray = new Array();
var imgsCurrent = new Array();
var currentImgGroup;
var arraysActivas = 0;


//fix para ie
if(!document.getElementsByClassName){
	
document.getElementsByClassName = function getElementsByClass(searchClass,node,tag) {
	        var classElements = new Array();
	        if ( node == null )
	                node = document;
	        if ( tag == null )
	                tag = '*';
	        var els = node.getElementsByTagName(tag);
	        var elsLen = els.length;
	        var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	        for (i = 0, j = 0; i < elsLen; i++) {
	                if ( pattern.test(els[i].className) ) {
	                        classElements[j] = els[i];
	                        j++;
	                }
	        }
	        return classElements;
	};
	
};



//ordenación aleatoria
function randOrd(){
  return (Math.round(Math.random())-0.5); 
} 


//recupera el siguiente grupo de imágenes a tratar
function next(){
	nextDiv = imgsArray[currentImgGroup+1]?currentImgGroup+1:0;
	var pass = 0;
  for(i = nextDiv; i < imgsArray.length;i++){
	  if(	imgsCurrent[i] != -1 ){
			currentImgGroup = i;
			imgs = imgsArray[currentImgGroup];
			current = imgsCurrent[currentImgGroup];
	//		alert(currentImgGroup);
			return true;
		}
		if(i == (imgsArray.length -1) && pass == 0){
			//volver al principio
			i = -1;
			pass = 1;
		}
	}
//	alert("akí no hay nadie!");
	return false;
}


function so_init() {
	if(!d.getElementById || !d.createElement)return;
	//css = d.createElement("link");
	//css.setAttribute("href","./xfade2.css");
	//css.setAttribute("rel","stylesheet");
	//css.setAttribute("type","text/css");
	//d.getElementsByTagName("head")[0].appendChild(css);
  //recuperar los grupos de imágenes
	var allDivs = d.getElementsByClassName("icont");
	//inicializar
	currentImageGroup = allDivs.length;
	for(i =0;i < allDivs.length;i++){
		var images = allDivs[i].getElementsByTagName("img")
		if(images.length > 1){
		  imgsCurrent.push(0);
			//desordenar
			var a = new Array();
			for (j=0;j<images.length;j++)	a.push(images[j].src);
			//a.sort(randOrd);
			for (j=0;j<images.length;j++) images[j].src = a[j];
			arraysActivas++;
		}else{
			imgsCurrent.push(-1);
		}
		imgsArray.push(images);
		
		for(j=0;j<images.length;j++) images[j].xOpacity = 0;
		if(images[0]){
		  images[0].style.display = "block";
		  images[0].xOpacity = .99;
		}
	}
	if(!next()){
		//alert("no next!");
		return;
	}
	if(arraysActivas > 0){
	  setTimeout(so_xfade,(5000 / arraysActivas));
	}
}

function so_xfade() {
	cOpacity = imgs[current].xOpacity;
	nIndex = imgs[current+1]?current+1:0;

	nOpacity = imgs[nIndex].xOpacity;
	
	cOpacity-=.05; 
	nOpacity+=.05;
	
	imgs[nIndex].style.display = "block";
	imgs[current].xOpacity = cOpacity;
	imgs[nIndex].xOpacity = nOpacity;
	
	setOpacity(imgs[current]); 
	setOpacity(imgs[nIndex]);
	
	if(cOpacity<=0) {
		imgs[current].style.display = "none";
		imgsCurrent[currentImgGroup] = nIndex;
		current = nIndex;
		next();
		setTimeout(so_xfade,(5000 / arraysActivas));
	} else {
		setTimeout(so_xfade,50);
	}
	
	function setOpacity(obj) {
		if(obj.xOpacity>.99) {
			obj.xOpacity = .99;
			return;
		}
		obj.style.opacity = obj.xOpacity;
		obj.style.MozOpacity = obj.xOpacity;
		obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
	}
	
}
