/**
 * copyright(c)2010 北京叁加伍网络科技有限公司 http://www.3jia5.com
 * @author 		LiTong
 * @version 	3158cn.1.4.3.js
 * @date 			2010-10-29
 * =================================================
 * 2009/10/18	修正来路中文乱码
 * 2009/10/20	修正刷新页面记录bug
 *						修正来路值，null改成空
 * 2009/10/22 修改模型
 * 2009/11/12 修改了浏览器和操作系统的信息
 * 2009/11/24 修改了浏览器信息
 * 2010/10/15 优化ok(留言成功页)页留言统计的准确性
 * 2010/10/18 新增sign(留言来源)统计
 * 2010/10/18 修改level(深度)统计(确保每天都从1开始~)
 * 2010/10/19 修正下sourcepage为空时候level一直为1
 *						优化代码
 * 2010/10/22 修正onlinetime NaN问题
 * 2010/10/25 修正okProcess bug
 * 2010/10/29 修改加载请求方式
 *						修改sign统计方式
 * =================================================
 * newsType 	咨询分类
 * okNewsType 通过访问 某咨询分类 产生的留言
 * okPageType 通过访问 news、zt、list 产生的留言，参数格式：xx|xx|xx
 * okReferrer 通过某项目（text、player、corpname）产生的留言
 * okProcess  产生留言的过程，参数格式：xx-xx-xx
 */

var analyser = {
	_host : 'analyser.3jia5.com',
	_imgPath : 'http://analyser.3jia5.com/',
	_domain : _counter.domain
};
var pageOpenTime = (new Date()).getTime();//进入页面的时间
var _analyserCookie = {path: '/',domain:analyser._domain};
var _analyserCookie_365 = {expires: 365,path: '/',domain:analyser._domain};
var engines=new Array(); //搜索引擎

engines['self'] = [0,'自行输入'];
//engines['inside'] = 1;
engines['other'] = [2,'其它'];

engines['baidu'] = [10,'百度'];
engines['google'] = [11,'谷歌'];
engines['youdao'] = [12,'有道'];
engines['bing'] = [13,'必应'];
engines['yahoo'] = [14,'雅虎'];
engines['soso'] = [15,'搜搜'];
engines['sogou'] = [16,'搜狗'];

/*3158.cn 定制版 begin*/
var cn3158 = {
	news:'新闻',
	zt:'小专题',
	list:'分类',
	text:'文字版项目',
	player:'视频版项目',
	corpname:'图片版项目',
	newsClass:'dhwz',
	okRegex:/^http:\/\/www\.3158\.cn\/ok\.shtml\?reff=http:\/\/www\.3158\.cn\/[\w\W]+&r=[\d]+&c=[\w]{32}$/,
	okSuccess:false
}

cn3158.getNewsType = function(){
	var objNews = analyser.getElementsByClassName(cn3158.newsClass);
	var typeHtml = '';
	if(objNews.length == 1){
		typeHtml = /&gt;&gt;\s*<[^>]+>([^<]+)/.exec(objNews[0].innerHTML);
		typeHtml = typeHtml?encodeURI(typeHtml[1]):'';
	}
	return typeHtml;
}
cn3158.getPageType = function(uri){
	var type = /\.3158\.cn\/([^\?\/]+)/.exec(uri?uri:analyser.location());
	//return type ? type[1] : type;
	return type ? (type[1].indexOf('.') < 0 ? type[1]:''):'';
}
cn3158.okProcess = function(_referrer,okReferrer){
	var res = '';
	var okProcess = '';
	if(cn3158['okSuccess']){//成功留言，读取okProcess，返回数据
		okProcess = analyser.cookie('okProcess');
		res = analyser.betaURI(okProcess?analyser.searchEngine(_referrer)[1]+'-'+okProcess+'-'+okReferrer:analyser.searchEngine(_referrer)[1]+'-'+okReferrer);
	}else{//存储pageType到okProcess
		var type = cn3158.getPageType();
		if(type){
			okProcess = analyser.cookie('okProcess');
			if(okProcess){
				var temp = okProcess.split('-');
				var len = temp.length;
				if(len > 9){
					temp.splice(0,len-9);
					okProcess = temp.join('-');
				}
				okProcess += '-'+type;
			}else{
				okProcess = type;
			}
			analyser.cookie('okProcess',okProcess,_analyserCookie);
		}
	}
	return res;
}
cn3158.okReferrer = function(){
	var okReferrer = '';
	if(cn3158['okSuccess']){//成功留言，返回数据
		//var ss = 'http://www.3158.cn/ok.shtml?reff=http://www.3158.cn/corpname/hbhuadayg/&r=5988&c=714441e628a7fcb8cb4556fb204057a4';
		var reff = analyser.querystring('reff',analyser.location());
		if(reff){
			okReferrer = cn3158.getPageType(reff);
			analyser.cookie('oksign',analyser.querystring('c',analyser.location()),_analyserCookie);
		}
	}
	return okReferrer;
}

