
function loopElements(){
   var theForm = document.forms[0];

   for(i=0; i<theForm.elements.length; i++){
      var alertText = '';
      alertText += "Element Name: " + theForm.elements[i].name + "\n";
      alertText += "Element Type: " + theForm.elements[i].type + "\n";

      if(theForm.elements[i].type == "text" || 
         theForm.elements[i].type == "textarea" || 
         theForm.elements[i].type == "button"){
         alertText += "Element Value: " + theForm.elements[i].value + "\n";
      }
      else if(theForm.elements[i].type == "checkbox"){
         alertText += "Element Checked? " + theForm.elements[i].checked + "\n";
      }
      else if(theForm.elements[i].type == "select-one"){
         alertText += "Selected Option's Text: " 
                   + theForm.elements[i].options[theForm.elements[i].selectedIndex].text + "\n";
      }
      alert(alertText);
   }
} 

function debugElement(elem) { 
   var alertText = '';

   if( elem == null ) return true;

   return;
   alertText += "Element Name : " + elem.name + "\n";
   alertText += "Element Type : " + elem.type + "\n";
   alertText += "Element Value: " + elem.value + "\n";

   alert(alertText);
}  

function isEmpty(elem, label){

   if( elem == null ) return true;

   debugElement(elem);

   if(elem.value.length == 0){
      alert('Please enter a '+label);
      elem.focus();
      return false;
   }
   return true;
}

function isNumber(elem, label){
   var helperMsg='';
   var numericExpression = /^[0-9]+$/;

   if( elem == null ) return true;

   debugElement(elem);

   if(!elem.value.match(numericExpression)){
      helperMsg += 'Wrong value in field:'+label+'\n';
      helperMsg += 'Please enter a numeric value!';
      alert(helperMsg);
      elem.focus();
      return false;
   }
   return true;
}

function isDouble(elem, label){
   if( elem == null ) return true;

   var helperMsg='';
   var floatValue=parseFloat(elem.value);

   if (isNaN(floatValue)) {
      helperMsg += 'Wrong value in field:'+label+'\n';
      helperMsg += 'Please enter a decimal value!';
      alert(helperMsg);
      elem.focus();
      return false;
   }
   if( elem.name == 'duration' || elem.name == 'break_duration' )
   {
      if( elem.value % .25 != 0.0 )
      {
         alert ("please enter hours and quarter of hours\n (e.g 1.0, 2.25, 3.50, 4.75, etc.)");
         return false;
      }
   }
   return true;
} 

function isAlphabet(elem, label){
   var helperMsg='';
   var alphaExp = /^[a-zA-Z]+$/;

   if( elem == null ) return true;

   debugElement(elem);

   if(!elem.value.match(alphaExp)){
      helperMsg += 'Wrong value in field:'+label+'\n';
      helperMsg += 'Please enter a alphabetic value!';
      alert(helperMsg);
      elem.focus();
      return false;
   }
   return true;
}

function isAlphanumeric(elem, label){
   var helperMsg='';
   var alphaExp = /^[0-9a-zA-Z]+$/;

   if( elem == null ) return true;

   debugElement(elem);

   if(!elem.value.match(alphaExp)){
      helperMsg += 'Wrong value in field:'+label+'\n';
      helperMsg += 'Please enter a alphanumeric value!';
      alert(helperMsg);
      elem.focus();
      return false;
   }
   return true;
}

