// dom scripting, p. 285f
addLoadEvent(prepareForms);
function prepareForms(){
	for (var i=0; i<document.forms.length; i++) {
		var thisform = document.forms[i];
		resetFields(thisform);
		thisform.onsubmit = function() {
			return validateFields(this);
		}
	}
}

/*
	fragt in jeder form die default-werte der input-felder ab, 
	macht bei onfocus das input-feld leer und 
	bei onblur wieder den alten text rein...
*/
function resetFields(whichform){
	for (var i=0; i<whichform.elements.length; i++) {
		var element = whichform.elements[i];
		if (element.type == "submit") continue;
		if (!element.defaultValue) continue;
		
		element.onfocus = function(){
			if (this.value == this.defaultValue) {
				this.value = "";
			}
		}
		
		element.onblur = function() {
			if (this.value == "") {
				this.value = this.defaultValue;
			}
		}
	}
}

// the javascript anthology, p. 106ff
// die jeweiligen feld-namen muessen hier aufgelistet sein
function validateFields(){
  var formName = "commentform"; // name of the form

	if (document.getElementById("Realname")){
		var name = document.forms[formName].elements["Realname"];
		// deutsch u. english unterschiedlich!
		if (name.value != "name" && name.value != "family name"){
			// styling wieder auf normal
			name.style.backgroundColor = "#EBEBEB";
		} else {
			name.style.backgroundColor = "#F89A38";
			warnhinweis();
			return false;
		}
	}
  
	// bei dem formular zur commentar-abgabe
	if (document.getElementById("author")){
		var name = document.forms[formName].elements["author"];
		if (name.value != "name"){
			// styling wieder auf normal
			name.style.backgroundColor = "#EBEBEB";
		} else {
			name.style.backgroundColor = "#F89A38";
			warnhinweis();
			return false;
		}
	}
  
	var email = document.forms[formName].elements["email"];
	if (email.value != "email"){
		//test, ob in email-adresse "@" und "." enthalten ist
		if(email.value.indexOf("@") == -1 || email.value.indexOf(".") == -1){
			warnhinweis("email")
			email.style.backgroundColor = "#F89A38";
			/* Abort submission */
			return false;
		}
		// styling wieder auf normal
		email.style.backgroundColor = "#EBEBEB";
	} else {
		email.style.backgroundColor = "#F89A38";
		warnhinweis();
		/* Abort submission */
		return false;
	}
  
	var comment = document.forms[formName].elements["comment"];
	if (comment.value != ""){
		// styling wieder auf normal
		comment.style.backgroundColor = "#EBEBEB";
		return true; // beim letzten abzufragenden element eintragen!
	} else {
		comment.style.backgroundColor = "#F89A38";
		warnhinweis(); 
		/* Abort submission */
		return false;
	}
}

// dom scripting, p. 126f
// die orange-umrahmte warnhinweis-zeile oberhalb der input-felder
function warnhinweis(text){
	if (!document.getElementById) return false;
	if (!document.getElementById("commentform")) return false;
	var commentform = document.getElementById("commentform");
	
	//abfrage, ob der warnhinweis schon erzeugt wurde
	if (document.getElementById("warnung")){
		para = document.getElementById("warnung");
		var elemText =  para.childNodes[0].nodeValue
		para.childNodes[0].nodeValue = rohTextMachen(text);
	} else {
		var para = document.createElement("p");
		para.setAttribute("id","warnung");
		commentform.parentNode.insertBefore(para,commentform);
		var txt = document.createTextNode(rohTextMachen(text));
		para.appendChild(txt);
	}
}

function rohTextMachen(text){
	var url = document.location.href;
	if (text == "email"){
		if (url.indexOf("/english/") != -1){ // englische seite
			var rohtext = unescape("your email is not properly formatted!")
		} else {
			var rohtext = unescape("Ihre email-adresse ist nicht korrekt formatiert!")
		}
	} else {
		if (url.indexOf("/english/") != -1){ // englische seite
			var rohtext = unescape("please fill in the orange colored field!")
		} else {
			var rohtext = unescape("bitte f%FCllen Sie das orange hinterlegte feld aus!")
		}
	}
	return rohtext;
}