
/* Begin: png fix für IE */

var arVersion = navigator.appVersion.split("MSIE");
var version = parseFloat(arVersion[1]);
var workString = "";

function fixPNG(myImage) 
{
    if ((version >= 5.5) && (version < 7) && (document.body.filters)) 
    {
       var imgID = (myImage.id) ? "id='" + myImage.id + "' " : ""
	   var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : ""
	   var imgTitle = (myImage.title) ? 
		             "title='" + myImage.title  + "' " : "title='" + myImage.alt + "' "
	   var imgStyle = "display:inline-block;" + myImage.style.cssText
	   var strNewHTML = "<span " + imgID + imgClass + imgTitle
                  + " style=\"" + "width:" + myImage.width 
                  + "px; height:" + myImage.height 
                  + "px;" + imgStyle + ";"
                  + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
                  + "(src=\'" + myImage.src + "\', sizingMethod='scale');\"></span>"
	   myImage.outerHTML = strNewHTML	  
    }
}

/* End: png fix für IE */


function rights_fenster() {
	win = window.open("rights.html", "Fenster",
			"top=20,left=20,width=500,height=400");
}

function fenster(url, title, width, height) {
	var win;
	win = window.open(url, title, "width=" + width
			+ ", top=100, left=100, height=" + height
			+ ", resizable=no, scrollbars=no, top=10, left=10");
}

/* Ajax-Versuche */
// Request senden
function setRequest(url, parameters, workString) {
	
	this.workString = workString; 
	// Request erzeugen
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
	} else if (window.ActiveXObject) {
		try {
			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
		} catch (e) {
			try {
				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
			} catch (e) {
			}
		}
	}

	// überprüfen, ob Request erzeugt wurde
	if (!request) {
		alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} else {
		request.open('POST', url, true);
		// Requestheader senden
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		// Request senden
		request.send(parameters);
		// Request auswerten
		request.onreadystatechange = interpretRequest;
	}
}

// Request auswerten
function interpretRequest() {
	switch (request.readyState) {
	// wenn der readyState 4 und der request.status 200 ist, dann ist alles
	// korrekt gelaufen
	case 4:
	{
		if (request.status != 200) {
			alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"
					+ request.status);
		} else {
			var content = request.responseText;

			if(workString == 'delete' && content == true)
			{
				workString = "";
				location.reload();
			}
			else if(workString == 'delete')
			{
				workString = "";
				alert("Fehler: " + content);
			}
			else {
				var elementId = workString;
				document.getElementById(elementId).innerHTML = content;
				workString = "";
			}
		}
		break;
	}
	default:
		break;
	}
}

/* Ende Ajax-Spielerei */

function toggleDisplayState(id, isInline){
	var state = document.getElementById(id).style;
	
	if(state.display == 'none' || state.display == '')
	{
		if(isInline)
			state.display = "inline";
		else
			state.display = "block";
	}
	else
		state.display = "none";
}

/* View Details in Member List */
function changeDetailsState(colum_array){
	for(var index = 0; index < colum_array.length; index++)
	{
		var table = document.getElementById("memberList");
		var trs = table.getElementsByTagName("tr");
		var th = trs[0].getElementsByTagName("th")[colum_array[index]];
		
		if(th.style.display == 'none')
		{
			th.style.display = '';
			document.getElementById("detailsLink").innerHTML = '<font color="white">Verstecke Details</font>';
			table.style.width = "1050px";
			document.getElementById("detailsPnl").style.width = "1050px";
		}
		else
		{
			th.style.display = 'none';
			document.getElementById("detailsLink").innerHTML = '<font color="white">Zeige Details</font>';
			table.style.width = "700px";
			document.getElementById("detailsPnl").style.width = "700px";
		}
		
		for(var i = 1; i < trs.length; i++)
		{
			var td = trs[i].getElementsByTagName("td")[colum_array[index]];
			if(td.style.display == 'none')
				td.style.display = '';
			else
				td.style.display = 'none';
		}
	}
}

