/*includeJavaScript ('jquery-1.4.2.min.js');

function includeJavaScript($jsFile)
{
  document.write('<script type="text/javascript" src="' + $relativePathToContext + $jsFile + '"></script>'); 
}
*/


var $ajax;

if ($root == null) 
	$root = '../';

$(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=') {
						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');
	}});
}

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 + 'css/smoothness/images/ico-show.gif" alt="Zobrazit" /></a>'
				: '<a href="seznam.html?krok=stepNumber" title="Zobrazit"><img src="' + $root + 'css/smoothness/images/ico-show.gif" alt="Zobrazit" /></a>'
			) + '</td>'
		+ '<td class="tools"><a onclick="deleteStep(stepNumber)" title="Smazat"><img src="' + $root + 'css/smoothness/images/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);
	markCriterium($criteriumValue.criterium.id, true);
}

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);
		}
	}
	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);
	}});
}


$(document).ready(function(){
	imgLoader = new Image();// preload image
	imgLoader.src = tb_pathToImage	
});

