var schat = {
	version: 1.5,
	path: "http://group.uc.sina.com.cn/service/",
	id: "",
	url: "",
	name: ""
};

schat.swf_interface = function(swf_name) {
	if (isIE) {
		return window[swf_name];
	}
	else {
		return document[swf_name];
	}
};

schat.set_swf_init = function() {
	schat.chat.login();
};

schat.chat = {
	save_chat: null,
	send_btn: null,
	mess_inp: null,
	chat_view: null,
	chat_panel: null,
	chat_title: null,
	loading: null,
	relogin: null,
	nick: null,
	my_id: null,
	to_id: null,
	s_id: null,
	rep_str: "",
	now: null,
	otime: null,
	ctime: null,
	fall: 0,
	actTime: null,
	isCheckedTime: false
};

schat.chat.init = function(login_info) {
	var _self = schat.chat;
	_self.save_chat = $("save_chat");
	_self.send_btn = $("send_btn");
	_self.mess_inp = $("mess_inp");
	_self.chat_view = $("chat_view");
	_self.chat_panel = $("chat_panel");
	_self.chat_title = $("chat_title");
	_self.loading = $("loading");
	_self.relogin = $("relogin");
	
	if(login_info.result) {
		_self.my_id = login_info.my_id;
		_self.to_id = login_info.to_id;
		_self.ctime = login_info.chat_time;
		_self.chat_title.innerHTML = "新浪客服中心 - " + schat.name + "客服";
		_self.mess_inp.value = "最多可输入200字，Enter键直接发送";
		
		_self.send_btn.addListener("click", function(){schat.chat.chat();});
		_self.send_btn.addListener("mouseover", function(){_self.send_btn.style.backgroundPosition = "0 -44px";});
		_self.send_btn.addListener("mouseout", function(){_self.send_btn.style.backgroundPosition = "0 0px";});
		
		_self.save_chat.addListener("mouseover", function(){_self.save_chat.style.backgroundPosition = "0 -22px";});
		_self.save_chat.addListener("mouseout", function(){_self.save_chat.style.backgroundPosition = "0 0px";});
		_self.save_chat.addListener("click", function(){schat.chat.save_log();});
		
		_self.mess_inp.onkeydown = function(event) {
			event = event || window.event;
			_self.actTime = new Date();
			if(event.ctrlKey && event.keyCode == 13) {
				this.value += "\r\n";
				var r = this.createTextRange();
				r.moveStart("character",this.value.length);
				r.collapse(true);
				r.select();
				schat.chat.chk_byte();
				return false;
			}else if(event.keyCode == 13) {
				schat.chat.chat();
				return false;
			}else {
				schat.chat.chk_byte();
				return true;
			}
		};
		_self.mess_inp.onfocus = function() {
			if(schat.chat.rep_str == "" && this.value == "最多可输入200字，Enter键直接发送") {
				this.value = "";
			}
		};
		_self.mess_inp.onblur = function() {
			if(schat.chat.rep_str == "" && this.value == "") {
				this.value = "最多可输入200字，Enter键直接发送";
			}
		};
		
		_self.loading.hide();
		_self.relogin.hide();
		_self.chat_panel.show();
		_self.actTime = new Date();
		if (!schat.chat.isCheckedTime) schat.chat.check_act_time();
	}else {
		_self.chat_panel.hide();
		_self.loading.hide();
		_self.relogin.show();
		_self.relogin.innerHTML = '<div>对不起，客服忙，请您稍后再试或 <a href="javascript:schat.chat.leave_mess()">留言</a> 。</div><div><input type="button" class="btn" value="立即重试" onclick="window.location.reload();" /></div>';
	}
	
	schat.chat.resize();
	schat.chat.hello();
	window.focus();
	window.onresize = schat.chat.resize;
	window.onunload = schat.chat.logout;
};

schat.chat.hello = function() {
	var text_div = $$("div");
	text_div.innerHTML = '<div class="hello">您好，'+ schat.name +'客服很高兴为您服务。</div>';
	schat.chat.chat_view.appendChild(text_div);
};

schat.chat.set_sinfo = function(s_info) {
	if(!schat.chat.s_id) {
		schat.chat.s_id = s_info.s_id;
	}
};

