

////////////////////////////////////
// copyright: Zsolt KOZAK
// zsolt@zsolt.net
// http://zso.lt
// http://Avonlea.hu
////////////////////////////////////

//globalis valtozok deklaralasa
var klikk1=0; //1. vagy 2. lapot kell-e forditani
var i2,j2,i3,j3,pic1,pic2;
var deny=0,tryNum=0,num=0,succ=0,clockStart=0;
var images_path="/images/makeamatch/";
var timeStr='';min=0;sec=0; //jatekidohoz kell
var topPointValue=0,topPointMin=0,topPointSec=0,topPointOld=0; //legjobb eredmeny erteke es ideje
var numOfPics,numOfCol,numOfRow;
var small = '';
var hard  = false;
var lang, myForm, hatarol;
var picArray, gameArray;//picArray a hatterkepnek, gameArrat a kártyáknak

//--------------------------------------------------------------------------
function setCookie(name, value, expire) {
//--------------------------------------------------------------------------
  document.cookie = name + "=" + escape(value) + 
    ((expire == null) ? "" : ("; expires=" + expire.toGMTString()));
}
     
//--------------------------------------------------------------------------
function getCookie(Name){
//--------------------------------------------------------------------------
    var search = Name + "=";
    if (document.cookie.length > 0){
        offset = document.cookie.indexOf(search);
        if (offset != -1){
            offset += search.length;
            end = document.cookie.indexOf(";", offset);
            if (end == -1) end = document.cookie.length;
            return unescape(document.cookie.substring(offset, end));
        }
    }  
}    
                                              
//-----------------------------------------------------------------------------
function setTop() {//beallitja cookie-ba az eredmenyt, ha jobb,mint az elozo
//-----------------------------------------------------------------------------
	var topPointNew = tryNum+'*'+min+'*'+sec;//uj legjobb forditasertek+ideje
	expDate = new Date();
	expDate.setTime(expDate.getTime() + (180*24*60*60*1000));
	if ((topPointValue == 0) && (!hard)) {
        setCookie("makeamatchTopEasy",topPointNew,expDate);//nincs meg ilyen cookie
    }
	if ((topPointValue == 0) && (hard)) {
        setCookie("makeamatchTopHard",topPointNew,expDate);
    } else {//mar van ilyen
		if (tryNum<topPointValue) {//ha jobb, mint a regi, akkor felulirjuk
			if (!hard) { 
                setCookie("makeamatchTopEasy",topPointNew,expDate);
            }
			if (hard) {
                setCookie("makeamatchTopHard",topPointNew,expDate);
            }
		}//"...makeamatchTop_h" --> hard, Top_l-->low
	}
}

//-----------------------------------------------------------------------------
function getTop() {//kiszedi cookie-bol az elozo legjobb eredmenyt
//-----------------------------------------------------------------------------
	if (!hard) { 
        topPointOld = getCookie("makeamatchTopEasy");//l-low szint
    }
	if (hard) {
        topPointOld = getCookie("makeamatchTopHard");//h-hard szint
    }
	if (topPointOld){//ha volt regebben beallitott cookie
		top1=topPointOld.indexOf('*');//forditas-ertek * hatara
		topPointValue=topPointOld.substring(0,top1);//kiszedi a forditas erteket
		top2=topPointOld.substring(top1+1,topPointOld.length).indexOf('*');//perc * hatara
		topPointMin=topPointOld.substring(top1+1,top1+1+top2);//kiszedi az erteket
		topPointSec=topPointOld.substring(top1+1+top2+1,topPointOld.length);//kiszedi a mp-et
	}
}

//-----------------------------------------------------------------------------
function clock(){//jatekido szamolasa
//-----------------------------------------------------------------------------
if (succ!=numOfPics){//ha meg nincs kesz a jatek, akkor mehet az idomeres
	sec++;//mp novelese
	if (sec==60) {//percre kell valtani
		min++;sec=0;
	}
	timeStr = ((min < 10) ? "0" : "") + min;//perc beallitasa
	timeStr += ((sec < 10 ) ? ":0" : ":") + sec; //mp beallitasa
	myForm.time.value=timeStr;//ido kiiratasa
	setTimeout("clock()",1000);//1 mp-enkent meghivni
	}
}

