//set regex definitions;
var regexNum = /^[0-9]*$/ ;
var regexPlz = /^[0-9a-z]{0,5}$/i ;
var regexYear = /^[0-9]{0,4}$/i ;
var re = new RegExp("^([\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+(\.[\\w]+)+)?$");

function enable()
{ 
	
}

function disable()
{ 
	
}

function einzugsermaechtigungChecked()
{ 
	var check = document.getElementById("einzugsermaechtigung");
	if(check.checked){
		enable();
	}
	else
	{
		disable();
	}
}

function company_emailValidation() {
	var mail = document.getElementById("company_emailaddress");
	var m = re.exec(mail.value);
	
	if (mail.value == ""){
		changeClassName(mail);
		error_message = true;
	}else if (m == null){
		changeClassName(mail);
		error_message_mail = true;
	}else{
		changeBackClassName(mail);
	}
}

function changeClassName(obj){
	tr = obj.parentNode.parentNode;
	tds = tr.getElementsByTagName("td");
	tds[0].className ='error_msg';		
}

function changeBackClassName(obj){
	tr = obj.parentNode.parentNode;
	tds = tr.getElementsByTagName("td");
	tds[0].className ='member_table_label';	
}

// added by peter 15.09.09 to avoid spam attacks
function spamValidation() {
	var firstname = document.getElementById("firstname");
	var surname = document.getElementById("surname");
	if (surname.value == firstname.value)
	{
		changeClassName(firstname);
		changeClassName(surname);
		error_message = true;
	}
	else
	{
		changeBackClassName(firstname);
		changeBackClassName(surname);
	}
}

function townValidation() {
	var town = document.getElementById("town");
	var zipcode = document.getElementById("zipcode");
	if (town.value != "" || zipcode.value !="")
	{
		if (town.value == "" || zipcode.value =="")
		{
			changeClassName(town);
			error_message = true;
		}
		else
		{
			changeBackClassName(town);
		}
	}
}

function companyTownValidation() {
	var town = document.getElementById("company_town");
	var zipcode = document.getElementById("company_zipcode");
	if (town.value == "" || zipcode.value =="")
	{
		changeClassName(town);
		error_message = true;
	}
	else
	{
		changeBackClassName(town);
	}
}

function firstnameValidation() {
	var firstname = document.getElementById("firstname");
	if (firstname.value == "")
	{
		changeClassName(firstname);
		error_message = true;
	}
	else
	{
		changeBackClassName(firstname);
	}
}

function surnameValidation() {
	var surname = document.getElementById("surname");
	if (surname.value == "")
	{
		changeClassName(surname);
		error_message = true;
	}
	else
	{
		changeBackClassName(surname);
	}
}

function bankValidation() {
	var company_name = document.getElementById("company_name");
	if (company_name.value == "")
	{
		changeClassName(company_name);
		error_message = true;
	}
	else
	{
		changeBackClassName(company_name);
	}
}

function kontonummer() {
	var kontonummer = document.getElementById("kontonummer");
	if (kontonummer.value == "" && kontonummer.disabled==false)
	{
		changeClassName(kontonummer);
		error_message = true;
	}
	else
	{
		changeBackClassName(kontonummer);
	}
}

function bankB() {
	var bankB = document.getElementById("bankB");
	if (bankB.value == "" && bankB.disabled==false)
	{
		changeClassName(bankB);
		error_message = true;
	}
	else
	{
		changeBackClassName(bankB);
	}
}
function emailValidation() {
	var mail = document.getElementById("emailaddress");
	var m = re.exec(mail.value);

	if (mail.value != ""){
		if (m == null){
			changeClassName(mail);
			error_message_mail = true;
		}else{
			changeBackClassName(mail);
		}
	}
	else{
		changeBackClassName(mail);
	}
}

function kontoinhaber() {
	var kontoinhaber = document.getElementById("kontoinhaber");
	if (kontoinhaber.value == "" && kontoinhaber.disabled==false)
	{
		changeClassName(kontoinhaber);
		error_message = true;
	}
	else
	{
		changeBackClassName(kontoinhaber);
	}
}

