var puzzle_x = 0;
var puzzle_y = 0;

var platesLocked=new Array();
var platesLockCounter=new Array();

var wordPlatesDiscovered=new Array();
var wordFound = '';
var wordDescription=new Array();
var wordsFound=new Array();

var plateNowID = 0;
var platePreviousID = 0;
var plateClicks = 0;


function puzzle_init() {
	// get X and Y of this puzzle by trying elements
	for(i=101;i<=199;i=i+1)
	{
		obj = document.getElementById(i);
		if ( (obj) && (obj.id) && (obj.id == i) )
		{
			puzzle_x = i;
		}else if (obj == null) {
			i = 200;
		}
	}
	
	for(i=101;i<=9901;i=i+100)
	{
		obj = document.getElementById(i);
		if ( (obj) && (obj.id) && (obj.id == i) )
		{
			puzzle_y = i;
		}else if (obj == null) {
			i = 9902;
		}
	}
	
	if (puzzle_x > 100){ puzzle_x = puzzle_x - 100; }
	if (puzzle_y > 100){ puzzle_y = puzzle_y - 1; puzzle_y = (puzzle_y/100); }

}


function char_click(obj) {
	
	plateClicks = plateClicks + 1;
	document.getElementById('klikov').value = plateClicks;
	
	if (plate_locked(obj.id))
	{
		alert('Ta črka je zaklenjena in se je ne da več klikniti!');
		return false;
	}
	
	var beseda = document.getElementById('word').value;
	
	if (beseda.length < 1)
	{
		alert('Najprej izberite iskano besedo!');
		return false;
	}

	// plate has been clicked
	obj.className = 'plate_in';

	
	plateNowID = obj.id;
	if (wordPlatesDiscovered.length < 1)
	{
		platePreviousID = plateNowID;
	}
	else
	{
		var element = wordPlatesDiscovered.length - 1;
		platePreviousID = wordPlatesDiscovered[element];
	}
	
	// are characters together
	if (platePreviousID != plateNowID)
	{
		if ( (plateNowID != (platePreviousID*1 + 1) ) && (plateNowID != (platePreviousID*1 - 1) ) && (plateNowID != (platePreviousID*1 + 100) ) && (plateNowID != (platePreviousID*1 - 100) ) )
		{
			alert('Napačna izbira! Poiskusi še enkrat!');
			setTimeout("doNothing()",3000);
			if (!plate_locked(obj.id))
			{
				if ( (platesLockCounter[obj.id] == undefined) || (platesLockCounter[obj.id] == null) )
				{
					if (plate_in_slection(obj.id))
					{
						obj.className = 'plate_ok';
					}
					else
					{
						obj.className = 'plate_out';
					}
				}
			}
			return false;
		}
	}

	// get char value and check character with word
	var character = obj.title;
	var charactersFound = wordPlatesDiscovered.length;
	

	// is this the de-click
	if ( (platePreviousID == plateNowID) && (charactersFound > 0) )
	{
		wordFound = wordFound.substr(0,(wordFound.length - 1));
		wordPlatesDiscovered.pop();
		if (!plate_locked(obj.id))
		{
			if ( (platesLockCounter[obj.id] == undefined) || (platesLockCounter[obj.id] == null) )
			{
				obj.className = 'plate_out';
			}
		}
		return false;
	}


	// just selecting first char in word
	if ( (platePreviousID == plateNowID) && (charactersFound == 0) )
	{
		var besedaCharacter = beseda.substr(charactersFound,1);
		/*if (beseda[charactersFound] == character)*/
		if (besedaCharacter == character)
		{
			obj.className = 'plate_ok';
			wordPlatesDiscovered[charactersFound] = plateNowID;
			wordFound = wordFound + character;
			//alert('Čestitke, le tako naprej!');
		}
		else
		{
			platePreviousID = 0;
			alert('Napačna izbira! Poiščite prvo črko iskane besede!');
			setTimeout("doNothing()",3000);
			if (!plate_locked(obj.id))
			{
				if ( (platesLockCounter[obj.id] == undefined) || (platesLockCounter[obj.id] == null) )
				{
					obj.className = 'plate_out';
				}
			}
			return false;
		}
	}
	else if (plate_in_slection(plateNowID))
	{
		obj.className = 'plate_ok';
		alert('Napačna izbira! Kliknite drugo črko te besede!');
		return false;
	}
	else
	{
		var besedaCharacter = beseda.substr(charactersFound,1);
		/*if (beseda[charactersFound] == character)*/
		if (besedaCharacter == character)
		{
			obj.className = 'plate_ok';
			wordPlatesDiscovered[charactersFound] = plateNowID;
			wordFound = wordFound + character;
			//alert('Čestitke, le tako naprej!');
		}
		else
		{
			alert('Napačna izbira! Poiščite naslednjo črko iskane besede!');
			setTimeout("doNothing()",3000);
			if (!plate_locked(obj.id))
			{
				if ( (platesLockCounter[obj.id] == undefined) || (platesLockCounter[obj.id] == null) )
				{
					obj.className = 'plate_out';
				}
			}
			return false;
		}

	}
	
	
	if ( (wordFound.length == beseda.length) && (wordFound == beseda) )
	{
		word_found();
		//alert('Čestitke, beseda je bila najdena!');
		puzzle_done();
	}
	
}


