var hiddenSelects = [];
var hideSelectLayers = [];

/* prüft, on der gerade verwendete Browser der IE6 ist oder nicht */
function isIE6 () {
	return (window.XMLHttpRequest) ? false : true;
}

/* prüft, on der gerade verwendete Browser der IE7 ist oder nicht */
function isIE7 () {
	return (document.all && navigator.appVersion.indexOf("MSIE 7.")!=-1) ? true : false;
}

/* speichert ein Cookie mit verfallsdatum */
function setCookie (name,value,duration) {
	if (typeof(name) != 'string') {return false;}
	value = value+'';
	value = value.split(', ').join(','); // fix für Safari;
	cookieString = name+'='+value;
	if (!isNaN(duration)) {cookieString += '; expires='+expireTime(duration)+'; path=/';}
	document.cookie = cookieString;
}

/* gibt den inhalt eines cookies zurück */
function getCookie (name) {
	var start, ende, v, i, f
	var c = document.cookie;
	
	if (!c || typeof(name) != 'string' || c.indexOf(name+'=') == -1) {return null;}
	
	start = c.indexOf(name+"=") + name.length + 1;
    ende = c.indexOf(";",start);
    if(ende == -1) ende = c.length;
    
	v = c.substring(start,ende);
	if (v.length && v.length < 25) {
		i = parseInt(v);
		f = parseFloat(v);
		
		if (i.toString(10) == v) {
			return i;	
		} else if (i.toString(10) == v) {
			return f;
		} else {
			return v;	
		}
	}
	return v;	
}

/* berechnet und formatiert den Wert für das Verfallsdatum eines cookies */
function expireTime (tage) {
	if (isNaN(tage)) {return '';}
	var jetzt = new Date();
	var ablauf = new Date(jetzt.getTime() + (tage * 24 * 3600 * 1000));
	return ablauf.toGMTString();
}

/* versteckt die von Layern überlappten Selectboxes im IE6 */
function hideSelectboxes (obj) {
	if (isIE6()) {
		if (obj) {
			obj = $(obj);
			
			alreadyRegistered = false;
			for (var k=0; k<hideSelectLayers.length; k++) {
				if (hideSelectLayers[k] == obj) {
					alreadyRegistered = true; break;
				}
			}
			
			if (!alreadyRegistered) {
				hideSelectLayers.push(obj);
			}
		}
		
		var posibleUnhides = [];
		var newHides =[];
		var selects = document.getElementsByTagName("select");
		
		for (var o=0; o<hideSelectLayers.length; o++) {
			obj = hideSelectLayers[o];
			pos = Position.cumulativeOffset(obj);
			xMin = pos[0];
			yMin = pos[1];
			xMax = xMin + obj.offsetWidth;
			yMax = yMin + obj.offsetHeight;
	
			//alle Selectboxen durchgehen
			for (i=0; i < selects.length; i++) {
				pos = Position.cumulativeOffset(selects[i]);
				sel_xMin = pos[0];
				sel_yMin = pos[1];
				sel_xMax = sel_xMin + selects[i].offsetWidth;
				sel_yMax = sel_yMin + selects[i].offsetHeight;
	
				//Wenn überlappung, dann selectbox ausschalten
				if ( !(sel_xMin > xMax 
					|| xMin > sel_xMax
					|| sel_yMin > yMax
					|| yMin > sel_yMax) ) {
					if (selects[i].style.visibility != 'hidden') {
						selects[i].style.visibility = 'hidden';
					}
					newHides[i] = true;
				} else {
					if (hiddenSelects[i] && selects[i].style.visibility != 'visible') {
						posibleUnhides[i] = true;
					}
				}
			}
		}
		for (i=0; i < selects.length; i++) {
			if (posibleUnhides[i] && !newHides[i]) {
				selects[i].style.visibility = 'visible';
			}
		}
		hiddenSelects = newHides;
	}
}

//macht alle invisible gesetzen Selectboxen wieder sichtbar (für IE6)
function unhideSelectboxes (obj) {
	if (isIE6()) {		
		if (obj) {
			obj = $(obj);
			var newHideSelectLayers = [];
			for (var k=0; k<hideSelectLayers.length; k++) {				
				if (hideSelectLayers != obj) {
					newHideSelectLayers.push(hideSelectLayers[k]);
				}
			}
		}
		hideSelectLayers = newHideSelectLayers;
		hideSelectboxes();
	}
}


