/*
Isabel Solitaire, ©Copyright 2007 - bezumie.com, All Rights Reserved
Пасианс Изабел, ©Copyright 2007 - bezumie.com, Всички права запазени
*/
var oTable, tableau=[];
var defDeck=2, defSize=6, widthInx=6.2, heightInx=3.4, maxWidth=0.9, maxHeight=0.8;
var result, drawn, gameIsOver=true;
var zInd=100, drawTO=25;

function closeHelp(){
	document.getElementById('help').style.display='none';
}
function showHelp(){
	var h=document.getElementById('help');
	oTable.div.appendChild(h);
	h.style.display='inline';
	h.style.zIndex=++zInd;
}
function checkHasMoves(){
	var i,j,card,card2;
	for(i=0;i<=12;i++){
		card=tableau[i].lastCard();
		if(card){
			for(j=i+1;j<=12;j++){
				card2=tableau[j].lastCard();
				if(card2&&(card2.value==card.value))return true;
			}
		}
	}
	return false;
}
function setResult(newResult){
	result=newResult;
	document.getElementById('result').innerHTML=newResult;
	if(result==52){
		gameIsOver=true;
		for(var i=0;i<oTable.aStacks.length;i++){
			oTable.aStacks[i].div.style.display='none';
		}
		oTable.showWin();
	}
}
function drawTheCards(){
	var card=oTable.lastCard();
	if(!card){
		gameIsOver=false;
		return;
	}
	var t=(drawn%13);
	card.faceUp((drawn>38));
	oTable.addCardToStack(card, tableau[t], 0, 0);
	card.div.style.zIndex=++zInd;
	drawn++;
	if((drawn<13)||(drawn>38)){
		setTimeout('drawTheCards()', drawTO);
	}
	else drawTheCards();
}
function startGame(){
	oTable.shuffle();
	setResult(0);
	drawn=0;
	drawTheCards();
}
function newGame(){
	if(drawn<51)return;
	oTable.hideWin();
	oTable.removeAll();
	startGame();
}
function dragStart(card){
	card.stack.div.style.zIndex=++zInd;
	card.div.style.zIndex=++zInd;
}
function dragDrop(card){
	var stack=oTable.cardPos2Stack(card);
	var lc;
	var cs=card.stack;
	if((stack)&&(stack!=card.stack)){
		lc=stack.lastCard();
		if(lc.value==card.value){
			oTable.removeCardFromStack(lc);
			oTable.removeCardFromStack(card);
			lc=stack.lastCard();
			if(lc){lc.faceUp(true);}
			lc=cs.lastCard();
			if(lc){lc.faceUp(true);}
			setResult(result+2);
			if((!gameIsOver)&&(!checkHasMoves())){
				alert(noMoreMoves);
			}
			return;
		}
	}
	oTable.resetCardPos(card);
	return false;
}
function changeWidth(){
	document.getElementById('infoLine').style.width=oTable.width+'px';
}
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 init2(){
	var i;
	var a=[[0,0],[0,1],[0,2],[1,0.5],[1,1.5],[2,0],[2,1],[2,2],[3,0.5],[3,1.5],[4,0],[4,1],[4,2]];
	for(i=0;i<=12;i++){
		tableau[i]=oTable.addStack('tableau_'+i, 53, (a[i][0])*(1+0.2) + 0.2, (a[i][1])*(1+0.1) + 0.1);
	}
	for(i=0;i<52;i++){
		oTable.oCards.cards[i].ondragstart=dragStart;
		oTable.oCards.cards[i].ondrop=dragDrop;
	}
	startGame();
}
function init(containerName){
	oTable=new Table(containerName, defDeck, defSize, widthInx, maxWidth, heightInx, maxHeight, lang);
	changeWidth();
	oTable.loadCards(init2);
}