
$(function() {
	// a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore!
	$("#dialog").dialog("destroy");

		$("#criteriumDialog").dialog({
		autoOpen: false,
		height: 400,
		width: 300,
		modal: true,
		buttons: {
			'Uložit a pokračovat': function() {
				var bValid = true;
				if (bValid) {
					var $values = $("#criteriumValues").serialize();
					//alert($values);
					if ($values == '' || $values == 'cenaOd=&cenaDo=' || $values == 'terminOd=&terminDo=&pocetNociOd=&pocetNociDo=' || $values == 'vzdalenost_od_plaze=') {
						alert('Vyberte prosím hodnotu nebo Zpět');
						return;
					}
					//showLoader();
					loadStep({criterium : $displayedCriterium, values : $values, success: function(data, criterium) {
						//hideLoader();
						var $criteriumValue = new CriteriumValue();
						$criteriumValue.criterium = criterium;
						addStep($criteriumValue, data[0], data[1], data[2]);
						$('#criteriumDialog').dialog('close');
					}});
				}
			},
			'Zrušit': function() {
				$(this).dialog('close');
			}
		},
		close: function() {
			//allFields.val('').removeClass('ui-state-error');
		}
	});
});

var $debug = false;
var $displayedCriterium;
var $steps = Array();

function isCriteriumUsed($id) {
	for ($index = 0; $index < $steps.length; $index = $index + 1) {
		if ($steps[$index].criteriumValue.criterium.id == $id) 
			return true;
	}
	return false;
}

function displayCriterium($id) {
	if (isCriteriumUsed($id)) {
//			alert('Criterium ' + $id + ' already used');
		return;
	}
	showLoader();
	loadCriterium({id : $id, success: function(data) {
		hideLoader();
		$displayedCriterium = new Criterium();
		$displayedCriterium.id = data[0].id;
		$displayedCriterium.name = data[0].name;
		$displayedCriterium.title = data[0].title;
		$displayedCriterium.html = data[1];
		$('#criteriumDialog').dialog('option', 'title', $displayedCriterium.title);
		$('#criteriumDialog').html($displayedCriterium.html);
		$('#criteriumDialog').dialog('open');
		blurFirst();
	}});
}

function markCriterium($id, $pouzite) {
	if ($pouzite == null)
		$pouzite = false;

	if ($pouzite && ($steps.length > 0)) {
		$('#steps').show();//css('visibility', '');
	}
	if (!$pouzite && ($steps.length == 0)) {
		$('#steps').hide();//css('visibility', 'hidden');
	}
	
	$('#criterium_link_' + $id).toggleClass('pas', $pouzite );
}

function clearList() {
	$('#terminy').empty();
}


function showList($args) {
	showLoader();
	loadList({args : $args, success: function(data) {
		hideLoader();
		$('#terminy').html(data);
//		$('#item0').focus();
	}});
}

function addStep($criteriumValue, $displayValue, $count, $link) {
	clearList();
	var $step = new Step();
	$step.criteriumValue = $criteriumValue;
	$steps.push($step);
	$step.number = $steps.length;
	$step.criteriumValue.displayValue = $displayValue;
	$step.count = $count;
	$step.link = $link;
	$html = '<tr id="step_stepNumber" class="highlight">'
		+ '<td class="first">stepNumber.</td>'
		+ '<td class="parametr">criteriumName</td>'
		+ '<td>criteriumValue</td>'
		+ '<td><strong>count</strong></td>'
		+ '<td class="tools">' + ( $ajax && false
				? '<a onclick="showList(\'krok=stepNumber\')" title="Zobrazit"><img src="' + $root + 'img/ico-show.gif" alt="Zobrazit" /></a>'
				: '<a id="show_step_stepNumber_link" title="Zobrazit"><img src="' + $root + 'img/ico-show.gif" alt="Zobrazit" /></a>'
			) + '</td>'
		+ '<td class="tools"><a onclick="deleteStep(stepNumber)" title="Smazat"><img src="' + $root + 'img/ico-delete.gif" alt="Smazat" /></a></td>'
		+ '</tr>';//$('#stepTemplate').html();
	$('#steps table').append(
				$html
			.replace('stepLink', $link)
			.replace(/stepNumber/g, $step.number)
			.replace('criteriumName', $criteriumValue.criterium.name)
			.replace('criteriumValue', $displayValue)
			.replace('count', $count)
			 );
	$('#count').html($count);
	$('#showResultsButton').attr('href', 'seznam.html?' + $link + '&krok=' + $step.number);
	
	
	setUrlsOnSteps($link, $step.number);
	
	markCriterium($criteriumValue.criterium.id, true);
}

