//  function switchDivTyp()
//  this function takes the id of a div
//  and calls the other functions required
//  to show that div
//
function switchDivTyp(number)
{
  myTyp = getObject("typ"+number);
  if (myTyp)
  {
  	if (myTyp.value=="unused")
	{
	 switchOffName(number);
	 switchOffTextarea(number);
	 switchOffLength(number);
	 switchOffForced(number);
 	 switchOffSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
	 getObject("typ"+number).selectedIndex=0;
	}
	
	if (myTyp.value=="undefined")
	{
	 switchOffName(number);
	 switchOffTextarea(number);
	 switchOffLength(number);
	 switchOffForced(number);
 	 switchOffSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
	 getObject("typ"+number).selectedIndex=0;
	}
	
	if (myTyp.value=="")
	{
	 switchOffName(number);
	 switchOffTextarea(number);
	 switchOffLength(number);
	 switchOffForced(number);
 	 switchOffSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
	 getObject("typ"+number).selectedIndex=0;
	}
  
  	if (myTyp.value=="textfield_1line")
	{
	 switchOnName(number);
	 switchOffTextarea(number);
	 switchOnLength(number);
	 switchOnForced(number);
 	 switchOnSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
	}
	else if (myTyp.value=="textfield_nline")
	{
	 switchOnName(number);
	 switchOffTextarea(number);
	 switchOffLength(number);
	 switchOffForced(number);
 	 switchOffSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
  	}
	else if (myTyp.value=="checkboxes")
	{
	 switchOnName(number);
	 switchOnTextarea(number);
	 switchOffLength(number);
	 switchOffForced(number);
 	 switchOffSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
	}
	else if (myTyp.value=="password")
	{
	 switchOnName(number);
	 switchOffTextarea(number);
	 switchOnLength(number);
	 switchOnForced(number);
 	 switchOffSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
	}
	else if (myTyp.value=="radiobuttons")
	{
	 switchOnName(number);
	 switchOnTextarea(number);
	 switchOffLength(number);
	 switchOffForced(number);
 	 switchOffSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
	}
	else if (myTyp.value=="list_1select")
	{
	 switchOnName(number);
	 switchOnTextarea(number);
	 switchOffLength(number);
	 switchOnForced(number);
 	 switchOffSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
	}
	else if (myTyp.value=="list_nselect")
	{
	 switchOnName(number);
	 switchOnTextarea(number);
	 switchOffLength(number);
	 switchOnForced(number);
 	 switchOffSemTyp(number);
	 switchOffSemExp(number);
	 switchOffErrorMsg(number);
	}
  }
  else
  {
   alert("Sorry, could not get the right object");
  }

}

function switchDivSemTyp(number)
{
  mySemTyp = getObject("semTyp"+number+"feld");
  if (mySemTyp)
  {
    x=mySemTyp.value;
  	if (x=="none")
		{
   	 myForcedValue = getObject("forced"+number+"feld").checked;
	   if (myForcedValue == false) switchOffErrorMsg(number);
		}
		else
		{
	 	 switchOnErrorMsg(number);
	 	 getObject("forced"+number+"feld").checked=true;
		}
	
	if (x=="regExp")
	{
	 switchOnSemExp(number);
	}
	else
	{
	 switchOffSemExp(number);
	}
  }
  else
  {
   alert("Sorry, could not get the right object");
  }
}

function switchDivForced(number)
{
  myForced = getObject("forced"+number+"feld");
  if (myForced)
  {
  	if (myForced.checked== true)
	{
	 switchOnErrorMsg(number);
	}
	else
	{
	 mySemTyp = getObject("semTyp"+number+"feld");
	 x=mySemTyp.value;
	 if (x=="none") switchOffErrorMsg(number);
  	}
  }
  else
  {
   alert("Sorry, could not get the right object");
  }

}

