//<!--Copyright 2006,2007 Eljakim Information Technology B.V.-->
function clearActions() {
  removeNodes(document.getElementById("actions_div0"));
  removeNodes(document.getElementById("actions_div1"));
  removeNodes(document.getElementById("actions_div2"));
  removeNodes(document.getElementById("actions_div3"));
}
function addToActions(ctrl, actId) {
  actId = parseInt(actId);
  if((isNaN(actId)) || actId < 0 || actId > 3) actId = 1; 
  document.getElementById("actions_div" + actId).appendChild(ctrl.getHTML());
}
function setTitle(title) {
  document.title = title;
}

function setCaption(cap) {
  var d = document.getElementById("formcaption");
  if(d) d.innerHTML = cap;
}

function loadFilters(params) {
  if(postForm({loading:1})) {
    filterview.params = {};
    filterview.source.params = {};
    filterview.sortorder  = 1;
    clearStack();
	loadForm('',params,'mainform',url_filters);
	fv_show(0);
 }
}

function clearFilters() {
  filters.clear();
}
function addFilter(label,filterid,formName,sortColumn) {
  if(!sortColumn) sortColumn = 0;
  var val = filterid + "|^|" + formName + "|^|" + sortColumn;
  filters.addOption(val,label);
}
function setActiveFilter(filterid) {
  var opt = filters.dropdown.childNodes;
  for(var i=0;i<opt.length;++i) if(opt[i].value.indexOf(""+filterid+"|^|") == 0) {filters.setValue(opt[i].value,true);break;}
}

function refreshFilters() {
  filters.refresh();
}
function _mozFixTable() { // mozilla fix (force re-render)
 document.body.style.display = "none";
 document.body.style.display = "block";
 //try{resizeBy(1,0);  resizeBy(-1,0);}catch(e){}
}
function clearStack() {
  removeNodes(document.getElementById("stack_div"));
  st_hide();
}
function addToStack(formdiv) {
  var d = document.createElement("div");
  d.formData = formdiv.formData;
  d.fv_spar = filterview.source.params;
  d.fv_par  = filterview.params;
  d.fv_url  = filterview.formurl;
  d.fl_names= filters.names;
  d.fl_lbl  = filters.labels;
  d.fl_val  = filters.getValue();
	
  var cp = document.getElementById("formcaption");
  if(cp) d.innerHTML = cp.innerHTML;
  d.className = "stack_elem";
  var func = function(e){ 
               var t=getTarget(e);while(t&&(!t.formData))t=t.parentNode;
               if(t&&postForm({loading:1})) loadFromStack(t);
			 }
  addListener(d,"click",func);
  document.getElementById("stack_div").appendChild(d);
  st_open ? _mozFixTable() : st_show();
}

function loadFromStack(stackdiv) {
  var fd = stackdiv.formData;
  var stack = document.getElementById("stack_div");
  var s = stack.lastChild;
  while(s && s!=stackdiv) {
	stack.removeChild(s);
    s = stack.lastChild;
  }
  stack.removeChild(stackdiv);
  stack.childNodes.length ? _mozFixTable() : st_hide();
  loadFilterviewFromStack(stackdiv);
  loadForm(fd.name,fd.par,"mainform",fd.url);
}
function loadFilterviewFromStack(stackdiv) {
  filterview.source.params = stackdiv.fv_spar;
  filterview.params = stackdiv.fv_par;
  filterview.formurl = stackdiv.fv_url;
  filters.names = stackdiv.fl_names;
  filters.labels = stackdiv.fl_lbl;
  refreshFilters();
  document.getElementById("searchbox").value = "";
  filters.setValue(stackdiv.fl_val,true);
}

function popStack(i) {
  if(!i) i=0;
  var stack = document.getElementById("stack_div");
  var fc = stack.firstChild;
  var s = stack.lastChild;
  for(;s&&i>0;--i) s = s.previousSibling();
  if(s) loadFromStack(s);
  else  {
    loadForm("_blank",{},"mainform");
	if(fc) loadFilterviewFromStack(fc);
	clearStack();
  }
}

function reloadForm() {
  var d = window.form_div.formData
  if(!d) return;
  loadForm(d.name,d.par,"main_form",d.url);
}

function loadForm(formName,params,div,url) {

  if(div=="_subform") {
    div = window.form_div;
    addToStack(div);
	div.innerHTML = "";
	params["subform"]=1;
  }
  if(typeof div=="string") div = document.getElementById(div);
  
  clearActions();
  var cp = document.getElementById("formcaption");
  if(cp) cp.innerHTML = "";
  if(div) window.form_div = div;
  
  window.form_div.innerHTML = "";
  if(window.form_div.Form) {try{delete window.form_div.Form;}catch(e){}}
  if(formName=="_blank" && (!params["subform"])) return;
  
  window.form_div.formData = {name:formName,par:params,url:url};
  var poststr = "getForm=" + formName + "&" +  objToPostString(params);
  xml_conn.open("POST",url?url:window.getform_url,false);
  xml_conn.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  xml_conn.send(poststr);
  if(xml_conn.status != 200) {
    alert("Error " + xml_conn.status + "\nfout bij het ophalen van een formulier: pagina niet gevonden of kan niet geladen worden\nPagina: " + (url?url:window.getform_url));
    return false;
  }
  if(DEBUG) alert(xml_conn.responseText);

  try {
    eval(xml_conn.responseText);
  } catch(e) {
    showError("fatale fout bij het interpreteren javascript afkomstig van:\n" + poststr + "\nErrormessage: \n" + e.message + "\n" + xml_conn.responseText);
  }
}

function postForm(par) {
  var f = window.form_div.Form;
  if(!f) return true; // geen form -> posten ging goed
  return window.form_div.Form.post(par);
}

function resetForm() {
  return window.form_div.Form.reset();
}

function getControl(name) {
  return window.form_div.Form.content.getControlByName(name);
}


function validateError(name, text) {
  var ctrl = getControl(name);
  if(ctrl) ctrl.serverValidateError = text;
}

function union() {
  var ret = {};
  for(var i=0;i<arguments.length;++i) for(var x in arguments[i]) ret[x] = arguments[i][x];
  return ret;
}


