// prefixes which are allowed to be registered through the web form
var moretv_valid_numbers = [ 500, 502, 600, 601 ].join(',');

// prefixes only available through customer care
var moretv_customer_care_only = [ 300, 400, 401, 410, 430, 431, 432 ].join(',');

// discontinued hardware
var moretv_discontinued_numbers = [ 420 ].join(',');

jQuery.validator.addMethod('noinvalidnumber', function(value, element) {
    if (this.optional(element))
        return true;
    if (!(/^\s*(\d)\s*(\d)\s*(\d)\s*(\d\s*){9}$/.test(value)))
        return false;
    var prefix = RegExp.$1 + RegExp.$2 + RegExp.$3;

    var searchstring = [
        moretv_valid_numbers,
        moretv_customer_care_only,
        moretv_discontinued_numbers
    ].join(',');

    return !!((new RegExp(prefix)).test(searchstring));
});

jQuery.validator.addMethod('nocustomercareonly', function(value, element) {
    if (this.optional(element))
        return true;
    if (!(/^\s*(\d)\s*(\d)\s*(\d)\s*(\d\s*){9}$/.test(value)))
        return true; // wird von invalidnumber abgefangen!
    var prefix = RegExp.$1 + RegExp.$2 + RegExp.$3;

    var searchstring = [
        moretv_customer_care_only
    ].join(',');

    return !((new RegExp(prefix)).test(searchstring));
});

jQuery.validator.addMethod('nodiscontinued', function(value, element) {
    if (this.optional(element))
        return true;
    if (!(/^\s*(\d)\s*(\d)\s*(\d)\s*(\d\s*){9}$/.test(value)))
        return true; // wird von invalidnumber abgefangen!
    var prefix = RegExp.$1 + RegExp.$2 + RegExp.$3;

    var searchstring = [
        moretv_discontinued_numbers
    ].join(',');

    return !((new RegExp(prefix)).test(searchstring));
});



// #################
// Registierung
// #################

$(function() {
    // validate signup form on keyup and submit 

	/*
	if( !$("#moreTVNumber").val() ) {
		$("#moreTVNumber").val('Ihre 12stellige moreTV-Nummer');								
	}
	if( !$("#promotionCode").val() ) {
		$("#promotionCode").val('Ihr 10stelliger moreTV-Gutschein-Code');
	}
	*/


	var validator = $("#signupform").validate({ 

        rules: { 
            service: "required", 
	moreTVNumber: {
                required: true, 
//                minlength: 12,
//                maxlength: 12
		noinvalidnumber: true,
		nocustomercareonly: true,
		nodiscontinued: true
            }, 
            moreTVNumberCheck: {
				required: true,
				min: 1
			},
            usernameCheck: {
				required: true,
				min: 1
			},
			promotionCodeXX: { 
                required: true, 
                minlength: 10,
                maxlength: 10
            }, 
            agb: "required", 
            lastName: "required",
            firstName: "required", 
			street: "required", 
            number: "required", 
            postalCode: "required", 
            city: "required", 
            country: "required",
			
            dialingCode: "required", 
            phone: "required", 
			username: { 
                required: true, 
                minlength: 2
                //remote: "users.php" 
            }, 
            email: { 
                required: true, 
                email: true
                //remote: "emails.php" 
            }, 
			password: { 
                required: true, 
                minlength: 4,
                maxlength: 16
            }, 
			password2: { 
                required: true, 
                minlength: 4,
                maxlength: 16,
				equalTo: "#password"
            }, 
            agb2: "required", 
            accountNumber: "required", 
            routingNumber: "required", 
            bankName: "required"
        }, 
        messages: { 
		service: " ", 
		moreTVNumber: {
			required: "",
			noinvalidnumber: "Bitte &uuml;berpr&uuml;fen sie Ihre (12-stellige) moreTV-Nummer!",
			nocustomercareonly: "Die Anmeldung Ihrer Receiver-Modellreihe ist leider nur telefonisch m&ouml;glich. Bitte kontaktieren Sie unsere Service-Hotline!",
			nodiscontinued: "Die moreTV Services stehen f&uuml;r Ihren Ger&auml;tetypen leider nicht mehr zur Verf&uuml;gung."
		}, 
			moreTVNumberCheck: " ",
			usernameCheck: " ",
            promotionCode: " ", 
			agb: "Bitte ausw&auml;hlen", 
            lastName: " ", 
            firstName: " ",
            street: " ", 
            number: " ",
            postalCode: " ",
            city: " ",
            country: " ",
            dialingCode: " ",
            phone: " ",
            username: " ",
            email: " ",
            password: " ",
            password2: " ",
            agb2: "Bitte ausw&auml;hlen",
            accountNumber: " ",
            routingNumber: " ",
            bankName: " "
        }, 
        // the errorPlacement has to take the table layout into account 
		errorPlacement: function(error, element) { 
			//error.appendTo( element.parent().next() );
			
			
			if ( $(element).attr('type') == "checkbox" ) {
				error.appendTo( element.parent().next() );
			}
			if ( $(element).attr('id') == 'moreTVNumber') {
				//window.alert(error.text());
				error.appendTo( element.parent().next() );
			}
			/*
			if ( $(element).attr('name') == "password" ) {
				//error.appendTo( element.parent().next() );
			}
			if ( ($(element).attr('id') == "moreTVNumber") ) {
				moreTVNumberText	= 'Ihre 12stellige moreTV-Nummer';
				if( $(element).val() == moreTVNumberText ) {
					//$("input[name='moreTVNumber']").val(' ');
					$("input[name='moreTVNumber']").addClass('error');
					//alert(1)
				}
			}
			*/


			if( $(element).attr('class').match(/error/gi) ) {
				$(element).parent().find('label').addClass('errorLabel'); 
			}
			else {
				$(element).parent().find('label').removeClass('errorLabel'); 
			}

		}, 	
        // specifying a submitHandler prevents the default submit, good for the demo 
        submitHandler: function(form) { 
			form.submit();
		}, 
        // set this class to error-labels to indicate valid fields 
        success: function(label) { 
            // set   as text for IE 
            label.html(" ").addClass("checked"); 
        } 
    });

});



