var colors = ["#700", "#070", "#007", "#770", "#707", "#077"];
var logos = ["besniped/aldi.jpg","besniped/netto.jpg","besniped/edeka.jpg","besniped/lidl.jpg","besniped/obi.jpg","besniped/saturn.jpg"];
var maxcolor = 5;var dimens = 13;var selectedDiv = null;
var playing=false;
var countdown;
var countdown_number;
var highscore;

function countdown_init() {
    countdown_number = 61; /* 61 */
    countdown_trigger();
}

function countdown_trigger() {
    if(countdown_number > 0) {
        countdown_number--;
        document.getElementById('countdown_text').innerHTML = countdown_number;
        if(countdown_number > 0) {
            countdown = setTimeout('countdown_trigger()', 1000);
        }
    } 
	if (countdown_number==0) {
		$(".MainGameDiv").fadeOut("slow");
		$(".scorediv").fadeOut("slow");
		$(".scorepic").fadeOut("slow");
		$(".countdown_text").fadeOut("slow");
		$(".GameOver").fadeIn("slow");
		playing=false;
		highscore=document.getElementById("scorediv").innerHTML;
		document.getElementById('highscore_text').innerHTML = document.getElementById("scorediv").innerHTML;
	}
}

function countdown_clear() {
    clearTimeout(countdown);
}


function GetItem(i, j) {
	return document.getElementById("div_"+i+"_"+j);
}
function GetColor(i, j) {
	return document.getElementById("div_"+i+"_"+j).style.backgroundColor;
}
function SetOpacity( elem, level ) {
	elem.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+level+")";
	elem.style.opacity = level / 100;
	elem.opacity = level;
}
function RPX(px) {
	if (!px) return 0;
	if (px.indexOf('px') <0) return 0;
	return px.replace("px", "")*1;
}
function InitGame() {
	playing=true;
	countdown_init();
	var s ="";
	for (var i=0;i<dimens;i++) {
		for (var j=0;j<dimens;j++) {
			s+="<a href='#' id='div_"+i+"_"+j+"' style='left:"+(j*40+2)+"px;top:"+(i*40+2)+"px' class='item'></a>";
		}
	}
	document.getElementById("MainGameDiv").innerHTML = s;
	for (var i=0;i<dimens;i++) {
		for (var j=0;j<dimens;j++) {
			GetItem(i, j).i = i;
			GetItem(i, j).j = j;
			GetItem(i,j).deleted = 1;
			GetItem(i, j).onclick = ItemClick;
			SetOpacity(GetItem(i, j), 0);
		}
	}
	CreateNewItem();
}
function ItemClick() {
if (playing==true) {
	if (this == selectedDiv) {
		this.style.borderStyle="solid";
		selectedDiv = null;
	} else if (selectedDiv != null) {
		if (Math.abs(selectedDiv.i-this.i) + Math.abs(selectedDiv.j-this.j) == 1) {
			selectedDiv.style.borderStyle="solid";
			var tempDiv1 = this;
			var tempDiv2 = selectedDiv;
			SwapItems(tempDiv1, tempDiv2, function() { FindVariants(tempDiv1, tempDiv2);});
			selectedDiv = null;
		} else {
			selectedDiv.style.borderStyle="solid";
			this.style.borderStyle="dotted";
			selectedDiv = this;
		}
	} else {
		this.style.borderStyle="dotted";
		selectedDiv = this;
	}
}
	return false;
}
function ChangeItems(item1, item2) {
	var bg2 = item2.style.background;
	item2.style.background = item1.style.background;
	item1.style.background = bg2;
	var del = item2.deleted;
	item2.deleted = item1.deleted
	item1.deleted = del;
	var opa = item2.opacity;
	SetOpacity(item2, item1.opacity);
	SetOpacity(item1, opa);
}
function SwapItems(item1, item2, callBack) {
	ChangeItems(item1, item2);
	item1.style.marginTop  = (item2.i - item1.i)*40+"px";
	item1.style.marginLeft = (item2.j - item1.j)*40+"px";
	item2.style.marginTop  = (item1.i - item2.i)*40+"px";
	item2.style.marginLeft = (item1.j - item2.j)*40+"px";
	MarginAnimate(callBack);
	
}
function MarginAnimate(callBack) {
	var done = true;
	for (var i=0;i<dimens;i++) for (var j=0;j<dimens;j++) {
		var item = GetItem(i,j);
		var sig = RPX(item.style.marginTop)<0?-1:1;
		sig *= RPX(item.style.marginLeft)<0?-1:1;
		if (RPX(item.style.marginTop) != 0) {
			item.style.marginTop = (RPX(item.style.marginTop)-5*sig) + "px";
			done = false;
		} 
		if (RPX(item.style.marginLeft) != 0 ) {
			item.style.marginLeft = (RPX(item.style.marginLeft)-5*sig) + "px";
			done = false;
		}
	}
	if (!done) setTimeout(function() {MarginAnimate(callBack);}, 10);
	if (done && callBack)  callBack();
}
function FindVariants(item1, item2) {
	var hasVariants = false;
	var score = 0;
	for (var i=0;i<dimens;i++) {
		for (var j=0;j<dimens;j++) {
			if (i<dimens-2 && GetColor(i,j)==GetColor(i+1,j) && GetColor(i,j)==GetColor(i+2,j)) {
				GetItem(i,j).deleted = 101;
				GetItem(i+1,j).deleted = 101;
				GetItem(i+2,j).deleted = 101;
				hasVariants = true;
				score++;
			}
			if (j<dimens-2 && GetColor(i,j)==GetColor(i,j+1) && GetColor(i,j)==GetColor(i,j+2)) {
				GetItem(i,j).deleted = 101;
				GetItem(i,j+1).deleted = 101;
				GetItem(i,j+2).deleted = 101;
				hasVariants = true;
				score++;
			}
		}
	}
	document.getElementById("scorediv").innerHTML = document.getElementById("scorediv").innerHTML*1 + score*10;
	countdown_number++;document.getElementById('countdown_text').innerHTML = countdown_number;
	
	
	if (!hasVariants && item1 && item2) SwapItems(item1, item2);
	else DeleteAnimate(FallToEmpty);
}
function DeleteAnimate(callBack) {
	var done = true;
	for (var i=0;i<dimens;i++) {
		for (var j=0;j<dimens;j++) {
			if (GetItem(i,j).deleted>1) {
				GetItem(i,j).deleted -=10;
				SetOpacity(GetItem(i,j), GetItem(i,j).deleted-1);
				done = false;
			}
		}
	}
	if (!done) setTimeout(function() {DeleteAnimate(callBack);}, 20);
	if (done && callBack)  callBack()
}
function FallToEmpty() {
	var done = false;
	while (!done) {
		done = true;
		for (var i=0;i<dimens-1;i++) {
			for (var j=0;j<dimens;j++) {
				if (GetItem(i,j).deleted==0 && GetItem(i+1,j).deleted>0) {
					ChangeItems(GetItem(i,j), GetItem(i+1,j));
					GetItem(i+1,j).style.marginTop = (RPX(GetItem(i,j).style.marginTop) - 40) + "px";
					done = false;
					//was = true;
				}
			}
		}
	}
	MarginAnimate(CreateNewItem);
}

