window.setTimeout("autologout.check()", 30000);

function $(id)
{
    return document.getElementById(id);
}

function trim(txt)
{
    txt += "";
    return txt.replace(/^\s+|\s+$/g, "");
}

function maxlen(inp)
{
    var max = inp.getAttribute("maxlength") * 1;
    var val = trim(inp.value);

    if(val.length > max)
    {
        val = val.substr(0, max);
        inp.value = val;
    }
}

function showDetail(vid)
{
    if(/^[0-9]+$/.test(vid))
    {
        window.open("./detail.php?id=" + vid, "_self");
    }
}

var page =
{
    init : function()
    {
        filter.init();
        garage.init();
    },

    drawForm : function(xhr)
    {
        if(xhr.responseText == "expired")
        {
            autologout.result("client");
            return false;
        }
        else
        {
            layer.showWork(xhr.responseText);
            return true;
        }
    }
}

var message =
{
    userError : "Chyba při komunikaci se serverem EU Automobile. Zkuste prosím akci opakovat a v případě opětovného zobrazení této hlášky kontaktujte pracovníky EU Automobile.",
    adminError : "Chyba při komunikaci se serverem EU Automobile. Zkuste prosím akci opakovat a v případě opětovného zobrazení této hlášky kontaktujte správce portálu."
};

var autologout =
{
    limit : ($("adminNewsList") != null ? 780 : 20),

    lastActionTime : new Date().getTime(),

    lastRequestTime : new Date().getTime(),

    check : function()
    {
        if($("loginButton") == null)
        {
            autologout.reset();
        }
        else
        {
            return;
        }

        var limit = autologout.limit * 60 * 1000;
        var diff = autologout.lastActionTime + limit - new Date().getTime();

/*
        if($("autologoutTimer"))
        {
            var min = Math.ceil(diff / 60000);
            var sec = Math.floor((diff - Math.floor(diff / 60000) * 60000) / 1000);

            if(diff > 0)
            {
                if(min > 1)
                {
                    var end = "";

                    if(2 <= min && min <= 4)
                    {
                        end = "y";
                    }

                    $("autologoutTime").innerHTML = min + " minut" + end;
                }
                else
                {
                    var end = "";

                    if(sec == 1)
                    {
                        end = "u";
                    }
                    else if(2 <= sec && sec <= 4)
                    {
                        end = "y";
                    }

                    $("autologoutTime").innerHTML = sec + " vteřin" + end;
                }
            }
            else
            {
                $("autologoutTimer").style.display = "none";
            }
        }
*/

        if(diff <= 0)
        {
            autologout.send();
        }
    },

    send : function()
    {
        request.post("./logout.php", null, autologout.result);
    },

    result : function(xhr)
    {
        if(xhr == "client" || xhr.responseText == "ok")
        {
            alert("Z důvodu delší nečinnosti jste byli automaticky odhlášeni.");
        }

        window.location.reload();
    },

    reset : function()
    {
        var time = new Date().getTime();
        autologout.lastActionTime = time;

        if(time - autologout.lastRequestTime > 15 * 60 * 1000)
        {
            request.post("./noop.php", null, null);
        }

        window.setTimeout("autologout.check()", 30000);
    }
}

