var ws, n = 0,
	timer, hidTel, hidCallID;
var lockReconnect = false; //避免重复连接
var obj = {};

var cls = 0;
var lasttime = new Date().getTime();
//创建scoket连接
function createWebSocket() {
	try {
		$("#top-search li i").removeClass("active");
		ws = new WebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
		Connect();
	} catch(e) {
		reconnect();
	}
}
//连接
function Connect() {
	try {
		ws.onopen = function() {
			console.log(new Date() + "    " + "建立连接");

			//心跳检测重置
			heartCheck.reset().start();

			cls = 0;
			$(".Login").addClass("active");
			//自动签入
			//lasttime = new Date().getTime();
			//obj.Type = "Login";
			//obj.AgentType = "0";
			Send();

		};
		//接收到消息的回调方法
		ws.onmessage = function(evt) {
			//如果获取到消息，心跳检测重置
			//拿到任何消息都说明当前连接是正常的
			heartCheck.reset().start();
			var myDate = new Date();
			console.log(myDate + "  receive  " + evt.data);
			var data = JSON.parse(evt.data)[0];
			if(data) {
				var rlt = data.Result;
				if(rlt == true) {
					var type = data.Type;
					switch(type.toLowerCase()) {
						//case "heart": HeartBack(); break;//心跳
						case "login":
							LoginBack();
							break; //签入
						case "logout":
							LogoutBack();
							break; //签出
						case "dropcall":
							DropCallBack();
							break; //挂断
						case "makecall":
							MakeCallBack();
							break; //外呼
						case "setstate":
							SetState(data);
							break; //置忙置闲
							//case "saybusy": SayBusyBack(data); break;
							//case "sayfree": SayFreeBack(data); break;
						case "meeting":
							MeetingBack();
							break; //多方通话
						case "transfer":
							TransferBack();
							break; //转移
						case "hold":
							HoldBack();
							break; //保持
						case "retrieve":
							RetrieveBack();
							break; //接回
						case "incoming":
							IncomingBack(data);
							break; //来电
						case "subscribe":
							SubScribeBack();
							break; //监测
						case "subscribecancel":
							SubScribeCancelBack();
							break; //停止监测
						case "agentstate":
							AgentStateBack(data);
							break; //坐席状态
						case "linestate":
							LineStateBack(data);
							break; //线路状态
						case "motorsetstate":
							SayFreeBack();
							break; //班长置闲
						case "linestateagent":
							LineStateAgentBack(data);
							break; //线路状态通知
						case "callid":
							CallIDBack(data);
							break; //获取callid
						case "recordpath":
							RecordPathBack(data);
							break; //录音返回
					}
				} else {
					if(rlt == false) {
						//layer.confirm('操作失败！', {
						//    btn: ['确定'] 
						//});
						$(".hwzt").text('操作失败！');
					} else {
						$(".hwzt").text(rlt);
						//layer.confirm(rlt, {
						//    btn: ['确定']
						//});
					}
				}
			}
		};
		//连接关闭的回调方法
		ws.onclose = function(evt) {
			if(cls == 0) {
				cls = 1;
				//console.log("连接关闭！");
				//layer.confirm('连接关闭！', {
				//    btn: ['确定']
				//});
				$(".hwzt").text('连接关闭！');
				$("#top-search li i").removeClass("active");
				reconnect();
			}
		};
		//连接发生错误的回调方法
		ws.onerror = function(evt) {
			//产生异常
			$(".hwzt").text('连接出现异常！');
			console.log(ws);
			if(ws == null || ws.readyState != ws.OPEN) {
				console.log(new Date() + "开始重连");
				reconnect();
			}

		};
	} catch(ex) {
		$(".hwzt").text('连接关闭 try-catch！');
		$("#top-search li i").removeClass("active");
		reconnect();
	}
}

//重连
function reconnect() {
	if(lockReconnect) return;
	lockReconnect = true;
	//没连接上会一直重连，设置延迟避免请求过多
	setTimeout(function() {
		console.log(new Date() + "    " + "重连中……");
		createWebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
		lockReconnect = false;
	}, 2000);
}

