
var watermark = 'grey';
var stdColor = 'black';
var errColor = '#C32148';
var greenText = '#339900';

/***
 * Watermark and ReplaceValue are used to display the watermarks (hints)
 * in the text boxes which acts as labels to the fields
 */
function Watermark(txt, evt) {
	// if the value is default, on focus, make the hint to empty and black text
	if(txt.value == txt.defaultValue) { 
		txt.style.color = stdColor;
		txt.value = '';		
	}
}

function ReplaceValue(txt, evt) {
	// on blur, if field is still empty, then fill in hint in grey
	if(txt.value == '') {
		txt.value = txt.defaultValue;
		txt.style.color = watermark;
	}
}
/**************************************************************************/
/*********validation scripts**************/
function changeColor(field, thisColor) {

	field.style.color = thisColor;
}

function validate_form(thisform) {

	// initialise variables
	var elem = "";
	var retval = true;

	// first get all the required fields [type=text]
	var reqfields = document.getElementById('required').value.split(',');
	for (var ix=0; ix < reqfields.length; ix++) { 
		var field = document.getElementById(reqfields[ix]);
		// check that each field pass the validation check
		if(validate_required(field)==false) {
			// if not change font color to grab attention and set return value to false
			changeColor(field, errColor);
			retval = false;
		}
  	}
  	// check if email is valid
  	var e1 = document.getElementById('email1');
  	var e2 = document.getElementById('email2');
  	if ( isEmail(e1) == false ) {
  		retval = false;	
  	} 
  	if ( isEmail(e2) == false ) {
  	 	retval = false;
  	} else if( isSame(e1, e2) == false ){ 
  		retval = false;	
  	}
  	
	var p1 = document.getElementById('passwort');
	var p2 = document.getElementById('passwort2');
	if ( p1.value.length < 8) {
		retval = false;
		changeColor(p1, errColor);
	}
	if ( p2.value.length < 8) {
		retval = false;
		changeColor(p2, errColor);
	}
	else{
	  	if ( isSame(p1, p2) == false ){ 
	  		retval = false;	
	  	} else {
			changeColor(p1, stdColor);
			changeColor(p2, stdColor);
	  	}
	}
  	
	var u1 = document.getElementById('ust_nr');
	var u2 = document.getElementById('ust_nr2');
  	if ( isSame(u1, u2) == false ){ 
  		retval = false;	
  	} else {
		changeColor(u1, stdColor);
		changeColor(u2, stdColor);
  	}
  	
  	// check the rest of the fields [type=select]
  	if ( validate_select( document.getElementById('anrede')) == false )
  		{ retval = false; }
  	if ( validate_select( document.getElementById('land')) == false ) 
  	    { retval = false; }
	    
	//  [type=radio]
	if (thisform.accept_agb.checked == false) {
		changeColor(document.getElementById('reg_form_agb'), errColor)
		retval = false;
	} else {
		changeColor(document.getElementById('reg_form_agb'), greenText);
	}
	
	// if false, then remove standard text info and replace with error msg
	if(retval == false) { 
		toogleView('page_text', 'none');
		toogleView('error_text', 'block'); 
	}  	
	return retval; // [true || false]
}

/*function to check if select option is selected*/
function validate_select(field) {
	 // default value is 0 => nothing selected
	if(field.value == 0) {
		changeColor(field, errColor);
		return false;
	} else {
		changeColor(field, stdColor);
		return true;
	}
}

function validate_required(field) {

	var std = field.title; // default text
	if (( field.value == null )||( field.value == "" )|| ( isblank( field )))	
		 { return false; }  // if empty, then fail
	if (field.value == std) 							
		 { return false; } // if same as default, then fail
	else { return true; } 
	 
}
//A utility function that returns true if a string contains only
// white space characters
function isblank(someField) {

	var s = someField.value;
	for(var i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if ((c != ' ') && (c != '\n') && (c != '')) return false;
	}

	someField.value = someField.defaultValue;
	return true;
}

function isSame(field1, field2) {

	if(field1.value != field2.value) {
		field2.value = field2.defaultValue;
		changeColor(field1, errColor);
		changeColor(field2, errColor);
		return false;
	} else {
		return true; 	
	}
}

function isEmail(emailField) {  // from: http://tech.irt.org/articles/js049/
	// the minimum is x@x.x
	var string = emailField.value;
	if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) {
		changeColor(emailField, stdColor);
		return true;
	} else{
		changeColor(emailField, errColor);
		return false;
	}
}

/* function used to hide / display section of form */
function toogleView(element, status){
	// block or none
	document.getElementById(element).style.display=status;
}

/****************END VALIDATION SCRIPT**********************/