function isDate(elem, label) { 
   var checkstr = "0123456789";
   var seperator = "-";
   var helperMsg='';
   var year=0;  
   var month=0;  
   var day=0;  
   var leap=0;  
   var dateerror=0;  
   var dateValue='';
   var dateTemp='';

   if( elem == null ) return true;

   debugElement(elem);

   /* Delete all chars except 0..9 */
   dateValue=elem.value;

   for (i = 0; i < dateValue.length; i++) {
      if (checkstr.indexOf(dateValue.substr(i,1)) >= 0) {
         dateTemp = dateTemp + dateValue.substr(i,1);
      }
   }
   dateValue = dateTemp;
   /* Always change date to 8 digits - string */
   if (dateValue.length == 6) {
      dateValue = '20' + dateValue;
   }
   /* now the date must be a 8 digit string */
   if (dateValue.length != 8) {
      dateerror = true;
   }

   year  = dateValue.substr(0,4);
   month = dateValue.substr(4,2);
   day   = dateValue.substr(6,2);

   //alert( 'year: '+year+' month: '+month+' day: '+day );

   if (year < 1900 ) {
      alert("Year must be greater then 1900.");
      elem.focus();
      return false;
   }
   if (month < 1  || month > 12) {
      alert("Month must be between 1 and 12.");
      elem.focus();
      return false;
   }
   if (day < 1  || day > 31) {
      alert("Day must be between 1 and 31.");
      elem.focus();
      return false;
   }

   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      dateerror = true;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      dateerror = true;
   }
   if ((day > 30) && ((month == 4) || (month == 6) || (month == 9) || (month == 11))) {
      dateerror = true;
   }

   if (dateerror) {
      alert("this date does not exist.");
      elem.focus();
      return false;
   }
   elem.value = year + seperator + month + seperator + day;

   return true;
}  

function isTime(elem, label) {
   var helperMsg='';
   var timeExp = /^(\d{1,2}):(\d{2})$/;

   if( elem == null ) return true;

   debugElement(elem);

   var matchArray = elem.value.match(timeExp);
   if (matchArray == null) {
      helperMsg += 'Wrong time-format in field: '+label+'\n';
      helperMsg += 'Please enter a valid time!';
      helperMsg += 'Example: 23:59';
      alert(helperMsg);
      elem.focus();
      return false;
   }

   hour   = matchArray[1];
   minute = matchArray[2];

   if (hour < 0  || hour > 23) {
      alert("Hour must be between 0 and 23.");
      elem.focus();
      return false;
   }
   if( !(minute == 0 || minute == 15 || minute == 30 || minute == 45)) {
      alert ("Minute must be 0, 15, 30 or 45");
      elem.focus();
      return false;
   }
   return true;
}

function isTimeLong(elem, label) {
   var helperMsg='';
   //var timeExp = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
   var timeExp = /^(\d{1,2}):(\d{2})(:(\d{2}))?$/;

   if( elem == null ) return true;

   debugElement(elem);

   var matchArray = elem.value.match(timeExp);
   if (matchArray == null) {
      helperMsg += 'Wrong time-format in field: '+label+'\n';
      helperMsg += 'Please enter a valid time!';
      helperMsg += 'Example: 23:59';
      alert(helperMsg);
      elem.focus();
      return false;
   }

   hour   = matchArray[1];
   minute = matchArray[2];
   second = matchArray[4];

   if (second=="") { second = null; }

   if (hour < 0  || hour > 23) {
      alert("Hour must be between 0 and 23.");
      elem.focus();
      return false;
   }
   if (minute < 0 || minute > 59) {
      alert ("Minute must be between 0 and 59.");
      elem.focus();
      return false;
   }
   if (second != null && (second < 0 || second > 59)) {
      alert ("Second must be between 0 and 59.");
      elem.focus();
      return false;
   }
   return true;
}


function lengthRestriction(elem, min, max){
   var uInput = elem.value;

   if( elem == null ) return true;

   if(uInput.length >= min && uInput.length <= max){
      return true;
   }else{
      alert("Please enter between " +min+ " and " +max+ " characters");
      elem.focus();
      return false;
   }
}

function madeSelection(elem, helperMsg){
   if( elem == null ) return true;

   if(elem.value == "Please Choose"){
      alert(helperMsg);
      elem.focus();
      return false;
   }else{
      return true;
   }
}

function isEmail(elem, helperMsg){
   var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
   if( elem == null ) return true;

   if(elem.value.match(emailExp)){
      return true;
   }else{
      alert(helperMsg);
      elem.focus();
      return false;
   }
}

function checkNewsletter( fehler ) 
{
   var f = document.forms['nlorder'];

   for(i=0; i < f.elements.length; ++i)
   {
      if(f.elements[i].value == '')  
      {
         alert( fehler );
         f.elements[i].focus();
         return false;
      }
   }
   return true;
}

