var Track = {
	IE: document.all?true:false,
	timenow: 0,
	mousex: 0,
	mousey: 0,
	scrollx: 0,
	scrolly: 0,
	windowx: 0,
	windowy: 0,
	scrollbar: 0,
	scrolling: 0,
	resizing: 0,
	url: location.href.toString(),
	align: 'left',
	server: 'http://track.allpokersites.com/',
	
	load: function(align) {
		var thisdate = new Date();
		Track.timenow = Math.round(thisdate.getTime()/1000);
		Track.align = align;
		Track.windowx = Track.windowWidth();
		Track.windowy = Track.windowHeight();
		Track.getScrollBar();
		if (!Track.IE) document.captureEvents(Event.MOUSEMOVE);
		document.onmousedown = Track.getClickXY;
		window.onscroll = Track.getScroll;
		window.onresize = Track.getResize;
		var string = Base64.encode('url='+Track.url+';wx='+Track.windowx+';wy='+Track.windowy+';ref='+document.referrer);
		var senddata = new Image();
		senddata.src = Track.server + 'load/'+string;
	},
	
	getScrollBar: function() {
		Track.scrollbar = document.body.offsetHeight>Track.windowy?1:0;
	},
	
	getScroll: function() {
		if (Track.scrolling) return true;
		Track.scrolling = 1;
		setTimeout('Track.sendScroll()', 1000);
	},
	
	sendScroll: function() {
		Track.scrolling = 0;
		Track.scrolly = Track.scrollTop();
		var string = Base64.encode('url='+Track.url+';top='+Track.scrolly+';wx='+Track.windowx+';wy='+Track.windowy);
		var senddata = new Image();
		senddata.src = Track.server + 'scroll/'+string;
	},
	
	getResize: function() {
		if (Track.resizing) return true;
		Track.resizing = 1;
		setTimeout('Track.sendResize()', 1000);
	},
	
	sendResize: function() {
		Track.resizing = 0;
		Track.windowx = Track.windowWidth();
		Track.windowy = Track.windowHeight();
		var string = Base64.encode('url='+Track.url+';wx='+Track.windowx+';wy='+Track.windowy);
		var senddata = new Image();
		senddata.src = Track.server + 'resize/'+string;
	},

	getClickXY: function(e) {
		if (Track.scrollbar) {
			if (Track.IE) {
				if (event.clientX>Track.windowx) return true;
			} else {
				if (e.pageX+16>Track.windowx) return true;
			}
		}
		var thisdate = new Date();
		if (Track.timenow == Math.round(thisdate.getTime()/1000)) return true;
		else Track.timenow = Math.round(thisdate.getTime()/1000);
		if (Track.IE) {
			Track.mousex = event.clientX + Track.scrollLeft();
			Track.mousey = event.clientY + Track.scrollTop();
		} else {
			Track.mousex = e.pageX  + Track.scrollLeft();
			Track.mousey = e.pageY;
		}
		if (Track.align == 'center') {
			if (Track.scrollbar && Track.documentWidth() > Track.windowx) Track.mousex = Math.round(Track.mousex-Track.documentWidth()/2);
			else if (Track.scrollbar && !Track.IE) Track.mousex = Math.round(Track.mousex-Track.windowx/2-8);
			else Track.mousex = Math.round(Track.mousex-Track.windowx/2);
		} else if (Track.align == 'right') {
			if (Track.scrollbar && Track.documentWidth() > Track.windowx) Track.mousex = Math.round(Track.documentWidth()-Track.mousex);
			else if (Track.scrollbar && !Track.IE) Track.mousex = Math.round(Track.documentWidth()-16-Track.mousex);
			else Track.mousex = Math.round(Track.windowx-Track.mousex);
		}
		var string = Base64.encode('url='+Track.url+';x='+Track.mousex+';y='+Track.mousey);
		var senddata = new Image();
		senddata.src = Track.server + 'click/'+string;
	},
	
	scrollLeft: function() {
		var result = window.pageXOffset?window.pageXOffset:0;
		result = (document.documentElement && result == 0)?document.documentElement.scrollLeft:result;
		result = (document.body && result == 0)?document.body.scrollLeft:result;
		return result;
	},

	scrollTop: function() {
		var result = window.pageYOffset?window.pageYOffset:0;
		result = (document.documentElement && result == 0)?document.documentElement.scrollTop:result;
		result = (document.body && result == 0)?document.body.scrollTop:result;
		return result;
	},
	
	windowWidth: function() {
		var result = window.innerWidth?window.innerWidth:0;
		result = (document.documentElement && result == 0)?document.documentElement.clientWidth:result;
		result = (document.body && result == 0)?document.body.clientWidth:result;
		return result;
	},

	windowHeight: function() {
		var result = window.innerHeight?window.innerHeight:0;
		result = (document.documentElement && result == 0)?document.documentElement.clientHeight:result;
		result = (document.body && result == 0)?document.body.clientHeight:result;
		return result;
	},

	documentWidth: function() {
		var result = document.body.parentNode.scrollWidth;
		if (Track.IE) {
			result = result - 20;
		} else {
			result = result - (Track.scrollbar?8:16);
		}
		return result;
	}

};

var Base64 = {

	//_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+|=",

	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		input = Base64._utf8_encode(input);
		while (i < input.length) {
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
		}
		return output;
	},

	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		//input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		input = input.replace(/[^A-Za-z0-9\+\|\=]/g, "");
		while (i < input.length) {
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			output = output + String.fromCharCode(chr1);
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
		}
		output = Base64._utf8_decode(output);
		return output;
	},

	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}
		return utftext;
	},

	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < utftext.length ) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}

}