// JavaScript Document

var httpData   = XMLHttp();
var httpTime   = XMLHttp();
var httpCClick = XMLHttp();
var httpBClick = XMLHttp();
var httpnGame  = XMLHttp();
var httpGMsg   = XMLHttp();
var httpsMsg   = XMLHttp();
var httpGames  = XMLHttp();
var gameData,TLoad,MSay,timeRun,g_date=0,h_g_date=0,s_date=0,h_s_date=0,leftTime=100;

function leftT(){
  if(leftTime>=0) {
    document.getElementById('mp_time').innerHTML = leftTime--;
    window.clearTimeout(timeRun);
		timeRun = window.setTimeout('leftT()', 1000);
  }
  else {
		document.getElementById('mp_time').innerHTML = 0;
		window.clearTimeout(timeRun);
		alert('Zeit abgelaufen!!!');
		closeGame();
	}
}
function checkTime(){
	window.clearTimeout(TLoad);
	if (httpTime && !CallInProgress(httpTime)) {
		httpTime.open('GET', '/mp/durak.php?gid='+GID+'&time', true);
		httpTime.onreadystatechange = function () {
			if (httpTime.readyState == 4) {
				if ((httpTime.status == 200 || httpTime.status == 0)){
					h_g_date = httpTime.getResponseHeader("g_date");
					h_s_date = httpTime.getResponseHeader("s_date");
					document.getElementById('player_vs').innerHTML = httpTime.responseText;
					if(g_date<h_g_date) { loadGData(); }
					if(s_date<h_s_date) { loadGMsg();  }
				}
			}
		};
		httpTime.send(null);
	}
	TLoad = window.setTimeout("checkTime()",3000);
}
function loadGData(){
	if (httpData && !CallInProgress(httpData)) {
		httpData.open('GET', '/mp/durak.php?gid='+GID, true);
		httpData.onreadystatechange = function () {
			if (httpData.readyState == 4) {
				if ((httpData.status == 200 || httpData.status == 0)){
					leftTime=httpData.getResponseHeader("g_date");
					gameData = JSON.parse(httpData.getResponseHeader("JSON"));
					setImageP1();
					setImageP2();
					showStaple();
					showWorkCards();
					showP2Cards();
					showP1Cards();
					Alert();
					goPlayer();
					w_stat();
					if(gameData.leftCards>0) { document.getElementById("mp_c_left").innerHTML = gameData.leftCards+1; }
					else                     { document.getElementById("mp_c_left").innerHTML = ''; }
					//document.getElementById("json").innerHTML = httpData.getResponseHeader("JSON");
					g_date = h_g_date;
				}
			}
		};
		httpData.send(null);
	}
}
function loadGMsg(){
	if (httpGMsg && !CallInProgress(httpGMsg)) {
		httpGMsg.open('GET', '/mp/durak.php?gid='+GID+'&msg', true);
		httpGMsg.onreadystatechange = function () {
			if (httpGMsg.readyState == 4) {
				if ((httpGMsg.status == 200 || httpGMsg.status == 0)){
					showSay(httpGMsg.responseText);
					window.clearTimeout(MSay);
					MSay = window.setTimeout("hideSay()",5000);
					s_date = h_s_date;
				}
			}
		};
		httpGMsg.send(null);
	}
}
function clickCard(num){
	if (httpCClick && !CallInProgress(httpCClick)) {
		httpCClick.open('GET', '/mp/durak.php?gid='+GID+'&clickCard='+num, true);
		httpCClick.onreadystatechange = function () {
			if (httpCClick.readyState == 4) {
				if ((httpCClick.status == 200 || httpCClick.status == 0)){
					loadGData();
				}
			}
		};
		httpCClick.send(null);
	}
}
function clickBtn(){
	if (httpBClick && !CallInProgress(httpBClick)) {
		httpBClick.open('GET', '/mp/durak.php?gid='+GID+'&clickBtn', true);
		httpBClick.onreadystatechange = function () {
			if (httpBClick.readyState == 4) {
				if ((httpBClick.status == 200 || httpBClick.status == 0)){
					loadGData();
				}
			}
		};
		httpBClick.send(null);
	}
}
function newGame(){
	if (httpnGame && !CallInProgress(httpnGame)) {
		httpnGame.open('GET', '/mp/durak.php?gid='+GID+'&newgame', true);
		httpnGame.onreadystatechange = function () {
			if (httpnGame.readyState == 4) {
				if ((httpnGame.status == 200 || httpnGame.status == 0)){
					gameInit();
				}
			}
		};
		httpnGame.send(null);
	}
}
function sendMsg(){
	if (httpsMsg) {
		var Message = encodeURIComponent(document.getElementById('msg').value);	
		if(Message){	
			httpsMsg.open('POST', '/mp/durak.php?gid='+GID+'&say');
			httpsMsg.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			httpsMsg.send('msg='+ Message);
		}
	}
	document.getElementById('msg').value = '';
	document.getElementById('msg').focus();
}

