// trakcer js by wangxianbin@kingsoft.com
// 使用 cateid 需要 在调用 XYTracker(); 之前设置  _xy_cate_id = x;
var _xy_tracker_url = "http://tongji.api.xoyo.com/tracker.php";
var _xy_use_title_as_name = 0;
var _xy_install_tracker = 1;
var _xy_tracker_pause = 500;
var _xy_download_extensions = "7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|phps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip";

// Beginning script
function _xy_plug_normal(_xy_pl) {
	if (_xy_tm.indexOf(_xy_pl) != -1 && (navigator.mimeTypes[_xy_pl].enabledPlugin != null)) 
		return '1';
	return '0';
}

function _xy_plug_ie(_xy_pl)
{
	xy_found = false;
	document.write('<SCR' + 'IPT LANGUAGE=VBScript>\n on error resume next \n xy_found = IsObject(CreateObject("' + _xy_pl + '")) </SCR' + 'IPT>\n');
	if (xy_found) return '1';
	return '0';
}

var _xy_jav = '0'; if(navigator.javaEnabled()) _xy_jav='1'; // 测试是否允许 Java
var _xy_agent = navigator.userAgent.toLowerCase(); // 浏览器客户端信息
// 设置浏览器类型变量
var _xy_moz = (navigator.appName.indexOf("Netscape") != -1);
var _xy_ie = (_xy_agent.indexOf("msie") != -1);
var _xy_win = ((_xy_agent.indexOf("win") != -1) || (_xy_agent.indexOf("32bit") != -1));

// 判断客户浏览器是否支持cookie
var _xy_cookie = (navigator.cookieEnabled)? '1' : '0';
if((typeof (navigator.cookieEnabled) == "undefined") && (_xy_cookie == '0')) {
	document.cookie="_xy_testcookie"
	_xy_cookie=(document.cookie.indexOf("_xy_testcookie")!=-1)? '1' : '0';
}

var _xy_dir = '0'; // 是否支持"ShockWave Director
var _xy_fla = '0'; // 是否支持Flash
var _xy_pdf = '0'; // 是否支持PDF
var _xy_qt  = '0'; // 是否支持Quicktime
var _xy_rea = '0'; // 是否支持RealPlayer
var _xy_wma = '0'; // 是否支持MediaPlayer

if (_xy_win && _xy_ie){
	_xy_dir = _xy_plug_ie("SWCtl.SWCtl.1"); 
	_xy_fla = _xy_plug_ie("ShockwaveFlash.ShockwaveFlash.1"); 
	
	if (_xy_plug_ie("PDF.PdfCtrl.1") == '1' || _xy_plug_ie('PDF.PdfCtrl.5') == '1' || _xy_plug_ie('PDF.PdfCtrl.6') == '1') _xy_pdf = '1'; 	
	_xy_qt = _xy_plug_ie("Quicktime.Quicktime"); // Old : "QuickTimeCheckObject.QuickTimeCheck.1"	
	_xy_rea = _xy_plug_ie("rmocx.RealPlayer G2 Control.1");	
	_xy_wma = _xy_plug_ie("wmplayer.ocx"); // Old : "MediaPlayer.MediaPlayer.1"
} else {
	var _xy_tm = '';
	for (var i=0; i < navigator.mimeTypes.length; i++)
		_xy_tm += navigator.mimeTypes[i].type.toLowerCase();
	_xy_dir = _xy_plug_normal("application/x-director");
	_xy_fla = _xy_plug_normal("application/x-shockwave-flash");
	_xy_pdf = _xy_plug_normal("application/pdf");
	_xy_qt  = _xy_plug_normal("video/quicktime");
	_xy_rea = _xy_plug_normal("audio/x-pn-realaudio-plugin");
	_xy_wma = _xy_plug_normal("application/x-mplayer2");
}
	