//----------------------------------------------------------------------------
function csere(){//kicsereli a kartyat
//----------------------------------------------------------------------------
    if (document.images[pic1].src == document.images[pic2].src){//egyezik
        document.images[pic1].src=picArray[i2][j2].src;//kep kitakarasa
    	document.images[pic2].src=picArray[i3][j3].src;
	    succ++;//sikeres forditas novelese
    } else {//nem egyezik, vissza a fedolap
    	document.images[pic1].src=coverPic;
	    document.images[pic2].src=coverPic;
    }
    klikk1=0;deny=0;tryNum++;
    myForm.trying.value=tryNum;//probalkozasok szamolasa
    if (succ==numOfPics) {//minden par megforditva			
//    if (succ==1) {
        setTop();//eredmeny beleirasa cookie-ba
        myForm.score.value=(min*60+sec)*tryNum;
	    myForm.turn.value=tryNum;
	    myForm.min.value=min;
	    myForm.sec.value=sec;
	    // ha a juzer regisztalt, akkor kapja a result.php-s szoveget
	    if (myForm.uid.value!="") {
            myForm.submit();
        } else {
	        if (lang=="hu") {
                window.open("/includes/makeamatch/end.hu.html","result","height=200,width=350");
            } else {
                window.open("/includes/makeamatch/end.en.html","result","height=200,width=350");
            }
        }
    }
}

//-----------------------------------------------------------------------------
function klikk(i,j){//i=sor,j=oszlop
//-----------------------------------------------------------------------------
 if (!clockStart) clock(); //jatekido indul
 clockStart=1;
 if (!deny && (document.images[i*numOfCol+j].src!=picArray[i][j].src)) {
	if (klikk1==0) {//elso lap csereje
		pic1 = (i*numOfCol)+j;
		document.images[pic1].src=gameArray[i][j].src;
		klikk1 = 1;
		i2=i;j2=j;
	} else {
		pic2 = (i*numOfCol)+j;//masodik lap csereje
		if (pic2!=pic1) {//ha nem ugyanoda kattintunk 2-nak,csak akkor mehet
			document.images[pic2].src=gameArray[i][j].src;
			i3=i;j3=j;
			deny=1;//koztes klikkeles letiltasa
			setTimeout ("csere()",1000);//lapcsere 1 mp mulva
		}
	}
 } 
}

//----------------------------------
function makeAMatch(language,level){
//----------------------------------
    var tooLow, windowSize, loadPage;
    lang=language;
    if (lang=="hu") {
        tooLow = "Bocs, de használj minimum 800x600-as felbontást!";
        windowSize = "Az ablak mérete 790x600!\nHa nem látszik az egész ablak,\ncsukd le a taskbart és húzd feljebb az ablakot!";
        loadPage = "load.hu.html";
    } else {
        tooLow = "Sorry, use minimum 800x600 resolution, please!";
        windowSize = "Size of the window is 790x600!\nIf you don't see the whole window,\npull down taskbar and pull up the window!";
        loadPage = "load.en.html";
    }
    if (level == "hard") {
        hard=true;
    } else {
        hard=false;
    }
    if (screen.height<600) {
        alert(tooLow);
    } else {
        if (screen.height==600) {
            alert(windowSize);
        }
        open("/includes/makeamatch/"+loadPage,"newWindow","height=600,width=790");
        if (hard) {
	        setTimeout('open("gamepage?level=hard","newWindow","height=600,width=790")',2000);
        } else {
            setTimeout('open("gamepage?level=easy","newWindow","height=600,width=790")',2000);
        }
    }
}

//-------------------------------------
function registrationPage(ablak, lang){
//-------------------------------------
    if (ablak.opener == null) {
        //mer becsukta a júzer a játékablakot
        window.open('../../'+lang+'/registration');
        ablak.close();
    } else {
        ablak.opener.opener.location.href='../../'+lang+'/registration';
        window.close();
        window.opener.close();
    }
}