var request =
{
    get : function(url, params, handler, vars)
    {
        request.send("get", url, params, handler, vars);
    },

    post : function(url, params, handler, vars)
    {
        request.send("post", url, params, handler, vars);
    },

    send : function(method, url, params, handler, vars)
    {
        autologout.lastActionTime = autologout.lastRequestTime = new Date().getTime();

        if(typeof vars == "undefined")
        {
            vars = null;
        }

        if(params != null)
        {
            if(typeof params == "object")
            {
                var tmp = params;
                var i = 0;
                params = "";

                for(var p in tmp)
                {
                    if(typeof tmp[p] == "object")
                    {
                        for(var x in tmp[p])
                        {
                            params += (i++ > 0 ? "&" : "") + p + "[" + x + "]=" + (tmp[p][x] + "").replace(/&/g, "%26").replace(/\//g, "%2F").replace(/\?/g, "%3F");
                        }
                    }
                    else
                    {
                        params += (i++ > 0 ? "&" : "") + p + "=" + (tmp[p] + "").replace(/&/g, "%26").replace(/\//g, "%2F").replace(/\?/g, "%3F");
                    }
                }
            }

            params = params.replace(/\+/g, "%2B");
        }

        if(window.ActiveXObject)
        {
            var xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else
        {
            var xhr = new XMLHttpRequest();
        }

        xhr.open(method, url, true);
        xhr.onreadystatechange = function()
        {
            request.process(xhr, handler, vars);
        };
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
        xhr.setRequestHeader("Connection", "keep-alive");
        xhr.setRequestHeader("From", "ajax");
        xhr.send(params);
    },

    process : function(xhr, handler, vars)
    {
        if(xhr.readyState == 4 && xhr.status == 200 && handler)
        {
            handler(xhr, vars);
        }
    }
};

var cookies =
{
    get : function(name)
    {
        var parts = document.cookie.split(";");
        var arr = new Array();

        for(var i in parts)
        {
            if(!/^__/.test(trim(parts[i])))
            {
                var ck = trim(parts[i]).split("=");
                arr[ck[0]] = utf8.decode(unescape(ck[1]));
            }
        }

        if(typeof name == "undefined")
        {
            return arr;
        }
        else
        {
            return typeof arr[name] == "undefined" ? null : arr[name];
        }
    },

    set : function(name, value)
    {
        var date = new Date();
        date = new Date(date.getTime() + 86400 * 1000);
        document.cookie = name + "=" + value + "; path=/; expires=" + date.toGMTString();
    }
};

var utf8 =
{
    encode : function (string)
    {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    decode : function (utftext)
    {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }
};

var filter =
{
    models : new Array(),

    init : function()
    {
        var cmp = $("model");
        var mdl = "";

        for(var i = 0; i < cmp.options.length; i++)
        {
            if(cmp.options[i].selected)
            {
                mdl = cmp.options[i].value;
                break;
            }
        }

        for(var i = 1; i < cmp.options.length; i++)
        {
            var opt = cmp.options[i];
            var pdc = opt.getAttribute("label");

            if(typeof filter.models["#" + pdc] == "undefined")
            {
                filter.models["#" + pdc] = new Array();
            }

            filter.models["#" + pdc]["#" + opt.value] = opt.innerHTML;
        }

        filter.getModels();

        for(var i = 0; i < cmp.options.length; i++)
        {
            if(cmp.options[i].value == mdl)
            {
                cmp.options[i].selected = true;
            }
        }

        filter.refreshCount();
    },

    getModels : function()
    {
        var pdc = $("producer").value;
        var cmp = $("model");
        cmp.options[0].selected = true;

        for(var i = cmp.options.length - 1; i > 0; i--)
        {
            cmp.removeChild(cmp.options[i]);
        }

        if(pdc !== "" && typeof filter.models["#" + pdc] != "undefined")
        {
            for(var mdl in filter.models["#" + pdc])
            {
                var opt = document.createElement("OPTION");
                opt.value = mdl.replace(/^#/, "");
                opt.innerHTML = filter.models["#" + pdc][mdl];
                cmp.insertBefore(opt, null);
            }
        }
    },

    refreshCount : function()
    {
        var prm = new Array();
        if($("type").value) prm["type"] = $("type").value;
        if($("producer").value) prm["producer"] = $("producer").value;
        if($("model").value) prm["model"] = $("model").value;
        if($("body").value) prm["body"] = $("body").value;
        if($("fuel").value) prm["fuel"] = $("fuel").value;
        if($("priceMin").value) prm["priceMin"] = $("priceMin").value;
        if($("priceMax").value) prm["priceMax"] = $("priceMax").value;
        if($("yearMin").value) prm["yearMin"] = $("yearMin").value;
        if($("yearMax").value) prm["yearMax"] = $("yearMax").value;
        if($("tacho").value) prm["tacho"] = $("tacho").value;
        /*
        if($("color").value) prm["color"] = $("color").value;
        if($("powerMin").value) prm["powerMin"] = $("powerMin").value;
        if($("powerMax").value) prm["powerMax"] = $("powerMax").value;
        if($("capacityMin").value) prm["capacityMin"] = $("capacityMin").value;
        if($("capacityMax").value) prm["capacityMax"] = $("capacityMax").value;
        if($("firstOwner").checked) prm["firstOwner"] = $("firstOwner").value;
        if($("serviceBook").checked) prm["serviceBook"] = $("serviceBook").value;
        */
        request.post("./counter.php", prm, filter.setShowButtonCount);
    },

    setShowButtonCount : function(xhr)
    {
        if(!check.result(xhr) || !/^[0-9]+$/.test(xhr.responseText))
        {
            return;
        }

        var cnt = xhr.responseText * 1;
        $("showCarListButton").innerHTML = "Zobrazit&nbsp;<b>(" + xhr.responseText + ")</b>";

        if(xhr.responseText == "0")
        {
            $("showCarListButton").className += " fdisabled";
            $("showCarListButton").onclick = function()
            {
            };

            if($("filterIcon") != null && $("filterText") != null)
            {
                $("filterIcon").src = $("filterIcon").src.replace(/info/, "exclamation");
                $("filterText").innerHTML = "Žádné vozidlo neodpovídá nastavení filtru.";
            }
        }
        else
        {
            $("showCarListButton").className = $("showCarListButton").className.replace(/\sfdisabled/g, "");
            $("showCarListButton").onclick = function()
            {
                filter.showCarList();
            };

            if($("filterIcon") != null && $("filterText") != null)
            {
                $("filterIcon").src = $("filterIcon").src.replace(/exclamation/, "info");
                $("filterText").innerHTML = "Filtr je přizpůsobený vozidlům, které jsou aktuálně v nabídce.";
            }
        }
    },

    showCarList : function()
    {
        var prm = {};
        if($("type").value) prm["type"] = $("type").value;
        if($("producer").value) prm["producer"] = $("producer").value;
        if($("model").value) prm["model"] = $("model").value;
        if($("body").value) prm["body"] = $("body").value;
        if($("fuel").value) prm["fuel"] = $("fuel").value;
        if($("priceMin").value) prm["priceMin"] = $("priceMin").value;
        if($("priceMax").value) prm["priceMax"] = $("priceMax").value;
        if($("yearMin").value) prm["yearMin"] = $("yearMin").value;
        if($("yearMax").value) prm["yearMax"] = $("yearMax").value;
        if($("tacho").value) prm["tacho"] = $("tacho").value;
        /*
        if($("color").value) prm["color"] = $("color").value;
        if($("powerMin").value) prm["powerMin"] = $("powerMin").value;
        if($("powerMax").value) prm["powerMax"] = $("powerMax").value;
        if($("capacityMin").value) prm["capacityMin"] = $("capacityMin").value;
        if($("capacityMax").value) prm["capacityMax"] = $("capacityMax").value;
        if($("firstOwner").checked) prm["firstOwner"] = $("firstOwner").value;
        if($("serviceBook").checked) prm["serviceBook"] = $("serviceBook").value;
        */
        if($("page")) prm["page"] = $("page").value;
        if($("itemsCount")) prm["itemsCount"] = $("itemsCount").value;
        if($("order")) prm["order"] = $("order").value;
        if($("orderDirection")) prm["orderDirection"] = $("orderDirection").value;

        var url = "./select.php";
        var i = 0;

        for(var p in prm)
        {
            url += (i > 0 ? "&" : "?") + p + "=" + prm[p];
            i++;
        }

        window.location.href = url;
    }
};

var layer =
{
    showShade : function()
    {
        if($("shadeLayer") == null)
        {
            var ie = /MSIE/.test(window.navigator.userAgent);
            var div = document.body.insertBefore(document.createElement("DIV"), null);
            div.id = "shadeLayer";
            div.style.display = "none";
            div.style.position = "fixed";
            div.style.zIndex = 1000;
            div.style.left = "0px";
            div.style.top = "0px";
            div.style.background = "#000";

            if(ie)
            {
                div.style.filter = "alpha(opacity=80,style=0)";
            }
            else
            {
                div.style.opacity = 0.80;
            }
        }

        $("shadeLayer").style.width = document.body.scrollWidth + "px";
        $("shadeLayer").style.height = document.body.scrollHeight + "px";
        $("shadeLayer").style.display = "block";
    },

    showWork : function(content, resizeOnly)
    {
        if(typeof resizeOnly == "undefined")
        {
            resizeOnly = false;
        }

        if($("workLayer") == null)
        {
            var div = document.body.insertBefore(document.createElement("DIV"), null);
            div.id = "workLayer";
        }

        var left = (document.body.scrollWidth / 2 - 470);
        $("workLayer").style.display = "none";
        $("workLayer").style.left = (left > 20 ? left : 20) + "px";
        $("workLayer").style.display = "block";

        if(!resizeOnly)
        {
            $("workLayer").innerHTML = content;
        }
    },

    hideShade : function()
    {
        $("shadeLayer").style.display = "none";
    },

    hideWork : function()
    {
        $("workLayer").innerHTML = "";
        $("workLayer").style.display = "none";
    }
};

var check =
{
    phone : function(inp)
    {
        inp.value = trim(inp.value);
        var val = inp.value;
        inp.className = inp.className.replace(/\sbadValue/g, "");
        if(val != "")
        {
/*
            val = val.replace(/\s+/g, "");
            val = val.replace(/\//g, "");

            if(val === "")
            {
                return true;
            }

            if(/^[0-9]{9}$/.test(val))
            {
                val = "+420" + val;
            }

            if(/^[0-9]{12,14}$/.test(val))
            {
                val = "+" + val;
            }

            if(/^[0-9]{14,16}$/.test(val))
            {
                val = "+" + val.substring(2, 16);
            }

            if(/^\+[0-9]{12,14}$/.test(val))
            {
                val = val.substring(0, 4) + " " + val.substring(4, 7) + " " + val.substring(7, 10) + " " + val.substring(10, 13) + " " + val.substring(10, 13);
                inp.value = val;
                return true;
            }
*/
            if(/^[+]*[0-9\s]{9,24}$/.test(val))
            {
                inp.value = val;
                return true;
            }

            inp.className += " badValue";
            return false;
        }

        return true;
    },

    email : function(inp)
    {
        inp.value = trim(inp.value);
        var val = inp.value;
        inp.className = inp.className.replace(/\sbadValue/g, "");

        if(val != "")
        {
            val = val.replace(/\s/g, "");
            inp.value = val;

            var atom = "[\-a-z0-9!#$%&'\*\+\/=\?\^_`\{\|\}~]";
            var domain = "[a-z0-9]([\-a-z0-9]{0,61}[a-z0-9])";
            var reg = new RegExp("^" + atom + "+(\." + atom + "+)*@(" + domain + "?\.)+" + domain + "$", "i");

            if(reg.test(val))
            {
                return true;
            }

            inp.className += " badValue";
            return false;
        }

        return true;
    },

    password : function(inp)
    {
        var val = inp.value;
        inp.className = inp.className.replace(/\sbadValue/g, "");

        if(val != "")
        {
            if(!/^[a-zA-Z0-9]{8,16}$/.test(val) || !/[a-z]/.test(val) || !/[A-Z]/.test(val) || !/[0-9]/.test(val))
            {
                inp.className += " badValue";
                return false;
            }
        }

        return true;
    },

    date : function(inp)
    {
        var val = inp.value;
        inp.className = inp.className.replace(/\sbadValue/g, "");

        if(val != "")
        {
            if(!/^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}$/.test(val))
            {
                inp.className += " badValue";
                return false;
            }

            val = val.split(".");

            if(val[0] * 1 < 1 || val[1] * 1 < 1 || 12 < val[1] * 1)
            {
                inp.className += " badValue";
                return false;
            }

            var c = new Array(31, val[2] * 1 % 4 == 0 && (val[2] * 1 % 100 != 0 || val[2] * 1 % 400 == 0) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

            if(c[val[1] * 1 - 1] < val[0] * 1)
            {
                inp.className += " badValue";
                return false;
            }
        }

        return true;
    },

    result : function(xhr, max)
    {
        if(typeof max == "undefined")
        {
            max = 10;
        }

        if(xhr == null || typeof xhr.responseText == "undefined" || xhr.responseText.length > max)
        {
            alert($("adminNewsList") && $("adminVisitorsList") ? message.adminError : message.userError);
            return false;
        }

        return true;
    }
};

var garage =
{
    init : function(chb, vid)
    {
        var cars = cookies.get("garage");

        if(cars != null)
        {
            cars = cars.split("|||");

            for(var i = 0; i < cars.length; i++)
            {
                var car = cars[i];
                car = car.split("###");

                if($("gv" + car[0]))
                {
                    $("gv" + car[0]).checked = true;
                }
            }
        }

        if(cookies.get("garageShowed") == "1")
        {
            garage.show(false);
        }
    },

    manage : function(chb, vid)
    {
        if(chb.checked)
        {
            garage.add(vid);
        }
        else
        {
            garage.remove(vid);
        }
    },

    showHide : function()
    {
        if($("foot") && $("foot").className == "garageHidden")
        {
            garage.show();
        }
        else
        {
            garage.hide();
        }
    },

    show : function(siv)
    {
        if(typeof siv == "undefined")
        {
            siv = true;
        }

        cookies.set("garageShowed", "1");

         $("garageList").innerHTML = "<table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr></tr></tbody></table>";
        var cars = cookies.get("garage");
        var cell = null;

        if(cars != null)
        {
            cars = cars.split("|||");

            for(var i = 0; i < cars.length; i++)
            {
                var car = cars[i];
                car = car.split("###");
                cell = $("garageList").getElementsByTagName("TR")[0].insertBefore(document.createElement("TD"), null);
                var price = "         " + car[3];
                var len = price.length;
                var price = price.substr(len - 9, 3) + " " + price.substr(len - 6, 3) + " " + price.substr(len - 3, 3);
                price = price.replace(/^\s+/, "");

                var cnt = "<div class=\"garageItem\"><div class=\"garageItemTop\"><div class=\"garageItemTitle\">" + car[2] + "</div><div class=\"garageItemRemover\" title=\"Odebrat z garáže\"onclick=\"garage.remove('" + car[0] + "')\"></div></div>";
                cnt += "<div class=\"garageItemImg\" title=\"Přejít na detail\"><img src=\"" + car[1] +"\" onclick=\"showDetail('" + car[0] + "')\" /></div>";
                cnt += "<div class=\"garageItemPrice\">" + price + " Kč</div></div>";

                cell.innerHTML = cnt;
            }
        }

        $("garage").style.display = "block";
        $("foot").className = "garageShowed";
        $("footMask").className = "footLong";
        $("footGarageSwitch").innerHTML = "Skrýt garáž";

        if(siv)
        {
            $("garage").scrollIntoView();
        }
    },

    hide : function()
    {
        cookies.set("garageShowed", "0");
        $("garage").style.display = "none";
        $("foot").className = "garageHidden";
        $("footMask").className = "footShort";
        $("footGarageSwitch").innerHTML = "Zobrazit garáž";
    },

    scroll : function(type)
    {
        if(type == "left")
        {
            $("garageList").scrollLeft -= 200;
        }
        else
        {
            $("garageList").scrollLeft += 200;
        }
    },

    add : function(vid)
    {
        var prm = new Array();
        prm["action"] = "add";
        prm["vid"] = vid;
        request.post("./garage.php", prm, garage.addResult);
    },

    addResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            garage.hide();
        }

        garage.show();
    },

    remove : function(vid)
    {
        var prm = new Array();
        prm["action"] = "remove";
        prm["vid"] = vid;
        request.post("./garage.php", prm, garage.removeResult, {vehicle: vid});
    },

    removeResult : function(xhr, vars)
    {
        if(!check.result(xhr))
        {
            garage.hide();
        }

        garage.show();

        var vid = vars["vehicle"];

        if($("gv" + vid) != null && $("gv" + vid).checked)
        {
            $("gv" + vid).checked = false;
        }

        if($("ev" + vid) != null)
        {
            var div = $("ev" + vid);
            div.parentNode.removeChild(div, true);
        }
    }
};

var forpas =
{
    show : function()
    {
        layer.showShade();
        request.post("./forgottenpassword.php", null, page.drawForm);
    },

    hide : function()
    {
        layer.hideWork();
        layer.hideShade();
    },

    reloadCaptcha : function()
    {
        $("forpasCaptchaImage").src = $("forpasCaptchaImage").src.replace(/[0-9]+$/, new Date().getTime());
    },

    check : function()
    {
        var email = $("forpasEmail").value;
        var captcha = $("forpasCaptcha").value;

        if(email == "")
        {
            alert("Vyplňte prosím e-mail.");
            try{ $("forpasEmail").focus(); } catch(e){};
            return;
        }

        if(!check.email($("forpasEmail")))
        {
            alert("E-mail není zadaný ve správném tvaru.");
            try{ $("forpasEmail").focus(); } catch(e){};
            return;
        }

        if(captcha == "")
        {
            alert("Opište prosím captcha kód.");
            try{ $("forpasCaptcha").focus(); } catch(e){};
            return;
        }

        forpas.disableForm(true);

        var prm = new Array();
        prm["action"] = "check";
        prm["email"] = email;
        prm["captcha"] = captcha;

        request.post("./forgottenpassword.php", prm, forpas.checkResult);
    },

    checkResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            forpas.disableForm(false);
            return;
        }

        switch(xhr.responseText)
        {
            case "unknown" :
            {
                alert("Zadaný e-mail neexistuje. Prosím překontrolujte ho, opravte a akci opakujte.");
                forpas.disableForm(false);
                try{ $("forpasEmail").focus(); } catch(e){};
                return;
            }

            case "captcha" :
            {
                alert("Opis captcha kódu není správný. Prosím opravte ho a akci opakujte.");
                forpas.disableForm(false);
                try{ $("forpasCaptcha").focus(); } catch(e){};
                return;
            }

            case "expired" :
            {
                alert("Z důvodu delší nečinnosti vypršela platnost captcha kódu. Vyplňte prosím nový captcha kód.");
                forpas.reloadCaptcha();
                $("forpasCaptcha").value = "";
                forpas.disableForm(false);
                try{ $("forpasCaptcha").focus(); } catch(e){};
                return;
            }

            case "ok" :
            {
                forpas.send();
                return;
            }
        }
    },

    send : function()
    {
        var prm = new Array();
        prm["action"] = "send";
        prm["email"] = $("forpasEmail").value;
        prm["captcha"] = $("forpasCaptcha").value;

        request.post("./forgottenpassword.php", prm, forpas.sendingResult);
    },

    sendingResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            forpas.disableForm(false);
            return;
        }

        switch(xhr.responseText)
        {
            case "unknown" :
            {
                alert("Zadaný e-mail neexistuje. Prosím překontrolujte ho, opravte a akci opakujte.");
                forpas.disableForm(false);
                try{ $("forpasEmail").focus(); } catch(e){};
                return;
            }

            case "captcha" :
            {
                alert("Opis captcha kódu není správný. Prosím opravte ho a akci opakujte.");
                forpas.reloadCaptcha();
                $("forpasCaptcha").value = "";
                forpas.disableForm(false);
                try{ $("forpasCaptcha").focus(); } catch(e){};
                return;
            }

            case "expired" :
            {
                alert("Z důvodu delší nečinnosti vypršela platnost captcha kódu. Vyplňte prosím nový captcha kód.");
                forpas.reloadCaptcha();
                $("forpasCaptcha").value = "";
                forpas.disableForm(false);
                try{ $("forpasCaptcha").focus(); } catch(e){};
                return;
            }

            case "ok" :
            {
                alert("Vážený pane, vážená paní,\n\nna vámi zadanou e-mailovou adresu bude v nejbližší době odeslán e-mail se zapomenutým přístupovým heslem.");
                forpas.hide();
                return;
            }
        }
    },

    disableForm : function(dis)
    {
        $("forpasEmail").readOnly = dis;
        $("forpasCaptchaReload").disabled = dis;
        $("forpasCaptcha").readOnly = dis;
        $("forpasSubmitButton").disabled = dis;
        $("forpasStornoButton").disabled = dis;
    }
};

