var Flake = {
  GetFlakeForm: function() {
    var oNodeForm = null;
    if (oEventNode) {
      oNodeForm = getform(oEventNode);
    }
    return oNodeForm;
  },
  GetMainForm: function() {
    var oFormMain = $('FormMain');
    if (oFormMain==null) throw new Error("Main form not found!");
    return oFormMain;
  },
  ResetMainForm: function(o) {
    var oFormMain = this.GetMainForm();
    oFormMain.bAddFlake = false;
    var s = o.GetCommand();
    oFormMain.oTextBoxAddFlake.value = s;
    oFormMain.oTextBoxAddFlake.defaultValue = s;
  },
  Remove: function() {
    var oFormFlake = Flake.GetFlakeForm();
    if (oFormFlake!=null) {
      oFormFlake.parentNode.parentNode.removeChild(oFormFlake.parentNode);
    }
  },
  PostBackDelete: function() {
    var oFormMain = this.GetMainForm();
    oFormMain.doPostBack("oButtonDelete","");
  },
  Add: function(s) {
    var oNodePanel = document.createElement("DIV");
    oNodePanel.className = "cPage";
    
    var oNodeColumn = $("oTableCell2");
    if ($("oTableCell1").childNodes.length<oNodeColumn.childNodes.length) {
      oNodeColumn = $("oTableCell1");
    }
    if ($("oTableCell3").childNodes.length<oNodeColumn.childNodes.length) {
      oNodeColumn = $("oTableCell3");
    }
    
    oNodeColumn.appendChild(oNodePanel);
    
    var oNodeForm = createForm("Form1", s, this.Add_onerror, null, "transloading.gif", "&nbsp;loading...", Animations.None, Animations.None);
    oNodePanel.appendChild(oNodeForm);
  },
  Add_onerror: function() {
    alert("Error adding flake");
    debugger;
  },
  Register: function(name, o) {
    this[name] = o;
  }
};

var $ = function(s) {
  return document.getElementById(s);
}

function FormMain_onsuccess(sEventTarget,sEventArgument) {
  if ($('FormMain').bAddFlake!=false) {
    var sParameter = $('FormMain').oTextBoxAddFlake.value;
    if (sEventTarget=="oButtonAddList") {
      Flake.ToDoList.Add(sParameter);
    }
    if (sEventTarget=="oButtonAddFeed") {
      Flake.RssFeed.Add(sParameter);
    }
  }
  $('FormMain').bAddFlake = true;
}

function window_onload() {
  $("FormMain").onsuccess = FormMain_onsuccess;
}

if (!window.attachEvent) {
  window.addEventListener("load", window_onload, false);
}
else {
  window.attachEvent("onload", window_onload);
}

/** FLAKES **/

Flake.Register("ToDoList", {
  GetUri: function(s) {
    return "ToDoList.aspx?title=" + encodeURI(s);
  },
  Add: function(s) {
    Flake.Add(this.GetUri(s));
    $('FormMain').oTextBoxAddFlake.value = "";
  },
  Delete: function() {
    Flake.Remove();
    Flake.ResetMainForm(this);
    Flake.PostBackDelete();
  },
  GetCommand: function() {
    var oFormFlake = Flake.GetFlakeForm();
    var oAnchor = oFormFlake.getElementsByTagName("a")[0];
    return (typeof(oAnchor.innerText)!="undefined") ? oAnchor.innerText : oAnchor.textContent;
  }
});

Flake.Register("RssFeed", {
  GetUri: function(s) {
    return "RssFeed.aspx?rss=" + escape(s);
  },
  Add: function(s) {
    Flake.Add(this.GetUri(s));
  },
  Add: function(s) {
    Flake.Add(this.GetUri(s));
    $('FormMain').oTextBoxAddFlake.value = "";
  },
  Delete: function() {
    Flake.Remove();
    Flake.ResetMainForm(this);
    Flake.PostBackDelete();
  },
  GetCommand: function() {
    var oFormFlake = Flake.GetFlakeForm();
    var sAction = unescape(oFormFlake.action);
    return sAction.substr(sAction.indexOf("rss=") + 4);
  }
});