function setFocus(element){
	
	if(element.name == "geburtstag" && element.value == "Geburtstag")
	{
		element.value = 'TT.MM.JJJJ';
		element.select();
	}
	else
	if(element.name == "eintrittsjahr" && element.value == "Eintritt")
	{
		element.value = 'JJJJ';
		element.select();
	}
	else
		element.value = '';	
}

function showErrorMessage(element){
	name = element.name;
	errorTxt = "";
	switch(name){
		case "vorname"		: errorTxt = "Bitte einen korrekten Vornamen eingeben!"; break; 
		case "name"			: errorTxt = "Bitte einen korrekten Nachnamen eingeben!"; break;
		case "gbook_name"	: errorTxt = "Bitte einen korrekten Namen eingeben!"; break;
		case "verein"		: errorTxt = "Bitte einen korrekten Vereinsnamen eingeben!"; break;
		case "geburtstag"	: errorTxt = "Bitte ein korrektes Geburtsdatum (TT.MM.JJJJ) eingeben!"; break;
		case "eintrittsjahr": errorTxt = "Bitte ein korrektes Eintrittsjahr eingeben!"; break;
		case "straße_nr"	: errorTxt = "Bitte eine korrekte Straße und Haus-Nr. eingeben!"; break;
		case "plz"			: errorTxt = "Bitte eine korrekte Postleitzahl eingeben!"; break;
		case "ort"			: errorTxt = "Bitte einen korrekten Ort eingeben!"; break;
		case "telefon"		: errorTxt = "Bitte eine korrekte Telefon-Nr. eingeben!"; break;
		case "handy"		: errorTxt = "Bitte eine korrekte Handy-Nr. eingeben!"; break;
		case "email"		: errorTxt = "Bitte eine korrekte E-Mail-Adresse eingeben!"; break;
		case "comment"		: errorTxt = "Der Gästebuch-Kommentar darf nicht leer sein!"; break;
		case "homepage"		: errorTxt = "Bitte eine korrekte Internet-Adresse eingeben!"; break;
	}
	
	element.style.border = "1px solid red";
	element.focus();
	element.select();
	alert(errorTxt);
}