//-------------------------------------------------------------------------------------------------------
function init(level,language) {
//-------------------------------------------------------------------------------------------------------
    if (level=='hard') {
        hard=true;
    } else {
        hard=false;
    }
    lang=language;

    if (!hard) {
        numOfPics=18;
        numOfCol=9;
        numOfRow=4;
        small='';
        coverPic=images_path+"cover.jpg";
    }
    if (hard) {
        numOfPics=35;
        numOfCol=10;
        numOfRow=7;
        small='_s';
        coverPic=images_path+"cover_s.jpg";
    }

    picArray = new Array (numOfRow); //base picture array
    for (i=0;i<numOfRow;i++) {
        picArray [i] = new Array (numOfCol);
    }

    var randomPic = Math.round(Math.random()*8+1);//1-9 kozott sorsol egy szamot a hatterhez
    if (randomPic<10) {
        randomPic = "0"+randomPic;
    }
    var randomCode1 = Math.round(Math.random()*16+1);//1-17 kozott sorsol egy szamot a 36-bol 18 kivalasztasahoz az easy jatekhoz (ennyivel több fedőlap van, mint 18)
    var randomCode2 = Math.round(Math.random()*10+1);//1-11 kozott sorsol egy szamot a 36-bol 36 kivalasztasahoz a hard jatekhoz (ennyivel több fedőlap van, mint 36)
    var numString = "";

    for (i=0;i<numOfRow;i++) { // a kitalalando alapkep betoltese egy tombbe
    	for (j=0;j<numOfCol;j++) {
	        pic = new Image ();//a kepet meg betesszuk a tombbe
            if (num<10) {
                numString = "0"+num;
            } else {
                numString = num;
            }
	        pic.src = images_path+"/"+randomPic+"/"+"pic_"+numString+small+".jpg";
	        picArray [i][j] = pic;
	        num++;
	    }
    }

    gameArray = new Array (numOfRow);//game card array
    for (i=0;i<numOfRow;i++) {
	    gameArray [i] = new Array (numOfCol);
    }

    var fordit1 = new Array (numOfPics);//seged tömbök annak ellenőrzésére, hogy 1-1 kép bent van-e már a felfordítandó kártyák között
    var fordit2 = new Array (numOfPics);
    var fordit1van = false;
    var fordit2van = false;
    var fordit1p = 0;
    var fordit2p = 0;
    for (i=0;i<numOfRow;i++) { // a forditando fedolapok veletlenszeru betoltese
        for (j=0;j<numOfCol;j++){
	        if (!hard) {
                gpicNum = Math.round(Math.random()*17+randomCode1);//game picture number
            }
	        if (hard) {
                gpicNum = Math.round(Math.random()*34+randomCode2);
            }

            if (gpicNum<10) {
                numString = "0"+gpicNum;
            } else {
                numString = gpicNum;
            }

	        for (k1=0;k1<numOfPics;k1++) { //gpicNum az 1-es tombben keressuk
	            if (fordit1[k1] == gpicNum) fordit1van = true; //mar benne van
	        }
	        if (!fordit1van) {//ha nincs meg benne ilyen szam,akkor beletesszuk
		        fordit1[fordit1p++]=gpicNum;
		        pic = new Image ();//a kepet meg betesszuk a tombbe
		        pic.src = images_path+"turn_"+numString+small+".jpg";
		        gameArray [i][j] = pic;
	        } else {
		        for (k2=0;k2<numOfPics;k2++) {//benne van, keressuk a 2-es tombben
	                if (fordit2[k2] == gpicNum) fordit2van = true; //mar benne van
		        }
		        if (!fordit2van) {//ha nincs meg benne ilyen szam,akkor beletesszuk
                    //atlos erintkezes elleni vedelem... ez nem bug, csak neha tul szabalyos lesz a kepek eloszlasa, ezen keverunk kicsit
                    //az elejen a tomb alulindexelese miatt nem kavarunk, de az utolso sorban, oszlopban a tulindexeles miatt
                    //igazából ennek a plusz keverésnek olyan túl sok értelme nincs, csak picit nehezít... de mosy már mind1 :-)
                    if ((i>0) && (j>0) && (i<numOfRow-1) && (j<numOfCol-1)) {
                        seged  = gameArray[i-1][j-1].src;
                        seged  = seged.substring(seged.lastIndexOf('/')+1);
                        seged2 = gameArray[i-1][j+1].src;
                        seged2 = seged2.substring(seged2.lastIndexOf('/')+1);
                        seged3 = "turn_"+numString+small+".jpg"
                        //atlo detected :-)
                        if (( seged == seged3) || (seged2 == seged3)) {
                            j--;
                            fordit2van = false;
                            continue;
                        }
                    }
		            fordit2[fordit2p++]=gpicNum;
		            pic = new Image ();//a kepet meg betesszuk a tombbe
		            pic.src = images_path+"turn_"+numString+small+".jpg";
		            gameArray [i][j] = pic;
		        } else {
		            j--;// mivel nem járt a sorsolas sikerrel, azaz olyan lapot sorsoltunk, ami mar bent van, csokkenteni kell j-t, új sorsolas
		            fordit2van = false;
		        }
		        fordit1van = false;
	        }
	    }
    }
} //init()

