/*
Bridges,©Copyright 2006,2007 - bezumie.com, All Rights Reserved
Ìîñòîâå,©Copyright 2006,2007 - bezumie.com, Âñè÷êè ïðàâà çàïàçåíè
*/
var startIsland=null;
var br=new Array();
var bro=new Array();
var isl=new Array();

function el2pos(el){
	var n=parseInt(el.id.substr(1,4));
	var x=Math.floor(n % boardx);
	var y=Math.floor(n / boardx);
	return new Array(x,y);
}
function pos2el(x,y){
	var p=(y*boardx)+x;
	return document.getElementById('p'+p);
}
function downme(el,event){
	if(gameIsOver){
		return false;
	}
	startIsland=el;
}
function upme(el,event){
	if(gameIsOver){
		return false;
	}
	if(!startIsland){
		return false;
	}
	if(startIsland==el){
		return false;
	}
	var pos=el2pos(startIsland);
	var x1=pos[0];
	var y1=pos[1];
	pos=el2pos(el)
	var x2=pos[0];
	var y2=pos[1];
	if(!((x1==x2)||(y1==y2)))return ;// diagonal
	if(!(canBuild(x1,y1,x2,y2)))return ;// ostrov pomejdu im
	var cnt=buildBridge(x1,y1,x2,y2);
	board[y1][x1]=board[y1][x1]+cnt;
	var brcnt=startIsland.className.substr(6,1);
	if(board[y1][x1]==0){
		startIsland.style.background='url('+bro[brcnt].src+')';
	}
	else {
		startIsland.style.background='url('+br[brcnt].src+')';
	}

	board[y2][x2]=board[y2][x2]+cnt;
	brcnt=el.className.substr(6,1);
	if(board[y2][x2]==0){
		el.style.background="url("+bro[brcnt].src+")";
	}
	else {
		el.style.background="url("+br[brcnt].src+")";
	}
	var tmp=startIsland;
	startIsland=null;
	if(checkSolved()){
		gameOver();
	}
}
function canBuild(x1,y1,x2,y2){
	var el,y,x,starty,endy,startx,endx;
	if(x1==x2){
		if(y1<y2){
			starty=y1+1;
			endy=y2;
		} 
		else {
			starty=y2+1;
			endy=y1;
		}
		for(y=starty;y<endy;y++){
			el=pos2el(x1,y);
			if(el.className.indexOf('island')>= 0)return false;
			if(el.style.background.indexOf('hbridge')>= 0)return false;
		}
	}
	else {
		if(x1<x2){
			startx=x1+1;
			endx=x2;
		} 
		else {
			startx=x2+1;
			endx=x1;
		}
		for(x=startx;x<endx;x++){
			el=pos2el(x,y1);
			if(el.className.indexOf('island')>= 0)return false;
			if(el.style.background.indexOf('vbridge')>= 0)return false;
		}
	}
	return true;
}
function buildBridge(x1,y1,x2,y2){
	var bck,el,x,y,startx,starty,endx,endy;
	var cnt=-1;
	if(x1==x2){
		if(y1<y2){
			starty=y1+1;
			endy=y2;
		}
		else {
			starty=y2+1;
			endy=y1;
		}
		for(y=starty;y<endy;y++){
			el=pos2el(x1,y);
			bck=el.style.background;
			if(bck.indexOf('2.gif')> 0){
				el.style.background='';
				cnt=2;
			}
			else if(bck.indexOf('1.gif')> 0){
				el.style.background='url('+isl[4].src+')';
			}
			else{
				el.style.background='url('+isl[3].src+')';
			}
		}
	}
	else {
		if(x1<x2){
			startx=x1+1;
			endx=x2;
		}
		else {
			startx=x2+1;
			endx=x1;
		}
		for(x=startx;x<endx;x++){
			el=pos2el(x,y1);
			bck=el.style.background;
			if(bck.indexOf('2.gif')> 0){
				el.style.background='';
				cnt=2;
			}
			else if(bck.indexOf('1.gif')> 0){
				el.style.background='url(' + isl[2].src + ')';
			}
			else {
				el.style.background='url(' + isl[1].src + ')';
			}
		}
	}
	return cnt;
}
function checkSolved(){
	var x,y;
	for(y=0;y<boardy;y++){
		for(x=0;x<boardx;x++)
			if(board[y][x]!=0)return false;
	}
	return true;
}
function gameOver(){
	gameIsOver=true;
	document.getElementById('gameOver').style.display='block';
}
function clearbridges(){
	if(gameIsOver){
		return false;
	}
	var i,x,y,el,bck;
	for(y=0;y<boardy;y++){
		for(x=0;x<boardx;x++){
			el=pos2el(x,y);
			bck=el.style.background;
			if((bck.indexOf('1.gif')>0)||(bck.indexOf('2.gif')>0))el.style.background="";
			else if(el.className.indexOf('island')>= 0){
				i=el.className.charAt(6);
				el.style.background="url("+br[i].src+")";
				board[y][x]=(i*1);
			}
		}
	}
	return false;
}
function init(){
	var i;
	for(i=1;i<9;i++){
		br[i]=new Image();
		br[i].src='img/island'+i+'.gif';
		bro[i]=new Image();
		bro[i].src='img/island'+i+'ok.gif';
	}
	for(i=1;i<=2;i++){
		isl[i]=new Image();
		isl[i].src='img/hbridge'+i+'.gif';
		isl[i+2]=new Image();
		isl[i+2].src='img/vbridge'+i+'.gif';
	}
}
