
// ****************************************
// lavaImCaller.js ver 1.0
// 
// 此库用于使用 Lava-Lava 及其 WebIM 的网站调用。请先部署 WebIM，并配置 WebIM 的 config 目录下内容
// ****************************************

// ****************************************
// OEM配置部分
// 如果网页中添加了WebIM的oem_cfg.js，并在其中配置了lavaoemid，也可不在此配置lavaoemid
// ****************************************
if (typeof(lavaoemid)	=="undefined")	{ 
	var lavaoemid=0; 
}
// WebIM 网页部分的部署url路径
var baseWebIMUrl= 'http://api1.lava-lava.com/weblava/WebIM_lava_com/';


// ****************************************
// WebIM部分
// ****************************************
var webIMUrl	= baseWebIMUrl+'index.htm';
var webIMCookieUrl = baseWebIMUrl+'js/setImCookie.htm';
var webIM_window = null;
if (typeof(webImLang)=="undefined") { var webImLang='chs'; }

var SP2 = String.fromCharCode(2);

function getLocalHostTag(){
	var localHostTag = '';
	var arr = location.hostname.split('.');
	var localHostSplitLen = arr.length;
	if (localHostSplitLen==4 && IsInteger(arr[0]+arr[1]+arr[2]+arr[3])){ localHostTag += '_'+arr[localHostSplitLen-4]+'_'+arr[localHostSplitLen-3];	}
	if (localHostSplitLen>1) { localHostTag += '_'+arr[localHostSplitLen-2] }
	localHostTag += '_'+arr[localHostSplitLen-1];
	return localHostTag;
}

function lavaImOemAccountLoginSetCookie(chatSponsorID, chatSponsorPass, chatSponsorType, chatSponsorPassType){
	var localHostTag = getLocalHostTag();
	if (chatSponsorID && chatSponsorID!='' && chatSponsorPass && chatSponsorPass!=''){
		setImCookie('WebIM'+localHostTag+'_cookie',chatSponsorID+SP2+chatSponsorPass+SP2+chatSponsorType+SP2+chatSponsorPassType,1800);
	}	
}
function lavaImOemAccountLogoutClearCookie(){
	var localHostTag = getLocalHostTag();
	setImCookie('WebIM'+localHostTag+'_cookie','',1);
}

function lavaImOemChatWith( chatBuddyID, chatBuddyName, chatSponsorID, chatSponsorName, chatSponsorPass, chatBuddyType, chatSponsorType, chatSponsorPassType ) {
	// chatBuddyType - default(blank,0):gid   1:oem account
	// chatSponsorType - default(blank,0):gid   1:oem account
	// chatSponsorPassType - default(blank,0):password   1:md5password   2:passport
	
	var webChatUrl = webIMUrl+'?lang='+webImLang;
	var localHostTag = getLocalHostTag();
	if (chatSponsorID && chatSponsorID!='' && chatSponsorPass && chatSponsorPass!=''){
		setImCookie('WebIM'+localHostTag+'_cookie',chatSponsorID+SP2+chatSponsorPass+SP2+chatSponsorType+SP2+chatSponsorPassType,1800);
	}else{
		var str = getImCookie('WebIM'+localHostTag+'_cookie');
		if (str && str!=''){
			var arr = str.split(SP2);
			if (arr.length>1){
				chatSponsorID=arr[0];
				chatSponsorPass=arr[1];
				chatSponsorType=parseInt(arr[2]);
				chatSponsorPassType=parseInt(arr[3]);
	}	}	}

	webChatUrl += '&windowName=WebIM'+localHostTag+'&allowLogin=no&allowVisitor=y&autoVisitor=y&displayBuddyList=no';
	if(chatBuddyID){webChatUrl+='&chatBuddyID='+escape(chatBuddyID);}
	if(chatBuddyName){webChatUrl+='&chatBuddyName='+escape(chatBuddyName);}
	if(chatSponsorID){webChatUrl+='&chatSponsorID='+escape(chatSponsorID);}
	if(chatSponsorName){webChatUrl+='&chatSponsorName='+escape(chatSponsorName);}
	if(chatSponsorPass){webChatUrl+='&chatSponsorPass='+encodeURIComponent(chatSponsorPass);}
	if(chatBuddyType){webChatUrl+='&chatBuddyType='+chatBuddyType;}
	if(chatSponsorType){webChatUrl+='&chatSponsorType='+chatSponsorType;}
	if(chatSponsorPassType){webChatUrl+='&chatSponsorPassType='+chatSponsorPassType;}
	window.open(webChatUrl,'','width=640,height=400,menubar=0,toolbar=0,directories=0,location=0,status=0,scrollbars=0');
}


