Why is my code acting like it is in Update().

Im trying to make some card game, and i found some good start at unity asnwers so i used it. Now i have problem. When i start game it should wait for player to click on deal button(Podijeli) to deal cards. But it doesnt, it just continuously keep doing that like a player is clicking all time on that button from start. I dont know why it is happening since, it is not in Update() function. I figured out that when i comment calling functions in OnGUI resolve problem. If i comment deal button it stops dealing cards but then of course i dont have button to deal.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class SpilKarata : MonoBehaviour {


    public List<GameObject> spil = new List<GameObject>();

    public List<GameObject> karte = new List<GameObject>();

    public List<GameObject> ruka = new List<GameObject>();

    public int brojpodijeljenihkrata = 0;

    public bool resetDugme = false;

    void ResetujSpil()
    {
        brojpodijeljenihkrata = 0;
        for (int i = 0; i < ruka.Count; i++)
        {
            Destroy(ruka[i]);
        }

        ruka.Clear();
        karte.Clear();
        karte.AddRange(spil);
        resetDugme = false;
    }

    GameObject PodjeliKarte()
    {
        if (karte.Count == 0)
        {
            resetDugme = true;
            return null;

        }

        int karta = Random.Range(0, karte.Count - 1);
        GameObject go = GameObject.Instantiate(karte[karta]) as GameObject;
        karte.RemoveAt(karta);

        return go;
    }

    // Use this for initialization
    void Start()
    {
       ResetujSpil();
	}

    void GotovaIgra()
    {
       ResetujSpil();

    }

    void KontrolisiPodjeljenuKartu()
    {
        GameObject novaKarta = PodjeliKarte();
        if (novaKarta == null)
        {
            Debug.Log("Nema Vise Karata!");
            resetDugme = true;
            return;
        }

        novaKarta.transform.position = new Vector3((float)brojpodijeljenihkrata / 4, (float)brojpodijeljenihkrata / 4, (float)brojpodijeljenihkrata / 4);
        ruka.Add(novaKarta); // dodao sam kartu u ruku
        brojpodijeljenihkrata++;

    }

    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 100, 20), "Podjeli")) ;
            {
                KontrolisiPodjeljenuKartu();
            }

        if (GUI.Button(new Rect(150, 10, 100, 20), "Reset")) ;
            {
                //ResetujSpil();
            }
        

    }
    }

Hard to understand in another language - however OnGUI is called many more times than Update is, if that’s of any help.

Yes but i use if statement, so it should call function only if player pressed button, not all the time. Btw here is script in english:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class DeckOfCards : MonoBehaviour
{
    public List<GameObject> deck = new List<GameObject>();

    private List<GameObject> cards = new List<GameObject>();
    private List<GameObject> hand = new List<GameObject>();
    private int cardsDealt = 0;
    private bool showReset = false;

    void ResetDeck()
    {
       cardsDealt = 0;
       for (int i = 0; i < hand.Count; i++) {
         Destroy(hand[i]);
       }
        hand.Clear();
        cards.Clear();
        cards.AddRange(deck);
       showReset = false;
    }

    GameObject DealCard()
    {
        if(cards.Count == 0)
        {
         showReset = true;
         return null;
            //Alternatively to auto reset the deck:
            //ResetDeck();
        }

        int card = Random.Range(0, cards.Count - 1);
        GameObject go = GameObject.Instantiate(cards[card]) as GameObject;
        cards.RemoveAt(card);

       if(cards.Count == 0) {
         showReset = true;
       }

        return go;
    }

    void Start()
    {
        ResetDeck();
    }

    void GameOver()
    {
       cardsDealt = 0;
       for (int v = 0; v < hand.Count; v++) {
         Destroy(hand[v]);
       }
        hand.Clear();
        cards.Clear();
        cards.AddRange(deck);
    }

    void OnGUI()
    {
       if (!showReset) {
         // Deal button
            if (GUI.Button(new Rect(10, 10, 100, 20), "Deal"))
         {
          MoveDealtCard();
         }
       }
       else {
         // Reset button
            if (GUI.Button(new Rect(10, 10, 100, 20), "Reset"))
         {
          ResetDeck();
         }
       }
       // GameOver button
        if (GUI.Button(new Rect(Screen.width - 110, 10, 100, 20), "GameOver"))
       {
         GameOver();
       }
    }

    void MoveDealtCard()
    {
        GameObject newCard = DealCard();
       // check card is null or not
       if (newCard == null) {
         Debug.Log("Out of Cards");
         showReset = true;
         return;
       }

       //newCard.transform.position = Vector3.zero;
       newCard.transform.position = new Vector3((float)cardsDealt / 4, (float)cardsDealt / -4, (float)cardsDealt / -4); // place card 1/4 up on all axis from last
       hand.Add(newCard); // add card to hand
       cardsDealt ++;
    }
}