/**
 * Get elements from input fields and check it for errors or wrong syntax.
 * This function is called by the submit button, before it calls the proper submit 
 * function form.submit().
 */
function sendForm() {

    // get nodes from form document
    var input_name      = document.getElementById('name');
    var input_firstname = document.getElementById('firstname');
    var input_phone     = document.getElementById('phone');
    var input_mail      = document.getElementById('mail');
    var input_street    = document.getElementById('street');
    var input_plz       = document.getElementById('plz');
    var input_comment   = document.getElementById('comment');
    
    // define variable for determining whether one of the neccessary fields are not filled
    /*
    var input_failed  = new Array();
    input_failed["name"]      = false;
    input_failed["firstname"] = false;
    input_failed["phone"]     = false;
    input_failed["mail"]      = false;
    input_failed["street"]    = false;
    input_failed["plz"]       = false;
    */

    var input_failed = false;

    var mail_msg = "";
    var error_msg = '<p class="Failed">';
    var node = getValue("node");
 


    // determine which field is empty and validate inputs 
    if((input_name.value.length > 0) && (!isBlank(input_name.value))) {
	
	mail_msg += "Name: " + parseSpecChar(input_name.value);
    }
    else {
	
	input_failed = true;
	error_msg += "...der Name<br/>";
    }

    if((input_firstname.value.length > 0) && (!isBlank(input_firstname.value))) {
	
	mail_msg += "<br />Vorname: " + parseSpecChar(input_firstname.value);
    }
    else {
	
	input_failed = true;
	error_msg += "...der Vorname<br/>";
    }

    if((input_phone.value.length > 0) && (!isBlank(input_phone.value))) {

	var val = input_phone.value;
	if(isInteger(val))
		mail_msg += "<br />Telefon: " + parseSpecChar(val);
	else {
		
		input_failed = true;
		error_msg += "...die Telefonnummer<br/>" ;
	}
	
    }
    else {
	input_failed = true;
	error_msg += "...die Telefonnummer<br/>" ;

    }

    if((input_mail.value.length > 0) && (!isBlank(input_mail.value))) {
	
	var val = input_mail.value;

	if(checkMail(val)) {
		mail_msg += "<br />Email: " + parseSpecChar(val);
	}
	else {
		input_failed = true;
		error_msg += "...die E-Mail-Adresse<br/>";
	}
    }
    else {
	input_failed = true;
	error_msg += "...die E-Mail-Adresse<br/>";

    }
    /*
    alert("node: " + node);
    if(node != "kontakt") {
     
      if((input_street.value.length > 0) && (!isBlank(input_street.value)))  {
	
	  mail_msg += "<br />Stra&szlig;e, Nr.: " + parseSpecChar(input_street.value);

      }
      else {
	  input_failed = true;
	  error_msg += "...die Stra&szlig;e nicht eingetragen haben...";

      }

      if((input_plz.value.length > 0) && (!isBlank(input_plz.value))) {
    	
	  var val = input_plz.value;

	  if(isInteger(val)) {
		mail_msg += "Postleitzahl: " + parseSpecChar(input_plz.value);
	  }
	  else {
		input_failed = true;
		error_msg += "...die Postleitzahl nicht eingetragen haben...</li>";
	  }
      }
      else {
	  input_failed = true;
	  error_msg += "...die Postleitzahl nicht eingetragen haben...</li>";

      }
      
       if((input_comment.value.length > 0) && (!isBlank(input_name.value))) {
	
	  mail_msg += "Kommentar: <br /> " + parseSpecChar(input_comment.value);
       }
    }
    
   /**/
    
    error_msg += "</p>";
    // check whether a wrong input was done anywhere and give a message out or send data to mail client
    var cf = document.getElementById('desc');
    if(document.all != undefined) cf = document.all.desc;
    
    
    if(input_failed) {

	var error = '<p>Die E-Mail kann leider nicht versandt werden, da einige Eingaben fehlen oder fehlerhaft sind.</p><p>' + error_msg +
		    '</p><p>Bitte korrigiren Sie die rot beschriebenen Felder und versuchen Sie es dann erneut.';

	cf.innerHTML = error;
    }
    else {

	cf.innerHTML = 'E-Mail wird versendet.<br/> Sollte sich bei Ihnen kein E-Mail Client (z.B. Outlook Express) '+
		       '&ouml;ffnen oder dieser nicht richtig konfiguriert sein, so senden Sie bitte manuell ' +  
		       'eine E-Mail mit den Angaben an info@hkp-rothe.de<br /><br />Beim Internet Explorer kann es auch vorkommen, dass Sie nur ein ' +
		       'Dialogfeld zum best&auml;tigen des Sendevorgangs bekommen.';
	
	var form_node = document.getElementById('contactform');
	form_node.submit();
	form_node.reset();
    }
}