var registration =
{
    notify : function(xhr)
    {
        alert(xhr.responseText);
        window.location.href = "./";
    },

    show : function()
    {
        layer.showShade();
        request.post("./registration.php", null, page.drawForm);
    },

    hide : function()
    {
        layer.hideWork();
        layer.hideShade();
    },

    reloadCaptcha : function()
    {
        $("regCaptchaImage").src = $("regCaptchaImage").src.replace(/[0-9]+$/, new Date().getTime());
    },

    check : function()
    {
        var firstName = $("regFirstName").value;
        var lastName = $("regLastName").value;
        var phone = $("regPhone").value;
        var email = $("regEmail").value;
        var password = $("regPassword").value;
        var passwordConfirm = $("regPasswordConfirm").value;
        var captcha = $("regCaptcha").value;

        if(firstName == "")
        {
            alert("Vyplňte prosím jméno.");
            try{ $("regFirstName").focus(); } catch(e){};
            return;
        }

        if(lastName == "")
        {
            alert("Vyplňte prosím příjmení.");
            try{ $("regLastName").focus(); } catch(e){};
            return;
        }

        if(!check.phone($("regPhone")))
        {
            alert("Telefon není zadaný ve správném tvaru.");
            try{ $("regPhone").focus(); } catch(e){};
            return;
        }

        if(email == "")
        {
            alert("Vyplňte prosím e-mail (přístupové jméno).");
            try{ $("regEmail").focus(); } catch(e){};
            return;
        }

        if(!check.email($("regEmail")))
        {
            alert("E-mail (přístupové jméno) není zadaný ve správném tvaru.");
            try{ $("regEmail").focus(); } catch(e){};
            return;
        }

        if(password == "")
        {
            alert("Vyplňte prosím přístupové heslo.");
            try{ $("regPassword").focus(); } catch(e){};
            return;
        }

        if(!check.password($("regPassword")))
        {
            alert("Přístupové heslo neodpovídá požadavkům z hlediska bezpečnosti.");
            try{ $("regPassword").focus(); } catch(e){};
            return;
        }

        if(password != passwordConfirm)
        {
            alert("Přístupové heslo a potvrzení hesla se neshodují.");
            try{ $("regPassword").focus(); } catch(e){};
            return;
        }

        if(captcha == "")
        {
            alert("Opište prosím captcha kód.");
            try{ $("regCaptcha").focus(); } catch(e){};
            return;
        }

        registration.disableForm(true);

        var prm = new Array();
        prm["action"] = "check";
        prm["email"] = email;
        prm["captcha"] = captcha;

        request.post("./registration.php", prm, registration.checkResult);
    },

    checkResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            registration.disableForm(false);
            return;
        }

        switch(xhr.responseText)
        {
            case "unknown" :
            {
                alert("Zadaný e-mail neexistuje. Prosím překontrolujte ho, opravte a akci opakujte.");
                registration.disableForm(false);
                try{ $("regEmail").focus(); } catch(e){};
                return;
            }

            case "exists" :
            {
                alert("Není možné se opětovně registrovat pod daným e-mailem.");
                registration.disableForm(false);
                try{ $("regEmail").focus(); } catch(e){};
                return;
            }

            case "captcha" :
            {
                alert("Opis captcha kódu není správný. Prosím opravte ho a akci opakujte.");
                registration.disableForm(false);
                try{ $("regCaptcha").focus(); } catch(e){};
                return;
            }

            case "expired" :
            {
                alert("Z důvodu delší nečinnosti vypršela platnost captcha kódu. Vyplňte prosím nový captcha kód.");
                registration.reloadCaptcha();
                $("regCaptcha").value = "";
                registration.disableForm(false);
                try{ $("regCaptcha").focus(); } catch(e){};
                return;
            }

            case "ok" :
            {
                registration.send();
                return;
            }
        }
    },

    send : function()
    {
        var prm = new Array();
        prm["action"] = "save";
        prm["firstName"] = $("regFirstName").value;
        prm["lastName"] = $("regLastName").value;
        prm["phone"] = $("regPhone").value;
        prm["email"] = $("regEmail").value;
        prm["password"] = $("regPassword").value;
        prm["captcha"] = $("regCaptcha").value;

        request.post("./registration.php", prm, registration.sendingResult);
    },

    sendingResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            registration.disableForm(false);
            return;
        }

        switch(xhr.responseText)
        {
            case "unknown" :
            {
                alert("Zadaný e-mail neexistuje. Prosím překontrolujte ho, opravte a akci opakujte.");
                registration.disableForm(false);
                try{ $("regEmail").focus(); } catch(e){};
                return;
            }

            case "exists" :
            {
                alert("Není možné se opětovně registrovat pod daným e-mailem.");
                registration.disableForm(false);
                try{ $("regEmail").focus(); } catch(e){};
                return;
            }

            case "captcha" :
            {
                alert("Opis captcha kódu není správný. Prosím opravte ho a akci opakujte.");
                registration.reloadCaptcha();
                $("regCaptcha").value = "";
                registration.disableForm(false);
                try{ $("regCaptcha").focus(); } catch(e){};
                return;
            }

            case "expired" :
            {
                alert("Z důvodu delší nečinnosti vypršela platnost captcha kódu. Vyplňte prosím nový captcha kód.");
                registration.reloadCaptcha();
                $("regCaptcha").value = "";
                registration.disableForm(false);
                try{ $("regCaptcha").focus(); } catch(e){};
                return;
            }

            case "ok" :
            {
                alert("Vážený pane, vážená paní,\n\nvaše registrace proběhla v pořádku. Na vámi zadanou e-mailovou adresu bude v nejbližší době odeslán potvrzovací e-mail.\nPotvrzení registrace proveďte nejdéle do 7 kalendářních dnů. Pokud tak neučiníte, automaticky vyprší její platnost.");
                registration.hide();
                return;
            }
        }
    },

    disableForm : function(dis)
    {
        $("regFirstName").readOnly = dis;
        $("regLastName").readOnly = dis;
        $("regPhone").readOnly = dis;
        $("regEmail").readOnly = dis;
        $("regPassword").readOnly = dis;
        $("regPasswordConfirm").readOnly = dis;
        $("regCaptchaReload").disabled = dis;
        $("regCaptcha").readOnly = dis;
        $("regSubmitButton").disabled = dis;
        $("regStornoButton").disabled = dis;
    }
};

