// steckbrief_lebensraum_neu.cpp: Implementierungsdatei
//

#include "stdafx.h"
#include "Ecopay.h"
#include "steckbrief_lebensraum_neu.h"
#include <sstream> 
#include <list>
#include <time.h>

// steckbrief_lebensraum_neu-Dialogfeld

IMPLEMENT_DYNAMIC(steckbrief_lebensraum_neu, CDialog)

steckbrief_lebensraum_neu::steckbrief_lebensraum_neu(CWnd* pParent /*=NULL*/)
: CDialog(steckbrief_lebensraum_neu::IDD, pParent)
, m_nummer(_T(""))
, m_name(_T(""))
, m_name_latein(_T(""))
, m_person(_T("Geben Sie bitte Ihren Namen ein!"))
, m_brush(RGB(255,255,240))
{
#ifndef _WIN32_WCE
    EnableActiveAccessibility();
#endif

    daten = new datenbank();
    nart = new art();
    gruen_schwach = new gruenland();
    gruen_stark = new gruenland();

}

steckbrief_lebensraum_neu::~steckbrief_lebensraum_neu()
{
    delete daten;
    delete nart;
    delete gruen_schwach;
    delete gruen_stark;
}

void steckbrief_lebensraum_neu::DoDataExchange( CDataExchange* pDX)
{
	CDialog::DoDataExchange( pDX);
	DDX_Text( pDX, IDC_Nummer, m_nummer);
	DDX_Text( pDX, IDC_name, m_name);
	DDX_Text( pDX, IDC_lnamelatein, m_name_latein);
	DDX_Text( pDX, IDC_Person, m_person);

	DDX_Control( pDX, IDC_LISTstarkmassnahmen, m_liste_gmassnahme_stark);
	DDX_Control( pDX, IDC_LISTschwachmassnahmen, m_liste_gmassnahme_schwach);
	DDX_Control( pDX, IDC_Massnahmenart, m_massnahmenart);
	DDX_Control( pDX, IDC_Massnahmenstart, m_massnahmenstart);
	DDX_Control( pDX, IDC_Massnahmenabstand2, m_massnahmenabstand);
	DDX_Control( pDX, IDC_MassnahmenGV, m_massnahmeGV);
	DDX_Control( pDX, IDC_Combo_Art, m_massnahmetierart);
	DDX_Control( pDX, IDC_Duengungja, m_d_ja);
	DDX_Control( pDX, IDC_Duengungnein, m_d_nein);
	DDX_Control( pDX, IDC_stark, m_stark);
	DDX_Control( pDX, IDC_schwach, m_schwach);

	DDX_Control( pDX, IDC_trocken, m_trocken);
	DDX_Control( pDX, IDC_frisch, m_frisch);
	DDX_Control( pDX, IDC_feucht, m_feucht);
	DDX_Control(pDX, IDC_Massnahmenabstand3, massnahmenabstand3);
	DDX_Control(pDX, IDC_ListeStarkerase, button_erase_stark);
	DDX_Control(pDX, IDC_ListeSchwacherase, button_erase_schwach);
}

BEGIN_MESSAGE_MAP(steckbrief_lebensraum_neu, CDialog)
ON_BN_CLICKED(IDCANCEL, &steckbrief_lebensraum_neu::OnBnClickedCancel)
ON_EN_KILLFOCUS(IDC_Nummer, &steckbrief_lebensraum_neu::OnEnKillfocusNummer)
ON_EN_KILLFOCUS(IDC_name, &steckbrief_lebensraum_neu::OnEnKillfocusname)
ON_EN_KILLFOCUS(IDC_lnamelatein, &steckbrief_lebensraum_neu::OnEnKillfocuslnamelatein)
ON_EN_KILLFOCUS(IDC_Person, &steckbrief_lebensraum_neu::OnEnKillfocusPerson)
ON_BN_CLICKED(IDOK, &steckbrief_lebensraum_neu::OnBnClickedOk)
ON_WM_SIZE()
ON_WM_VSCROLL()
ON_LBN_SELCHANGE(IDC_LISTschwachmassnahmen, &steckbrief_lebensraum_neu::OnLbnSelchangeListschwachmassnahmen)
ON_CBN_SELCHANGE(IDC_Massnahmenart, &steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmenart)
ON_CBN_SELCHANGE(IDC_Massnahmenstart, &steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmenstart)
ON_CBN_SELCHANGE(IDC_Massnahmenabstand2, &steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmenabstand)
ON_CBN_SELCHANGE(IDC_MassnahmenGV, &steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmengv)
ON_CBN_SELCHANGE(IDC_Combo_Art, &steckbrief_lebensraum_neu::OnCbnSelchangeComboArt)
ON_BN_CLICKED(IDC_Duengungja, &steckbrief_lebensraum_neu::OnBnClickedDuengungja)
ON_BN_CLICKED(IDC_Duengungnein, &steckbrief_lebensraum_neu::OnBnClickedDuengungnein)
ON_BN_CLICKED(IDC_stark, &steckbrief_lebensraum_neu::OnBnClickedstark)
ON_BN_CLICKED(IDC_schwach, &steckbrief_lebensraum_neu::OnBnClickedschwach)

ON_WM_CTLCOLOR()

ON_BN_CLICKED(IDC_Hoch, &steckbrief_lebensraum_neu::OnBnClickedHoch)
ON_BN_CLICKED(IDC_Tief, &steckbrief_lebensraum_neu::OnBnClickedTief)
ON_BN_CLICKED(IDC_Egal, &steckbrief_lebensraum_neu::OnBnClickedEgal)
//ON_LBN_DBLCLK(IDC_LISTstarkmassnahmen, &steckbrief_lebensraum_neu::OnLbnDblclkListstarkmassnahmen)
//ON_LBN_DBLCLK(IDC_LISTschwachmassnahmen, &steckbrief_lebensraum_neu::OnLbnDblclkListschwachmassnahmen)
ON_BN_CLICKED(IDC_Datenbearbeiten, &steckbrief_lebensraum_neu::OnBnClickedDatenbearbeiten)
ON_BN_CLICKED(IDC_Datena, &steckbrief_lebensraum_neu::OnBnClickedDatena)
ON_CBN_SELCHANGE(IDC_Massnahmenabstand3, &steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmenabstand3)
ON_BN_CLICKED(IDC_ListeStarkerase, &steckbrief_lebensraum_neu::OnBnClickedListestarkerase)
ON_BN_CLICKED(IDC_ListeSchwacherase, &steckbrief_lebensraum_neu::OnBnClickedListeschwacherase)
END_MESSAGE_MAP()