cn3158.okNewsType = function(){//新闻分类引入的成功留言(留言成功，返回新闻分类；失败返回空)
	var okNewsType = '';
	if(cn3158['okSuccess']){//读取
		okNewsType = analyser.cookie('okNewsType');
		okNewsType = okNewsType?okNewsType:'';
	}else{//写入
		okNewsType = cn3158.getNewsType();
		if(okNewsType){
			analyser.cookie('okNewsType',okNewsType,_analyserCookie);
			okNewsType = '';
		}
	}
	return okNewsType;
}
cn3158.okPageType = function(type){
	var okPageType = '';//news|zt|list
	if(cn3158['okSuccess']){//成功留言，返回数据
		okPageType = analyser.cookie('okPageType');//获取news|zt|list
	}else{
		if(type == 'news' || type == 'zt' || type == 'list'){
			var temp = analyser.cookie('okPageType');
			if(temp){
				if(temp.indexOf(type) == -1)
					analyser.cookie('okPageType',temp+'|'+type,_analyserCookie);
			}else{
				analyser.cookie('okPageType',type,_analyserCookie);
			}
		}
	}
	return okPageType?okPageType:'';
}

cn3158.isOkReflush = function(){
	var res = false;
	if(cn3158['okSuccess']){
		if(okReferrer = analyser.cookie('oksign') == analyser.querystring('c',analyser.location())){
			res = true;
		}
	}
	return res;
}

cn3158.okSign = function(){
	var res = '';
	if(cn3158['okSuccess']){
		res = analyser.cookie('okSign');
		res = res ? res : '';
	}
	return res;
}

cn3158.tongji = function(_referrer){
	var type = cn3158.getPageType();
	var newsType = '';
	if(type == 'news'){
		newsType = cn3158.getNewsType();
	}
	var okReferrer = cn3158.okReferrer();
	var sgin = cn3158.okSign();
	sgin = sgin?('&sgin='+sgin):'';
	return 'newsType='+newsType+'&okNewsType='+cn3158.okNewsType()+'&okReferrer='+okReferrer+'&okPageType='+cn3158.okPageType(type)+'&okProcess='+cn3158.okProcess(_referrer,okReferrer)+sgin;
}

/*3158.cn 定制版 end*/

analyser.querystring = function (key,uri){
  return (new RegExp("([^(&|\?)]*)" + key + "=([^(&|#)]*)").test(uri+"#")) ? RegExp.$2 : null;
}
analyser.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;//返回数组
}

analyser.searchEngine = function(_referrer){
	
	//var _referrer = document.referrer;
	if(!_referrer ||_referrer.indexOf('.')==-1) return engines['self'];//自行输入
	else{
		/*var _href = analyser.location();
		if(analyser.domain(_referrer) == analyser.domain(_href)){
			 return 1;//内部跳转
		}else{*/
			var engine='';
			var _domain = 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 = engines[engine];
	
			return engine == undefined ? engines['other'] : engine;
		//}
	}
}

//判断是否有中文
analyser.hasChinese = function(temp){
	var patrn=/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi; 
	if(!patrn.exec(temp)){ 
		return false; 
	}else{ 
		return true; 
	} 
}

/***获得flash版本***/
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);
}

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

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

/**** alexa的局限性：
*Alexa工具栏仅在windows操作系统下，Internet Explorer浏览器中使用有效，
*使用其它操作系统或者浏览器的访问将不能被计数。
* 返回结果：1：表示使用alexa;0表示不存在。
******/
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;
	}
}

analyser.location = function(){
	return window.location.href;
}

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

/***获得域名***/
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
analyser.host = function(url){
	if(url.indexOf(".") != -1){
		url=url.substring(url.indexOf("."),url.lastIndexOf("."));
	}
	return url;
}

/******操作系统*****/
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'
	}
}
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 = analyser.osVersion.windows[v[1]];
		if(m == undefined) m = analyser.osVersion.windows['other'];
	}
	return m;
}

