/***

Image Cross Fade
$Id: fade.js,v 1.4 2007-10-01 15:04:28 bernd Exp $
bernd@prager.ws
based on the version from steve@slayeroffice.com

***/

window.addEventListener?window.addEventListener("load", my_init,false):window.attachEvent("onload",my_init);
var d = document, imgs = new Array(), hrefs = new Array(), current = 0, next = 0, timerId = 0, req = false, imgNr = 0;

// initiates image request
function my_init() {
	  if (!d.getElementById) return;
	  imgs = d.getElementById("canvas").getElementsByTagName("img");
	  hrefs = d.getElementById("canvas").getElementsByTagName("a");
	  imgs[0].id = 0;
	  // hrefs[0].href = "http://homeip.prager.ws";
	  requestImage();	  
}

// initiates a AJAX request for a new image
function requestImage() {
	req = false;
	
	// typical AJAX init
	if(window.XMLHttpRequest) {
                try {
                        req = new XMLHttpRequest();
                } catch(e) {
                        req = false;
                }
                // branch for IE/Windows ActiveX version
                } else if(window.ActiveXObject) {
                try {
                        req = new ActiveXObject("Msxml2.XMLHTTP");
                } catch(e) {
                        try {
                                req = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch(e) {
                                req = false;
                        }
                }
        }
		// request a random image
		if (req) {
			req.onreadystatechange = receiveImage;
			clearTimeout(timerId);
			
        req.open('post', '/php/getImage.php', true);
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        req.send('img=' + imgs[current].nr );
    }
}

// receives a new image
function receiveImage() {
	if (req.readyState != 4) {
		return;
	}
	if (req.status == 200) {
		var resultText = req.responseText;
		var responseHeader = req.getAllResponseHeaders();
		var result = req.responseXML;
		imgNr = result.getElementsByTagName('img');
		next = current%2?0:1;

		imgs[next].id = imgNr[0].getAttribute('id');
		imgs[next].nr = imgNr[0].getAttribute('nr');
		imgs[next].src = imgNr[0].getAttribute('src');
		imgs[next].xOpacity = 0;

		if (imgs[current].id != 0) {
			xfade();
		} else {
			imgs[current].id = imgNr[0].getAttribute('id');
			imgs[current].nr = imgNr[0].getAttribute('nr');
			imgs[current].src = imgNr[0].getAttribute('src');
			imgs[current].xOpacity = .99;
			hrefs[0].href = "http://www.flickr.com/photo_zoom.gne?id="
			+ imgs[current].id + '&size=l'
			timerId = setTimeout(requestImage, 5000);
		}
	}
}

// cross fade
function xfade() {
	cOpacity = imgs[current].xOpacity;
	nOpacity = imgs[next].xOpacity;
	
	cOpacity -= 0.05;
	nOpacity += 0.05;
	
	imgs[next].style.display = "block";
	imgs[current].xOpacity = cOpacity;
	imgs[next].xOpacity = nOpacity;
	
	setOpacity(imgs[current]);
	setOpacity(imgs[next]);
	
	if (cOpacity <= 0) {
		imgs[current].style.display = "none";
		hrefs[0].href = "http://www.flickr.com/photo_zoom.gne?id="
		+ imgs[next].id + '&size=l'
		current = next;
		timerId = setTimeout(requestImage, 5000);
	} else {
		timerId = setTimeout(xfade, 50);
	}

	function setOpacity(obj) {
		// alert(obj.xOpacity);
		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) + ")";
	}
}
