function makeArray(IntarrSize) {

  for (var n = 0; n < IntarrSize; n++)
    this[n] = "";

  return this;

}

function customSplit(strvalue, separator, arrayName) {
  var n = 0;

  if (separator.length != 0) {
    while (strvalue.indexOf(separator) != -1) {
      eval("arr"+n+" = strvalue.substring(0, strvalue.indexOf(separator));");
      strvalue = strvalue.substring(strvalue.indexOf(separator)+separator.length,
          strvalue.length+1);
      n++;
    }
    eval("arr" + n + " = strvalue;");
    arraySize = n+1;
  }
  else {
    for (var x = 0; x < strvalue.length; x++) {
      eval("arr"+n+" = \"" + strvalue.substring(x, x+1) + "\";");
      n++;
    }
    arraySize = n;
  }

  eval(arrayName + " = new makeArray(arraySize);");

  for (var i = 0; i < arraySize; i++)
    eval(arrayName + "[" + i + "] = arr" + i + ";");

  return arraySize;
}

function isEmail(argvalue) {

  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("@") == -1)
    return false;
  else if (argvalue.indexOf("@") == 0)
    return false;
  else if (argvalue.indexOf("@") == (argvalue.length-1))
    return false;

  // arrayString = argvalue.split("@"); (works only in netscape3 and above.)
  var retSize = customSplit(argvalue, "@", "arrayString");

  if (arrayString[1].indexOf(".") == -1)
    return false;
  else if (arrayString[1].indexOf(".") == 0)
    return false;
  else if (arrayString[1].charAt(arrayString[1].length-1) == ".") {
    return false;
  }

  return true;

}

