netscape=(document.layers) ? 1:0
goodIE=(document.all) ? 1:0
var mussfeld=0;
var uebergabe='';
var eingabe='';
var message='';
var besch_laenge=0;
var besch_laenge_max=0;
var anzahl_tabs=0;
var anzahl_rest=0;
var tab_stellen=6;
var tab_string='';

function testmailausf (formname,feldname)
{
//	var telstring		= document.forms[formname].elements['tel'].value;
//	var mailstring		= document.forms[formname].elements[feldname].value;

	mailstring=document.forms[formname].elements[feldname].value;

	var fehlermeldung0	= "Bitte geben Sie keine oder eine korrekte E-Mail-Addresse ein";
	var fehlermeldung1	= "Bitte überprüfen Sie die eingegebene E-Mail-Addresse!";
	var fehlermeldung2	= "";

	
	if ( mailstring == "") {
		mussfeld=false;
		alert('Bitte füllen Sie das Feld - ' + feldname + ' - vollständig aus.');
		document.forms[formname].elements[feldname].focus();
		return mussfeld;
	}
	else {
			// Test country oder TLD? 1 für testen, 0 nicht testen
			var checkTLD=1;

			// TLDs Liste
			var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

			// user@domain format
			var emailPat=/^(.+)@(.+)$/;

			// Liste zeichen ( ) < > @ , ; : \ " . [ ]
			var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
			var validChars="\[^\\s" + specialChars + "\]";

			// in Anführungszeichen? (dann sind special charakters erlaubt)
			var quotedUser="(\"[^\"]*\")";

			// domains mit IP addressen
			var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
			var atom=validChars + '+';
			var word="(" + atom + "|" + quotedUser + ")";
			var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
			var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
			var matchArray=mailstring.match(emailPat);

			if (matchArray==null) {
				// test Anzahl der @
				alert(fehlermeldung1);
//				alert("Bitte überprüfen Sie die eingegebene E-Mail-Addresse - Es fehlen evtl. die Zeichen '@' oder '.' !)");
				document.forms[formname].elements[feldname].focus();
				return false;
			}
			var user=matchArray[1];
			var domain=matchArray[2];

			// test gültige ASCII characters (0-127).
			for (i=0; i<user.length; i++) {
				if (user.charCodeAt(i)>127) {
					alert(fehlermeldung1);
//					alert("Bitte überprüfen Sie die eingegebene E-Mail-Addresse - Der Username enthält evtl. ungültige Zeichen !");
					document.forms[formname].elements[feldname].focus();
					return false;
				}
			}

			for (i=0; i<domain.length; i++) {
				if (domain.charCodeAt(i)>127) {
					alert(fehlermeldung1);
//					alert("Bitte überprüfen Sie die eingegebene E-Mail-Addresse - Der Domainname enthält evtl. ungültige Zeichen !");
					document.forms[formname].elements[feldname].focus();
					return false;
				}
			}


			if (user.match(userPat)==null) {
				// user nicht OK
				alert(fehlermeldung1);
//				alert("Bitte überprüfen Sie die eingegebene E-Mail-Addresse - Der Username ist evtl. ungültig !");
				document.forms[formname].elements[feldname].focus();
				return false;
			}

			// IP addresse OK ?

			var IPArray=domain.match(ipDomainPat);
			if (IPArray!=null) {
				// es handelt sich um eine IP-Adresse
				for (var i=1;i<=4;i++) {
					if (IPArray[i]>255) {
						alert(fehlermeldung1);
//						alert("Bitte überprüfen Sie die eingegebene E-Mail-Addresse - Die Empfänger IP-Adresse is evtl. ungültig !");
						document.forms[formname].elements[feldname].focus();
						return false;
					}
				}
				return true;
			}

			// Domain ist ein "symbolic name",  gültig ?

			var atomPat=new RegExp("^" + atom + "$");
			var domArr=domain.split(".");
			var len=domArr.length;

			for (i=0;i<len;i++) {
				if (domArr[i].search(atomPat)==-1) {
					alert(fehlermeldung1);
//					alert("Bitte überprüfen Sie die eingegebene E-Mail-Addresse - Der Domainname ist evtl. ungültig !");
					document.forms[formname].elements[feldname].focus();
					return false;
				}
			}

			// domain name valid, testen bekannte top-level domain hostname vorangestellt ?

			if (checkTLD && domArr[domArr.length-1].length!=2 &&
				domArr[domArr.length-1].search(knownDomsPat)==-1) {
				alert(fehlermeldung1);
//				alert("Bitte überprüfen Sie die eingegebene E-Mail-Addresse - Diese muss mit einer bekannten Domain (TLD) oder 2 Zeichen enden !");
				document.forms[formname].elements[feldname].focus();
				return false;
			}

			// hostname vorangestellt ?

			if (len<2) {
				alert(fehlermeldung1);
//				alert("Bitte überprüfen Sie die eingegebene E-Mail-Addresse - Der Hostname fehlt evtl. !");
				document.forms[formname].elements[feldname].focus();
				return false;
			}

			// hier angekommen ist alles OK
	
//			document.forms[formname].elements['emailkz'].value = "0";
			
			return true;	
	}
}

