var MODE_URL = 1;
var MODE_FORM = 2;
var timerID;
var activeSub;
var oldRate;
var rateTimerID;
var isIE = document.all ? true : false;
var slideshowIntervalID, slideshowInterval, slideshowStopped;
var showUserOnlineIntervalID, hideUserOnlineIntervalID;
var userOnlineMenuVisibility = false;

var inputHasChanged = false; // speichern, ob der User schon Änderungen an einem Formular (profileedit) vorgenommen hat


function do_confirm(target, message, mode)
{
	var answer = confirm(message);
	if (answer) {
		switch (mode) {
			case MODE_URL:
				location.href = target;
				break;
			case MODE_FORM:
				target.submit();
				break;
			default:
				alert('Interner Fehler: Kein Modus spezifiziert!');
		}

		return true;
	}

	return false;
}


/*
function showSubmenu(id)
{


	hideSubmenus();

	document.getElementById('sub-menu').style.backgroundColor =  "rgb(74,74,74)";

	document.getElementById('mainItem-'+id).style.backgroundColor =  "rgb(74,74,74)";

	dispBlock("sub-"+id);



	clearTimeout(timerID);
}


function hideSubmenus()
{
	for (i=1; i<=8; i++)
	{
		document.getElementById('mainItem-'+i).style.backgroundColor =  "rgb(33,33,33)";
		dispNone("sub-"+i);
	}
}
*/

function cardpopup(url)
{


	w = window.open(url, 'zoom', 'width=400, height=500, toolbar=yes, scrollbars=auto, menubar=yes, locationbar=no');
	w.focus();
}


function popup(url, width, height, sb)
{
	w = window.open(url, 'zoom', 'width=' + width +', height=' + height + ', toolbar=no, scrollbars=' + sb + ', menubar=no, locationbar=no');
	w.focus();
}

/*

function displayRating(rate, form)
{

	clearTimeout(rateTimerID);


	return;

	if (document.getElementById('score').value != "")
	{
		oldRate = document.getElementById('score').value;
	}
	else if (oldRate == undefined)
	{
		oldRate = 5;
	}


	//document.getElementById("scaler_empty").style.width = 100-rate*10+"px";
	//document.getElementById("scaler_empty").style.marginLeft = 10*rate+"px";

	//setRatingHelptext(rate, false, form);
}


function setRatingHelptext(rate, mouseout, form)
{

return;
	if (rate < 4) smiley = ":-(";
	else if (rate < 8) smiley = ":-|";
	else smiley = ":-)";

	//if (mouseout && document.getElementById('score').value == "") smiley = "Bitte bewerten";

	//document.getElementById('rating').value = rate + " " + smiley;
	//if (!mouseout) document.getElementById('rating').value += "    > Klicken zum Bewerten";
}

function requestOut(form)
{
	clearTimeout(rateTimerID);
//alert("request " + id);
	rateTimerID=setTimeout('displayOldRating("'+form+'")', 10);
}

function displayOldRating(form)
{
	var displayingOldRating
	clearTimeout(rateTimerID);
	displayRating(oldRate, form);
	setRatingHelptext(oldRate, true, form);
}

*/

function setRating(rate, form)
{
	clearTimeout(rateTimerID);
	if (oldRate)
	{
		if (isIE) document.getElementById('grade'+oldRate).style.backgroundColor = 'white';
		document.getElementById('grade'+oldRate).style.backgroundColor = null;
	}
	oldRate = rate;
	document.getElementById('score').value = rate;
	document.getElementById('grade'+rate).style.backgroundColor = 'rgb('+ratingColors[rate]+')';
}




/* IMAGE LABELS */

var clickFunction = 'nextImage';
var submitting = 0;
var cancelling = 0;

