

// Kod, ktory sa spusti po spracovani celej stranky: uprava vzhladu, nastavenie handlerov, atd.
Event.observe(window, "load", function() {
    
    // Otvori zalozku s bratislavskymi okresmi a mestskymi castami v spodnej casti kazdej stranky
    bottomGeo_openRegion("ba");
    
    $("overlay").style.width  = Position.getWindowSize()["width"]  + "px";
    $("overlay").style.height = Position.getWindowSize()["height"] + "px";

    //$("cart").style.width  = Position.getWindowSize()["width"]  + "px";

    //rTableMouseOver();
    rFixFlash();
    rFixFormAction();
    rFixFirebug();
    rFocusOnFirstFormInput();
    
    if ((typeof noAutoFocus == "undefined") || (!noAutoFocus)) {
        var allFormElements = $$("div.cms-form div.input"); 
        if (allFormElements.length > 0) {
            var firstFormElement = allFormElements[0].select("input, selectbox")[0];
            if ((firstFormElement) && (firstFormElement.type != "hidden")) {
                firstFormElement.focus();
            }
        }
    }

    
    if ((typeof soundManager != "undefined") && (soundManager) && (soundManager.onready)) {
    	soundManager.pizzaBell = {};
    	soundManager.pizzaBell.selectedSound = 1;
    	
        soundManager.onready(function() {
            if (soundManager.supported()) {
            	soundManager.createSound({
                    id: "sound1",
                    url: soundManager.url.replace(/\/[^\/]+\.swf/, "") + "/../sounds/bell-double.mp3"
                });
            	soundManager.load("sound1");
            	soundManager.createSound({
            		id: "sound2",
            		url: soundManager.url.replace(/\/[^\/]+\.swf/, "") + "/../sounds/busy-alarm.mp3"
            	});
            	soundManager.load("sound2");
            	soundManager.createSound({
            		id: "sound3",
            		url: soundManager.url.replace(/\/[^\/]+\.swf/, "") + "/../sounds/alarm.mp3"
            	});
            	soundManager.load("sound3");
            	
            	soundManager.pizzaBell.play = function() {
            		if (soundManager.pizzaBell.selectedSound) {
            			soundManager.play("sound" + soundManager.pizzaBell.selectedSound);
            		}
            	};
            	soundManager.pizzaBell.playDefault = function() {
            		soundManager.play("sound1");
            	};
            }
        });
    } else {
    	soundManager = {};
    	soundManager.pizzaBell = {};
    	soundManager.pizzaBell.play = function () {};
    	soundManager.pizzaBell.playDefault = function () {};
    }
    
    var selectedSound = parseInt((new RCookies).getCookie("selectedSound"));
    if ((selectedSound == null) || (isNaN(selectedSound))) {
    	selectedSound = 1;
    }
    operatorListOrders_selectSound(selectedSound);
});


Position.getWindowSize = function(w) {
    var array = [];

    w = w ? w : window;
    array.width  = array[0] = w.innerWidth  || (w.document.documentElement.clientWidth  || w.document.body.clientWidth);
    array.height = array[1] = w.innerHeight || (w.document.documentElement.clientHeight || w.document.body.clientHeight);

    return array;
};


function formatPrice(number) {
    return number.toFixed(2).replace(".", ",") + " &euro;";
}


function pulsateElement(element) {
    Effect.Pulsate(element, { duration: 1.1, pulses: 3, from: 0.2 });
}


/**
 * Otvori zalozku s okresmi v spodnej casti stranky
 */
function bottomGeo_openRegion(region) {
    if (!$("bottom-geo-left-region-" + region)) return;

    $$("div.bottom-geo-left-region").each(function(e) {
        e.removeClassName("bottom-geo-left-region-selected");
    });
    $$("div.bottom-geo-right-region").each(function(e) {
        e.hide();
    });

    $("bottom-geo-left-region-" + region).addClassName("bottom-geo-left-region-selected");
    $("bottom-geo-right-region-" + region).show();
}


/**
 * Skontroluje vstup (nazov mesta/miesta) na uvodnej stranke
 */
function enterPlace_checkInput() {
    if (($("place").value == "") || ($("place").value == "Sem napíšte vaše mesto alebo obec")) {
        alert("Zadajte mesto, kde sa nachádzate!");
        $("place").value = "";
        $("place").focus();
        return false;
    } else {
        return true;
    }
}


function enterPlace_blinkInput() {
    setTimeout(function() { $("place").focus(); }, 2500);
    pulsateElement("placeContainer");
    pulsateElement("placeButton");
}


function listRestaurants_blinkRestaurants() {
    if ($$("div.list-restaurants-restaurant-medium").length > 0) {
        $$("div.list-restaurants-restaurant-medium").each(function(e) {
            pulsateElement(e);
        });
    } else {
        $$("div.list-restaurants-restaurant").each(function(e) {
            pulsateElement(e);
        });
    }
}


