var gxy_align_match = /[&;\/?]align=(center|left|right)([&;\/]|$)/.exec(gxy_url_params);
var gxy_type_match = /[&;\/?]type=(percent|absolute)([&;\/]|$)/.exec(gxy_url_params);
var gxy_align = gxy_align_match?gxy_align_match[1].substr(0,1):'x';
var gxy_type = gxy_type_match?gxy_type_match[1].substr(0,1):'x';
var gxy_images = new Image();
var gxy_last_x = -1;
var gxy_last_y = -1;

function gxy_add_event(ob,evname,fn) {
	if (ob.attachEvent) {
		ob.attachEvent("on"+evname,fn);
	} else if(ob.addEventListener) {
		ob.addEventListener(evname,fn, false);
	}
}

function gxy_get_window_params() {
	var w = window;
	var d = document;
	var dd;
	var wparam = 'r'+screen.width+','+screen.height;
	if (typeof w.innerWidth=='number') {
		wparam += '|s'+w.innerWidth+','+w.innerHeight+'|a'+gxy_align.substr(0,1)+'|t'+gxy_type.substr(0,1)+'|m'+w.pageXOffset+','+w.pageYOffset+'|p';
	} else if ( ((dd = d.documentElement) && (dd.clientWidth || dd.clientHeight)) || ((dd = d.body) && (dd.clientWidth || dd.clientHeight)) ) {
		wparam += '|s'+dd.clientWidth+','+dd.clientHeight+'|a'+gxy_align.substr(0,1)+'|t'+gxy_type.substr(0,1)+'|m'+dd.scrollLeft+','+dd.scrollTop+'|p';
	}
	if (d.body && typeof(d.body.scrollWidth)!='undefined' && typeof(d.body.scrollHeight)!='undefined') {
		wparam += d.body.scrollWidth+','+d.body.scrollHeight;
	}
	return wparam;
}

function gxy_delay() {
	var start = (new Date()).getTime();
	while (start+200>(new Date()).getTime());
}

function gxy_reset() {
	gxy_last_x = -1;
	gxy_last_y = -1;
}

function gxy_sendxy(x,y) {
	if (x<gxy_last_x-1 || x>gxy_last_x+1 || y<gxy_last_y-1 || y>gxy_last_y+1) {
		var href = new String(document.location.href);
		var gxy_url = gxy_host+'arg=1&sarg='+gxy_get_window_params()+'&href='+escape(href.substring(0,499))+'&ref=http%3A%2F%2F0.0.0.0%2Fxy%3D'+x+':'+y;
		var gxy_image = new Image();
		gxy_image.src = gxy_url;
		gxy_images[gxy_images.length] = gxy_image;
		if (window.opera) {
			var start = (new Date()).getTime();
			while (start+200>(new Date()).getTime());
		}
		gxy_last_x = x;
		gxy_last_y = y;
	}
}

function gxy_click(ev) {
	gxy_sendxy(ev.clientX,ev.clientY);
}

function gxy_flash(id,xx,yy) {
	var gxy_obj = document.getElementById(id);
        if (gxy_obj) {
		var x=0;
		var y=0;
		if (gxy_obj.offsetParent) {
			do {
				x += gxy_obj.offsetLeft;
				y += gxy_obj.offsetTop;
				gxy_obj = gxy_obj.offsetParent;
			} while (gxy_obj);
		} else {
			if (gxy_obj.x) {
				x = gxy_obj.x;
			}
			if (gxy_obj.y) {
				y = gxy_obj.y;
			}
		}
		x+=xx;
		y+=yy;
		gxy_sendxy(x,y);
	}
}

gxy_add_event(document,"click",gxy_click);
gxy_add_event(window,"unload",gxy_delay);
gxy_add_event(window,"scroll",gxy_reset);
gxy_add_event(window,"resize",gxy_reset);