function ACIMitglied(obj) {
	if(obj.value==1){
		mitgliedEnable();
	}
	else
	{
		mitgliedDisable();
	}
}

function mitgliedEnable()
{ 
	document.getElementById("austrittsdatum").disabled=false;
	document.getElementById("bisheriger_arbeitgeber").disabled=false;
	document.getElementById("bisherigesLand").disabled=false;
}

function mitgliedDisable()
{ 
	document.getElementById("austrittsdatum").disabled=true;
	document.getElementById("bisheriger_arbeitgeber").disabled=true;
	document.getElementById("bisherigesLand").disabled=true;
}

function abteilung() {
	var abteilung = document.getElementById("abteilung");
	if (abteilung.value == "")
	{
		changeClassName(abteilung);
		error_message = true;
	}
	else
	{
		changeBackClassName(abteilung);
	}
}

function bankleitzahl() {
	var bankleitzahl = document.getElementById("bankleitzahl");
	if (bankleitzahl.value == "")
	{
		changeClassName(bankleitzahl);
		error_message = true;
	}	
	else
	{
		changeBackClassName(bankleitzahl)
	}
}

function reset(){
	document.form_mitgliedschaftsantrag.reset();
}

function companytelephonenumberValidation() {
	var telephonenumber = document.getElementById("company_telephonenumber");
	if (telephonenumber.value == "")
	{
		changeClassName(telephonenumber);
		error_message = true;
	}
	else
	{
		changeBackClassName(telephonenumber);
	}
}

function companyStreetValidation() {
	var street = document.getElementById("company_street");
	if (street.value == "")
	{
		changeClassName(street);
		error_message = true;
	}
	else
	{
		changeBackClassName(street);
	}
}

function landValidation() {
	var land = document.getElementById("land");
	if (land.options[0].selected)
	{
		changeClassName(land);
		error_message = true;
	}
	else
	{
		changeBackClassName(land);
	}
}

function bisherigesLandValidation() {
	var land = document.getElementById("bisherigesLand");
	
	if (land.options[0].selected && land.disabled==false)
	{
		changeClassName(land);
		error_message = true;
	}
	else
	{
		changeBackClassName(land);
	}
}

function austrittsdatumValidationDate() {
	var austrittsdatum = document.getElementById("austrittsdatum");
	if (! isDate(austrittsdatum.value) && austrittsdatum.disabled==false)
	{
		changeClassName(austrittsdatum);
		error_message_format_date = true;
	}
	else
	{
		changeBackClassName(austrittsdatum);
	}
}

function bisheriger_arbeitgeber() {
	var bisheriger_arbeitgeber = document.getElementById("bisheriger_arbeitgeber");
	if (bisheriger_arbeitgeber.value =="" && bisheriger_arbeitgeber.disabled==false)
	{
		changeClassName(bisheriger_arbeitgeber);
		error_message_format_date = true;
	}
	else
	{
		changeBackClassName(bisheriger_arbeitgeber);
	}
}

function companyLandValidation() {
	var land = document.getElementById("comp_land");
	if (land.options[0].selected)
	{
		changeClassName(land);
		error_message = true;
	}
	else
	{
		changeBackClassName(land);
	}
}

function companyPlzValidation() {
	var company_town 	= document.getElementById("company_town");
	var company_zipcode = document.getElementById("company_zipcode");

	if (! regexPlz.test(company_zipcode.value))
	{
		changeClassName(company_town);
		error_message_plz = true;
	}
	else if (company_town.value != "" && company_zipcode.value !=""){
		changeBackClassName(company_town);
	}
}

function plzValidation() {
	var town = document.getElementById("town");
	var zipcode = document.getElementById("zipcode");
	if (!regexPlz.test(zipcode.value) )
	{
		changeClassName(zipcode);
		error_message_plz = true;
	}
	else if(town.value == "" && zipcode.value ==""){
		changeBackClassName(zipcode);
	}
}