/*====== Textfelder mit Vorbelegung (z.B. Login) ======*/
function initEmptyField (fieldID) {
	var f = $(fieldID);	
	if (f) {
		f.observe('focus', emptyFieldFocus);
		f.observe('blur', emptyFieldBlur);
		emptyFieldBlur({target:f});
	}
}
function emptyFieldFocus (e) {
	Event.element(e).removeClassName('empty');
}
function emptyFieldBlur (e) {
	var t = Event.element(e);
	if (t.value == '') {
		t.addClassName('empty');
	}
}

/*====== Alle funktionen für die Tabs in den Boxen ======*/
var tabBoxes = {};

/* initialisiert die Tabboxen */
function initTabBoxes() {
	var tabrows = $$('DIV.boxtabs');
	var currentBox;
	var tablist;
	var rememberedTab;
	
	for (var i=0; i<tabrows.length; i++) {
		currentBox = $(tabrows[i].parentNode);
		currentBox.myTabList = tabrows[i].firstDescendant().childElements();
		currentBox.myID = '';
		currentBox.myCurrentTab = 0;
			
		for (var j=0;  j<currentBox.myTabList.length; j++) {
			currentBox.myTabList[j].myBox = currentBox;
			currentBox.myTabList[j].myTabNum = j;
			//currentBox.myTabList[j].onmouseover = function () {setTab(this.myBox, this.myTabNum)};
			
			if (currentBox.myTabList[j].className == 'activeBoxTab') {
				currentBox.myCurrentTab = j;
			}
		}
		
		setTab(currentBox,currentBox.myCurrentTab);
	}
}

/* aktiviert einen Tab */
function setTab (box, tabNum) {
	var displayValue;
	var tabClassName;
	
	for (var i=0; i<box.myTabList.length; i++) {
		// Der Tab ist aktiv (letzter Tab hat zusätzlichen style "lastTab")
		if (i==tabNum) {tabClassName = (i==box.myTabList.length-1) ? 'activeBoxTab lastTab':'activeBoxTab'}
		// Der Tab ist links vom aktiven Tab (Schatten!)
		else if (i==tabNum-1) {tabClassName = 'activeBoxTabLeft'}		
		// Der Tab ist rechts vom aktiven Tab (Schatten!)
		else if (i==tabNum+1) {tabClassName = (i==box.myTabList.length-1) ? 'activeBoxTabRight lastTabOff': 'activeBoxTabRight'}
		// Der Tab ist inaktive und kein direkter Nachbar des aktiven Tabs
		else {tabClassName = (i==box.myTabList.length-1) ? 'lastTabOff':'' }
		
		box.myTabList[i].className = tabClassName;
	}
}

registerOnLoadFunction (initTabBoxes);

/*====== Funktionen zum auf und zu klappen von Containern ======*/
var effektDuration = 0; // Dauer für den Aufklappeffekt in Sekunden, 0 = sofort aufklappen
function uncollapse (containerID, caller) {
	var c = $(containerID);
	if (c) {
		if (c.currentEffekt) c.currentEffekt.cancel();
		if (effektDuration> 0 && Effect) {
			c.currentEffekt = new Effect.BlindDown(c, {duration:effektDuration});
		} else {
			c.show();
		}
		
		if (caller) {
			caller = $(caller);
			caller.removeClassName('closed');
			caller.addClassName('opened');
		}
	}
}

function collapse (containerID, caller) {
	var c = $(containerID);
	if (c) {
		if (c.currentEffekt) c.currentEffekt.cancel();
		if (effektDuration> 0 && Effect) {
			c.currentEffekt = new Effect.BlindUp(c, {duration:effektDuration});
		} else {
			c.hide();
		}
		if (caller) {
			caller = $(caller);
			caller.removeClassName('opened');
			caller.addClassName('closed');
		}
	}
}

function toggleCollapse (containerID, caller) {
	var c = $(containerID);
	if (c) {
		if (c.visible()) {
			collapse(containerID, caller);
		} else {
			uncollapse(containerID, caller);
		}
	}
}


/*====== weitere Funktionen ======*/
function deleteFoto () {
	document.deletePortraitForm.submit();
}