function word_select() {
	plateNowID = 0;
	platePreviousID = 0;
	wordFound = '';
	while(wordPlatesDiscovered.length > 0)
	{
		wordPlatesDiscovered.pop();
	}
	plates_out();
	plates_hint();
}


function remove_option_from_select(value) {
	
	var select = document.getElementById('word');
	for (i=0;i<select.length;i++ )
	{
		if (select.options[i].value == value)
		{
			select.options[i] = null;
			break;
		}
	}
	
}

function doNothing() {
	return true;
}

function puzzle_done() {
	var select = document.getElementById('word');
	if ( (select.length == 1) && (select[0].value == '') ) {
		alert('Čestitke, končali ste igro!');
		plates_lock_all();
	}
	else if ( (wordsFound.length >= 4) && (CollectingPlayers === true) ) {
		if (wordsFound.length == 4)
		{
			alert('Čestitke, našli ste toliko znakov limfoma, da lahko sodelujete v nagradni igri za darilo!');
			document.getElementById('btnSubmit').disabled = false;
                        document.getElementById('btnSubmit').className = 'btnVpisActive';
		}
		puzzle_player_ok();
	}
}

function word_found() {
	i = wordsFound.length;
	wordsFound[i] = wordFound;
	remove_option_from_select(wordFound);
	document.getElementById(wordFound).style.display = 'block';
	wordFound = '';
	plateNowID = 0;
	platePreviousID = 0;
	while(wordPlatesDiscovered.length > 0)
	{
		i = wordPlatesDiscovered.length - 1;
		plateID = wordPlatesDiscovered[i];
		if ( (platesLocked[plateID] == undefined) || (platesLocked[plateID] == null) || (platesLocked[plateID] < 1) )
		{
			platesLocked[plateID] = 1;
		} else {
			platesLocked[plateID] = platesLocked[plateID] + 1;
		}
		wordPlatesDiscovered.pop();
	}
	plates_out();
}

function plates_out() {
	// change all unlocked plate_ok into plate_out
	plate_col_end = (puzzle_x * 1);
	plate_row_end = (puzzle_y * 100);
	
	for(i=100;i<=plate_row_end;i=i+100)
	{
		for(j=1;j<=plate_col_end;j=j+1)
		{
			k = i + j;
			obj = document.getElementById(k);
			if ( (obj) && (obj.id) && (obj.id == k) )
			{
				if ( (obj.className) && ( (obj.className == 'plate_ok') || (obj.className == 'plate_hint') ) )
				{
					if (!plate_locked(k))
					{
						if ( (platesLockCounter[k] == undefined) || (platesLockCounter[k] == null) )
						{
							obj.className = 'plate_out';
						}
					}
				}
			}
		}
	}
}

function puzzle_player_ok() {
	var plates = '';
	document.getElementById('GameID2').value = GameID2;
	for (var key in platesLocked) { plates = plates + ',' + key; }
	document.getElementById('PlateID').value = plates;
	document.getElementById('FoundWords').value = wordsFound;
	return;
}

function plate_locked(id) {
	
	if ( (platesLocked[id] == undefined) || (platesLocked[id] == null) || (platesLocked[id] < 1) )
	{
		return false;
	}
	
	// check if the required plate can be locked more than once; e.g. when words cross
	if ( (platesLockCounter[id] != undefined) && (platesLockCounter[id] != null) && (platesLockCounter[id] > 1) )
	{
		if (platesLockCounter[id] > platesLocked[id])
		{
			return false;
		}
	}

	return true;
}

function plates_lock_all() {
	// lock all plates
	plate_col_end = (puzzle_x * 1);
	plate_row_end = (puzzle_y * 100);
	
	for(i=100;i<=plate_row_end;i=i+100)
	{
		for(j=1;j<=plate_col_end;j=j+1)
		{
			k = i + j;
			obj = document.getElementById(k);
			if ( (obj) && (obj.id) && (obj.id == k) )
			{
				platesLocked[k] = platesLocked[k] + 1;
			}
		}
	}
}

function plate_in_slection(plateID) {
	if ( (plateID == null) || (plateID < 100) )
	{
		return true;
	}
	
	for (var i in wordPlatesDiscovered)
	{
		if (wordPlatesDiscovered[i] == plateID)
		{
			return true;
		}
	} 
	
	return false;
}

function plates_hint() {
	var selected_word = document.getElementById('word').value;
	switch(selected_word)
	{
	case 'POVEČANEBEZGAVKE':
		document.getElementById('104').className = 'plate_hint';
		break;
	case 'VROČINA':
		document.getElementById('501').className = 'plate_hint';
		break;
	case 'NOČNOPOTENJE':
		document.getElementById('701').className = 'plate_hint';
		break;
	case 'HUJŠANJE':
		document.getElementById('906').className = 'plate_hint';
		break;
	case 'ZASOPLOST':
		document.getElementById('1303').className = 'plate_hint';
		break;
	case 'KAŠELJ':
		document.getElementById('1504').className = 'plate_hint';
		break;
	case 'SRBEČICA':
		document.getElementById('616').className = 'plate_hint';
		break;
	case 'UTRUJENOST':
		document.getElementById('311').className = 'plate_hint';
		break;
	default:
	}
	return true;
}