var productToAdd = { };
var productToRemove = null;


function showMenu_openExtrasPopup(productId, priceId) {
    
    var product = cart.allProducts[productId];
    
    $("extras-popup-name").innerHTML = product.name;
    
    $("extras-popup-description").options.length = 0;
    
    var pricesCount = 0;
    
    for (var i in product.prices) {
        pricesCount += 1;
        
        var price = product.prices[i];
        
        var option = document.createElement("option");
        option.appendChild(document.createTextNode(price.description));
        option.setAttribute("value", price.price_id);
        
        if ((priceId) && (price.price_id == priceId)) {
            option.setAttribute("selected", "selected");
        }
        
        $("extras-popup-description").appendChild(option);
    }

    $("extras-popup-amount").selectedIndex = 0;
    
    if (pricesCount > 1) $("extras-popup-description-holder").show();
    else                 $("extras-popup-description-holder").hide();

    productToAdd.name         = product.name;
    productToAdd.amount       = 0;
    
    showMenu_changePriceIdInPopup();

    $("overlay").appear({
        duration: 0.4,
        to: 0.4
    });
    $("extras-popup").appear({
        duration: 0.4
    });
}


function showMenu_closeExtrasPopup() {
    $("extras-popup").fade({ duration: 0.4 });
    $("overlay").fade({ duration: 0.4 });
}


function showMenu_changePriceIdInPopup() {
    productToAdd.priceId = $("extras-popup-description").options[$("extras-popup-description").selectedIndex].value;
    productToAdd.price = parseFloat(cart.allProductsByPriceId[productToAdd.priceId].price.price_discounted);
    productToAdd.description = cart.allProductsByPriceId[productToAdd.priceId].price.description;
    
    $("extras-popup-price").innerHTML = formatPrice(productToAdd.price);

    showMenu_changeAmountInPopup();
}


function showMenu_changeAmountInPopup() {
    productToAdd.amount = parseInt($("extras-popup-amount").options[$("extras-popup-amount").selectedIndex].value);

    $("extras-popup-sum").innerHTML = formatPrice(productToAdd.price * productToAdd.amount);
}


function showMenu_addToCart() {
    if (cart.orderedProducts[productToAdd.priceId]) {
        cart.orderedProducts[productToAdd.priceId] += productToAdd.amount;

    } else {
        cart.orderedProducts[productToAdd.priceId] = productToAdd.amount;

        var template = $("cart-template").innerHTML.replace(/TEMPLATE/g, productToAdd.priceId);
        $("cart-content").insert(template);

        $("cart-item-name-" + productToAdd.priceId).innerHTML = productToAdd.name + " " +  productToAdd.description;
        $("cart-item-price-" + productToAdd.priceId).innerHTML = formatPrice(productToAdd.price);

        $("cart-item-" + productToAdd.priceId).blindDown({ duration: 0.4 });
    }

    showMenu_recalculateCart();
    showMenu_ajaxSaveCart();
    showMenu_closeExtrasPopup();
}


function showMenu_removeFromCart(priceId) {
    delete(cart.orderedProducts[priceId]);

    showMenu_recalculateCart();
    showMenu_ajaxSaveCart();

    productToRemove = priceId;
    $("cart-item-" + productToRemove).blindUp({
        duration: 0.4,
        afterFinish: function() {
            $("cart-item-" + productToRemove).remove();
        }
    });
}


function showMenu_emptyCart() {
    if (!confirm("Naozaj chcete zrušiť celú objednávku?")) return;

    cart.orderedProducts = {};
    $("cart-content").innerHTML = "";

    showMenu_recalculateCart();
    showMenu_ajaxSaveCart();
}


function showMenu_changeCartAmount(priceId) {
    if ($("cart-item-amount-" + priceId).selectedIndex == 0) {
        showMenu_removeFromCart(priceId);
    } else {
        cart.orderedProducts[priceId] = $("cart-item-amount-" + priceId).selectedIndex;
    }

    showMenu_recalculateCart();
    showMenu_ajaxSaveCart();
}


function showMenu_recalculateCart() {
    cart.sum = 0;
    cart.amount = 0;
    
    var originalPrice = 0;

    for (var priceId in cart.orderedProducts) {
        cart.orderedProducts[priceId] = Math.min(cart.orderedProducts[priceId], showMenu_maxAmount);
        originalPrice += cart.orderedProducts[priceId] * cart.allProductsByPriceId[priceId].price.price;
        
        var sum = cart.orderedProducts[priceId] * cart.allProductsByPriceId[priceId].price.price_discounted;
        cart.sum += sum;

        $("cart-item-sum-" + priceId).innerHTML = formatPrice(sum);

        $("cart-item-amount-" + priceId).selectedIndex = cart.orderedProducts[priceId];

        cart.amount += cart.orderedProducts[priceId];
    }

    if ((cart.amount > 0) && ($("cart").style.display == "none")) {
        $("cart").blindDown({ duration: 0.8 });
    } else if ((cart.amount == 0) && ($("cart").style.display != "none")) {
        $("cart").blindUp({ duration: 0.8 });
    }

    cart.totalPrice = cart.sum + cart.deliveryPrice;
    originalPrice += cart.originalDeliveryPrice;

    // Nezobrazujeme nove sumy hned, lebo mame AJAX
//    $("cart-sum").innerHTML = formatPrice(cart.sum);
//    $("cart-total-price").innerHTML = formatPrice(cart.totalPrice);
//    $("cart-total-saved").innerHTML = formatPrice(originalPrice - cart.totalPrice);
}