function getLayerPosition(layer)
{
	var pos = new Object();
	pos.x = pos.y = 0;


	if (layer.offsetParent)
	{

		while (layer.offsetParent)
		{
			pos.x += layer.offsetLeft;
			pos.y += layer.offsetTop;

			layer = layer.offsetParent;
		}
	}
	else if (layer.x && layer.y)
	{
		pos.x += layer.x;
		pos.y += layer.y;
	}


	return pos;
}

function findLayerPosition(layerID)
{

	layer = getLayer(layerID);
	return getLayerPosition(layer);
}


function getMousePosition(event)
{

	if (!event) event = window.event;

	var isIE = document.all ? 1 : 0;
	var mousePosition = new Object();

	if (isIE)
	{
		mousePosition.x = event.clientX + document.documentElement.scrollLeft; // scrollposition für IE beachten
		mousePosition.y = event.clientY + document.documentElement.scrollTop;
	}
	else
	{
		mousePosition.x = event.pageX;
		mousePosition.y = event.pageY;
	}


	return mousePosition;
}


function getMousePositionOverLayer(event, layerID)
{
	if (!event) event = window.event;

	var mousePositionOverLayer = new Object();
	mousePositionOverLayer.x = mousePositionOverLayer.y = 0;

	var layerPosition = findLayerPosition(layerID);
	var mousePosition = getMousePosition(event);

	mousePositionOverLayer.x = mousePosition.x - layerPosition.x;
	mousePositionOverLayer.y = mousePosition.y - layerPosition.y;



	return mousePositionOverLayer;



}

function setClickFunction(cf)
{
	clickFunction = cf;

	if (cf == "nextImage")
	{
		getLayer('galleryImageContainer').style.cursor = "pointer";
//		getLayer('setLabel').style.display = "block";
	}
	else if (cf == "setLabel")
	{
		getLayer('galleryImageContainer').style.cursor = "pointer";
//		getLayer('setLabel').style.display = "none";
	}
}

function setLabel(event, nippelThreshhold)
{

	labelPosition = getMousePositionOverLayer(event, 'galleryImageContainer');


	getLayer('userLabel').style.display = "block";


	getLayer('userLabel').style.left = (labelPosition.x - 15) + "px";
	getLayer('userLabel').style.top = (labelPosition.y + 8) + "px";

	if (labelPosition.y > nippelThreshhold)
	{
		getLayer('nippel-oben').style.display = 'block';
		getLayer('nippel-unten').style.display = 'none';
	}
	else
	{
		getLayer('nippel-oben').style.display = 'none';
		getLayer('nippel-unten').style.display = 'block';
	}


	document.forms.userLabelForm.x.value = labelPosition.x;
	document.forms.userLabelForm.y.value = labelPosition.y;

}

function cancelLabel(doWhat)
{

	cancelling = 1;	// dont do anything onmouseup
	getLayer('userLabel').style.display = "none";
	if (doWhat == "reposition")	setClickFunction("setLabel");
	else setClickFunction("nextImage");
}

function mouseClick(event, url, nippelThreshhold)
{
	if (submitting) return;
	if (event.button == 2) return; // rightclick does nothing

	if (cancelling)
	{
		cancelling = 0;
		return;
	}

	if (clickFunction == "nextImage" && url)
	{
		window.location = url;
	}
	else if (clickFunction == "setLabel")
	{
		setLabel(event, nippelThreshhold);
	}
}

function submitLabel()
{
	submitting = 1;	// dont do anything onmouseup
	document.forms.userLabelForm.set_label.value = 1;
	document.forms.userLabelForm.delete_label.value = 0;
	document.forms.userLabelForm.submit();
}

function deleteLabel(user_id)
{
	document.forms.userLabelForm.set_label.value = 0;
	document.forms.userLabelForm.delete_label.value = 1;
	document.forms.userLabelForm.user_id.value = user_id;
	document.forms.userLabelForm.submit();
}


/* END IMAGE LABELS */




/* Galerie */

