
//
// funkcje wyjkorzystywane w konfiguratorze zestawów komputerowych
//
//

l = Array();
li = Array();
lc = Array();
num_k = 0;

function ex(a, e)
{
    var i = 0;
    for (i = 0; i < a.length; i++)
        if (a[i] == e)
            return true;
    return false;
}

function idx(s, id)
{
    var i = 0;
    for (i = 0; i < o[s].length; i++)
        if (o[s][i].i == id)
            return i;
    return -1;
}

function upd_cb(eid)
{
    var e = document.fk.elements[l[eid]];
    var t;
    var cb;
    t = e.options[e.selectedIndex].value;
    if (t == "")
        t = -1;
    else
        t = idx(eid, t);
    if (t == -1)
        cb = "";
    else
    {
        cb = o[eid][t].cb;
        if (g[eid].j == 'T')
            n = 1;
        else
            n = parseInt(document.fk.elements[li[eid]].value);
        cb = n * cb;
        cb = Math.round(cb);
    }
    document.fk.elements[lc[eid]].value = cb;
}

function checkchanged(s, t)
{
    var i = 0;
    var j = 0;
    var t2;
    var e;
    var we = Array();
    var ow = Array();
    for (i = 0; i <= s; i++)
    {
        e = document.fk.elements[l[i]];
        t2 = e.options[e.selectedIndex].value;
        if (t2 != "")
        {
            t2 = idx(i, t2);
            we = we.concat(o[i][t2].we);
            ow = ow.concat(o[i][t2].w);
        }
    }
    i = s + 1;
    while (i < l.length)
    {
        if (g[i].d == s || g[i].z == 'T')
        {
            e = document.fk.elements[l[i]];
            is = e.selectedIndex;            
            x = e.options[is].value;
            if (x == "")
                x = -1;
            else
                x = idx(i, x);
            nx = x;
            if (t == -1)
                nx = -1;
            else
            {
                if (x >= 0)
                    switch (g[i].z)
                    {
                    case '0':
                        break;
                    case 'TW':
                        if (!ex(o[s][t].w, o[i][x].t))
                           nx = -1; 
                        break; 
                    case 'WT':
                        if (!ex(o[i][x].w, o[s][t].t))
                           nx = -1;  
                        break;
                    case 'T':
                        if (!ex(ow, o[i][x].t))
                           nx = -1; 
                        break;    
                    }
            }
            if (t == -1)
            {
                var opt = new Option();
                if (naviName != "Netscape")
                    opt.index = 0;
                opt.text = g[i].f;
                opt.value = "";
                opt.selected = true;
                e.options[0] = opt;
                e.length = 1;
            }
            else
            {
                var opt = new Option();
                if (naviName != "Netscape")
                    opt.index = 0;
                opt.text = g[i].s;
                opt.value = "";
                opt.selected = (nx == -1);                   
                e.options[0] = opt;
                n = 1;
                if (ex(we, g[i].k))
                {
                   var opt = new Option();
                   if (naviName != "Netscape")
                       opt.index = 1;
                   opt.text = g[i].b;
                   opt.value = "";
                   if (nx == -1)
                   {
                       opt.selected = true;
                       e.options[0].selected = false;
                   }
                   else
                       opt.selected = false;
                   e.options[1] = opt;
                   n = 2;
                }
                for (j = 0; j < o[i].length; j++)
                {
                    add = true;
                    switch (g[i].z)
                    {
                    case '0':
                        break;
                    case 'TW':
                        if (!ex(o[s][t].w, o[i][j].t))
                            add = false; 
                        break;
                    case 'WT':
                        if (!ex(o[i][j].w, o[s][t].t))
                            add = false;
                        break;
                    case 'T':
                        if (!ex(ow, o[i][j].t))
                            add = false; 
                        break;
                    }
                    if (add)
                    {
                        opt = new Option();
                        if (naviName != "Netscape")
                            opt.index = n;
                        opt.text = o[i][j].n;
                        opt.value = o[i][j].i;
                        opt.selected = (j == nx);
                        e.options[n++] = opt;
                    }
                }
                e.length = n;                        
            }
            if (x != nx)             
                checkchanged(i, nx);
        }
        e = document.fk.elements[l[i]];
        t2 = e.options[e.selectedIndex].value;
        if (t2 != "")
        {
            t2 = idx(i, t2);
            we = we.concat(o[i][t2].we);
            ow = ow.concat(o[i][t2].w);
        }
        i = i + 1;
    }
    upd_cb(s);
}

