if (navigator.appName == "Netscape") { layerRef="document.layers";  styleSwitch=""; brouz="n"; }
else { layerRef="document.all"; styleSwitch=".style"; brouz="ie"; }

gameStat = 0;

btn0 = new Image(100, 30);
btn0.src = "pics/get_0.gif";
btn1 = new Image(100, 30);
btn1.src = "pics/get_1.gif";
btn2 = new Image(100, 30);
btn2.src = "pics/vse_0.gif";
btn3 = new Image(100, 30);
btn3.src = "pics/vse_1.gif";

cardback = new Image(71, 96);
cardback.src = "pics/back.gif";
var cards = new Array();
var kozyrs = new Array();

var computer = new Array();
var computerCnt = 0;
var human = new Array();
var humanCnt = 0;
var coloda = new Array();
var astCard = -1;
var kozyr = -1;
var work = new Array();
var lastWork = 0;

//if (brow == 'true') { document.layers["coloda"].document.images[0].src = cardback.src; }
//else { document.all["coloda"].document.images[0].src = cardback.src; }
if (brouz == "n") { eval(layerRef+'["coloda"].document.images[0].src = cardback.src'); }
else { document.images.icoloda.src = cardback.src; }

for (var i = 0; i < 36; i++) {
    cards[i] = new Image(71, 96);
    cards[i].src = "pics/" + i + ".gif";
}
for (var i = 0; i < 4; i++) {
    kozyrs[i] = new Image(39, 39);
    kozyrs[i].src = "pics/k" + i + ".gif";
}

// sdacha
function cardToH(card) {
    if (card >= 0) human[humanCnt++] = card;
}

function cardToC(card) {
    if (card >= 0) computer[computerCnt++] = card;
}

//---------- button ----------
function showBtn(stat) {
    if (gameStat == 1) {
        //if (stat == 0) eval(layerRef+'["btn"].document.images[0].src = btn0.src');
        //else eval(layerRef+'["btn"].document.images[0].src = btn1.src');
		//if (stat == 0) eval(layerRef+'["btn"].document.images[0].src = btn0.src');
        //else eval(layerRef+'["btn"].document.images[0].src = btn1.src');
		if (brouz == "n") {
		if (stat == 0) { document.layers.btn.document.images[0].src = btn0.src; }
        else { document.layers.btn.document.images[0].src = btn1.src; }
		} else {
		if (stat == 0) { document.images.ibtn.src = btn0.src; }
        else { document.images.ibtn.src = btn1.src; }
		}
    }
    else if (gameStat == 2) {
        //if (stat == 0) eval(layerRef+'["btn"].document.images[0].src = btn2.src');
        //else eval(layerRef+'["btn"].document.images[0].src = btn3.src');
		if (brouz == "n") {
		if (stat == 0) eval(layerRef+'["btn"].document.images[0].src = btn2.src');
        else eval(layerRef+'["btn"].document.images[0].src = btn3.src');
		} else {
		if (stat == 0) document.images.ibtn.src = btn2.src;
        else document.images.ibtn.src = btn3.src;
		}
    }
}

//---------- cards ----------
function showCardsDown() {
}

function showCardUp(num) {
    if (gameStat == 0) return;
    eval(layerRef+'["cardh" + num].top = 267');
}

function showCardDown(num) {
    eval(layerRef+'["cardh" + num].top = 277');
}

function showWorkCards() {
    for (var i = 0; i < 12; i++) {
        if (work[i] >= 0) {
            if (brouz == "n") { eval(layerRef+'["cardw" + i].document.images[0].src = cards[work[i]].src'); }
			else { document.images["icardw" + i].src = cards[work[i]].src; }
            eval(layerRef+'["cardw" + i]'+styleSwitch+'.visibility = "visible"');
        }
        else eval(layerRef+'["cardw" + i]'+styleSwitch+'.visibility = "hidden"');
    }
    if (work[0] < 0) eval(layerRef+'["btn"]'+styleSwitch+'.visibility = "hidden"');
    else {
        showBtn(0);
        eval(layerRef+'["btn"]'+styleSwitch+'.visibility = "visible"');
    }
}

