/*
Golf, ©Copyright 2007 - bezumie.com, All Rights Reserved
Голф, ©Copyright 2007 - bezumie.com, Всички права запазени
*/
var drawTO=25;
var widthInx=7+1/4*9;
var heightInx=3.2;
var maxWidth=0.86; // 86%
var maxHeight=0;
var defDeck=2;
var defSize=5;
var oTable;
var oStockLeft;
var gameIsOver = true;
var result;
var drawn;
var stock;
var waste;

function closeHelp(){
	document.getElementById('help').style.display='none';
}
function showHelp(){
	oTable.div.appendChild(document.getElementById('help'));
	document.getElementById('help').style.display = 'inline';
}
function setResult(newResult){
	result = newResult;
	var r = document.getElementById('result');
	r.innerHTML = newResult;
}
function setStockLeft(left){
	oStockLeft.innerHTML = left;
}
function gameOver(){
	gameIsOver = true;
	oTable.showWin();
}
function tableauMouseDown(card){
	if(gameIsOver)return;
	if ((card.stack.lastCard() == card) && (card.stack != waste)){
		var last = waste.lastCard();
		if ((last.value == card.value-1) || (last.value == card.value+1)){
			discard(card);
			setResult(result + 1);
			if (result == 35) gameOver();
		}
	}
	return false;
}
function stockMouseDown(card){
	if(gameIsOver)return;
	if (card.stack != waste){
		if (card.stack.lastCard() != card) card = card.stack.lastCard();
		discard(card);
		setStockLeft(stock.cards.length);
	}
	return ;
}
function changeWidth(){
	document.getElementById('infoLine').style.width=oTable.width+'px';
}
function changeDeck(id){
	oTable.setDeck(id);
	changeWidth();
	oTable.loadCards(null);
}
function changeSize(size){
	oTable.setSize(size);
	changeWidth();
	oTable.loadCards(null);
}
function plus(){
	if(oTable.cardSize<9)
		changeSize(oTable.cardSize+1);
}
function minus(){
	if(oTable.cardSize>1)
		changeSize(oTable.cardSize-1);
}
function discard(card){
	var hgap=1/6;
	var s=card.stack;
	if(!card.face)card.faceUp(true);
	oTable.addCardToStack(card, waste, waste.cards.length * hgap, 0);
}
function drawTheCards(){
	var n=drawn;
	var vgap=1/6;
	var gap=1/220;
	var i,j,card;
	if(n<35){
		card=oTable.lastCard();
		card.faceUp(true);
		card.onmousedown=tableauMouseDown;
		i=(n%7);
		j=Math.floor(n/7);
		oTable.addCardToStack(card, oTable.aStacks[i], 0, j*vgap);
		drawn++;
		setTimeout('drawTheCards()', drawTO);
		return;
	}	
	for(n=35;n<52;n++){
		card=oTable.lastCard();
		card.onmousedown=stockMouseDown;
		card.faceUp(false);
		oTable.addCardToStack(card, stock, (n-40)*gap, (n-40)*gap);
	}
	discard(stock.lastCard());
	setStockLeft(stock.cards.length);
	gameIsOver=false;
}
function newGame(){
	oTable.hideWin();
	var i;
	for(i=0;i<oTable.aStacks.length;i++){
		while(oTable.aStacks[i].cards.length){
			oTable.removeCardFromStack(oTable.aStacks[i].lastCard());
		}
	}
	oTable.shuffle();
	setResult(0);
	drawn=0;
	drawTheCards();
}
function init2(){
	var hgap=1/4;
	var i,st;
	var card;
	for(i=0;i<7;i++){
		st=oTable.addStack('tabl'+i, 53, (1+hgap)*i+hgap, 0.2);
		st.myInx=i;
	}
	stock=oTable.addStack('stock', 53, hgap, 2);
	waste=oTable.addStack('waste', 53, 2*hgap+1, 2);
	newGame();
}
function init(containerName){
	oTable=new Table(containerName, defDeck, defSize, widthInx, maxWidth, heightInx, maxHeight, lang);
	oStockLeft=oTable.addLabel('stockLeft', 0.7, 3.05);
	changeWidth();
	oTable.loadCards(init2);
}