ie=(document.all)?1:0;
ns4=(parseInt(navigator.appVersion)>=4 && parseInt(navigator.appVersion)<=5)?1:0;
ns=(document.layers && ns4)?1:0;
if(ie==1||(ns4==1&&ns==0))
{
	dhtml=1;
}
else
{
	dhtml=0;
}

function gibWindowOpen(theURL,winName,features)
{ 
 window.open(theURL,winName,features);
}

function gibWindowOpen_old(theURL,winName,features)
{
//die SID mitanhaengen
 var newURL;
 if (theURL.indexOf("?") == -1)
  newURL = theURL + '?' + gibGetSID();
 else
  newURL = theURL + '&' + gibGetSID();  
 window.open(newURL,winName,features);
}

function gibGetSID()
{
 var cookies=document.cookie;
 var start=cookies.indexOf("gibSID=");
 if(start!=-1)
 {
  var end=cookies.indexOf(";",start);
  if(end==-1)
  {
   end=cookies.length;
  }
  var sidStr=cookies.substring(start+6,end);  
  return(sidStr); 
 }
 var loc = window.location.search;
 //die alte SID wegschneiden 
 var posSID = loc.lastIndexOf("&SID=");
 if (posSID == -1)
  posSID = loc.lastIndexOf("?SID="); 
 var posEndSID = loc.indexOf("&",posSID+1);
 var strSID;
 // es kommt kein & mehr
 if (posEndSID == -1)
  posEndSID = loc.indexOf("#",posSID+1);
 //SID ist der letzte Parameter
 if(posEndSID == -1)
  strSID = loc.substring(posSID + 1, loc.length);
 else
  strSID = loc.substring(posSID + 1, posEndSID);
 // gibt SID=session-id zurueck (ohne ? bzw. &)
 return strSID;
}


function checkEmail(totest)
{
 return ((totest.indexOf("@") >= 1) &&
         (totest.indexOf("@")+1<totest.indexOf(".",totest.indexOf("@"))) &&
         (totest.indexOf(".",totest.indexOf("@"))<totest.length -1));
}

function checkSearchString(teststring,minLength)
{ 
 reg = new RegExp("[0-9a-zA-Z_\.\-]{" + minLength + "}[0-9a-zA-Z_\.\-]*"); 
 return (reg.exec(teststring) == teststring); 
}

function checkSelect(objSelect,value)
{ 
 for(var i=0;i<objSelect.length;i++)
 {  
  if(objSelect.options[i].value == value)
  {        
   //objSelect.selectedIndex=i;
   objSelect.options[i].selected = true;
   break;
  }
 }
}

// check all checkboxes
function checkAll(field)
{
	for (i = 0; i < field.length; i++)
	{
		field[i].checked = true ;
	}
}
// uncheck all checkboxes
function uncheckAll(field)
{
	for (i = 0; i < field.length; i++)
	{
		field[i].checked = false ;
	}
}

// check or uncheck all checkboxes
function checkOrUncheckAll(field, selectCheckbox)
{
	if (selectCheckbox.checked)
	{
		checkAll(field);
	}
	else
	{
		uncheckAll(field);
	}
}

