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: ";
	m_one["pl"] = "Prosimy o wypelnienie jednej z podanych rubryk: ";
	m_one["cz"] = "Vyplnte prosím jedno z techto polí: ";
	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";
	m_email["pl"] = "Prosimy o podanie waznego adresu poczty internetowej.\n";
	m_email["cz"] = "Uvedte prosím platný email.\n";
	m_email["it"] = "Per favore, inserite un indirizzo e-mail valido!\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";
	m_email["pl"] = "Prosimy o podanie waznego adresu poczty internetowej.\n";
	m_email["cz"] = "Uvedte prosím platný email.\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["it"] = "È necessario compilare i campi obbligatori per iscriversi alla newsletter.\n\nGrazie!\n";
	m_empty["en"] = "Please fill in all required fields (marked with *)!\n";
	m_empty["pl"] = "Prosimy o wypelnienie wszystkich rubryk zaznaczonych gwiazdka!\n";
	m_empty["cz"] = "Vyplnte prosím všechna pole oznacená *!\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, mstart, elem, elem1) {
	m_date1 = new Array;
	m_date1["de"] = "Kein gültiges Datum!\n";
	m_date1["en"] = "Date not valid!\n";
	m_date1["pl"] = "Bledna data!\n";
	m_date1["cz"] = "Neplatné datum!\n";
	m_date2 = new Array;
	m_date2["de"] = "Das Anreisedatum muß größer oder gleich dem heutigen Datum sein.\n";
	m_date2["en"] = "Check in date must be today's date or later.\n";
	m_date2["pl"] = "Data przyjazdu nie moze byc wczesniejsza niz data wypelnienia forumularza.\n";
	m_date2["cz"] = "Datum príjezdu musí být pozdejsí nebo stejné jako dnesní datum.\n";
	m_date3 = new Array;
	m_date3["de"] = "Das Abreisedatum muß größer als das Anreisedatum sein.\n";
	m_date3["en"] = "Check out date must be later than check in date.\n";
	m_date3["pl"] = "Data wyjazdu nie moze byc wczesniejsza niz data wypelnienia formularza.\n";
	m_date3["cz"] = "Datum odjezdu musí být pozdejsí nez datum príjezdu.\n";
	Today = new Date();
	var startMonth=0;
	elem_d = elem + "_D";
	elem_m = elem + "_M";
	elem_y = elem + "_Y";
	var day = parseInt(document[frm][elem_d].options[document[frm][elem_d].selectedIndex].value);
	var mon = document[frm][elem_m].options[document[frm][elem_m].selectedIndex].value - 1;
	if (!mstart && document[frm][elem_m].options[document[frm][elem_m].selectedIndex].value != "") { mon++; }
	var yea = parseInt(document[frm][elem_y].options[document[frm][elem_y].selectedIndex].value);
	if (elem1) {
		elem1_d = elem1 + "_D";
		elem1_m = elem1 + "_M";
		elem1_y = elem1 + "_Y";
		var day1 = parseInt(document[frm][elem1_d].options[document[frm][elem1_d].selectedIndex].value);
		var mon1 = document[frm][elem1_m].options[document[frm][elem1_m].selectedIndex].value - 1;
		if (!mstart && document[frm][elem1_m].options[document[frm][elem1_m].selectedIndex].value != "") { mon++; }
		var yea1 = parseInt(document[frm][elem1_y].options[document[frm][elem1_y].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]; }
		else if (!compareDate(daynow, monthnow, yearnow, day, mon, yea, 1)) { msg += m_date2[lang]; }
		else if (elem1 && !compareDate(day, mon, yea, day1, mon1, yea1, 0)) { msg += m_date3[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;
}