BOOL steckbrief_lebensraum_neu::OnInitDialog()
{
    CDialog::OnInitDialog();

    getdata();

    GetWindowRect(m_rect);
    m_nScrollPos = 0;

    return TRUE;
}
void steckbrief_lebensraum_neu::getdata()
{
    vector< CString> namen, namenlatein;
    vector< CString>::iterator i;
    vector< string>::iterator k;
    int massnahmenanzahl, j;
    string result;
    string monatsv;

    char ma[ 100];
    int mv;

    vector < string > mnamenliste;
    mnamenliste = daten->returnmassnahmenname();
    for( k = mnamenliste.begin(); k != mnamenliste.end(); k++)
    {
        lstrcpy( ma, (*k).c_str());
        m_massnahmenart.AddString( ma);
    }

}
BOOL steckbrief_lebensraum_neu::PreTranslateMessage( MSG* pMsg)
{
    // TODO: Add your specialized code here and/or call the base class
    if( pMsg->message == WM_KEYDOWN)
    {
        if( pMsg->wParam == VK_RETURN)
            pMsg->wParam = VK_TAB;
    }
    return CDialog::PreTranslateMessage( pMsg);

}

// steckbrief_lebensraum_neu-Meldungshandler

void steckbrief_lebensraum_neu::OnEnKillfocusNummer()
{

    CString nr;

    GetDlgItem( IDC_Nummer)->GetWindowText( nr);
    nart->set_Lebensraumnr( atoi( nr));
    (*gruen_schwach).nummer = atoi( nr);
    (*gruen_stark).nummer = atoi( nr);

}

void steckbrief_lebensraum_neu::OnEnKillfocusname()
{

    CString Name;

    GetDlgItem( IDC_name)->GetWindowText( Name);

    nart->set_m_name( Name);
    (*gruen_schwach).name_deutsch = Name;
    (*gruen_stark).name_deutsch = Name;
}

void steckbrief_lebensraum_neu::OnEnKillfocuslnamelatein()
{

    CString Latein_name;

    GetDlgItem( IDC_lnamelatein)->GetWindowText( Latein_name);
    nart->set_m_name_latein( Latein_name);
    (*gruen_schwach).name_latein = Latein_name;
    (*gruen_stark).name_latein = Latein_name;
}

void steckbrief_lebensraum_neu::OnEnKillfocusPerson()
{

    CString Person_name;

    GetDlgItem( IDC_Person)->GetWindowText( Person_name);

    nart->set_person_name( Person_name);
}

void steckbrief_lebensraum_neu::OnBnClickedOk()
{
    // Load the variables and check them one more time before saving them to the database (needed for allready loaded data which changed)
    UINT check;

    CString feucht;
    double f;
    m_feucht.GetWindowTextA( feucht);
    LPCTSTR csNumbers = _T( ")(0123456789.-");
    CString csTest = feucht;
    if( !csTest.Trim( csNumbers).IsEmpty())
    {
        AfxMessageBox(
                "Sie müssen für die Feuchtestufen bitte eine Zahl eingeben!",
                MB_OK, 0);
    } else
    {

        f = atof( feucht);

        if( f > 1)
        {
            AfxMessageBox( "Die Feuchte kann nicht >1 sein!"
                    "\n\n Bitte überarbeiten Sie Ihre Eingabe!", MB_OK, 0);

        } else
        {
            nart->set_feuchte_feucht( f);
            (*gruen_schwach).feucht = f;
            (*gruen_stark).feucht = f;
        }
    }

    CString frisch;
    double fr;
    m_frisch.GetWindowTextA( frisch);
    csTest = frisch;
    if( !csTest.Trim( csNumbers).IsEmpty())
    {
        AfxMessageBox(
                "Sie müssen für die Feuchtestufen bitte eine Zahl eingeben!",
                MB_OK, 0);
    } else
    {

        fr = atof( frisch);

        if( fr > 1)
        {
            AfxMessageBox( "Die Feuchte kann nicht >1 sein!"
                    "\n\n Bitte überarbeiten Sie Ihre Eingabe!", MB_OK, 0);

        } else
        {
            nart->set_feuchte_frisch( fr);
            (*gruen_schwach).frisch = fr;
            (*gruen_stark).frisch = fr;
        }
    }

    CString trocken;
    double t;
    m_trocken.GetWindowTextA( trocken);
    csTest = trocken;
    if( !csTest.Trim( csNumbers).IsEmpty())
    {
        AfxMessageBox(
                "Sie müssen für die Feuchtestufen bitte eine Zahl eingeben!",
                MB_OK, 0);
    } else
    {

        t = atof( trocken);

        if( t > 1)
        {
            AfxMessageBox( "Die Feuchte kann nicht >1 sein!"
                    "\n\n Bitte überarbeiten Sie Ihre Eingabe!", MB_OK, 0);

        } else
        {
            nart->set_feuchte_trocken( t);
            (*gruen_schwach).trocken = t;
            (*gruen_stark).trocken = t;
        }
    }

    CString nr;
    GetDlgItem( IDC_Nummer)->GetWindowText( nr);
    if( nr = "")
    {
        nart->set_Lebensraumnr( 0);
        (*gruen_schwach).nummer = 0;
        (*gruen_stark).nummer = 0;
    }

    else
    {
        csTest = nr;
        if( !csTest.Trim( csNumbers).IsEmpty())
        {
            AfxMessageBox(
                    "Sie müssen für die Feuchtestufen bitte eine Zahl eingeben!",
                    MB_OK, 0);
        } else
        {
            nart->set_Lebensraumnr( atoi( nr));
            (*gruen_schwach).nummer = atoi( nr);
            (*gruen_stark).nummer = atoi( nr);
        }
    }

    CString Name;
    GetDlgItem( IDC_name)->GetWindowText( Name);
    nart->set_m_name( Name);
    if( Name == "")
    {
        AfxMessageBox( "Geben Sie bitte den Namen des Lebensraumtypes ein!"
                "\n\n Bitte überarbeiten Sie Ihre Eingabe!", MB_OK, 0);
        GetDlgItem( IDC_name)->SetFocus();
        return;
    }

    (*gruen_schwach).name_deutsch = Name;
    (*gruen_stark).name_deutsch = Name;

    CString Latein_name;
    GetDlgItem( IDC_lnamelatein)->GetWindowText( Latein_name);
    nart->set_m_name_latein( Latein_name);
    (*gruen_schwach).name_latein = Latein_name;
    (*gruen_stark).name_latein = Latein_name;

    int Response;

    //Validierung der Daten
    CString Nr;
    //GetDlgItem(IDC_Person)->GetWindowText(Person_name);

    CString Person_name;
    GetDlgItem( IDC_Person)->GetWindowText( Person_name);

    if( (Person_name == "Geben Sie bitte Ihren Namen ein!")
            || (Person_name == ""))
    {
        AfxMessageBox( "Geben Sie bitte Ihren Namen ein!"
                "\n\n Bitte überarbeiten Sie Ihre Eingabe!", MB_OK, 0);
        GetDlgItem( IDC_Person)->SetFocus();
        return;
    } else
    {
        nart->set_person_name( Person_name);
        (*gruen_schwach).name_benutzer = Person_name;
        (*gruen_stark).name_benutzer = Person_name;
    }

    if( (mliste_schwach.size() == 0) && (mliste_stark.size() == 0))
    {
        AfxMessageBox( "Bitte wählen Sie Maßnahmen aus!"
                "\n\n Bitte überarbeiten Sie Ihre Eingabe!", MB_OK, 0);
        return;
    }

    //Übertragen der Daten in die Datenbank
    Response =
            MessageBox(
                    "Bitte überprüfen Sie noch einmal Ihre Eingabe."
                            "\n\nWenn Sie OK klicken, wird der Steckbrief in die Datenbank übernommen."
                            "\n\nWenn Sie die Daten noch einmal überarbeiten wollen,"
                            " klicken Sie bitte auf 'Cancel'.",
                    "Eingabe überprüfen", MB_OKCANCEL | MB_ICONASTERISK);

    if( Response == IDOK)
    {

        int lebensraumID;
        nart->set_gruppe( "Lebensraum");
        lebensraumID = daten->saveart( (*nart));
        vector< massnahme>::iterator it;

        if( mliste_schwach.size() > 0)
        {
            gruen_schwach->mager = true;
            gruen_schwach->normal = false;
            gruen_schwach->lebensraumID = lebensraumID;
            int ID = daten->save_gruenland( *gruen_schwach);
            for( it = mliste_schwach.begin(); it != mliste_schwach.end(); it++)
            {
                daten->save_mas_gr( (*it).massnahmeID, ID);
            }
        }
        if( mliste_stark.size() > 0)
        {
            gruen_stark->mager = false;
            gruen_stark->normal = true;
            gruen_stark->lebensraumID = lebensraumID;
            int ID = daten->save_gruenland( *gruen_stark);
            for( it = mliste_stark.begin(); it != mliste_stark.end(); it++)
            {
                daten->save_mas_gr( (*it).massnahmeID, ID);
            }
        }

        //MessageBox("ich komme doch bis hier!");

        OnOK();

    } else
    {

        SetFocus();

    }
}

