
var keynames = {
	13:'[Enter]',
	8:'[Backspace]',
	46:'[Delete]'
};

var old_position_x=0;
var old_position_y=0;

var unloaded=false;

var keeped_length=2000;

var width=(window.innerWidth)?window.innerWidth:((document.all)?document.body.offsetWidth:null);
var height=(window.innerHeight)?window.innerHeight:((document.all)?document.body.offsetHeight:null);
var page=window.location;


var is_clicked=0;
var input_ended=false;

var focus_x=0;
var focus_y=0;
var text='';
var coords_data='';

var inputTimeout;

var userBrowser = navigator.userAgent.toLowerCase();
var userBrowserName;
var docRef = document.referrer;
docRef = encodeURI(docRef);

getBrowserName();
constructSWF();
observe();

function getBrowserName() {
	if (userBrowser.indexOf("msie") != -1 ) {
		if (userBrowser.indexOf("msie 6") != -1 ) userBrowserName = "IE6";
		else if (userBrowser.indexOf("msie 7") != -1 ) userBrowserName = "IE7";
		else if (userBrowser.indexOf("msie 8") != -1 ) userBrowserName = "IE8";
		else if (userBrowser.indexOf("msie 9") != -1 ) userBrowserName = "IE9";
		else userBrowserName = "MSIEbased"
	}
	else if (userBrowser.indexOf("opera") != -1 ) userBrowserName = "Opera";
	else if (userBrowser.indexOf("firefox") != -1 ) userBrowserName = "FireFox";
	else if (userBrowser.indexOf("safari") != -1 && userBrowser.indexOf("chrome") == -1) userBrowserName = "Safari";
	else if (userBrowser.indexOf("konqueror") != -1 ) userBrowserName = "Konqueror";
	else if (userBrowser.indexOf("chrome") != -1 ) userBrowserName = "Chrome";
	else userBrowserName = "unknown";

}

function append(event) {
	var position_x = ((event&&event.pageX)?event.pageX:window.event.clientX);
	var position_y = ((event&&event.pageY)?event.pageY:window.event.clientY);
	if(is_clicked==0&&!checkPositions(position_x,position_y,5)) {
		 return;
	} else {
		old_position_x=position_x;
		old_position_y=position_y;
	}
	var scroll_left = (document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft);
	var scroll_top = (document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop);
	position_x-=scroll_left;
	position_y-=scroll_top;
	var date = new Date();
	var timestamp = date.getTime();
	var click = is_clicked;
	is_clicked=0;
	coords_data +=position_x+'||'+position_y+'||'+scroll_left+'||'+scroll_top+'||'+timestamp+'||'+click;
	if (input_ended) {
		coords_data +='||'+focus_x+'||'+focus_y+'||'+text+'##';
		input_ended=false;
		text='';
	} else {
		coords_data +='##';
	}
}

function checkPositions(cord_x,cord_y,accuracy) {
	var boolean_x=(cord_x>(old_position_x+accuracy)||cord_x<(old_position_x-accuracy));
	var boolean_y=(cord_y>(old_position_y+accuracy)||cord_y<(old_position_y-accuracy));
	return boolean_x&&boolean_y;
}

function confirmText() {
	input_ended=true;
}

function absPosition(obj) {
      var x = y = 0;
      while(obj) {
            x += obj.offsetLeft;
            y += obj.offsetTop;
            obj = obj.offsetParent;
      }
      return {x:x, y:y};
}

function appendText(e) {
	var pressedKey;
	if (!e) e = event;
	if (e.charCode)
    {
      pressedKey = e.charCode;
    }
    else if (e.keyCode)
    {
      pressedKey = e.keyCode;
    }
    else if (e.which)
    {
      pressedKey = e.which;
    }
    if (!keynames.hasOwnProperty(pressedKey)) {
    	pressedCharacter = String.fromCharCode(pressedKey);
    } else {
    	pressedCharacter = keynames[pressedKey];
    }
	text += pressedCharacter;
	focus_x=absPosition(document.activeElement).x;
	focus_y=absPosition(document.activeElement).y;
	clearTimeout(inputTimeout);
	inputTimeout=setTimeout(confirmText,2000);
}

function checkData() {
	 var params='coords='+coords_data+'&width='+width+'&height='+height+'&page='+page+'&site_id='+cite+'&browser='+userBrowser+'&bname='+userBrowserName+'&reflink='+docRef;
	 if (coords_data!=''&&(params.length>=keeped_length||unloaded)) {
	 	coords_data='';
	 	return params;
	 } else {
	 	return '';
	 }
}

function onUnload() {
	unloaded=true;
	checkData();
}

function listenParent() {
	  if(window.location.hash!='') {
	  	 var scrolls=window.location.hash.substr(1).split('||');
		 
		if (window.pageYOffset != undefined) { //is web-browser
			
			var scrollByX = window.pageXOffset;
			var scrollByY = window.pageYOffset;
			
		}
		else { //is ie
			
			if ( document.documentElement + "" == "[object]" ) { // if doctype with msie standarts type object
			
				var scrollByX = document.body.scrollLeft;
				var scrollByY = document.body.scrollTop;
				
			} else { // if doctype with w3c standarts type object
			
				var scrollByX = document.documentElement.scrollLeft;
				var scrollByY = document.documentElement.scrollTop;
				
			}
			
			
			
		}
		 
	  	 if (scrollByX !=scrolls[0] || parseInt(scrollByY) != parseInt(scrolls[1])) {
		 
			/*if (document.getElementById("testerDivIn")) {
				document.getElementById("testerDivIn").innerHTML += userBrowserName + "  |" + userBrowser + "<br>";
			}*/
		 
	  	 	 self.scrollTo(scrolls[0],scrolls[1]);
			 
	  	 }
	  }
	  setTimeout(listenParent,100);
}

function constructSWF() {
	document.write('<div style="position:absolute"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="sender" name="ssender" width="0" height="0" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"><param name="movie" value="http://www.zond.biz/tools/sender.swf"/><param name="quality" value="high"/><param name="bgcolor" value="#869ca7"/><param name="allowScriptAccess" value="always"/><embed src="http://www.zond.biz/tools/sender.swf" quality="high" bgcolor="#869ca7" width="0" height="0" name="sender" id="ssender" align="middle" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"></embed></object></div>');
}

var timeout=true;

function observe() {
   if (window.location == parent.location) {
	   document.onmousemove=append;
	   document.onmousedown=function(){is_clicked=1};
	   document.onkeypress=appendText;
       window.onunload=onUnload;
       window.onclose=onUnload;
	   window.onbeforeunload=onUnload;
   } else {
   	   listenParent();
   }
}