var url_prefix = '';

// 1. ENABLE GET FORM
prepareDataFieldFormLoader = function() {
  var divs = collectionToArray(document.getElementById("content").getElementsByTagName("DIV"));
  if (document.getElementById("footer")) {
	var cols = document.getElementById("footer").getElementsByTagName("DIV");
	for (i = 0; i < cols.length; i++) {
	  divs[divs.length] = cols[i];
	}
  }
  if (document.getElementById("actionNavContainer")) {
	var cols = document.getElementById("actionNavContainer").getElementsByTagName("DIV");
	for (i = 0; i < cols.length; i++) {
	  divs[divs.length] = cols[i];
	}
  }
  if (document.getElementById("panelContainer")) {
	var cols = document.getElementById("panelContainer").getElementsByTagName("DIV");
	for (i = 0; i < cols.length; i++) {
	  divs[divs.length] = cols[i];
	}
  }
  if (document.getElementById("footOuter")) {
	var cols = document.getElementById("footOuter").getElementsByTagName("DIV");
	for (i = 0; i < cols.length; i++) {
	  divs[divs.length] = cols[i];
	}
  }

  var reDataFieldLoader = /dataFieldFormLoader/;
  for (var i=0; i<divs.length; i++) {
	if (divs[i].className && divs[i].className.match(reDataFieldLoader)) {
	  dataFieldFormLoaderOnclick(divs[i].id);
	}
  }
}
if (window.addEventListener) { window.addEventListener("load", prepareDataFieldFormLoader, false) }
else if (window.attachEvent) window.attachEvent("onload", prepareDataFieldFormLoader);

function dataFieldFormLoaderOnclick(dataFieldFormLoaderId) {
  document.getElementById(dataFieldFormLoaderId).onclick = function() {

	// get params from container and content divs
	var params = _getParams(this);
	var contentTarget = _getContentTarget(this);

	var textheight;
	if (params.formType == 'textarea') {
	  textheight  = get_height_of_element(this) + 30;
	}

	var parameters = new Hash();
	parameters.set('level1',        params.dataType);
	parameters.set('level2',        'edit');
	parameters.set('level3',        params.dataTypeId);
	parameters.set('dataFieldName', params.dataFieldName);
	parameters.set('formType',      params.formType);
	parameters.set('ws',            '1');
	parameters.set('rand',          Math.random());

	new Ajax.Request(url_prefix + '/neo/index.pl', {
	  parameters: parameters,
	  onSuccess: function(transport) {
		contentTarget.innerHTML = transport.responseText;
		handleDataFieldForm(dataFieldFormLoaderId,textheight);
      }
    });

/*	HTTPsend(
	  'POST',
	  url_prefix + '/neo/index.pl',
	  'level1=' + params.dataType + '&level2=edit&level3=' + params.dataTypeId + '&formType=' + params.formType + '&dataFieldName=' + params.dataFieldName,
	  "document.getElementById('" + contentTarget.id + "').innerHTML = result; handleDataFieldForm('"+this.id+"','"+textheight+"');",
	  "document.getElementById('" + contentTarget.id + "').innerHTML = result;",
	  '',
	  1
	);
*/

	this.onclick = function() {};
  }
}