function CreateNewItem() {
	var was = false;
	for (var i=0;i<dimens;i++) for (var j=0;j<dimens;j++) {
		if (GetItem(i,j).deleted>0) {
			var itemcolor=colors[Math.round(Math.random()*maxcolor)];
			GetItem(i, j).style.background=itemcolor;
			<!-- GetItem(i, j).style.background=colors[Math.round(Math.random()*maxcolor)]; -->
			if (itemcolor=="#700") GetItem(i, j).style.backgroundImage='url(template/default/besnipd/aldi.png)';
			if (itemcolor=="#070") GetItem(i, j).style.backgroundImage='url(template/default/besnipd/netto.png)';
			if (itemcolor=="#007") GetItem(i, j).style.backgroundImage='url(template/default/besnipd/edeka.png)';
			if (itemcolor=="#770") GetItem(i, j).style.backgroundImage='url(template/default/besnipd/lidl.png)';
			if (itemcolor=="#707") GetItem(i, j).style.backgroundImage='url(template/default/besnipd/obi.png)';
			if (itemcolor=="#077") GetItem(i, j).style.backgroundImage='url(template/default/besnipd/saturn.png)';
			
					
			was = true;
		}
	}
	if (was) AppearAnimate(FindVariants);
}
function AppearAnimate(callBack) {
	var done = true;
	for (var i=0;i<dimens;i++) {
		for (var j=0;j<dimens;j++) {
			if (GetItem(i,j).deleted>0 && GetItem(i,j).deleted<101) {
				GetItem(i,j).deleted +=10;
				SetOpacity(GetItem(i,j), GetItem(i,j).deleted-1);
				done = false;
			} else {
				GetItem(i,j).deleted = 0;
			}
		}
	}
	if (!done) setTimeout(function() {AppearAnimate(callBack);}, 20);
	if (done && callBack)  callBack();
}
/* window.onload =	InitGame; */
