// ==UserScript==
// @name Mouse Gesture Track
// @author somh
// @ahmore@gmail.com
// @ujs:modified 16:13 2007-10-13
// ==/UserScript==

(function(){
	function mPos(ev){
		if(ev.pageX || ev.pageY){return {x:ev.pageX, y:ev.pageY};}
		return {
			x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
			y:ev.clientY + document.body.scrollTop - document.body.clientTop
		};
	}
	function mouseMove(ev){
			ev = ev || window.event;
			var pos = mPos(ev);
			if(rite){
				var dot=document.createElement('div');
    dot.style='position:absolute;z-index:9999;margin-left:-7px;margin-top:-7px;top:'+pos.y+'px;left:'+pos.x+'px;content:"\u25CF";color:red;opacity:0.5;';
				dot.className='mousetrack';
				document.body.appendChild(dot);
			}
	}
	function cleanTrack(){
		rite=0;var es=document.getElementsByTagName('div');
		for(var i=0;i<es.length;i++){if(es[i].className=='mousetrack'){es[i].parentNode.removeChild(es[i]);i--;}}
	}
	var rite=0;
	opera.addEventListener('BeforeEvent.mousedown',function(ev){ev=ev.event;if(ev.which==3){rite=1;setTimeout(function(){cleanTrack() ;},1500);}else{cleanTrack();}},false)
	opera.addEventListener('BeforeEvent.mouseup',function(){cleanTrack();},true)
	window.addEventListener('mousemove',mouseMove, false);
})()