function sortCompCards() {
    var tc = 0;
    var i = 0;
    var i1 = 0;
    var c = 0;
    for (i = 0; i < 36; i++) {
        if (computer[i] >= 0) {
            if (i != tc) {
                computer[tc] = computer[i];
                computer[i] = -1;
            }
            tc++;
        }
    }
    tc--;
    for (i = tc; i > 0; i--) {
        for (i1 = 0; i1 < i; i1++) {
            if (convCard(computer[i1]) > convCard(computer[i1 + 1])) {
                c = computer[i1];
                computer[i1] = computer[i1 + 1];
                computer[i1 + 1] = c;
            }
        }
    }
}

function showCompCards() {
    var i = 0;
    sortCompCards();
    for (i = 0; i < computerCnt; i++) {
        eval(layerRef+'["cardc" + i]'+styleSwitch+'.visibility = "visible"');
    }
    for (i; i < 36; i++) eval(layerRef+'["cardc" + i]'+styleSwitch+'.visibility = "hidden"');
}

function convCard(num) {
    var mast = Math.floor(num / 9);
    if (mast == kozyr) return (num % 9) + 36;
    else return (mast + (num % 9) * 4);
}

function sortHumanCards() {
    var tc = 0;
    var i = 0;
    var i1 = 0;
    var c = 0;
    for (i = 0; i < 36; i++) {
        if (human[i] >= 0) {
            if (i != tc) {
                human[tc] = human[i];
                human[i] = -1;
            }
            tc++;
        }
    }
    tc--;
    for (i = tc; i > 0; i--) {
        for (i1 = 0; i1 < i; i1++) {
            if (convCard(human[i1]) > convCard(human[i1 + 1])) {
                c = human[i1];
                human[i1] = human[i1 + 1];
                human[i1 + 1] = c;
            }
        }
    }
}

function showHumanCards() {
    var i = 0;

    // human cards down
    //for (var i = 0; i < 36; i++) document.layers["cardh" + i].top = 277;

    sortHumanCards();
    for (i = 35; i >= humanCnt; i--) eval(layerRef+'["cardh" + i]'+styleSwitch+'.visibility = "hidden"');
    for (i; i >= 0; i--) {
        if (brouz == "n") { eval(layerRef+'["cardh" + i].document.images[0].src = cards[human[i]].src'); }
		else { document.images["icardh" + i].src = cards[human[i]].src; }
        eval(layerRef+'["cardh" + i]'+styleSwitch+'.visibility = "visible"');
    }
}

function showColoda() {
    if (lastCard < 0) {
        eval(layerRef+'["kozyr"]'+styleSwitch+'.visibility = "hidden"');
        eval(layerRef+'["coloda"]'+styleSwitch+'.visibility = "hidden"');
        if (brouz == "n") { eval(layerRef+'["zkozyr"].document.images[0].src = kozyrs[kozyr].src'); }
		else { document.images.izkozyr.src = kozyrs[kozyr].src; }
        eval(layerRef+'["zkozyr"]'+styleSwitch+'.visibility = "visible"');
    }
    else if (lastCard == 0) {
        eval(layerRef+'["zkozyr"]'+styleSwitch+'.visibility = "hidden"');
        eval(layerRef+'["coloda"]'+styleSwitch+'.visibility = "hidden"');
        if (brouz == "n") { eval(layerRef+'["kozyr"].document.images[0].src = cards[coloda[0]].src'); }
		else { document.images.ikozyr.src = cards[coloda[0]].src; }
        eval(layerRef+'["kozyr"]'+styleSwitch+'.visibility = "visible"');
    }
    else {
        eval(layerRef+'["zkozyr"]'+styleSwitch+'.visibility = "hidden"');
        if (brouz == "n") { eval(layerRef+'["kozyr"].document.images[0].src = cards[coloda[0]].src'); }
		else { document.images.ikozyr.src = cards[coloda[0]].src }
        eval(layerRef+'["kozyr"]'+styleSwitch+'.visibility = "visible"');
        eval(layerRef+'["coloda"]'+styleSwitch+'.visibility = "visible"');
    }
}