schat.chat.login = function() {
	schat.id = getParamValue("url");
	schat.name = decodeURI(getParamValue("name"));
	schat.url = "http://woocall.uc.sina.com.cn/service"+ schat.id +"/"
	schat.swf_interface("interface").login(schat.url);
	document.title = schat.name + "客服";
};

schat.chat.chat = function() {
	if(!schat.chat.chk_time()) {
		alert("您的发言速度过快，请稍候再发。");
		return false;
	}
	if(!schat.chat.chk_byte()) return false;
	var _inp = schat.chat.mess_inp;
	if(_inp.value == "最多可输入200字，Enter键直接发送") return false;
	var text_str = _inp.value;
	text_str = text_str.trim();
	if(!text_str) {
		alert("请先输入内容，谢谢！");
		_inp.value = "";
		_inp.focus();
		return false;
	}
	if(schat.chat.rep_str == text_str) {
		var text_div = $$("div");
		text_div.innerHTML = '<span class="alert_1">请不要发送重复消息。</span>';
		schat.chat.chat_view.appendChild(text_div);
		schat.chat.chat_view.scrollTop = schat.chat.chat_view.scrollHeight;
		_inp.value = "";
		_inp.focus();
		return false;
	}
	schat.chat.rep_str = text_str;
	text_str = schat.chat.filter_str(text_str);
	
	var send_obj = {from: schat.chat.my_id, to: schat.chat.to_id, context: text_str};
	schat.swf_interface("interface").chat(send_obj);
	
	var text_div = $$("div");
	text_str = schat.chat.chk_link(text_str);
	text_str = text_str.replace(/\n/g, "<br\/>");
	text_str = '<span class="nick_1">我 ('+ get_time() +')：</span><span class="me">' + text_str + "</span>";
	text_div.innerHTML = text_str;
	schat.chat.chat_view.appendChild(text_div);
	schat.chat.chat_view.scrollTop = schat.chat.chat_view.scrollHeight;
	
	_inp.value = "";
	_inp.focus();
};

schat.chat.set_message = function(type,mess) {
	if(type == 1) {
		var text_div = $$("div");
		var text_str = URLdecode(mess.context);
		
		text_str = schat.chat.trf_str(text_str);
		text_str = schat.chat.chk_link(text_str);
		text_str = '<span class="nick_2">客服 '+ URLdecode(mess.from) +'['+ schat.chat.s_id +'] ('+ get_time() +')：</span><span class="cu">' + text_str + "</span>";
		text_div.innerHTML = text_str;
		schat.chat.chat_view.appendChild(text_div);
		schat.chat.chat_view.scrollTop = schat.chat.chat_view.scrollHeight;
		window.focus();
		schat.chat.fall = 0;
		schat.chat.mess_inp.focus();
	}else if(type == 3) {
		schat.chat.fall++;
		if(schat.chat.fall > 5) {
			$("interface").remove();
			alert("您和服务器的连接已经掉线，请检查网络连接！");
			window.close();
		}
	}
};

