		function getCookie(name) {
		  var dc = document.cookie;
		  var prefix = name + "=";
		  var begin = dc.indexOf("; " + prefix);
		  if (begin == -1) {
		    begin = dc.indexOf(prefix);
		    if (begin != 0) return null;
		  } else
		    begin += 2;
		  var end = document.cookie.indexOf(";", begin);
		  if (end == -1)
		    end = dc.length;
		  return unescape(dc.substring(begin + prefix.length, end));
		}

		function setCookie(cookieName,cookieValue,nDays) {
			var today = new Date();
			var expire = new Date();
			if (nDays==null || nDays==0) nDays=1;
			expire.setTime(today.getTime() + 3600000*24*nDays);
			document.cookie = cookieName+"="+escape(cookieValue)+";expires="+expire.toGMTString()+";path=/";
		}

		function opacity(id, opacStart, opacEnd, millisec) { 
			var speed = Math.round(millisec / 100); 
			var timer = 0; 
			var sh=1;
			if (opcounters[id]) {
				opcounters[id]++;
				sh=opcounters[id];
			} else {
				opcounters[id]=sh;
			}
			if(opacStart > opacEnd) { 
				if (opacities[id]) {
					if (opacities[id]<opacStart && opacities[id]!=0 && opacities[id]!=100) opacStart=opacities[id];
				}
				for(var u = opacStart; u >= opacEnd; u-=10) { 
					setTimeout("changeOpac(" + u + ",'" + id + "',"+sh+")",(timer * speed));timer+=10; 
				} 
			} else if(opacStart < opacEnd) { 
				if (opacities[id]) {
					if (opacities[id]>opacStart && opacities[id]!=0 && opacities[id]!=100) opacStart=opacities[id];
				}
				for(var u = opacStart; u <= opacEnd; u+=10) { 
					setTimeout("changeOpac(" + u + ",'" + id + "',"+sh+")",(timer * speed));timer+=10; 
				} 
			}
			sh++;
		}

		var cur_tip=0;

		String.prototype.replaceAll = function(strTarget,strSubString) {
			var strText = this;
//			var intIndexOfMatch = strText.indexOf( strTarget );
//			while (intIndexOfMatch != -1){
//				strText = strText.replace( strTarget, strSubString )
//				intIndexOfMatch = strText.indexOf( strTarget );
//			}
			return( strText );
		}

		function changeOpac(opacity, id, sh) { 
			var object = document.getElementById(id).style; 
			var proceed = true;
			if (sh) {
				if (opcounters[id]) {
					if (sh!=opcounters[id]) {
						proceed=false;
					}
				}
			}
			if (proceed) {
				opacities[id]=opacity;
				object.opacity = (opacity / 100); 
				object.MozOpacity = (opacity / 100); 
				object.KhtmlOpacity = (opacity / 100); 
				object.filter = "alpha(opacity=" + opacity + ")"; 
			}
		}

		function changeSize(wdt, hgt, id, fromwhere, perc) { 
			var object = document.getElementById('tip_inner').style;
			object.width = wdt+"px";
			object.height = hgt+"px";
		}

		function showhelp(obj,url,stype) {
			if (!is_help) {
				ofx=obj.offsetLeft;ofy=obj.offsetTop;k=obj;
				while (k.offsetParent) {
					k=k.offsetParent;
					ofx+=k.offsetLeft;
					ofy+=k.offsetTop;
				}
				if (stype=="left") {
					document.getElementById("qhelp").style.left='';
					document.getElementById("qhelp").style.right=document.getElementsByTagName('body')[0].clientWidth-ofx+2;
				} else {
					document.getElementById("qhelp").style.right='';
					document.getElementById("qhelp").style.left=ofx+12;
				}
				if (stype!="bottom") {
					document.getElementById("qhelp").style.top=ofy+13;
				} else {
					document.getElementById("qhelp").style.top=ofy+13;
				}
				document.getElementById("qhelp").innerHTML="...";
				document.getElementById("qhelp").style.display="";
				loadhelp("/qtip.shtml?"+url);
				is_help=true;
			} else {
				document.getElementById("qhelp").style.display="none";
				is_help=false;
			}
		}

		function showhelp_internal(obj,src_id,stype) {
			if (!is_help) {
				ofx=obj.offsetLeft;ofy=obj.offsetTop;k=obj;
				while (k.offsetParent) {
					k=k.offsetParent;
					ofx+=k.offsetLeft;
					ofy+=k.offsetTop;
				}
				if (stype=="left") {
					document.getElementById("qhelp").style.left='';
					document.getElementById("qhelp").style.right=document.getElementsByTagName('body')[0].clientWidth-ofx+2;
				} else {
					document.getElementById("qhelp").style.right='';
					document.getElementById("qhelp").style.left=ofx+12;
				}
				if (stype!="bottom") {
					document.getElementById("qhelp").style.top=ofy+13;
				} else {
					document.getElementById("qhelp").style.top=ofy+13;
				}
				document.getElementById("qhelp").innerHTML=document.getElementById(src_id).innerHTML;
				document.getElementById("qhelp").style.display="";
				is_help=true;
			} else {
				document.getElementById("qhelp").style.display="none";
				is_help=false;
			}
		}

		function loadhelp(url) {
			ajax_loadInto(url,"loader");
		}

		function toggle(id) {
			if (document.getElementById(id).style.display=="none") document.getElementById(id).style.display=""; else document.getElementById(id).style.display="none";
		}

		function itoggle(id) {
			if (document.getElementById(id).style.display=="none") document.getElementById(id).style.display=""; else document.getElementById(id).style.display="none";
		}

		function getTimestamp()
		{
			var humDate = new Date();
			return(humDate.getTime()/1000.0);
		}

		var k=0;

		function getFreeBox() {
			for (var i=0;i<msgBoxes.length;i++) {
				if (!msgBusy[i]) return(i);
			}
			return(-1);
		}

		function messageFade(id) {
			opacity('messageBox'+id,100,0,500);
			setTimeout("markAsRead("+id+")",600);
		}

		function markAsRead(id) {
			ajax_loadIntoCallback('/msg?mark='+msgIds[id], function(transport){
			});
			document.getElementById('messageBox'+id).style.display='none';
			if (msgTimeouts[id]) {
				clearTimeout(msgTimeouts[id]);
				msgTimeouts[id]=null;
			}
			msgBusy[id]=false;
		}

		function updateMessages() {
			ajax_loadIntoCallback('/msg?r='+Math.random(), function(transport){
					var rtext='{\"messages\":['+transport.responseText+']}';
					var json=new Object();
					try {
						json=eval('(' + rtext + ')');
					} catch (e) { }
					if (json.messages !== undefined) {
						for (var k=0;k<json.messages.length;k++) {
							var msg=json.messages[k];
							if (msg.id>last_msg) {
								messageBuffer.push(msg);
								last_msg=msg.id;
							}
						}
					}
			});
		}

		function showSession(sid,players) {
			if (document.getElementById('my_session')) {
				var cnt=document.getElementById('my_session');
				cnt.innerHTML="Стол #"+sid+": "+players.join(", ");
			}
		}

		function checkBuffer() {
			if (messageBuffer.length) {
				var boxId=getFreeBox();
				if (boxId>=0) {
					var msg=messageBuffer[0];
					if (msg.type==1) {
						changeOpac(0, "messageBox"+boxId);
						document.getElementById('mbOuter'+boxId).style.left="-150px";
						msgSliding[boxId]=1;
						msgIds[boxId]=msg.id;
						document.getElementById('messageBox'+boxId).style.display="";
						document.getElementById('mbDate'+boxId).innerHTML=msg.time;
						document.getElementById('mbInner'+boxId).innerHTML=msg.message;
						msgBusy[boxId]=true;
						opacity('messageBox'+boxId,0,100,500);
						if (msg.timeout>0) {
							setTimeout("messageFade("+boxId+")",msg.timeout*1000);
						}
					}
					messageBuffer.splice(0,1);
				}
			}
		}


		function listCallback(transport){
			if (transport.responseText.indexOf("<html")>0) {
				var tr=transport.responseText.split("<html");
				var rtext="{"+tr[0]+"}";
			} else {
				var rtext="{"+transport.responseText+"}";
			}
			var json=new Object();
			try {
				json=eval('(' + rtext + ')');
			} catch (e) { }
			if (json.state !== undefined) {
				for (var l=0;l<json.state.length;l++) {
					var ua_item=json.state[l];
				}
			}
			if (json.line !== undefined) {
				chat_line=json.line;
			}
			if (json.msg !== undefined) {
				if (json.msg>last_msg) {
					// updateMessages();
				}
			}
			if (goldMode) {
				if (json.activity_gold) {
					var act=json.activity_gold.split("|");
					for (var i=0;i<act.length;i++) {
						var l=act[i].split(";");
						if (document.getElementById("gamestatus_"+l[0])) {
							// document.getElementById("gamestatus_"+l[0]).innerHTML="Открытых столов: <b>"+l[1]+"</b><br>Столов в игре: <b>"+l[2]+"</b>";
							document.getElementById("gamestatus_"+l[0]).innerHTML="Открытых столов: <b>"+l[1]+"</b>";
						}
					}
				}
			} else {
				if (json.activity_silver) {
					var act=json.activity_silver.split("|");
					for (var i=0;i<act.length;i++) {
						var l=act[i].split(";");
						if (document.getElementById("gamestatus_"+l[0])) {
							// document.getElementById("gamestatus_"+l[0]).innerHTML="Открытых столов: <b>"+l[1]+"</b><br>Столов в игре: <b>"+l[2]+"</b>";
							document.getElementById("gamestatus_"+l[0]).innerHTML="Открытых столов: <b>"+l[1]+"</b>";
						}
					}
				}
			}
			if (json.registered) {
				if (document.getElementById('n_registered')) document.getElementById('n_registered').innerHTML=json.registered;
			}
			if (json.online) {
				if (document.getElementById('n_online')) document.getElementById('n_online').innerHTML=json.online;
				if (document.getElementById('n_online2')) document.getElementById('n_online2').innerHTML=json.online;
			}
			if (json.open) {
				if (document.getElementById('n_open')) document.getElementById('n_open').innerHTML=json.open;
				if (document.getElementById('n_open2')) document.getElementById('n_open2').innerHTML=json.open;
			}
			if (json.waiting) {
				if (document.getElementById('n_waiting')) document.getElementById('n_waiting').innerHTML=json.waiting;
			}
			if (json.playing) {
				if (document.getElementById('n_playing')) document.getElementById('n_playing').innerHTML=json.playing;
			}
		}

		function updateList() {
			checkBuffer();
			touchtime=getTimestamp();
			ajax_loadIntoCallback('/static/status.js?r='+Math.random(), listCallback);
		}

		function updatePanel() {
			var p=document.getElementById("panel");
			pY+=(ptY-pY)/4;
			p.style.marginTop=Math.round(pY)+"px";
		}

		function openPanel() {
			var p=document.getElementById("panel");
			ptY=0;
			document.getElementById("panelContentClosed").style.display="none";
			document.getElementById("panelContentOpen").style.display="";
			if (loggedIn) {
				ajax_loadInto("/process?t=panel_expand","loader");
			}
		}

		function closePanel() {
			var p=document.getElementById("panel");
			ptY=-66;
			document.getElementById("panelContentClosed").style.display="";
			document.getElementById("panelContentOpen").style.display="none";
			if (loggedIn) {
				ajax_loadInto("/process?t=panel_shrink","loader");
			}
		}

