var server = 'http://' + location.hostname;
var rpc	   = '/utils/RPC.php';
var iFrame = null;

function ut() {var d = new Date(); return d.getTime();}

function reqObj(url, qs, handler) {
	this.url = url + '?' + qs + '&ut=' + ut();
	this.qs  = qs;
	this.handler = handler;
}

function rpcInvokeIframe(jsReqObj) {}

function rpcInvoke(jsReqObj) {
	var req = null;
	if (window.XMLHttpRequest) {
		try { req = new XMLHttpRequest() } catch(e) {}
	} else if (window.ActiveXObject) {
		try { req = new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
		if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) {}
	}
	if(req) {
		req.onreadystatechange = function() {
			if(req.readyState == 4) {
				if(req.status == 200) {
					try {
						var dom=req.responseXML;
						if(dom.parseError)
						  if(dom.parseError.errorCode != 0) {
							  alert('XML parser error: ' + dom.parseError.reason);
							  return false;
						  }
						
						var root=dom.documentElement;
						if(root.attributes.length) {
							var dst  = root.getAttribute("dst");
							if(dst.length > 0) {

							} else {

								dst = 'inside';
							}
						} else {
							dst = 'inside';
						}
						if(dst == 'inside') {
							jsReqObj.handler('XML', req.responseXML);
						} else {
								starter = new Function('type', 'obj', 
										'return ' + dst + '(type,obj)');
								starter('XML', req.responseXML);
						}
					} catch(e) {
						return false;
					}
				} else {

					return false;
				}
			}
		};
		
		req.open('GET', jsReqObj.url);
		req.send(null);
		
	} else {
//		alert(/* RPC отсутствует */ unescape('RPC%20%u043E%u0442%u0441%u0443%u0442%u0441%u0442%u0432%u0443%u0435%u0442'));
		return false;
	}
	
	return false;
}

function rpcAddFavourites(uid, group) {

	var qs = 'action=adl&dst=inside&uid=' + uid + '&group=' + group;
	var handler = function(type, resp) {

		if(type=='XML') {
			var root = resp.documentElement;
			var code = root.getElementsByTagName('code')[0].firstChild.data;
			var msg  = root.getElementsByTagName('description')[0].firstChild.data;
			if(code==200) {
			// user successfully added
				if(msg == 1) {
					var s = '%u0432%20%u0434%u0440%u0443%u0437%u044C%u044F';
				} else {
					var s = '%u0432%20%u0447%u0435%u0440%u043D%u044B%u0439%20%u0441%u043F%u0438%u0441%u043E%u043A';
				}
				alert(/* Пользователь добавлен */ unescape('%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D') + ' ' + unescape(s));
			} else if(code==100) {
				alert(/* Вы не можете добавить самого себя */ unescape('%u0412%u044B%20%u043D%u0435%20%u043C%u043E%u0436%u0435%u0442%u0435%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0430%u043C%u043E%u0433%u043E%20%u0441%u0435%u0431%u044F'));
			} else if(code==401) {
				alert(/* Вам нужно авторизоваться, чтобы общаться с пользователями */ unescape('%u0412%u0430%u043C%20%u043D%u0435%u043E%u0431%u0445%u043E%u0434%u0438%u043C%u043E%20%u0432%u043E%u0439%u0442%u0438%20%u043D%u0430%20%u0441%u0430%u0439%u0442%2C%20%u0447%u0442%u043E%u0431%u044B%20%u043E%u0431%u0449%u0430%u0442%u044C%u0441%u044F%20%u0441%20%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044F%u043C%u0438'));
			} else {
				alert(/* Ошибка сервера */ unescape('%u041E%u0448%u0438%u0431%u043A%u0430%20%u0441%u0435%u0440%u0432%u0435%u0440%u0430'));
			}
		}
	};
	
	var jsQuery = new reqObj(server + rpc, qs, handler);
	
	if(!rpcInvoke(jsQuery))
		rpcInvokeIframe(jsQuery);

	return false;
}

function rpcCheckMsg(uid) {

	if(window.go_server == 0) 
		return false;
	
	var qs = 'userid='+uid;
	var handler = function(type, resp) {
		if(type=='XML') {
			var root = resp.documentElement;
			var code = root.getElementsByTagName('code')[0].firstChild.data;
			var msg  = root.getElementsByTagName('description')[0].firstChild.data;
			var newInt = parseInt(root.getElementsByTagName('interval')[0].firstChild.data)*1000;
			if(newInt <= 0) { newInt = 10000; }
//			if(uid==5555) {
//				alert(newInt);
//			}
			if(code==200) {
				renewMsgWindows(resp);
				setTimeout("rpcCheckMsg("+uid+")", newInt);
			} else {
				try { clearInterval(intID); } catch(e) {}
				window.location.reload();
				//alert("Сервер сообщает об ошибке");
			}
		}
	};
	
	var jsQuery = new reqObj(server + '/im/poll/short.php', qs, handler);
	
	if(!rpcInvoke(jsQuery)) { 
		//clearInterval(intID);
		rpcInvokeIframe(jsQuery);
	}

	return false;

}

function renewMsgWindows(resp) {
	var root = resp.documentElement;
	var pkts = root.getElementsByTagName('packet');

	for(i=0;i<pkts.length;i++) {
		var pkt = pkts[i];
		var uid = pkt.getAttribute("uid");
		sendMessageA(uid);
	}
}

function pollNewMessages(d){if(window.go_server==0)return false;$.ajax({cache:false,url:"/im/poll/short.php",timeout:5000,data:{userid:d},success:function(a){var r=a.documentElement;var b=r.getElementsByTagName('interval');var c=parseInt(((b&&b[0]&&b[0].firstChild&&b[0].firstChild.data)?b[0].firstChild.data:10));if(!isNaN(c)&&c>=5&&c<=20){}else{c=10}window.msgPollInterval=1000*c;try{clearTimeout(window.msgPoller)}catch(e){}window.msgPoller=setTimeout('pollNewMessages('+d+')',window.msgPollInterval);renewMsgWindows(a)}});var f=(window&&window.msgPollInterval)?parseInt(window.msgPollInterval):10000;if(!isNaN(f)&&f>=5000&&f<=20000){}else{f=10000};window.msgPoller=setTimeout('pollNewMessages('+d+')',f)}
