var _msgLang = {
	M10	: "呼叫中...",
	M20	: "系统忙，请返回后重新操作...",
	M21	: "您的电话将要响铃，请注意接听",
	M22	: "对方占线，请稍后再拨",
	M23	: "您的电话未响应，请返回后重新操作",
	M24	: "请按语音提示操作",
	M25	: "系统忙，请返回后重新操作",
	M27	: "输入超时，请返回后重新操作",
	M28	: "系统忙，请返回后重新操作",
	M29	: "呼叫中断",
	M30	: "系统忙，请返回后重新操作",
	M31	: "对方电话正在响铃",
	M32	: "对方占线，请稍后再拨",
	M33	: "您拨打的电话无人接听,请稍候再拨",
	M34	: "您拨打的电话已接通",
	M36	: "对方不在线，请稍候重试",
	M38	: "系统忙，请返回后重新操作",
	M39	: "呼叫中断，请返回后重新操作",
	M44	: "通话中...",
	M48	: "余额不足，通话结束。请充值。",
	M49	: "通话结束",
	M50	: "系统忙，请返回后重新操作",
	M51	: "系统忙，请返回后重新操作",
	M99	: "系统忙，请返回后重新操作",
	M1001	: "获取信息失败，请重新登录后再试",
	M1002	: "获取信息失败，请重新操作",
	M1003	: "获取对方信息失败，请返回后重新操作",
	M1004	: "获取对方信息失败，请返回后重新操作",
	M1011	: "获取信息失败，请重新操作",//主叫ID为空
	M1012	: "获取对方信息失败，请返回后重新操作",//被叫ID为空
	M1005	: "对方余额不足,通话结束",
	M1006	: "您的余额不足,通话结束",
	M1008	: "您的余额不足,通话结束",
	M1009	: "对方余额不足,通话结束",
	M1101	: "获取信息失败，请重新操作",
	M2001	: "呼叫中...",
	M2002	: "呼叫中...",
	M2003	: "系统忙，请返回后重新操作"

	};
var _endMsg = ["22", "23", "27", "28", "29", "30", "32", "33", "36", "38", "39", "48", "49", "50", "51", "99", "1001", "1002", "1003", "1004", "1005", "1006", "1008", "1009", "1101", "2002"];

Array.prototype.has = function (child) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == child) return true;
	}
	return false;
};

/**
 * 通话类
 */
function Call() {

	/**
	 * 主叫方ID
	 */
	this.callerId = "";
	/**
	 * 主叫方电话号码
	 */
	this.callerNum = "";
	/**
	 * 被叫方ID
	 */
	this.receiverId = "";
	/**
	 * 被叫方电话号码
	 */
	this.receiverNum = "";
	/**
	 * 被叫方名字
	 */
	this.receiverName = "";
	/**
	 * 是否隐藏主叫号码，0隐藏，1不隐藏
	 */	
	this.displayNum	= "0";
	/**
	 * 服务id
	 */	
	this.serviceId	= "";
	/**
	 * 主叫基本通话费
	 */	
	this.callerRate	= "";
	/**
	 * 通话ID
	 */
	this.id = "";
	/**
	 * 是否通话成功,true 成功, false 失败
	 */
	this.callSuccess = false;
	
	this.show = Call_show;
	this.setCallerNum = Call_setCallerNum;
	this.call = Call_call;
	this.result = Call_result;
	this.status = Call_status;
	this.showStatus = Call_showStatus;
}

/**
 * 显示号码选择页面
 */
function Call_show() {
	var data = {
		receiverName:this.receiverName
		};
	var str = TrimPath.processDOMTemplate("call_select_phone_tpl", data);
	document.getElementById("callDiv").innerHTML = str;
	displayCallLoginInfo();
}

function Call_setCallerNum(num, displayNum) {
/*	var reg0 = /^0[0-9]{7,13}$/;
	var reg1 = /^01[35][0-9]{9,9}$/;
	if (!reg0.test(num) && !reg1.test(num)) {
		alert("电话号码格式不正确。");
		return false;
	}*/
	this.callerNum = num;
	this.displayNum = displayNum;
	_call.call();
}

function Call_call() {
	var data = {
		receiverName:this.receiverName
		};
	var str = TrimPath.processDOMTemplate("call_docall_tpl", data);
	document.getElementById("callDiv").innerHTML = str;
	
	$.get (
		root+'call.php', 
		{"callerId":_call.callerId, "callerNum":_call.callerNum, "receiverId":_call.receiverId,"receiverNum":_call.receiverNum,"displayNum":_call.displayNum,"serviceId":_call.serviceId,"callerRate":_call.callerRate,"rndVar":(new Date()).getTime()},
		function(msg) {
			//alert(msg);
			_call.result(msg);
		}
		);
}