var login =
{
    send : function()
    {
        var prm = new Array();
        prm["uname"] = $("uname").value;
        prm["upass"] = $("upass").value;

        request.post("./login.php", prm, login.sendResult);
    },

    sendResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            return;
        }

        switch(xhr.responseText)
        {
            case "unknown" :
            {
                alert("Nesprávné přístupové jméno nebo heslo.");
                return;
            }

            case "blocked" :
            {
                alert("Váš účet je blokovaný, pokud si jej přejete odblokovat, prosím kontaktujte pracovníky EU Automobile.");
                return;
            }

            case "ok" :
            {
                window.location.reload();
            }
        }
    }
};

var visitors =
{
    lastFilter : new Array(),

    show : function()
    {
        this.lastFilter["firstName"] = "";
        this.lastFilter["lastName"] = "";
        this.lastFilter["email"] = "";
        this.lastFilter["phone"] = "";
        this.lastFilter["filtersCount"] = "";
        this.lastFilter["blocked"] = "";
        this.lastFilter["order"] = "";
        layer.showShade();
        request.post("./adminvisitorslist.php", null, visitors.drawForm);
    },

    add : function()
    {
        visitor.show();
    },

    filter : function()
    {
        var prm = new Array();
        prm["action"] = "filter";
        prm["firstName"] = trim($("visListFirstName").value);
        prm["lastName"] = trim($("visListLastName").value);
        prm["email"] = trim($("visListEmail").value);
        prm["phone"] = trim($("visListPhone").value);
        prm["filtersCount"] = trim($("visListFiltersCount").value);
        prm["blocked"] = trim($("visListBlocked").value);
        prm["order"] = trim($("visListOrder").value);

        if(this.lastFilter["firstName"] !== prm["firstName"] ||
           this.lastFilter["lastName"] !== prm["lastName"] ||
           this.lastFilter["email"] !== prm["email"] ||
           this.lastFilter["phone"] !== prm["phone"] ||
           this.lastFilter["filtersCount"] !== prm["filtersCount"] ||
           this.lastFilter["blocked"] !== prm["blocked"] ||
           this.lastFilter["order"] !== prm["order"])
        {
           this.lastFilter["firstName"] = prm["firstName"];
           this.lastFilter["lastName"] = prm["lastName"];
           this.lastFilter["email"] = prm["email"];
           this.lastFilter["phone"] = prm["phone"];
           this.lastFilter["filtersCount"] = prm["filtersCount"];
           this.lastFilter["blocked"] = prm["blocked"];
           this.lastFilter["order"] = prm["order"];
        }
        else
        {
            return;
        }

        request.post("./adminvisitorslist.php", prm, visitors.redraw);
    },

    drawForm : function(xhr)
    {
        if(xhr.responseText == "expired")
        {
            autologout.result("client");
            return false;
        }
        else
        {
            layer.showWork(xhr.responseText);

            var cnt = 0;

            for(var i = 0; i < $("visitorsListItems").childNodes.length; i++)
            {
                if($("visitorsListItems").childNodes[i].nodeType == 1)
                {
                    cnt++;
                }
            }

            $("currentVisitorsCount").innerHTML = cnt;

            return true;
        }
    },

    redraw : function(xhr)
    {
        if(xhr == null || (xhr.responseText != "" && !/^</.test(xhr.responseText)))
        {
            alert(message.adminError);
            return;
        }

        $("visitorsListItems").innerHTML = xhr.responseText;

        var cnt = 0;

        for(var i = 0; i < $("visitorsListItems").childNodes.length; i++)
        {
            if($("visitorsListItems").childNodes[i].nodeType == 1)
            {
                cnt++;
            }
        }

        $("currentVisitorsCount").innerHTML = cnt;
    },

    block : function(vid, blc)
    {
        var prm = new Array();
        prm["action"] = "block";
        prm["id"] = vid;
        prm["block"] = blc;
        request.post("./adminvisitorslist.php", prm, visitors.blockResult);
    },

    blockResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            return;
        }

        switch(xhr.responseText)
        {
            case "expired" :
            {
                autologout.result("client");
                return;
            }

            default :
            {
                var data = xhr.responseText.split(";");
                $("visitor" + data[0] + "Blocked").innerHTML = data[1] == "1" ? "ANO" : "NE";
                return;
            }
        }
    },

    hide : function()
    {
        layer.hideShade();
        layer.hideWork();
    }
};

