/* bacis functions */
var nbsp = 160;		// non-breaking space char
var node_text = 3;	// DOM text node-type
var emptyString = /^\s*$/ ;
var global_valfield;	// retain valfield for timer thread

// --------------------------------------------
//                  trim
// Trim leading/trailing whitespace off string
// --------------------------------------------

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}

function confMsg(msg)
{
	if (!confirm(msg))
	{
		return false;
	}
}

function valEmpty(elemname, required)
{
	var msg = "FEHLER: Keine oder leere Eingabe\n\nBitte machen Sie eine Eingabe.";
	var elem = document.getElementById(elemname);
  if (emptyString.test(elem.value)) {
    if (required) {
			alert(msg)
		  elem.focus();
      return false;
    }
  }
  
	return true;
}

function valEmpty2(elemname, msg)
{
	var elem = document.getElementById(elemname);
	if (elem.value.length == 0)
	{
		alert(msg)
	  elem.focus();
	  return false;
	}
	return true;
}

function valCheck(elemname, msg)
{
	var elem = document.getElementById(elemname);
	//alert(elem.checked);
	if (elem.checked == false)
	{
		alert(msg)
	    elem.focus();
	    return false;
	}
	return true;
}

function valOption(elemname, msg)
{
	var elem = document.getElementById(elemname);
	if (elem.options[elem.options.selectedIndex].value == 0)
	{
        alert (msg);
        elem.focus();
        return false;
    }
	return true;
}

function valRadio(elemname, msg)
{
	var arrRadios = document.getElementsByName(elemname);
	
	var bChecked = false;
	for(var i=0; i < arrRadios.length; i++)
	{
		bChecked = bChecked | arrRadios[i].checked;
	}
	if(!bChecked)
	{
		alert(msg);
		arrRadios[0].focus();
	}
	return bChecked;
}

function valNumber(elemname, msg)
{
	var re=/^[1-9]*$/;
	if(!valExpression(elemname, msg, re)) return false;

	return true;
}

function valExpression(elemname, msg, expr)
{
	var elem = document.getElementById(elemname);
	var re = expr;
	
	if (elem.value.search(re)==-1)
	{
        alert (msg);
        elem.focus();
        return false;
	}
	return true;
}

/* specific functions */
function valCharacter(elemname, msg)
{
	if(!valEmpty(elemname)) return false;

	var re=/^[\w]+$/;
	if(!valExpression(elemname, msg, re)) return false;
	
	return true;
}

function valDate(elemname, msg)
{
	if(!valEmpty(elemname)) return false;
	
	var re = /^(19|20)\d\d[-.\/](0[1-9]|1[012])[-.\/](0[1-9]|[12][0-9]|3[01])$/;
	if(!valExpression(elemname, msg, re)) return false;
	
	return true;
}

function valLetter(elemname, msg)
{
	//if(!valEmpty(elemname, msg)) return false;
	
	var re=/^[a-zA-ZäÄöÖüÜèçé-]+[\w\s]*$/;
	if(!valExpression(elemname, msg, re)) return false;
	
	return true;
}

function matchValues(elemname1, elemname2, msg)
{
	var elem1 = document.getElementById(elemname1);
	var elem2 = document.getElementById(elemname2);

	if (elem1.value != elem2.value)
	{
		alert(msg);
		elem1.value = "";
		elem2.value = "";
		elem1.focus();
		return false;
	}
	return true;
}

/*--------------------------------------------------------------------*/

function valTicket(elemname, required)
{
	
	if(!valEmpty(elemname, required)) return false;

	var msg = "FEHLER: Ungültige Eingabe\n\nNur Zahlen erlaubt";
	if(!valNumber(elemname, msg)) return false;
	
	return true;
}

function valAnzPersonen(elemname, required)
{
	
	if(!valEmpty(elemname, required)) return false;

	var msg = "FEHLER: Ungültige Eingabe\n\nNur Zahlen erlaubt";
	if(!valNumber(elemname, msg)) return false;
	
	return true;
}