function plzValidationExists() {
	var town = document.getElementById("town");
	var zipcode = document.getElementById("zipcode");
	if(town.value == "" && zipcode.value ==""){
		changeClassName(zipcode);
		changeClassName(town);
		error_message_plz = true;
	}
	else if(town.value != "" && zipcode.value !=""){
		changeBackClassName(zipcode);
		changeBackClassName(town);
	}
}

function landValidationExists() {
	var land = document.getElementById("land");
	if(land.value == "" ){
		changeClassName(land);
		error_message = true;
	}
	else if(land.value != ""){
		changeBackClassName(land);
	}
}

function streetValidationExists() {
	var street = document.getElementById("street");
	if(street.value == "" ){
		changeClassName(street);
		error_message = true;
	}
	else if(street.value != ""){
		changeBackClassName(street);
	}
}

function geburtsjahrValidation() {
	var geburtsjahr = document.getElementById("geburtsjahr");
	if (!regexYear.test(geburtsjahr.value) || geburtsjahr.value == "")
	{
		changeClassName(geburtsjahr);
		error_message = true;
	}
	else{
		changeBackClassName(geburtsjahr);
	}
}

function geburtsjahrValidationExists() {
	var geburtsjahr = document.getElementById("geburtsjahr");
	if(geburtsjahr.value == "" ){
		changeClassName(geburtsjahr);
		error_message = true;
	}
	else if(geburtsjahr.value != ""){
		changeBackClassName(geburtsjahr);
	}
}

function resetPLSLandStreet() {
	var street = document.getElementById("street");
	var town = document.getElementById("town");
	var zipcode = document.getElementById("zipcode");
	var land = document.getElementById("land");
	
	changeBackClassName(street);
	changeBackClassName(town);
	changeBackClassName(zipcode);
	changeBackClassName(land);
}

function allValidationFields() {	
	error_message 				= false;
	error_message_plz 			= false;
	error_message_not_numeric 	= false;
	error_message_mail 			= false;
	error_message_format_date 	= false;

	spamValidation();
	geburtsjahrValidationExists();
	geburtsjahrValidation();
	firstnameValidation();
	surnameValidation();
	company_emailValidation();
	emailValidation();
	companytelephonenumberValidation();
	companyStreetValidation()
	companyTownValidation();
	abteilung();
	bankValidation();
	townValidation();
	plzValidation();
	companyLandValidation();
	companyPlzValidation();
	landValidation();
	bisheriger_arbeitgeber();
	bisherigesLandValidation();
	austrittsdatumValidationDate();
	
	var check = document.getElementById("einzugsermaechtigung");
	if(!check.checked)
	{
		plzValidationExists();
		landValidationExists();
		streetValidationExists();
	}else{
		resetPLSLandStreet();
	}

	var check = document.getElementById("save_personal_data");
	if(!check.checked)
	{
		changeClassName(check);
		error_message = true;
	}else{
		changeBackClassName(check);
	}
	var mesage = "";
	
	if(error_message){
		mesage = messageError[0]+"\n";
	}
	if(error_message_plz){
		mesage = messageError[1]+"\n";
	}
	if(error_message_not_numeric){
		mesage = messageError[2]+"\n";
	}
	if(error_message_mail){
		mesage = messageError[3]+"\n";
	} 
	if(error_message_format_date){
		mesage = messageError[4]+"\n";
	}
	if (mesage == ""){
		document.form_mitgliedschaftsantrag.submit();
	}else{
		alert(mesage);
	}
}

function daysInFebruary (year){
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var dtCh= ".";
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strMonth=dtStr.substring(3,pos2);
	var strDay=dtStr.substring(0,pos1);
	var strYear=dtStr.substring(pos2+1);

	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	if (strMonth.length<1 || month<1 || month>12){
		return false;
	}
	
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false;
	}
	
	return true;
}