var visitor =
{
    models : new Array(),

    show : function()
    {
        layer.showShade();
        request.post("./adminvisitor.php", null, visitor.drawForm);
    },

    drawForm : function(xhr)
    {
        if(!page.drawForm(xhr))
        {
            return;
        }

        var cmp = $("visModel");

        for(var i = 1; i < cmp.options.length; i++)
        {
            var opt = cmp.options[i];
            var pdc = opt.getAttribute("label");

            if(typeof visitor.models["#" + pdc] == "undefined")
            {
                visitor.models["#" + pdc] = new Array();
            }

            visitor.models["#" + pdc]["#" + opt.value] = opt.innerHTML;
        }

        visitor.getModels();
    },

    getModels : function()
    {
        var pdc = $("visProducer").value;
        var cmp = $("visModel");
        cmp.options[0].selected = true;

        for(var i = cmp.options.length - 1; i > 0; i--)
        {
            cmp.removeChild(cmp.options[i]);
        }

        if(pdc !== "" && typeof visitor.models["#" + pdc] != "undefined")
        {
            for(var mdl in visitor.models["#" + pdc])
            {
                var opt = document.createElement("OPTION");
                opt.value = mdl.replace(/^#/, "");
                opt.innerHTML = visitor.models["#" + pdc][mdl];
                cmp.insertBefore(opt, null);
            }
        }
    },

    check : function()
    {
        var firstName = $("visFirstName").value;
        var lastName = $("visLastName").value;
        var phone = $("visPhone").value;
        var email = $("visEmail").value;

        if(firstName == "")
        {
            alert("Vyplňte prosím jméno.");
            try{ $("visFirstName").focus(); } catch(e){};
            return;
        }

        if(lastName == "")
        {
            alert("Vyplňte prosím příjmení.");
            try{ $("visLastName").focus(); } catch(e){};
            return;
        }

        if(!check.phone($("visPhone")))
        {
            alert("Telefon není zadaný ve správném tvaru.");
            try{ $("visPhone").focus(); } catch(e){};
            return;
        }

        if(email == "")
        {
            alert("Vyplňte prosím e-mail (přístupové jméno).");
            try{ $("visEmail").focus(); } catch(e){};
            return;
        }

        if(!check.email($("visEmail")))
        {
            alert("E-mail (přístupové jméno) není zadaný ve správném tvaru.");
            try{ $("visEmail").focus(); } catch(e){};
            return;
        }

        visitor.disableForm(true);

        var prm = new Array();
        prm["action"] = "check";
        prm["email"] = email;

        request.post("./adminvisitor.php", prm, visitor.checkResult);
    },

    checkResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            visitor.disableForm(false);
            return;
        }

        switch(xhr.responseText)
        {
            case "unknown" :
            {
                alert("Zadaný e-mail neexistuje. Prosím překontrolujte ho, opravte a akci opakujte.");
                visitor.disableForm(false);
                try{ $("visEmail").focus(); } catch(e){};
                return;
            }

            case "exists" :
            {
                alert("Pod daným e-mailem je již v systému evidován návštěvník nebo uživatel.");
                visitor.disableForm(false);
                try{ $("visEmail").focus(); } catch(e){};
                return;
            }

            case "expired" :
            {
                autologout.result("client");
                return;
            }

            case "ok" :
            {
                visitor.save();
                return;
            }
        }
    },

    save : function()
    {
        var prm = new Array();
        prm["action"] = "save";
        prm["firstName"] = $("visFirstName").value;
        prm["lastName"] = $("visLastName").value;
        prm["email"] = $("visEmail").value;
        prm["phone"] = $("visPhone").value;

        var name = "";
        var producer = $("visProducer").value;
        var model = $("visModel").value;
        var yearFrom = $("visYearFrom").value;

        if(producer != "")
        {
            name = $("visProducer").options[$("visProducer").selectedIndex].innerHTML;

            if(model != "")
            {
                name += " " + $("visModel").options[$("visModel").selectedIndex].innerHTML;
            }
        }

        if(yearFrom != "")
        {
            if(name != "")
            {
                name += " - ";
            }

            name += "vozy od roku " + yearFrom;
        }

        if(name == "")
        {
            name = "všechny vozy";
        }

        $("visFilterName").value = name;

        prm["producer"] = producer;
        prm["model"] = model;
        prm["yearFrom"] = yearFrom;
        prm["filterName"] = name;

        request.post("./adminvisitor.php", prm, visitor.saveResult);
    },

    saveResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            visitor.disableForm(false);
            return;
        }

        switch(xhr.responseText)
        {
            case "unknown" :
            {
                alert("Zadaný e-mail neexistuje. Prosím překontrolujte ho, opravte a akci opakujte.");
                visitor.disableForm(false);
                try{ $("visEmail").focus(); } catch(e){};
                return;
            }

            case "exists" :
            {
                alert("Pod daným e-mailem je již v systému evidován návštěvník nebo uživatel.");
                visitor.disableForm(false);
                try{ $("visEmail").focus(); } catch(e){};
                return;
            }

            case "expired" :
            {
                autologout.result("client");
                return;
            }

            case "ok" :
            {
                alert("Návštěvník byl úspěšně přidán. Na jeho adresu byl odeslán informační e-mail s přihlašovacími údaji.");
                visitors.show();
                return;
            }
        }
    },

    disableForm : function(dis)
    {
        $("visFirstName").readOnly = dis;
        $("visLastName").readOnly = dis;
        $("visPhone").readOnly = dis;
        $("visEmail").readOnly = dis;
        $("visProducer").disabled = dis;
        $("visModel").disabled = dis;
        $("visYearFrom").disabled = dis;
        $("visSaveButton").disabled = dis;
    },

    hide : function()
    {
        layer.hideShade();
        layer.hideWork();
    }
};