function valAnzProgrammhefte(elemname, required)
{
	
	if(!valEmpty(elemname, required)) return false;

	var msg = "FEHLER: Ungültige Eingabe\n\nNur Zahlen erlaubt";
	if(!valNumber(elemname, msg)) return false;
	
	return true;
}

function valCD(elemname, required)
{
	
	if(!valEmpty(elemname, required)) return false;

	var msg = "FEHLER: Ungültige Eingabe\n\nNur Zahlen erlaubt";
	if(!valNumber(elemname, msg)) return false;
	
	return true;
}

function valName(elemname, required)
{
	
	if(!valEmpty(elemname, required)) return false;

	var msg = "FEHLER: Ungültige Eingabe\n\nNur Buchstaben erlaubt";
	var re = /^[a-zA-ZäöüèéçÄÖÜÉÈ\-"'"\s]*$/;
	if(!valExpression(elemname, msg, re)) return false;

//	if(!valLetter(elemname, msg)) return false;
	
	return true;
}

function valStreet(elemname, required)
{
	
	if(!valEmpty(elemname, required)) return false;

	var msg = "FEHLER: Ungültige Eingabe\n\nNur Buchstaben und Zahlen erlaubt";
	var re=/^[a-zA-ZäöüèéçÄÖÜÉÈ\-"'"\s]+[A-Za-z0-9]*$/;
	if(!valExpression(elemname, msg, re)) return false;
	
	return true;
}

function valShortDate(elemname, required)
{
	
	if(!valEmpty(elemname, required)) return false;

	var elem = document.getElementById(elemname);
	if (elem.value.length > 0)
	{
		var msg = "FEHLER: Ungültige Eingabe\n\nNur Datum(Anzahl) der Form 01.07 (3), 02.07 (2), ... erlaubt";
//	var re=/^[0-9\,\."'"([0-9])\s]*$/;
		var re=/^([0-9]{2}.[07]{2}\s{1}\([0-9]\)(,\s){0,})*[0-9]{2}.[07]{2}\s{1}\([0-9]\)$/;
		if(!valExpression(elemname, msg, re)) return false;
	}
	
	return true;
}

function valEmail(elemname, required)
{
	if(!valEmpty(elemname, required)) return false;
	
	var elem = document.getElementById(elemname);
	if (elem.value.length > 0)
	{
		var msg = "FEHLER: Ungültige email Adresse";
		var re=/^[\w\.\_\+-]*@[\w\_\+-]+(\.[\w\_\+-]+)*\.[\w\+-]+$/;
		if(!valExpression(elemname, msg, re)) return false;
	}
	
	return true;
}

function valLocation(elemname, required)
{
	if(!valEmpty(elemname, required)) return false;

	var msg = "FEHLER: Ungültige Eingabe\n\nNur PLZ und Ort erlaubt";
//	var re=/^[0-9][\w\s]+[A-Za-z]*$/;
	var re=/^(\d{4,})\s([a-zA-ZäöüèéçÄÖÜÉÈ"'"\s])*$/;
	if(!valExpression(elemname, msg, re)) return false;
	
	return true;
}

function valTelnr(elemname, required)
{
	if(!valEmpty(elemname, required)) return false;

  var msg = "FEHLER: Ungültige Telephonnummer.";
  var re = /^\+?[0-9 ()-]+[0-9]$/  ;
	if(!valExpression(elemname, msg, re)) return false;

  return true;
}

function valRemarks(elemname, required)
{
	
	if(!valEmpty(elemname, required)) return false;

	var msg = "FEHLER: Ungültige Eingabe\n\nNicht erlaubte Zeichen entdeckt";
	var re = /^[0-9a-zA-ZäöüèéçÄÖÜÉÈ\-\,\.\(\)\=\?\!"'"\s]*$/;
	if(!valExpression(elemname, msg, re)) return false;

//	if(!valLetter(elemname, msg)) return false;
	
	return true;
}
