jQuery(document).ready(function() {

    $('a.title').cluetip({splitTitle: '|'});

    jQuery('.formField .inFieldText').siblings('input:text')
		.blur( function() {
			if(this.value==''){
				this.value=jQuery(this).siblings('span.inFieldText').text();
			}
		})
		.focus( function() {
			if(this.value==jQuery(this).siblings('span.inFieldText').text()){
				this.value='';
			}
		})
		;
	
	jQuery('.formField .inFieldText').each(function(){
		if(jQuery(this).siblings('input:text').val() == ''){
			jQuery(this).siblings('input:text').val(
				jQuery(this).text()
			);
		}
	})
	


	jQuery('form[id=register]').submit(function() {
		if(jQuery('#canvasser').val()==jQuery('#canvasser').siblings('span.inFieldText').text()){
			jQuery('#canvasser').val('');
		}
	});

    
    

	jQuery('a.regenCaptcha').click(function() {
		jQuery('img[id="captcha_captcha_image"]').attr('src','image/captcha/register?time='+new Date().getTime());
		return false;
	});
	
	jQuery('#useridexistserror').hide();
	jQuery('#useridexistssuccess').hide();
	jQuery('#useridisfalse').hide();
	jQuery('#userlenisfalse').hide();
	
	jQuery('#checkUserIdExists').click(function() {
			var userid = jQuery('#userid').val();
			
			if(userid.length>3){
				 if (userid.match(/^[a-z-A-Z0-9]+$/) == null) {
	        		//console.log("fehler"); 
	        		jQuery('#useridisfalse').show();
	    		 }else{ 
	        		//console.log("richtig"); 
	        		jQuery.getJSON('member/register/test-user-exists?userid='+userid,null,function(data) {
						if (data['exists'] == true) {
							jQuery('#useridexistserror').show();
							jQuery('#useridexistssuccess').hide();
							jQuery('#useridisfalse').hide();
							jQuery('#userlenisfalse').hide();
						}else{
							jQuery('#useridexistserror').hide();
							jQuery('#useridexistssuccess').show();
							jQuery('#useridisfalse').hide();
							jQuery('#userlenisfalse').hide();
						}
					});	
				}
			}else{
				jQuery('#userlenisfalse').show();
			}
	});
	
    jQuery('li.UserNameProposal').bind('click', function() {
			jQuery('input#userid').val(jQuery(this).text());
	}).hover(function() {
    	jQuery(this).css({cursor:"pointer"});
	}, 
    function () {
        jQuery(this).css({cursor:"default"});
      }
    );
    
    if (jQuery('a.thickbox').length > 0) {
        jQuery('a.thickbox').trigger('click');
    }
	
	jQuery('#password1').pstrength({
			minChar: 5,
			displayMinChar: false,
			displayAppendElement: '#password1Strength',
			verdicts:	['unsicher','normal','mittel','sicher','sehr sicher']
			});
	
	
	//////////////////////////////
	// validate signup form on keyup and submit
	var jahr = new Date();
	var validator = jQuery("form[id=register]").validate({
		errorElement: "span",
		errorClass: "error",
		rules: {
			userid: {
				required: true,
				rangelength: [6,16],
				userid: true
				
			},
			password1: {
				required: true,
				rangelength: [5,20],
				password: true
			},
			password2: {
				required: true,
				rangelength: [5,20],
				equalTo: "#password1",
				password: true
			},
			email: {
				required: true,
				email: true
			},
			"dob[year]": {
				required: true,
				digits: true,
				min: 1900,
				max: jahr.getFullYear()
			},
			"dob[month]": {
				required: true,
				digits: true,
				range: [1,12]
			},
			"dob[day]": {
				required: true,
				digits: true,
				range: [1,31]
			},
			canvasser: {
			},
			salutation: {
				required: true
			},
			firstname: {
				required: true,
				firstname: true
			},
			lastname: {
				required: true,
				lastname: true
			},
			street: {
				required: true,
				street: true
			},
			streetnumber: {
				required: true,
				streetnumber: true
			},
			zip: {
				minlength: 4,
				digits: true,
				required: true
			},
			city: {
				required: true,
				city: true
			},
			phonenumber_prefix: {
				digits: true
			},
			phonenumber_suffix: {
				digits: true
			},
			country_code: {
			},
			gta: {
				required: true
			},
			ppa: {
				required: false
			},
			captcha: {
				maxlength: 4
			}
		},
		messages: {
			userid: {
				required: "Bitte geben Sie den gewünschten Usernamen ein.",
				rangelength: "Ihr Username muss zwischen 6 und 16 Zeichen lang sein.",
				userid: "Ihr Benutzername darf keine Sonderzeichen enthalten. Zulässig sind Buchstaben (keine Umlaute) und Ziffern."
			},
			password1: {
				required: "Bitte geben Sie Ihr Passwort ein.",
				rangelength: "Ihr Passwort muss zwischen 5 und 50 Zeichen lang sein",
				password: "Ihr Passwort darf keine Leerzeichen enthalten."
			},
			password2: {
				required: "Bitte bestätigen Sie Ihr Passwort durch erneute Eingabe.",
				rangelength: "Ihr Passwort muss zwischen 5 und 50 Zeichen lang sein",
				equalTo: "Ihr Passwort unterscheidet sich vom Ersten. Bitte geben Sie das gleiche Passwort noch einmal ein.",
				password: "Ihr Passwort darf keine Leerzeichen enthalten."
			},
			email: {
				required: "Bitte geben Sie Ihre E-Mail-Adresse ein.",
				email: "Bitte korrigieren Sie die E-Mail-Adresse"
			},
			"dob[year]": {
				required: "Bitte geben Sie Ihr Geburtsjahr ein.",
				min: "Bitte korrigieren Sie das Geburtsjahr. Zur Teilnahme an webmiles müssen Sie mindestens 16 Jahre alt sein.",
				max: "Bitte korrigieren Sie das Geburtsjahr. Zur Teilnahme an webmiles müssen Sie mindestens 16 Jahre alt sein.",
				digits: "Geben Sie bitte nur Ziffern ein. Verzichten Sie auf Sonderzeichen."
			},
			"dob[month]": {
				required: "Bitte geben Sie Ihren Geburtsmonat ein.",
				range:  "Bitte korrigieren Sie den Monat.",
				digits: "Geben Sie bitte nur Ziffern ein. Verzichten Sie auf Sonderzeichen."
			},
			"dob[day]": {
				required: "Bitte geben Sie Ihren Geburtstag ein.",
				range:  "Bitte korrigieren Sie den Tag.",
				digits: "Geben Sie bitte nur Ziffern ein. Verzichten Sie auf Sonderzeichen."
			},
			canvasser: {
			},
			salutation: {
				required: "Bitte wählen Sie eine Anrede aus."
			},
			firstname: {
				required: "Bitte geben Sie Ihren Vornamen ein.",
				firstname: "Bitte geben Sie Ihren Vornamen ein."
			},
			lastname: {
				required: "Bitte geben Sie Ihren Nachnamen ein.",
				lastname: "Bitte geben Sie Ihren Nachnamen ein."
			},
			street: {
				required: "Bitte geben Sie eine Straße ein.",
				street: "Bitte geben Sie eine Straße ein."
			},
			streetnumber: {
				required: "Bitte geben Sie eine Hausnummer ein.",
				streetnumber: "%I18n(BuchstabenUndZiffern)"
			},
			zip: {
				minlength: "Bitte geben Sie eine PLZ ein.",
				digits: "Geben Sie bitte nur Ziffern ein. Verzichten Sie auf Sonderzeichen.",
				required: "Bitte geben Sie eine PLZ ein."
			},
			city: {
				required: "Bitte geben Sie einen Ort ein.",
				city: "Bitte geben Sie einen Ort ein."
			},
			phonenumber_prefix: {
				digits: "Geben Sie bitte nur Ziffern ein. Verzichten Sie auf Sonderzeichen."
			},
			phonenumber_suffix: {
				digits: "Geben Sie bitte nur Ziffern ein. Verzichten Sie auf Sonderzeichen."
			},
			country_code: {
			},
			gta: {
				required: "Bitte stimmen Sie unseren AGBs zu."
			},
			ppa: {
				required: "Sie müssen der Datenschutzeinwilligung zustimmen."
			},
			captcha: {
				maxlength: $.format("Code bitte nicht länger als {0} Zeichen eingeben.")
			}
			
		},
		// the errorPlacement has to take the table layout into account
		errorPlacement: function(error, element) {
			if (element.is(":radio")) {
				error.appendTo(element.parent());
			} else if (element.is(":checkbox")) {
				error.appendTo(element.parent().next().next());
            } else if (element.is("#userid")) {
                error.appendTo(element.parent().parent().parent().parent().parent());
            } else {
				error.appendTo(element.parent());
		    }
		},

		// specifying a submitHandler prevents the default submit, good for the demo
/*
 		submitHandler: function() {
			alert("submitted!");
			return true;
		},
*/
		// set this class to error-labels to indicate valid fields
		success: function(label) {
			// set &nbsp; as text for IE
			label.html("&nbsp;").addClass("checked");
		}
	});
	
	//////////////////////////////

});