void steckbrief_lebensraum_neu::OnBnClickedCancel()
{


    OnCancel();
}

void steckbrief_lebensraum_neu::OnSize( UINT nType, int cx, int cy)
{
    CDialog::OnSize( nType, cx, cy);

    // TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein.
    m_nCurHeight = cy;
    int nScrollMax;
    if( cy < m_rect.Height())
    {
        nScrollMax = m_rect.Height() - cy;
    } else
        nScrollMax = 0;

    SCROLLINFO si;
    si.cbSize = sizeof(SCROLLINFO);
    si.fMask = SIF_ALL; // SIF_ALL = SIF_PAGE | SIF_RANGE | SIF_POS;
    si.nMin = 0;
    si.nMax = nScrollMax;
    si.nPage = si.nMax / 10;
    si.nPos = 0;
    SetScrollInfo( SB_VERT, &si, TRUE);
}

void steckbrief_lebensraum_neu::OnVScroll(
        UINT nSBCode,
        UINT nPos,
        CScrollBar* pScrollBar)
{
    // TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard.
    int nDelta;
    int nMaxPos = m_rect.Height() - m_nCurHeight;

    switch( nSBCode)
    {
        case SB_LINEDOWN:
            if( m_nScrollPos >= nMaxPos)
                return;
            nDelta = min( nMaxPos / 100, nMaxPos - m_nScrollPos);
            break;

        case SB_LINEUP:
            if( m_nScrollPos <= 0)
                return;
            nDelta = -min( nMaxPos / 100, m_nScrollPos);
            break;

        case SB_PAGEDOWN:
            if( m_nScrollPos >= nMaxPos)
                return;
            nDelta = min( nMaxPos / 10, nMaxPos - m_nScrollPos);
            break;

        case SB_THUMBPOSITION:
            nDelta = (int) nPos - m_nScrollPos;
            break;

        case SB_PAGEUP:
            if( m_nScrollPos <= 0)
                return;
            nDelta = -min( nMaxPos / 10, m_nScrollPos);
            break;

        default:
            return;
    }
    m_nScrollPos += nDelta;
    SetScrollPos( SB_VERT, m_nScrollPos, TRUE);
    ScrollWindow( 0, -nDelta);
    CDialog::OnVScroll( nSBCode, nPos, pScrollBar);

}

void steckbrief_lebensraum_neu::OnLbnSelchangeListschwachmassnahmen()
{
    // TODO: Add your control notification handler code here
}

void steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmenart()
{
    // TODO: Add your control notification handler code here
    m_massnahmenstart.SetEditSel( 0, -1);
    m_massnahmenstart.Clear();
    m_massnahmenstart.ResetContent();
    m_massnahmenabstand.SetEditSel( 0, -1);
    m_massnahmenabstand.Clear();
    m_massnahmenabstand.ResetContent();
	massnahmenabstand3.SetEditSel( 0, -1);
    massnahmenabstand3.Clear();
    massnahmenabstand3.ResetContent();
    m_massnahmeGV.SetEditSel( 0, -1);
    m_massnahmeGV.Clear();
    m_massnahmeGV.ResetContent();
    m_massnahmetierart.SetEditSel( 0, -1);
    m_massnahmetierart.Clear();
    m_massnahmetierart.ResetContent();
    CheckDlgButton( IDC_Duengungja, 0);
    CheckDlgButton( IDC_Duengungnein, 0);
    CheckDlgButton( IDC_stark, 0);
    CheckDlgButton( IDC_schwach, 0);
    duengung_gewaehlt = false;
    tierartgewaehlt = false;
    gvgewaehlt = false;
    bodengew = false;
    CString mvwahl;
    int nIndex = m_massnahmenart.GetCurSel();
    if( nIndex != CB_ERR)
    {
        m_massnahmenart.GetLBText( nIndex, mvwahl);
        namemassnahme = mvwahl;
        vector< int> mstart;
        vector< int>::iterator k;
        mstart = daten->returnmassnahmenstart( namemassnahme);

        CString monatsv;
        for( k = mstart.begin(); k != mstart.end(); k++)
        {
            int mv = (*k);
            switch( mv)
            {
                case 1:
                    monatsv = "1. MV Januar, 1.";
                    break;

                case 13:
                    monatsv = "1. MV April, 13.";
                    break;
                case 14:
                    monatsv = "2. MV April, 14.";
                    break;
                case 15:
                    monatsv = "3. MV April, 15.";
                    break;
                case 16:
                    monatsv = "4. MV April, 16.";
                    break;
                case 17:
                    monatsv = "1. MV Mai, 17.";
                    break;
                case 18:
                    monatsv = "2. MV Mai, 18.";
                    break;
                case 19:
                    monatsv = "3. MV Mai, 19.";
                    break;
                case 20:
                    monatsv = "4. MV Mai, 20.";
                    break;
                case 21:
                    monatsv = "1. MV Juni, 21.";
                    break;
                case 22:
                    monatsv = "2. MV Juni, 22.";
                    break;
                case 23:
                    monatsv = "3. MV Juni, 23.";
                    break;
                case 24:
                    monatsv = "4. MV Juni, 24.";
                    break;
                case 25:
                    monatsv = "1. MV Juli, 25.";
                    break;
                case 26:
                    monatsv = "2. MV Juli, 26.";
                    break;
                case 27:
                    monatsv = "3. MV Juli, 27.";
                    break;
                case 28:
                    monatsv = "4. MV Juli, 28.";
                    break;
                case 29:
                    monatsv = "1. MV August, 29.";
                    break;
                case 30:
                    monatsv = "2. MV August, 30.";
                    break;
                case 31:
                    monatsv = "3. MV August, 31.";
                    break;
                case 32:
                    monatsv = "4. MV August, 32.";
                    break;
                case 33:
                    monatsv = "1. MV September, 33.";
                    break;
                case 34:
                    monatsv = "2. MV September, 34.";
                    break;
                case 35:
                    monatsv = "3. MV September, 35.";
                    break;
                case 36:
                    monatsv = "4. MV September, 36.";
                    break;
                case 37:
                    monatsv = "1. MV Oktober, 37.";
                    break;
                case 38:
                    monatsv = "2. MV Oktober, 38.";
                    break;
                case 39:
                    monatsv = "3. MV Oktober, 39.";
                    break;
                case 40:
                    monatsv = "4. MV Oktober, 40.";
                    break;
                default:
                    break;
            }

            m_massnahmenstart.AddString( monatsv);
        }
    }
}

void steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmenstart()
{
    // TODO: Add your control notification handler code here
    m_massnahmenabstand.SetEditSel( 0, -1);
	massnahmenabstand3.SetEditSel( 0, -1);
    massnahmenabstand3.Clear();
    massnahmenabstand3.ResetContent();
    m_massnahmenabstand.Clear();
    m_massnahmenabstand.ResetContent();
    m_massnahmeGV.SetEditSel( 0, -1);
    m_massnahmeGV.Clear();
    m_massnahmeGV.ResetContent();
    m_massnahmetierart.SetEditSel( 0, -1);
    m_massnahmetierart.Clear();
    m_massnahmetierart.ResetContent();
    CheckDlgButton( IDC_Duengungja, 0);
    CheckDlgButton( IDC_Duengungnein, 0);

    duengung_gewaehlt = false;
    tierartgewaehlt = false;
    gvgewaehlt = false;
    CString mvwahl;
    int nIndex = m_massnahmenstart.GetCurSel();
    if( nIndex != CB_ERR)
    {
        m_massnahmenstart.GetLBText( nIndex, mvwahl);
        // aus dem string artauswahl muss der Name und die savetime ausgelesen werden.

        string::size_type posA, posB, posC;

        string line( mvwahl);

        // Find first , character.
        posA = line.find_first_of( ",", 0);

        // Find first whitespace after that (i.e. end of token).
        //posB = line.find_first_not_of( " /t", posA);
        posC = line.find_first_of( ".", posA + 1);

        // Extract the token.
        string num = line.substr( posA + 1, posC - (posA + 1));
        CString str;

        int j = atoi( num.c_str());
        mv1massnahme = j;
        str.Format( _T( "%d"), mv1massnahme);

        vector< int> abstand;
        vector< int>::iterator k;
        abstand = daten->returnmassnahmenabstand( namemassnahme, mv1massnahme);

        for( k = abstand.begin(); k != abstand.end(); k++)
        {
            str.Format( _T( "%d"), (*k));
            //AfxMessageBox(str);

            m_massnahmenabstand.AddString( str);
        }
    }
}

void steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmenabstand()
{
    // TODO: Add your control notification handler code here
    CString mvwahl;
    CheckDlgButton( IDC_Duengungja, 0);
    CheckDlgButton( IDC_Duengungnein, 0);

    duengung_gewaehlt = false;
    tierartgewaehlt = false;
    gvgewaehlt = false;

    int nIndex = m_massnahmenabstand.GetCurSel();
    CString str;
    char eintrag[ 1000];
    if( nIndex != CB_ERR)
    {
        m_massnahmenabstand.GetLBText( nIndex, mvwahl);
		massnahmenabstand3.SetEditSel( 0, -1);
        massnahmenabstand3.Clear();
        massnahmenabstand3.ResetContent();
        m_massnahmeGV.SetEditSel( 0, -1);
        m_massnahmeGV.Clear();
        m_massnahmeGV.ResetContent();
        m_massnahmetierart.SetEditSel( 0, -1);
        m_massnahmetierart.Clear();
        m_massnahmetierart.ResetContent();

        abstand2massnahme = atoi( mvwahl);
        vector< int> abstand;
        vector< int>::iterator k;
        abstand = daten->returnmassnahmenabstand2( namemassnahme, mv1massnahme,abstand2massnahme);

        for( k = abstand.begin(); k != abstand.end(); k++)
        {
            str.Format( _T( "%d"), (*k));
            //AfxMessageBox(str);

            massnahmenabstand3.AddString( str);
        }
    }
       
}
void steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmenabstand3()
{
	    CString mvwahl;
    CheckDlgButton( IDC_Duengungja, 0);
    CheckDlgButton( IDC_Duengungnein, 0);

    duengung_gewaehlt = false;
    tierartgewaehlt = false;
    gvgewaehlt = false;

    int nIndex = massnahmenabstand3.GetCurSel();
    CString str;
    char eintrag[ 1000];
    if( nIndex != CB_ERR)
    {
        massnahmenabstand3.GetLBText( nIndex, mvwahl);
        m_massnahmeGV.SetEditSel( 0, -1);
        m_massnahmeGV.Clear();
        m_massnahmeGV.ResetContent();
        m_massnahmetierart.SetEditSel( 0, -1);
        m_massnahmetierart.Clear();
        m_massnahmetierart.ResetContent();

        abstand3massnahme = atoi( mvwahl);
        vector < string > tierliste;
        vector< string>::iterator l;
        bool tiere;
        vector< bool> dung;

        dung = daten->returnmassnahmenduengung( namemassnahme, mv1massnahme,
                abstand2massnahme,abstand3massnahme);
        if( dung.size() == 1)
        {
            duengung = dung.front();
            duengung_gewaehlt = true;
            //Es gibt nur einen Wert für Duenger: einstellen und wahl verhindern
            if( duengung)
            {
                CheckDlgButton( IDC_Duengungja, 1);
                m_d_ja.EnableWindow( 0);

                CheckDlgButton( IDC_Duengungnein, 0);
                m_d_nein.EnableWindow( 0);
            } else
            {
                CheckDlgButton( IDC_Duengungja, 0);
                m_d_ja.EnableWindow( 0);

                CheckDlgButton( IDC_Duengungnein, 1);
                m_d_nein.EnableWindow( 0);
            }

        } else
        {
            duengung_gewaehlt = false;
            //Beide Wahlmöglichkeiten ermöglichen
            m_d_ja.EnableWindow( 1);
            m_d_nein.EnableWindow( 1);
        }

        tierliste = daten->returnmassnahmentierart( namemassnahme, mv1massnahme,
                abstand2massnahme,abstand3massnahme);

        l = tierliste.begin();
        if( (*l) != "Maßnahme ohne Vieh")
        {

            m_massnahmetierart.EnableWindow( 1);
            m_massnahmeGV.EnableWindow( 1);
            tiere = true;

            for( l = tierliste.begin(); l != tierliste.end(); l++)
            {
                lstrcpy( eintrag, (*l).c_str());

                m_massnahmetierart.AddString( eintrag);
            }

            vector< double> mGV;
            vector< double>::iterator k;
            mGV = daten->returnmassnahmenGV( namemassnahme, mv1massnahme,
                    abstand2massnahme,abstand3massnahme);

            CString monatsv;
            for( k = mGV.begin(); k != mGV.end(); k++)
            {
                if( (*k) != 99)
                {
                    str.Format( _T( "%.2f"), (*k));
                    m_massnahmeGV.AddString( str);
                } else
                {
                    m_massnahmeGV.AddString( "dem Standort angepasst");
                    grossvieheinheit = 99;
                    gvgewaehlt = true;
                }

            }
        } else
        {
            m_massnahmetierart.EnableWindow( 0);
            m_massnahmeGV.EnableWindow( 0);
            grossvieheinheit = 0;
            gvgewaehlt = true;
            tierartgewaehlt = true;
            tierart = 0;
            if( duengung_gewaehlt && bodengew)
            {
                m = daten->returnmassnahme( namemassnahme,mv1massnahme,abstand2massnahme,abstand3massnahme, duengung,0,0);
                m.zahlung = 0;
                char ma[1000];
                stringstream returnstring;
                returnstring<<m.name<<", "<<m.mv1massnahme<<"/"<<m.abstand2massnahme<<"/"<<m.abstand3massnahme<<",";
                //if((m.grossvieheinheit != 0) && (m.grossvieheinheit != 99))
                //returnstring<<m.grossvieheinheit<<" (GV), ";

                returnstring<<m.duengung<< " (D)";
                string result = returnstring.str();
                lstrcpy(ma, result.c_str());
                if(mager)
                {
                    mliste_schwach.push_back(m);
                    m_liste_gmassnahme_schwach.AddString(ma);
                    (*gruen_schwach).duengung = m.duengung;
                    if(!m.duengung)
                    (*gruen_schwach).keine_duengung = true;
                }
                else
                {
                    mliste_stark.push_back(m);
                    m_liste_gmassnahme_stark.AddString(ma);
                    (*gruen_stark).duengung = m.duengung;
                    if(!m.duengung)
                    (*gruen_stark).keine_duengung = true;
                }
            }

        }

    }
}


