// JavaScript Document
var pic = '';
var picsOrig = new Array();
var cardBack = ''; //dopsat na stránce
var element = new Array();
var a = new Array();
var backgroundState = 0; //stav zadku karet 0 = videt je prední strana, 1 = vidět je zadní strana
var gridContainers;
$(document).ready(
	function()
	{
		$("#bigCard").html('<img src="" />');
		if(document.getElementById('cardList'))
			shuffleCards(document.getElementById('cardList'));
	}

);
$(function()
{
	gridContainers = $('#grid input[type=checkbox]');
});
var n = 1;
var position = 0;
function touch( data )
{
	if(data.checked)
	{
/*		gridContainers.each(function()
		{
			if(this.checked == true)
			{
				if(this.value > n && (this.value != data.value))
				{
					n = parseInt(this.value) + 1;
				}
			}
		});*/
		
		if(position > 0)
		{
			data.parentNode.innerHTML += position;
			document.getElementById(data.id).value = position;
			position = 0;
		}
		else
		{
			data.parentNode.innerHTML += n;
			document.getElementById(data.id).value = n;
			n++;
		}

		document.getElementById(data.id).checked = true;
	}
	else
	{
		position = data.value;
		data.parentNode.innerHTML = data.parentNode.innerHTML.slice(0,data.parentNode.innerHTML.lastIndexOf(">"));
		document.getElementById(data.id).checked = false;
	}
}

var currentGrid = 0;
var cssClass;
var inProcess = false;
function choose(obj)
{
	if(grid[currentGrid])
	{
		if(inProcess == false)
		{
			inProcess = true;
			href = call;
			jSon = '';
			var pos = grid[currentGrid][0];
			var desc = grid[currentGrid][1];
			if(currentGrid > 0)
			{
				for(a = 0; a < currentGrid; a++)
				{
					jSon += grid[a]+',';
				}
			}
			jSon = jSon.substring(0,jSon.lastIndexOf(","));
			jSon = eval('thisActionData = {"cardData":"'+jSon+'"}');
			$("#grid"+grid[currentGrid][0]).addClass("spinner");
			ajaxCall(href, jSon, function(data)
			{
				cardData = data.cardData;
				$(obj).attr({"onclick":""})
					.addClass("selected")
					.unbind("click",function(){return false;})
					.find("img")
						.attr("title",cardData.title);
				$("img",obj).attr("src",imageDir+"/thumb/"+cardData.image);
				$("a","#grid"+grid[currentGrid][0])
					.attr("href","#"+cardData.slug)
					.find("img")
						.attr({"src":imageDir+"/thumb/"+cardData.image, "title":cardData.title+' - '+desc})
						.bind("mouseover", function()
						{
							href = this.src.replace("/thumb/","/");
							$("img","#bigCard").attr("src",href);
						}).bind("mouseout", function()
						{
							$("img","#bigCard").attr("src",'');
						});
				grid[currentGrid] = cardData.id;
			}, function()
			{
				cssClass = cssClass == 'fltlftBordered' ? 'fltrtBordered' : 'fltlftBordered';
				$("#result").append('<div style="resultCard"><a name="'+cardData.slug+'" /><h2>Pozice '+pos+': '+cardData.title+'</h2> &ndash; <strong>'+desc+'</strong></a><img class="'+cssClass+'" src="'+imageDir+'/'+cardData.image+'" title="'+cardData.title+'" />'+cardData.description+'</div><hr class="clearfloat" />');
				
				inProcess = false;
				$("#grid"+pos).removeClass("spinner");
				currentGrid++;
				if(!grid[currentGrid] && $("#cardChoose").is(":visible"))
				{
					$("#cardChoose").slideUp();
				}
			});
		}
		else
		{
			alert('Právě vybírám kartu, chvilku strpení. Děkuji');
		}
	}
	else if($("#cardChoose").is(":visible"))
	{
		$("#cardChoose").slideUp();
	}
	return false;
}

function cardBackScript ( id, arrayRef )
{
	//runFunc = 'this.className += \' mark\'; rememberId('+ id +'); turnOneBack(this,'+arrayRef+'); return false;';
	runFunc = 'this.className += \' mark\'; rememberId('+ id +'); turnOneBack(this,'+arrayRef+'); return false;';
	return runFunc;
}