function testfelder(formname,feldname,inputname,sprungj_n,sprungziel)
{
	if(netscape){
		movevar=document.layers;
	}
	else if(goodIE){
		movevar=document.all;
	}
	
	eingabe=document.forms[formname].elements[inputname].value;

	if(eingabe==""){
		mussfeld=false;
		alert('Bitte füllen Sie das Feld - ' + feldname + ' - vollständig aus.');
		document.forms[formname].elements[inputname].focus();
		if(sprungj_n!=2)
			return mussfeld;
	}
	else{
		messageformat(feldname,eingabe);
		mussfeld=true;
		return mussfeld;
		if(sprungj_n!=0){
			sprung(sprungziel);
		}
	}
}


function messageformat(feldname,eingabe)
{
	besch_laenge=feldname.length + 1;
	anzahl_tabs = ( besch_laenge_max - besch_laenge ) / tab_stellen;

	if ( ( ( besch_laenge_max - besch_laenge ) % tab_stellen ) > 0 ){
		anzahl_tabs++;
	}

    tab_string= '';
    
	for ( i=1; i<=anzahl_tabs; i++ ){
		tab_string=tab_string + "\t";
	}
	message = message + feldname + ":" + tab_string + eingabe +"\n-------------------------------------------------------------\n";
}


function check_person2(formname)
{
	if(document.forms[formname].elements['anzahl'][0].checked == true){
		document.forms[formname].elements['name2'].readOnly = true;
//		document.forms[formname].elements['name2'].backgroundColor = "ffffff";
	}
	else{
		document.forms[formname].elements['name2'].readOnly = false;
//		document.forms[formname].elements['name2'].backgroundColor = "000000";
	}
}


function check_kontakt(formname)
{
	testfelder(formname,'Vorname','vorname',0,'');
	if(mussfeld)testfelder(formname,'Name','name',0,'');
//	if(mussfeld)testfelder(formname,unescape('Stra%DFe'),'strasse',0,'');
	if(mussfeld)testfelder(formname,'Telefon','tel',0,'');
	if(mussfeld) mussfeld = testmailausf(formname,'Email');
	return mussfeld;
}

function check_buchung(formname)
{
	testfelder(formname,'Name','name',0,'');
	if(mussfeld)testfelder(formname,'Vorname','vorname',0,'');
	if(mussfeld)testfelder(formname,unescape('Stra%DFe'),'strasse',0,'');
	if(mussfeld)testfelder(formname,'PLZ','plz',0,'');
	if(mussfeld)testfelder(formname,'Ort','ort',0,'');
	if(mussfeld)testfelder(formname,unescape('Nationalit%E4t'),'nation',0,'');

	if(document.forms[formname].elements['anzahl'][1].checked == true){
		if(mussfeld)testfelder(formname,'Name','name2',0,'');
		if(mussfeld)testfelder(formname,'Vorname','vorname2',0,'');
		if(mussfeld)testfelder(formname,unescape('Stra%DFe'),'strasse2',0,'');
		if(mussfeld)testfelder(formname,'PLZ','plz2',0,'');
		if(mussfeld)testfelder(formname,'Ort','ort2',0,'');
		if(mussfeld)testfelder(formname,unescape('Nationalit%E4t'),'nation2',0,'');
	}

	if(mussfeld){
		if(document.forms[formname].elements['bedingungen'].checked == true){
			mussfeld = true;
		}
		else{
			alert('Sie müssen die Reisebedingungen akzeptieren bevor sie die Buchung abschicken können.');
			document.forms[formname].elements['bedingungen'].focus();
			mussfeld = false;
		}
	}
	return mussfeld;
}

////////////////////////////////////////////////////////////////////////////////
// Funktionen fuer den JSCalendar
function create_calendar ( inputFieldId, triggerButtonId ) {

	var diable_func = ( arguments.length == 3 )?arguments[2]:null;
	var onCloseFunc     = ( arguments.length == 4 )?arguments[3]:null;

	Calendar.setup({
	    inputField     :    inputFieldId,    // id of the input field
	    ifFormat       :    "%d.%m.%Y",      // format of the input field
	    button         :    triggerButtonId, // trigger for the calendar (button ID)
	    align          :    "Tl",            // alignment (defaults to "Bl")
	    singleClick    :    true,
	    disableFunc    :    diable_func,
	    onClose        :    onCloseFunc
	});
}	