// 弹出窗口启动对话，无客户端就弹出WebIM，否则启动客户端。buddyGID为被叫者GID，gid为主叫方GID。
// buddyName 和 sPassport 必须是经过 escape 编码的，避免在其中存在特殊符号。sPassMD5是经过MD5编码的密码，避免密码传递泄露。
function lavaImChatWith( buddyGID, buddyName, gid, sPassport, sPassMD5 ) {
	if(!gid || gid=='') { gid = trim(GetCookie('lavaid')); }
	if(!sPassMD5 || sPassMD5=='') { sPassMD5 = trim(GetCookie('md5pass')); }

	// false 是因为为了推广，lava网站禁止启动客户端，而是直接启动WebIM
	if (false && check_is_lava_installed(lavaoemid)>0){ // 如果有客户端，则启动客户端
		var shtml;
		if(gid!='') { 
			shtml = "lava://chat?" + "gid=" + gid+ "&contact=" + buddyGID; 
		}else{
			shtml = "lava://chat?" + "contact=" + buddyGID;
		}
		var e=document.getElementById('iframe_lavaim_ctt');
		if (!e){
			e = document.createElement('iframe');
			e.id='iframe_lavaim_ctt';
			e.style.display='none';
			document.body.appendChild(e);
		}
		e.src = shtml;
		//window.opener=null;
		//setTimeout('window.close();', 1000 );
		return;			// 启动客户端后退出函数
	}
	// 如果没有检查到客户端，则弹出一个新的 webIM Chat 窗口
	var chatSponsorPassType = '0';
	if (sPassport && sPassport!=''){
		lavaImOemChatWith( buddyGID, unescape(buddyName), gid, '', sPassport, 0, 0, 2 );
	}else{
		if (sPassMD5 && sPassMD5!=''){
			lavaImOemChatWith( buddyGID, unescape(buddyName), gid, '', sPassMD5, 0, 0, 1 );
		}else{
			lavaImOemChatWith( buddyGID, unescape(buddyName) );
		}
	}
}

// ****************************************
// ctt部分
// ****************************************
var islavasetup		= 0;		// 0: 没安装  1: 完整版  2: mini版
var isdownloadctrl	= false;	// download lavactrl.cab

// thisBrowser =  isIE :  isOpera :  isFirefox  : ''
var thisBrowser = (navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0)? 'isIE': 
	 (navigator.userAgent.indexOf('Firefox') >= 0? 'isFirefox' :(navigator.userAgent.indexOf('Opera') >= 0?'isOpera':''));
			
// lava ctt control version info
var lavactrlclsid = "CLSID:8AE01514-0125-4597-BDA3-B44B94340E4A";
var lavacttcaburl = location.href.substring(0, location.href.indexOf('/', 7)+1) + 'download/lavactrl_test.cab#version=1,0,0,6';
var lavacttctrlurl = location.href.substring(0, location.href.indexOf('/', 7)+1) +'lavactrl.htm';
var lavactturl = location.href.substring(0, location.href.indexOf('/', 7)+1) +'lavactt.htm';
var _lava_version = null;

// ****************************************
// 【检查客户端】有关函数
// ****************************************

// 检查客户端安装 - 返回： 0 : 未安装  1 : 完整版2 : mini版
function check_is_lava_installed(oemid){
	// 如果不支持 ActiveXObject，就按没安装处理, Firefox 总是按照没安装处理
	if (!window.ActiveXObject){
		islavasetup = 0;
		return islavasetup;
	}
	if (oemid) { lavaoemid = oemid; }
	try{
		var obj = null;
		try {
			obj = new ActiveXObject("LAVACTRL.LavaCtrlCtrl.1");
			isdownloadctrl = (obj)?true:false;
			if (obj) {
				islavasetup = obj.IsLavaInstalled(lavaoemid);
				if (!islavasetup){
					islavasetup = obj.IsMiniLavaInstalled(lavaoemid, "2") ;
					if (islavasetup) islavasetup = 2;
			}	}
		}catch(e){	obj = null;	}
		if (!islavasetup && isdownloadctrl)
		try {
			obj = document.createElement("OBJECT");
			obj.classid = lavactrlclsid;
			obj.codeBase = lavacttcaburl;
			islavasetup = obj.IsLavaInstalled(lavaoemid);
			if (!islavasetup) {
				islavasetup = obj.IsMiniLavaInstalled(lavaoemid, "2") ;
				if (islavasetup) islavasetup = 2;
			}
		}catch(e){	}
	}catch(e){	}
	//alert('isdownloadctrl == ' + isdownloadctrl)
	//alert('lava__ver ==' + islavasetup );	
	return islavasetup;
}

