// Lösche alle Optionen des im Parameter opt angegeben Select
function delOptions(item)
{
    var len = item.length;

    for(i=0; i<len; i++)
    {
        item.options[item.length - 1] = null;
    }
}


// Setze Option auf empty (löschen und <--- einfügen)
function setEmpty(item)
{
    delOptions(item);
    item.disabled = true;
    item.options[item.length] = new Option('<----', 'empty');
}


// Leere und aktiviere Select
function enableOpt(item)
{
    delOptions(item);
    item.disabled = false;
}


// Filter-Funktion
function filter(item)
{
    // Formular-Konstante
    var form = document.positionForm;

    // Optionen leeren und disablen
    switch(item.id)
    {
        case 'innenausbauten':
            setEmpty(form.vorbehandlung);
        case 'holzart':
            setEmpty(form.farbgebung);
        case 'vorbehandlung':
            setEmpty(form.beschichtung);
        case 'farbgebung':
            setEmpty(form.bauteil);
        case 'beschichtung':
            setEmpty(form.seiten);
        case 'bauteil':
            setEmpty(form.strukturklassen);
        case 'seiten':
        case 'strukturklassen':
            break;
    }

    // Nachfolgende Option konfigurieren
    switch(item.id)
    {
        case 'innenausbauten':
            if(item.value == 0)
                setEmpty(form.holzart);
            else
                enableOpt(form.holzart);
            break;
        case 'holzart':
            if(item.value == 0)
                setEmpty(form.vorbehandlung);
            else
                enableOpt(form.vorbehandlung);
            break;
        case 'vorbehandlung':
            if(item.value == 0)
                setEmpty(form.farbgebung);
            else
                enableOpt(form.farbgebung);
            break;
        case 'farbgebung':
            if(item.value == 0)
                setEmpty(form.beschichtung);
            else
                enableOpt(form.beschichtung);
            break;
        case 'beschichtung':
            if(item.value == 0)
                setEmpty(form.bauteil);
            else
                enableOpt(form.bauteil);
            break;
        case 'bauteil':
            if(item.value == 0)
                setEmpty(form.seiten);
            else
                enableOpt(form.seiten);
            break;
        case 'seiten':
            if(item.value == 0)
                setEmpty(form.strukturklassen);
            else
                enableOpt(form.strukturklassen);
            break;
        case 'strukturklassen':
            break;
    }

    // Optionen auffüllen
    fillOpt(item);
}

// Fülle Dropdowns
function fillOpt(item)
{
    // Formular-Konstante
    var form = document.positionForm;

    // Dropdowns auffüllen
    switch(item.id)
    {
        case 'innenausbauten':
            // Holzart auffüllen
            form.holzart.options[form.holzart.length] = new Option(choose_text, '0');
            for(i=0;i<fHolzart.length;i++)
            {
                var filt = fHolzart[i].split(',');
                for(j=0;j<filt.length;j++)
                {
                    if(filt[j] == item.value)
                        form.holzart.options[form.holzart.length] = new Option(aHolzart[i], i+1);
                }
            }
            break;

        case 'holzart':
            // Vorbehandlung auffüllen
            form.vorbehandlung.options[form.vorbehandlung.length] = new Option(choose_text, '0');
            for(i=0;i<fVorbehandlung.length;i++)
            {
                var filt = fVorbehandlung[i].split(',');
                for(j=0;j<filt.length;j++)
                {
                    if(filt[j] == item.value)
                        form.vorbehandlung.options[form.vorbehandlung.length] = new Option(aVorbehandlung[i], i+1);
                }
            }
            break;

        case 'vorbehandlung':
            // Farbgebung auffüllen
            form.farbgebung.options[form.farbgebung.length] = new Option(choose_text, '0');
            for(i=0;i<fFarbgebung.length;i++)
            {
                var filt = fFarbgebung[i].split(',');
                for(j=0;j<filt.length;j++)
                {
                    if(filt[j] == item.value)
                        form.farbgebung.options[form.farbgebung.length] = new Option(aFarbgebung[i], i+1);
                }
            }
            break;

        case 'farbgebung':
            // Beschichtung auffüllen
            form.beschichtung.options[form.beschichtung.length] = new Option(choose_text, '0');
            for(i=0;i<fBeschichtung.length;i++)
            {
                var filt = fBeschichtung[i].split(',');
                for(j=0;j<filt.length;j++)
                {
                    if(filt[j] == item.value)
                        form.beschichtung.options[form.beschichtung.length] = new Option(aBeschichtung[i], i+1);
                }
            }
            break;

        case 'beschichtung':
            // Bauteil auffüllen
//          form.bauteil.options[form.bauteil.length] = new Option(choose_text, '0');
//          for(i=0;i<fBauteil.length;i++)
//          {
//              var filt = fBauteil[i].split(',');
//              for(j=0;j<filt.length;j++)
//              {
//                  if(filt[j] == item.value)
//                      form.bauteil.options[form.bauteil.length] = new Option(aBauteil[i], i+1);
//              }
//          }
//          break;
            // Bauteilfilter muss auf Innenausbauten umgeleitet werden.
            form.bauteil.options[form.bauteil.length] = new Option(choose_text, '0');
            for(i=0;i<fBauteil.length;i++)
            {
                var filt = fBauteil[i].split(',');
                for(j=0;j<filt.length;j++)
                {
                    if(filt[j] == form.innenausbauten.value)
                        form.bauteil.options[form.bauteil.length] = new Option(aBauteil[i], i+1);
                }
            }
            break;

        case 'bauteil':
            // Seiten auffüllen
            form.seiten.options[form.seiten.length] = new Option(choose_text, '0');
            for(i=0;i<fSeiten.length;i++)
            {
                var filt = fSeiten[i].split(',');
                for(j=0;j<filt.length;j++)
                {
                    if(filt[j] == item.value)
                        form.seiten.options[form.seiten.length] = new Option(aSeiten[i], i+1);
                }
            }
            break;

        case 'seiten':
            // Strukturklassen auffüllen
            form.strukturklassen.options[form.strukturklassen.length] = new Option(choose_text, '0');
            for(i=0;i<fStrukturklassen.length;i++)
            {
                var filt = fStrukturklassen[i].split(',');
                for(j=0;j<filt.length;j++)
                {
                    if(filt[j] == item.value)
                        form.strukturklassen.options[form.strukturklassen.length] = new Option(aStrukturklassen[i], i+1);
                }
            }
            break;

        case 'strukturklassen':
            break;
    }
}


