$(document).ready(function()
{
    $('.numeric').keyup(function () {
        this.value = this.value.replace(/,/, '.'); 
        this.value = this.value.replace(/[^0-9\.]/, '');
    });
    
    function displayTarget(target) {
        $('#' + target).parent('td').parent('tr').fadeIn('fast');
    };
    function hideTarget(target) {
        $('#' + target).parent('td').parent('tr').fadeOut('fast');
    };
    
    function updateRechtsform(elem) {
        hideTarget('anfrage_buero_eigenkapital');
        if(elem.val() == 'Kapitalgesellschaft') {
          displayTarget('anfrage_buero_eigenkapital');
          hideTarget('anfrage_buero_kosten_unternehmerlohn');
          displayTarget('anfrage_buero_kosten_geschaeftsfuehrer');
        }
        else if(elem.val() == 'Personengesellschaft' || elem.val() == 'Einzelunternehmen')  {
          displayTarget('anfrage_buero_kosten_unternehmerlohn');
          hideTarget('anfrage_buero_kosten_geschaeftsfuehrer');
        }        
        else {
          hideTarget('anfrage_buero_kosten_unternehmerlohn');
          hideTarget('anfrage_buero_kosten_geschaeftsfuehrer');
        }
    };
    
    updateRechtsform($('select#anfrage_buero_rechtsform'));
    $('select#anfrage_buero_rechtsform').change(function() {
        updateRechtsform($('select#anfrage_buero_rechtsform'));
    });

    function updateFachgebiet(elem) {
        if($('#' + elem).val() == '20') {
            $('#fach_sonst').fadeIn('fast');
        }
    };
    function executeUpdateFachgebiet() {
        $('select[ id ^= "anfrage_buero_fachgebiet"]').each(function() {
            updateFachgebiet(this.id);
        });
    }
    executeUpdateFachgebiet();
    $('select[ id ^= "anfrage_buero_fachgebiet"]').change(function() {
        updateFachgebiet(this.id);
    });

    $.fn.sumValues = function() {
        var sum = 0; 
        this.each(function() {
            if(!this.id.match(/gesamt/)) {
                if ( $(this).is(':input') ) {
                    var val = $(this).val();
                } 
                sum += parseFloat( ('0' + val).replace(/[^0-9-\.]/g, ''), 10 );
            }
        });
        return sum;
    };
    
    function updateKosten(elem) {
        if(elem.attr('id') != 'gesamtkosten') {
            $('#gesamtkosten').val($("table#kosten :input").sumValues().toFixed(2));
        }    
    }
    updateKosten($("table#kosten :input"));
    $("table#kosten :input").bind("keyup", function(e){
        updateKosten($("table#kosten :input"));
    }); 
    
    function enableElements(tagname) {
        $('table#arbeitszeiten :input').each(function() {
            if (this.id.match(tagname)) {
                jQuery(this).removeAttr('disabled');
            }
        });    
    }

    function updateZeiten(elem) {
        var sum = 0;
        var days = 260;
        var hours = 0;
        if($('#' + elem).attr('id').match(/_arbeitszeit_.*_anzahl$/)) {
            if(parseInt($('#anfrage_buero_arbeitszeit_gefue_anzahl').val())) {
                sum += parseFloat(0 + $('#anfrage_buero_arbeitszeit_gefue_anzahl').val());
                enableElements('_gefue_');
            }
            if(parseInt($('#anfrage_buero_arbeitszeit_mitarb_projekt_anzahl').val())) {
                sum += parseFloat(0 + $('#anfrage_buero_arbeitszeit_mitarb_projekt_anzahl').val());
                enableElements('_mitarb_projekt_');
            }
            if(parseInt($('#anfrage_buero_arbeitszeit_mitarb_verwaltung_anzahl').val())) {
                sum += parseFloat(0 + $('#anfrage_buero_arbeitszeit_mitarb_verwaltung_anzahl').val());
                enableElements('_mitarb_verwaltung_');
            }
            $('#gesamtpersonal').val(sum.toFixed(0));
        }       
        else if($('#' + elem).attr('id').match(/_arbeitszeit_gefue_.*/)) {
            days -= $("table#arbeitszeiten :input").filter(function() {return this.id.match(/_arbeitszeit_gefue_.*tage$/);}).sumValues();
            $('#gesamt_gefue_anwesenheitstage').val(days);
             
            if(parseFloat($('#gesamt_gefue_anwesenheitstage').val()))
                $('#gesamt_gefue_anwesenheitstd').val((parseFloat(0 + $('#gesamt_gefue_anwesenheitstage').val()) * parseFloat(0 + $('#anfrage_buero_arbeitszeit_gefue_arbeitsstunden').val())).toFixed(2)); 
                           
            if(hours = parseFloat($('#gesamt_gefue_anwesenheitstd').val())) {
                hours -= (parseFloat(0 + $('#anfrage_buero_arbeitszeit_gefue_nicht_projektstunden').val()) + parseFloat(0 + $('#anfrage_buero_arbeitszeit_gefue_weiterbildung').val()));
                $('#gesamt_gefue_projektstunden').val(hours);
            }                
        }
        else if($('#' + elem).attr('id').match(/_arbeitszeit_mitarb_projekt_.*/)) {
            days -= $("table#arbeitszeiten :input").filter(function() {return this.id.match(/_arbeitszeit_mitarb_projekt_.*tage$/);}).sumValues();
            $('#gesamt_maproj_anwesenheitstage').val(days);
            
            if(parseFloat($('#gesamt_maproj_anwesenheitstage').val()))
                $('#gesamt_maproj_anwesenheitstd').val((parseFloat(0 + $('#gesamt_maproj_anwesenheitstage').val()) * parseFloat(0 + $('#anfrage_buero_arbeitszeit_mitarb_projekt_arbeitsstunden').val())).toFixed(2));
            
            if(hours = parseFloat($('#gesamt_maproj_anwesenheitstd').val())) {
                hours -= (parseFloat(0 + $('#anfrage_buero_arbeitszeit_mitarb_projekt_nicht_projektstunden').val()) + parseFloat(0 + $('#anfrage_buero_arbeitszeit_mitarb_projekt_weiterbildung').val()));
                $('#gesamt_maproj_projektstunden').val(hours);
            }            
        }
        else if($('#' + elem).attr('id').match(/_arbeitszeit_mitarb_verwaltung_.*/)) {
            days -= $("table#arbeitszeiten :input").filter(function() {return this.id.match(/_arbeitszeit_mitarb_verwaltung_.*tage$/);}).sumValues();
            $('#gesamt_maver_anwesenheitstage').val(days); 

            if(parseFloat($('#gesamt_maver_anwesenheitstage').val()))
                $('#gesamt_maver_anwesenheitstd').val((parseFloat(0 + $('#gesamt_maver_anwesenheitstage').val()) * parseFloat(0 + $('#anfrage_buero_arbeitszeit_mitarb_verwaltung_arbeitsstunden').val())).toFixed(2));

            if(hours = parseFloat($('#gesamt_maver_anwesenheitstd').val())) {
                hours -= (parseFloat(0 + $('#anfrage_buero_arbeitszeit_mitarb_verwaltung_nicht_projektstunden').val()) + parseFloat(0 + $('#anfrage_buero_arbeitszeit_mitarb_verwaltung_weiterbildung').val()));
                $('#gesamt_maver_projektstunden').val(hours);
            }
        }
    };
    function executeUpdateZeiten() {
        $("table#arbeitszeiten :input").each(function() {
            updateZeiten(this.id);
        });
    }    
    executeUpdateZeiten();
    $("table#arbeitszeiten :input").bind("keyup", function(){
        updateZeiten(this.id);
    });
    
    function updateHeaderColor(elem) {
        $('.header').each(function() {
            $(this).css('background-color', '');
        });
        elem.css('background-color', '#F4F4F4');
    }

    $('.header').each(function() { 
        $(this).bind("click", function() {
            updateHeaderColor($(this));
            $(this).parent('tr').parent('tbody').find('#contenttable').each(function() {
                if($(this).css('display') == 'none') {
                    $('.contenttable').each(function() {
                        $(this).fadeOut('slow');
                    });                                    
                    $(this).fadeIn('slow');
                }
            });
        });
    });
    
    $('.next').each(function() { 
        $(this).bind("click", function() {
            var next = false;
            $(document).find('#contenttable').each(function() {
                if(next == true) {
                    $(this).fadeIn('slow');
                    next = false;
                    updateHeaderColor($(this).parent('td').parent('tr').parent('tbody').find('#header'));
                }else if($(this).css('display') != 'none') {
                    $(this).fadeOut('slow');
                    next = true;
                }
            });    
        });
    });
    
    /* projektbogen */
    
    function updateProjektbogenAuswertung(elem) {
        $('.umbauten').each(function() {
            $(this).fadeOut('fast');
        });      
        $('.bebauung').each(function() {
            $(this).fadeOut('fast');
        });
        $('#aho_projektbogen_anrechenbare_kosten_typ').val('&euro;');
        $('#anrechenbare_kosten_typ').html('&euro;');
        if(elem.val() == 'Bebauungsplan') {      
            $('.bebauung').each(function() {
                $(this).fadeIn('fast');
                $('#aho_projektbogen_anrechenbare_kosten_typ').val('ha');
                $('#anrechenbare_kosten_typ').html('ha');
            });
        } else if(elem.val() == 'Umbau') {      
            $('.umbauten').each(function() {
                $(this).fadeIn('fast');
            });
        }
    };
    updateProjektbogenAuswertung($('select#aho_projektbogen_auswertungsobjekt'));
    $('select#aho_projektbogen_auswertungsobjekt').change(function() {
        updateProjektbogenAuswertung($('select#aho_projektbogen_auswertungsobjekt'));
    });

    function updateProjektbogenObjekt(elem) {
        if(elem.val() && (elem.val().match(/56\.1/) || elem.val().match(/56\.2/) || elem.val().match(/43\.1/) || elem.val().match(/47\.1/))) {
            $('.ingvl').each(function() {
             $(this).fadeIn('fast');
            });
        }
        else {
            $('.ingvl').each(function() {
             $(this).fadeOut('fast');
            });        
        }
    };
    updateProjektbogenObjekt($('select#aho_projektbogen_objektbereich'));
    $('select#aho_projektbogen_objektbereich').change(function() {
        updateProjektbogenObjekt($('select#aho_projektbogen_objektbereich'));
    });
        
    function updateHOAI(elem) {
        $('select#aho_projektbogen_objektbereich').empty();
        if (elem.val()) {
            $('select#aho_projektbogen_objektbereich').load(
            '/projektbogen/ajaxupdate',
            { year: elem.val()}
            );
            $('select#aho_projektbogen_objektbereich').parent('div').fadeIn('fast');
        }
    };    
    $('select#aho_projektbogen_HOAI').change(function() {
        updateHOAI($('select#aho_projektbogen_HOAI'));
    });   
    
    function startupHOAI() {
        if ($('select#aho_projektbogen_HOAI').val()) {
          $('select#aho_projektbogen_objektbereich').parent('div').fadeIn('fast');
        }
    };
    startupHOAI();

    $('.np').each(function() { 
        $(this).bind("click", function() {
            $('#ahoform').submit();
        });
    });
});