// select install version!
function checkcttcall(s){
	var lava__ver = check_is_lava_installed(lavaoemid);
	if ( (lava__ver <= 0) || ((lava__ver==2)&&((s.indexOf('tribe') > 0) || (s.indexOf('call') > 0)))) { // 超出了所安装Mini版或WebIM所能支持的功能
		return false;
	}
	window.location.href = s;
	setTimeout('window.opener=null; window.close()', 1000 );
	return true;
}

// ****************************************
// 【ctt启动交流】有关函数
// ****************************************

function Standardtalkto(contactid, lavaid){
//	alert(contactid);
	if(!lavaid || lavaid=='') lavaid = GetCookie('lavaid');
	lavaid=trim(lavaid);
	//lavaid = (lavaid.indexOf(visitorZoneIdStr)>=0)? '':lavaid;
	var shtml;
	if(lavaid!='') shtml = "lava://chat?" + "gid=" + lavaid+ "&contact=" + contactid;
	else shtml = "lava://chat?" + "contact=" + contactid;
	checkcttcall(shtml);
}

function addContact(contactid,lavaid){
	if(!lavaid || lavaid=='') lavaid = GetCookie('lavaid');
	lavaid=trim(lavaid);
	var shtml;
	if(lavaid!='') shtml = "lava://add?" + "gid=" + lavaid+ "&contact=" + contactid;
	else shtml = "lava://add?" + "contact=" + contactid;   		
	checkcttcall(shtml);
}

function addtribe(tribeid,lavaid){
	if(!lavaid || lavaid=='') lavaid = GetCookie('lavaid');
	lavaid=trim(lavaid);
	var shtml;
	if(lavaid!='') shtml = "lava://addtribe?" + "gid=" + lavaid+ "&id=" + tribeid;
	else shtml = "lava://addtribe?" + "id=" + tribeid;
	checkcttcall(shtml);
}

function entertribe(tribeid,lavaid){
	if(!lavaid || lavaid=='') lavaid = GetCookie('lavaid');
	lavaid=trim(lavaid);
	var shtml;
	if(lavaid!='') shtml = "lava://entertribe?" + "gid=" + lavaid+ "&id=" + tribeid;
	else shtml = "lava://entertribe?" + "id=" + tribeid;
	checkcttcall(shtml);
}

function createtribe(lavaid){
	if(!lavaid || lavaid=='') lavaid = GetCookie('lavaid');
	lavaid=trim(lavaid);
	var shtml;
	if(lavaid!='') shtml = "lava://newtribe?" + "gid=" + lavaid;
	else shtml = "lava://newtribe?";
	checkcttcall(shtml);
}



// ***************************************
// 【系统】通用函数
// ***************************************

function trim(s){
	if (s) {
		return s.replace(/(^\s*|\s*$)/g,"");
	}else{
		return s;
	}
}
String.prototype.trim = function(){ return this.replace(/(^\s*)|(\s*$)/g, ""); }

function getCookieVal (offset){
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
   var arg = name + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while (i < clen){
      var j = i + alen;
      if (document.cookie.substring(i, j) == arg)
         return getCookieVal (j);
      i = document.cookie.indexOf(" ", i) + 1;
      if (i == 0) break; 
   }
   return '';
}

function setImCookie(name,value,seconds){
	if (seconds) {
		seconds = parseInt(seconds);
		if (seconds<0) { seconds = 30*24*60*60; }
	}else{ 
		seconds = 30*24*60*60; //此 cookie 将被保存 30 天 
	}
	var exp  = new Date();    //new Date("December 31, 9998");
	exp.setTime(exp.getTime() + seconds*1000);
	document.cookie = name + "="+ escape(value) +"; expires="+ exp.toGMTString()+"; path=/; ";
}
function getImCookie(name){
	var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
	if(arr != null) return unescape(arr[2]); return '';
}