var _xy_rtu = ''; // referrer
try {
	_xy_rtu = top.document.referrer;
} catch(e1) {
	if(parent){ 
		try{ _xy_rtu = parent.document.referrer; } catch(e2) { _xy_rtu=''; }
	}
}
if(_xy_rtu == '') {
	_xy_rtu = document.referrer;
}

function _xy_escape(_xy_str){
	if(typeof(encodeURIComponent) == 'function') {
		return encodeURIComponent(_xy_str);
	} else {
		return escape(_xy_str);
	}
}
var _xy_title = '';
if (document.title && document.title!="") _xy_title = _xy_escape(document.title);

var _xy_called;

function _xy_getUrlLog( _xy_action_name, _xy_site, _xy_pkurl, _xy_custom_vars )
{
	var _xy_custom_vars_str = '';
	if(typeof _xy_custom_vars == "undefined"){
		_xy_custom_vars = false;
	}
	if (_xy_custom_vars) {
		for (var i=0; i < _xy_custom_vars.length; i++) {
			if (!Array.prototype[i]){
				_xy_custom_vars_str = _xy_custom_vars_str + '&vars['+ escape(i) + ']' + "=" + escape(_xy_custom_vars[i]);
			}
		}
	}
	
	// add cateid param
	var _xy_cate_id_str = '';
	if(typeof _xy_cate_id == "undefined"){
		_xy_cate_id = false;
	}
	if ( _xy_cate_id ){
		_xy_cate_id_str = '&cateid='+_xy_cate_id;
	}
	
	var _xy_url = document.location.href;
	var _xy_da = new Date();
	var _xy_src = _xy_pkurl
		+'?url='+_xy_escape(document.location.href)
		+'&action_name='+_xy_escape(_xy_action_name)
		+'&idsite='+_xy_site
		+'&res='+screen.width+'x'+screen.height
		+'&h='+_xy_da.getHours()+'&m='+_xy_da.getMinutes()+'&s='+_xy_da.getSeconds()
		+'&fla='+_xy_fla+'&dir='+_xy_dir+'&qt='+_xy_qt+'&realp='+_xy_rea+'&pdf='+_xy_pdf
		+'&wma='+_xy_wma+'&java='+_xy_jav+'&cookie='+_xy_cookie
		+'&title='+_xy_title
		+'&urlref='+_xy_escape(_xy_rtu)
		+_xy_custom_vars_str
		+_xy_cate_id_str;
	return _xy_src;
}
function XYTracker()
{
	tongji_log( '', 0, _xy_tracker_url );
}

function tongji_log( _xy_action_name, _xy_site, _xy_pkurl, _xy_custom_vars )
{
	if(_xy_called && (!_xy_action_name || _xy_action_name=="")) return;
	var _xy_src = _xy_getUrlLog(_xy_action_name, _xy_site, _xy_pkurl, _xy_custom_vars );
	//alert(_xy_src);
	var i = new Image(1,1);
	i.src = _xy_src;
	i.onload = function() {  _xy_dummy(); }
	//document.writeln('<img src="'+_xy_src+'" alt="" style="border:0" />');
	if(!_xy_action_name || _xy_action_name=="") _xy_called=1;
	
  _xy_init_tracker(_xy_site, _xy_pkurl);
}

function _xy_add_event(elm, evType, fn, useCapture) 
{
	if (elm.addEventListener) { 
		elm.addEventListener(evType, fn, useCapture); 
		return true; 
	} else if (elm.attachEvent) { 
		var r = elm.attachEvent('on' + evType, fn); 
		return r; 
	} else {
		elm['on' + evType] = fn;
	}
}

var _xy_tracker_site, _xy_tracker_url;