//发送
function Send() {
	if(ws.readyState != ws.OPEN) {
		reconnect();
	}
	if(ws.readyState == ws.OPEN) {
		console.log(new Date() + "  send  " + JSON.stringify(obj));
		ws.send(JSON.stringify(obj));
	}
}

//心跳检测
var heartCheck = {
	timeout: 25000, //25秒
	timeoutObj: null,
	serverTimeoutObj: null,
	reset: function() {
		clearTimeout(this.timeoutObj);
		clearTimeout(this.serverTimeoutObj);
		return this;
	},
	start: function() {
		var self = this;
		this.timeoutObj = setTimeout(function() {
			//这里发送一个心跳，后端收到后，返回一个心跳消息，
			//onmessage拿到返回的心跳就说明连接正常
			obj.Type = "Heart";
			Send();
			self.serverTimeoutObj = setTimeout(function() { //如果超过一定时间还没重置，说明后端主动断开了
				ws.close(); //如果onclose会执行reconnect，我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
			}, self.timeout)
		}, this.timeout)
	}
}

//签入
function LoginBack() {
	$("#top-search li i").removeClass("active");
	$(".Logout").addClass("active");
	$(".SayBusy").addClass("active");
	$(".MakeCall").addClass("active");

	$(".zxzt").removeClass("br").addClass("bl");//绿灯
	$(".fwzt").removeClass("br").addClass("bl");//绿灯
	$(".hwzt").text('');
}
//签出
function LogoutBack() {
	$("#top-search li i").removeClass("active");
	$(".Login").addClass("active");

	$(".zxzt").removeClass("bl").addClass("br");//红灯
	$(".fwzt").removeClass("bl").addClass("br");//红灯
	$(".hwzt").text('');
}
//来电
function IncomingBack(data) {
	if(data.CallID !=0 ){
		hidCallID = data.CallID;
	}else{
		hidCallID = Date.now();
	}
	hidTel = data.Number;
	var p = '<a href="javascript:;" class="active J_menuTab" data-id="./callScreen/callScreen.html?tel=' + hidTel + '&CallID=' + hidCallID + '">来电弹屏' + hidTel + ' <i class="fa fa-times-circle"></i></a>';
	$(".J_menuTab").removeClass("active");
	var nif = '<iframe class="J_iframe J_iframeNew" name="iframe' + hidCallID + '"  width="100%" height="100%" src="./callScreen/callScreen.html?Number=' + hidTel + '&CallID=' + hidCallID + '" frameborder="0" data-id="./callScreen/callScreen.html?tel=' + hidTel + '&CallID=' + hidCallID + '" seamless></iframe>';
	$(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(nif);
	$(".J_menuTabs .page-tabs-content").append(p);
}

//***************************************************
function CallIDBack(data) {
	//$(".hidCallID").val(data.CurrID);
}

//挂断
function DropCallBack() {
	$("#top-search li i").removeClass("active");
	$(".Logout").addClass("active");
	$(".SayBusy").addClass("active");
	$(".MakeCall").addClass("active");
	
	if(window.frames['iframe'+ hidCallID +'']){
		 window.frames['iframe'+ hidCallID +''].$(".td-call").hide();
	}
}
//线路状态通知
function LineStateAgentBack(data) {
	var obj = $("iframe:visible")
	//0分机不可用，1空闲，2摘机等待拨号，3正在拨号，4呼出振铃，5来电振铃，6通话中，7播放忙音中，8移除IP分机，9通话保持中
	if(data.State == '0') {
		$(".hwzt").text('分机不可用'); //左下角状态显示
		//$(".fwzt").removeClass("br").removeClass("bl");
		$(".fwzt").removeClass("bl").addClass("br");//20180508by fanlongfei 增加话机状态灯
		$(".zxzt").removeClass("bl").addClass("br");//20180508by fanlongfei 增加坐席状态灯
	}
	if(data.State == '1') {
		$(".hwzt").text('空闲'); //左下角状态显示
		$(".fwzt").removeClass("br").addClass("bl");
		$(".zxzt").removeClass("br").addClass("bl");//20180508by fanlongfei 增加坐席状态灯
		if(window.frames['iframe'+ hidCallID +'']){
			 window.frames['iframe'+ hidCallID +''].clearInter();
		}

		if(hidTel && hidCallID) {
			$.post(huayi.config.callcenter_url + 'CallInScreen/UpdateGJ', {
				callid: hidTel,
				"token": $.cookie("token")
			}, function(result) {
				result = JSON.parse(result);
				if(result.state.toLowerCase() == "success") {}
			})
		}

		$("#top-search li i").removeClass("active");
		$(".Logout").addClass("active");
		$(".SayBusy").addClass("active");
		$(".MakeCall").addClass("active");
		if(window.frames['iframe'+ hidCallID +'']){
			  window.frames['iframe'+ hidCallID +''].$(".td-call").hide();
		}

	}
	if(data.State == '2') {
		$(".hwzt").text('摘机等待拨号'); //左下角状态显示
	}
	if(data.State == '3') {
		$(".hwzt").text('正在拨号'); //左下角状态显示
	}
	if(data.State == '4') {
		$(".hwzt").text('呼出振铃'); //左下角状态显示
	}
	if(data.State == '5') {
		$(".hwzt").text('来电振铃'); //左下角状态显示
		//$(".fwzt").removeClass("bl").addClass("br");
		$(".fwzt").removeClass("br").addClass("bl");//20180508by fanlongfei 增加话机状态灯
		$(".zxzt").removeClass("bl").addClass("br");//20180508by fanlongfei 增加坐席状态灯
		if(hidTel && hidCallID) {
			$.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZL', {
				callid: hidCallID,
				"token": $.cookie("token")
			}, function(result) {
				result = JSON.parse(result);
				if(result.state.toLowerCase() == "success") {}
			})
		}
	}
	if(data.State == '6') {
		$(".hwzt").text('通话中'); //左下角状态显示
		$(".fwzt").removeClass("bl").addClass("br");
		$(".zxzt").removeClass("bl").addClass("br");//20180508by fanlongfei 增加坐席状态灯
		if(hidTel && hidCallID) {
			$.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZJ', {
				callid: hidCallID,
				"token": $.cookie("token")
			}, function(result) {
				result = JSON.parse(result);
				if(result.state.toLowerCase() == "success") {}
			})
		}

		//		$(".td-call").show();
		//		n = 0;
		$("#top-search li i").removeClass("active");
		$(".DropCall").addClass("active");
		$(".Hold").addClass("active");
		$(".Transfer").addClass("active");
		$(".Meeting").addClass("active");
		
		if(window.frames['iframe'+ hidCallID +'']){
//			setTimeout(window.frames['iframe'+ hidCallID +''].calling(), 500);/*2018-05-19 zhangshuangnan 修改  ps: 因软电话设置为 自动应答 通话时间不计时问题*/
			window.frames['iframe'+ hidCallID +''].calling();/*2018-05-19 zhangshuangnan 修改  ps: 因软电话设置为 自动应答 通话时间不计时问题*/
		}
		
	}
	if(data.State == '7') {
		$(".hwzt").text('播放忙音中'); //左下角状态显示
	}
	if(data.State == '8') {
		$(".hwzt").text('移除IP分机'); //左下角状态显示
	}
	if(data.State == '9') {
		$(".hwzt").text('通话保持中'); //左下角状态显示
	}
}