function switchOnTextarea(number) {
  var style_sheet = getStyleObject("textarea"+number);
  if (style_sheet)
  {
    changeObjectVisibility("textarea"+number,"visible");
	getObject("textarea"+number+"feld").rows=10;
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOffTextarea(number) {
  var style_sheet = getStyleObject("textarea"+number);
  if (style_sheet)
  {
    changeObjectVisibility("textarea"+number,"hidden");
	getObject("textarea"+number+"feld").value="";
	getObject("textarea"+number+"feld").rows=1;
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOnLength(number) {
  var style_sheet = getStyleObject("length"+number);
  if (style_sheet)
  {
    changeObjectVisibility("length"+number,"visible");
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOffLength(number) {
  var style_sheet = getStyleObject("length"+number);
  if (style_sheet)
  {
    changeObjectVisibility("length"+number,"hidden");
	getObject("length"+number+"feld").value="";
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOnSemTyp(number) {
  var style_sheet = getStyleObject("semTyp"+number);
  if (style_sheet)
  {
    changeObjectVisibility("semTyp"+number,"visible");
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOffSemTyp(number) {
  var style_sheet = getStyleObject("semTyp"+number);
  if (style_sheet)
  {
    changeObjectVisibility("semTyp"+number,"hidden");
	getObject("semTyp"+number+"feld").selectedIndex = 0;
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOnSemExp(number) {
  var style_sheet = getStyleObject("semExp"+number);
  if (style_sheet)
  {
    changeObjectVisibility("semExp"+number,"visible");
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOffSemExp(number) {
  var style_sheet = getStyleObject("semExp"+number);
  if (style_sheet)
  {
    changeObjectVisibility("semExp"+number,"hidden");
	getObject("semExp"+number+"feld").value = "";
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOnErrorMsg(number) {
  var style_sheet = getStyleObject("errorMsg"+number);
  if (style_sheet)
  {
    changeObjectVisibility("errorMsg"+number,"visible");
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOffErrorMsg(number) {
  var style_sheet = getStyleObject("errorMsg"+number);
  if (style_sheet)
  {
    changeObjectVisibility("errorMsg"+number,"hidden");
	getObject("errorMsg"+number+"feld").value = "";
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOnName(number) {
  var style_sheet = getStyleObject("name"+number);
  if (style_sheet)
  {
    changeObjectVisibility("name"+number,"visible");
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOffName(number) {
  var style_sheet = getStyleObject("name"+number);
  if (style_sheet)
  {
    changeObjectVisibility("name"+number,"hidden");
		getObject("name"+number+"feld").value = "";
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOnForced(number) {
  var style_sheet = getStyleObject("forced"+number);
  if (style_sheet)
  {
    changeObjectVisibility("forced"+number,"visible");
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}

function switchOffForced(number) {
  var style_sheet = getStyleObject("forced"+number);
  if (style_sheet)
  {
    changeObjectVisibility("forced"+number,"hidden");
		getObject("forced"+number+"feld").checked=false;
  }
  else 
  {
    alert("Sorry, this only works in browsers that do support Dynamic HTML");
  }
}


//  function getStyleObject(string) -> returns style object
//  given a string containing the id of an object
//  the function returns the stylesheet of that object
//  or false if it can't find a stylesheet.  Handles
//  cross-browser compatibility issues.
//
function getStyleObject(objectId) {
  // checkW3C DOM, then MSIE 4, then NN 4.
  //
  if(document.getElementById && document.getElementById(objectId)) {
	return document.getElementById(objectId).style;
   }
   else if (document.all && document.all(objectId)) {  
	return document.all(objectId).style;
   } 
   else if (document.layers && document.layers[objectId]) { 
	return document.layers[objectId];
   } else {
	return false;
   }
}

function getObject(objectId) {
  // checkW3C DOM, then MSIE 4, then NN 4.
  //
  if(document.getElementById && document.getElementById(objectId)) {
	return document.getElementById(objectId);
   }
   else if (document.all && document.all(objectId)) {  
	return document.all(objectId);
   } 
   else if (document.layers && document.layers[objectId]) { 
	return document.layers[objectId];
   } else {
	return false;
   }
}

//  function changeObjectVisibilty
function changeObjectVisibility(objectId, newVisibility) {
    // first get the object's stylesheet
    var styleObject = getStyleObject(objectId);

    // then if we find a stylesheet, set its visibility
    // as requested
    //
    if (styleObject) {
	styleObject.visibility = newVisibility;
	return true;
    } else {
	return false;
    }
}
