
var config = {
    ajax : '/server.php',     // cesta k obsluznemu skriptu
    strany : [ 'katalog', 'objednavka', 'souhrn' ],
    predchozi_strana : 0,
    vyrobci : new Array(),              // filtr seznam vyrobcu
    typ_naplne : 'toner',               // aktualni vyber typu naplne
    odkaz_vlozit : 'Přidat',            // text pro odkaz vlozit do kosiku
    odkaz_pridano : 'Přidáno'           // text pro info o úspěšném vložení do košíku
};

function formular_init(pocatecni_vyber) {
    config.typ_naplne = pocatecni_vyber;
    
    stahni('inktoner', 'inktoner', pocatecni_vyber);
    stahni('vyrobce',  'vyrobci');
    
    filtruj();
    
    //stahni('naplne',   'naplne');
    vkosiku();
}

function stahni(id, co, parametry) {
    new Ajax.Request(config.ajax, {
            method:'get',
            parameters: {'prines': co, 'parametry': parametry},
            onSuccess: function (transport) {
                $(id).innerHTML = transport.responseText;
            },
            onFailure: function(){alert('Nekde je chyba (inktoner)...')}
        }
    );
}

function filtr_naplne(typ) {
    typy = $('typ_' + typ);
    if (typy.checked) {
        config.typ_naplne = typy.value;
    }
    
    filtruj();
}

function filtr_vyrobci(vyrobce, checked) {
    // aktualizace seznamu vybranych vyrobcu
    if (checked) {
        config.vyrobci.push(vyrobce);
    }
    else {
        config.vyrobci.splice(config.vyrobci.indexOf(vyrobce), 1);
    }

    filtruj();
}

function filtruj() {
    necojinyho = $('items');
    // aplikovani filtru
    if (necojinyho.hasChildNodes()) {
        radky = necojinyho.childNodes;
        //alert(radky.length);
        i = 1;
        for (t = 1; t < radky.length; t++) {
            if (i %  2) {
                sudylichy = 'item';
            }
            else {
                sudylichy = 'item par';
            }
            radek = $(radky[t].id);
            radek.className = sudylichy;
            podle_typu = $('typ_' + radky[t].id);
            if (config.vyrobci.length) {
                podle_vyrobce = $('vyrobce_' + radky[t].id);
                if (config.vyrobci.indexOf(podle_vyrobce.value) >= 0 && podle_typu.value == config.typ_naplne) {
                    radek.style.display = 'block';
                    i++;
                }
                else {
                    radek.style.display = 'none';
                }
            }
            else {
                // zadny vyrobce, vybiram podle typu
                if (podle_typu.value == config.typ_naplne) {
                    radek.style.display = 'block';
                    i++;
                }
                else {
                    radek.style.display = 'none';
                }
            }
        }
    }
}

/**
 * Přidá do košíku další položku
 */
function dokosiku(id, mnozstvi) {
    //alert(id + ' - ' + mnozstvi.value);
    if (mnozstvi.value == 0) {
        return 0;
    }
    
    new Ajax.Request(config.ajax, {
            method:'get',
            parameters: {'kosik': 'do', 'idnapln' : id, 'mnozstvi' : mnozstvi.value},
            onSuccess: function (transport) {
                $('kosik').innerHTML = transport.responseText;
                $('odkaz_dokosiku_id_napln_' + id).innerHTML = config.odkaz_pridano;
                $('mnozstvi_id_napln_' + id).value = '0';
            },
            onFailure: function(){alert('Nekde je chyba (kosik - do)...')}
        }
    );

    return 0;
}

/**
 * Změní text odkazu podle změny v počtu množství
 */
function dokosiku_zmena_odkazu(nova_hodnota, id) {
    o = $(id);
    if (nova_hodnota > 0) {
        if (o.innerHTML == config.odkaz_pridano) {
            o.innerHTML = config.odkaz_vlozit;
        }
    }
}

/**
 * Zobrazi obsah kosiku
 */
function vkosiku() {
    new Ajax.Request(config.ajax, {
            method:'get',
            parameters: {'kosik': 'zobrazit'},
            onSuccess: function (transport) {
                $('kosik').innerHTML = transport.responseText;
            },
            onFailure: function(){alert('Nekde je chyba (kosik - do)...')}
        }
    );
}

/**
 * Odstrani z kosiku polozku
 */
function zkosiku(ind) {
    new Ajax.Request(config.ajax, {
            method:'get',
            parameters: {'kosik': 'z', 'index' : ind},
            onSuccess: function (transport) {
                $('kosik').innerHTML = transport.responseText;
            },
            onFailure: function(){alert('Nekde je chyba (kosik - do)...')}
        }
    );
}

function ukosiku() {
    new Ajax.Request(config.ajax, {
            method:'get',
            parameters: $('form_kosik').serialize(true),
            onSuccess: function (transport) {
                $('kosik').innerHTML = transport.responseText;
            },
            onFailure: function(){alert('Nekde je chyba (kosik - do)...')}
        }
    );
}

