protected void buttonProvjeriServerDatabaseString_Click(object sender, EventArgs e)
        {
            SimplerAES saes = new SimplerAES();
            string connstring;
            // tu sad testiramo da li se možemo spojiti na server ili ćemo dobiti grešku
            //connString = "Server = (LocalDB)\\MSSQLLocalDB; AttachDbFilename=|DataDirectory|\\BMS_Data.mdf; Integrated Security = False; User ID=tonza;Password=tonza";
            connstring = "Server = " + textBoxServerServerString.Text + ";";

            // ovaj dio dopisujemo samo ako postoji u bazi, a koristi se samo kad se radi o localDB-u, kada treba attachati bazu. Kad se spajamo na "Veliki" SQL to nam ne treba, pa kod unosa upozori korisnika na to
            if (textBoxServerDatabaseAttachString.Text.Length > 0)
                connstring += "AttachDbFileName= " + textBoxServerDatabaseAttachString.Text + ";";

            connstring += "Database = " + textBoxServerDatabaseName.Text + ";";
            connstring += "Integrated Security = " + (checkBoxServerDatabaseIntegratedAuth.Checked == true ? "True" : "False") + ";";

            // ako se ne koristi integrated, onda trebamo user name i password
            if (!checkBoxServerDatabaseIntegratedAuth.Checked) {
                connstring += "User ID=" + textBoxServerDatabaseKorisnik.Text + ";";
                connstring += "Password="******";";
            }
            // mi bi i manji timeout isto
            connstring += "Connection Timeout=3";

            bool uspjesno = true;
            string greska ="";
            SqlConnection myConn = new SqlConnection(connstring);

            try {

                myConn.Open();

            }
            catch (SqlException se ) {
                uspjesno = false;
                greska = se.Message;
            }

            if (uspjesno) {
                labelServerProvjeraStringa.Text = "Uspješno spajanje na server. Ne zaboravite snimiti testirane postavke.";
                textBoxServerDatabaseLozinka.Attributes["h"] = saes.Encrypt(textBoxServerDatabaseLozinka.Text);
                // dozvoli snimanje podataka
                buttonServerSnimiPostavke.Enabled = true;
            }
            else {
                labelServerProvjeraStringa.Text = "Neuspješno spajanje na server !!! Greška:"+greska;
            }
        }
        protected void buttonUpitTestiraj_Click(object sender, EventArgs e)
        {
            // generiramo upit i dovlačimo podatke, te ih prikazujemo u gridu na posebnom layeru

            SemaforiDataContext db = new SemaforiDataContext();
            SimplerAES saes = new SimplerAES();

            string connstring;

            viewDatasource datasrc = (from s in db.viewDatasources where s.id == Convert.ToInt32(dropDownListUpitOdaberiDatasource.SelectedValue) select s).First();   //može biti više, daj samo prvi koji štima

            // tu sad testiramo da li se možemo spojiti na server ili ćemo dobiti grešku
            //connString = "Server = (LocalDB)\\MSSQLLocalDB; AttachDbFilename=|DataDirectory|\\BMS_Data.mdf; Integrated Security = False; User ID=tonza;Password=tonza";
            connstring = "Server = " + datasrc.serverString + ";";

            // ovaj dio dopisujemo samo ako postoji u bazi, a koristi se samo kad se radi o localDB-u, kada treba attachati bazu. Kad se spajamo na "Veliki" SQL to nam ne treba, pa kod unosa upozori korisnika na to
            if (datasrc.dbAttachString.Length > 0)
                connstring += "AttachDbFileName= " + datasrc.dbAttachString + ";";

            connstring += "Database = " + datasrc.dbNaziv + ";";
            connstring += "Integrated Security = " + (datasrc.integratedAuth == true ? "True" : "False") + ";";

            // ako se ne koristi integrated, onda trebamo user name i password
            if (!datasrc.integratedAuth) {
                connstring += "User ID=" + datasrc.korisnik + ";";
                connstring += "Password="******";";
            }
            // mi bi i manji timeout isto
            connstring += "Connection Timeout=3";

            bool uspjesno = true;
            string greska = "";
            SqlConnection myConn = new SqlConnection(connstring);

            try {

                myConn.Open();

            }
            catch (SqlException se) {
                uspjesno = false;
                greska = se.Message;
            }

            if (uspjesno) {

                SqlCommand komanda = new SqlCommand(textBoxUpitDefinicija.Text,myConn);
                SqlDataReader citac;  // = new SqlDataReader();

                using (SqlDataReader oReader = komanda.ExecuteReader()) {

                    // pazi, ne smije biti više od 2 stupca

                    HtmlTable tablica = new HtmlTable();
                    HtmlTableRow red;
                    HtmlTableCell celija;
                    //tablica.Attributes["Style"] = "border: 1px solid black; margin-left:auto;margin-right:auto;";
                    tablica.Attributes.Add("class", "previewUpitTablica");
                    //tablica.Border = 1;
                    //tablica.CellPadding = 1;
                    //tablica.CellSpacing = 1;
                    red = new HtmlTableRow();

                    // dodaj naslov tablice

                    for (int i = 0;i< 2; ++i) {
                        celija = new HtmlTableCell();
                        celija.Attributes.Add("class", "previewUpitNaslov");
                        celija.InnerHtml = oReader.GetName(i);
                            red.Cells.Add(celija);
                    }

                    tablica.Rows.Add(red);

                    while (oReader.Read()) {

                        red = new HtmlTableRow();

                        for (int i = 0; i < 2; ++i) {
                            celija = new HtmlTableCell();
                            //celija.Attributes["Style"] = "border: 1px solid black; ";
                            celija.Attributes.Add("class", "previewUpitTd"+(i%2).ToString());
                            celija.InnerHtml = oReader.GetValue(i).ToString();
                            red.Cells.Add(celija);
                        }
                        tablica.Rows.Add(red);

                    }

                    myConn.Close();
                    prikazTestUpita.Attributes.Add("style", "height:400px");
                    prikazTestUpita.Controls.AddAt(0,tablica);
                }

            }
            else {
                // nema
            }

            prikazTestUpita.Visible = true;
        }
        protected void buttonServerSnimiPostavke_Click(object sender, EventArgs e)
        {
            SemaforiDataContext db = new SemaforiDataContext();
            SimplerAES saes = new SimplerAES();

            if (Convert.ToInt32(labelServerID.Text) > 0) {                  // ako imamo ID, znači da mijenjamo postojeći
                tblServer server = (from tblServer in db.tblServers where tblServer.id == Convert.ToInt32(labelServerID.Text) select tblServer).Single();

                server.naziv = textBoxServerNaziv.Text;
                server.serverString = textBoxServerServerString.Text;

                db.SubmitChanges();

                tblDB dbase = (from tblDB in db.tblDBs where tblDB.serverid == server.id select tblDB).Single();

                dbase.naziv = textBoxServerDatabaseName.Text;
                dbase.serverid = server.id;
                dbase.integratedAuth = checkBoxServerDatabaseIntegratedAuth.Checked;
                dbase.korisnik = textBoxServerDatabaseKorisnik.Text;
                dbase.dbAttachString = textBoxServerDatabaseAttachString.Text;

                // kriptiramo lozinku da je baš ne spremimo u clear text u bazu

                 // ako nešto piše u TXt, to je nova lozinka. Spremi u H atribut
                if (textBoxServerDatabaseLozinka.Text.Length>0) {
                    textBoxServerDatabaseLozinka.Attributes["h"] = saes.Encrypt(textBoxServerDatabaseLozinka.Text);
                }

                dbase.lozinka = textBoxServerDatabaseLozinka.Attributes["h"];

                db.SubmitChanges();

                (sender as Button).Enabled = false;
                labelServerProvjeraStringa.Text = "";

            }
            else {      //nemamo ID, upisujemo novi

                tblServer server = new tblServer();
                tblDB dbase = new tblDB();

                server.naziv = textBoxServerNaziv.Text;
                server.serverString = textBoxServerServerString.Text;

                db.tblServers.InsertOnSubmit(server);
                db.SubmitChanges();

                dbase.naziv = textBoxServerDatabaseName.Text;
                dbase.serverid = server.id;
                dbase.integratedAuth = checkBoxServerDatabaseIntegratedAuth.Checked;
                dbase.korisnik = textBoxServerDatabaseKorisnik.Text;
                dbase.dbAttachString = textBoxServerDatabaseAttachString.Text;

                // kriptiramo password prije nego ga upišemo u bazu

                textBoxServerDatabaseLozinka.Attributes["h"] = saes.Encrypt(textBoxServerDatabaseLozinka.Text);
                dbase.lozinka = saes.Encrypt(textBoxServerDatabaseLozinka.Text);

                db.tblDBs.InsertOnSubmit(dbase);
                db.SubmitChanges();

                (sender as Button).Enabled = false;
                labelServerProvjeraStringa.Text = "";

            }

            ListViewServeri.DataBind();
            menuUpdatePanel.Update();
        }