/**
* [Selectbox1]
* [Selectbox2] [Selectbox2] ... [Selectbox2] (nur aktuelles wird angezeigt, andere ausgeblendet)
*
* Jedem Element im Selectbox1 entspricht ein Selectbox2.
* Es gibt mehrere Selectbox2 (fuer jeden Wert im Selectbox1). 
* Wenn man die Auswahl im Selectbox1 aendert, wird 
* entsprechendes Selectbox2 angezeigt und andere Selectbox2 ausgeblendet.
* @param node  Selectbox1-node
* @param currentId  id-Schablone vom Selectbox2, '#'-Zeichen wird mit dem aktuellen Wert von Selectbox1 ersetzt.
* @param selectboxName	der Name des Selectbox2 Tags (gleich fuer alle Selectbox2)
*/
function changeSubSelect(node, currentId, selectboxName) {
	if (currentId == null || selectboxName == null) {
		var params = node.getAttribute('params').split(',');
		currentId = params[0];
		selectboxName = params[1];
	}
	currentId = currentId.replace(/#/g, node.value);
	var elementList = getElementsByNameAndTag(selectboxName, 'select');
	var elementIndex = 0;
	for (var i = 0; i < elementList.length; i++) {
		if (elementList[i].id == currentId) {
			elementIndex = i;
		}
	}
	for (var i = 0; i < elementList.length; i++) {
		if (elementList[i].id != currentId) {
			elementList[i].disabled = true;
			//elementList[i].style.display = 'none';
		} else {
			if (i == elementIndex) {
				elementList[i].disabled = false;
				//elementList[i].style.display = 'block';
				elementList[i].getElementsByTagName("option")[0].selected = true;
			}
		}
	}
	var containerList = getElementsByNameAndTag(selectboxName, 'tr');
	for (var i = 0; i < containerList.length; i++) {
		if (containerList[i].id != currentId) {
			containerList[i].style.display = 'none';
		} else {
			containerList[i].style.display = '';
		}
	}
}

function showCategories() {
	var elementList = getElementsByNameAndTag('experience[0][category]', 'select');
	var text = '';
	for (var i = 0; i < elementList.length; i++) {
		if (!elementList[i].disabled)
		{
			text += elementList[i].id + "=" + elementList[i].disabled + "    ";
		}
	}
	alert(text);
}

/**
* Liest das Datum aus 3 Selectboxen und Speichert es in das Hidden-Feld als dd.mm.yyyy
* [03][02][1979]   - Datum als 3 Selectboxes [dd][mm][yyyy]
*/
function updateDate(nodeName) {
	document.getElementsByName(nodeName)[0].value = document.getElementsByName(nodeName + "_day")[0].value + '.' + document.getElementsByName(nodeName + "_month")[0].value + '.' + document.getElementsByName(nodeName + "_year")[0].value;
}

/**
* IE fix fuer getElementsByName Methode
*/
function getElementsByNameAndTag(name, tag) {
	 var elem = document.getElementsByTagName(tag);
	 var arr = new Array();
	 for(i = 0,iarr = 0; i < elem.length; i++) {
		  att = elem[i].getAttribute("name");
		  if(att == name) {
			   arr[iarr] = elem[i];
			   iarr++;
		  }
	 }
	 return arr;
}

/**
* IE fix fuer getElementsByName Methode
*/
function getElementsByName(name, tags) {
	var arr = new Array();
	if (tags == null) {
		tags = new Array('a','abbr','acronym','address','applet','area','b','base','basefont','bdo','big','blockquote','body','br','button','caption','center','cite','code','col','colgroup','dd','del','dfn','dir','div','dl','dt','em','fieldset','font','form','frame','frameset','h1-h6','head','hr','html','i','iframe','img','input','ins','isindex','kbd','label','legend','li','link','map','menu','meta','noframes','noscript','object','ol','optgroup','option','p','param','pre','q','s','samp','script','select','small','span','strike','strong','style','sub','sup','table','tbody','td','textarea','tfoot','th','thead','title','tr','tt','u','ul','var');
	}
	for(var i = 0; i < tags.length; i++) {
		var tagElements = getElementsByNameAndTag(name, tags[i]);
		if (tagElements.length > 0) {
			arr = arr.concat(tagElements);
		}
	}
	return arr;
}

/**
* Fuegt ein neues Element in die Liste von Elementen hinzu.
* z.B. haben wir folgende Elemente:
*   address[0][city], address[0][street], ... (Element0)
*   address[1][city], address[1][street], ... (Element1)
*   ...
*   address[N][city], address[N][street], ... (ElementN)
* Es gibt also N+1 Elemente. Die Methode fuegt noch ein Element mit dem Index N+1 hinzu.
*
* @param containerId  id vom Element, das die Liste beinhaltet, z.B. die Liste ist in einem DIV <div id="address">...</div>, dann containerId == 'address'
* @param listElementName  der Name eines Listenelements, z.B. <table name="address_table">...</table>, dann listElementName == 'address_table'
*/
function addListElement(containerId, listElementName, listElementTag) {
	var container = document.getElementById(containerId);
	var listElements = getElementsByNameAndTag(listElementName, listElementTag);
	var firstElement = listElements[0].cloneNode(true);
	enableFormElements(firstElement);
	firstElement.style.display = 'block';
	container.appendChild( firstElement );
	var newIndex = listElements.length-1;
	
	var tagNames = new Array('select', 'input', 'textarea', 'div', 'tr', 'table');
	var attrNames = new Array('params', 'id', 'name');
	
	var tbls = getElementsByNameAndTag(listElementName, listElementTag);
	for (var i = 0; i < tbls.length; i++) {
		if (i == tbls.length - 1) {
			for (var j = 0; j < tagNames.length; j++) {
				var formElements = tbls[i].getElementsByTagName(tagNames[j]);
				for (var k = 0; k < formElements.length; k++) {
					var attrPattern1 = /(.*)([^\[]+)\[(\d+)\](.*)/g;
					var attrPattern2 = /(.*)(\w+)_(\d+)_(.*)/g;
					for (var m = 0; m < attrNames.length; m++) {
						var attr = formElements[k].getAttribute(attrNames[m]);
						if (attr != null) {
							if (attr.match(attrPattern1)) {
								attr = RegExp.$1 + RegExp.$2 + '[' + newIndex + ']' + RegExp.$4;
							}
							if (attr.match(attrPattern2)) {
								attr = RegExp.$1 + RegExp.$2 + '_' + newIndex + '_' + RegExp.$4;
							}
							formElements[k].setAttribute(attrNames[m], attr);
						}
					}
					
					if (formElements[k].nodeName == 'SELECT') {
						formElements[k].getElementsByTagName("option")[0].selected = true;
					} else {
						if (formElements[k].type != 'hidden')
						{
							formElements[k].value = '';
						}
					}
				}
			}
		}
	}
}

/**
* Fuegt neue Elemente zur Elementliste. 
* Wenn onlyIfEmpty gleich true ist, werden die Elemente nur dann hinzugefuegt, wenn die Liste leer ist. 
*/
function addListElements(containerId, listElementName, listElementTag, count, onlyIfEmpty) {
	var execute = true;
	if (onlyIfEmpty) {
		var elementCount = listElementCount(listElementName, listElementTag);
		if (elementCount > 0) {
			execute = false;
		}
	}
	if (execute) {
		for (var i=0; i < count; i++) {
			addListElement(containerId, listElementName, listElementTag);
		}
	}
}

/**
* Gibt die Anzahl von Elementen in der Liste zurueck 
* (ausschliesslich dem ersten Element, das als Schablone dient). 
*/
function listElementCount(listElementName, listElementTag) {
	var listElements = getElementsByNameAndTag(listElementName, listElementTag);
	return listElements.length - 1;
}

/**
* Deaktiviert Formularfelder im Container mit id containerId
*/
function disableFormElementsById(containerId) {
	disableOrEnableFormElements(document.getElementById(containerId), true);
}

/**
* Aktiviert Formularfelder im Container mit id containerId
*/
function enableFormElementsById(containerId) {
	disableOrEnableFormElements(document.getElementById(containerId), false);
}

/**
* Deaktiviert Formularfelder im Container container
*/
function disableFormElements(container) {
	disableOrEnableFormElements(container, true);
}

/**
* Aktiviert Formularfelder im Container container
*/
function enableFormElements(container) {
	disableOrEnableFormElements(container, false);
}

/**
* Aktiviert/Deaktiviert Formularfelder im Container mit id containerId
*/
function disableOrEnableFormElements(container, isDisabled) {
	var formTags = new Array('input', 'select', 'textarea');
	for (var i = 0; i < formTags.length; i++) {
		var tagElements = container.getElementsByTagName(formTags[i]);
		for (var j = 0; j < tagElements.length; j++) {
			tagElements[j].disabled = isDisabled;
		}
	}
}

function hideOrShowById(elementId, condition) {
	if (condition) {
		document.getElementById(elementId).style.display = 'none';
	} else {
		document.getElementById(elementId).style.display = '';
	}
}

function hideById(elementId, condition) {
	if (condition != false) {
		hideOrShowById(elementId, true);
	}
}

function showById(elementId, condition) {
	if (condition != false) {
		hideOrShowById(elementId, false);
	}
}

// popups
var pop = null;

function popdown() {
  if (pop && !pop.closed) pop.close();
}

function popup(obj, w, h) {
  var url = (obj.getAttribute) ? obj.getAttribute('href') : obj.href;
  if (!url) url = obj;
  if (!url) return true;
  w = (w) ? w += 20 : 150;  // 150px*150px is the default size
  h = (h) ? h += 25 : 150;
  var args = 'width='+w+',height='+h+',resizable=no,scrollbars=yes';
  popdown();
  pop = window.open(url,'',args);
  return (pop) ? false : true;
}

function setdatefromcal(mycal,suff)
{		
	setSuff(suff);
	var myfulldate = document.termine.elements['fulldate'];
	myfulldate.value = document.termine.elements['day'+suff].value+'.'+document.termine.elements['month'+suff].value+'.'+document.termine.elements['year'+suff].value;
	mycal.select(myfulldate,'anchor'+suff,'dd.MM.yyyy');	
}

function montre(id)
{	
	with (document)
	{
		if (getElementById)
			getElementById(id).style.display = 'block';
		else if (all)
			all[id].style.display = 'block';
		else
			layers[id].display = 'block';
	}
}

function cache(id)
{	
	with (document)
	{
		if (getElementById)
			getElementById(id).style.display = 'none';
		else if (all)
			all[id].style.display = 'none';
		else
			layers[id].display = 'none';
	}
}

//window.onunload = popdown;
//window.onfocus = popdown;


