var msg;
var err_empty;

function initCheck() {
	msg = '';
	err_empty = 0;
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function isEmpty() {
	var err = 0;
	var args = isEmpty.arguments;
	for (var i=0; i < args.length; i++) {
		obj = MM_findObj(args[i]);
		if (! obj.value || obj.value == "") {
			err = 1;
		}
	}
	if (err == 1) { err_empty = 1; }
}

function isEmptyByID() {
	/*
		same functionality as isEmpty(), but checks by element ID instead of element name
		for use in forms with illegal element names
		
		argument 0: form name
		arguments 1-n: numeric element ID of fields to check
			count from beginning of form, starting with 0 (including hidden fields!)
	*/
	var err = 0;
	var args = isEmptyByID.arguments;
	var myform = args[0];
	for (var i=1; i < args.length; i++) {
		obj = document[myform].elements[args[i]];
		if (! obj.value || obj.value == "") {
			err = 1;
		}
	}
	if (err == 1) { err_empty = 1; }
}

function oneFilled() {
	var filled = 0;
	var args = oneFilled.arguments;
	m_one = new Array;
	m_one["de"] = "Bitte füllen Sie eines dieser Felder aus: ";
	m_one["en"] = "Please fill in one of these fields: ";
	for (var i=0; i < args.length; i=i+2) {
		obj = MM_findObj(args[i]);
		if (obj.value || obj.checked) {
			filled = 1;
		}
		if (obj.length) {
			for (var j=0; j < obj.length; j++) {
				if (obj[j].checked) {
					filled = 1;
				}
			}
		}
	}
	if (! filled) {
		var m_onef = '';
		for (var i=1; i < args.length; i=i+2) {
			if (i > 1) { m_onef += ", "; }
			m_onef += args[i];
		}
		msg += m_one[lang] + m_onef + "\n";
	}
}

function isCheckedBox()  {
	var err = 0;
	var args = isCheckedBox.arguments;
	for (var i=0; i < args.length; i++) {
		obj = MM_findObj(args[i]);
		if (! obj.checked) {
			err = 1;
		}
	if (err == 1) { err_empty = 1; }
	}
}

function isCheckedRadio()  {
	var err = 1;
	var args = isCheckedRadio.arguments;
	for (var i=0; i < args.length; i++) {
		obj = MM_findObj(args[i]);
		for (var j = 0; j < obj.length; j++) {
			if (obj[j].checked) {
				err = 0;
			}
		}
	}
	if (err == 1) { err_empty = 1; }
}

function isEmail() {
	// checked, ob eine Email eingetragen und diese valid ist
	var err = 0;
	var regex_email = /.+@.+\..+/;
	var args = isEmail.arguments;
	m_email = new Array;
	m_email["de"] = "Bitte geben Sie eine gültige Email-Adresse ein.\n";
	m_email["en"] = "Please fill in a valid email address.\n";
	for (var i=0; i < args.length; i++) {
		obj = MM_findObj(args[i]);
		if (! obj.value || obj.value == "" || ! regex_email.test(obj.value)) {
			err = 1;
		}
	}
	if (err == 1) { msg += m_email[lang]; }
}

function isValidEmail() {
	// checked, ob die Email valid ist, sofern eine eingetragen ist
	var err = 0;
	var regex_email = /.+@.+\..+/;
	var args = isValidEmail.arguments;
	m_email = new Array;
	m_email["de"] = "Bitte geben Sie eine gültige Email-Adresse ein.\n";
	m_email["en"] = "Please fill in a valid email address.\n";
	for (var i=0; i < args.length; i++) {
		obj = MM_findObj(args[i]);
		if (obj.value && ! regex_email.test(obj.value)) {
			err = 1;
		}
	}
	if (err == 1) { msg += m_email[lang]; }
}

function submitForm(frm) {
	m_empty = new Array;
	m_empty["de"] = "Bitte füllen Sie alle mit * gekennzeichneten Felder aus!\n";
	m_empty["en"] = "Please fill in all required fields (marked with *)!\n";
	if (err_empty == 1) { msg = m_empty[lang] + msg; }
	if (msg != '') {
		alert(msg);
		msg = '';
	} else { 
		document[frm].submit();
	}
}

function presetDate(frm, elem, mstart, intv) {
	var Today = new Date();
	var myDate = new Date(Today.getTime()+intv*24*60*60*1000);
	elem_d = elem + "_D";
	elem_m = elem + "_M";
	elem_y = elem + "_Y";
	if (navigator.appName.indexOf("Microsoft")== -1) {
		var day = myDate.getDate() - 1;
		var month = myDate.getMonth();
		var year = myDate.getYear() + 1900;
		var year_idx;
	   	for (var i=0; i < document[frm][elem_y].options.length; i++) {
			if (document[frm][elem_y].options[i].value == year) {
				year_idx = i;
			}
		}
		document[frm][elem_d].options[day].selected = true;
		document[frm][elem_m].options[month].selected = true;
		document[frm][elem_y].options[year_idx].selected = true;
	}
	else {
		var day = myDate.getDate();
		var month = myDate.getMonth();
		if (mstart == 1) { month = month + 1; }
		var year = myDate.getYear();
		document[frm][elem_d].value = day;
		document[frm][elem_m].value = month;
		document[frm][elem_y].value = year;
	}
}

function checkDate(frm) {
	m_date1 = new Array;
	m_date1["de"] = "Kein gültiges Datum!\n";
	m_date1["en"] = "Date not valid!\n";
	Today = new Date();
	var startMonth=0;
	var day = parseInt(document[frm].day.options[document[frm].day.selectedIndex].value);
	var mon = document[frm].month.options[document[frm].month.selectedIndex].value - 1;
	var yea = parseInt(document[frm].year.options[document[frm].year.selectedIndex].value);
	var daynow = parseInt(Today.getUTCDate());
	var monthnow = parseInt(Today.getMonth());
	var yearnow = parseInt(Today.getFullYear());
	if (!(isNaN(day) && (isNaN(mon) || (mon == -1)) && isNaN(yea))) {
		if (!validDate(day, mon, yea) || isNaN(day) || isNaN(mon) || (mon == -1) || isNaN(yea)) { msg += m_date1[lang]; }
	}
	return true;
}

function validDate(day, mon, year)   {
  mon = mon + "";
  mon = mon.toUpperCase();
  if ((day < 1)  || (day > 31))  { return 0;  }
  if ((mon != "0") && (mon != "1") && (mon != "2") && (mon != "3") && (mon != "4") && (mon != "5") && (mon != "6") && (mon != "7") && (mon != "8") && (mon != "9") && (mon != "10") && (mon != "11"))  { return 0; }  if ((mon== "0") || (mon== "2") || (mon== "4") || (mon== "6") || (mon== "7") || (mon== "9") || (mon== "11")) { return 1;
  } else {
    if ((mon== "3") || (mon== "5") ||   (mon== "8") || (mon== "10")) {
      if (day <= 30)  {   return 1; }    }
    else {
      if (mon == "1")   {
        if (((year % 4) == 0) && ((year % 100) != 0))  {
          if (day <= 29) {  return 1;  }
        }
        if ((year % 400) == 0) {
          if (day <= 29)   {  return 1;    }
        }
        if (day <= 28) {  return 1;    }
      } else {
        return 0;
      }
    }
  }
  return 0;
}

function compareDate(dayf, monthf, yearf, dayt, montht, yeart, equal) {
  if (parseInt(yeart) < parseInt(yearf)) {  return 0; }
  if (parseInt(yeart) > parseInt(yearf)) {  return 1; }
  if (parseInt(montht) < parseInt(monthf)) {  return 0; }
  if (parseInt(montht) > parseInt(monthf)) { return 1; }
  if (equal)   {
    if (parseInt(dayt) < parseInt(dayf))   {  return 0; }
	} else {
		if (parseInt(dayt) <= parseInt(dayf))   {  return 0; }
  }
  return 1;
}