function showMenu_sendForm() {
	window.onunload=function() { };
	
	if (cart.orderDisabled) {
		alert(cart.orderDisabled);
		return false;
	} else {
		return true;
	}
}


function showMenu_ajaxSaveCart() {
    $$("div.cart div.number").each(function (e) { e.hide() });
    $$("div.cart div.ajax-loader").each(function (e) { e.show() });
    
    var orderedProducts = "";
    for (var priceId in cart.orderedProducts) {
        orderedProducts += priceId + ":" + cart.orderedProducts[priceId] + ",";
    }

    showMenu_ajaxRequestTicket++;

    new Ajax.Request(
        showMenu_ajaxSaveCart_url,
        {
            method: "post",
            parameters: {
                orderedProducts:     orderedProducts,
                ajaxRequestTicket: showMenu_ajaxRequestTicket
            },
            onSuccess: function (transport) {
                if (transport.responseJSON) {
                    $("cart-sum").innerHTML = formatPrice(transport.responseJSON.sum);
                    $("cart-delivery-price").innerHTML = formatPrice(transport.responseJSON.deliveryPrice);
                    $("cart-total-price").innerHTML = formatPrice(transport.responseJSON.totalPrice);
                    
//                    if (transport.responseJSON.totalSaved) {
//                    	$("cart-total-saved-block").show();
//                    	$("cart-total-saved").innerHTML = formatPrice(transport.responseJSON.totalSaved);
//                    	$("cart-total-price-label").innerHTML = "Cena v akcii:";
//                    } else {
//                    	$("cart-total-saved-block").hide();
//                    	$("cart-total-price-label").innerHTML = "Cena s donáškou:";
//                    }
                    if (transport.responseJSON.totalSaved) {
                    	$("cart-original-total-price-block").show();
                    	$("cart-original-total-price").innerHTML = formatPrice(transport.responseJSON.originalTotalPrice);
                    } else {
                    	$("cart-original-total-price-block").hide();
                    }
                    
                    if (transport.responseJSON.salesText) {
                    	$("cart-sales-text").show();
                    	$("cart-sales-text").innerHTML = transport.responseJSON.salesText;
                    } else {
                    	$("cart-sales-text").hide();
                    }
                    
                    if (transport.responseJSON.hint) {
                    	$("cart-hint").show();
                    	$("cart-hint-text").innerHTML = transport.responseJSON.hint;
                    } else {
                    	$("cart-hint").hide();
                    }
                    
                    cart.orderDisabled = transport.responseJSON.orderDisabled;
                    
                    $$("div.cart div.ajax-loader").each(function (e) { e.hide(); });
                    $$("div.cart div.number").each(function (e) { e.show(); });
                }
            }
        }
    );
}


function showAddressForm_changeCity() {
    $("city-id-box").removeClassName("input-error");

    var city = showAddressForm_otherCities[$("city_id").options[$("city_id").selectedIndex].value];
    
//    $("delivery-price").innerHTML = formatPrice(city.delivery_price_discounted);
//    $("total-price").innerHTML = formatPrice(showAddressForm_sum + city.delivery_price_discounted);
//    $("total-saved").innerHTML = formatPrice(showAddressForm_originalSum - showAddressForm_sum + city.delivery_price - city.delivery_price_discounted);
    $("delivery-city").innerHTML = city.name + (city.priority == 0 ? ", okres " + city.district_name : "");
    $("delivery-price").innerHTML = "...";
    $("total-price").innerHTML = "...";
//    $("total-saved").innerHTML = "...";
    $("sales-text").innerHTML = "...";
    
    (new RCookies).setCookie("selectedCity", city.city_id, 30, "/");
    
    new Ajax.Request(
        showAddressForm_ajaxChangeCity_url,
        {
            method: "post",
            parameters: {
                cityId: city.city_id
            },
            onSuccess: function (transport) {
                if (transport.responseJSON) {
                    $("delivery-price").innerHTML = formatPrice(transport.responseJSON.deliveryPrice);
                    $("total-price").innerHTML = formatPrice(transport.responseJSON.totalPrice);
                    
//                    if (transport.responseJSON.totalSaved) {
//                    	$("total-saved-block").show();
//                    	$("total-saved").innerHTML = formatPrice(transport.responseJSON.totalSaved);
//                    } else {
//                    	$("total-saved-block").hide();
//                    }
                    
                    if (transport.responseJSON.totalSaved) {
                    	$("original-total-price-block").show();
                    	$("original-total-price").innerHTML = formatPrice(transport.responseJSON.originalTotalPrice);
                    } else {
                    	$("original-total-price-block").hide();
                    }
                    
                    if (transport.responseJSON.salesText) {
                    	$("sales-text-block").show();
                    	$("sales-text").innerHTML = transport.responseJSON.salesText;
                    } else {
                    	$("sales-text-block").hide();
                    }
                    
//                    $$("div.cart div.ajax-loader").each(function (e) { e.hide(); });
//                    $$("div.cart div.number").each(function (e) { e.show(); });
                }
            }
        }
    );
    
    $$("div.top-step2 a")[0].href = city.link;
    $$("div.top-step3 a")[0].href = city.link_restaurant;
    $("address-form-order-back").href = city.link_restaurant;
}