function galerieTabActivate(activeTab)
{
	var inactiveTab = (activeTab == 'kommentare') ? 'labelHelp' : 'kommentare';

	dispInline(activeTab);
	dispInline(activeTab+'TabActive');
	dispInline(inactiveTab+'TabInactive');
	dispNone(inactiveTab);
	dispNone(inactiveTab+'TabActive');
	dispNone(activeTab+'TabInactive');
}


function stopSlideshow()
{
	document.forms.gallerySlideshowForm.action = document.forms.gallerySlideshowForm.current_image.value;
	startSlideshowImmediatly(0);

}

function startSlideshow(interval)
{
	if (slideshowStopped) return;
	setSlideshowInterval(interval);
	slideshowIntervalID = setTimeout("nextGalleryImage()",slideshowInterval);
}

function startSlideshowImmediatly(interval)
{
	setSlideshowInterval(interval);
	nextGalleryImage();
}

// set interval in seconds
function setSlideshowInterval(interval)
{
	clearTimeout(slideshowIntervalID);
	slideshowInterval = interval*1000;
	document.forms.gallerySlideshowForm.slideshow_interval.value = interval;
}

function nextGalleryImage()
{
	document.forms.gallerySlideshowForm.submit();
}



/* End Galerie */




/* PEELBANNER */

function showPeelbanner()
{

	document.getElementById('peelbanner').style.height = "600px";
	return;

}

function hidePeelbanner()
{

	document.getElementById('peelbanner').style.height = "60px";
	return;

}



/* END PEELBANNER */




function triggerUserOnlineMenu(ms)
{
	//alert('showing');
	//window.clearInterval(hideUserOnlineIntervalID);

	if (!ms)
		ms = 100;
	showUserOnlineIntervalID = window.setInterval("showUserOnlineMenu()", ms);
}


function disableUserOnlineMenu(ms)
{
	//alert('clearing');

	if (!ms)
		ms = 50;

	hideUserOnlineIntervalID = window.setInterval("hideUserOnlineMenu()", ms);
}


function switchUserOnlineMenu()
{
	if (userOnlineMenuVisibility)
	{
		hideUserOnlineMenu();
	}
	else
	{
		showUserOnlineMenu();
	}
	
	userOnlineMenuVisibility = !userOnlineMenuVisibility;
}

function showUserOnlineMenu()
{
	dispBlock('userOnlineTop');
	dispBlock('userListFriendsRight');
	dispNone('leftAndMiddleColumn');
	dispNone('rightSnippets');
}

function hideUserOnlineMenu()
{
		dispNone('userOnlineTop');
		dispNone('userListFriendsRight');
		dispBlock('leftAndMiddleColumn');
		dispBlock('rightSnippets');
}

/*

function showUserOnlineMenu()
{
	window.clearInterval(showUserOnlineIntervalID);
	dispBlock('userOnlineTop');
}

function hideUserOnlineMenu()
{
	window.clearInterval(hideUserOnlineIntervalID);
	dispNone('userOnlineTop');
}
*/

function switchUserDetail()
{
	reverseDisplay('userProfilePreview');
	reverseDisplay('userProfileDetail');
}




function submitEditProfileForm()
{
	document.forms.userProfileEditForm.submit();
}

function checkEditProfileForm()
{
	var address = parseAddress();
	if (address)
	{
		lookupAddress(address, 1);
		return false;
	}
	else return true;
}


function showProfileDeleteForm()
{
	if (inputHasChanged)
	{
		if (!confirm('Deine Eingaben gehen verloren, möchtest du wirklich das Formular wechseln?')) return;
	} 
	dispBlock('userDeleteFields');
	dispNone('userInputFields');
	dispBlock('deleteTabActive');
	dispNone('inputTabActive');
}


function showProfileInputForm()
{
	dispNone('userDeleteFields');
	dispBlock('userInputFields');
	dispNone('deleteTabActive');
	dispBlock('inputTabActive');
}




