/*
 * THX @ http://www.sitepoint.com/article/behaved-dhtml-case-study/5
 *
 * Requireced XHTML-Code:
 * 	<label for="suchwort" class="dynamic">Suchwort</label>
 *                                 ^ "pointer     ^  will be places in input
 *		<input class="searchbox" type="text" id="suchwort" name="suchwort" />
 *
 */

 if (supportsDynamicLabels()) {
   document.writeln('<style type="text/css">');
   document.writeln('label.dynamic { display:none; }');
   document.writeln('</style>');

   addEvent(window, "load", setupLabels);
 }

 function setupLabels() {
   var objLabels = document.getElementsByTagName("LABEL");
   var objField;

   for (var i = 0; i < objLabels.length; i++) {
     if ("dynamic" == objLabels[i].className) {
       objField = document.getElementById(objLabels[i].htmlFor);
       addEvent(objField, "focus", focusDynamicLabel);
       addEvent(objField, "blur", blurDynamicLabel);
       objField._labelText = objLabels[i].firstChild.nodeValue;
       objField.value = objField._labelText;
     }
   }

   for (var i = 0; i < document.forms.length; i++) {
     addEvent(document.forms[i], "submit", resetLabels);
   }
 }

 function resetLabels(event) {
   var elm = getEventSrc(event);
   var objLabels = elm.getElementsByTagName("LABEL");
   var objField;

   for (var i = 0; i < objLabels.length; i++) {
     if ("dynamic" == objLabels[i].className) {
       objField = document.getElementById(objLabels[i].htmlFor);
       if (objField._labelText == objField.value) {
         objField.value = "";
       }
     }
   }
 }

 function addEvent(objObject, strEventName, fnHandler) {
   if (objObject.addEventListener)
     objObject.addEventListener(strEventName, fnHandler, false);
   else if (objObject.attachEvent)
     objObject.attachEvent("on" + strEventName, fnHandler);
 }

 function focusDynamicLabel(event) {
   var elm = getEventSrc(event);
   if (elm._labelText == elm.value) {
     elm.value = "";
   }
 }

 function blurDynamicLabel(event) {
   var elm = getEventSrc(event);
   if ("" == elm.value) {
     elm.value = elm._labelText;
   }
 }

 function getEventSrc(e) {
   if (!e) e = window.event;

   if (e.originalTarget)
     return e.originalTarget;
   else if (e.srcElement)
     return e.srcElement;
 }

function supportsDynamicLabels() {
 return document.getElementById && 
   (window.attachEvent || window.addEventListener) && 
   null == navigator.appVersion.match(/Safari\/\d+$/);
}

