
/*
Utilities for use in Inmagic WebPublisher dynamic edit forms (EF).
*/


// Class names defined in user's CSS
var MyLabelClass = "EditLabel";
var MyTextareaClass = "EditTextarea";
var MyTextInputClass = "EditTextInput";
var MySelectInputClass = "EditSelectInput";
var MyButtonInputClass = "EditButtonInput";
var MyPasswordInputClass = "EditPasswordInput";
var MyRadioInputClass = "EditRadioInput";
var MyCheckboxInputClass = "EditCheckboxInput";


//reverse WebPublisher error suppression
window.onerror = function(){return false;}

//add event(s) to window onload
addEvent(window, "load", OverrideFormCss);
//addEvent(window, "load", AddElements);

// event listener
function addEvent(o,e,f)
{
	if (o.addEventListener){ o.addEventListener(e,f,true); return true; }
	else if (o.attachEvent){ return o.attachEvent("on"+e,f); }
	else { return false; }
}


// overrides CSS class assignments for all form elements on page
function OverrideFormCss()
{
	var els = new Array();
 	els = document.getElementsByTagName('textarea');
 	var i = 0;
 	for (i=0;i<els.length;i++)
 	{
   		els[i].className = MyTextareaClass;
   		els[i].onfocus = null;
   		els[i].onblur = null;
   		
 	}
 	els = document.getElementsByTagName('label');
 	for (i=0;i<els.length;i++)
 	{
   		els[i].className = MyLabelClass;
 	}
 	els = document.getElementsByTagName('input');
 	for (i=0;i<els.length;i++)
 	{
 		switch (els[i].type)
 		{
 			case "text":
   				els[i].className = MyTextInputClass;
   				break;
   			case "password":
   				els[i].className = MyPasswordInputClass;
   				break;
   			case "select-one":
   				els[i].className = MySelectInputClass;
   				break;
   			case "select-multiple":
   				els[i].className = MySelectInputClass;
   				break;   				
   			case "button":
   				els[i].className = MyButtonInputClass;
   				break;
   			case "checkbox":
   				els[i].className = MyCheckboxInputClass;
   				break;
   			case "radio":
   				els[i].className = MyRadioInputClass;
   				break;
   		}
 	} 	
}


function AddElements()
{
	//AddHiddenFieldInput("Some-Field", "Some Value");
}

// adds new hidden input to edit_form
function AddHiddenFieldInput(FieldName, FieldValue)
{
	
	var eForm = document.getElementsByName('edit_form')[0];
	var eFormInputs = new Array();
	eFormInputs = eForm.elements;
	
	// count form elements named EIx
	var i = 0;
	var count = -1;
	for (i=0;i<eFormInputs.length;i++)
	{
		switch (eFormInputs[i].name.indexOf('EI'))
		{
			case 0:
				count++;
				break;
		}	
	}

	// create EF input
	newEl = document.createElement('input');
	newEl.name = "EF" + (count+1);
	newEl.type = "text";
	newEl.value = FieldName;
	eForm.appendChild(newEl);
	
	// create EI input
	var newEl = document.createElement('input');
	newEl.name = "EI" + (count+1);
	newEl.type = "text";
	newEl.value = FieldValue;
	eForm.appendChild(newEl);	

	// modify existing FN input
	AddMe(FieldName, 'FN');
	
}

function AddMe(me, targetName)
{
  var target = document.getElementsByName(targetName)[0];
 
  var index = target.value.indexOf(me);
   
  // if me. not found, add me 
  if (index == -1)
  {
    
    target.value += "|" + me;
  }
  

}