function Call_result(msg) {
	if (msg != "") {
		var reg = /C[0-9]+/g;
		var lang = "";
		if (reg.test(msg)) {
			lang = "连接服务器成功，服务器正在处理...";
			this.id = msg;
			this.status();
		} else if (msg == "BIND") {
			lang = "对不起！您的请求频繁，请30分钟后再试！";
		} else {
			lang = eval("_msgLang.M" + msg);
			if (!lang) {
				lang = "出错啦，请重试！";
			}
		}
		var data = {
			status : lang,
			receiverName:this.receiverName
			};
		var str = TrimPath.processDOMTemplate("call_status_tpl", data);
		document.getElementById("callDiv").innerHTML = str;
	} else {
		var data = {
			status : "WebService异常",
			receiverName:this.receiverName
			};
		var str = TrimPath.processDOMTemplate("call_status_tpl", data);
		document.getElementById("callDiv").innerHTML = str;
	}
}

function Call_status() {
	$.get (
		root+'status.php', 
		{"callId":_call.id,"rndVar":(new Date()).getTime()},
		function(msg) {
			var msgs = msg.split(";");
			var bContinue = true;
			var show2002 = true;
			for (var i = 0; i < msgs.length; i++) {
				if (msgs[i] != "") {
					if (msgs[i] == "2002") {
						if (show2002) _call.showStatus(msgs[i]);
					} else {
						if (msgs[i] == "44") 
						{
							_call.callSuccess = true;
						}
						_call.showStatus(msgs[i]);
						show2002 = false;
					}
					if (_endMsg.has(msgs[i])) 
					{
						bContinue = false;
						if (_call.callSuccess && _call.id) 
						{
							//message.closeMessage();
							waitValue(_call.id);
							getBalance();
							var data = {};
							var str = TrimPath.processDOMTemplate("call_value_wait", data);
							try{
							document.getElementById("callDiv").innerHTML = str;	
							}catch(e){}
							//alert(_call.callSuccess + _call.id);
						}
					}
				}
			}
			if (bContinue) setTimeout("_call.status()", 300);
		}
		);
}

function Call_showStatus(msg) {
	if (msg != "" && msg != "2001") {
		var lang = eval("_msgLang.M" + msg);
		var data = {
			status : lang,
			receiverName:this.receiverName
			};
		var str = TrimPath.processDOMTemplate("call_status_tpl", data);
		document.getElementById("callDiv").innerHTML = str;
	}
}

var waitRs;
var call_value_info = {"M1":"满意", "M2":"一般", "M3":"不满意", "M4":"未评价"};
//var rrrsss = 0;
function waitValue(callCode)
{
//rrrsss++;
	if (!cfg.waitTimeStart)cfg.waitTimeStart = (new Date()).getTime();
	$.get
	(
		root+'phone.php',
		{"step":"chkCallValue","callId":_call.id,"rndVar":(new Date()).getTime()},
		function (msg)
		{
			//alert(msg);			
			if (msg) eval("waitRs = "+msg+";");
			else waitRs = "";
			
			//document.getElementById("rrss").innerHTML = rrrsss;
			
		}
	);
	
	if (!waitRs && ((new Date()).getTime() - cfg.waitTimeStart ) < 50000) 
	{
		setTimeout("waitValue('"+callCode+"')", 300);
	}
	else
	{
		cfg.waitTimeStart = "";
		if (waitRs.free_time)call_try_str = "(含1分钟免费试听服务)";
		else call_try_str = " ";
		var data = {
			service_id : waitRs.service_id,
			call_id : waitRs.call_id,
			call_price : waitRs.caller_price,
			call_try : call_try_str,
			call_time : waitRs.caller_time,
			call_cost : MathRound(waitRs.caller_cost-(waitRs.caller_base_price*waitRs.caller_time), 2),
			call_base : MathRound(waitRs.caller_base_price*waitRs.caller_time, 2),
			call_value: eval("call_value_info.M"+waitRs.sv_value)
			};
		if (waitRs.sv_value == 4)
		{

			var str = TrimPath.processDOMTemplate("call_value_no", data);
			$("#service_button").html("<input type='button' name='doServiceCall' id='button' onclick=\"reValue("+data.call_id+",selectRadio('radio_call_value'),"+data.service_id+");message.closeMessage();\" value=\"&nbsp;确  定&nbsp;\" />");
		}
		else
		{
			$("#infoTitle").html('服务评价');
			var str = TrimPath.processDOMTemplate("call_value_yes", data);	
			$("#service_button").html('<input type="button" name="doServiceCall" id="button" onclick="message.closeMessage(); return false;" value="&nbsp;返  回&nbsp;" />');
		}
		$("#callDiv_parent").html('');
		document.getElementById("service_call_info").innerHTML = str;	
		//alert('s');
		//alert(rs.cr_caller_time+"-"+rs.cr_caller_cost+"-"+rs.sv_value);
	}
}

function reValue(callId, value, serviceId)
{
	$.get
	(
		root+'phone.php',
		{"step":"reCallValue", "rId":callId, "value":value, "serId":serviceId, "rndVar":(new Date()).getTime()},
		function (msg)
		{
			//alert(msg);			
			if (msg == 'OK') alert('感谢您的评价');
			else alert('评价失败，请联系本站客服');

		}
	);			
}

function MathRound(v,e) 
{ 
	var t=1; 
	for(;e>0;t*=10,e--); 
	for(;e<0;t/=10,e++); 
	return Math.round(v*t)/t; 
} 