// Alles löschen und Oberfläche neu beginnen
function clearAll()
{
    // Formular-Konstante
    var form = document.positionForm;

    // Clear Innenausbauten
    form.innenausbauten.selectedIndex = 0;

    // Set Empty
    setEmpty(form.holzart);
    setEmpty(form.vorbehandlung);
    setEmpty(form.farbgebung);
    setEmpty(form.beschichtung);
    setEmpty(form.bauteil);
    setEmpty(form.seiten);
    setEmpty(form.strukturklassen);

    // Clear Input-Values
    form.laenge.value = "";
    form.breite.value = "";
    form.dicke.value  = "";
    form.anzahl.value = "";
    calc();

    // Set Button-Text
    form.save_button.value = button_save_name;
}


// Initialisierung der Dropdowns und Eingabefelder
function init()
{
    // Formular-Konstante
    var form = document.getElementById('positionForm');

    // Clear Innenausbauten
    delOptions(form.innenausbauten);

    // Fill Innenausbauten
    form.innenausbauten.options[form.innenausbauten.length] = new Option(choose_text, '0');
    for (var count in aInnenausbauten)
    {
        form.innenausbauten.options[form.innenausbauten.length] = new Option(aInnenausbauten[count], parseInt(count)+1);
    }

    // Set Empty
    setEmpty(form.holzart);
    setEmpty(form.vorbehandlung);
    setEmpty(form.farbgebung);
    setEmpty(form.beschichtung);
    setEmpty(form.bauteil);
    setEmpty(form.seiten);
    setEmpty(form.strukturklassen);

    // TODO Parameter mitgeliefert überarbeiten
    // Wenn Parameter mitgeliefert werden
    if((dDd != null) && (dDd.length != 0))
    {
        if(dDd[0] != '0')
        {   // Innenausbauten selektieren und Filter ausführen
            // Herausfinden welche Option aktiviert werden muss.
            for(i=0;i<form.innenausbauten.length;i++)
            {
                if(form.innenausbauten.options[i].value == dDd[0])
                {
                    form.innenausbauten.options[i].selected = true;
                }
            }

            filter(form.innenausbauten);    // Filter ausführen
        }
        if(dDd[1] != '0')
        {   // Holzart selektieren und Filter ausführen
            // Herausfinden welche Option aktiviert werden muss.
            for(i=0;i<form.holzart.length;i++)
            {
                if(form.holzart.options[i].value == dDd[1])
                {
                    form.holzart.options[i].selected = true;
                }
            }

            filter(form.holzart);
        }
        if(dDd[2] != '0')
        {   // Vorbehandlung selektieren und Filter ausführen
            // Herausfinden welche Option aktiviert werden muss.
            for(i=0;i<form.vorbehandlung.length;i++)
            {
                if(form.vorbehandlung.options[i].value == dDd[2])
                {
                    form.vorbehandlung.options[i].selected = true;
                }
            }

            filter(form.vorbehandlung);
        }
        if(dDd[3] != '0')
        {   // Farbgebung selektieren und Filter ausführen
            // Herausfinden welche Option aktiviert werden muss.
            for(i=0;i<form.farbgebung.length;i++)
            {
                if(form.farbgebung.options[i].value == dDd[3])
                {
                    form.farbgebung.options[i].selected = true;
                }
            }

            filter(form.farbgebung);
        }
        if(dDd[4] != '0')
        {   // Beschichtung selektieren und Filter ausführen
            // Herausfinden welche Option aktiviert werden muss.
            for(i=0;i<form.beschichtung.length;i++)
            {
                if(form.beschichtung.options[i].value == dDd[4])
                {
                    form.beschichtung.options[i].selected = true;
                }
            }

            filter(form.beschichtung);
        }
        if(dDd[5] != '0')
        {   // Bauteil selektieren und Filter ausführen
            // Herausfinden welche Option aktiviert werden muss.
            for(i=0;i<form.bauteil.length;i++)
            {
                if(form.bauteil.options[i].value == dDd[5])
                {
                    form.bauteil.options[i].selected = true;
                }
            }

            filter(form.bauteil);
        }
        if(dDd[6] != '0')
        {   // Seiten selektieren und Filter ausführen
            // Herausfinden welche Option aktiviert werden muss.
            for(i=0;i<form.seiten.length;i++)
            {
                if(form.seiten.options[i].value == dDd[6])
                {
                    form.seiten.options[i].selected = true;
                }
            }

            filter(form.seiten);
        }
        if(dDd[7] != '0')
        {   // Strukturklasse selektieren und Filter ausführen
            // Herausfinden welche Option aktiviert werden muss.
            for(i=0;i<form.strukturklassen.length;i++)
            {
                if(form.strukturklassen.options[i].value == dDd[7])
                {
                    form.strukturklassen.options[i].selected = true;
                }
            }

            //filter(form.strukturklassen);
        }
    }

    // Initialisierung der Eingabefelder wenn Parameter mitgeliefert werden.
    if((dIn != null) && (dIn.length != 0))
    {
        if(dIn[0] != "leer")
            form.laenge.value = dIn[0];
        if(dIn[1] != "leer")
            form.breite.value = dIn[1];
        if(dIn[2] != "leer")
            form.dicke.value  = dIn[2];
        if(dIn[3] != "leer")
            form.anzahl.value = dIn[3];
        calc();
    }
}