void steckbrief_lebensraum_neu::OnCbnSelchangeMassnahmengv()
{

    CString mvwahl;
    int nIndex = m_massnahmeGV.GetCurSel();
    CString str;
    char eintrag[ 1000];
    if( nIndex != CB_ERR)
    {
        m_massnahmeGV.GetLBText( nIndex, mvwahl);
        if( mvwahl != ("dem Standort angepasst"))
            grossvieheinheit = atof( mvwahl);
        else
            grossvieheinheit = 99;

        gvgewaehlt = true;
        if( duengung_gewaehlt && tierartgewaehlt && bodengew)
        {
            m = daten->returnmassnahme( namemassnahme, mv1massnahme,
                    abstand2massnahme, abstand3massnahme,duengung, grossvieheinheit, tierart);
            m.zahlung = 0;
            char ma[ 1000];
            stringstream returnstring;
            returnstring << m.name << ", " << m.mv1massnahme << "/"
                    <<m.abstand2massnahme<<"/"<<m.abstand3massnahme<<",";
            if( (m.grossvieheinheit != 0) && (m.grossvieheinheit != 99))
                returnstring << m.grossvieheinheit << " (GV), ";

            returnstring << m.duengung << " (D)";
            string result = returnstring.str();
            lstrcpy( ma, result.c_str());
            if( mager)
            {
                mliste_schwach.push_back( m);
                m_liste_gmassnahme_schwach.AddString( ma);
                (*gruen_schwach).duengung = m.duengung;
                if( !m.duengung)
                    (*gruen_schwach).keine_duengung = true;
            } else
            {
                mliste_stark.push_back( m);
                m_liste_gmassnahme_stark.AddString( ma);
                (*gruen_stark).duengung = m.duengung;
                if( !m.duengung)
                    (*gruen_stark).keine_duengung = true;
            }
        }
    }
}

void steckbrief_lebensraum_neu::OnBnClickedDuengungja()
{
    // TODO: Add your control notification handler code here
    UINT check;
    duengung_gewaehlt = true;
    check = IsDlgButtonChecked( IDC_Duengungja);
    if( check == 1)
    {
        duengung = true;
        CheckDlgButton( IDC_Duengungnein, 0);
    } else
    {
        duengung = false;
        CheckDlgButton( IDC_Duengungnein, 1);
    }

    if( tierartgewaehlt && gvgewaehlt && bodengew)
    {
        m = daten->returnmassnahme( namemassnahme, mv1massnahme,
                abstand2massnahme,abstand3massnahme, duengung, grossvieheinheit, tierart);
        char ma[ 1000];
        stringstream returnstring;
        returnstring << m.name << ", " << m.mv1massnahme << "/"
                <<m.abstand2massnahme<<"/"<<m.abstand3massnahme<<",";
        if( (m.grossvieheinheit != 0) && (m.grossvieheinheit != 99))
            returnstring << m.grossvieheinheit << " (GV), ";

        returnstring << m.duengung << " (D)";
        string result = returnstring.str();
        lstrcpy( ma, result.c_str());
        if( mager)
        {
            mliste_schwach.push_back( m);
            m_liste_gmassnahme_schwach.AddString( ma);
            (*gruen_schwach).duengung = m.duengung;
            if( !m.duengung)
                (*gruen_schwach).keine_duengung = true;
        } else
        {
            mliste_stark.push_back( m);
            m_liste_gmassnahme_stark.AddString( ma);
            (*gruen_stark).duengung = m.duengung;
            if( !m.duengung)
                (*gruen_stark).keine_duengung = true;
        }
    }

}
void steckbrief_lebensraum_neu::OnCbnSelchangeComboArt()
{
    // TODO: Add your control notification handler code here
    CString mvwahl;
    int nIndex = m_massnahmetierart.GetCurSel();
    CString str;
    char eintrag[ 1000];
    if( nIndex != CB_ERR)
    {
        m_massnahmetierart.GetLBText( nIndex, mvwahl);
        // aus dem string artauswahl muss der Name und die savetime ausgelesen werden.

        string::size_type posA, posB;

        string line( mvwahl);

        // Find first , character.
        posA = line.find_first_not_of( " /t", 0);

        // Find first whitespace after that (i.e. end of token).
        //posB = line.find_first_not_of( " /t", posA);
        posB = line.find_first_of( ",", posA);

        // Extract the token.
        string num = line.substr( posA, posB - posA);
        CString str;

        tierart = atoi( num.c_str());
        tierartgewaehlt = true;
        if( duengung_gewaehlt && gvgewaehlt && bodengew)
        {
            m = daten->returnmassnahme( namemassnahme, mv1massnahme,
                    abstand2massnahme,abstand3massnahme, duengung, grossvieheinheit, tierart);
            m.zahlung = 0;
            char ma[ 1000];
            stringstream returnstring;
            returnstring << m.name << ", " << m.mv1massnahme << "/"
                    << m.abstand2massnahme<<"/"<<m.abstand3massnahme<<",";
            if( (m.grossvieheinheit != 0) && (m.grossvieheinheit != 99))
                returnstring << m.grossvieheinheit << " (GV), ";

            returnstring << m.duengung << " (D)";
            string result = returnstring.str();
            lstrcpy( ma, result.c_str());
            if( mager)
            {
                mliste_schwach.push_back( m);
                m_liste_gmassnahme_schwach.AddString( ma);
                (*gruen_schwach).duengung = m.duengung;
                if( !m.duengung)
                    (*gruen_schwach).keine_duengung = true;

            } else
            {
                mliste_stark.push_back( m);
                m_liste_gmassnahme_stark.AddString( ma);
                (*gruen_stark).duengung = m.duengung;
                if( !m.duengung)
                    (*gruen_stark).keine_duengung = true;
            }
        }
    }
}