function validateMemberForm(form){	
	var regExStr = "";
	var inputs = document.getElementsByTagName("input");
	var shouldNotBeNull = false;
	// remember the default border
	var defaultborder = inputs[0].style.border;
	var allValuesCorrect = false;
	var element = null;
	
	for(var i = 0; i < inputs.length + 1; i++)
	{
		if(i < inputs.length)
		{
			element = inputs[i];
			// reset input border style
			element.style.border = defaultborder;
			// check for default string and set the regex value
			switch(element.name){
				case "vorname" 		: 
					{
						regExStr = /^[-a-zA-ZöüäÄÜÖß\s]*$/;
						if(element.value == "Vorname" || element.value == "")
						{
							element.value = '';
							break;
						}
						shouldNotBeNull = true;
						break;
					}
				case "name" 		: 
					{
						regExStr = /^[-a-zA-ZöüäÄÜÖß\s]*$/;
						if(element.value == "Nachname" || element.value == "")
						{
							element.value = '';
							break;
						}
						shouldNotBeNull = true;
						break;
					}
				case "gbook_name" 		: 
				{
					regExStr = /^[-a-zA-ZöüäÄÜÖß0-9\s.]*$/;
					
					shouldNotBeNull = true;
					break;
				}
				case "verein" 		: 
				{
					regExStr = /^[-a-zA-ZöüäÄÜÖß0-9\s.]*$/;
					
					shouldNotBeNull = false;
					break;
				}
				case "geburtstag" 	: 
					{
						regExStr = /(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)\d\d/;
						shouldNotBeNull = false;
						if(element.value == "Geburtstag")
						{
							element.value = '';
							shouldNotBeNull = true;
							break;
						}
						break;
					}
				case "eintrittsjahr": 
					{
						regExStr = /^(19|20)\d\d$/;
						if(element.value == "Eintritt" || element.value == "")
						{
							element.value = '';
							break;
						}
						shouldNotBeNull = true;
						break;
					}
				case "straße_nr" 	:
					{
						regExStr = /^[-a-zß-ü\w\/\.\s]*$/;
						if(element.value == "Straße / Nr." || element.value == "")
						{
							element.value = '';
							break;
						}
						shouldNotBeNull = true;
						break;
					}
				case "plz" 			: 
					{
						regExStr = /^\d{5}$/;
						if(element.value == "PLZ" || element.value == "")
						{
							element.value = '';
							break;
						}
						shouldNotBeNull = true;
						break;
					}
				case "ort" 			: 
					{
						regExStr = /^[-a-zA-ZöüäÄÜÖß\s]*$/;
						if(element.value == "Ort" || element.value == "")
						{
							element.value = '';
						}
						shouldNotBeNull = form == 'memberFormAdd' ? true : false;
						break;
					}
				case "telefon" 		: 
					{
						regExStr = /^[0-9\s\/-]+$/;
						shouldNotBeNull = false;
						if(element.value == "Telefon")
						{
							element.value = '';
							shouldNotBeNull = true;
							break;
						}
						break;
					}
				case "handy" 		: 
					{
						regExStr = /^[0-9\s\/-]+$/;
						shouldNotBeNull = false;
						if(element.value == "Handy")
						{
							element.value = '';
							shouldNotBeNull = true;
							break;
						}
						break;
					}
				case "email" 		: 
					{
						regExStr = /(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})/;
						shouldNotBeNull = false;
						if(element.value == "E-Mail")
						{
							element.value = '';
							shouldNotBeNull = true;
							break;
						}
						break;
					}
				case "homepage" 		: 
					{
						regExStr = /http\:\/\/www\.(.*?)\.([a-z]{2,})/;
						shouldNotBeNull = false;
						if(element.value == "http://www.")
						{
							element.value = '';
						}
						break;
					}
				default				: regExStr = ""; break;
			}
		}
		else
		{
			var gbookComment = document.getElementById('comment');
			if(gbookComment != null)
			{
				if(gbookComment.value == '')
				{
					element = gbookComment;
					shouldNotBeNull = true;
					regExStr = "bla";
				}
			}
		}
		
		
		if(regExStr != "")
		{
			
			
			if(element.value == '' && shouldNotBeNull)
			{				
				allValuesCorrect = false;
				showErrorMessage(element);
				break;
			}
			else if(element.value == '' && !shouldNotBeNull)
			{
				allValuesCorrect = true;
			}
			else
			{
				value = element.value;
				value = value.match(regExStr);
				
				if(value != null)
					allValuesCorrect = true;
				else
				{
					allValuesCorrect = false;
					showErrorMessage(element);
					break;
				}
			}
		}
	}
	if(allValuesCorrect)
		document.getElementById(form).submit();
}

function showDeleteBox(objectToDeleteString, file, parameters)
{
	isDeleting = confirm("Wollen Sie " + objectToDeleteString + " wirklich löschen?")
	workString = 'delete';
	if(isDeleting == true)
		setRequest(file, parameters, workString);
}

function moveTo(form, from, to){
	var source = document.forms[form].elements[from];
	var target = document.forms[form].elements[to];
	
	var index = source.selectedIndex;
	
	if(index < 0)
		alert("Bitte erst ein Mitglied wählen!");
	
	target.options[target.options.length] = new Option(source.options[index].text, source.options[index].value);
	
	source.options[index] = null;
	
	source.selectedIndex = index;
}

function selectAllOptions(form, select){
	var source = document.forms[form].elements[select];
	
	for(i = 0; i < source.options.length; i++)
		source.options[i].selected = true;
}