function upd_ct()
{
    var e;
    var t;
    var cb;
    var ct = 0.0;
    var i;
    
    for (i = 0; i < l.length; i++)
    {
       e = document.fk.elements[l[i]];
       t = e.options[e.selectedIndex].value;
       if (t == "")
           t = -1;
       else
           t = idx(i, t);
       if (t == -1)
           cb = "";
       else
       {
           cb = o[i][t].cb;
           if (g[i].j == 'T')
               n = 1;
           else
               n = parseInt(document.fk.elements[li[i]].value);
           cb = n * cb;
           cb = Math.round(cb);
           ct += cb;
       }
    }
    document.fk.tc.value = ct;
}


function changed(elem)
{
    nel = document.fk.elements.length;
    n = l.length;

    k = parseInt(elem.name.substring(1));
    var e = document.fk.elements[l[k]];
    t = e.options[e.selectedIndex].value;
    if (t == "")
        t = -1;
    else
        t = idx(k, t);
    checkchanged(k, t);
    upd_cb(k);
    upd_ct();
}


function changedsz(idx)
{
    upd_cb(idx);
    upd_ct();
}

function info(id)
{
    var e = document.fk.elements[l[id]];
    var t;
    t = e.options[e.selectedIndex].value;
    if (t == "")
        t = -1;
    if (t != -1)
    {
        FSmallWinS("/produkt_info.php?id=" + t, "info_p", 400, 300);
    }
}

kfSubmitted = false;

function CheckSet()
{
    if (kfSubmitted == true)
        return false;
    for (i = 0; i < l.length; i++)
        if (g[i].wym == 'T')
            if (document.fk.elements[l[i]].selectedIndex == 0)
            {
                alert("Pozycje pogrubione są wymagane");
                return false;
            }
    for (i = 0; i < document.fk.length; i++)
    {
        var tempobj = document.fk.elements[i];
        if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset")
            tempobj.disabled = true;
    }
    kfSubmitted = true;
    return true;
}

function init(ivs, ics)
{
    NaviDetect();
    nel = document.fk.elements.length;
    var i, j;
    var k;
    for (i = 0; i < nel; i++)
    {
        var e = document.fk.elements[i];
        var type = e.type.toLowerCase();
        if (e.name.substring(0, 1) == "s" && type.indexOf("select", 0) == 0)
        {
            k = parseInt(e.name.substring(1));
            l[k] = i;
        }
        if (e.name.substring(0, 1) == "i")
        {
            k = parseInt(e.name.substring(1));
            li[k] = i;
        }
        if (e.name.substring(0, 1) == "c")
        {
            k = parseInt(e.name.substring(1));
            lc[k] = i;
        }
    }
    num_k = l.length;
    for (i = 0; i < nel; i++)
    {
        var e = document.fk.elements[i];
        if (e.name.substring(0, 1) == "s")
        {
            k = parseInt(e.name.substring(1));            
            if (g[k].d == -1)
            {
                var opt = new Option();
                if (naviName != "Netscape")
                    opt.index = 0;
                opt.text = g[k].s;
                opt.value = "";
                opt.selected = true;
                e.options[0] = opt;
                for (j = 0; j < o[k].length; j++)
                {
                    opt = new Option();
                    if (naviName != "Netscape")
                        opt.index = j + 1;
                    opt.text = o[k][j].n;
                    opt.value = o[k][j].i;
                    opt.selected = false;
                    e.options[j + 1] = opt;
                }
                e.length = o[k].length + 1;
            }
            else
            {
                var opt = new Option();
                if (naviName != "Netscape")
                    opt.index = 0;
                opt.text = g[k].f;
                opt.value = "";
                opt.selected = true;
                e.options[0] = opt;
                e.length = 1;
            }
        }
    }
    if (ivs != "")
    {
        iva = ivs.split(",");
        ica = ics.split(",");
        for (i = 0; i < l.length; i++)
        {
            var e = document.fk.elements[l[i]];
            var t = -1;
            for (j = 0; j < e.length; j++)
                if (e.options[j].value != "" && ex(iva, e.options[j].value))
                {
                    t = e.options[j].value;
                    for (k = 0; k < e.length; k++)
                        e.options[k].selected = false;
                    e.options[j].selected = true;
                    for (k = 0; k < iva.length; k++)
                        if (iva[k] == t)
                        {
                            iva[k] = "";
                            document.fk.elements[li[i]].value = ica[k];
                            break;
                        }
                    break;
                }
            if (t != -1 && t != "")
                t = idx(i, t);
            if (t != -1 && t != "")
                checkchanged(i, t);
            
        }
        upd_ct()
    }
}


