/*
* $Id: cs_validation_config.js,v 1.9 2010/10/29 13:27:15 bulik Exp $ 
*/
$(document).ready(function(){ 		  
   
  jQuery.validator.addMethod("compare", function(value, element, param){
	   	return jQuery(param[0]).val() == jQuery(param[1]).val();
  }, "Email-Adressen sind nicht identisch. Bitte pr&uuml;fen Sie Ihre Eingabe."); 
  
  function checkAge(value, param){
  var isChild = $('#isChild' + param).get(0).value;
  //console.log('#isChild' + param + " = " + isChild);
    if(value < 18)
      return false;
    else return true;
  }
  
   jQuery.validator.addMethod("checkAdult", function(value, element, param){
    var object_settings = this.settings;
    object_settings.messages[element.name] = "Bitte &uuml;berpr&uuml;fen Sie das Alter des " + eval(param + 1) + ". Teilnehmers. Alle erwachsenen Teilnehmer m&uuml;ssen &uuml;ber 18 Jahre alt sein.";
    return this.optional(element) || checkAge(value, param);
  }, "");
  
  function checkSelectedIndex(element, num){
  //alert(('#isChild' + num));
    if(element.selectedIndex == 0 && ($('#isChild' + num).get(0).value == "true"))
      return false;
    else
      return true;
  }
  jQuery.validator.addMethod("checkIndexOfBirthdateSelects", function(value, element, params){
  //console.log(element.id + " - " + element.selectedIndex + " selIndex " );
  var object_settings = this.settings;
  if(params[1] == "day")
    object_settings.messages[element.name] = "Bitte geben Sie den Geburtstag f&uuml;r den " + eval(params[0] + 1) + ". Teilnehmer an.";
  else
    object_settings.messages[element.name] = "Bitte geben Sie den Geburtsmonat und Jahr f&uuml;r den " + eval(params[0] + 1) + ". Teilnehmer an.";
       return this.optional(element) || checkSelectedIndex(element, params[0]);
  }, "");
  
  jQuery.validator.addMethod("isInsuranceFilled", function(value, element, params){
	//console.log(element.id + " - " + value + " - " + params);
	if (! $("#radioNoIns").is(":checked")) {
		if (params[0].is(":checked")) {
			if (params[1].attr("value") != "") {
				return true;
			}
		}
		else {
			return true;
		}
	}
	else {
		return true;
	}
	return false;
  }, "");

  jQuery.validator.addMethod("isInsuranceSelected", function(value, element, params){
	//console.log(element.id + " - " + value + " - " + params);
	if (! $("#radioNoIns").is(":checked")) {
		if (params[0].is(":checked") || params[1].is(":checked")) {
			return true;
		}
	}
	else {
		return true;
	}
	return false;
  }, "");

  jQuery.validator.addMethod("isInsuranceBankCodeSelected", function(value, element, params){
	//console.log(element.id + " - " + value + " - " + params);
	if (! $("#radioNoIns").is(":checked")) {
		if (params[0].is(":checked")) {
			if (params[1].attr("value").length == 8 && jQuery.validator.methods.digits.call(this, value, element)) {
				return true;
			}
		}
		else {
			return true;
		}
	}
	else {
		return true;
	}
	return false;
  }, "");

  jQuery.validator.addMethod("isInsuranceDigits", function(value, element, params){
	//console.log(element.id + " - " + value + " - " + params);
	if (! $("#radioNoIns").is(":checked")) {
		if (params[0].is(":checked")) {
			if (params[1].attr("value").length > 0 && jQuery.validator.methods.digits.call(this, value, element)) {
				return true;
			}
		}
		else {
			return true;
		}
	}
	else {
		return true;
	}
	return false;
  }, "");

  jQuery.validator.addMethod("isInsuranceCVC", function(value, element, params){
	//console.log(element.id + " - " + value + " - " + params);
	if (! $("#radioNoIns").is(":checked")) {
		if (params[0].is(":checked")) {
			if (params[1].attr("value").length == 3 && jQuery.validator.methods.digits.call(this, value, element)) {
				return true;
			}
		}
		else {
			return true;
		}
	}
	else {
		return true;
	}
	return false;
  }, "");

  jQuery.validator.addMethod("isInsuranceCreditCardNumber", function(value, element, params){
	//console.log(element.id + " - " + value + " - " + params);
	if (! $("#radioNoIns").is(":checked")) {
		if (params[0].is(":checked")) {
			if (params[1].attr("value").length > 0 && jQuery.validator.methods.creditcard.call(this, value, element)) {
				return true;
			}
		}
		else {
			return true;
		}
	}
	else {
		return true;
	}
	return false;
  }, "");



if($("#persData").get(0)){      
      
      $("#persData").validate({
		  
		    
/* show yellow container above the form */		  
          invalidHandler: function(form, validator) {
            var errors = validator.numberOfInvalids();
            if (errors) {
                $("div.errorContainer").show();
                $("div.errorBottom").show();
              } else {
                $("div.errorContainer").hide();
                $("div.errorContainer div.errorBottom").hide();
              }
          },
// errorLabelContainer: contains list of all errors          
          errorLabelContainer: "div.errorContainer div.error ",
// errorContainer: meant to be a container for additional error messages,
// here used to toggle visibility of the bottom border of the yellow container          
          errorContainer: "div.errorBottom",
// errorElement: elements which display list of error messages in the yellow container          
          errorElement: "p",
// errorClass: here used to override default errorClass, since all the messages must be in 
// the yellow container. Unfortunately the css class "error" by default has a background-image 
// and therefore can't be used here.            
          errorClass: "dummy",
    
          highlight: function(element, errorClass) {
// hightlight headlines of the different parts of the form   
            
        		if($(element).parents().hasClass('booker')){
        			$('#bookerHeadline').addClass('error');
        			$('#bookerHeadline').html('Bitte &uuml;berpr&uuml;fen Sie Ihre Eintragung.');
        		}
            if($(element).parents().hasClass('otherTravelers')){
        			 $('#otherTravelersHeadline').addClass('error');
        			  $('#otherTravelersHeadline').html('Bitte &uuml;berpr&uuml;fen Sie Ihre Eintragung.');
        			  $('#RightCol').css('overflow','visible');
        			  $('#MainContent').css('width', '888px');
        			  $('.submit').css('width', '698px');
        			}
        		if($(element).parents().hasClass('insurance')){
        			 $('#insuranceHeadline').addClass('error');
        			 $('#insuranceHeadline').html('Bitte &uuml;berpr&uuml;fen Sie Ihre Eintragung.');
        			 $('#insuranceQuery').addClass('error');
        		}
            if($(element).parents().hasClass('payment'))
        			 $('#paymentHeadline').addClass('error');
               $('#paymentHeadline').html('Bitte &uuml;berpr&uuml;fen Sie Ihre Eintragung.');
        		if($(element).parents().hasClass('terms')){
        			$('#termsAndConditionsHeadline').addClass('error');
        			$('#termsAndConditionsHeadline').html('Bitte &uuml;berpr&uuml;fen Sie Ihre Eintragung.');
        		}
        			 
// highlight errors next to the matching fields.        		
             $(element).addClass("error");
             $(element).parent("td").prev("th").addClass("error");
             $(element).parent("td").addClass("error");
             $(element).parent("div").addClass("error");
             
             if($(element).next().is('span'))
              $(element).next().show();
             
          },
// unhighlight: see hightlight()          
          unhighlight: function(element, errorClass) {
          
            if($(element).parents().hasClass('booker')){
        			$('#bookerHeadline').removeClass('error');
        			$('#bookerHeadline').html('Pers&ouml;nliche Daten des Reiseanmelders eintragen:');
        		}
            if($(element).parents().hasClass('otherTravelers')){
            	 $('#otherTravelersHeadline').removeClass('error');
            	 $('#otherTravelersHeadline').html('Angaben zu den Reisenden:');
            }
        		if($(element).parents().hasClass('insurance')){
        			 $('#insuranceHeadline').removeClass('error');
        			 $('#insuranceHeadline').html('Reiseversicherung:');
        			 $('#insuranceQuery').removeClass('error');
        		}	 
            if($(element).parents().hasClass('payment')){
        			 $('#paymentHeadline').removeClass('error');
        			 $('#paymentHeadline').html('Ihr Zahlungswunsch:');
        		}
        		if($(element).parents().hasClass('terms')){
        			$('#termsAndConditionsHeadline').removeClass('error');
        			$('#termsAndConditionsHeadline').html('Allgemeine Gesch&auml;ftsbedingungen:');
        		}
        		
        	  $(element).parent("td").prev("th").removeClass("error");
             $(element).removeClass("error");
             $(element).parent("td").removeClass("error");
             $(element).parent("div").removeClass("error");
             
            if($(element).next().is('span')){
             $(element).next().hide();
            }
          },
    
          rules: {
            firstname: {
                  required: true,
                  minlength: 2
            },
            surname: {
              required: true,
              minlength: 2
            },
            street: {
               required: true,
               minlength: 2
            },
            houseNumber: {
               required: true
            },
            email: {
              required:true,
              email: true
            },
            emailRepeat: {
              required:true,
              email: true,
              compare: ["#BookerEMail","#RepeatBookerEMail"]
            },
            zipCode: {
              required: true
            },
            city: {
              required: true
            },
            dayPhone: {
              required: true
            },
            "participant[0].firstname": {
              required: true
            },
            "participant[0].surname": {
              required: true
            },
            "participant[0].age": {
              required:true,
              digits:true,
              checkAdult:0
            },
            "participant[0].birthDay": {
              checkIndexOfBirthdateSelects: [0, "day"]
            },
            "participant[0].birthMonthYear": {
              checkIndexOfBirthdateSelects:[0, "year"]
            },
            "participant[1].firstname": {
              required: true
            },
            "participant[1].surname": {
              required: true
            },
            "participant[1].age": {
              required:true,
              digits:true,
              checkAdult:1
            },
            "participant[1].birthDay": {
              checkIndexOfBirthdateSelects:[1, "day"]
            },
            "participant[1].birthMonthYear": {
              checkIndexOfBirthdateSelects:[1, "year"]
            },
            "participant[2].firstname": {
              required: true
            },
            "participant[2].surname": {
              required: true
            },
            "participant[2].age": {
              required:true,
              digits:true,
              checkAdult:2
            },
            "participant[2].birthDay": {
              checkIndexOfBirthdateSelects:[2, "day"]
            },
            "participant[2].birthMonthYear": {
              checkIndexOfBirthdateSelects:[2, "year"]
            },
            "participant[3].firstname": {
              required: true
            },
            "participant[3].surname": {
              required: true
            },
            "participant[3].age": {
              required:true,
              digits:true,
              checkAdult:3
            },
            "participant[3].birthDay": {
              checkIndexOfBirthdateSelects:[3, "day"]
            },
            "participant[3].birthMonthYear": {
              checkIndexOfBirthdateSelects:[3, "year"]
            },
            "participant[4].firstname": {
              required: true
            },
            "participant[4].surname": {
              required: true
            },
            "participant[4].age": {
              required:true,
              digits:true,
              checkAdult:4
            },
            "participant[4].birthDay": {
              checkIndexOfBirthdateSelects:[4, "day"]
            },
            "participant[4].birthMonthYear": {
              checkIndexOfBirthdateSelects:[4, "year"]
            },
            "participant[5].firstname": {
              required: true
            },
            "participant[5].surname": {
              required: true
            },
            "participant[5].age": {
              required:true,
              digits:true,
              checkAdult:5
            },
            "participant[5].birthDay": {
              checkIndexOfBirthdateSelects:[5, "day"]
            },
            "participant[5].birthMonthYear": {
              checkIndexOfBirthdateSelects:[5, "year"]
            },
             "driver.dobDay": {
             digits:true
             },
             "driver.dobMonth": {
             digits:true
             },
             "driver.dobYear": {
             digits:true
             },
            selectedInsurance: {
              required: true
            },
            paymentType: {
              required: true
            },
            accountOwnerPrename: {
              required: "#Debit:checked"
            },
            accountOwnerName: {
              required: "#Debit:checked"
            },
            bank: {
              required: "#Debit:checked"
            },
            bankCode: {
              required: "#Debit:checked",
              minlength: 8,
              maxlength: 8,
              digits: true
            },
            accountNumber: {
              required: "#Debit:checked",
              digits: true
            },
            creditCardOwnerPrename: {
              required: "#CreditCard:checked"
            },
            creditCardOwnerName: {
              required: "#CreditCard:checked"
            },
            creditCardNumber: {
              required: "#CreditCard:checked",
              creditcard: true
            },
            ccValidMonth: {
            required: "#CreditCard:checked"
            },
            ccValidYear: {
            required: "#CreditCard:checked"
            },
            creditCardCVC: {
              required: "#CreditCard:checked",
              digits: true
            },
            insurancePaymentType: {
              isInsuranceSelected:[$("#InsuranceDebit"), $("#InsuranceCreditCard")]
            },
            insuranceAccountOwnerPrename: {
			  isInsuranceFilled:[$("#InsuranceDebit"), $("#InsuranceAccountOwnerPrename")]
            },
            insuranceAccountOwnerName: {
			  isInsuranceFilled:[$("#InsuranceDebit"), $("#InsuranceAccountOwner")]
            },
            insuranceBank: {
			  isInsuranceFilled:[$("#InsuranceDebit"), $("#InsuranceBank")]
            },
            insuranceBankCode: {
			  isInsuranceBankCodeSelected:[$("#InsuranceDebit"), $("#InsuranceBankCode")]
            },
            insuranceAccountNumber: {
			  isInsuranceDigits:[$("#InsuranceDebit"), $("#InsuranceAccountNumber")]
            },
            insuranceCreditCardOwnerPrename: {
			  isInsuranceFilled:[$("#InsuranceCreditCard"), $("#InsuranceCardOwnerPrename")]
            },
            insuranceCreditCardOwnerName: {
			  isInsuranceFilled:[$("#InsuranceCreditCard"), $("#InsuranceCardOwner")]
            },
            insuranceCreditCardType: {
			  isInsuranceFilled:[$("#InsuranceCreditCard"), $("#InsuranceCard")]
            },
            insuranceCreditCardNumber: {
			  isInsuranceCreditCardNumber:[$("#InsuranceCreditCard"), $("#InsuranceCardNumber")]
            },
            insuranceCcValidMonth: {
			  isInsuranceFilled:[$("#InsuranceCreditCard"), $("#InsuranceValidMonth")]
            },
            insuranceCcValidYear: {
			  isInsuranceFilled:[$("#InsuranceCreditCard"), $("#InsuranceValidYear")]
            },
            insuranceCreditCardCVC: {
			  isInsuranceCVC:[$("#InsuranceCreditCard"), $("#CVV")]
            },
            gtcOk: {
              required:true
            },
            ptcOk: {
              required:true
            },
            entryRequirementsOk: {
              required:true
            },
            dataCheckOk: {
              required:true
            }
        },
        messages: {
          firstname: "Bitte geben Sie Ihren Vornamen an.",
          surname: "Bitte geben Sie Ihren Nachnamen an.",
          street: "Bitte geben Sie einen Stra&szlig;ennamen an.",
          houseNumber: "Bitte geben Sie Ihre Hausnummer an",
          zipCode: "Bitte geben Sie Ihre Postleitzahl an.",
          city: "Bitte geben Sie einen Ort an.",
          dayPhone: "Bitte geben Sie eine Telefonnummer an, unter der wir Sie tags&uuml;ber erreichen k&ouml;nnen (Mobil oder Festnetz).",
          "participant[0].firstname": "Bitte geben Sie den Vornamen des 1. Reisenden an.",
          "participant[0].surname": "Bitte geben Sie den Nachnamen des 1. Reisenden an.",
          "participant[0].age": {
            required:"Bitte geben Sie das Alter des 1. Reisenden zu Reisebeginn an.",
            digits: "Bitte geben Sie das Alter des 1. Reisenden nur in Zahlen an."
          },
          "participant[1].firstname": "Bitte geben Sie den Vornamen des 2. Reisenden an.",
          "participant[1].surname": "Bitte geben Sie den Nachnamen des 2. Reisenden an.",
          "participant[1].age": {
            required:"Bitte geben Sie das Alter des 2. Reisenden zu Reisebeginn an.",
            digits: "Bitte geben Sie das Alter des 2. Reisenden nur in Zahlen an."
          },
          "participant[2].firstname": "Bitte geben Sie den Vornamen des 3. Reisenden an.",
          "participant[2].surname": "Bitte geben Sie den Nachnamen des 3. Reisenden an.",
          "participant[2].age": {
            required:"Bitte geben Sie das Alter des 3. Reisenden zu Reisebeginn an.",
            digits: "Bitte geben Sie das Alter des 3. Reisenden nur in Zahlen an."
          },
          "participant[3].firstname": "Bitte geben Sie den Vornamen des 4. Reisenden an.",
          "participant[3].surname": "Bitte geben Sie den Nachnamen des 4. Reisenden an.",
          "participant[3].age": {
            required:"Bitte geben Sie das Alter des 4. Reisenden zu Reisebeginn an.",
            digits: "Bitte geben Sie das Alter des 4. Reisenden nur in Zahlen an."
          },
          "participant[4].firstname": "Bitte geben Sie den Vornamen des 5. Reisenden an.",
          "participant[4].surname": "Bitte geben Sie den Nachnamen des 5. Reisenden an.",
          "participant[4].age": {
            required:"Bitte geben Sie das Alter des 5. Reisenden zu Reisebeginn an.",
            digits: "Bitte geben Sie das Alter des 5. Reisenden nur in Zahlen an."
          },
          "participant[5].firstname": "Bitte geben Sie den Vornamen des 6. Reisenden an.",
          "participant[5].surname": "Bitte geben Sie den Nachnamen des 6. Reisenden an.",
          "participant[5].age": {
            required:"Bitte geben Sie das Alter des 6. Reisenden zu Reisebeginn an.",
            digits: "Bitte geben Sie das Alter des 6. Reisenden nur in Zahlen an."
          },
          "driver.dobDay": "Bitte f&uuml;llen Sie den Geburtstag des Mietwagenfahrers aus.",
          "driver.dobMonth": "Bitte f&uuml;llen Sie den Geburtsmonat des Mietwagenfahrers aus.",
          "driver.dobYear": "Bitte f&uuml;llen Sie das Geburtsjahr des Mietwagenfahrers aus.",
          
          selectedInsurance: "Bitte geben Sie an, ob Sie eine Reiseversicherung abschlie&szlig;en m&ouml;chten.",
              
          email: {
            required: "Wir ben&ouml;tigen Ihre e-mail Adresse.",
            email: "Ung&uuml;ltige e-mail Adresse. Eine e-mail Adresse muss die folgende Form haben: 'meinName@meineAdresse.com'."
          },
          emailRepeat: {
            required: "Bitte wiederholen Sie Ihre e-mail Adresse.",
            email: "Die Wiederholung der e-mail-Adresse hat eine ung&uuml;ltige Form. Eine e-mail Adresse muss die folgende Form haben: 'meinName@meineAdresse.com'."
          },
            insurancePaymentType: "Bitte w&auml;hlen Sie eine Zahlungsart f&uuml;r die Versicherung aus.",
            
            insuranceAccountOwnerPrename: "Bitte geben Sie den Vornamen des Kontoinhabers an.",
            insuranceAccountOwnerName: "Bitte geben Sie den Nachnamen des Kontoinhabers an.",
            insuranceBank: "Bitte geben Sie den Namen der Bank an.",
            insuranceBankCode: "Bitte &uuml;berpr&uuml;fen Sie die Eingabe ihrer Bankleitzahl. Diese muss 8-stellig sein!",
            insuranceAccountNumber: "Bitte geben Sie die Kontonummer an.",
            insuranceCreditCardOwnerPrename: "Bitte geben Sie den Vornamen des Kreditkartenbesitzers an.",
            insuranceCreditCardOwnerName: "Bitte geben Sie den Nachnamen des Kreditkartenbesitzers an.",
            insuranceCreditCardNumber: "Bitte geben Sie eine g&uuml;ltige Kreditkartennummer an.",
            insuranceCreditCardType: "Bitte geben Sie eine g&uuml;ltige Kreditkarte an.",
            insuranceCcValidMonth: "Bitte geben Sie an bis zu welchem Monat Ihre Kreditkarte g&uuml;ltig ist.",
            insuranceCcValidYear: "Bitte geben Sie an bis zu welchem Jahr Ihre Kreditkarte g&uuml;ltig ist.",
            insuranceCreditCardCVC: "Bitte &uuml;berpr&uuml;fen Sie den CVC-Code.",
              paymentType: "Bitte w&auml;hlen Sie eine Zahlungsart aus.",
            
            accountOwnerPrename: "Bitte geben Sie den Vornamen des Kontoinhabers an.",
            accountOwnerName: "Bitte geben Sie den Nachnamen des Kontoinhabers an.",
            bank: "Bitte geben Sie den Namen der Bank an.",
            bankCode: {
              required: "Bitte geben Sie die Bankleitzahl an.",
              minlength: "Bitte &uuml;berpr&uuml;fen Sie die Eingabe ihrer Bankleitzahl. Diese muss 8-stellig sein!",
              maxlength: "Bitte &uuml;berpr&uuml;fen Sie die Eingabe ihrer Bankleitzahl. Diese muss 8-stellig sein!",
              digits: "Bitte &uuml;berpr&uuml;fen Sie die Bankleitzahl."
            },
            accountNumber: {
              required: "Bitte geben Sie die Kontonummer an.",
              digits: "Bitte &uuml;berpr&uuml;fen Sie die Kontonummer."
            },
            creditCardOwnerPrename: "Bitte geben Sie den Vornamen des Kreditkartenbesitzers an.",
            creditCardOwnerName: "Bitte geben Sie den Nachnamen des Kreditkartenbesitzers an.",
            creditCardNumber: "Bitte geben Sie eine g&uuml;ltige Kreditkartennummer an.",
            ccValidMonth: "Bitte geben Sie an bis zu welchem Monat Ihre Kreditkarte g&uuml;ltig ist.",
            ccValidYear: "Bitte geben Sie an bis zu welchem Jahr Ihre Kreditkarte g&uuml;ltig ist.",
            creditCardCVC: {
              required: "Bitte geben Sie den CVC-Code an.",
              digits: "Bitte &uuml;berpr&uuml;fen Sie den CVC-Code."
            },
            gtcOk: "Bitte best&auml;tigen Sie die allgemeinen Gesch&auml;ftsbedingungen des Reiseveranstalters.",
            ptcOk: "Bitte best&auml;tigen Sie die allgemeinen Gesch&auml;ftsbedingungen des Anbieters.",
            entryRequirementsOk: "Bitte best&auml;tigen Sie die Einreise- und Impfbestimmungen sowie die Datenschutzbestimmungen.",
            dataCheckOk: "Bitte best&auml;tigen Sie, dass Sie Ihre eingegebenen Daten &uuml;berpr&uuml;ft haben."
      
        }

      });
   }
});