function toDub(i) {
	return i < 10 ? "0" + i : "" + i;
}
//外呼
function MakeCallBack() {
	$("#top-search li i").removeClass("active");
	$(".DropCall").addClass("active");
}

//置忙置闲
function SetState(obj) {
	if(obj.State == '5') {//来电振铃 点击置忙
		$(".SayBusy").removeClass("active");
		$(".SayFree").addClass("active");
		$(".zxzt").removeClass("bl").addClass("br");//红灯
		$(".hwzt").text('置忙');

	}
	if(obj.State == '2') {//2摘机等待拨号  点击置闲
		$(".SayBusy").addClass("active");
		$(".SayFree").removeClass("active");
		$(".zxzt").removeClass("br").addClass("bl");//绿灯
		$(".hwzt").text('空闲');
	}
}
//置忙
function SayBusyBack() {
	$(".SayBusy").removeClass("active");
	$(".SayFree").addClass("active");
}
//坐席班长置闲
function SayFreeBack() {
	$(".SayBusy").addClass("active");
	$(".SayFree").removeClass("active");
	$(".zxzt").removeClass("br").addClass("bl"); // 2018/05/08 by fanlongfei 增加坐席状态指示
	$(".hwzt").text('空闲');// 2018/05/08 by fanlongfei 增加坐席状态指示
}
//多方通话
function MeetingBack() {

}
//转移
function TransferBack() {
	$("#top-search li i").removeClass("active");
	$(".Logout").addClass("active");
	$(".SayBusy").addClass("active");
	$(".MakeCall").addClass("active");
}
//保持
function HoldBack() {
	$(".Hold").removeClass("active");
	$(".Retrieve").addClass("active");
}
//接回
function RetrieveBack() {
	$(".Hold").addClass("active");
	$(".Retrieve").removeClass("active");
}
//坐席监控开始监测
function SubScribeBack() {
	$('#content-main .J_iframeNew').each(function(i,n){
		if($(this).attr('data-id') == "./TelCall/SeatMonitor.html"){
			window.frames[$(this).attr("name")].Start();
		}
	})/*2018-05-24 zhangshuangnan 修改 解决通话中时 坐席监控状态不改变的问题*/
	
}
//取消监测
function SubScribeCancelBack() {
	$('#content-main .J_iframeNew').each(function(i,n){
		if($(this).attr('data-id') == "./TelCall/SeatMonitor.html"){
			window.frames[$(this).attr("name")].Stop();
		}
	})/*2018-05-24 zhangshuangnan 修改 解决通话中时 坐席监控状态不改变的问题*/
	
}
//班长监测返回状态
//坐席状态
function AgentStateBack(data) {
	$('#content-main .J_iframeNew').each(function(i,n){
		if($(this).attr('data-id') == "./TelCall/SeatMonitor.html"){
			window.frames[$(this).attr("name")].UpdateAgentState(data.AgentID, data.State);
		}
	})/*2018-05-24 zhangshuangnan 修改 解决通话中时 坐席监控状态不改变的问题*/
}
//线路状态
function LineStateBack(data) {
	$('#content-main .J_iframeNew').each(function(i,n){
		if($(this).attr('data-id') == "./TelCall/SeatMonitor.html"){
			window.frames[$(this).attr("name")].UpdateLineState(data.AgentID, data.State);
		}
	})/*2018-05-24 zhangshuangnan 修改 解决通话中时 坐席监控状态不改变的问题*/
}
//录音返回
function RecordPathBack(data) {
	//if ($(".hidTel").val() && $(".hidCallID").val()) {
	//    $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateLY', { callid: $(".hidCallID").val(),path:data.RecPath, "token": $.cookie("token") }, function (result) {
	//        result = JSON.parse(result);
	//        if (result.state.toLowerCase() == "success") {
	//        }
	//    })
	//}

	if(hidTel) {
		$.post(huayi.config.callcenter_url + 'CallInScreen/UpdateLY', {
			callid: data.CallID,
			path: data.RecPath,
			"token": $.cookie("token")
		}, function(result) {
			result = JSON.parse(result);
			if(result.state.toLowerCase() == "success") {}
		})
	}
}
//获取当前的日期时间 格式“yyyy-MM-dd HH:mm:ss”
function getNowFormatDate() {
	var date = new Date();
	var seperator1 = "-";
	var seperator2 = ":";
	var month = date.getMonth() + 1;
	var strDate = date.getDate();
	if(month >= 1 && month <= 9) {
		month = "0" + month;
	}
	if(strDate >= 0 && strDate <= 9) {
		strDate = "0" + strDate;
	}
	var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate +
		" " + date.getHours() + seperator2 + date.getMinutes() +
		seperator2 + date.getSeconds();
	return currentdate;
}