var userFilters =
{
    show : function()
    {
        layer.showShade();
        request.post("./filterslist.php", null, page.drawForm);
    },

    use : function(prm)
    {
        userFilter.use(prm);
    },

    load : function(fid)
    {
        userFilter.load(fid);
    },

    remove : function(fid)
    {
        userFilter.remove(fid);
    },

    hide : function()
    {
        layer.hideShade();
        layer.hideWork();
    }
};

var userFilter =
{
    models : new Array(),

    show : function()
    {
        layer.showShade();
        request.post("./userfilter.php", null, page.drawForm);
    },

    use : function(prm)
    {
        var url = "./select.php?" + prm + (prm != "" ? "&" : "") + "page=1&itemsCount=10&order=price&orderDirection=desc";
        window.location.href = url;
    },

    load : function(fid)
    {
        var prm = new Array();
        prm["id"] = fid;
        layer.showShade();
        request.post("./userfilter.php", prm, userFilter.drawForm);
    },

    drawForm : function(xhr)
    {
        if(!page.drawForm(xhr))
        {
            return;
        }

        var cmp = $("filtModel");
        var mdl = "";

        for(var i = 0; i < cmp.options.length; i++)
        {
            if(cmp.options[i].selected)
            {
                mdl = cmp.options[i].value;
                break;
            }
        }

        for(var i = 1; i < cmp.options.length; i++)
        {
            var opt = cmp.options[i];
            var pdc = opt.getAttribute("label");

            if(typeof userFilter.models["#" + pdc] == "undefined")
            {
                userFilter.models["#" + pdc] = new Array();
            }

            userFilter.models["#" + pdc]["#" + opt.value] = opt.innerHTML;
        }

        userFilter.getModels();

        for(var i = 0; i < cmp.options.length; i++)
        {
            if(cmp.options[i].value == mdl)
            {
                cmp.options[i].selected = true;
            }
        }
    },

    getModels : function()
    {
        var pdc = $("filtProducer").value;
        var cmp = $("filtModel");
        cmp.options[0].selected = true;

        for(var i = cmp.options.length - 1; i > 0; i--)
        {
            cmp.removeChild(cmp.options[i]);
        }

        if(pdc !== "" && typeof userFilter.models["#" + pdc] != "undefined")
        {
            for(var mdl in userFilter.models["#" + pdc])
            {
                var opt = document.createElement("OPTION");
                opt.value = mdl.replace(/^#/, "");
                opt.innerHTML = userFilter.models["#" + pdc][mdl];
                cmp.insertBefore(opt, null);
            }
        }
    },

    save : function(fid)
    {
        var isActive = $("filtIsActive").checked;
        var producer = $("filtProducer").value;
        var model = $("filtModel").value;
        var yearFrom = $("filtYearFrom").value;
        var name = userFilter.setName();

        var prm = new Array();
        prm["id"] = fid;
        prm["action"] = "save";
        prm["name"] = name;
        prm["isActive"] = isActive ? 1 : 0;
        prm["producer"] = producer;
        prm["model"] = model;
        prm["yearFrom"] = yearFrom;

        request.post("./userfilter.php", prm, userFilter.saveResult);
    },

    saveResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            return;
        }

        switch(xhr.responseText)
        {
            case "expired" :
            {
                autologout.result("client");
                return;
            }

            case "ok" :
            {
                userFilters.show();
                return;
            }
        }
    },

    remove : function(fid)
    {
        if(confirm("Skutečně chcete tento filtr smazat?"))
        {
            var prm = new Array();
            prm["action"] = "remove";
            prm["id"] = fid;
            request.post("./userfilter.php", prm, userFilter.removeResult);
        }
    },

    removeResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            return;
        }

        switch(xhr.responseText)
        {
            case "expired" :
            {
                autologout.result("client");
                return;
            }

            case "ok" :
            {
                userFilters.show();
                return;
            }
        }
    },

    hide : function()
    {
        layer.hideWork();
        layer.hideShade();
    },

    setName : function()
    {
        var name = "";
        var producer = $("filtProducer").value;
        var model = $("filtModel").value;
        var yearFrom = $("filtYearFrom").value;

        if(producer != "")
        {
            name = $("filtProducer").options[$("filtProducer").selectedIndex].innerHTML;

            if(model != "")
            {
                name += " " + $("filtModel").options[$("filtModel").selectedIndex].innerHTML;
            }
        }

        if(yearFrom != "")
        {
            if(name != "")
            {
                name += " - ";
            }

            name += "vozy od roku " + yearFrom;
        }

        if(name == "")
        {
            name = "všechny vozy";
        }

        $("filtName").value = name;

        return name;
    }
};

