// ==UserScript==
// @name           MySpace Image Rollover
// @namespace      http://www.lessel.us/
// @include        http://*.myspace.com/*
// @include        http://myspace.com/*
// ==/UserScript==
// By: Mark Lessel
// Email: mark@lessel.us
// Based on a script from Justin Rosenthal

(function(){

function addEvent( obj, type, fn ) {
        if ( obj.attachEvent ) {
                obj["e"+type+fn] = fn;
                obj[type+fn] = function() { obj["e"+type+fn]( window.event ); return false;}
                obj.attachEvent( "on"+type, obj[type+fn] );
        } else
                obj.addEventListener( type, fn, false );
}

var allImages = [], thisImage;
var globalTimer;
/*
allImages = document.evaluate(
	'//img[contains(@src, "ac-images")]',
	document,
	null,
	XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
	null);
*/

var tmpImages = document.getElementsByTagName('img');
for(var i = 0,j=0; i< tmpImages.length; i++){
	var img = tmpImages[i];
	var src = img.src;
	if(src.indexOf('ac-images') != -1){
		allImages[j] = img;
		j++;
	}
}

// Holds paths of all the enlarged images
imgArray = new Array( allImages.length * 2);

i=0;
while (i < allImages.length) {

	thisImage = allImages[i];

	// Example of photo src     -->     03/31/2006
	// http://photos-420.facebook.com/images/profile/628/72/t9999999_99999.jpg
	// want to change the 't' to an 'n' for large image
	var src = thisImage.src;
	//var path = src.substring( 0, src.lastIndexOf('/') + 1 );
	//var fileName = 'n' + src.substring( src.lastIndexOf('/') + 2, src.length);


	//http://a277.ac-images.myspacecdn.com/images01/61/m_def45df272de55260054779f83c824d4.gif
//http://a644.ac-images.myspacecdn.com/01550/34/67/1550157643_m.jpg
	var fileName = src.replace("_m.jpg","_l.jpg");
	fileName = fileName.replace("/m_","/l_");
	fileName = fileName.replace("_s.jpg","_l.jpg");
	fileName = fileName.replace("/s_","/l_");

	thisImage.alt = i;
	imgArray[i] = fileName;
	imgArray[i + allImages.length] = src;

	var newDiv = document.createElement('div');
	var html = "<div id='t" + i + "' class='tip'><img src='" + fileName + "'></div>";
	newDiv.innerHTML = html;
	document.body.appendChild(newDiv);


	addEvent(thisImage, 
		'mouseover',
		function(e) {
			var x = window.event.clientX;
			var y = window.event.clientY;
			var z = 't' + this.alt;
			globalTimer = window.setTimeout(
				function() { popUp(x,y,z); },
				500);
		}
	);


	addEvent(thisImage,
		'mouseout',
		function(e) {
			window.clearTimeout(globalTimer);
			document.getElementById('t' + this.alt).style.visibility = "hidden";
		}
	);

	i++;
}

/*
function addGlobalStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}
*/

PRO_addStyle('.tip {font:10px/12px Arial,Helvetica,sans-serif;border:0;padding:3px 3px 3px 3px;visibility:hidden;position:absolute;z-index:100;color:#333333;top:20px;left:90px;background-color:#3B5998;}');
PRO_addStyle('.tip img {border:2px solid white;}');


function popUp(pgX,pgY,oi) {
	var winWidth = document.body.clientWidth;
	var winHeight = document.body.clientHeihgt;
	objStyle = document.getElementById(oi).style;
	obj = document.getElementById(oi);
	objWidth = obj.offsetWidth;
	if (objStyle.visibility == "visible") {
		objStyle.visibility = "hidden";
	}
	else {
		if ( (pgY + obj.offsetHeight) > winHeight )
			var top = pgY - obj.offsetHeight - 20;
		else
			var top = pgY + 20;

		var left = pgX - (objWidth/4);
		if (left < 2) left = 2;
		else if (left + objWidth > winWidth) left -= objWidth/2;

		left += 'px';
		top += 'px';

		objStyle.left = left;
		objStyle.top = top;
		objStyle.visibility = "visible";
	}

}

})();