//---------- main ----------
function sdatCards() {
    if (gameStat == 1) {
        while ((computerCnt < 6) && (lastCard >= 0)) cardToC(coloda[lastCard--]);
        while ((humanCnt < 6) && (lastCard >= 0)) cardToH(coloda[lastCard--]);
    }
    else {
        while ((humanCnt < 6) && (lastCard >= 0)) cardToH(coloda[lastCard--]);
        while ((computerCnt < 6) && (lastCard >= 0)) cardToC(coloda[lastCard--]);
    }
}

function checkEnd() {
    return (lastCard < 0) && ((humanCnt == 0) || (computerCnt == 0));
}

function clearWork() {
    //clear
    for (var i = 0; i < 12; i++) work[i] = -1;
    lastWork = 0;
    showWorkCards();

    //next cards
    sdatCards();
    showColoda();
    showHumanCards();
    showCompCards();

    //check na end
    if (checkEnd()) {
        gameStat = 0;
        showBtn(0);
        if ((humanCnt == 0) && (computerCnt == 0)) {
            alert("Ничья!");
            gameInit(0);
        }
        else if (humanCnt == 0) {
            for (i = 0; i < computerCnt; i++) {
			  if (brouz == "n") { eval(layerRef+'["cardc" + i].document.images[0].src = cards[computer[i]].src'); }
			  else { document.images["icardc" + i].src = cards[computer[i]].src; }
			}
            showCompCards();
            alert("Вы выиграли!");
            gameInit(2);
        }
        else if (computerCnt == 0) {
            alert("Вы проиграли!");
            gameInit(1);
        }
        return false;
    }
    return true;
}

function checkWork() {
    if (work[10] >= 0) if (clearWork()) {
        gameStat = 3 - gameStat;
        if (gameStat == 1) compHod();
        return false;
    }
    return true;
}

function compMinCard(mast, mincard) {
    var mc = 0;
    var i = 0;

/*
    if (mast >= 0) {
        mc = -1;
        for (i = 0; i < computerCnt; i++) {
            if ((Math.floor(computer[i] / 9) == mast) && ((computer[i] % 9) > mincard) ) {
                if (mc < 0) mc = i;
                else if (computer[i] < computer[mc]) mc = i;
            }
        }
        if ((mc < 0) && (mast != kozyr)) mc = compMinCard(kozyr, -1);
    }
    else for (i = 1; i < computerCnt; i++) if (convCard(computer[i]) < convCard(computer[mc])) mc = i;
*/

    if (mast >= 0) {
        mc = -1;
        for (i = 0; i < computerCnt; i++) if ((Math.floor(computer[i] / 9) == mast) && ((computer[i] % 9) > mincard)) {
            mc = i;
            break;
        }
        if ((mc < 0) && (mast != kozyr)) mc = compMinCard(kozyr, -1);
    }

    return mc;
}

function canBeat(num) {
    var c = work[lastWork * 2];
    if (c < 0) return false;
    if (Math.floor(num / 9) == Math.floor(c / 9)) return (num % 9) > (c % 9);
    else return Math.floor(num / 9) == kozyr;
}

function compHod(stat) {
    var c = 0;
    if (lastWork == 0) c = compMinCard(-1, 0);
    else {
        c = -1;
        for (var i = 0; i < computerCnt; i++) {
            if (Math.floor(computer[i] / 9) != kozyr) for (var w = 0; w < 12 ; w++) if ((work[w] >= 0) && ((computer[i] % 9) == (work[w] % 9))) {
                c = i;
                break;
            }
            if (c >= 0) break;
        }
    }
    gameStat = 1;
    if (c < 0) return false;
    work[lastWork * 2] = computer[c];
    computer[c] = -1;
    computerCnt--;
    showWorkCards();
    showCompCards();
    return true;
}

function allBeat() {
    var r = true;
    for (var i = 0; i < lastWork; i++) if (work[i * 2 + 1] < 0) { r = false; break; }
    return r;
}

function getHod() {
    for (var i = 0; i < 12; i++) if (work[i] >= 0) cardToC(work[i]);
    clearWork();
}