function get_element ( elementRef, name )
{ 
	//načtení jednoho elementu z objektu element reference (jineho elementu)
	elements = elementRef.getElementsByTagName(name);
	for(i=0;i < elements.length; i++)
	{
		element[i] = elements[i];
		a[i] = i;
	}
	return element;
}

function shuffleCards ( data )
{
	if(element.length <= 0)
	{
		swapBackground( data );
	}
	else
	{
		document.reading.multipleCards.value = '';
		pic = '';
		shuffle(a); //abych priradil nahodne id
		for(i=0; i < element.length; i++)	
		{
			element[i].src = cardBack;
			element[i].onclick = new Function(cardBackScript(element[a[i]].id, a[i]));
			element[i].className = picsOrig[i]["className"];
			picsOrig[i]["status"] = 1;
			element[i].parentNode.onclick = 'return false;';
			backgroundState = 1;
		}
	}
}

function resetSelectedItems()
{
	document.reading.multipleCards.value = '';
}

function swapBackground( data )
{ //přehazování stran
	pic = '';
	resetSelectedItems();
	if(element.length <= 0)
	{
		element = get_element(data,'IMG');
	}
	if(backgroundState == 0)
	{
//		element.forEach(swapFront);
		swapFront( element );
		backgroundState = 1;
	}
	else
	{
		swapBack( element );
		backgroundState = 0;
	}
}
function swapFront ( element )
{ //prohodit přední stranu za zadní

	shuffle(a); //abych priradil nahodne id
	for(i=0; i < element.length; i++)	
	{
		picsOrig[i] = new Array(); //puvodni informace o elementu
		picsOrig[i]["src"] = element[i].src;
		picsOrig[i]['function'] = element[i].onclick;
		picsOrig[i]['afunction'] = element[i].parentNode.onclick;
		picsOrig[i]['className'] = element[i].className;
		picsOrig[i]['title'] = element[i].title;
		picsOrig[i]["status"] = 1;
		picsOrig[i]["parentHref"] = element[i].parentNode.href;
		element[i].src = cardBack; //stavající element
		element[i].onclick = new Function(cardBackScript(element[a[i]].id, a[i]));
		element[i].parentNode.onclick = 'return false;';
		element[i].title = 'Vybrat tuto kartu';
		
		//klidně se může i Alt a title .. vymyslet funkce :-)
	}
}
function swapBack ( element )
{ //prohodit zadní stranu za přední
	for(i=0; i < element.length; i++)
	{
		element[i].src = picsOrig[i]["src"];
		element[i].onclick = picsOrig[i]['function'];
		element[i].className = picsOrig[i]["className"];
		element[i].parentNode.onclick = picsOrig[i]['afunction'];
		element[i].parentNode.href = picsOrig[i]['parentHref'];
		element[i].title = picsOrig[i]['title'];
	}
}
function turnOneBack ( ref, elementRef )
{ //otočit jednu zpět
/*
	problém je v tom, že se to musí udělat přes ID
*/
	if(picsOrig[elementRef]["status"] != 0)
	{
		ref.src = picsOrig[elementRef]["src"];
		ref.title = picsOrig[elementRef]["title"];
//		ref.onclick = picsOrig[elementRef]["function"];
//		ref.parentNode.href = picsOrig[elementRef]["parentHref"];
//		ref.parentNode.onclick = picsOrig[elementRef]["afunction"]; 
		picsOrig[elementRef]["status"] = 0;
	}
}

function debug ( code )
{
	//document.getElementById('debug').innerHTML += code+', ';
	alert(code);
}

function shuffle(v){
    for(var j, x, i = v.length; i ; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);
    return v;
};
function rememberId(id)
{
	if(pic.indexOf(id) == -1)
	{
		pic += id+', ';
		document.reading.multipleCards.value = pic;
	}
}
// Array.shuffle( deep ) - Randomly interchange elements
Array.prototype.shuffle = function( b ) {
 var i = this.length, j, t;
 while( i ) {
  j = Math.floor( ( i-- ) * Math.random() );
  t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
  this[i] = this[j];
  this[j] = t;
 }
 return this;
};

Array.prototype.forEach = function( f ) 
{
 var i = this.length, j, l = this.length;
 for( i=0; i<l; i++ ) { if( ( j = this[i] ) ) { f( j ); } }
};