schat.chat.filter_str = function(str) {
	str = str.replace(/%/g, "％");
	str = str.replace(/>/g, "〉");
	str = str.replace(/</g, "〈");
	str = str.replace(/#/g, "＃");
	str = str.replace(/&/g, "＆");
	str = str.replace(/―/g, "-");
	return str;
};

schat.chat.trf_str = function(str) {
	str = str.replace(/％/g, "%");
	str = str.replace(/〉/g, "&gt;");
	str = str.replace(/〈/g, "&lt;");
	str = str.replace(/＃/g, "#");
	str = str.replace(/＆/g, "&");
	str = str.replace(/\n/g, "<br\/>");
	return str;
};

schat.chat.chk_link = function(str) {
	var reg_1 = /((http[s]?|ftp)?:\/\/(([\w-]+:)?[\w-]+@)?([\w-]+\.)+[\w-]+(:[\d]+)?(\/[\w-   .\/?%&=]*)?(#[\w,]+)?)/gi;
	str = str.replace(reg_1,"<a href='$1'>$1<\/a>");
	var reg_2 = /(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/gi;
	str = str.replace(reg_2,"<a href='mailto:$1'>$1<\/a>");
	return str;
};

schat.chat.chk_byte = function() {
	var length = 200;
	var _inp = schat.chat.mess_inp;
	var l = strlen(_inp.value);
	if(l <= length) {
		return true;
	}else {
		alert("您的输入超过限制了。");
		_inp.value = _inp.value.substring(0,length-1);
		return false;
	}
};

schat.chat.check_act_time = function() {
	var now = new Date();
	var noAct = 10 * 60 * 1000;
	if ((now - schat.chat.actTime) > noAct) {
		schat.chat.chat_panel.hide();
		schat.chat.loading.hide();
		schat.chat.relogin.show();
		schat.chat.relogin.innerHTML = '<div>对不起，由于您长时间未发言，系统自动断开您与客服的连接。如想提问请点击重试按钮重新开始，或 <a href="javascript:schat.chat.leave_mess()">留言</a> 给我们。</div><div><input type="button" class="btn" value="立即重试" onclick="window.location.reload();" /></div>';
		schat.chat.logout();
		$("interface").remove();
		return;
	}
	schat.chat.isCheckedTime = true;
	setTimeout("schat.chat.check_act_time()", 2000);
};

schat.chat.leave_mess = function() {
	location.href = "http://entry.group.uc.sina.com.cn/chat/leave_mess.html?id="+ schat.id + "&name=" + encodeURI(schat.name);
};

schat.chat.save_log = function() {
	var log_url = "http://entry.group.uc.sina.com.cn/service/save_file.php";
	var vid = schat.chat.chat_view.getAttribute("id");
	logSubmit(log_url, vid);
};

schat.chat.chk_time = function() {
	if(schat.chat.ctime == null) return true;
	schat.chat.now = new Date();
	if(schat.chat.otime == null) {
		schat.chat.otime = schat.chat.now;
		return true;
	}else {
		var _time = schat.chat.now.getTime() - schat.chat.otime.getTime();
		if(_time > schat.chat.ctime) {
			schat.chat.otime = schat.chat.now;
			return true;
		}else {
			return false;
		}
	}
};

schat.chat.logout = function() {
	var logout_url = schat.path + "logout.php?userid=" + schat.chat.my_id + "&e=" + Math.random();
	var snode = $$("script");
	snode.setAttribute("type", "text/javascript");
	snode.setAttribute("language", "javascript");
	snode.setAttribute("src", logout_url);
	snode.onload = function() {
		snode.remove();
	};
	if(navigator.appName == "Microsoft Internet Explorer") {
		snode.onreadystatechange = function() {
			if(snode.readyState == "complete" || snode.readyState == "loaded") {
				snode.remove();
			}
		};
	}
	document.body.appendChild(snode);
	
	if(schat.chat.s_id) {
		window.open("http://entry.group.uc.sina.com.cn/service/service_response.php?sid="+ schat.chat.s_id +"&cid="+ schat.chat.my_id +"","chat_sr"+ schat.chat.s_id +"","width=320, height=207, titlebar=no, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, status=no, top=100, left=100");
	}
	schat.chat.clear_cookie("chated"+schat.id);
};

schat.chat.get_cookie = function(name) {
	var _search = name + "=";
	var returnvalue = "";
	var offset,end;
	if(document.cookie.length > 0) {
		offset = document.cookie.indexOf(_search);
		if(offset != -1) {
			offset += _search.length;
			end = document.cookie.indexOf(";", offset);
			if(end == -1) end = document.cookie.length;
			returnvalue = unescape(document.cookie.substring(offset,end));
		}
	}
	return returnvalue;
};

schat.chat.clear_cookie = function(name) {
	var _exp = new Date();
	_exp.setTime(_exp.getTime() - 1);
	var cval = schat.chat.get_cookie(name);
	if(cval != null) document.cookie = name + "=" + cval + ";expires=" + _exp.toGMTString();
};

schat.chat.resize = function() {
	var w = document.documentElement.clientWidth;
	var h = document.documentElement.clientHeight;
	if(w > 400 && h >150) {
		schat.chat.mess_inp.setWidth(w - 80);
		schat.chat.chat_panel.setHeight(h - 2);
		schat.chat.chat_view.setHeight(h - 120);
	}
};
