/*
Mahjong 2D, ©Copyright 2007,2008 - bezumie.com, All Rights Reserved
Mahjong 2D, ©Copyright 2007,2008 - bezumie.com, Всички права запазени
*/
var gameIsOver;
var gameIsPaused;
var loading;
var level;
var tilesLeft;
var timeLeft;
var tilesSet;
var ZI=100;
function rand(a,b){
	return Math.floor(Math.random()*(b-a+1)+a);
}
function showScreen(objName){
	ZI++;
	document.getElementById(objName).style.display = 'block';
	document.getElementById(objName).style.zIndex=ZI;
}
function closeScreen(objName){
	document.getElementById(objName).style.display='none';
}
function showHelp(){
	showScreen('help');
}
function pauseGame(){
	gameIsPaused=true;
	document.getElementById('board').style.display='none';
	showScreen('pause');
}
function resumeGame(){
	closeScreen('pause');
	document.getElementById('board').style.display='block';
	gameIsPaused=false;
}
function gameOver(){
	gameIsOver=true;
	showScreen('gameOver');
}
function newGame(){
	document.location=document.location;
}
function showTilesInfo(){
	document.getElementById('tilesLeft').innerHTML=tilesLeft;
}
function showTimeInfo(){
	var m=Math.floor(timeLeft/60);
	var s=timeLeft-(m*60);
	if(s<10){s='0'+s;}
	document.getElementById('timeLeft').innerHTML=m+':'+s;
}
function mistake(){
	timeLeft=timeLeft-10;
	if(timeLeft<0){timeLeft=0;}
	showTimeInfo();
}
var SEL={obj:undefined,t:undefined,x:undefined,y:undefined};// purvoto izbrano
function hidetile(x,y){
	var obj=document.getElementById('t_'+y+'_'+x);
	var img=document.getElementById('i_'+y+'_'+x);
	obj.removeChild(img);
	obj.style.background='none';
	delete img;
}
function hidetiles(obj,x,y){
	var obj1=SEL.obj;
	unseltile();
	hidetile(x,y);
	hidetile(SEL.x,SEL.y);
	tilesLeft=tilesLeft-2;
	showTilesInfo();
	showTimeInfo();
	if(!tilesLeft){nextLevel();}
}
function seltile(obj,t,x,y){
	SEL.obj=obj;
	SEL.t=t;
	SEL.x=x;
	SEL.y=y;
	document.getElementById('t_'+y+'_'+x).style.background="url('"+tilesSet+"bt2.gif')";
}
function unseltile(){
	document.getElementById('t_'+SEL.y+'_'+SEL.x).style.background="url('"+tilesSet+"bt1.gif')";
	SEL.obj=undefined;
}
function checktiles(x1,y1,arr){
	if(arr.length>3){return false;}
	if((SEL.x==x1)&&(SEL.y==y1)){
		return true; // Tova moje da e verno samo pri vtoro preminavane!
	}
	if((x1<-1)||(y1<-1)||(x1>COLS+1)||(y1>ROWS+1)){return false;}
	if((arr.length)&&(document.getElementById('t_'+y1+'_'+x1).innerHTML)){return false;} // ako e zaeto
	var x,y,s;
	var l; // last direction
	if(arr){l=arr.charAt(arr.length-1);}
	else{l='';}
	x1=x1-0;
	y1=y1-0;
	x=x1-1;
	if(x>=0){
		if(!arr){s='L';}
		else if(l!='L'){s=arr+'L';}
		else{s=arr;}
		if((l!='R')&&(checktiles(x,y1,s))){return true;}
	}
	x=x1+1;
	if(x<=COLS+1){
		if(!arr){s='R';}
		else if(l!='R'){s=arr+'R';}
		else{s=arr;}
		if((l!='L')&&(checktiles(x,y1,s))){return true;}
	}
	y=y1-1;
	if(y>=0){
		if(!arr){s='U';}
		else if(l!='U'){s=arr+'U';}
		else{s=arr;}
		if((l!='D')&&(checktiles(x1,y,s))){return true;}
	}
	y=y1+1;
	if(y<=ROWS+1){
		if(!arr){s='D';}
		else if(l!='D'){s=arr+'D';}
		else{s=arr;}
		if((l!='U')&&(checktiles(x1,y,s))){return true;}
	}
	return false;
}
function tiled(e){
	if(gameIsOver){return;}
	if(!e){e=window.event;}
	if(!e.which){e.which=e.button;}
	if(e.which>1){return;}
	var obj;
	if(e.target){obj=e.target;}
	else{obj=e.srcElement;}
	if(e.preventDefault){e.preventDefault();}
	e.returnValue=false;
	var s=obj.id.split('_');
	var y = s[1];
	var x = s[2];
	var t = obj.className;
	// ako e pyrvoto - go markirame
	if(!SEL.obj){
		seltile(obj,t,x,y);
		return;
	}
	// ako e syshtoto - razmarkirame pyrvoto izbrano
	if((SEL.x===x) && (SEL.y===y)){
		unseltile();
		return;
	}
	// ako ne sa ednakvi kartinkite - razmarkirame pyrvoto izbrano
 	if(SEL.t!==t){
		unseltile();
		mistake();
		return;
	}
	// proverka
	if (checktiles(x,y,'')){hidetiles(obj,x,y);}
	else {
		mistake();
		unseltile();
	}
}
var IMGS=[];
var oIP;
function nextLevel(){
	loading=true;
	level++;
	var set=level;
	if(set>4)set-=4;
	tilesSet='img/set0'+set+'/';
//	tilesSet='http://bezumie.com/mahjong2d/'+tilesSet;
	var i;
	var imgSrc=[];
	for(i=1;i<=TILES;i++){
		imgSrc[i]=tilesSet+'tile'+i+'.gif';
	}
	imgSrc[TILES+1]=tilesSet+'bt1.gif';
	imgSrc[TILES+2]=tilesSet+'bt2.gif';

	document.getElementById('level').innerHTML=level;
	oIP.preloadAll(imgSrc, shuffle);
}
function shuffle(imgs){
	IMGS=imgs;
	var i,j,c,r,n;
	var tiles=[];
	n=0;
	for(i=1;i<=TILES;i++){
		for(j=0;j<TCOUNT;j++){
			tiles[n]={};
			tiles[n].img=i;
			n++;
		}
	}
	i=4;
	while(i>0){
		for(n=0;n<TILES*TCOUNT;n++){tiles[n].tmpRand=Math.floor(Math.random()*10000);}
		tiles.sort(function(a,b){return b.tmpRand-a.tmpRand;});
		i--;
	}
	var obj,img;
	n=0;
	for(c=1;c<=COLS;c++){
		for(r=1;r<=ROWS;r++){
			img=new Image();
			img.src=IMGS[tiles[n].img].src;
			img.id="i_"+r+'_'+c;
			img.className='t'+tiles[n].img;
			img.onmousedown=tiled;
			img.ondragstart=function(){return false;};
			obj=document.getElementById('t_'+r+'_'+c);
			obj.style.background="url('"+tilesSet+"bt1.gif')";
			obj.appendChild(img);
			n++;
		}
	}
	tilesLeft=TILES*TCOUNT;
	showTilesInfo();
	timeLeft=(5.5-(level/2))*60;
	if(timeLeft<=0){timeLeft=30;}
	showTimeInfo();
	loading=false;
	if(level==1)tick();
}
function tick(){
	if(gameIsOver){return;}
	var p;
	if(gameIsPaused){
		p=document.getElementById('pauseText');
		if(p.innerHTML=='&nbsp;'){p.innerHTML=PGT;}
		else{p.innerHTML='&nbsp;';}
	}
	else if(!loading){
		timeLeft--;
		if(timeLeft<0){timeLeft=0;}
		showTimeInfo();
	}
	if(!timeLeft){gameOver();}
	else {setTimeout('tick()',1000);}
}
function init(){
	if(typeof(ImagePreloader) ==='undefined'){
		setTimeout('init()', 500);
		return false;
	}
	oIP=new ImagePreloader(document.getElementById('main'));
	level=0;
	gameIsPaused=false;
	gameIsOver=false;
	nextLevel();
}