function updateChat() {
	if (chat_line>=current_line && chat_line>0) {
		ajax_loadIntoCallback('/static/chat/'+Math.floor(chat_line/20)+'.js?'+Math.random(), function(transport){
				var rtext=transport.responseText;
				rtext=rtext.replace('<html>\n<body>\n<sc'+'ript>\nuCs("',"");
				rtext=rtext.replace('");\n</sc'+'ript>\n</body>\n</html>',"");
				var rtext='{\"lines\":['+rtext+'{}]}';
				var json=new Object();
				try {
					json=eval('(' + rtext + ')');
				} catch (e) { }
				if (json.lines !== undefined) {
					var uCl=new Array();
					for (var m=0;m<json.lines.length;m++) {
						if (json.lines[m].line !== undefined) uCl.push(json.lines[m].line);
					}
					uCs(uCl.join("||"));
				}
		});
	}
}

function expandChat() {
	document.getElementById('chat_outer').style.height="350px";
	document.getElementById('ce').style.display="none";
	document.getElementById('cs').style.display="";
	disturbed=0;
	document.getElementById('chat_outer').scrollTop=document.getElementById('chat_outer').scrollHeight-document.getElementById('chat_outer').clientHeight;
//	setCookie("g_chatopen",1,30);
}

function shrinkChat() {
	document.getElementById('chat_outer').style.height="50px";
	document.getElementById('cs').style.display="none";
	document.getElementById('ce').style.display="";
	disturbed=0;
	document.getElementById('chat_outer').scrollTop=document.getElementById('chat_outer').scrollHeight-document.getElementById('chat_outer').clientHeight;
//	setCookie("g_chatopen",0,30);
}

function swapSound() {
	g_sound = (document.getElementById('sound_img').src.indexOf("/images/sound.gif")>-1) ? 0 : 1;
	setCookie("g_sound",g_sound,30);
	document.getElementById('sound_img').src=(g_sound==1) ? "/images/sound.gif": "/images/sound_disabled.gif"
}

function playSound(name) {
	var soundcontainer = document.getElementById('chat_sound');
	if (g_sound==1) {
		var flash = '<object style="visibility:hidden" classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="0" height="0">';
		flash += '<param name="movie" value="/images/' + name + '.swf">';
		flash += '<param name="quality" value="High">';
		flash += '<embed style="visibility:hidden" src="/images/' + name + '.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="0" height="0" />';
		flash += '</object>';
		soundcontainer.innerHTML = flash;
	}
}