function inputFocus()
{
	//alert(this.name);

	var name = this.name;
	if (name == 'music_genres[]') name = 'music_genres';
	if (name.substr(0,12) == 'music_family') name = 'music_family';
	if (name == 'event_categories[]') name = 'event_categories';


	var helpText = (helptexts[name]) ? helptexts[name] : '';
	var formElementPosition = getLayerPosition(this);
	var formPosition = findLayerPosition(formId);

	if (helpText)
	{
		helpTextDiv.innerHTML = helpText;
		helpDiv.style.top = formElementPosition.y - formPosition.y - 20 + "px";
	}

	return;
}


function inputChanged()
{
	inputHasChanged = true;
}



function addHelpToForm(form)
{
	form = form.elements;
	for (i=0; i<form.length; i++)
	{
		form[i].onfocus = inputFocus;
		if (!form[i].onchange) form[i].onchange = inputChanged;
	}
}



/* Ganze Checkboxfamilie selektieren, zb profileedit musikrichtungen */
function switchOptions(family_id)
{
	var name = 'music_family_'+family_id;
	var element = document.getElementById(name);
	var enable = element.checked;

	var elements = document.getElementsByTagName('input');
	for (var i = 0; i < elements.length; ++i) {
		element = elements[i];
		if (element.getAttribute('class') == name) {
			element.checked = enable;
		}
	}
}


/* putTag() ist veraltet, bitte insert() nutzen (siehe weiter unten) */
function putTag(tag, elementID)
{
	var textarea = document.getElementById(elementID);
	if (textarea.createTextRange && textarea.caretPos) {
		// IE: Proprietäre Funktionen nutzen, um Text an Cursor-Stelle einzufügen
		textarea.text = tag;
	}
	else {
		textarea.value += tag;
	}

	return true;
}

function insertSmiley(elementID, smiley)
{
	/* Aufrufparameter leider in unterschiedlicher Reihenfolge :-( */
	return insert(smiley, '', elementID);
}

/* Funktion von Torsten Anacker, torsten@anaboe.net */
function insert(aTag, eTag, elementID) {
  var input = document.getElementById(elementID);;
  input.focus();
  /* für Internet Explorer */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);
    }
    range.select();
  }
  /* für neuere auf Gecko basierende Browser */
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Einfügen des Formatierungscodes */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* für die übrigen Browser */
  else
  {
    /* An das Ende anhängen */
    input.value = input.value + aTag + eTag;
  }
}



var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};







function loadAlphaPNG(image)
{
	if (!(typeof document.images[0].style.filter != 'undefined' && BrowserDetect.version < 7)) return;
	image.style.visibility = 'visible'; // because of bug below

	// store image width and height, this has to be set before loading transparent png
	var imageSource = image.src;
	var imageWidth = image.width;
	var imageHeight = image.height;
	image.src="http://test.nachtlebenmd.de/images/trans.png";
	image.style.width = imageWidth + "px";
	image.style.height = imageHeight + "px";

	// BUGGY: fixme for when images have been cached
	/*image.onload = function()
	{
		this.style.visibility = 'visible'; this.onload = "";
	};*/

	image.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + imageSource + "',sizingMethod='scale')";

	return false;
}






document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
};





function loadTransparentPNGsIE6()
{
	return;

	//alert("loading pngs");
	// check for browser, only continue for IE6 or less
	if (!(typeof document.images[0].style.filter != 'undefined' && BrowserDetect.version < 7)) return;
	var transparentPNGs = document.getElementsByClassName('transparentPNG');
	for (i=0; i<transparentPNGs.length; i++)
	{
		loadAlphaPNG(transparentPNGs[i]);
	}
}





function hideGuestbookTeasers()
{
	for (i=1; i<=5; i++)
	{
		dispNone("guestbookTeaser-"+i);
	}
}

function showRandomGuestbookTeaser()
{
	hideGuestbookTeasers();
	var randomTeaser = Math.ceil(Math.random()*5);
	dispBlock("guestbookTeaser-"+randomTeaser);
}


function startGuestbookTeaserLoop()
{
	setInterval("showRandomGuestbookTeaser()", 7000);
}