var settings =
{
    show : function()
    {
        layer.showShade();
        request.post("./settings.php", null, page.drawForm);
    },

    hide : function()
    {
        layer.hideWork();
        layer.hideShade();
    },

    passwordChange : function(chb)
    {
        if(chb.checked)
        {
            $("setOldPassword").disabled = false;
            $("setOldPassword").className = "required";
            $("setNewPassword").disabled = false;
            $("setNewPassword").className = "required";
            $("setPasswordConfirm").disabled = false;
            $("setPasswordConfirm").className = "required";
        }
        else
        {
            $("setOldPassword").disabled = true;
            $("setOldPassword").className = "";
            $("setOldPassword").value = "";
            $("setNewPassword").disabled = true;
            $("setNewPassword").className = "";
            $("setNewPassword").value = "";
            $("setPasswordConfirm").disabled = true;
            $("setPasswordConfirm").className = "";
            $("setPasswordConfirm").value = "";
        }
    },

    check : function()
    {
        var firstName = $("setFirstName").value;
        var lastName = $("setLastName").value;
        var phone = $("setPhone").value;
        var passwordChange = $("setPasswordChange").checked;
        var oldPassword = $("setOldPassword").value;
        var newPassword = $("setNewPassword").value;
        var passwordConfirm = $("setPasswordConfirm").value;

        if(firstName == "")
        {
            alert("Vyplňte prosím jméno.");
            try{ $("setFirstName").focus(); } catch(e){};
            return;
        }

        if(lastName == "")
        {
            alert("Vyplňte prosím příjmení.");
            try{ $("setLastName").focus(); } catch(e){};
            return;
        }

        if(!check.phone($("setPhone")))
        {
            alert("Telefon není zadaný ve správném tvaru.");
            try{ $("setPhone").focus(); } catch(e){};
            return;
        }

        if(passwordChange)
        {
            if(oldPassword == "")
            {
                alert("Vyplňte prosím původní přístupové heslo.");
                try{ $("setOldPassword").focus(); } catch(e){};
                return;
            }

            if(newPassword == "")
            {
                alert("Vyplňte prosím nové přístupové heslo.");
                try{ $("setNewPassword").focus(); } catch(e){};
                return;
            }

            if(!check.password($("setNewPassword")))
            {
                alert("Nové přístupové heslo neodpovídá požadavkům z hlediska bezpečnosti.");
                try{ $("setNewPassword").focus(); } catch(e){};
                return;
            }

            if(newPassword != passwordConfirm)
            {
                alert("Nové přístupové heslo a potvrzení hesla se neshodují.");
                try{ $("setNewPassword").focus(); } catch(e){};
                return;
            }
        }

        settings.disableForm(true);

        if(passwordChange)
        {
            var prm = new Array();
            prm["action"] = "check";
            prm["oldPassword"] = oldPassword;

            request.post("./settings.php", prm, settings.checkResult);
        }
        else
        {
            settings.checkResult({responseText : "ok"});
        }
    },

    checkResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            settings.disableForm(false);
            return;
        }

        switch(xhr.responseText)
        {
            case "unknown" :
            {
                alert("Původní přístupové heslo není správné.");
                settings.disableForm(false);
                try{ $("setOldPassowrd").focus(); } catch(e){};
                return;
            }

            case "expired" :
            {
                autologout.result("client");
                return;
            }

            case "ok" :
            {
                settings.send();
            }
        }
    },

    send : function()
    {
        var prm = new Array();
        prm["action"] = "save";
        prm["firstName"] = $("setFirstName").value;
        prm["lastName"] = $("setLastName").value;
        prm["phone"] = $("setPhone").value;
        prm["oldPassword"] = $("setOldPassword").value;
        prm["newPassword"] = $("setNewPassword").value;

        request.post("./settings.php", prm, settings.sendingResult);
    },

    sendingResult : function(xhr)
    {
        if(!check.result(xhr, 65))
        {
            settings.disableForm(false);
            return;
        }

        switch(xhr.responseText)
        {
            case "unknown" :
            {
                alert("Původní přístupové heslo není správné.");
                settings.disableForm(false);
                try{ $("setOldPassowrd").focus(); } catch(e){};
                return;
            }

            default :
            {
                alert("Vaše nastavení bylo úspěšně změněno.");

                if($("userName"))
                {
                    $("userName").innerHTML = xhr.responseText;
                }

                settings.hide();
            }
        }
    },

    disableForm : function(dis)
    {
        $("setFirstName").readOnly = dis;
        $("setLastName").readOnly = dis;
        $("setPhone").readOnly = dis;
        $("setPasswordChange").disabled = dis;
        $("setOldPassword").readOnly = dis;
        $("setNewPassword").readOnly = dis;
        $("setPasswordConfirm").readOnly = dis;
        $("setSubmitButton").disabled = dis;
        $("setStornoButton").disabled = dis;
    }
};

var news =
{
    show : function()
    {
        layer.showShade();
        request.post("./adminnewslist.php", null, page.drawForm);
    },

    load : function(nid)
    {
        newsletter.load(nid);
    },

    remove : function(nid)
    {
        newsletter.remove(nid);
    },

    hide : function()
    {
        layer.hideWork();
        layer.hideShade();
    }
};

var newsletter =
{
    show : function()
    {
        layer.showShade();
        request.post("./adminnewsletter.php", null, page.drawForm);
    },

    load : function(nid)
    {
        var prm = new Array();
        prm["id"] = nid;
        layer.showShade();
        request.post("./adminnewsletter.php", prm, page.drawForm);
    },

    save : function(nid)
    {
        var priority = $("newPriority").value;
        var title = $("newTitle").value;
        var text = $("newText").value;
        var validFrom = $("newValidFrom").value;
        var validTo = $("newValidTo").value;

        if(title == "")
        {
            alert("Vyplňte prosím titulek.");
            try {$("newTitle").focus();}catch(e){};
            return;
        }

        if(text == "")
        {
            alert("Vyplňte prosím text.");
            try {$("newText").focus();}catch(e){};
            return;
        }

        if(validFrom == "")
        {
            alert("Vyplňte prosím datum platnosti \"od\".");
            try {$("newValidFrom").focus();}catch(e){};
            return;
        }

        if(!check.date($("newValidFrom")))
        {
            alert("Datum platnosti \"od\" není zadaný ve správném tvaru.");
            try {$("newValidFrom").focus();}catch(e){};
            return;
        }

        if(validTo != "" && !check.date($("newValidTo")))
        {
            alert("Datum platnosti \"do\" není zadaný ve správném tvaru.");
            try {$("newValidTo").focus();}catch(e){};
            return;
        }

        var prm = new Array();
        prm["id"] = nid;
        prm["action"] = "save";
        prm["priority"] = priority;
        prm["title"] = title;
        prm["text"] = text;
        prm["validFrom"] = validFrom;
        prm["validTo"] = validTo;

        var prop = imageManager.properties();

        prm["zoom"] = prop.z;
        prm["left"] = prop.l;
        prm["top"] = prop.t;
        prm["width"] = prop.w;
        prm["height"] = prop.h;
        prm["photo"] = $("imageAction").value;

        request.post("./adminnewsletter.php", prm, newsletter.saveResult);
    },

    saveResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            return;
        }

        switch(xhr.responseText)
        {
            case "expired" :
            {
                autologout.result("client");
                return;
            }

            case "ok" :
            {
                news.show();
                return;
            }
        }
    },

    remove : function(nid)
    {
        if(confirm("Skutečně chcete tuto novinku smazat?"))
        {
            var prm = new Array();
            prm["action"] = "remove";
            prm["id"] = nid;
            request.post("./adminnewsletter.php", prm, newsletter.removeResult);
        }
    },

    removeResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            return;
        }

        switch(xhr.responseText)
        {
            case "expired" :
            {
                autologout.result("client");
                return;
            }

            case "ok" :
            {
                news.show();
                return;
            }
        }
    },

    hide : function()
    {
        layer.hideWork();
        layer.hideShade();
    }
};