function GamesOn(){
	if (httpGames && !CallInProgress(httpGames)) {
		httpGames.open('GET', '/mp/games.php', true);
		httpGames.onreadystatechange = function () {
			if (httpGames.readyState == 4) {
				if ((httpGames.status == 200 || httpGames.status == 0)){
					document.getElementById('mp_durak').innerHTML = httpGames.responseText;
				}
			}
		};
		httpGames.send(null);
	}
	setTimeout("GamesOn()",10000);
}
function w_stat(){
	document.getElementById("mp_win").innerHTML = gameData.win;
	document.getElementById("mp_draw").innerHTML = gameData.draw;
	document.getElementById("mp_lose").innerHTML = gameData.lose;
}
function my_submit(e){
	var keycode = document.all ? event.keyCode : e.which;
	if ((""+keycode)=="13") {
		sendMsg();
	}
}
document.onkeydown = my_submit;
if (document.layers) { document.captureEvents(Event.KEYDOWN); }

function showSay(msg){
	document.getElementById("say_msg").innerHTML = msg;
	document.getElementById("msg_say").style.visibility = "visible";
}
function hideSay(){
	document.getElementById("msg_say").style.visibility = "hidden";
}
function goPlayer(){
	if(gameData.gameStat == 2){
		document.getElementById("p2_arrow").style.visibility = "hidden";
		document.getElementById("p1_arrow").style.visibility = "visible";	
	}
	else if(gameData.gameStat == 1){
		document.getElementById("p1_arrow").style.visibility = "hidden";
		document.getElementById("p2_arrow").style.visibility = "visible";	
	}
	else {
		document.getElementById("p1_arrow").style.visibility = "hidden";
		document.getElementById("p2_arrow").style.visibility = "hidden";
	}
}
var image_dir = '/pics/';

var Images = new Array();
Images['card'] = new Array();
Images['trump'] = new Array();

var P1CardEffect = new Array();
var gameStat = 0;

