/**
 * copyright(c)2010 北京叁加伍网络科技有限公司 http://www.3jia5.com
 * @author 		LiTong
 * @version 	3jia5.1.0.js
 * @date 			2011-01-07
 * =================================================
 * 
 */
var _3jia5_analyser = {id:2,domain:"3158.cn",icon:0};
var _3jia5_diy = {};

function _3jia5_analyser_counter()
{
var _3jia5 = window._3jia5 = {};
_3jia5.analyser = {
  _host : 'countcn.3158.cn',
  _icon : 'http://countcn.3158.cn/count'+_3jia5_analyser.icon+'.gif',
	_cookieOptions : function(expires,path){
			path = path || '/';
			return expires ? {expires: expires,path: path,domain:_3jia5_analyser.domain} : {path: path,domain:_3jia5_analyser.domain};
	}
}
_3jia5.tool = {
	hashCode : function (str){
		str=str+"";
		var h = 0, off = 0;
		var len = str.length;
		for(var i = 0; i < len; i++){
			h = 31 * h  + str.charCodeAt(off++);
			if(h>0x7fffffff || h<0x80000000){
				h=h & 0xffffffff;
			}
		}
		return h;
	},
	randomNumeric : function(n){
		var rnd="";
		for(var i=0;i<n;i++)
		rnd+=Math.floor(Math.random()*10);
		return rnd;
	},
	queryString : function(key,uri){
		return (new RegExp("([^(&|\?)]*)" + key + "=([^(&|#)]*)").test(uri+"#")) ? RegExp.$2 : null;
	},
	getElementsByClassName : function(eleClassName){
		var getEleClass=[];//定义一个数组
		var myclass=new RegExp("\\b"+eleClassName+"\\b");//创建一个正则表达式对像
		var elem=document.getElementsByTagName("*");//获取文档里所有的元素
		for(var h=0;h<elem.length;h++){
			var classes=elem[h].className;//获取class对像
			if(myclass.test(classes))
				getEleClass.push(elem[h]);//正则比较，取到想要的CLASS对像
		}
		return getEleClass;//返回数组
	},
	trim : function(text) {
		return (text || "").replace( /^\s+|\s+$/g, "" );
	},
	toTopUpperCase : function(text){
		var temp_text;
		text.replace(/\b\w+\b/g, function(word){
			temp_text = word.substring(0,1).toUpperCase()+ word.substring(1);
	  });
	  return temp_text;
	},
	endsWith : function(str, suffix,bool){
		if(bool){
			str = str.toLowerCase();
			suffix = suffix.toLowerCase();	
		}
		return str.lastIndexOf(suffix) == (str.length - suffix.length);
	},
	//判断是否有中文
	hasChinese : function(temp){
		var patrn=/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi; 
		if(!patrn.exec(temp)){ 
			return false; 
		}else{ 
			return true; 
		} 
	},
	//options = {expires:365,path:'/',domain:'._3jia5.com',secure:true}
	cookie : function(name, value, options) {
		if (typeof value != 'undefined'){ // name and value given, set cookie
			options = options || {};
			if (value === null) {
				value = '';
				options.expires = -1;
			}
			var expires = '';
			if (options.expires	&& (typeof options.expires == 'number' || options.expires.toUTCString)) {
				var date;
				if (typeof options.expires == 'number') {
					date = new Date();
					date.setTime(date.getTime()	+ (options.expires * 24 * 60 * 60 * 1000));
				} else {
					date = options.expires;
				}
				expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
			}
			var path = options.path ? '; path=' + options.path : '';
			var domain = options.domain ? '; domain=' + options.domain : '';
			var secure = options.secure ? '; secure' : '';
			document.cookie = [name, '=', encodeURIComponent(value), expires, path,domain, secure].join('');
		} else { // only name given, get cookie
			var cookieValue = null;
			if (document.cookie && document.cookie != '') {
				var cookies = document.cookie.split(';');
				for (var i = 0; i < cookies.length; i++) {
					var cookie = _3jia5.tool.trim(cookies[i]);
					// Does this cookie string begin with the name we want?
					if (cookie.substring(0, name.length + 1) == (name + '=')) {
						cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
						break;
					}
				}
			}
			return cookieValue;
		}
	}
};
//=====================================================================================
_3jia5.analyser.location = function(){
	return window.location.href;
}

_3jia5.analyser.betaURI = function(uri){
	if(uri == null || uri == '') return '';
	else return (_3jia5.tool.hasChinese(uri)?encodeURI(uri):uri).replace(/&/g,'@');
}

/***获得域名***/
_3jia5.analyser.domain = function(url){
	if(url){
		url = url.substring(url.indexOf('://')+3);
		if(url.indexOf('/')>-1){
			url = url.substring(0,url.indexOf("/"));
		}else if(url.indexOf("?")>-1){
			url = url.substring(0,url.indexOf("?"));
		}
	}else
		url = document.domain; 
	return url;
}

//www.baidu.com 返回baidu
_3jia5.analyser.host = function(url){
	if(url.indexOf(".") != -1){
		url=url.substring(url.indexOf("."),url.lastIndexOf("."));
	}
	return url;
}

_3jia5.engines = new Array(); //搜索引擎
_3jia5.engines['self'] = [0,'自行输入'];
//_3jia5.engines['inside'] = 1;
_3jia5.engines['other'] = [2,'其它网站'];
_3jia5.engines['baidu'] = [10,'百度'];
_3jia5.engines['google'] = [11,'谷歌'];
_3jia5.engines['youdao'] = [12,'有道'];
_3jia5.engines['bing'] = [13,'必应'];
_3jia5.engines['yahoo'] = [14,'雅虎'];
_3jia5.engines['soso'] = [15,'腾讯搜搜'];
_3jia5.engines['sogou'] = [16,'搜狗'];

_3jia5.analyser.searchEngine = function(_referrer){
	
	//var _referrer = document.referrer;
	if(!_referrer ||_referrer.indexOf('.')==-1) return _3jia5.engines['self'];//自行输入
	else{
		/*var _href = _3jia5.analyser.location();
		if(_3jia5.analyser.domain(_referrer) == _3jia5.analyser.domain(_href)){
			 return 1;//内部跳转
		}else{*/
			var engine='';
			var _domain = _3jia5.analyser.domain(_referrer);
			
			var domainSplit=_domain.split('.');
			var _length = domainSplit.length;
			if(_length > 2){
				engine=domainSplit[1];
				if(domainSplit[2]=='yahoo') engine='yahoo';
			}else if(_length == 2){
				engine=domainSplit[0];
			}
		
			engine = _3jia5.engines[engine];
	
			return engine == undefined ? _3jia5.engines['other'] : engine;
		//}
	}
}

/***获得flash版本***/
_3jia5.analyser.flash = function(){
	var f="-1",n=navigator;
	if (n.plugins && n.plugins.length) {
		for (var ii=0;ii<n.plugins.length;ii++) {
		  if (n.plugins[ii].name.indexOf('Shockwave Flash')!=-1) {
		    f=n.plugins[ii].description.split('Shockwave Flash')[1];
		    break;
		  }
		}
	}else if (window.ActiveXObject) {
		for(var ii=10;ii>=2;ii--) {
			try {
		    var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");
		    if (fl) { f=ii + '.0'; break; }
		  }catch(e) {}
		}
	}
	if(f == "-1")
	    return f;
	else
	    return f.substring(0,f.indexOf(".")+2);
}

/***获取浏览器语言**/
_3jia5.analyser.lanuage = function(){
	return window.navigator.language || window.navigator.userLanguage;	
}

/******得到客户端的分辨率*****/
_3jia5.analyser.sense =function(){
	return window.screen.width+"x"+window.screen.height;
}
/******得到显示器的颜色*****/
_3jia5.analyser.color = function() {
	if (navigator.appName != "Netscape") {
		return screen.colorDepth;
	} else {
		return screen.pixelDepth;
	}
}

/**** alexa的局限性：
*Alexa工具栏仅在windows操作系统下，Internet Explorer浏览器中使用有效，
*使用其它操作系统或者浏览器的访问将不能被计数。
* 返回结果：1：表示使用alexa;0表示不存在。
******/
_3jia5.analyser.alexa = function(){
	if(document.all){
		var sc = document.createElement('script');
		sc.type = 'text/javascript';
		sc.id = "alexa_js";
		sc.src = 'res://AlxRes.dll/SCRIPT/dsn.class.js';
		document.getElementsByTagName('head')[0].appendChild(sc);
		try {
			aborted();
			return 1;
		} catch (e) {
			return 0;
		}
	}else{
		return 0;
	}
}

/******操作系统*****/
_3jia5.analyser.osVersion = {
	windows:{
		'95':'Window95',
		'98':'Window98',
		'9':'WindowME',
		'5.0':'Window2000',
		'5.1':'WindowXP',
		'5.2':'Window2003',
		'6.0':'Vista',// or Server 2008
		'6.1':'Window7',// or Server 2008 R2
		'other':'WindowNT'
	}
}

_3jia5.analyser.os = function() {
	var a = navigator.userAgent.toLowerCase();
	var m = /windows|linux|freebsd|mac/.exec(a);
	if (m == 'windows'){
		var v = /windows[^\d]+([\d.]+)/.exec(a);
		m = _3jia5.analyser.osVersion.windows[v[1]];
		if(m == undefined) m = _3jia5.analyser.osVersion.windows['other'];
	}
	return m;
}

/***得到客户端的浏览器类型***/
_3jia5.analyser.browserVersion = {} 
_3jia5.analyser.browser = function(){
	var ua = navigator.userAgent.toLowerCase();
	var b = ua.match(/maxthon|360|theworld|tencenttraveler|greenbrowser|gisoon|orca/i);
	if(b){
		b = b[0]=='tencenttraveler'?'TT':_3jia5.tool.toTopUpperCase(b[0]);
	}else{
    (b = ua.match(/msie ([\d.]+)/)) ? (b = 'IE' + b[1]):
		(b = ua.match(/firefox\/([\d.]{1,3})/)) ? /*(b = 'FireFox' + b[1])*/(b = 'FireFox'):
		(b = ua.match(/chrome\/([\d.]{1,3})/)) ? /*(b = 'Chrome' + b[1])*/(b = 'Chrome'):
		(b = ua.match(/opera.([\d.]{1,3})/)) ? /*(b = 'Opera' + b[1])*/(b = 'Opera'):
		(b = ua.match(/version\/([\d.]{1,3}).*safari/)) ? /*(b = 'Safari' + b[1])*/(b = 'Safari'): b = 'other';
	}
	return b;
}

//analyser_level = url|depth,url|depth,url|depth ……
_3jia5.analyser.level = function(cookie_level){
	var depth = 0;
	var _uri = _3jia5.tool.hashCode(window.location.href);
	var _referrer = _3jia5.tool.hashCode(document.referrer);
	if(cookie_level){
		var data = '';
		try{
			data = eval('({'+cookie_level+'})');
		}catch(e){
		}
		depth = data[_uri]||0;
		if(depth == 0){
			depth = (data[_referrer]||0) + 1;
			data = cookie_level + ',"'+_uri+'":'+depth;
			_3jia5.tool.cookie('analyser_level',data,_3jia5.analyser._cookieOptions());
		}
	}else{
		depth = 1;
		var data = '"'+_uri+'":'+1;
		_3jia5.tool.cookie('analyser_level',data,_3jia5.analyser._cookieOptions());
	}
	return depth;
}

_3jia5.analyser.pageon = {
	separator:'|',
	get:function(oldData){
		var day = new Date().getDay();
		var pageon = 1;
		if(oldData){
			var temp_oldData = oldData.split(this.separator);
			if(temp_oldData[1] == day){
				pageon += (+temp_oldData[0]);
			}
		}
		_3jia5.tool.cookie('analyser_pageon',pageon+this.separator+day,_3jia5.analyser._cookieOptions());
		return pageon;
	}
};
//入口来源(sourcepage)
_3jia5.analyser.sourcePage = function(){
		var sourcepage = _3jia5.tool.cookie('analyser_sourcepage');
		if(sourcepage == null){
			sourcepage = _3jia5.analyser.domain(document.referrer) == _3jia5.analyser.domain(_3jia5.analyser.location())?'':document.referrer;
			_3jia5.tool.cookie('analyser_sourcepage',sourcepage,_3jia5.analyser._cookieOptions());
		}
		return _3jia5.analyser.betaURI(sourcepage);
};
//=================================================================================================================
_3jia5.op = {};
/*
_3jia5.op.getGroupDomain = function(){
	return _3jia5.analyser.domain(document.referrer) == _3jia5.analyser.domain(_3jia5.analyser.location())?'':_3jia5.analyser.betaURI(document.referrer);
}*/

_3jia5.op.clientInfo = function(){
	
	var date = new Date();
	var time = date.getTime();
	var uv = _3jia5.tool.cookie('analyser_uv');
	var ug = _3jia5.tool.cookie('analyser_ug');
	var level = _3jia5.tool.cookie('analyser_level');
	var onlinetime = _3jia5.tool.cookie('analyser_time');
	var ugdomain = _3jia5.tool.cookie('analyser_ugdomain');
	var pageon = _3jia5.tool.cookie('analyser_pageon');
	var sourcepage = _3jia5.analyser.sourcePage();
	_3jia5.tool.cookie('analyser_time',time,_3jia5.analyser._cookieOptions());
	if(!uv){
		uv = ug = time + _3jia5.tool.randomNumeric(4);
		level = _3jia5.analyser.level();
		onlinetime = 0;
		_3jia5.tool.cookie('analyser_uv',uv,_3jia5.analyser._cookieOptions(365));
		_3jia5.tool.cookie('analyser_ug',ug,_3jia5.analyser._cookieOptions());
	}else if(!ug || !level){
		ug = time + _3jia5.tool.randomNumeric(4);
		level = _3jia5.analyser.level();
		onlinetime = 0;
		//ugdomain = _3jia5.op.getGroupDomain();
		_3jia5.tool.cookie('analyser_ug',ug,_3jia5.analyser._cookieOptions());
	}else{
		if(onlinetime)
			onlinetime = time - parseInt(onlinetime);
		else
			onlinetime = 0;
		level = _3jia5.analyser.level(level);
	}
	
	/*
	var now_day = date.getDay();
	var day = _3jia5.tool.cookie('analyser_day');
	if(!day || +day != now_day){
		day = now_day;
		_3jia5.tool.cookie('analyser_day',day,_3jia5.analyser._cookieOptions(1));
	}
	*/
	//============================
	_3jia5.tool.cookie('analyser_sense',_3jia5.analyser.sense(),_3jia5.analyser._cookieOptions());
	_3jia5.tool.cookie('analyser_color',_3jia5.analyser.color(),_3jia5.analyser._cookieOptions());
	_3jia5.tool.cookie('analyser_flash',_3jia5.analyser.flash(),_3jia5.analyser._cookieOptions());
	_3jia5.tool.cookie('analyser_browser',_3jia5.analyser.browser(),_3jia5.analyser._cookieOptions());
	_3jia5.tool.cookie('analyser_os',_3jia5.analyser.os(),_3jia5.analyser._cookieOptions());
	_3jia5.tool.cookie('analyser_level_val',level,_3jia5.analyser._cookieOptions());
	//============================
	
	var info = 'uv='+uv+'&ug='+ug;
		info +='&level='+level+'&onlinetime='+onlinetime+'&sourcepage='+sourcepage+'&pageon='+_3jia5.analyser.pageon.get(pageon);
		info +='&currentpage='+_3jia5.analyser.betaURI(_3jia5.analyser.location())+'&referrer='+_3jia5.analyser.betaURI(document.referrer);
		info +='&engine='+_3jia5.analyser.searchEngine(sourcepage)[0]+'&browser='+_3jia5.analyser.browser();
		info +='&color='+_3jia5.analyser.color()
		info +='&resolution='+_3jia5.analyser.sense()+'&alexa='+_3jia5.analyser.alexa();
		info +='&flash='+_3jia5.analyser.flash()+'&system='+_3jia5.analyser.os();
		info +='&id='+_3jia5_analyser.id;
		
		try{
			if(_3jia5_diy){
				for(var key in _3jia5_diy){
					info +='&'+key+'='+_3jia5_diy[key];
				}
			}
		}catch(e){
		}
	return info;
}
/***********页面执行************/
//return function(){
	var imgSrc='http://'+_3jia5.analyser._host+'/engine/count.html?'+ _3jia5.op.clientInfo();
	document.write('<img width="0" height="0" border="0" src="'+imgSrc+'"/>');
	document.write('<img style="border:none;" src="'+_3jia5.analyser._icon+'" alt="北京叁加伍流量统计" title="北京叁加伍流量统计" />');
//}
}
//_3jia5.op.reporting();

/*
var _3jia5_analyser = {id:1,domain:'xxx',icon:3}
var _3jia5_diy = {}
uv
ug

sourcepage
referrer 来源页面
engine 搜索引擎
browser 浏览器
color 颜色质量
resolution 分辨率
alexa 
flash 
system 操作系统
level 深度(tree型)
onlinetime 在线时长(毫秒)
*/
