//!!!!! IMPORTANT !!!!
// if body has onload property in html code defined
// this script must be included after the body tag


function HRoll(){


	function prepare_preload(img){
		img.HRoll_over = new Image();
		img.HRoll_over.src = img.getAttribute("hroll_over");
		img.HRoll_over_src = img.HRoll_over.src;
		img.HRoll_normal_src = img.src;
	}

	function prepare_events(img){
		img.HRoll_onmouseover = img.onmouseover;
		img.onmouseover = HRoll_img_over;
		
		img.HRoll_onmouseout = img.onmouseout;
		img.onmouseout = HRoll_img_out;
	}

	function init_HRoll(){
		
		var imgs = document.images;
		
		for (var i=0; i<imgs.length; i++){
			var img = imgs[i];
			if (img.getAttribute("hroll_over") == null) continue;

			prepare_preload(img);
			prepare_events(img);
			
			if (img.getAttribute("name") != null && img.getAttribute("name") != "")
				window.HRoll_images[img.getAttribute("name")] = img;
		}

		init_fixed();
		init_links(document.links);
		init_links(document.getElementsByTagName("TD"));
		if (window.HRoll_onload != null) window.HRoll_onload();
	}

	function init_links(links){
		for (var i=0; i<links.length; i++){
			var link = links[i];
			if (link.getAttribute("hroll_over") == null) continue;

			var imgs = link.getAttribute("hroll_over").split(",");
			link.HRoll_imgs = imgs;
			
			link.HRoll_onmouseover = link.onmouseover;
			link.onmouseover = HRoll_link_over;
			
			link.HRoll_onmouseout = link.onmouseout;
			link.onmouseout = HRoll_link_out;
		}
	}

	function init_fixed(){
		if (document.body.getAttribute("hroll_over") == null || document.body.getAttribute("hroll_over") == "") return;
		var fixed = document.body.getAttribute("hroll_over").split(",");
		for (var i=0; i<fixed.length; i++){
			var img = window.HRoll_images[fixed[i]];
			if (img != null){
				img.HRoll_normal_src = img.HRoll_over_src;
				img.src = img.HRoll_over_src;
			}
		}
	}

	function HRoll_link_over(){
		for (var i=0; i<this.HRoll_imgs.length; i++){
			var img = window.HRoll_images[this.HRoll_imgs[i]];
			if (img == null) continue;
			img.onmouseover();
			if (this.HRoll_onmouseover) return this.HRoll_onmouseover();
		}
	}

	function HRoll_link_out(){
		for (var i=0; i<this.HRoll_imgs.length; i++){
			var img = window.HRoll_images[this.HRoll_imgs[i]];
			if (img == null) continue;
			img.onmouseout();
			if (this.HRoll_onmouseout) return this.HRoll_onmouseout();
		}
	}

	function HRoll_img_over(){
		this.src = this.HRoll_over_src;
		if (this.HRoll_onmouseover) return this.HRoll_onmouseover();
	}

	function HRoll_img_out(){
		this.src = this.HRoll_normal_src;	
		if (this.HRoll_onmouseout) return this.HRoll_onmouseout();
	}

	window.HRoll_onload  = window.onload;
	window.onload = init_HRoll;
	window.HRoll_images = new Array();//images repository
	window.has_HRoll = true;
}

// I use this to spare nameSpace for other functions
// this way all functions are declared under Hroll function
// so i can name the the way I want
if (!window.has_HRoll) HRoll();
