///////////////////////////////////////////////////////////
// CS Direct Monitor v.0.5
// Client-side Javascript Part
// http://www.controlstyle.ru/
///////////////////////////////////////////////////////////
function dmMain()
{
	if (typeof window.addEventListener != "undefined") 
	{
	  window.addEventListener("click", dmLogClick, false);
	}
	else if (typeof document.attachEvent != "undefined") 
	{
		document.attachEvent("onclick", dmLogClick);
	}
}
function dmFindLink(element) 
{
	while(element.parentNode) 
	{
		if (element.href) return element;
		element = element.parentNode;
	}
	return false;
}
function dmPrepareSpan(s)
{
	String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };
	var re = /<[^<>]+>/gi;
	var re2 = /[^a-z\.\-]+/g;
	var re3 = /\s/g;
	var re4 = /\s[a-z]+\s/g;
	s = s.replace(re, '');
	s = s.replace(re2, ' ');
	s = ' ' + s.replace(re3, '  ') + ' ';
	s = s.replace(re4, ' ');
	return s.trim();
}
function dmLogClick(e)
{
	var obj = (e.target)?e.target:event.srcElement;
	var spanUrl = 'n/a';
	var system = '';
	var now_system = '';
	obj = dmFindLink(obj);
	if (!obj) return true;
	// Исправлено - 2008-03-14 в 23:27, lissyara
	// true заменено на false - иначе глючит мой скрипт показа картинок в новом окне...
	// добавлено 2008-03-15 в 22:05
	// вернул обратно - перестали работать вообще все сылки на сайте =)))
	if (obj.href.indexOf('.yandex.ru/count')!=-1) 
		system = 'Yandex';
	if (obj.href.indexOf('.googlesyndication.com')!=-1) 
		system = 'Google';	
	if (obj.href.indexOf('.begun.ru/')!=-1) 
		system = 'Begun';
	if ( system=='')
		return true;
		
	if (dmXmlDoc)
	{
		if (obj.parentNode.parentNode &&  system=='Yandex')
		{
			var spanParent = obj.parentNode.parentNode;
			for (var i=0; i<spanParent.childNodes.length; i++)
			{
				var tmp = spanParent.childNodes[i];
				if (!tmp.className) continue;
				if (tmp.className.toLowerCase()=='url'&&tmp.tagName.toLowerCase()=='span')
				{
					spanUrl = dmPrepareSpan(tmp.innerHTML);
					text = (obj.innerText)?obj.textContent	:	obj.innerText;
				}
			}
		}
		/*if ( obj.parentNode && system=='Google' )
		{
			el = get_element(obj.parentNode,'adu','div');
			if ( !el )return true;
			el_1 = get_element(el,'adus','span');
			if ( !el_1 )return true;
			spanUrl = el_1.innerHTML;
			if ( obj.innerText)
					text =obj.innerText;
			else
				text =obj.textContent;
		
		}*/
		
		if (  system=='Begin' )
		{
			if ( obj.title!='')
			{
				spanUrl = obj.title;
				if ( obj.innerText)
					text =obj.innerText;
				else
					text =obj.textContent;
				
			}
			else
			{
				if (obj.parentNode.parentNode.tagName=='LI')
				{
					
					el = get_element(obj.parentNode.parentNode,'bgbanner','div');
					if ( !el )return true;
					
					el_1 = get_element(el,false,'div');
					
					if ( !el_1 )return true;
		
					el_2 = get_element(el_1,'begun snap_noshots','a');
					if ( !el_2 )return true;
				
					spanUrl = (el_2.title);
					if ( el_2.innerText)
						text =el_2.innerText;
					else
						text =el_2.textContent;
				//	 
				}
			}
		}
		//alert(text+';'+spanUrl+';'+location.href+';'+document.referrer+';'+system);
	
		var data = encodeURIComponent(obj.innerHTML+';'+spanUrl+';'+location.href+';'+document.referrer+';'+system);
		
		dmXmlDoc.open("GET", 'http://' + location.host + '/scripts/direct_monitor.php?data=' + data, true);
		dmXmlDoc.send(null);
	}
	return true;
}


function dmCreateXmlDoc()
{
	var dmXmlDoc = null;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	// and security blocked creation of the objects.
	 try {
	  dmXmlDoc = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
	  try {
	   dmXmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (E) {
	   dmXmlDoc = false;
	  }
	 }
	@end @*/
	if (!dmXmlDoc && typeof XMLHttpRequest!='undefined') {
		try {
			dmXmlDoc = new XMLHttpRequest();
		} catch (e) {
			dmXmlDoc=false;
		}
	}
	if (!dmXmlDoc && window.createRequest) 
	{
		try 
		{
			dmXmlDoc = window.createRequest();
		} catch (e) 
		{
		dmXmlDoc=false;
		}
	}
	return dmXmlDoc;
}
function get_element(e_parent,e_class,e_type)
{
	//alert(e_parent);
	for (i=0; i<e_parent.childNodes.length; i++)
	{
		var tmp = e_parent.childNodes[i];
		//alert(tmp);
		if (!tmp.className && e_class) continue;
		if ( tmp.nodeType!=3 && tmp.className.toLowerCase()==e_class&&tmp.tagName.toLowerCase()==e_type)
		{
			return tmp;
		}
	}
return false;
}
var dmXmlDoc = dmCreateXmlDoc();
dmMain();
///////////////////////////////////////////////////////////
// End Of CS Direct Monitor
///////////////////////////////////////////////////////////

