/**
** \var   wndPopup
** \brief Global variable / window which was opened by the 
**        function openPopupWindow.
*/
var wndPopup;

/**
** \fn trimString
** \brief Remove leading and trailings blanks from s.
*/
function trimString( s )
{
	return s.replace(/(^\s+)|(\s+$)/g, "");
}

/**
** \fn openPopupWindow
** \brief Open a popup window to display given location.
**
** \param href URL of the content to be display in the 
**        popup window.
*/
function openPopupWindow( href, name )
{
	if ( !wndPopup || wndPopup.closed ) {
		// golden section
		var cx  = Math.max( screen.width  * 0.382, 100 );
		var cy  = Math.max( screen.height * 0.382, 100 );
		var x   = (screen.width - cx)  / 2;
		var y   = (screen.height - cy) / 2;
		
		var args = "width=" + cx.toString();
		args+= ", height=" + cy.toString();
		args+= ", top="  + y.toString();
		args+= ", left=" + x.toString();
		args+= ", resizable=yes";
		args+= ", scrollbars=yes";
		//args+= ", location=yes";
		//args+= ", menubar=yes";
		//args+= ", toolbar=yes";
		//args+= ", status=yes";
		if ( !name ) 
			name = "popup";
		wndPopup = window.open( href, name, args );
	} else {
		wndPopup.location.replace( href );
	}
	wndPopup.focus();
}

/**
** \fn replaceSubmit
** Funktion zum ersetzten der aktuellen Seitenparamter durch die
** im Forumlar angegebenden Werte.
** 
** Sinn und Zweck dieser Funktion ist es die Browser Historie einigermaßen
** kurz zu halten.
*/
function replaceSubmit( oForm ) 
{
	var sTarget = ""; // oForm.action;
	var sSeperator = "?";
	var i, j;
	
	for ( i = 0; i < oForm.length; ++i ) {
		var e = oForm[i];
		if ( e.type == "hidden" || e.type == "text" ) {
			if ( e.value != "" ) {
				sTarget+= sSeperator + e.name + "=" + e.value;
				sSeperator = "&";
			}
		} else if ( e.type == "checkbox" || e.type == "radio" || e.type =="select" ) {
			if ( e.checked && e.value != "" ) {
				sTarget+= sSeperator + e.name + "=" + e.value;
				sSeperator = "&";
			}
		} else if ( e.options ) {
			for ( j = 0; j < e.options.length; ++j ) {
				var o = e.options[j]; 
				if ( o.selected  ) {
					sTarget+= sSeperator + e.name + "=";
					if ( o.value ) {
						sTarget+= o.value;
					} else {
						sTarget+= o.text;
					}
					sSeperator = "&";
				}
			}
		}
	}
	if ( sTarget == "" ) {
		sTarget = oForm.action;
	}
	//document.close();
	//document.open();
	//document.write();
	window.location.replace( sTarget );
}

/**
** \fn buildMailAdr
** Mail Adresse zusammensetzen.
**
** Alle mailto Hyperlink Ziele werden erst beim mouse over
** event zusammengesetzt. Die in der Webseite hinterlegten
** Emailadressen sollen so verschleiert werden.
** Die Erzeugung des link targets übernimmt diese Funktion. 
**
** \param sName Name des Empfängers.
** \param sDomain Web Domain des Empfängers.
** \param sSubject Betreff für die Email (Optional).
*/
function buildMailHRef( sName, sDomain, sSubject )
{
	var sRef = 'mail';
	sRef+= 'to:' + sName + '@' + sDomain;
	if ( typeof(sSubject) != 'undefined' && sSubject.length > 0 ) {
		sRef+= '?subject=';
		sRef+= sSubject;
	}
	return sRef;
}

/**
** \fn validateEmail
** \brief Überprüfung einer Email Adresse durch Patternvergleich.
**
** Der Reguläre Ausdruck für die Prüfung wurde bei 
** <a href="http://regexlib.com">http://regexlib.com</a> gefunden.
**
*/
function validateEmail( sAddress )
{
	if ( sAddress ) {
		var r = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		return r.test( sAddress );
	} else {
		return false;
	}
}

/**
** \fn validateURL
** \brief Überprüfung einer Web Adresse durch Patternvergleich.
**
** Der Reguläre Ausdruck für die Prüfung wurde bei 
** <a href="http://regexlib.com">http://regexlib.com</a> gefunden.
**
*/
function validateURL( sAddress )
{
	if ( sAddress ) {
//		var r = /^(http:\/\/[\w]+(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)$/;
		var r = /^(http:)\/\/[\w]+(.[\w]+)([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/;
		return r.test( sAddress );
	} else {
		return false;
	}
}


/**
** \fn applyCssClassSelection
** \brief Übernimmt aus der value eingeschaft eines ausgewählten Eintrags
**        eines list controls die CSS Klasse und wendet sie auf ein anderes
**        Element an.
*/
function applyCssClassSelection(selectList, target)
{
	var bContinue = selectList && target;
	var cssClass  = "";
	if ( bContinue ) {
		bContinue = selectList.type == "select-one";
		if ( !bContinue ) {
			alert( "Kein gültiges Listenfeld" );
		}
	}
	if ( bContinue ) {
		var e = new Enumerator( selectList.options );
		while ( !e.atEnd() ) {
			var o = e.item();
			if ( o.selected ) {
				cssClass = o.value;
				break;
			}
			e.moveNext();
		}
	}

	target.attributes["class"].value = cssClass;
}