function isValidDate(str) {
	var num = '0123456789';
	if (str.length == 10) {
		if ((num.indexOf(str.charAt(0)) != -1) &&
			(num.indexOf(str.charAt(1)) != -1) &&
			(num.indexOf(str.charAt(3)) != -1) &&
			(num.indexOf(str.charAt(4)) != -1) &&
			(num.indexOf(str.charAt(6)) != -1) &&
			(num.indexOf(str.charAt(7)) != -1) &&
			(num.indexOf(str.charAt(8)) != -1) &&
			(num.indexOf(str.charAt(9)) != -1) &&
			(str.charAt(2) == '.') && (str.charAt(5) == '.')) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

function quikplan_validate_person(i, required) {
	var _firstname = $('input[name=firstname'+i+']').val();
	var _lastname = $('input[name=lastname'+i+']').val();
	var _birthdate = $('input[name=birthdate'+i+']').val();
	
	if ((_firstname == '') && (_lastname == '') && (_birthdate == '') && (required == false)) {
		return true;
	}
	if ((_firstname.length > 1) && (_lastname.length > 1) && (isValidDate(_birthdate))) {
		return true;
	} else {
		return false;
	}
}

function quikplan_send() {
	var personenzahl = eval($('#personen' + $('input[name=course_id]').val()).attr('count'));
	var _personen = '';
	var personenzahl = eval($('#personen' + $('input[name=course_id]').val()).attr('count'));
	for (var i = 1; i <= personenzahl; i++) {
		var _firstname = $('input[name=firstname'+i+']').val();
		var _lastname = $('input[name=lastname'+i+']').val();
		var _birthdate = $('input[name=birthdate'+i+']').val();
		var _member = ($('input[name=member'+i+']:checked').length == 1) ? 'NF-Mitglied' : 'Kein NF-Mitglied';
		var _obj = _firstname + '$' + _lastname + '$' + _birthdate + '$' + _member;
		if (_personen != '') { _personen += '#'; }
		_personen = _personen + _obj;
	}
	var _data = {
		course_id: $('input[name=course_id]').val(),
		email: $('input[name=email]').val(),
		telefon: $('input[name=telefon]').val(),
		agb: 'Ich habe die Hallenordnung und die AGBs der Kletterhalle Wien gelesen, verstanden und werde sie einhalten',
		newsletter: ($('input[name=newsletter]:checked').length == 1),
		personenzahl: personenzahl,
		personen: _personen
	};
	$.ajax({
		type: 'POST',
		url: 'http://www.kletterhallewien.at/kurse.php',
		dataType: 'html',
		data: _data,
		success: function(_html) {
			$('#anmeldung' + $('input[name=course_id]').val()).html(_html);
		}
	});
}

function quikplan_submit() {
	var email = $('input[name=email]').val();
	var personenzahl = eval($('#personen' + $('input[name=course_id]').val()).attr('count'));
	if (isEmail(email)) {
		if ($('input[name=agb]:checked').length == 1) {
			if (quikplan_validate_person(1, true)) {
				if (personenzahl > 1) {
					var _valid = true;
					for (var i = 2; i <= personenzahl; i++) {
						if (!quikplan_validate_person(i, false)) {
							_valid = false;
						}
					}
					if (!_valid) {
						alert('Wenn Sie weitere Personen angeben, sind von diesen Personen ebenfalls Vorname, Nachname und gültiges Geburtsdatum erforderlich. Ansonsten lassen Sie die Zeilen komplett leer.');
					} else {
						quikplan_send();
					}
				} else {
					quikplan_send();
				}
			} else {
				alert('Es muss zumindest eine Person vollständig (Vorname, Nachname, Geburtsdatum) angegeben werden.');
			}
		} else {
			alert('Bitte bestätigen Sie, dass Sie die Hallenordnung und die AGB der Kletterhalle Wien gelesen und verstanden haben und diese einhalten werden.');
		}
	} else {
		alert('Geben Sie bitte eine gültige Email-Adresse an!');
	}
	return false;
}

function quikplan_newline_html(i) {
	var str = '';
	str += '<tr><td><input name="firstname' + i + '" size="16" /></td>';
	str += '<td><input name="lastname' + i + '" size="16" /></td>';
	str += '<td align="center"><input name="birthdate' + i + '" size="10" /></td>';
	str += '<td align="center" valign="middle"><input name="member' + i + '" type="checkbox" /></td></tr>';
	return str;
}

function quikplan_newline(course_id) {
	var str = '';
	var count = eval($('#personen' + course_id).attr('count'));
	var frei = eval($('#anmeldung' + course_id).attr('frei'));
	
	if (frei > count) {
		count = count + 1;
		str += quikplan_newline_html(count);
		$('#personen' + course_id + ' table').append(str);
		$('#personen' + course_id).attr('count', count);
	} else {
		alert('Es sind keine weiteren Plätze verfügbar!');
	}
}

function quikplan_anmeldung_formular(course_id) {
	var str = '';
	str += '<input name="course_id" type="hidden" value="' + course_id + '" />';

	str += '<p><label>Email</label><br />';
	str += '<input name="email" size="30" /></p>';

	str += '<p><label>Telefon (optional)</label><br />';
	str += '<input name="telefon" size="25" /></p>';

	str += '<span id="personen' + course_id + '" count="1">';

	str += '<table width="100%" border="0" cellspacing="0" cellpadding="0">';
	str += '<tr><th>Vorname</th><th>Nachname</th><th>Geburtsdatum<br />tt.mm.jjjj</th><th>Naturfreunde-<br />Mitglied</th></tr>';
	str += quikplan_newline_html(1);
	str += '</table>';


	str += '</span>';
	str += '<p><a href="#" onclick="quikplan_newline(' + course_id + '); return false;">Weitere Person hinzuf&uuml;gen</a></p>';

	str += '<p><input type="checkbox" name="agb" /> Ich habe die <a target="_blank" href="http://www.kletterhallewien.at/klettern/facts/hallenordnung.html" title="Hallenordnung">Hallenordnung</a> und die <a target="_blank" href="http://www.kletterhallewien.at/kletterhalle/agb.html" title="Allgemeine Geschäftsbedingungen">AGBs</a> der Kletterhalle Wien gelesen, verstanden und werde sie einhalten<br />';
	str += '<input type="checkbox" style="display: none;" name="newsletter" /> <span style="display: none;">Ich möchte Newsletter der Kletterhalle Wien erhalten</span></p>';

	str += '<input id="kursanmeldung" type="submit" value="Anmeldung abschicken" />';

	return str;
}

function quikplan_anmeldung(course_id) {
        $('span.anmeldung').html('');
        var _id = '#anmeldung' + course_id;
        $(_id).html(quikplan_anmeldung_formular(course_id));
}