function clickBtn() {
    if (gameStat == 1) {
        for (++lastWork; lastWork < 6; lastWork++) if (! compHod()) break;
        for (var i = 0; i < 12; i++) if (work[i] >= 0) cardToH(work[i]);
        if (clearWork()) compHod();
    }
    else {
        if (! allBeat()) { getHod(); return; }
        if (clearWork()) { showBtn(1); compHod(); }
    }
}

function clickCard(num) {
    var c = -1;
    if (gameStat == 1) {
        //my otbivaem

        var c = work[lastWork * 2];
        if (c < 0) return;
        if (Math.floor(human[num] / 9) == Math.floor(c / 9)) {
            if ((human[num] % 9) < (c % 9)) return;
        }
        else if (Math.floor(human[num] / 9) != kozyr) return;

        work[lastWork * 2 + 1] = human[num];
        human[num] = -1;
        humanCnt--;
        lastWork++;
        showHumanCards();
        if (checkEnd()) { clearWork(); return; }
        if (checkWork()) if (! compHod()) if (clearWork()) gameStat = 2;
    }
    else if (gameStat == 2) {
        if (lastWork > 0) {
            c = 0;
            for (var i = 0; i < lastWork * 2 ; i++) if ((human[num] % 9) == (work[i] % 9)) {
                c = -1;
                break;
            }
            if (c >= 0) return;
        }
        work[lastWork * 2] = human[num];
        human[num] = -1;
        humanCnt--;
        showHumanCards();
        // comp otbivaet
        if (allBeat()) c = compMinCard(Math.floor(work[lastWork * 2] / 9), work[lastWork * 2] % 9);
        if (c < 0) {
            work[lastWork * 2 + 1] = -1;
            if (lastWork == 5) { getHod(); return; }
        }
        else {
            work[lastWork * 2 + 1] = computer[c];
            computer[c] = -1;
            computerCnt--;
        }
        lastWork++;
        showWorkCards();
        showCompCards();
        if (checkEnd()) clearWork();
        else checkWork();
    }
}

function gameInit(stat) {
    var i = 0;
    var i1 = 0;
    var c = -1;
    for (i = 0; i < 36; i++) {
        computer[i] = -1;
        human[i] = -1;
        coloda[i] = -1;
		if (brouz == "n") {
        eval(layerRef+'["cardc" + i].document.images[0].src = cardback.src');
        eval(layerRef+'["cardh" + i].document.images[0].src = cardback.src');
		} else {
		document.images["icardc" + i].src  = cardback.src
		document.images["icardh" + i].src  = cardback.src
		}
    }
    for (i = 0; i < 12; i++) work[i] = -1;
    lastWork = 0;

    // peremeshka
    for (i = 0; i < 36; i++) {
        c = -1;
        while (c < 0) {
            c = Math.floor(Math.random() * 36);
            for (i1 = 0; i1 < i; i1++) if (coloda[i1] == c) {
                c = -1;
                break;
            }
        }
        coloda[i] = c;
    }
    lastCard = 35;

    // sdacha
    computerCnt = 0;
    humanCnt = 0;
    for (i = 0; i < 6; i++) {
        cardToH(coloda[lastCard]);
        coloda[lastCard--] = -1;
        cardToC(coloda[lastCard]);
        coloda[lastCard--] = -1;
    }
    kozyr = Math.floor(coloda[0] / 9);

    //chej hod
    if (stat == 0) {
        c = 36;
        for (i = 0; i < 6; i++) if ((Math.floor(human[i] / 9) == kozyr) && (human[i] < c)) c = human[i];
        i1 = 36;
        for (i = 0; i < 6; i++) if ((Math.floor(computer[i] / 9) == kozyr) && (computer[i] < i1)) i1 = computer[i];
        if (c > i1) gameStat = 1;
        else gameStat = 2;
    }
    else gameStat = stat;

    //poehali
    showColoda();
    showWorkCards();
    showCompCards();
    showHumanCards();
    showBtn(0);
    if (gameStat == 1) compHod();
}


//---------- begin ----------
gameInit(0);