/*
var showConfirmationPage_sendToFbFeed_fbUserName = null;
var showConfirmationPage_sendToFbFeed_fbGender   = "male";
var showConfirmationPage_sendToFbFeed_fbUid      = null;


function showConfirmationPage_sendToFbFeed() {
    if (!showConfirmationPage_sendToFbFeed_fbUserName) {
        FB.Connect.requireSession();
    }

    FB.Facebook.get_sessionState().waitUntilReady(function() {
        FB.Connect.ifUserConnected(
            function(string) {

                showConfirmationPage_sendToFbFeed_fbUid = FB.Facebook.apiClient.get_session() ? FB.Facebook.apiClient.get_session().uid : null;

//                if (fbUid) {
                FB.Facebook.apiClient.fql_query("SELECT sex FROM user WHERE uid = '" + showConfirmationPage_sendToFbFeed_fbUid + "'", function(result, ex) {
                    if (result[0].sex == "female") showConfirmationPage_sendToFbFeed_fbGender = "female";

                    FB.Connect.showFeedDialog(
                       "187098720609",
                       {
                           shortText: "si " + (showConfirmationPage_sendToFbFeed_fbGender == "female" ? "objednala " : "objednal ") + showConfirmationPage_sendToFbFeed_fbData.amount  + "x pizzu so zľavou " + showConfirmationPage_sendToFbFeed_fbData.discount + "% a ušetril " + formatPrice(showConfirmationPage_sendToFbFeed_fbData.saved) + "!",
                           longText:  "Objednajte si aj vy pizzu s " + showConfirmationPage_sendToFbFeed_fbData.discount + "% zľavou na <a href=\"http://www.napizzu.sk/\" target=\"_blank\">www.napizzu.sk</a>."
                       },
                       null, null, null, FB.RequireConnect.promptConnect, showConfirmationPage_fbCompleted
                   );
                });
//                } else {
//                    FB.Connect.showFeedDialog(89171690993, template_data, null, null, null, FB.RequireConnect.promptConnect, facebook_completed);
//                }
            },

            function(string) {
                //alert("zle prihlasenie na facebook!");
            }
        );
    });
}


function showConfirmationPage_fbCompleted() {
    
}
*/



function showConfirmationPage_checkOrderStatus(orderCode) {
    
    new Ajax.Request(
        showConfirmationPage_checkOrderStatus_url,
        {
            method: "post",
            parameters: {
                orderCode: orderCode
            },
            onSuccess: function (transport) {
                if ((transport.responseJSON) && (transport.responseJSON.statusCode)) {
                    if (transport.responseJSON.statusCode == "NEW") {
                    } else if (transport.responseJSON.statusCode == "CONFIRMED") {
                        clearInterval(showConfirmationPage_checkOrderStatus_timer);
                        $("info-new").fade({duration: 0.5, afterFinish: function() { $("info-confirmed").appear({duration: 0.5}); }});
                        $("info-confirmed-text").innerHTML = transport.responseJSON.statusText;
                        soundManager.pizzaBell.playDefault();
                    } else if ((transport.responseJSON.statusCode == "CANCELLED") || (transport.responseJSON.statusCode == "EXPIRED")) {
                    	if (transport.responseJSON.statusCode == "CANCELLED") {
                    		$("info-retry").hide();
                    	}
                        clearInterval(showConfirmationPage_checkOrderStatus_timer);
                        $("info-new").fade({duration: 0.5, afterFinish: function() { $("info-cancelled").appear({duration: 0.5}); }});
                        $("info-facebook").fade({duration: 0.5});
                        $("info-cancelled-text").innerHTML = transport.responseJSON.statusText;
                        soundManager.pizzaBell.playDefault();
                    }
                }
            }
        }
    );
}