var imageManager =
{
    im : null,
    ow : null,
    oh : null,
    ix : null,
    iy : null,
    sx : null,
    sy : null,
    zm : 1,
    pressed : null,
    to : null,

    properties : function()
    {
        var i = $("newImage").getElementsByTagName("IMG");
        var s = {w: 0, h: 0, l: 0, t: 0, z: 0};

        if(i.length == 1)
        {
            i = i[0];

            if(imageManager.ow === null)
            {
                imageManager.ow = i.offsetWidth - 1000;
                imageManager.oh = i.offsetHeight - 1000;
            }

            s.w = imageManager.ow;
            s.h = imageManager.oh;
            s.l = i.style.left.replace(/px/, "") * 1 + 500;
            s.t = i.style.top.replace(/px/, "") * 1 + 500;
            s.z = imageManager.zm;
        }

        return s;
    },

    drag : function(i, e)
    {
        e = e ? e : window.event;
        imageManager.im = i;
        imageManager.ix = i.style.left.replace(/px/, "") * 1;
        imageManager.iy = i.style.top.replace(/px/, "") * 1;
        imageManager.sx = e.clientX;
        imageManager.sy = e.clientY;

        if(imageManager.ow === null)
        {
            imageManager.ow = imageManager.im.offsetWidth - 1000;
            imageManager.oh = imageManager.im.offsetHeight - 1000;
        }
    },

    drop : function()
    {
        imageManager.im = null;
    },

    move : function(e)
    {
        if(imageManager.im != null)
        {
            e = e ? e : window.event;
            imageManager.im.style.left = (imageManager.ix - imageManager.sx + e.clientX) + "px";
            imageManager.im.style.top = (imageManager.iy - imageManager.sy + e.clientY) + "px";
        }
    },

    stopRepeat : function()
    {
        imageManager.pressed = null;
        window.clearTimeout(imageManager.to);
        imageManager.to = null;
    },

    zoom : function(dir)
    {
        var i = $("newImage").getElementsByTagName("IMG");

        if(i.length == 1)
        {
            i = i[0];

            if(imageManager.ow === null)
            {
                imageManager.ow = i.offsetWidth - 1000;
                imageManager.oh = i.offsetHeight - 1000;
            }

            var zm = imageManager.zm * 1 + 2 * dir * (((imageManager.ow * imageManager.zm) / 100) / imageManager.ow);

            if(zm < 0.01)
            {
                zm = 0.01;
            }

            if(zm > 1)
            {
                zm = 1;
            }

            imageManager.zm = zm;
            i.style.width = Math.round(zm * imageManager.ow) + "px";
            i.style.height = Math.round(zm * imageManager.oh) + "px";

            if(imageManager.pressed != null)
            {
                if(imageManager.to == null)
                {
                    imageManager.to = window.setTimeout("imageManager.zoom(" + dir + ");", 500);
                }
                else
                {
                    imageManager.to = window.setTimeout("imageManager.zoom(" + dir + ");", 50);
                }
            }
            else
            {
                imageManager.stopRepeat();
            }
        }
    },

    load : function()
    {
        imageManager.ow = null;
        imageManager.oh = null;
        imageManager.zm = 1;
        $("newImage").innerHTML = "<img onmousedown=\"if(event.preventDefault) event.preventDefault();imageManager.drag(this,event)\" style=\"left:-500px;top:-500px;border:500px solid red;position:absolute;\" src=\"adminloadimage.php?t=" + new Date().getTime() + "\"/>";
    },

    submit : function(inp)
    {
        var acc = inp.getAttribute("accept");

        if(acc != "")
        {
            var ext = inp.value.replace(/^.+\./g, "").toLowerCase();
            var reg = new RegExp("#" + ext + "#", "i");

            if(!reg.test(acc))
            {
                alert("Soubor musí mít jednu z následujících přípon: " + acc.replace(/^#|#$/g, "").replace(/#/g, ", ") + ".");
                return;
            }
        }

        inp.form.submit();
    },

    imageAction : function(sel)
    {
        switch(sel.value)
        {
            case "r" :
            {
                $("newImage").style.visibility = "hidden";
                $("imageFile").style.visibility = "hidden";

                if($("imageControls") != null)
                {
                    $("imageControls").style.visibility = "hidden";
                }

                break;
            }
            case "c" :
            {
                $("newImage").style.visibility = "visible";
                $("imageFile").style.visibility = "visible";

                if($("imageControls") != null)
                {
                    $("imageControls").style.visibility = "visible";
                }

                break;
            }
            default :
            {
                $("newImage").style.visibility = "hidden";
                $("imageFile").style.visibility = "hidden";

                if($("imageControls") != null)
                {
                    $("imageControls").style.visibility = "hidden";
                }

                break;
            }
        }
    }
};

var logout =
{
    send : function()
    {
        if(confirm("Skutečně se chcete odhlásit?"))
        {
            request.post("./logout.php", null, logout.sendResult);
        }
    },

    sendResult : function(xhr)
    {
        if(!check.result(xhr))
        {
            return;
        }

        window.location.reload();
    }
};

var vehicles =
{
    exportVehicle : function(vid)
    {
        if(typeof vid == "undefined")
        {
            vid = "garage";
        }

        window.location = "./export.php?id=" + vid;
    },

    printVehicle : function()
    {
        var inp = document.getElementsByTagName("INPUT");
        var ids = "";

        for(var i = 0; i < inp.length; i++)
        {
            if(/^ev[0-9]{6}$/.test(inp[i].id + "") && inp[i].checked)
            {
                if(ids != "")
                {
                    ids += ",";
                }

                ids += inp[i].id.replace(/^ev/, "");
            }
        }

        if(ids == "")
        {
            alert("Zašrtněte vůz nebo vozy, které chcete exportovat do PDF.");
            return;
        }

        window.location = "./printdetail.php?id=" + ids;
    }
};

if(/\?registration=confirm&email=.+@.+\..+&token=[0-9a-f]+$/.test(window.location.href))
{
    request.post("./confirmregistration.php", window.location.href.replace(/^.+confirm&/, ""), registration.notify);
}

if(/\?registration=block&email=.+@.+\..+&token=[0-9a-f]+$/.test(window.location.href))
{
    request.post("./blockregistration.php", window.location.href.replace(/^.+block&/, ""), registration.notify);
}

document.onclick = function()
{
    autologout.reset();
}

document.onmousemove = function()
{
    autologout.reset();
}

document.onkeydown = function()
{
    autologout.reset();
}

window.onresize = function ()
{
    if($("shadeLayer") && $("shadeLayer").style.display != "none")
    {
        window.setTimeout("layer.showShade();", 10);
    }

    if($("workLayer") && $("workLayer").style.display != "none")
    {
        window.setTimeout("layer.showWork(null, true);", 10);
    }

    if(typeof gallery != "undefined" && $("photoGalleryImage").style.display != "none")
    {
        window.setTimeout("gallery.show(true);", 10);
    }
}
