/**
 * Artikelseiten-spezifische Klassen/Funktionen
 */

/**
 * Klasse zum Ein- und Ausblenden der Labels im Kommentarformular.
 *
 * @author	Simon Apold <simon.apold@twt.de>
 * @version	1.0 (16.07.2009)
 */
var twt_comments_form = function ()
{
	/**
	 * ID des Kommentar-Formulars
	 * @var	string	sFormId
	 */
	var sFormId = 'tx_comments_pi1_form';

	/**
	 * Felddefinitionen [{id: , label: },...]
	 * @var	array	aFields
	 */
	var aFields = [
		{
			id:	'tx_comments_pi1_firstname',
			label:	'Ihr Name*'
		},
		{
			id:	'tx_comments_pi1_email',
			label:	'Ihre E-Mail-Adresse*'
		},
		{
			id:	'tx_comments_pi1_homepage',
			label:	'Ihre Webseite'
		}
	];

	/**
	 * Initialisierungsfunktion aufrufen
	 */
	init();

	/**
	 * Alle leeren Felder werden initial mit dem Label gefüllt.
	 *
	 * @return	void
	 */
	function init ()
	{
		/**
		 * Iterator über alle Felder
		 */
		aFields.each(
			function (oField)
			{
				/**
				 * Event-Handler "focus" und "blur" registrieren
				 */
				$(oField.id).observe('focus', function(){removeLabelIfEmpty(oField)});
				$(oField.id).observe('blur', function(){addLabelIfEmpty(oField)});

				addLabelIfEmpty(oField);
			} // function
		);

		/**
		 * Event-Handler "submit" des Formulars registrieren
		 */
		$(sFormId).observe('submit', submitHandler);
	} // function

	/**
	 * Füllt das übergebene Feld mit dem Label, falls es leer ist.
	 *
	 * @param	object	oField: Felddefinition (id, label)
	 * @return	void
	 */
	function addLabelIfEmpty (oField)
	{
		var oElement = $(oField.id);

		if ( oElement.value == '')
		{
			oElement.value = oField.label;
		} // if
	} // function

	/**
	 * Entfernt das Label aus dem übergebenen Feld.
	 *
	 * @param	object	oField: Felddefinition (id, label)
	 * @return	void
	 */
	function removeLabelIfEmpty (oField)
	{
		var oElement = $(oField.id);

		if ( oElement.value == oField.label)
		{
			oElement.value = '';
		} // if
	} // function

	/**
	 * Entfernt die Labels aus allen Feldern, in denen nichts eingegeben wurde.
	 *
	 * @return	void
	 */
	function submitHandler ()
	{
		/**
		 * Iterator über alle Felder
		 */
		aFields.each(
			function (oField)
			{
				removeLabelIfEmpty(oField);
			} // function
		);
		return true;
	} // function
} // function

/**
 * Instanziierung der Klassen
 */
document.observe('dom:loaded', function()
{
	new twt_comments_form();
});