function setUrlsOnSteps($link, $stepsCount) {
	if ($serializable) {
		$stepLinkPart = $link + '&krok=';
	} else {
		$stepLinkPart = 'krok=';
	}
	
	for ($stepNrActual=1;$stepNrActual <= $stepsCount; $stepNrActual++) {
		$('#show_step_' + $stepNrActual + "_link").attr('href', 'seznam.html?' + $stepLinkPart + $stepNrActual);
	}
}

function deleteStep($number) {
	if ($steps.length == 0) {
		alert('Nelze smazat krok - seznam kroků je prázdný');
		return;
	}
	for (var i = $steps.length; i >= $number; i--) {
		var $step = $steps.pop();
		removeStepFromList($step);
		if ($step.number == $number) {
			// send to server
			sendStepRemoved( {
				step : $step,
				success : function(data) {
					$('#showResultsButton').attr('href', 'seznam.html?' + data.filterUrl + '&krok=' + ($step.number - 1));
					setUrlsOnSteps(data.filterUrl, $step.number - 1);
				}
			});
		}
	}
	if ($steps.length > 0)
		$('#count').html($steps[$steps.length-1].count);
	

}

function removeStepFromList($step) {
	$('#step_' + $step.number).remove();
	markCriterium($step.criteriumValue.criterium.id, false);
	clearList();
}

function displayChildren($component, $parentId) {
	//alert('Display mista ' + $parentId);
	var $parent = $($component).parent();
	$($component).replaceWith('<a class="zeme-more-hide" onclick="hideChildren(this, ' + $parentId + ');" title="Skrýt podrobnosti"/>');
	loadChildren({parentId : $parentId, success: function(data) {
		$parent.append(data);
	}});

}

function hideChildren($component, $parentId) {
	$('#inserted' + $parentId).hide();
	$($component).replaceWith('<a class="zeme-more" onclick="showChildren(this, ' + $parentId + ');" title="Zobrazit podrobnosti"/>');
}

function showChildren($component, $parentId) {
	$('#inserted' + $parentId).show();
	$($component).replaceWith('<a class="zeme-more-hide" onclick="hideChildren(this, ' + $parentId + ');" title="Zobrazit podrobnosti"/>');
}

function Criterium () {
	var id;
	var name;
	var title;
	var html;
}

function CriteriumValue () {
	var criterium;
	var value;
}

function Step () {
	var number;
	var criteriumValue;
	var count;
	var link;
}

if ($root == null) 
	$root = '../';

var tb_pathToImage = $root + "img/loadingAnimation.gif" ;


function showLoader() {
	$("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
	$('#TB_load').show();//show loader
}

function hideLoader() {
	$("#TB_load").remove();
}

function setDefaultDate(date) {
	$("#terminDo").datepicker('option', 'defaultDate', date);
}

function getDefaultDate() {
	return $("#terminOd").val(); 
}

function displayChildrenQuick($selectElementId, $parentId) {
	//alert('$parentId=>' + $parentId + '<')
	if ($parentId == '') {
		$('#'+$selectElementId).html('<option value="">nerozhoduje</option>');
		return;
	}
	loadChildrenQuick({parentId : $parentId, success: function(data) {
		$('#'+$selectElementId).html('<option value="">nerozhoduje</option>' + data);
	}});
}

function blurFirst() { 
	if($('#criteriumDialog .zeme-check')) {
		$('#criteriumDialog .zeme-check').first().blur();
	}
	if($('#tip')) {
		$('#tip').blur();
	}
}


$(document).ready(function(){
	imgLoader = new Image();// preload image
	imgLoader.src = tb_pathToImage	
});


