var gallery_id = 'crossfade_gallery';

//set the fader to start on load
fader_addLoadEvent(setTimeout('fader_init()',2000));


function fader_init() {
	
	/* make first image visible */
	var start_node = document.getElementById(gallery_id);
	var elements = fader_getElementsByClass(document, "crossfade_gallery_element", "*");

	if (elements.length == 0)
		return;
  
	elements[0].style.display = 'block';
	elements[0].parentNode.style.display = 'block';

	setTimeout('fader_loop(\'0\' )',8000);

}


function fader_loop(current_image) {

	if (current_image == null)
		current_image = 0;

	var number_images = fader_count_images();

	var next_image = parseInt(current_image) + 1;
	if (next_image == number_images)
		next_image = 0;

	crossfade(current_image,next_image);

	setTimeout('fader_loop(\'' + next_image  + '\' )',8000);

}


function crossfade(last, next) {

	window.setTimeout("crossfade_step('" + last + "', '" + next + "', '" + 20 + "')", 0);
	window.setTimeout("crossfade_step('" + last + "', '" + next + "', '" + 40 + "')", 150);
	window.setTimeout("crossfade_step('" + last + "', '" + next + "', '" + 80 + "')", 300);
	window.setTimeout("crossfade_step('" + last + "', '" + next + "', '" + 100 + "')", 450);

}


function crossfade_step(last, next, percent) {

	set_div_opacity(last, 100 - parseInt(percent));
	set_div_opacity(next, percent);

}


/* set opacity 0 to 100 */
function set_div_opacity(i, opacity) {

	object = get_image(i);	
	object.style.opacity = opacity / 100.0;
	object.style.filter = 'alpha(opacity=' + opacity + ')';

	if (opacity == 0) {
		object.style.display = "none";
		object.parentNode.style.display = "none";
	}
	else {
		object.style.display = "block";
		object.parentNode.style.display = "block";
	}
}


/* get the ith image */
function get_image(i) {

	var start_node = document.getElementById(gallery_id);
	var elements = fader_getElementsByClass(document, "crossfade_gallery_element", "*");  
	return elements[i];

}


// count the images
function fader_count_images() {

	var start_node = document.getElementById(gallery_id);
	var elements = fader_getElementsByClass(document, "crossfade_gallery_element", "*");  
	return elements.length;	

}


function fader_addLoadEvent(func) {

	var oldonload = window.onload;

	window.onload = function() {
	    if (oldonload) {
		oldonload();
	    }
	    func();
	}
}



 function fader_getElementsByClass(node,searchClass,tag) {  
     var classElements = new Array();  
	 if ( node == null )  
	     node = document;  
	 if ( tag == null )  
	     tag = '*';  
     var els = node.getElementsByTagName(tag); // use "*" for all elements  
     var elsLen = els.length;  
     var pattern = new RegExp("\\b"+searchClass+"\\b");  
     for (kk = 0, rr = 0; kk < elsLen; kk++) {  
	  if ( pattern.test(els[kk].className) ) {  
	  classElements[rr] = els[kk];  
	  rr++;  
	  }  
     }  
     return classElements;  
   }  