void steckbrief_lebensraum_neu::OnBnClickedDuengungnein()
{
    // TODO: Add your control notification handler code here
    UINT check;
    duengung_gewaehlt = true;
    check = IsDlgButtonChecked( IDC_Duengungnein);
    if( check == 1)
    {
        duengung = false;
        CheckDlgButton( IDC_Duengungja, 0);
    } else
    {
        duengung = true;
        CheckDlgButton( IDC_Duengungja, 1);
    }

    if( tierartgewaehlt && gvgewaehlt && bodengew)
    {
        m = daten->returnmassnahme( namemassnahme, mv1massnahme,
                abstand2massnahme,abstand3massnahme, duengung, grossvieheinheit, tierart);
        char ma[ 1000];
        stringstream returnstring;
        returnstring << m.name << ", " << m.mv1massnahme << "/"
                << m.abstand2massnahme<<"/"<<m.abstand3massnahme<<",";
        if( (m.grossvieheinheit != 0) && (m.grossvieheinheit != 99))
            returnstring << m.grossvieheinheit << " (GV), ";

        returnstring << m.duengung << " (D)";
        string result = returnstring.str();
        lstrcpy( ma, result.c_str());
        if( mager)
        {
            mliste_schwach.push_back( m);
            m_liste_gmassnahme_schwach.AddString( ma);
            (*gruen_schwach).duengung = m.duengung;
            if( !m.duengung)
                (*gruen_schwach).keine_duengung = true;
        } else
        {
            mliste_stark.push_back( m);
            m_liste_gmassnahme_stark.AddString( ma);
            (*gruen_stark).duengung = m.duengung;
            if( !m.duengung)
                (*gruen_stark).keine_duengung = true;
        }
    }
}
void steckbrief_lebensraum_neu::OnBnClickedstark()
{
    UINT check;
    bodengew = true;
    check = IsDlgButtonChecked( IDC_stark);
    if( check == 1)
    {
        mager = false;
        CheckDlgButton( IDC_schwach, 0);

    } else
    {
        mager = true;
        CheckDlgButton( IDC_schwach, 1);
    }

    if( tierartgewaehlt && gvgewaehlt && duengung_gewaehlt)
    {
        m = daten->returnmassnahme( namemassnahme, mv1massnahme,
                abstand2massnahme,abstand3massnahme, duengung, grossvieheinheit, tierart);
        char ma[ 1000];
        stringstream returnstring;
        returnstring << m.name << ", " << m.mv1massnahme << "/"
                <<m.abstand2massnahme<<"/"<<m.abstand3massnahme<<",";
        if( (m.grossvieheinheit != 0) && (m.grossvieheinheit != 99))
            returnstring << m.grossvieheinheit << " (GV), ";

        returnstring << m.duengung << " (D)";
        string result = returnstring.str();
        lstrcpy( ma, result.c_str());
        if( mager)
        {
            mliste_schwach.push_back( m);
            m_liste_gmassnahme_schwach.AddString( ma);
            (*gruen_schwach).duengung = m.duengung;
            if( !m.duengung)
                (*gruen_schwach).keine_duengung = true;
        } else
        {
            mliste_stark.push_back( m);
            m_liste_gmassnahme_stark.AddString( ma);
            (*gruen_stark).duengung = m.duengung;
            if( !m.duengung)
                (*gruen_stark).keine_duengung = true;
        }
    }
}

void steckbrief_lebensraum_neu::OnBnClickedschwach()
{
    UINT check;
    bodengew = true;
    check = IsDlgButtonChecked( IDC_schwach);
    if( check == 1)
    {
        mager = true;
        CheckDlgButton( IDC_stark, 0);
    } else
    {
        mager = false;
        CheckDlgButton( IDC_stark, 1);
    }

    if( tierartgewaehlt && gvgewaehlt && duengung_gewaehlt)
    {
        m = daten->returnmassnahme( namemassnahme, mv1massnahme,
                abstand2massnahme,abstand3massnahme, duengung, grossvieheinheit, tierart);
        char ma[ 1000];
        stringstream returnstring;
        returnstring << m.name << ", " << m.mv1massnahme << "/"
                << m.abstand2massnahme<<"/"<<m.abstand3massnahme<<",";
        if( (m.grossvieheinheit != 0) && (m.grossvieheinheit != 99))
            returnstring << m.grossvieheinheit << " (GV), ";

        returnstring << m.duengung << " (D)";
        string result = returnstring.str();
        lstrcpy( ma, result.c_str());
        if( mager)
        {
            mliste_schwach.push_back( m);
            m_liste_gmassnahme_schwach.AddString( ma);
            (*gruen_schwach).duengung = m.duengung;
            if( !m.duengung)
                (*gruen_schwach).keine_duengung = true;
        } else
        {
            mliste_stark.push_back( m);
            m_liste_gmassnahme_stark.AddString( ma);
            (*gruen_stark).duengung = m.duengung;
            if( !m.duengung)
                (*gruen_stark).keine_duengung = true;
        }
    }
}

HBRUSH steckbrief_lebensraum_neu::OnCtlColor(
        CDC* pDC,
        CWnd* pWnd,
        UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor( pDC, pWnd, nCtlColor);

    int ID = pWnd->GetDlgCtrlID();

    if( ID == IDD_DIALOG_Steckbrief_Lebensraum)
    {
        HBRUSH hBrush = CreateSolidBrush( RGB( 255, 255, 240));
        return hBrush;
    }

    if( (ID == IDC_STATIC1) || (ID == IDC_STATIC2) || (ID == IDC_STATIC3)
            || (ID == IDC_STATIC4) || (ID == IDC_STATIC5))
    {
        pDC->SetTextColor( RGB( 139, 26, 26)); // Setzt die Textfarbe 
        pDC->SetBkMode( TRANSPARENT);

        // Return handle to our CBrush object
        //hbr = m_brush;
    }

    // TODO:  Ändern Sie hier alle Attribute für den DC.

    if( ID == IDC_STATIC || ID == IDC_Duengungja || ID == IDC_Duengungnein
            || ID == IDC_stark || ID == IDC_schwach || ID == IDC_Hoch
            || ID == IDC_Tief || ID == IDC_Egal)
    {
        pDC->SetTextColor( RGB( 0, 100, 0)); // Setzt die Textfarbe auf 
        pDC->SetBkMode( TRANSPARENT);
        //HBRUSH hBrush = CreateSolidBrush(RGB(255,0,0)); //Setzt die Hintergrundfarbe auf rot
        // return (HBRUSH) hBrush;
    }

    // TODO:  Gib einen anderen Pinsel zurück, wenn der Standard nicht erwünscht ist.
    hbr = m_brush;
    return hbr;
}
void steckbrief_lebensraum_neu::OnBnClickedHoch()
{
    // TODO: Add your control notification handler code here
    UINT check;
    hoehegew = true;
    check = IsDlgButtonChecked( IDC_Hoch);
    if( check == 1)
    {
        hoch = true;
        egal = false;
        CheckDlgButton( IDC_Tief, 0);
        CheckDlgButton( IDC_Egal, 0);
        gruen_schwach->hoch = true;
        gruen_schwach->tief = false;
        gruen_stark->hoch = true;
        gruen_stark->tief = false;
    } else
    {
        hoch = false;
        CheckDlgButton( IDC_Hoch, 0);
    }
}

