function Call(c, m, p, cb, errcb) {            
    jQuery.ajax({
        type: "POST",
        url: "ajax.php",
        dataType: "json",
        data: ({c: c, m: m, p: JSON.stringify(p, function (key, value) { return value; })}),
        success: function(json) {
            cb(json);
        },
        error: function(msg) {
            if (errcb != undefined && errcb != null)
            	errcb(msg);
        }
    });
}
function SwitchToPicture(id) {
	jQuery(".Gallery .MainPicture").hide();
	jQuery(".Gallery .MainPicture." + id).show();
}
jQuery(document).ready(function(){
	jQuery(".lightbox").lightbox();
});

var Cart =
{
	Add: function(id) {		
		var measure = null;
		var selMeasure = jQuery(".Food." + id + " .measure_option:selected");
		if (selMeasure.length > 0) {
			measure = { id: selMeasure.val() };
		}
		var additions = Array();
		var selAdditions = jQuery(".Food." + id + " .addition_option:selected");
		for(var i=0; i< selAdditions.length; i++) {
			additions[additions.length] = {id: selAdditions[i].value };
		}
    	var info = {
            food: id,
            measure: measure,
            additions: additions,
            amount: jQuery(".Food." + id + " input[name='amount']").val()
        }
    	var exp = new RegExp(/^\d*$/);
		if (exp.test(info.amount) && info.amount > 0) 
		{
			jQuery(".Food." + id + " input[name='amount']").removeClass('error');
		}
		else 
		{
			alert(Messages[CurrentLanguage].IncorrectQuantity);
			jQuery(".Food." + id + " input[name='amount']").addClass('error');
			return;
		}
        Call("CartApi", "Add", info, function(result) {
        	switch(result.status)
        	{
        		case 0:
        			// Clear selections
        			Cart.Refresh();
        			break;
        		default:
        			alert(Messages[CurrentLanguage].UnknownError);
        			break;
        	}
    	});
	},
	Remove: function(id) {
		if (confirm(Messages[CurrentLanguage].SureToRemove))
		{
	        Call("CartApi", "Remove", id, function(result) {
	        	switch(result.status)
	        	{
	        		case 0:
	        			Cart.Refresh();
	        			break;
	        		default:
	        			alert(Messages[CurrentLanguage].UnknownError);
	        			break;
	        	}
	    	});
		}
	},
	Update: function() {
		var amountInputs = jQuery(".MiniCart input.amount");
		var amounts = Array();
		var exp = new RegExp(/^\d*$/);
		for(var i=0;i<amountInputs.length; i++)
		{
			var value = jQuery(amountInputs[i]).val();
			if (exp.test(value) && value > 0) 
			{
				amounts[i] = value;
				jQuery(amountInputs[i]).removeClass('error');
			}
			else 
			{
				alert(Messages[CurrentLanguage].IncorrectQuantity);
				jQuery(amountInputs[i]).addClass('error');
				return;
			}
		}
        Call("CartApi", "Update", amounts, function(result) {
        	switch(result.status)
        	{
        		case 0:
        			Cart.Refresh();
        			break;
        		default:
        			alert(Messages[CurrentLanguage].UnknownError);
        			break;
        	}
    	});
	},
	Refresh: function() {
		document.location.reload();
	},
	AmountChanged: function() {
		jQuery(".MiniCart .ChangeButton").addClass("highlight");
	}
}
var Order = {
	Delete: function(id) {
	if (confirm(Messages[CurrentLanguage].SureToRemove))
	{
        Call("OrderApi", "Delete", id, function(result) {
        	switch(result.status)
        	{
        		case 0:
        			document.location.reload();
        			break;
        		default:
        			alert(Messages[CurrentLanguage].UnknownError);
        			break;
        	}
    	});
	}
	}
}
function CalculateFoodPrice(id)
{
	var price = Number(jQuery(".Food." + id + " .food_price").val())
	var selMeasure = jQuery(".Food." + id + " .measure_option:selected");
	if (selMeasure.length > 0) {
		var m_price = Number(selMeasure.attr('price'));
		if (m_price > price) {
			price = m_price;
		}
	}
	var selAdditions = jQuery(".Food." + id + " .addition_option:selected");
	for(var i=0; i<selAdditions.length; i++) {
		var a_price = Number(jQuery(selAdditions[i]).attr('price'));
		if (a_price > price) {
			price = a_price;
		}
	}
	var amount = Number(jQuery(".Food." + id + " input[name='amount']").val());
	if (isNaN(price*amount)) {
		jQuery(".Food." + id + " .Price .number").html("-");
	} else {
		jQuery(".Food." + id + " .Price .number").html((price*amount)/100);
	}
}
function UpdateDeliveryDateVisibility(select)
{
	if (select.value == 1) {
		jQuery(".DeliveryDateFrame .Title").show();
		jQuery(".DeliveryDateFrame .TimePicker").show();
	} else {
		jQuery(".DeliveryDateFrame .Title").hide();
		jQuery(".DeliveryDateFrame .TimePicker").hide();
		jQuery(".DeliveryDateFrame .TimePicker").val("0");
	}
}

jQuery(document).ready(function() {
	
	if (jQuery("#registrationForm").length > 0)
	{
		$("#registrationForm").validate({
			rules: {
				password: "required",
				password2: { equalTo: "#password" },
				username: { minlength: 4 }
			}
		});	
	}
	if (jQuery("#userForm").length > 0)
	{
		$("#userForm").validate({
			rules: {
				password2: { equalTo: "#password" }
			}
		});	
	}
	if (jQuery(".CartForm").length > 0)
	{
		jQuery(".CartForm").validate();
	}		
});

var CurrentLanguage = 'LT';	// Default
var Messages = {};
Messages['LT'] = {
	SureToRemove: 'Ar tikrai norite šalinti?',
	UnknownError: 'Įvyko nenumatyta klaida. Atsiprašome už nepatogumus.',
	IncorrectQuantity: 'Nurodytas neteisingas kiekis',
	ValidatorEqualTo: 'Prašome įvesti tą pačią reikšmę',
	ValidatorRequired: 'Šis laukas privalomas',
	ValidatorEmail: 'Prašome nurodyti teisingą el. pašto adresą',
	ValidatorNumber: 'Prašome įvesti skaičių',
	ValidatorDigits: 'Prašome įvesti tik skaitmenis',
	ValidatorMinLength: 'Prašome nurodyti bent {0} simbolius.'
};
Messages['EN'] = {
	SureToRemove: 'Are you sure you want to remove?',
	UnknownError: 'Unknown error occured. Sorry for inconvenience',
	IncorrectQuantity: 'Incorrect quantity specified',
	ValidatorEqualTo: 'Please enter same value',
	ValidatorRequired: 'This field is required',
	ValidatorEmail: 'Please enter correct e-mail address',
	ValidatorNumber: 'Please enter only number',
	ValidatorDigits: 'Please enter only digits',
	ValidatorMinLength: 'Please enter at least {0} symbols.'
};
