/**
*
*  skinable crossbrowser cursor
*  http://www.webtoolkit.info/
*
**/

var abCrosshair = {


	// public property. Skin path. You can change this one.
	// skinPath : '../styles/img/ziel.gif',
	skinPath : 'http://static.biathlon-award.org/styles/img/ziel.gif',
	noSkin: false,



	// private properties. Browser detect. Do not touch! :)
	IE : ( document.all && document.getElementById && !window.opera ),
	// FF : (!document.all && document.getElementById && !window.opera),
	// OP : (document.all && document.getElementById && window.opera),



	// private properties. Cursor attributes. Do not touch! :)
	cursor : {
		lt : { x : '0px',	y : '0px',	w : '19px',	h : '26px' ,	dx : -22,	dy : -22 },
		rt : { x : '19px',	y : '0px',	w : '26px',	h : '19px' ,	dx : -3,	dy : -22 },
		rb : { x : '26px',	y : '19px',	w : '19px',	h : '26px' ,	dx : 4,		dy : -3 },
		lb : { x : '0px',	y : '26px',	w : '26px',	h : '19px' ,	dx : -22,	dy : 4 }
	},

	// public method initialize.
	init : function () {

		if(location.href.indexOf('fan_voting') == -1 && location.href.indexOf('country=') == -1) {
			return;
		}

		abCrosshair.cursor.browserDelta = (abCrosshair.IE ? 2 : 0);
		abCrosshair.create();



		observe(document, 'mousemove', abCrosshair.move);


		/*
		var anchors = document.getElementsByTagName('a');
		for (x = 0; x < anchors.length; x++) {
			if(anchors[x].className.indexOf('lnshoot') == -1) {
				continue;
			}
			observe(anchors[x], 'mousemove', abCrosshair.events.anchor);
			observe(anchors[x], 'mouseout', abCrosshair.events.show);
		}
		*/

		var cells = document.getElementsByTagName('td');
		for (x = 0; x < cells.length; x++) {
			if(cells[x].className.indexOf('zielscheiben') == -1) {
				continue;
			}
			observe(cells[x], 'mousemove', abCrosshair.events.anchor);
			observe(cells[x], 'mouseout', abCrosshair.events.show);
		}


	},

	// private method. Create cursor
	create : function () {

		function create(el, d) {
			el.style.position = 'absolute';
			el.style.overflow = 'hidden';
			el.style.display = 'block';
			el.style.left = d.x;
			el.style.top = d.y;
			el.style.width = d.w;
			el.style.height = d.h;
			if ( abCrosshair.IE ) {
				el.innerHTML = '<img src="' + abCrosshair.skinPath + '" style="margin: -' + d.y + ' 0px 0px -' + d.x + '">';
			} else {
				el.style.background = 'url(' + abCrosshair.skinPath + ') -' + d.x + ' -' + d.y;
			}
			return el;
		}

		var c = abCrosshair.cursor;
		c.lt.el = create(document.createElement('div'), c.lt);
		c.rt.el = create(document.createElement('div'), c.rt);
		c.rb.el = create(document.createElement('div'), c.rb);
		c.lb.el = create(document.createElement('div'), c.lb);

		document.body.appendChild(c.lt.el);
		document.body.appendChild(c.rt.el);
		document.body.appendChild(c.rb.el);
		document.body.appendChild(c.lb.el);

	},


	// private method. Move cursor
	move : function (e) {

		function pos(el, x, y) {
			el.el.style.left = x + el.dx + 'px';
			el.el.style.top = y + el.dy + 'px';
		}

		function hide(el, x, y) {
			var w = document.documentElement.clientWidth;
			var h = document.documentElement.clientHeight;
			var deltaX = w - (x + el.dx + parseInt(el.w) - abCrosshair.cursor.browserDelta);
			var deltaY = h - (y + el.dy + parseInt(el.h) - abCrosshair.cursor.browserDelta);
			if (!abCrosshair.noSkin) {
				el.el.style.display = deltaX > 0 ? (deltaY > 0 ? 'block' : 'none') : 'none';
			}
		}

		var p = abCrosshair.getMousePosition(e);
		var s = abCrosshair.getScrollPosition();
		var c = abCrosshair.cursor;
		var x = p.x + s.x - c.browserDelta;
		var y = p.y + s.y - c.browserDelta;

		if(e == null) {e = window.event;}
		var el = (e.target) ? e.target : e.srcElement;


		if(el.className.indexOf('zielscheiben') != -1 || el.className.indexOf('lnshoot') != -1) {
			c.lt.el.style.visibility = 'visible';
			c.rt.el.style.visibility = 'visible';
			c.rb.el.style.visibility = 'visible';
			c.lb.el.style.visibility = 'visible';
		} else {
			c.lt.el.style.visibility = 'hidden';
			c.rt.el.style.visibility = 'hidden';
			c.rb.el.style.visibility = 'hidden';
			c.lb.el.style.visibility = 'hidden';
		}

		hide(c.lt, p.x, p.y);
		hide(c.rt, p.x, p.y);
		hide(c.rb, p.x, p.y);
		hide(c.lb, p.x, p.y);

		pos(c.lt, x, y);
		pos(c.rt, x, y);
		pos(c.rb, x, y);
		pos(c.lb, x, y);
	},


	// private method. Returns mouse position
	getMousePosition : function (e) {

		e = e ? e : window.event;
		var position = {
			'x' : e.clientX,
			'y' : e.clientY
		}

		return position;
	},


	// private method. Get document scroll position
	getScrollPosition : function () {
		var x = 0;
		var y = 0;

		if( typeof( window.pageYOffset ) == 'number' ) {
			x = window.pageXOffset;
			y = window.pageYOffset;
		} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			x = document.documentElement.scrollLeft;
			y = document.documentElement.scrollTop;
		} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			x = document.body.scrollLeft;
			y = document.body.scrollTop;
		}

		var position = {
			'x' : x,
			'y' : y
		}

		return position;

	},


	// private property / methods.
	events : {

		anchor : function (e) {
			abCrosshair.noSkin = true;
			document.body.style.cursor = 'pointer';

			var c = abCrosshair.cursor;
			/*c.lt.el.style.display = 'none';
			c.rt.el.style.display = 'none';
			c.rb.el.style.display = 'none';
			c.lb.el.style.display = 'none';
			*/
		},

		show : function () {
			abCrosshair.noSkin = false;
			document.body.style.cursor = 'crosshair';
		}

	}
}
/* abCrosshair.init(); */