/*** ADMINISTRATION *******************************************************************************/


/*** changeDeliveryPrices.tpl *********************************************************************/


function changeDeliveryPrices_openRegion(region) {
    $$("div.delivery-prices-district").each(function(e) { e.hide(); });
    $$("div.delivery-prices-district-title").each(function(e) { e.removeClassName("delivery-prices-district-title-selected"); });

    $$("div.delivery-prices-region").each(function(e) { e.hide(); });
    $("delivery-prices-region-" + region).show();

    $$("div.pizzeria-side-menu-item").each(function(e) { e.removeClassName("pizzeria-side-menu-item-selected"); });
    $("delivery-prices-left-region-" + region).addClassName("pizzeria-side-menu-item-selected");
}


function changeDeliveryPrices_openDistrict(district) {
    if (!$("delivery-prices-district-" + district)) return;
    
    if ($("delivery-prices-district-" + district).style.display == "none") {
        $$("div.delivery-prices-district").each(function(e) { e.hide(); });
        $("delivery-prices-district-" + district).show();

        $$("div.delivery-prices-district-title").each(function(e) { e.removeClassName("delivery-prices-district-title-selected"); });
        $("delivery-prices-district-title-" + district).addClassName("delivery-prices-district-title-selected");
    } else {
        $("delivery-prices-district-" + district).hide();
    }
}


function changeDeliveryPrice_changeDetails() {
    $("delivery-prices-left-regions").hide();
    $("pizzeria-side-menu-submit").show();
}


function changeDeliveryPrices_selectCity(city) {
    if ($("delivery-prices-city-checkbox-" + city).checked) {
        $("delivery-prices-city-" + city).addClassName("delivery-prices-city-selected");
        $("delivery-prices-city-price-block-" + city).show();
        $("delivery-prices-city-price-" + city).select();
    } else {
        $("delivery-prices-city-" + city).removeClassName("delivery-prices-city-selected");
        $("delivery-prices-city-price-block-" + city).hide();
    }
    $("delivery-prices-left-regions").hide();
    $("pizzeria-side-menu-submit").show();
}


function changeDeliveryPrices_checkCity(city) {
    if (!$("delivery-prices-city-checkbox-" + city)) return;
    
    $("delivery-prices-city-checkbox-" + city).checked = true;
    changeDeliveryPrices_selectCity(city);
}



/*** changeMenu.tpl *******************************************************************************/


function changeMenu_openCategory(id) {
    $$("div.menu-category").each(function(e) { e.hide(); });
    $$("div.delivery-prices-district-title").each(function(e) { e.removeClassName("delivery-prices-district-title-selected"); });

    $$("div.menu-category").each(function(e) { e.hide(); });
    $("menu-category-" + id).show();

    $$("div.pizzeria-side-menu-item").each(function(e) { e.removeClassName("pizzeria-side-menu-item-selected"); });
    $("pizzeria-side-menu-item-" + id).addClassName("pizzeria-side-menu-item-selected");
    
    $("menu-specific-form").hide();
}


function changeMenu_openTab(id, tabToOpen) {
    var tabToClose = tabToOpen == "specific" ? "general" : "specific";
    
    $("menu-category-" + id + "-" + tabToClose).hide();
    $("menu-category-" + id + "-" + tabToOpen).show();
    
    $("menu-category-tab-" + id + "-" + tabToClose).removeClassName("tab-selected");
    $("menu-category-tab-" + id + "-" + tabToOpen).addClassName("tab-selected");
}


function changeMenu_changeDetails() {
    $("pizzeria-side-menu-submit").show();
    $("pizzeria-bottom-submit").show();
    $("menu-specific-form").hide();
    $$("a.menu-specific-form-link").each(function (e) { e.hide(); });
    $$("p.menu-specific-form-link").each(function (e) { e.show(); });
}


function changeMenu_selectProduct(id, init) {
    if ($("menu-product-checkbox-" + id).checked) {
        $("menu-product-" + id).addClassName("menu-product-selected");
        $("menu-product-price-block-" + id).show();
        if ($("menu-product-description-" + id + "-0")) {
            $("menu-product-description-" + id + "-0").select();
        } else {
            $("menu-product-price-" + id + "-0").select();
        }
    } else {
        $("menu-product-" + id).removeClassName("menu-product-selected");
        $("menu-product-price-block-" + id).hide();
    }
    if (!init) {
        changeMenu_changeDetails();
    }
}


function changeMenu_checkProduct(id) {
    $("menu-product-checkbox-" + id).checked = true;
    changeMenu_selectProduct(id, true);
}