function _xy_init_tracker(_xy_site, _xy_pkurl) 
{
	if( typeof(tongji_install_tracker) != "undefined" )
		_xy_install_tracker = tongji_install_tracker;
	if( typeof(tongji_tracker_pause) != "undefined" )
		_xy_tracker_pause = tongji_tracker_pause;
	if( typeof(tongji_download_extensions) != "undefined" )
		_xy_download_extensions = tongji_download_extensions;

	_xy_hosts_alias = ( typeof(tongji_hosts_alias) != "undefined" ? tongji_hosts_alias : new Array());
	_xy_hosts_alias.push(window.location.hostname);

	if( !_xy_install_tracker )
		return;

	_xy_tracker_site = _xy_site;
	_xy_tracker_url = _xy_pkurl;

	var _xy_ignore_regexp = '(?:^| )(tongji_ignore';
	if (typeof(tongji_ignore_classes) != "undefined")
		for(var i=0; i < tongji_ignore_classes.length; i++)
			_xy_ignore_regexp += '|' + tongji_ignore_classes[i];
	_xy_ignore_regexp += ')(?: |$)';

	var _xy_class = new RegExp(_xy_ignore_regexp);

	if (document.getElementsByTagName) {
		var targetTags = [ 'a', 'area' ];
		for (var j=0; j < targetTags.length; j++) {
			var linksElements = document.getElementsByTagName(targetTags[j])
			for (var i=0; i < linksElements.length; i++) {
				if( !_xy_class.exec( linksElements[i].className ) )
					_xy_add_event(linksElements[i], 'mousedown', _xy_click, false);
			}
		}
	}
}

function _xy_dummy() { return true; }

function _xy_pause(_xy_time_msec) {
	var _xy_now = new Date();
	var _xy_expire = _xy_now.getTime() + _xy_time_msec;
	while(_xy_now.getTime() < _xy_expire)
		_xy_now = new Date();
}

// _xy_type only 'download' and 'link' types supported
function tongji_track(url, _xy_site, _xy_url, _xy_type) 
{
	var _xy_image = new Image();
	_xy_image.onLoad = function() { _xy_dummy(); };
	_xy_image.src = _xy_url + '?idsite=' + _xy_site + '&' + _xy_type + '=' + escape(url) + '&rand=' + Math.random() + '&redirect=0';
 
	//alert(_xy_image.src);
	_xy_pause(_xy_tracker_pause);
}

function _xy_is_site_hostname(_xy_hostname) {
	var alias, offset;

	for (var i=0; i < _xy_hosts_alias.length; i++) {
		alias = _xy_hosts_alias[i];

		if( _xy_hostname === alias )
			return true;

		if ( alias.substr(0, 2) == "*." ) {
			if ((_xy_hostname) == alias.substr(2))
				return true;

			offset = _xy_hostname.length - alias.length + 1;
			if ((offset > 0) && (_xy_hostname.substr(offset) == alias.substr(1)))
				return true;
		}
	}

	return false;
}

function _xy_click(e)
{
	var source, tag;

	if (typeof e == 'undefined')
		var e = window.event;

	if (typeof e.target != 'undefined') 
		source = e.target;
	else if (typeof e.srcElement != 'undefined')
		source = e.srcElement;
	else return true;

	while ((tag = source.tagName) != 'A' && tag != 'AREA')
		source = source.parentNode;

	if( typeof source.href == 'undefined' )
		return true;
	var _xy_class = new RegExp('(?:^| )tongji_(download|link)(?: |$)');
	var _xy_download = new RegExp('\\.(' + _xy_download_extensions + ')$', 'i');
	var _xy_not_site_hostname = !_xy_is_site_hostname(source.hostname);
	var _xy_link_match = _xy_class.exec( source.className);
	var _xy_link_type = _xy_link_match ? _xy_link_match[1] : 0;

	if (_xy_link_type == 'link')
		_xy_not_site_hostname = 1;
	else if (!_xy_link_type)
		_xy_link_type = (_xy_download.test(source.href) ? 'download' : 'link');

	if( _xy_not_site_hostname || _xy_link_type == 'download' ) 
		tongji_track(source.href, _xy_tracker_site, _xy_tracker_url, _xy_link_type);

	return true;
}

XYTracker();