var ts_addfield_counter = 0;

function str_replace(subject, search, replace) 
{
    return subject.split(search).join(replace);
}

function ts_showTagById(tagId)
{
	var tag = document.getElementById(tagId);
	if (tag)
		tag.style.visibility = 'visible';				
}

function trim(str) 
{
  while (str.substring(0,1) == ' ') 
    str = str.substring(1,str.length);
  while (str.substring(str.length-1,str.length) == ' ') 
    str = str.substring(0,str.length-1);
  return str;
}

function ts_childNodes(fieldset, counter, line, errorClass)
{
		var field = fieldset.childNodes; // Array von Kindknoten von neuesFeldset im neuesFeld speichern (für mehr als ein Feld)	
		for (var i=0; i < field.length; i++) // dynamisch Feldnamen erstellen
		{				
			ts_childNodes(field[i], counter, line);
		
			if ((field[i].tagName == "INPUT") || 
							 (field[i].tagName == "SELECT") || 
							 (field[i].tagName == "TEXTAREA"))
			{
				field[i].name += counter;
				if (field[i].tagName == "SELECT")
					field[i].selectedIndex = 0;
			}

			if (field[i].tagName == "LABEL" && field[i].htmlFor)
				field[i].htmlFor += counter;
			
			if (field[i].id)
			{
				// Wenn Trennline
				if (line != null && field[i].id == line.id)  
	  			field[i].style.visibility = 'hidden';
				field[i].id += counter;				
			}
				
			if (errorClass && field[i].className)
				field[i].className = str_replace(field[i].className, errorClass, "");
				
			if (field[i].value && field[i].tagName != "OPTION")
			{
				field[i].value = '';																
			}
		} // end for	
}


function ts_addField(fieldId, buttonsId, lineId, hiddenId, counter, errorClass)
{
		var line = null;
		if (lineId && document.getElementById(lineId))
		  line = document.getElementById(lineId);
					
		ts_addfield_counter++;
		counter += ts_addfield_counter;
	
		if (!document.getElementById(fieldId))
			return;
		
		var newFieldset = document.getElementById(fieldId).cloneNode(true); //erstellt eine identische Kopie eines Knotens
		
		newFieldset.id = fieldId + counter; // IDs des Unterknotens eins höher setzen
			
		ts_childNodes(newFieldset, counter, line, errorClass);
			
		var place = document.getElementById(buttonsId);
		place.parentNode.insertBefore(newFieldset,place);

		// Trennline sichtbar machen
		if (line != null && counter == 1)
			line.style.visibility = 'visible';
		else
			ts_showTagById(lineId+(counter-1));
		
		var hiddenField = document.getElementById(hiddenId); 
		if (hiddenField)
			hiddenField.value = counter+1;
		return counter;
}

function ts_removeField(fieldId, parentFieldsetId)
{
	var form_nodes = document.getElementById(parentFieldsetId).childNodes; //Array von Knoten des Fieldsets
	
	var newFields = new Array();
	for (var i=0; i < form_nodes.length;  i++)
	{
		if (form_nodes[i].id && form_nodes[i].id.search(fieldId) != -1)
			newFields[newFields.length] = form_nodes[i].id;
	}// end for
	
	//alert (newFields.length);
	var index = newFields.length-1; // Stelle des letzen Eintrags im Array
	
	var last_id = newFields[index];
	// alert (last_id);
	
	if (newFields.length > 1)
		document.getElementById(last_id).parentNode.removeChild(document.getElementById(last_id));
}

function ts_r_setAllCheckBoxStatus(field, status)
{
		var fieldset = field.childNodes; 
		for (var i=0; i < fieldset.length; i++) // dynamisch Feldnamen erstellen
		{
			ts_r_setAllCheckBoxStatus(fieldset[i], status);			
			if (fieldset[i].tagName == "INPUT")
        fieldset[i].checked = status;			
		}
}

function ts_setAllCheckBoxStatus(sender, id)
{
   if (!sender || !document.getElementById(id))
      return;		
		
 	 ts_r_setAllCheckBoxStatus(document.getElementById(id), sender.checked);
}

function ts_r_toggle_enabled_status(field, status)
{
		var fieldset = field.childNodes; 
		for (var i=0; i < fieldset.length; i++) // dynamisch Feldnamen erstellen
		{
			ts_r_toggle_enabled_status(fieldset[i], status);			
			if (fieldset[i].tagName == "INPUT" ||
					fieldset[i].tagName == "TEXTAREA" ||
					fieldset[i].tagName == "SELECT")
        fieldset[i].disabled = !status;
		}	
}

function ts_toggle_enabled_status(id, status)
{
   if (!document.getElementById(id))
      return;		
		
 	 ts_r_toggle_enabled_status(document.getElementById(id), status);
}