function krok(strana) {
    zadny_postup = false;
    old_strana = strana;
    old_predchozi_strana = config.predchozi_strana;
    strana = config.predchozi_strana + strana;
    strana_t = config.strany[strana];
    predchozi_strana = config.strany[config.predchozi_strana];
    
    if (predchozi_strana == 'objednavka') {
        vys = formular_ulozit();
        if (strana <= config.predchozi_strana) {
            zadny_postup = false;
        }
        else if (vys == 0) {
            zadny_postup = false;
        }
        else {
            alert('Některé údaje nebyly vyplněny!');
            zadny_postup = true;
        }

    }

    if (zadny_postup == false) {
        vpred = $('krok_dalsi');
        vzad  = $('krok_zpet');
        
        if (strana== 2) {
            vpred.style.visibility = 'hidden';
        }
        if (strana == 1) {
            vpred.style.visibility = 'visible';
            vzad.style.visibility = 'visible';
        }
        if (strana == 0) {
            vzad.style.visibility = 'hidden';
        }

        for (t = 0; t < config.strany.length; t++) {
            s = $(config.strany[t]);
            if (t == strana) {
                s.style.display = 'block';
            }
            else {
                s.style.display = 'none';
            }
        }

        

        if (predchozi_strana != 'objednavka' && strana_t == 'objednavka') {
            formular_vyplnit();
        }

        if (strana_t == 'souhrn' && predchozi_strana != 'objednavka') {
            // aktualizace souhrnu
            souhrn();
        }

        // aktualizace kroku css
        k = $('navigace');
        kroky = k.childNodes;
        for (i=0; i<kroky.length; i++) {
            if (kroky[i].id == 'postup_' + strana_t) {
                kroky[i].className = 'postup actual';
            }
            else {
                if (kroky[i].id != 'postup_ignore') {
                    kroky[i].className = 'postup';
                }
            }
        }

        config.predchozi_strana = strana;
    }
}

function aktivace_dodaci(anone) {
    aktivace_elementu(anone, [ 'd_jmeno', 'd_prijmeni', 'd_ulice', 'd_mesto', 'd_psc' ]);
}

function aktivace_ppl(anone) {
    aktivace_elementu(!anone, [ 'osoba', 'telefon', 'pocet_baliku', 'zdo', 'zod' ]);
}

function aktivace_elementu(anone, inputy) {
    f = $('form_objednavka');
    fins = f.elements;
    for (t=0; t<fins.length; t++) {
        if (inputy.indexOf(fins[t].name) >= 0) {
            if (anone) {
                fins[t].disabled = true;
            }
            else {
                fins[t].disabled = false;
            }
        }
    }
}

function formular_ulozit() {
    // kontrola formulare
    neuplne = false;
    // zakladni informace
    nutno = [ 'jmeno', 'prijmeni', 'ulice', 'mesto', 'psc', 'email' ];
    // je-li zaskrtnuto "jina dodaci adresa"
    if ($('stejna_adresa').checked == false) {
        nutno.push('d_jmeno', 'd_prijmeni', 'd_ulice', 'd_mesto', 'd_psc');
    }
    // je-li zaskrtnuto "ppl"
    if ($('odeslani_ppl').checked == true) {
        nutno.push('osoba', 'telefon', 'zod', 'zdo');
    }
    
    fins = $('form_objednavka').elements;
    for (t = 0; t < fins.length; t++) {
        if (nutno.indexOf(fins[t].name) >= 0) {
            if (fins[t].value == '') {
                fins[t].style.borderColor = 'red';
                //alert(fins[t].name);
                neuplne = true;
            }
        }
    }
    // provedu ulozeni formulare
    new Ajax.Request(config.ajax, {
            method:'post',
            parameters: $('form_objednavka').serialize(true),
            onSuccess: function (transport) {
                // aktualizace souhrnu
                souhrn();
                //div = document.getElementById('');
                //div.innerHTML = transport.responseText;
            },
            onFailure: function(){alert('Nekde je chyba (krok)...')}
        }
    );

    if (neuplne) {
        return 1;
    }
    else  {
        return 0;
    }
}

function formular_vyplnit() {
    new Ajax.Request(config.ajax, {
            method:'get',
            parameters: {'obj': 'vyplnit'},
            onSuccess: function (transport) {
                json = transport.responseText.evalJSON();
                fins = $('form_objednavka').elements;
                for (t=0; t<fins.length; t++) {
                    if (json.hasOwnProperty(fins[t].name)) {
                        for (prop in json) {
                            if (prop == fins[t].name && fins[t].name != 'odeslani') {
                                fins[t].value = json[prop];
                                break;
                            }
                        }
                    }
                }

                if (json.hasOwnProperty('odeslani')) {
                    pd = $('odeslani_posta');
                    pp = $('odeslani_ppl');

                    if (json.odeslani == 'posta') {
                        pd.checked = true;
                        pp.checked = false;
                    }
                    else {
                        pd.checked = false;
                        pp.checked = true;
                    }
                }
            },
            onFailure: function(){alert('Nekde je chyba (kosik - do)...')}
        }
    );
}

function souhrn() {
    new Ajax.Request(config.ajax, {
            method:'get',
            parameters: {'obj' : 'zobrazit'},
            onSuccess: function (transport) {
                // aktualizace souhrnu
                $('souhrn').innerHTML = transport.responseText;
            },
            onFailure: function(){alert('Nekde je chyba (krok)...')}
        }
    );
}



