﻿/// *****************************************************************
/// VALIDATIONS
/// *****************************************************************
function OnLawAgreementClientValidate(validator, args)
{
	args.IsValid = $(".law-agreement-input").attr("checked");
}

function OnDropDownListClientValidate(validator, args)
{
	args.IsValid = $("#" + validator.controltovalidate).attr("selectedIndex") > 0;
}

/// *****************************************************************
/// CUSTOMER LOGIN
/// *****************************************************************
var CustomerLoginRequiredInputMessage = null;

function CustomerLoginInit(msg)
{
	$(document).ready
	(
		function()
		{
			CustomerLoginRequiredInputMessage = msg;
			
			$(".clogin-submit").click(CustomerLoginOnSubmitClick);
		}
	);
}

function CustomerLoginOnSubmitClick(e)
{
	var unameInput = $(".clogin-username"), pwdInput = $(".clogin-password");
	
	if (jQuery.trim(unameInput.val()).length == 0
		|| jQuery.trim(pwdInput.val()).length == 0)
	{
		e.preventDefault();
		window.alert(CustomerLoginRequiredInputMessage);
	}
}

/// *****************************************************************
/// FOOD AMOUNT ADJUSTMENT
/// *****************************************************************
var FoodAmountAdjustmentTotalPriceMinValue = 0;

function FoodAmountAdjustmentInit(minValue)
{
	FoodAmountAdjustmentTotalPriceMinValue = minValue;
	
	$(document).ready
	(
		function()
		{
			$(".food-amount-input").bind("change", FoodAmountAdjustmentRefreshTotalPrice);
			
			$(".food-amount-button-plus")
				.each
				(
					function(itemIndex, item)
					{
						$(this)
							.click
							(
								function(e)
								{
									FoodAmountAdjustmentIncreaseAmount(itemIndex);
									FoodAmountAdjustmentRefreshTotalPrice();
									e.preventDefault();
									item.blur();
								}
							);
					}
				);
			
			$(".food-amount-button-minus")
				.each
				(
					function(itemIndex, item)
					{
						$(this)
							.click
							(
								function(e)
								{
									FoodAmountAdjustmentDecreaseAmount(itemIndex);
									FoodAmountAdjustmentRefreshTotalPrice();
									e.preventDefault();
									item.blur();
								}
							);
					}
				);
		}
	);
}

function FoodAmountAdjustmentIncreaseAmount(index)
{
	FoodAmountAdjustmentSetAmount(index, 1);
}

function FoodAmountAdjustmentDecreaseAmount(index)
{
	FoodAmountAdjustmentSetAmount(index, -1);
}

function FoodAmountAdjustmentRefreshTotalPrice()
{
	var totalPriceElement = $(".food-total-price");
	
	if (FoodAmountAdjustmentIsValid())
	{
		totalPriceElement.text(FoodAmountAdjustmentGetTotalPrice());
	}
	else
	{
		totalPriceElement.text("-");
	}
}

function FoodAmountAdjustmentSetAmount(index, amountIncrement)
{
	var input = FoodAmountAdjustmentGetInput(index);
	var currentValueAsString = input.val();
	var currentValue = FoodAmountAdjustmentParseInt(currentValueAsString);
	
	if (currentValue != null)
	{
		var valueToSet = currentValue + amountIncrement;
		
		if (valueToSet >= 0)
		{
			input.val(currentValue + amountIncrement);
		}
		else input.val(0);
	}
	else
	{
		input.val(0);
	}
}

function FoodAmountAdjustmentGetInput(i)
{
	return $(".food-amount-input:eq("+ String(i) +")");
}

function FoodAmountAdjustmentParseInt(amountAsString)
{
	try
	{
		var tempIntValue = parseInt(amountAsString, 10);
		return tempIntValue;
	}
	catch(e)
	{
		return null;
	}
}

function FoodAmountAdjustmentIsValid()
{
	var totalAmount = 0;
	
	$(".food-amount-input")
		.each
		(
			function()
			{
				var amountAsString = $(this).val();
				var amount = FoodAmountAdjustmentParseInt(amountAsString);
				
				if (amount != null && amount >= 0) totalAmount += amount;
				else return false;
			}
		);
	
	return true;
}

function FoodAmountAdjustmentTotalPriceIsValid()
{
	// pokud je vstup neplatny, pak nema vyznam kontrolovat celkovou sumu objednavky
	if (FoodAmountAdjustmentIsValid())
	{
		return FoodAmountAdjustmentGetTotalPrice() >= FoodAmountAdjustmentTotalPriceMinValue;
	}
	else
	{
		return false;
	}
}

function FoodAmountAdjustmentTotalPriceValidate(validator, args)
{
	args.IsValid = FoodAmountAdjustmentTotalPriceIsValid();
}

function FoodAmountAdjustmentGetTotalPrice()
{
	var totalPrice = 0;
	
	$(".food-amount-input")
		.each
		(
			function(itemIndex, item)
			{
				var amount = FoodAmountAdjustmentParseInt($(this).val());
				var unitPrice = FoodAmountAdjustmentParseInt($(".food-unit-price:eq("+ String(itemIndex) +")").val());
				
				totalPrice += (amount * unitPrice);
			}
		);
	
	return totalPrice;
}