// Berechnungsfunktion für das Ausmass
function calc()
{
    // Formular-Konstante
    var form = document.positionForm;
	var m2eff = document.getElementById('m2eff');
	var m2vshb = document.getElementById('m2vshb');
	
	var laenge = document.getElementById('laenge');
	var breite = document.getElementById('breite');
	var dicke = document.getElementById('dicke');

	if(m2eff != null && m2vshb != null
	   && laenge != null && breite != null && dicke != null)
	{
		// Auswerten, ob das ganze ein Float ist und nicht leere Felder enthält dann berechne oder gib NaN aus.
	    if((laenge.value != "") && (breite.value != "") && (dicke.value != "") && !isNaN(laenge.value) && !isNaN(breite.value) && !isNaN(dicke.value))
	    {
	        m2eff.value  = (laenge.value * breite.value * dicke.value);
	        m2vshb.value = (laenge.value * breite.value * dicke.value * 2); // *2 ist die "Formel" für VSHB die aus Config gelesen werden sollte.
	    }
	    else
	    {
	        m2eff.value  = "NaN";
	        m2vshb.value = "NaN";
	    }
	}
    
}

// Adresseingaben löschen
// Brauchst du nicht mehr, wird über reset() gemacht, D.Bohni
function clearAddress()
{
    // Formular-Konstante
    var form = document.kontaktformular
    
    // Eingaben löschen
    form.firma.value = "";
    form.name.value = "";
    form.prename.value = "";
    form.address.value = "";
    form.additional.value = "";
    form.zip.value = "";
    form.city.value = "";
    form.mail.value = "";
    form.phone.value = "";
    form.fax.value = "";
    form.comment.value = "";
}


function showStrukturklassenInfo()
{
 	var elem = document.getElementById('strukturklassenInfo');
 	if(elem.style.display == '' || elem.style.display == 'none')
 	{
 		elem.style.display = 'block';
 	}else{
 		elem.style.display = 'none';
 	}
}

function submitPosition(data)
{
    if(!data)
    {
        return false;
    }
    else
    {
        document.getElementById('positionForm').submit();
    }
}

function submitFinaloverview()
{
    document.getElementById('finaloverview_edit_offer_button').disabled = true;
    document.getElementById('finaloverview_edit_address_button').disabled = true;
    document.getElementById('finaloverview_generate_offer_button').disabled = true;
}