// 2. LAYOUT AND ENABLE SAVE FORM
handleDataFieldForm = function(dataFieldFormLoaderId, textheight) {

  var dataFieldFormLoader = document.getElementById(dataFieldFormLoaderId);

  var inputs    = collectionToArray(dataFieldFormLoader.getElementsByTagName("INPUT"));
  var textareas = collectionToArray(dataFieldFormLoader.getElementsByTagName("TEXTAREA"));
  var selects   = collectionToArray(dataFieldFormLoader.getElementsByTagName("SELECT"));
  var formFields = inputs;
  for (i = 0; i < textareas.length; i++) {
	formFields[formFields.length] = textareas[i];
  }
  for (i = 0; i < selects.length; i++) {
	formFields[formFields.length] = selects[i];
  }

  for (i = 0; i < formFields.length; i++) {

	if (textheight) {
	  var fieldheight = get_height_of_element(formFields[i]);
	  if (textheight > fieldheight) {
		formFields[i].style.height = textheight + 'px';
	  }
	}

	try {
	  formFields[i].focus()
	} catch(error) {}

	formFields[i].onclick = function() {}

	formFields[i].onchange = function() {
	  this.onblur = function() {};
	  var re = /dataFieldFormLoader/;
	  var dataFieldFormLoader = this.parentNode.parentNode.className.match(re) ? this.parentNode.parentNode : this.parentNode.parentNode.parentNode;

	  // get params from container and content divs
	  var params        = _getParams(dataFieldFormLoader);
	  var contentTarget = _getContentTarget(dataFieldFormLoader);

	var parameters = new Hash();
	parameters.set('level1',               params.dataType);
	parameters.set('level2',               'save');
	parameters.set('level3',               params.dataTypeId);
	parameters.set('dataFieldName',        params.dataFieldName);
	parameters.set('dataFieldValue',       this.value);
	parameters.set('textile',              params.textile);
	parameters.set('forceReloadAfterSave', params.forceReloadAfterSave);
	parameters.set('ws',                   '1');
	parameters.set('rand',                 Math.random());

	new Ajax.Request(url_prefix + '/neo/index.pl', {
	  parameters: parameters,
	  onSuccess: function(transport) {
		contentTarget.innerHTML = transport.responseText;
		checkForceRedirectTo();
		checkForceReload();
		checkCustomJSCall();
		dataFieldFormLoaderOnclick(dataFieldFormLoaderId);
      }
    });

/*
	  HTTPsend(
		'POST',
		url_prefix + '/neo/index.pl',
		'level1=' + params.dataType + '&level2=save&level3=' + params.dataTypeId + '&dataFieldName=' + params.dataFieldName + '&dataFieldValue=' + escape(this.value) + '&textile=' + params.textile + '&token=' + params.token,
		"document.getElementById('" + contentTarget.id + "').innerHTML = result; checkForceRedirectTo(); dataFieldFormLoaderOnclick('" + dataFieldFormLoader.id + "');",
		"document.getElementById('" + contentTarget.id + "').innerHTML = result;",
		'',
		1
	  );
*/
	}

	formFields[i].onblur = function() {
	  var re = /dataFieldFormLoader/;
	  var dataFieldFormLoader = this.parentNode.parentNode.className.match(re) ? this.parentNode.parentNode : this.parentNode.parentNode.parentNode;

	  // get params from container and content divs
	  var params = _getParams(dataFieldFormLoader);
	  var contentTarget = _getContentTarget(dataFieldFormLoader);

	  var parameters = new Hash();
	  parameters.set('level1',        params.dataType);
	  parameters.set('level2',        'read');
	  parameters.set('level3',        params.dataTypeId);
	  parameters.set('dataFieldName', params.dataFieldName);
	  parameters.set('textile', params.textile);
	  parameters.set('token', params.token);
	  parameters.set('ws',                        '1');
	  parameters.set('rand',                      Math.random());

	  new Ajax.Request(url_prefix + '/neo/index.pl', {
		parameters: parameters,
		onSuccess: function(transport) {
		  contentTarget.innerHTML = transport.responseText;
		  dataFieldFormLoaderOnclick(dataFieldFormLoader.id);
		}
	  });

/*
	  HTTPsend(
		'POST',
		url_prefix + '/neo/index.pl',
		'level1=' + params.dataType + '&level2=read&level3=' + params.dataTypeId + '&dataFieldName=' + params.dataFieldName + '&textile=' + params.textile + '&token=' + params.token,
		"document.getElementById('" + contentTarget.id + "').innerHTML = result; dataFieldFormLoaderOnclick('" + dataFieldFormLoader.id + "');",
		"document.getElementById('" + contentTarget.id + "').innerHTML = result;",
		'',
		1
	  );
*/
	}

  }
}