/**
 * Parse for special characters and replace them.
 * 
 * @param str String to parse to.
 * @return string 
 */
function parseSpecChar(str) {

	  var z = ""; var cr = 0;
	  for (var y = 0; y < Number(str.length); y++)
	  {
		  switch(str.charCodeAt(y))
		  {
			  case 13: z += ""; cr = 1; break;
			  case 10: if (!cr) z += ""; break;
			  case 32: z += "&#32;"; break;
			  case 34: z += "&#34;"; break;
			  case 38: z += "+"; break;
			  case 60: z += "&#60;"; break;
			  case 61: z += "&#61;"; break;
			  case 62: z += "&#62;"; break;
			  case 64: z += "&#64;"; break;
			  case 196: z += "&#196;"; break;
			  case 214: z += "&#214;"; break;
			  case 220: z += "&#220;"; break;
			  case 223: z += "&#223;"; break;
			  case 228: z += "&#228;"; break;
			  case 246: z += "&#246;"; break;
			  case 252: z += "&#252;"; break;
			  case 8364: z += "EUR"; break;
			  default:
				     if (str.charCodeAt(y) > 32 && str.charCodeAt(y) < 127)
					     z += str.charAt(y);
				     else z += "&#191;";
		  }

	  }
	  str = z; z = ""; var e = "";
	  for (y = 0; y < Number(str.length); y++)
	  {
		  if (str.charAt(y) == "") {
			  z += "<br>"; e += "%0D%0A";
		  }
		  else {
			  z += str.charAt(y);
			  if (str.charAt(y) == "?") e += "%3F";
			  else {
				  e += str.charAt(y);
				  if (str.charAt(y) == "%") e += "25";
			  }
		  }
	  }
	  /* 
	  Formular.document.writeln(z + "<br>"); str = e;
	  if (i > 0) m += str + "%0D%0A";
	  if (i < 3)
	  {
		  Formular.document.writeln("<br>"); m += "%0D%0A";
	  }
	  */ 
	  return z;
}

/**
 * Validate an email address.
 *
 * @param str String with email.
 * @return bool True if valid, else false.
 */
function checkMail(str) {

	var a = false;
	var res = false;
	if(typeof(RegExp) == 'function')
	{
	   var b = new RegExp('abc');
 	   if(b.test('abc') == true) a = true;
 	}
 	if(a == true)
 	{
    	   /* ... Prüfen mit RegExp ... */
	   reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
	                    '(\\@)([a-zA-Z0-9\\-\\.]+)'+
			    '(\\.)([a-zA-Z]{2,4})$');

	   res = (reg.test(str));
 	}
 	else
 	{
   	   /* ... Prüfen ohne RegExp ... */
	   res = (str.search('@') >= 1 &&
	   	  str.lastIndexOf('.') > str.search('@') && 
		  str.lastIndexOf('.') >= str.length-5)
 	}
 	
	return(res);
		
}

/**
 * Check string for whitespaces.
 * 
 * @param str String to check.
 * @return bool True if only spaces.
 */
function isBlank(str){
	
	if(str==null) return true;
	
	for(var i=0;i<str.length;i++) {

		if ((str.charAt(i)!=' ')&&
		    (str.charAt(i)!="\t")&&
		    (str.charAt(i)!="\n")&&
		    (str.charAt(i)!="\r")) return false;
		
	}

	return true;
}

/**
 * Check whether string is an integer.
 *
 * @param str String to check.
 * @return bool True if all are digits.
 */
function isInteger(str){

	if (isBlank(str)) return false;

	for(var i=0;i<str.length;i++){
	
		if(!isDigit(str.charAt(i))) return false;
	}
	
	return true;
}

/**
 * Check whether the passed value is a digit.
 *
 * @param num A numeric value.
 * @return bool True if num is a digit.
 */
function isDigit(num) {
    
    if (num.length>1) {
    
	return false;
    }
	
    var string="1234567890";

    if (string.indexOf(num)!=-1) {
     
	return true;
    }

    return false;
}
