/// <summary>
 /// Add a new variable to the server
 /// </summary>
 /// <param name="req"></param>
 /// <returns></returns>
 public static ServiceOutput AddVariable(AddVariableRequest req)
 {
     using (WebClient client = new WebClient())
     {
         client.Headers.Add("Content-Type", "application/json; charset=utf-8");
         String uri = Properties.Settings.Default.adaptiveUri + "/WebServices/geostat/Portal.asmx/AddVariable";
         byte[] responsebytes = client.UploadData(uri, "POST", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(req)));
         var json = Encoding.UTF8.GetString(responsebytes);
         //DebugToFile.Log(json);
         return JsonConvert.DeserializeObject<ServiceOutput>(json);
     }
 }
        /// <summary>
        /// Create a new tree node
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCreateNew_Click(object sender, EventArgs e)
        {
            if (!isValid())
            {
                this.Log("Ugyldige verdiar, kontroller skjema");
                return;
            }

            var req = new AddVariableRequest();

            int level;
            int.TryParse(tbVarLevel.Text, out level);

            if (level == 5)
            {
                req.data.var5 = cbVarName.Text.emptyIfNull();
                req.data.var4 = selectedParentTreeNode.Text.emptyIfNull();
                req.data.var3 = selectedParentTreeNode.Parent.Text.emptyIfNull();
                req.data.var2 = selectedParentTreeNode.Parent.Parent.Text.emptyIfNull();
                req.data.var1 = selectedParentTreeNode.Parent.Parent.Parent.Text.emptyIfNull();
            }
            else if (level == 4)
            {
                req.data.var4 = cbVarName.Text.emptyIfNull();
                req.data.var3 = selectedParentTreeNode.Text.emptyIfNull();
                req.data.var2 = selectedParentTreeNode.Parent.Text.emptyIfNull();
                req.data.var1 = selectedParentTreeNode.Parent.Parent.Text.emptyIfNull();
            }
            else if (level == 3)
            {
                req.data.var3 = cbVarName.Text.emptyIfNull();
                req.data.var2 = selectedParentTreeNode.Text.emptyIfNull();
                req.data.var1 = selectedParentTreeNode.Parent.Text.emptyIfNull();
            }
            else if (level == 2)
            {
                req.data.var2 = cbVarName.Text.emptyIfNull();
                req.data.var1 = selectedParentTreeNode.Text.emptyIfNull();
            }
            else if (level == 1)
            {
                req.data.var1 = cbVarName.Text.emptyIfNull();
            }

            req.data.description = tbDescription.Text;
            req.data.name = cbVarName.Text.nullIfEmpty();
            req.data.unit = (string)cbUnit.SelectedValue;
            req.data.showunit = chkbShowUnit.Checked;
            req.data.time_unit = (string)cbTimeUnit.SelectedValue;
            req.data.fk_kretstyper = (string)cbKretstyper.SelectedValue;
            req.data.parent_id = selectedParentVariable == null ? null : (int?)selectedParentVariable.id;

            try
            {
                var res = PortalClient.AddVariable(req);
                if (!res.d.success)
                {
                    this.Log("Kunne ikkje legge til variabel: " +  req.data.getNameAtLevel(level));
                }
                else
                {
                    this.Log("La til ny variabel: " + req.data.getNameAtLevel(level));
                    var scrollOffset = svTree.AutoScrollOffset;
                    ReloadTree(selectedParentTreeNode.id);
                }
            }
            catch (Exception ex)
            {
                this.Log(ex.Message);
            }
        }