/***得到客户端的浏览器类型***/
analyser.browserVersion = {} 
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':analyser.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.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 = analyser.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;
	}
};
analyser.trim = function(text) {
	return (text || "").replace( /^\s+|\s+$/g, "" );
};
analyser.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;
};
analyser.endsWith = function(str, suffix,bool){
	if(bool){
		str = str.toLowerCase();
		suffix = suffix.toLowerCase();	
	}
	return str.lastIndexOf(suffix) == (str.length - suffix.length);
}
//=================================================================================================================
analyser.level = {
	separator:'|',
	get:function(oldData){
		var day = new Date().getDay();
		var res = 1;
		if(oldData){
			var temp_oldData = oldData.split(this.separator);
			if(temp_oldData[1] == day){
				res += (+temp_oldData[0]);
			}
		}
		return res+this.separator+day;
	},
	getDepth:function(data){
		return data ? data.split(this.separator)[0] : '1';
	}
};
//=================================================================================================================
var op = {};
//入口来源
op.getGroupDomain = function(){
	return analyser.domain(document.referrer) == analyser.domain(analyser.location())?'':analyser.betaURI(document.referrer);
}

op.clientInfo = function(){
	
	var uGUID = analyser.cookie('uGUID');
	var urlDepth = analyser.cookie('urlDepth');
	var uGroup = analyser.cookie('uGroup');
	var uGroupDomain = analyser.cookie('uGroupDomain');
	var _localurl = analyser.cookie('_localurl');
	
	if(!uGUID){//第一次访问或者清空cookie
		uGUID = Math.round(Math.random()*2147483647);
		analyser.cookie('uGUID',uGUID,_analyserCookie_365);
	}
	
	if(!urlDepth || !uGroup || !_localurl || !document.referrer ||!analyser.endsWith(analyser.domain(document.referrer),analyser._domain,true)){//浏览器打开后第一次访问
		urlDepth = analyser.level.get();
		uGroup = pageOpenTime;
		uGroupDomain = op.getGroupDomain();
		_localurl = analyser.location();
		analyser.cookie('urlDepth',urlDepth,_analyserCookie);
		analyser.cookie('uGroup',uGroup,_analyserCookie);
		analyser.cookie('uGroupDomain',uGroupDomain,_analyserCookie);
		analyser.cookie('_localurl',_localurl,_analyserCookie);
		analyser.cookie('cookietime','',_analyserCookie);
	}else	if(_localurl != analyser.location()){
		urlDepth = analyser.level.get(analyser.cookie('urlDepth'));
		analyser.cookie('urlDepth',urlDepth,_analyserCookie);
		analyser.cookie('_localurl',analyser.location(),_analyserCookie);
	}
	//============================
	analyser.cookie('analyser_sense',analyser.sense(),_analyserCookie);
	analyser.cookie('analyser_color',analyser.color(),_analyserCookie);
	analyser.cookie('analyser_flash',analyser.flash(),_analyserCookie);
	analyser.cookie('analyser_browser',analyser.browser(),_analyserCookie);
	analyser.cookie('analyser_os',analyser.os(),_analyserCookie);
	//============================
	var onlinetime = 0;
	var cookietime = analyser.cookie('cookietime');
	if(cookietime){
		onlinetime = parseInt((pageOpenTime - parseInt(cookietime))/1000);
	}
	analyser.cookie('cookietime',pageOpenTime,_analyserCookie);
	
	var info = 'uGUID='+uGUID+'&sourcepage='+uGroupDomain+'&currentpage='+analyser.betaURI(analyser.location())+'&referrer='+analyser.betaURI(document.referrer);
		info +='&engine='+analyser.searchEngine(uGroupDomain)[0]+'&browser='+analyser.browser();
		info +='&color='+analyser.color()+'&language='+analyser.lanuage();
		info +='&resolution='+analyser.sense()+'&alexa='+analyser.alexa();
		info +='&flash='+analyser.flash()+'&system='+analyser.os();
		info +='&level='+analyser.level.getDepth(urlDepth)+'&uGroup='+uGroup;
		info +='&'+cn3158.tongji(uGroupDomain)+'&onlinetime='+onlinetime;
	return info;
}
/***********页面执行************/
op.reporting = function(){
	
	var site = analyser.querystring('site',analyser.location());
	if(site){
		analyser.cookie('okSign',site,_analyserCookie);
	}
	
	var ok = _counter['type']== 2;
	if(ok){
		cn3158['okSuccess'] = cn3158['okRegex'].test(analyser.location());
	}
	
	if(!cn3158.isOkReflush()){
		if(ok && !cn3158['okSuccess']){
			return false;	
		}

		var imgSrc='http://'+analyser._host+'/engine/count.html?'+ op.clientInfo()+'&domainid='+_counter['domainid']+'&type='+_counter['type']+'&random='+pageOpenTime;
		document.write('<img width="0" height="0" border="0" src="'+imgSrc+'"/>');
	}
}

op.reporting();
if(_counter['icon'] != 0){
	document.write('<a href="#"><img style="border:none;" src="'+analyser._imgPath+'count'+_counter['icon']+'.gif" alt="3158Counter" title="3158Counter" /></a>');
}

