/* Initialisation ----------------------------------------------------------------------*/

var d = document, dE = d.documentElement, dB = d.body, dA = d.all;

var modules = new Object();
var library = new Object();

library={
	init:function(){
		if(d.getElementById){
			modules.ie.init();
			modules.rollOvers.init('','_on','rollover');
		}
	},
	end:function(){
		modules.ie.end();
	}
};

window.onload = library.init;
window.onunload = library.end;

/* Functions --------------------------------------------------------------------------*/

if(!Array.prototype.push){
	Array.prototype.push = function(){
		for(var i = 0; i < arguments.length; i++){ this[this.length] = arguments[ i ]; }
		return this.length;
	}
}
function $($key, $parent){
	var elements = [];
	var tags = 'A LINK IMG P DIV OL UL LI DL DT DD SPAN EM STRONG LINK TABLE THEAD TBODY TR TD TH H5 H4 H3 H2 H1 OBJECT';
	$parent = (typeof $parent == 'undefined') || $parent==false ? d : $parent;
	keys = $key.split(',');
	for (var i = 0; i < keys.length; i++) {
		var key = keys[i];
		if(tags.match(key)){ elements = $parent.getElementsByTagName(key); return elements;}
		else if(d.getElementById(key)){ element = d.getElementById(key); return element;}
		else { all = $parent.getElementsByTagName('*').length==0 ? d.all : $parent.getElementsByTagName('*') ; for(var j=0, el; el=all[j]; j++){ if(el.className.match(' '+key)||el.className.match(key+' ')||el.className==key){ elements.push(el); } } }
	}
	if(elements.length == 0){ return false }
	return elements;
}


/* Modules --------------------------------------------------------------------------*/

modules.rollOvers = {
	init:function($ext, $hoverExt, $key){
		$key = $($key);
		$key[0]=!$key.length ? $key : $key[0];
		local = new Array();
		var rollElm = new Array();
		var preloadImg = new Array();
		for(var h=0, key; key=$key[h]; h++){
			if(key.className.match('local')){
				loc = String(window.location);
				locl = loc.split('/');
				local[h] = locl[0]+'/'+locl[1]+'/'+locl[2]+'/'+locl[3]+'/';
			} else { local[h] = false; }
			rollElm[h] = $('IMG',key);
			j=0;
			for(var i=0, el; el=rollElm[h][i]; i++){
				if(el.src){
					j++;
					if(el.src.match($ext) && !el.src.match($hoverExt+'.')){
						el.source = el.src;
						el.file = el.src.split('/')[el.src.split('/').length-1];
						el.fext = el.file.split('.')[1];
						el.hoverSrc = !local[h] ? el.src.replace($ext+'.'+el.fext,$hoverExt+'.'+el.fext) : local[h]+'img/'+el.file.replace($ext+'.'+el.fext,$hoverExt+'.'+el.fext);
						preloadImg[(h+1)*(i+1)*j+j] = new Image();
						preloadImg[(h+1)*(i+1)*j+j].src = el.hoverSrc;
						if(el.parentNode.nodeName == 'A'){
							el.parentNode.onfocus = function(){ this.firstChild.src = this.firstChild.hoverSrc; }
							el.parentNode.onblur = function(){ this.firstChild.src = this.firstChild.source; }
						}
						el.onmouseover = function(){ this.src = this.hoverSrc;  }
						el.onmouseout = function(){ this.src = this.source; }
					}
				}
			}
		}
	}
}

modules.ie={
	init:function(){
		this.flash();
	},
	flash:function(){
		if(navigator.userAgent.match('MSIE 6') ){
			$obj = $('OBJECT');
			for (var i=0,el; el=$obj[i]; i++){ el.outerHTML = el.outerHTML; }
		}
	},
	end:function(){
		if (d.all && window.attachEvent) {
			var elProps = [
				'data', 'onmouseover', 'onmouseout',
				'onmousedown', 'onmouseup', 'ondblclick',
				'onclick', 'onselectstart', 'oncontextmenu'
			];
			var all = d.all;
			for (var i = 0, el; el = all[i]; i++) {
				for (var j = 0, elProp; elProp = elProps[j]; j++) { el[elProp] = null; }
			}
		}
	}
}