function changeMenu_showSpecificProductForm(categoryId) {
    $$("[name='category_id']")[0].value = categoryId;
    $("Products_Product").action = $("Products_Product").action.replace(/\/categoryId:[0-9]+\//, "/categoryId:" + categoryId + "/");
    $("menu-specific-form").toggle();
    $$("div.menu-general-add-own, div.menu-specific-add-own").each(function(e) { e.hide(); });
}



/*** adminRegionTree.tpl **************************************************************************/


function adminRegionTree_expandDistrict(districtId) {
    if ($("admin-region-tree-cities-" + districtId).style.display != "none") {
        $("admin-region-tree-cities-" + districtId).hide();
    } else {
        $$("ul.admin-region-tree ul").each(function(e) { e.hide(); });
        $("admin-region-tree-cities-" + districtId).show();
    }
}


function adminRegionTree_adminAjaxChangeCity(cityId, data) {
    data.cityId = cityId;

    new Ajax.Request(
        adminRegionTree_adminAjaxChangeCity_url,
        {
            method: "post",
            parameters: data
        }
    );
}


function adminRegionTree_adminChangeCityName(cityId) {
    var value = prompt("Nový názov pre " + cities[cityId].name + ":", cities[cityId].name);

    if (value !== null) {
        cities[cityId].name = value;
        $("admin-region-tree-city-name-" + cityId).innerHTML = value;
        adminRegionTree_adminAjaxChangeCity(cityId, { name: value });
    }
}


function adminRegionTree_adminChangeCityNameInLocative(cityId) {
    var value = prompt("Nový názov v lokáli (v kom, v čom) pre " + cities[cityId].name + ":", cities[cityId].name_locative);

    if (value !== null) {
        cities[cityId].name_locative = value;
        $("admin-region-tree-city-name-locative-" + cityId).innerHTML = value;
        adminRegionTree_adminAjaxChangeCity(cityId, { name_locative: value });
    }
}


function adminRegionTree_adminChangeCityAlias(cityId) {
    var value = prompt("Nový alias pre " + cities[cityId].name + ":", cities[cityId].alias);

    if (value !== null) {
        cities[cityId].alias = value;
        $("admin-region-tree-city-alias-" + cityId).innerHTML = value;
        adminRegionTree_adminAjaxChangeCity(cityId, { alias: value });
    }
}


function adminRegionTree_adminDeleteCity(cityId) {
    if (confirm("Naozaj zmazať obec " +  cities[cityId].name + "?")) {
        delete(cities[cityId]);
        $("admin-region-tree-city-" + cityId).remove();
        adminRegionTree_adminAjaxChangeCity(cityId, { action: "delete" });
    }
}


function adminRegionTree_adminAddCity(districtId) {
    var name = null;
    var name_locative = null;
    var alias = null;
    
    while (true) {
        name = prompt("Názov novej obce:");
        if (name === null) return;
        if (name) break;
    }
    
    while (true) {
        name_locative = prompt("Názov novej obce V LOKÁLI (v kom, v čom):");
        if (name_locative === null) return;
        if (name_locative) break;
    }
    
    while (true) { 
        alias = prompt("Alias novej obce:");
        if (alias === null) return;
        if (alias) break;
    }
    
    new Ajax.Request(
        adminRegionTree_adminAjaxChangeCity_url,
        {
            method: "post",
            parameters: {
                action: "add", 
                name: name, 
                name_locative: name_locative, 
                alias: alias, 
                district_id: districtId 
            },
            onSuccess: function (transport) {
                $("admin-region-tree-add-" + transport.responseJSON.districtId).insert({ after: transport.responseJSON.html });
                cities[transport.responseJSON.city.city_id] = transport.responseJSON.city;
            }
        }
    );
}



/*** adminListOrders **************************************************************************/



function adminListOrders_setInvoiceNumber(link, oldNumber) {
	var number = null;
	
	while (true) {
		number = prompt("Zmeniť číslo faktúry:", oldNumber);
        if (number === null) return false;
        if (number) break;
    }
	
	link.href = link.href.replace("invoiceNumber:null", "invoiceNumber:" + number);
	return true;
}


/*** operatorListOrders.tpl **************************************************************************/


var operatorListOrders_orderStatus = null;
var operatorListOrders_restaurantId = null;


function operatorListOrders_showDetails(orderId) {
    $$("div.orders-list-brief").each(function(e) { e.removeClassName("orders-list-full").removeClassName("orders-list-full-confirmed"); });
    $("order-" + orderId).addClassName("orders-list-full");
    if ($("order-" + orderId).hasClassName("orders-list-brief-confirmed")) $("order-" + orderId).addClassName("orders-list-full-confirmed");
    operatorListOrders_goBack(orderId);
}


function operatorListOrders_confirmOrder(orderId) {
    operatorListOrders_orderStatus = "CONFIRMED";
    
    $("button-confirm-" + orderId).show();
    $("button-cancel-" + orderId).hide();
    $("text-" + orderId).removeClassName("red").addClassName("green").value = "Ďakujeme za objednávku.";
    $("first-buttons-" + orderId).hide();
    $("second-buttons-" + orderId).show();
    $("text-input-" + orderId).show();
    $("text-" + orderId).select();
}


function operatorListOrders_cancelOrder(orderId) {
    operatorListOrders_orderStatus = "CANCELLED";
    
    $("button-cancel-" + orderId).show();
    $("button-confirm-" + orderId).hide();
    $("text-" + orderId).removeClassName("green").addClassName("red").value = "Prepáčte, pizzéria neprijala vašu objednávku.";
    $("first-buttons-" + orderId).hide();
    $("second-buttons-" + orderId).show();
    $("text-input-" + orderId).show();
    $("text-" + orderId).select();
}


function operatorListOrders_askForPause(orderId) {
    $("second-buttons-" + orderId).hide();
    $("text-input-" + orderId).hide();
    $("third-buttons-" + orderId).show();
}


function operatorListOrders_goBack(orderId) {
    $("first-buttons-" + orderId).show();
    $("second-buttons-" + orderId).hide();
    $("third-buttons-" + orderId).hide();
    $("text-input-" + orderId).hide();
}


function operatorListOrders_setOrderStatus(orderId, pause, restaurantId) {
    var status = operatorListOrders_orderStatus == "CONFIRMED" ? "confirmed" : "cancelled";
    var ordersToProcess = null;
    
//    $("order-" + orderId).removeClassName("orders-list-full").removeClassName("orders-list-brief-dark").removeClassName("orders-list-brief-new").addClassName("orders-list-brief-processed").addClassName("orders-list-brief-" + status);
//    $("status-text-" + orderId).innerHTML = $("text-" + orderId).value;
    
    
    
    if (status == "confirmed") {
        $("order-" + orderId).removeClassName("orders-list-brief-new").addClassName("orders-list-brief-processed").addClassName("orders-list-brief-confirmed").addClassName("orders-list-full-confirmed");
        $("status-text-" + orderId).innerHTML = $("text-" + orderId).value;
        
    } else {
        if ((pause) && (restaurantId)) {
            ordersToProcess = $$("div.order-for-restaurant-" + restaurantId);
        } else {
            ordersToProcess = $$("#order-" + orderId);
        }
        
        ordersToProcess.each(function (e) {
            if (e.hasClassName("orders-list-brief-new")) {
                e.select(".status-text")[0].innerHTML = $("text-" + orderId).value;
//                e.removeClassName("orders-list-full").removeClassName("orders-list-full-confirmed").removeClassName("orders-list-brief-dark").removeClassName("orders-list-brief-new").addClassName("orders-list-brief-processed").addClassName("orders-list-brief-" + status);
                e.removeClassName("orders-list-brief-new").removeClassName("orders-list-full-new").addClassName("orders-list-brief-processed").addClassName("orders-list-brief-" + status);
            }
        });
        
        var nextOrder = $$(".orders-list-brief-new").last();
        if (nextOrder) {
            var nextId = parseInt(nextOrder.id.replace("order-", ""));
            if (nextId) operatorListOrders_showDetails(nextId);
        }
    }
    
    new Ajax.Request(
        operatorListOrders_setOrderStatus_url,
        {
            method: "post",
            parameters: {
                orderId: orderId,
//                restaurantId: restaurantId,
                statusCode: operatorListOrders_orderStatus,
                statusText: $("text-" + orderId).value,
                pause: pause
            },
            onSuccess: function (transport) {
                if (transport.responseJSON) {
                    operatorListOrders_setOpened(transport.responseJSON);
                }
            }
        }
    );
}


function operatorListOrders_getNewOrders() {
    var visibleNewOrders = "";
    
    $$("div.orders-list-brief-new").each(function(e) { visibleNewOrders += e.id.replace("order-", "") + ","; });
    
    new Ajax.Request(
        operatorListOrders_getNewOrders_url,
        {
            method: "post",
            parameters: {
                visibleNewOrders: visibleNewOrders
            },
            onSuccess: function (transport) {
                if (transport.responseJSON) {
                    operatorListOrders_setOpened(transport.responseJSON);
                    
                    if (transport.responseJSON.changedVisibleOrders) {
                        transport.responseJSON.changedVisibleOrders.each(function (e) {
                            if ($("order-" + e.order_id)) {
//                                if ($("order-" + e).hasClassName("orders-list-full")) {
//                                    alert("Bohužiaľ, táto objednávka práve expirovala.");
//                                }
                                $("order-" + e.order_id).removeClassName("orders-list-brief-new").removeClassName("orders-list-full").addClassName("orders-list-brief-processed").addClassName("orders-list-brief-" + e.status_code.toLowerCase());
                            }
                        });
                    }
                    
                    if (transport.responseJSON.orders) {
                        transport.responseJSON.orders.each(function (e) {
                            if (!$("order-" + e.order_id)) {
                                Element.insert($("orders-header"), { after: e.html });
                                soundManager.pizzaBell.play();
                            }
                            operatorListOrders_timeLeft_data.push({id: e.order_id, timeLeft: e.time_left});
                        });
                        for (var i = 0; i < $$("div.orders-list-brief-processed").length - operatorListOrders_maxProcessedOrders; i++) {
                            $$("div.orders-list-brief-processed").last().remove();
                        }
                        if (($$("div.orders-list-full").length == 0) && ($$("div.orders-list-brief-new").length > 0)) {
                            $$("div.orders-list-brief-new").last().addClassName("orders-list-full");
                        }
                    }
                }
            }
        }
    );
}


function operatorListOrders_timeLeft_updateTimers() {
    for (var i = 0; i < operatorListOrders_timeLeft_data.length; i++) {
        if (typeof operatorListOrders_timeLeft_data[i] == "undefined") continue;
        var order = operatorListOrders_timeLeft_data[i];
        order.timeLeft -= 1;
        var minutes = Math.floor(order.timeLeft / 60);
        var seconds = order.timeLeft % 60;
        if (seconds < 10) seconds = "0" + seconds;
        $("order-" + order.id + "-time-left").innerHTML = minutes + ":" + seconds;
        if (order.timeLeft == 0) {
            delete(operatorListOrders_timeLeft_data[i]);
            $("order-" + order.id + "-time-left").hide();
        }
    }
}


function operatorListOrders_selectRestaurant(restaurantId) {
    operatorListOrders_restaurantId = restaurantId;
    
    $$("div.orders-list-brief-new").each(function(e) { e.remove(); });
    
    operatorListOrders_getNewOrders();
}


function operatorListOrders_selectSound(sound) {
	if ($$("div.orders-list-settings-sounds a.sound").length == 0) return;
	
	$$("div.orders-list-settings-sounds a.sound").each(function (e) { e.removeClassName("sound-green").removeClassName("sound-red"); });
	$("operatorListOrders_sound" + sound).addClassName("sound-" + (sound > 0 ? "green" : "red"));
	
	soundManager.pizzaBell.selectedSound = sound;
	(new RCookies).setCookie("selectedSound", sound, 365, "/");
}


/*
function operatorListOrders_muteSounds(mute) {
    if ((!$("operatorListOrders_muteLink")) || (!$("operatorListOrders_unmuteLink"))) return;
    
    if (mute) {
        soundManager.pizzaBell.mute();
        $("operatorListOrders_muteLink").hide();
        $("operatorListOrders_unmuteLink").show();
    } else {
        soundManager.pizzaBell.unmute();
        soundManager.pizzaBell.play();
        $("operatorListOrders_muteLink").show();
        $("operatorListOrders_unmuteLink").hide();
    }
    
    (new RCookies).setCookie("muteSounds", mute, 30, "/");
}
*/


function operatorListOrders_bell() {
    if ($$("div.orders-list-brief-new").length > 0) {
        soundManager.pizzaBell.play();
    }
}


function operatorListOrders_updateSoftware() {
    if ($$("div.orders-list-brief-new").length == 0) {
        location.reload(true);
    }
}


function operatorListOrders_setOpened(json) {
    if (parseInt(json.isOpened)) {
        $("operatorListOrders_isClosed").hide();
        $("operatorListOrders_isOpened").show();
        $("operatorListOrders_statusOpened").show();
    } else {
        $("operatorListOrders_isOpened").hide();
        $("operatorListOrders_isClosed").show();
        $("operatorListOrders_statusOpened").hide();
    }
    
    if (parseInt(json.isOpenedBusinessHours)) {
        $("pizzeriaMenu_isClosedBusinessHours").hide();
        $("pizzeriaMenu_isOpenedBusinessHours").show();
        $("operatorListOrders_statusBusinessHours").hide();
    } else {
        $("pizzeriaMenu_isOpenedBusinessHours").hide();
        $("pizzeriaMenu_isClosedBusinessHours").show();
        $("operatorListOrders_statusBusinessHours").show();
    }
    
    if (parseInt(json.isTemporarilyClosed)) {
        $("operatorListOrders_statusTemporarilyClosed").show();
    } else {
        $("operatorListOrders_statusTemporarilyClosed").hide();
    }
    
    if (json.pausedUntil) {
        $("operatorListOrders_statusPaused_pause").innerHTML = json.pausedUntil;
        $("operatorListOrders_statusPaused").show();
    } else {
        $("operatorListOrders_statusPaused").hide();
    }
}



/*** changeBusinessHours.tpl **********************************************************************/


function changeBusinessHours_checkDay(id) {
    if ($("day-checkbox-" + id).checked) {
        $("hours-" + id).show();
    } else {
        $("hours-" + id).hide();
        $$("#hours-" + id + " select").each(function (e) { e.selectedIndex = 0; });
    }
}