function loadImage(){
	Images['back'] = new Image(71, 96);
	Images['back'].src = (GetCookie('deck')?GetCookie('deck'):image_dir + "deck.png");;
	document.getElementById("staple").style.backgroundImage = 'url(' + Images['back'].src + ')';
	
	for (var i = 0; i < 36; i++) {
		Images['card'][i] = new Image(71, 96);
		Images['card'][i].src = image_dir + i + ".png";
	}
	for (var i = 0; i < 4; i++) {
		Images['trump'][i] = new Image(39, 39);
		Images['trump'][i].src = image_dir + "k" + i + ".png";
	}
}
function setImage(){
	for (i = 0; i < 36; i++) {
		document.getElementById("cardp1"+i).style.backgroundImage = 'url('+Images['back'].src+')';
		document.getElementById("cardp2"+i).style.backgroundImage = 'url('+Images['back'].src+')';
		document.getElementById("cardp1"+i).style.visibility = "hidden";
		document.getElementById("cardp2"+i).style.visibility = "hidden";
	}
}
function setImageP2() {
	var i = 0;
	for (i = 0; i < gameData.p2_cards; i++) {
		document.getElementById("cardp2" + i).style.visibility = "visible";
	}
	for (i; i < 36; i++) {
		document.getElementById("cardp2" + i).style.visibility = "hidden";
	}
}
function setImageP1() {
	var i = 0;
	for (i = 35; i >= gameData.p1_cards; i--) {
		document.getElementById("cardp1" + i).style.visibility = "hidden";
	}
	for (i; i>=0; i--) {
		document.getElementById("cardp1" + i).style.backgroundImage = 'url('+Images['card'][gameData.p1[i]].src+')';
		document.getElementById("cardp1" + i).style.visibility = "visible";
	}
}
function slideEffekt(way,num,time){
	card_id = document.getElementById("cardp1" + num).style;
	var top = parseInt(card_id.top);
	if(way==1){
		top = top-2;
		card_id.top = top+'px';
		if(top<=-10){ card_id.top = '-10px'; window.clearInterval(P1CardEffect[num]); }
	}
	else{
		top = top+2;
		card_id.top = top+'px';
		if(top>=0){ card_id.top = '0px'; window.clearInterval(P1CardEffect[num]); }
	}
}
function showCardUp(num) {
	if (gameData.gameStat==0) return;
	window.clearInterval(P1CardEffect[num]);
	P1CardEffect[num] = window.setInterval("slideEffekt(1,"+num+")", 10);
}
function showCardDown(num) {
	if (gameData.gameStat==0) return;
	window.clearInterval(P1CardEffect[num]);
	P1CardEffect[num] = window.setInterval("slideEffekt(0,"+num+")", 10);
}
function showStaple(){
	if (gameData.leftCards < 0) {
		document.getElementById("trump").style.visibility = "hidden";
		document.getElementById("staple").style.visibility = "hidden";		
		document.getElementById("ztrump").style.visibility = "visible";
		document.getElementById("ztrump").style.backgroundImage = 'url('+Images['trump'][gameData.trump].src+')';
	}
	else if (gameData.leftCards == 0) {
		document.getElementById("ztrump").style.visibility = "hidden";
		document.getElementById("staple").style.visibility = "hidden";
		document.getElementById("trump").style.visibility  = "visible";
		document.getElementById("trump").style.backgroundImage = 'url('+Images['card'][gameData.staple[0]].src+')';
	}
	else {
		document.getElementById("ztrump").style.visibility = "hidden";
		document.getElementById("staple").style.visibility = "visible";
		document.getElementById("trump").style.visibility  = "visible";
		document.getElementById("trump").style.backgroundImage = 'url('+Images['card'][gameData.staple[0]].src+')';
	}
}
function showBtn() {
	if (gameData.gameStat==1)      { document.getElementById('botton').innerHTML = lang['take']; }
	else if (gameData.gameStat==2) { document.getElementById('botton').innerHTML = lang['ready']; }
}
function showWorkCards() {
	for (var i=0;i<12;i++) {
		if (gameData.work[i] >= 0) {
			document.getElementById("cardw" + i).style.backgroundImage = 'url('+Images['card'][gameData.work[i]].src+')';
			document.getElementById("cardw" + i).style.visibility = "visible";
		}
		else { document.getElementById("cardw" + i).style.visibility = "hidden"; }
	}
	if (gameData.work[0]<0 || gameData.p1_btn || (gameData.gameStat==1 && gameData.hits) || (gameData.gameStat==2 && !gameData.hits && !gameData.p2_btn)) {
		document.getElementById("botton").style.visibility = "hidden";
	}
	else {
		showBtn();
		document.getElementById("botton").style.visibility = "visible";	
	}
}
function showP1Cards() {
	var i = 0;
	for (i = 35; i >= gameData.p1_cards; i--) {
		document.getElementById("cardp1" + i).style.visibility = "hidden";
	}
	for (i; i >= 0; i--) {
		document.getElementById("cardp1" + i).style.backgroundImage = 'url('+Images['card'][gameData.p1[i]].src+')';
		document.getElementById("cardp1" + i).style.visibility = "visible";
	}
}
function showP2Cards() {
	var i = 0;
	for (i = 0; i < gameData.p2_cards; i++) { document.getElementById("cardp2" + i).style.visibility = "visible"; }
	for (i; i < 36; i++)           { document.getElementById("cardp2" + i).style.visibility = "hidden"; }
}
function createDesign(){
	var design = '';
	var con_c_w='',con_c_p1='',con_c_p2='';
	for(i=0;i<=11;i++){
		con_c_w += '<div id="cardw'+i+'"></div>';
	}
	for(i=0;i<=35;i++){
		con_c_p1 += ('<div id="cardp1'+i+'" class="pointer" onmouseover="showCardUp('+i+'); return true;" onmouseout="showCardDown('+i+'); return true;" onclick="clickCard('+i+'); return false;"></div>');	
		con_c_p2 += ('<div id="cardp2'+i+'"></div>');
	}
	
	design += ('<div id="con_c_w">'+con_c_w+'</div>');
	design += ('<div id="con_c_h">'+con_c_p1+'<div id="p1_arrow"></div></div>');
	design += ('<div id="con_c_c">'+con_c_p2+'<div id="p2_arrow"></div></div>');
	
	design += ('<div id="win"></div>');
	design += ('<div id="lose"></div>');
	design += ('<div id="draw"></div>');
	design += ('<div id="played"></div>');
	design += ('<div id="ended"></div>');
	design += ('<div id="canceled"></div>');
	design += ('<div id="durak_m"></div>');
	design += ('<div id="con_c_r"><div id="trump"></div><div id="staple"><div id="mp_c_left"></div></div><div id="ztrump"></div><div id="botton" class="btn" onclick="clickBtn(); return false;"></div></div>');
	design += ('<div id="msg_say"><div id="say_msg"></div></div>');
	design += ('<div id="say_w"><input class="say_w" name="msg" id="msg" value="" maxlength="80" /></div><div id="say_s" onclick="sendMsg();"></div><div id="mp_time">100</div>');
	design += ('<div id="alert"><div id="alert_msg"></div><div id="alert_btn"><input onclick="newGame(); return false;" name="ngame" type="button" value="'+lang['ngame']+'" /> <input onclick="closeGame(); return false;" name="exit" type="button" value="'+lang['exit']+'" /></div></div>');

	document.getElementById('durak').innerHTML = design;
	var top;
	for(i=0, j=0, left=0, top=30, zindex=37; i<=11; ++i, ++j, ++zindex){
		if(top==0) top=30; else top=0;
		if(j==2){ left+=75; j=0; }
		style('cardw'+i, 'absolute', top, left, zindex, 96, 71);
	}
	for(i=0, left=0, zindex=0; i<=35; i++, left+=15, zindex++){
		style('cardp2'+i, 'absolute', 0, left, zindex, 96, 71);
	}
	for(i=0, left=0, zindex=100; i<=35; i++, left+=15, zindex++){
		style('cardp1'+i, 'absolute', 0, left, zindex, 96, 71);
	}
	style('trump', 'absolute', 0, 0, 51, 96, 71);	
	style('staple', 'absolute', 0, 39, 52, 96, 71);
	style('ztrump', 'absolute', 33, 35, 53, 39, 39);
	style('botton', 'absolute', 102, 0, 55, 18, 110);
	
	style('played', 'absolute', 395, 75, 0, 20, 180);
	style('ended',  'absolute', 395, 255, 0, 20, 180);
	style('canceled', 'absolute', 395, 435, 0, 20, 180);
	
	style('win', 'absolute', 410, 75, 0, 20, 180);
	style('draw', 'absolute', 410, 255, 0, 20, 180);
	style('lose', 'absolute', 410, 435, 0, 20, 180);
}
function Alert(){
	if(gameData.stat==0) { document.getElementById('alert').style.visibility = 'hidden'; }
	else                 { document.getElementById('alert').style.visibility = 'visible'; }
	if(gameData.stat==1)     { document.getElementById('alert_msg').innerHTML = lang['ywin'];  }
	else if(gameData.stat==2){ document.getElementById('alert_msg').innerHTML = lang['ydraw']; }
	else if(gameData.stat==3){ document.getElementById('alert_msg').innerHTML = lang['ylose']; }
}
function closeGame(){
	window.location= "/"+(language=='ru'?'ru/':'')+"mp/";
}
function gameInit(){
	createDesign();
	loadImage();
	setImage();
	checkTime();
	leftT();
}
