/**
 * @encode UTF-8
 * @js调用百度Hi接口
 *
 */

var Browser = new (function(){
	this.IE			= 0;
	this.Firefox	= 0;
	this.Opera		= 0;
	this.Safari		= 0;
	
	var version = navigator.userAgent.match(/(IE|Firefox|Opera|Safari)[ \/](\d+(\.\d+)?)/i);
	if (version && version.length) {
		this[version[1]] = parseInt(version[version.length-2]);
	}
})();

var startBaiduHi;
var startBaiduHiEx;

var p = function(){
	
	function baiduHiInit(){
		var div  = document.createElement('DIV');
		div.style.display = 'none';
		document.body.insertBefore(div, document.body.firstChild);
		div.innerHTML = '<form name="__IM_REDIRECT_FORM" method="GET" action=""></form>';
		
		// 用新窗口打开一个地址
		function _open(url){
			var form = document.forms["__IM_REDIRECT_FORM"];
			form.action = url;
			form.submit();
		}
		// 上报日志
		function _report(object){
			var c = document.createElement("script");
			document.body.appendChild(c);
			c.src='http://im.baidu.com/nop?' + _dumpx(object) + "&t=" + new Date().getTime();
		}
		
		// 将对象序列化成参数，不包括type字段
		function _dump(object){
			var l = [];
			for(prop in object){
				if(prop != 'type'){
					l.push(prop + '=' + object[prop]);
				}
			}
			return l.join('&');
		}
		
		// 将对象序列化成参数
		function _dumpx(object){
			var l = [];
			for(prop in object){
				l.push(prop + '=' + object[prop]);
			}
			return l.join('&');
		}		
		/**
		params的含义
		type: 操作的类型，目前包括message|addgroup|addcontact|creategroup|ccmsg
		sid:  自己的passport id，没有登录的时候传空
		id:   目标id, message的时候为聊天对象的passport id
						 addgroup的时候为要加入的群id
						 addcontact的时候为要加入的对象的passport id
						 其他类型请忽略
		arg1: 目标参数1, ccmsg时为商品id
		app:  调用方的类型如 tieba,passport
		custom: app自定义的数据，数据统计时用
		*/
		startBaiduHi = function(type,sid,id,arg1){
			startBaiduHiEx({
				'type' : type,
				'sid' : sid,
				'id' : id,
				'arg1' : arg1
			});
		}
		startBaiduHiEx = function(params){
    		
			//_open(promoURL);
			
			
			// 拼百度协议串
			var href = 'baidu://' + params['type'] + '/?' + _dump(params);
			if(Browser.IE){ 
				href = href + '&browser=IE';
			}else if(Browser.Firefox){
				href = href + '&browser=FF&promo=message|addgroup|creategroup';
			}

			_report(params);
		  
			var spt = "";
			if(Browser.IE){
				try{
				    var xmlhttp = new ActiveXObject('WebDetect.Detect');
				    spt = xmlhttp.GetVersion();
				}catch(e){}
			}
			if(Browser.Firefox){
				try{
				    if(typeof(navigator.mimeTypes['application/x-baiduhi']) == 'object'){
						spt= '.*';
					}
				}catch (e){}
			}
			
			// 未安装百度Hi，IE only
			if(spt == ""){
				var p = /message|addgroup|creategroup/i;            //此处保持和线上的承转页面一致
				
				// 跳到承转页
				if (params['type']){
					setTimeout(function(){
						
						// 未安装百度Hi跳转承转页地址
						var promoURL = 'http://im.baidu.com/promo/' + params['type'] + '.html';
						
						_open(promoURL);
						
						
					}, 300);                      
				}
				return false;
			}
			
			if(params['type'] == "prefix"){
				alert("操作完毕！可在百度Hi上查看挂图标的状态，并保持在线为你喜爱的选手投票吧！（必须要登录百度Hi才能成功挂图标）");
			}
			
			if(params['type'] == "delsegment"){
				alert("取消百度Hi客户端挂" + params['starname'] + "选手的图标（取消后不能再为该选手投票）");
			}
			
			var p = new RegExp(spt, 'i');
			if (Browser.IE && !p.test(params['type'])){
				return false;
			}
			window.location.href = href;
			return false;
	    }
	}
	startBaiduHi = function(type, sid, id, arg1){
		baiduHiInit();
		startBaiduHi(type, sid, id, arg1);
	}
	startBaiduHiEx = function(params){
		baiduHiInit();
		startBaiduHiEx(params);
	}
}();