// #################
// Kontakt Formulare
// #################
$(function() {
	
    var validatorContact = $("#contactForm").validate({ 
		 rules: {
		 	email: "required",
		 	name: "required",
		 	vorname: "required",
		 	betreff: "required",
		 	nachricht: "required"
		 },
		 
		 messages: {
			email: " ",
			name: " ",
			vorname: " ",
			betreff: " ",
			nachricht: " "
		
		},
        // the errorPlacement has to take the table layout into account 
		errorPlacement: function(error, element) { 
			//error.appendTo( element.parent().next() );
			if( $(element).attr('class').match(/error/gi) ) {
				$(element).parent().find('label').addClass('errorLabel'); 
			}
			else {
				$(element).parent().find('label').removeClass('errorLabel'); 
			}

		}, 	
	
		submitHandler: function(form) {
				$(form).ajaxSubmit({
					target: "#theForm"
				});
		},
		
		
		success: function(label) { 
            $(label).removeClass('errorLabel'); 
        }


	 });

});




// #################
// Bestellung
// #################
$(function() {
    // validate signup form on keyup and submit 

	var validator = $("#bestell_mx44").validate({ 

        rules: { 
            lastName: "required", 
            firstName: "required", 
			street: "required", 
            number: "required", 
            postalCode: "required", 
            city: "required", 
            country: "required",
            dialingCode: "required", 
            phone: "required", 
            email: { 
                required: true, 
                email: true
                //remote: "emails.php" 
            }
        }, 
        messages: { 
            firstName: " ", 
            lastName: " ", 
            street: " ", 
            number: " ",
            postalCode: " ",
            city: " ",
            country: " ",
            dialingCode: " ",
            phone: " ",
            email: " "
		}, 
        // the errorPlacement has to take the table layout into account 
		errorPlacement: function(error, element) { 
			//error.appendTo( element.parent().next() );
			if( $(element).attr('class').match(/error/gi) ) {
				$(element).parent().find('label').addClass('errorLabel'); 
			}
			else {
				$(element).parent().find('label').removeClass('errorLabel'); 
			}
		}, 	
        // specifying a submitHandler prevents the default submit, good for the demo 
        submitHandler: function(form) {
				$(form).ajaxSubmit({
					target: "#theForm"
				});
		},
        // set this class to error-labels to indicate valid fields 
        success: function(label) { 
            // set   as text for IE 
            label.html(" ").addClass("checked"); 
        } 
    });

});

// #################
// Bestellung
// #################
$(function() {
    // validate signup form on keyup and submit 

	var validator = $("#bestell_dchd95").validate({ 

        rules: { 
            lastName: "required", 
            firstName: "required", 
			street: "required", 
            number: "required", 
            postalCode: "required", 
            city: "required", 
            country: "required",
            dialingCode: "required", 
            phone: "required", 
            email: { 
                required: true, 
                email: true
                //remote: "emails.php" 
            }
        }, 
        messages: { 
            firstName: " ", 
            lastName: " ", 
            street: " ", 
            number: " ",
            postalCode: " ",
            city: " ",
            country: " ",
            dialingCode: " ",
            phone: " ",
            email: " "
		}, 
        // the errorPlacement has to take the table layout into account 
		errorPlacement: function(error, element) { 
			//error.appendTo( element.parent().next() );
			if( $(element).attr('class').match(/error/gi) ) {
				$(element).parent().find('label').addClass('errorLabel'); 
			}
			else {
				$(element).parent().find('label').removeClass('errorLabel'); 
			}
		}, 	
        // specifying a submitHandler prevents the default submit, good for the demo 
        submitHandler: function(form) {
				$(form).ajaxSubmit({
					target: "#theForm"
				});
		},
        // set this class to error-labels to indicate valid fields 
        success: function(label) { 
            // set   as text for IE 
            label.html(" ").addClass("checked"); 
        } 
    });

});





// #################
// Sonderaktion
// #################
$(function() {
    // validate signup form on keyup and submit 

	var validator = $("#sonderaktionForm").validate({ 

        rules: { 
            aktionspaket: "required", 
            lastName: "required", 
            firstName: "required", 
			street: "required", 
            number: "required", 
            postalCode: "required", 
            city: "required", 
            country: "required",
            dialingCode: "required", 
            phone: "required", 
            email: { 
                required: true, 
                email: true
                //remote: "emails.php" 
            }
        }, 
        messages: { 
            aktionspaket: " ", 
            firstName: " ", 
            lastName: " ", 
            street: " ", 
            number: " ",
            postalCode: " ",
            city: " ",
            country: " ",
            dialingCode: " ",
            phone: " ",
            email: " "
		}, 
        // the errorPlacement has to take the table layout into account 
		errorPlacement: function(error, element) { 
			//error.appendTo( element.parent().next() );
			if( $(element).attr('class').match(/error/gi) ) {
				$(element).parent().find('label').addClass('errorLabel'); 
			}
			else {
				$(element).parent().find('label').removeClass('errorLabel'); 
			}
		}, 	
        // specifying a submitHandler prevents the default submit, good for the demo 
        submitHandler: function(form) {
				$(form).ajaxSubmit({
					target: "#theForm"
				});
		},
        // set this class to error-labels to indicate valid fields 
        success: function(label) { 
            // set   as text for IE 
            label.html(" ").addClass("checked"); 
        } 
    });

});

