/*
Add rollover functionality to image tags and preload the rollover images.

Usage:
<img src="plaatje.jpg" rollover="rollover.jpg">

In this example rollover.jpg will be preloaded onload. 
On mouseover the image "plaatje.jpg" will be replaced with "rollover.jpg",
onmouseout the other way around.

Important: call initRollover() onload

Written by Meinaart van Straalen - Zicht nieuwe media ontwerpers b.v. (c) 2005
*/


var preloadedImages;

// This functions loops through all images in the current document and checks 
// if they have a "rollover" attribute. If so then it adds rollover functionality
// and preload the rollover images.
function initRollover() {
	if( !document.getElementById ) return;
	
	var rolloverImages = new Array();
	preloadedImages = [];
		
	var images = document.getElementsByTagName( "IMG" );
	for( var i = 0; i < images.length; i++ ) {
		var img = images[i];
		if( img.getAttribute( "rollover" ) != undefined ) {
			img.setAttribute( "original", images[i].getAttribute( "src" ) );

			rolloverImages.push ( img.getAttribute( "rollover" ) );
			rolloverImages.push ( img.getAttribute( "original" ) );
		
			
			img.onmouseover = function() {
				this.setAttribute( "src", preloadedImages[ this.getAttribute( "rollover" ) ].src );
			}
			img.onmouseout = function() {
				this.setAttribute( "src", preloadedImages[ this.getAttribute( "original" ) ].src );
			}

		}
	}
	preloadImages( rolloverImages );
}

// This function preloads an array of images, it also checks if the image is
// already loaded. The preloaded images are stored in an array with their filename
// as key.
function preloadImages( images ) {
	for( var i = 0; i < images.length; i++ ) {
		var img = preloadedImages[ images[i] ];
		if( img == undefined ) {
			preloadedImages[ images[i] ] = new Image();
			preloadedImages[ images[i] ].src = images[ i ];
		}
	}
}


function triggerRollover ( img, overOrOut ) {
    switch ( overOrOut ) {
        case 'over':
			if ( img.getAttribute('rollover') ) {
				img.setAttribute('src',preloadedImages[img.getAttribute('rollover')].src);
			}
            break;
        case 'out':
			if ( img.getAttribute('original') ) {
				img.setAttribute('src',preloadedImages[img.getAttribute ( "original" )].src );
			}
            break;
    }
}

function in_array ( a, b ) {
    for ( var i in b )
        if ( b[i] == a )
            return i;
    return false;
}

