// 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}(\s*\d\s*\d\s*)?$/.test(value)))
        return false;

	if ( !RegExp.$4.length )
	{

		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));
	}

	return true;
});

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: 14,
				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",
            title: "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",
            promoOptIn: "required",
			lotteryOptIn:
			{
				required : {
					depends : function( element )
					{
						return ( $('#promotionCodeCheck').val() == 1 );
					}
				}
			},
            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('id') == 'service')
			{
				var hl = $(element).parents('fieldset').find('.headline');

				if( $(element).attr('class').match(/error/gi) )
					hl.addClass('errorLabel');
				else
					hl.removeClass('errorLabel');
			}
			/*
			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)
        {
        	if ( $('#lotteryOptIn').length )
        		if ( $('#promotionCodeCheck').val() < 0 )
        			return false;

			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");
        }
    });

});