void steckbrief_lebensraum_neu::OnBnClickedTief()
{
    // TODO: Add your control notification handler code here
    UINT check;
    hoehegew = true;
    check = IsDlgButtonChecked( IDC_Tief);
    if( check == 1)
    {
        hoch = false;
        egal = false;
        CheckDlgButton( IDC_Hoch, 0);
        CheckDlgButton( IDC_Egal, 0);
        gruen_schwach->hoch = false;
        gruen_schwach->tief = true;
        gruen_stark->hoch = false;
        gruen_stark->tief = true;
    } else
    {
        CheckDlgButton( IDC_Tief, 0);
    }
}

void steckbrief_lebensraum_neu::OnBnClickedEgal()
{
    // TODO: Add your control notification handler code here
    UINT check;
    hoehegew = true;
    check = IsDlgButtonChecked( IDC_Egal);
    if( check == 1)
    {
        hoch = false;
        egal = true;
        CheckDlgButton( IDC_Tief, 0);
        CheckDlgButton( IDC_Hoch, 0);
        gruen_schwach->hoch = true;
        gruen_schwach->tief = true;
        gruen_stark->hoch = true;
        gruen_stark->tief = true;
    } else
    {
        egal = false;
    }
}
/* raus da Erase Button eingeführt
void steckbrief_lebensraum_neu::OnLbnDblclkListstarkmassnahmen()
{
    // TODO: Add your control notification handler code here
    CString mvwahl;
    int nIndex = m_liste_gmassnahme_stark.GetCurSel();
    if( nIndex != CB_ERR)
    {
        m_liste_gmassnahme_stark.DeleteString( nIndex);
        vector< massnahme>::iterator it;
        it = mliste_stark.begin();
        for( int i = 0; i < mliste_stark.size(); i++)
        {
            if( i == nIndex)
            {
                mliste_stark.erase( it);
                break;
            } else
                it++;
        }

    }
}

void steckbrief_lebensraum_neu::OnLbnDblclkListschwachmassnahmen()
{
    // TODO: Add your control notification handler code here
    CString mvwahl;
    int nIndex = m_liste_gmassnahme_schwach.GetCurSel();
    if( nIndex != CB_ERR)
    {
        m_liste_gmassnahme_schwach.DeleteString( nIndex);
        vector< massnahme>::iterator it;
        it = mliste_schwach.begin();
        for( int i = 0; i < mliste_schwach.size(); i++)
        {
            if( i == nIndex)
            {
                mliste_schwach.erase( it);
                break;
            } else
                it++;
        }

    }

}*/

void steckbrief_lebensraum_neu::OnBnClickedDatenbearbeiten()
{
    // TODO: Add your control notification handler code here
    GetDlgItem( IDC_Person)->SetWindowText( "");
    //m_liste_gmassnahme_schwach.ResetContent();
    //m_liste_gmassnahme_stark.ResetContent();
    m_d_ja.EnableWindow( true);
    m_d_nein.EnableWindow( true);
    m_massnahmeGV.EnableWindow( true);
    m_massnahmenabstand.EnableWindow( true);
    m_massnahmenart.EnableWindow( true);
    m_massnahmenstart.EnableWindow( true);
    m_massnahmetierart.EnableWindow( true);
    m_schwach.EnableWindow( true);
    m_stark.EnableWindow( true);
	button_erase_schwach.EnableWindow(true);
	button_erase_stark.EnableWindow(true);
    GetDlgItem( IDC_Datenbearbeiten)->ShowWindow( false);
    GetDlgItem( IDC_Datena)->ShowWindow( false);
    GetDlgItem( IDOK)->ShowWindow( true);
    GetDlgItem( IDCANCEL)->ShowWindow( true);

}

void steckbrief_lebensraum_neu::OnBnClickedDatena()
{
    // TODO: Add your control notification handler code here
    OnOK();
}


void steckbrief_lebensraum_neu::OnBnClickedListestarkerase()
{
	CString mvwahl, str;
    int nIndex = m_liste_gmassnahme_stark.GetCurSel();
    if( nIndex != CB_ERR)
    {

		int iNumSel = m_liste_gmassnahme_stark.GetSelCount(); // get number of selected items
		//str.Format(_T("%d"),iNumSel);
        //AfxMessageBox(str,MB_YESNO,0);
		LPINT lpiSelItems = new int[iNumSel]; // allocate memory for all of them
		m_liste_gmassnahme_stark.GetSelItems(iNumSel, lpiSelItems);
		for (int nCount = (iNumSel-1); nCount >= 0; nCount--)
		{
			m_liste_gmassnahme_stark.DeleteString(lpiSelItems[nCount]); // loop over every selected item and process it
			//str.Format(_T("%d"),lpiSelItems[nCount]);
			//AfxMessageBox(str,MB_YESNO,0);
			vector< massnahme>::iterator it;
			it = mliste_stark.begin();
			for( int i = 0; i < mliste_stark.size(); i++)
			{
				if( i == lpiSelItems[nCount])
				{
					mliste_stark.erase( it);
					break;
				} else
					it++;
			}

		}
		delete [] lpiSelItems; // don't forget to clean up!
	}
}

void steckbrief_lebensraum_neu::OnBnClickedListeschwacherase()
{
	CString mvwahl;
    int nIndex = m_liste_gmassnahme_schwach.GetCurSel();

    if( nIndex != CB_ERR)
    {

		int iNumSel = m_liste_gmassnahme_schwach.GetSelCount(); // get number of selected items
		LPINT lpiSelItems = new int[iNumSel]; // allocate memory for all of them
		m_liste_gmassnahme_schwach.GetSelItems(iNumSel, lpiSelItems);
		for (int nCount = (iNumSel-1); nCount >= 0; nCount--)
		{
			m_liste_gmassnahme_schwach.DeleteString(lpiSelItems[nCount]); // loop over every selected item and process it

			vector< massnahme>::iterator it;
			it = mliste_schwach.begin();
			for( int i = 0; i < mliste_schwach.size(); i++)
			{
				if( i == lpiSelItems[nCount])
				{
					mliste_schwach.erase( it);
					break;
				} else
					it++;
			}

		}
		delete [] lpiSelItems; // don't forget to clean up!
	}
}
