// ==UserScript==
// @name		IMDB image hover
// @namespace		http://www.rulac.net/userjs/imdb-image-hover/
// @description		add mouse over tips to images, option for preload
// @version		2.0
// @include		http://*.imdb.com/*
// @include		http://*.imdb.de/*
// @include		http://*.imdb.es/*
// @include		http://*.imdb.it/*
// @include		http://*.imdb.fr/*
// @include		http://*.imdb.pt/*
// ==/UserScript==

// =============================
// start of config
// =============================

// PRELOAD IMAGE
// If you have slow connection to internet set to false
var preloadimage	= true;

// size of large image in pixels
var width		= 550;
var height		= 550;

// =============================
// end of config
// =============================


document.addEventListener("DOMContentLoaded", function(){
	var imgs	= new Array();
	var imgsrc	= new Array();
	var imgarray	= new Array();
	var show_size	= new Array();
	var image	= new Array();
	links		= document.getElementsByTagName("a");
	for (i = 0; i < links.length; i++){
		if (imgs[i] = links[i].getElementsByTagName('img')[0]){
			imgsrc[i]	= imgs[i].src;
			imgsrcarray	= imgsrc[i].split("/");
			imgsrcarray	= imgsrcarray.reverse();
			tncheck1	= imgsrcarray[0].lastIndexOf("V1.");
			delete imgsrcarray;
			if (tncheck1 > -1){
				if (tncheck1 > -1){
					spl		= imgsrc[i].split("V1.");
					links[i].tmp	= spl[0] + "V1._SY" + height + "_SX" + width + "_.jpg";
				}
				if (links[i].tmp){
					// preload image
					if (preloadimage){
						//pig.src = links[i].tmp;
						image[i]	= document.createElement("img");
						image[i].setAttribute("src", links[i].tmp);
						image[i].setAttribute("width", 1);
						image[i].setAttribute("height", 1);
						image[i].setAttribute("style", "float: left; position: absolute; left: -100000px; top: 0px;");
						document.body.appendChild(image[i]);
					}
					var r = 0;
					links[i].onmouseover	= function(){
						imgarray[r]	= new Image();
						imgarray[r].src	= this.tmp;
						imgsize		= imgarray[r];
						// ako je premala rezolucija a prevelika fotka onda ju smanji na 50%
						if ((window.innerHeight - 11) < imgsize.height){
							imgsize.height	= imgsize.height / 2;
							size_ok_tmp	= 1;
						} else {
							imgsize.height	= imgsize.height;
							size_ok_tmp	= 2;
						}
						if ((window.innerWidth - 11) < imgsize.width || size_ok_tmp == 1){
							imgsize.width	= imgsize.width / 2;
						} else {
							imgsize.width	= imgsize.width;
						}
						if (imgsize.width || imgsize.height){
							show_size[r]	= " width='" + imgsize.width + "' height='" + imgsize.height + "'";
						}
						tooltip("<img src='" + this.tmp +  "' style='border: 1px solid #283f66; background: #efefef; padding:5px;'" + show_size[r] + " alt='loading'>");
						r++;
					}
					links[i].onmouseout	= function(){
						exit();
					}
				}
			}
		}
	}
	var objects	= document.getElementsByTagName("object");
	for (var i = 0; i < objects.length; i++){
		param			= document.createElement("param");
		param.name		= "wmode";
		param.value		= "transparent";
		objects[i].appendChild(param);
		embed			= objects[i].getElementsByTagName("embed")[0];
	//	embed.wmode		= "transparent";
		objects[i].style.zIndex	= 0;
		objects[i].style.zIndex	= 1;
		if (embed){
			objects[i].removeChild(embed);
		}
	}

	// lixlpixel Javascript tooltips
	// http://lixlpixel.org/javascript-tooltips/

	// * part of code is added by Rulac

	// position of the tooltip relative to the mouse in pixel //
	var offsetx	= -30 ;
	var offsety	=  20;

	function newelement(newid){ 
		if(document.createElement){
			var el = document.createElement('div'); 
			el.id = newid;	 
			with(el.style){ 
				display		= 'none';
				position	= 'absolute';
				top		= '-20000px'; // * part of code added by Rulac
				zIndex		= '1000'; // * part of code added by Rulac
			} 
			el.innerHTML = '&nbsp;'; 
			document.body.appendChild(el);
		} 
	} 
	var ie5		= (document.getElementById && document.all); 
	var ns6		= (document.getElementById && !document.all); 
	var ua		= navigator.userAgent.toLowerCase();
	var isapple	= (ua.indexOf('applewebkit') != -1 ? 1 : 0);
	function getmouseposition(event){
		if(document.getElementById){
			var iebody	= (document.compatMode && document.compatMode != 'BackCompat') ? document.documentElement : document.body;
			pagex		= (isapple == 1 ? 0:(ie5)?iebody.scrollLeft:window.pageXOffset);
			pagey		= (isapple == 1 ? 0:(ie5)?iebody.scrollTop:window.pageYOffset);
			mousex		= (ie5)?event.x:(ns6)?clientX = event.clientX:false;
			mousey		= (ie5)?event.y:(ns6)?clientY = event.clientY:false;
			
			var lixlpixel_tooltip		= document.getElementById('tooltip');
			lixlpixel_tooltip.style.left	= (mousex+pagex+offsetx) + 'px';
			lixlpixel_tooltip.style.top	= (mousey+pagey+offsety) + 'px';

			// * START of part code added by Rulac
			if ((window.innerWidth/2 ) < (mousex)){
				lixlpixel_tooltip.style.left	= (mousex+pagex-offsetx-imgsize.width) + 'px';
			}
			if ((window.innerHeight/2) < (mousey)){
				lixlpixel_tooltip.style.top	= (mousey+pagey-offsety-imgsize.height) + 'px';
			}
			// * END of part code added by Rulac
		}
	}
	function tooltip(tip){
		if(!document.getElementById('tooltip')) newelement('tooltip');
		var lixlpixel_tooltip		= document.getElementById('tooltip');
		lixlpixel_tooltip.innerHTML	= tip;
		lixlpixel_tooltip.style.display	= 'block'
		document.onmousemove		= getmouseposition;
	}
	function exit(){
		document.getElementById('tooltip').style.display	= 'none';
	}


}, false);