function scroll_to_registerform() {
	var offset = $("#registration").offset();
	
	if(!offset || !offset.top)
	{
		return false;
	}
	
	offset = offset.top;
	
	$("html, body").animate({'scrollTop': offset}, "slow");
	
	//return true;
}

(function($){
    $(function() {
    	
    	$(".btn_registration:eq(0)").click(function() {
			scroll_to_registerform();
			return false;
		});
		
		$("body").click(function() {
			$(".qtip").each(function() {
				var api = $(this).qtip("api");
				if(!api)
				{ return true; }
				
				api.hide();
			});
		});
		
        
        // Stupid hack to be sure the qtips dissapear.
        //$(".qtip").live("click", function() {
        	//var api = $(this).qtip("api").hide();
        	//$(api.elements.target).focus();
        //});
        
        
		$("#show_message_on_click :input").bind("click.initial", function() {
		
			// When this is triggered, unbind all of the files.
			$("#show_message_on_click :input").unbind(".initial");
						
			var api = $(this).qtip({
                content: 
                     '<img src="/images/form/false.png" alt="" style="vertical-align:top">'
                	+ "&nbsp; Let op dat je je gegevens naar waarheid invult, "
                	+ "anders kunnen we de prijzen niet toekennen!",
                
                show: {
                    ready: true,
                    effect: {
                        length: 500
                    },
                    when: {
                    	event: false
                    }
                },
                position: {
                    corner: { 
                        target: "topMiddle", 
                        tooltip: "bottomMiddle" 
                    },
                    adjust: {
                        y : 0
                    }
                },
                style: { 
                    name: "ClickWin", 
                    tip : {
                        corner: "bottomMiddle"
                    }
                },
                hide: {
                	when: { 
                		event: false
                	},
                    effect: {
                        length: 500
                    }
                }


            }).qtip("api");
            
            //console.log(api);
            
            
		
		});

        
        
        
        // Styling the tooltip.
        $.fn.qtip.styles.ClickWin = {
            tip: 'bottomMiddle',
            border: {
                width:  1,
                radius: 2,
                color:  "#ff7e00" // "#b85800" // '#795e5d'
            },
            'font-weight': 'bold',
            background: "#ffab00",  //'#f4ecda',
            color:  '#fff' //'#bdb999'
        };
        
        
        
        registrationValidate = {
            // Returns TRUE on success or FALSE or STRING on failure.
            field : function(field) {
                var $field = $(field);
                var name   = $field.attr('name'); 

                switch(name)
                {
                    case "birthdate_d":
                    case "birthdate_m":
                    case "birthdate_y":
                        return true;
                        /*
                        if($field.val() && $field.val() != "0") {
                            return true;
                        }*/
                    break;
                    
                    case "firstname":
                    case "lastname":
                    case "street":
                        if($field.val().length >= 2) {
                            return true;
                        } else {
                            message = "Voer je ";
                            
                                 if(name == "firstname") message += "voornaam";
                            else if(name == "lastname")  message += "achternaam";
                            else if(name == "street")    message += "straatnaam";
                            message += " in";
                            
                            return message;
                        }
                    break;
                    
                    case "password":
                        if($field.val().length >= 4) {
                            return true;
                        } else {
                            return "Het wachtwoord moet uit minimaal 4 karakters bestaan";
                        }
                    break;
                    
                    case "passwordv":
                        if($field.parents("ul:eq(0), #registration_form_b:eq(0)").find(":input[name=password]").val()
                            != $field.val()) {
                            return "Het wachtwoord komt niet overeen";
                        } else if($field.val().length < 1) {
                        	return "Het wachtwoord komt niet overeen";
                        } else {
                            return true;
                        }
                    break;
                    
                    case "housenumber":
                        if(/*$field.val().length > 0 &&*/ $field.val().match(/(\d+)/)) {
                            return true;
                        } else {
                            return "Vul het huisnummer in (alleen cijfers)";
                        }
                    break;
                    
                    case "email":
                    	$field.val( $field.val().replace(/\s/g, '') );
                    
                        var regExp = new RegExp("^([0-9a-zA-Z]([-+.\\w]*[0-9a-zA-Z])*"
                            + "@"
                            + "([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+"
                            + "[a-zA-Z]{2,9})$");
                            
                        var regExp = /^([0-9a-zA-Z]([-+.\w]*[0-9a-zA-Z_])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
                        
                        
                        if($field.val().match(regExp)) {
                            return true;
                        } else if($field.val().length > 0) {
                            return "'"+ $field.val() +"' is geen geldig emailadres.";
                        } else {
                            return false;
                        }
                    
                    break;
                    
                    case "generalconditions":
                        if($field.is(":checked")) {
                            return true;
                        } else {
                            return "Je moet de Algemene Voorwaarden accepteren";
                        }
                    break;
                    
                    default:
                        return true;
                    break;
                }
                
                return false;
            },
            
            sex : function(form) {
                $form = $(form);
                if($form.find('input[name=sex]:checked').val()) {
                    return true;
                }
                return "Kies 'Dhr' of 'Mevr'";
            },
            
            
            age : function(form) {
                var $form = $(form);
                var min_age = 12;
                var day   = parseInt($form.find(':input[name=birthdate_d]').val(), 10); 
                var month = parseInt($form.find(':input[name=birthdate_m]').val(), 10); 
                var year  = parseInt($form.find(':input[name=birthdate_y]').val(), 10);
                
                if(!day || !month || !year) {
                    return "Vul je geboorte datum in";
                }
                
                var theirDate = new Date((year + min_age), month, day);
                var today = new Date;
                
                if( (today.getTime() - theirDate.getTime()) < 0 ) {
                    return "Helaas, je bent te jong om te mogen deelnemen aan ClickWin.";
                }
                return true;
            },
            
            zip : function(form, showOnSuccess) {
                
                if(typeof showOnSuccess == "undefined") {
                    showOnSuccess = true;
                } 
            
                var $form    = $(form);
                var $zipltr  = $form.find(":input[name=zipltr]");
                var postcode = (
                        $form.find(":input[name=zipnr]").val() +
                        $zipltr.val()
                    ).replace(new RegExp("\s*"), "");
                
                
                if(postcode.match(new RegExp("\\d{4}[a-zA-Z]{2}")))
                {
                    $.get('/modules/registration/getplace.php', {postcode:postcode}, function(data) {
                    
                        // Show the result in a balloon tool tip next to the form.
                        
                        // If we don't want to see it, skip this part.
                        if(!showOnSuccess && data) {
                            return true;
                        }
                        
                        var img  = '<img src="/images/form/true.png"  alt="" style="vertical-align:top"> ';
                        var img2 = '<img src="/images/form/false.png" alt="" style="vertical-align:top"> ';
                        var api = $zipltr.qtip({
                            content: data ? img + data : img2 + "Postcode niet gevonden.",
                            
                            show: {
                                ready: true,
                                effect: {
                                    length: 500
                                },
                                when: {
                                	event: false
                                }
                            },
                            position: {
                                corner: { 
                                    target: "middleRight", 
                                    tooltip: "middleLeft" 
                                },
                                adjust: {
                                    y : 0
                                }
                            },
                            style: { 
                                name: "ClickWin", 
                                tip : {
                                    corner: "leftMiddle"
                                }
                            },
                            hide: {
                            	when: { 
                            		event: false
                            	},
                                effect: {
                                    length: 500
                                }
                            }
                        }).qtip("api");
                        
                        callback = (function(api) { 
                            return function() { 
                                api.hide();
                            };
                        })(api);
                        
                        window.setTimeout(callback, 3000);
                
                   });
                   
                   return true;
                } else {
                    return "Een postcode bestaat uit 4 cijfers en 2 letters.";
                }
                
            },
            
            
            
            display_error : function(result, field, showOnReady) {
				
				
				showOnReady = !!showOnReady;
            	field = $(field).parents("ul li li, .home-registration-center label, #reg_gender").eq(0).find("img.check:eq(0)");
            	
            	
            	if($(field).length < 1 || !field)
            	{
            		return true;
            	}
            	
            	    	
                if(result !== true)
                {
                	$(field).show();
                	
                    var api = $(field).qtip({
                        content: result ? result : "Vul dit veld in",
                        position: {
                            corner: {
                                target: "topMiddle",
                                tooltip: "bottomMiddle"
                            },
                            adjust: {
                                y : 0,
                                x : 0
                            }
                        },
                        style: { name: "ClickWin" },
                        show: {
                            solo : true,
                            ready: showOnReady,
                            when : { },
                            effect: { }
                        },
                        hide: {
                            when: { },
                            effect: { }
                        },
                        tip: 'bottomLeft'
                    }).qtip("api");
                }
                else
                {
                    var api = null;
                    try {
                        var api = $(field).qtip("api");
                        if(api) {
                        //    api.hide();
                        	api.destroy();
                        }
                    } catch (error) {}
                }
            },
            
            
            
            init : function(custom_form) {
                
                var self  = this;
                
                $form = $("body .home-registration-center form:eq(0)");
                
                if($form.length < 1)
                {
                	$form = $("#home-registration-form");
                }
                
                
                $form.find(":input").each(function() {
                
                    // Add a custom event to validate this field.
                    $(this).bind("validationStart", function() {
                    
                        // On error, add a tooltip.
                        result = self.field(this);
                        
                        
                        // On success, execute special validators.
                        if(result === true)
                        {
                            switch($(this).attr('name'))
                            {
                                case "sex":
                                    result = self.sex($form);
                                break;
                                case "zipltr":
                                    result = self.zip($form);
                                break;
                                case "birthdate_y":
                                    result = self.age($form);
                                break;
                            }
                        }
                        
                        // If this field does not validate, show an error.
                        self.display_error(result, this, true);
                        
                        
                        switch($(this).attr('name'))
                        {
                        	case "birthdate_d":
                        	case "birthdate_m":
                        	case "zipnr":
                        	case "hnr_add":
                        	
                        	break;
                        	
                        	default:
	                        	var valid = !!(result === true);
		                	    $(this).parents("ul li li, .home-registration-center label, #reg_gender").eq(0).find("img.check:eq(0)")
		                    		.attr('src', '/images/form/' + (valid ? 'true.png' : 'false.png'))
		                    		.show();
                        	break;
                        }
                        
                    
                    }).blur(function() {
                    
                        // On blur, validate field.
                        $(this).trigger("validationStart");
                        
                    });
                }); // Each input
                
                $form.find(":input[name=sex]").bind('click', function() {
                	$(this).trigger("validationStart");
                });
                
                
                $form.find(":input[name=zipnr]").keyup(function(e) {
                    // When the zipnr field is full, move to the next field.
                    
                    // If a letter was entered, check if this field validates.
                    //var code = (e.keyCode ? e.keyCode : e.which);
                    var code = e.which;
                    //console.log($(this).val(), e, e.which);
                    //if(code >= 96 && code <= 105) {
                        //if($(this).val().match(new RegExp("\\d{4}"))) {
                        if($(this).val().match(new RegExp(".{4}"))) {
                            field = $form.find(":input[name=zipltr]").eq(0).focus()
                        }
                    //}
                });
                $form.find(":input[name=zipltr]").keydown(function(e) {
                    var code = (e.keyCode ? e.keyCode : e.which);
                    if(code == 8) {
                        if($(this).val().length < 1) {
                            $form.find(":input[name=zipnr]").eq(0).focus();
                        }
                    }
                });
                
                
                
                $form.submit(function(event) {
                
                    var valid = true;
                    
                    event.preventDefault;
                	
                	var errors = 0;
                	
                    $(this).find(":input[name]").each(function() {
                    
                        // On error, add a tooltip.
                        var result = self.field(this);
                        
                        // On success, execute special validators.
                        if(result === true)
                        {
                            switch($(this).attr('name'))
                            {
                                case "sex":
                                    result = self.sex($form);
                                break;
                                case "zipltr":
                                    result = self.zip($form, false);
                                break;
                                case "birthdate_y":
                                    result = self.age($form);
                                break;
                            }
                        }
                        
                        // If this field does not validate, show an error.
                        if(result !== true) {
                            valid = false;
                            errors++;
                            
                            self.display_error(result, this, errors===1 ? true : false);
                        }

                        switch($(this).attr('name'))
                    	{
	                    	case "birthdate_d":
	                    	case "birthdate_m":
	                    	case "zipnr":
	                    	break;
	                    	
	                    	default: 
	               				element = $(this).parents("ul li li, .home-registration-center label, #reg_gender").eq(0).find("img.check:eq(0)");
	               				src = '/images/form/' + (result === true ? 'true.png' : 'false.png');
	               				
								if(element && $(element).length > 0)
								{
									$(element).attr('src', src).show();
								}
	                		break;
                		}
                    });                	
                    
                    if(valid)
                    {
                        // All data should be fine, let's do a POST.
                        var form_data = $(this).serialize();
                        var this_form = this;
                        
                        var url = "/modules/registration/doregistration.php?reduced=true";
                        
                        if(window.registration_form_type && window.registration_form_type == 'B')
                        {
                        	url = '/modules/registration/doregistration.php';
                        }
                        
                        $.post(url, form_data, function(data, textStatus, xhr) {
                            self.handle_response(data, xhr, this_form);
                        }, "json");
                        //console.log("This form is valid", form_data, this_form);
                    }
                
                    // Stop form submission.
                    return false;
                });
            
            },
            
            
            handle_response : function(data, xhr, form) {
                
                $form = $(form);
                
                if(!$form.length)
                	$form = $(form).parents("form").eq(0);
                
                var msg = "";
                
                //data = { status: 0, msg: "MESSAGE" };
                //success
                if (data.status == 1)
                {
                	
                    $form.parent().prev().fadeOut("slow").next().fadeOut("slow", function() {
                        
                        if(!data.msg)
                        	data.msg = '';
                        else
                        	data.msg = data.msg.split("kunt bevestigen. ").join("kunt bevestigen. Ga naar je e-mail toe en klik op de link in de mail.");
                        
                        
                        $(this).parent()
                            .prepend(
                                $("<div>").addClass("content").addClass("home-page-reg-msg")
                                .css("border-top", "none")
                                .html("<h3 style='margin:0; color:#444;'><u>Bevestig nu je e-mailadres</u></h3><br>"
                                	+ data.msg)
                            )
                            .prepend(
                            	conversion_tracker()
                            )
                         /*   .prepend(
                                 $("<h2>").text("Bedankt")
                            );*/
                        
                        $(this).parent().find("> div:eq(0), > h2:eq(0)").fadeOut(0, function() {
                            $(this).fadeIn("slow"); 
                        });
                        
                    });
                }
                else if (data.status <= 0) //error
                {
                    $form.parents('div.inner').eq(0).fadeOut("slow", function() {
                       
                    
                    var msgs = {
                    	"error: firstname": "Vul uw voornaam correct in",
                    	"error: lastname": "Vul uw achternaam correct in",
                    	"error: birthdate": "Vul uw geboortedatum correct in",
                    	"error: sex": "Geef uw geslacht aan",
                    	"error: zipnr": "Geef uw postcode op",
                    	"error: zipltr": "Geef uw postcode op",
                    	"error: street": "Geef uw straatnaam op",
                    	"error: housenumber": "Geef uw huisnummer op",
                    	"error: email": "Geef uw emailadres op. U mag 1 maal er per emailadres registeren.",
                    	"error: password": "Vul uw wachtwoord correct in"
                    };
                    
                    
                    if("msg" in data)
                    {
                    	msg = data["msg"];
                    	if(msg in msgs)
                    	{ msg = msgs[data.msg]; }
                    }
                    
                       
                        $(this).parents(".content-block:eq(0)")
                            .prepend(
                                $("<div>").attr({"class" : "content"}).text(msg)
                            )
                            .prepend(
                                $("<h2>").text("Er is een fout opgetreden")
                            );
                            
                        $(this).parent().find("> div:eq(0), > h2:eq(0)").fadeOut(0, function() {
                           // Fade in, then fade out again after 3 seconds.
                           $(this).fadeIn("slow").animate({dummy:1}, 3000, function() {
                               $(this).fadeOut("slow", function() {
                                   // Delete these nodes after showing the form again.
                                   deleteme = this;
                                   $(this).parent().find("div.inner").fadeIn("slow", function() {
                                       if($(deleteme).prev().is("h2"))
                                       {
                                       	$(deleteme).prev().remove();
                                       }
                                       $(deleteme).remove();
                                   });
                               });
                           }); 
                        });
                        
                    });
                   
                    
                    $back_link = $('<a></a>').attr('href', '#').click(function() {
                        $('#register_form').show();
                        $(this).remove();
                        $('#li_email .true').css('display','none');
                        $('#li_email .false').css('display', 'inline');
                        return false;
                    }).html(' <br> Klik hier om terug te gaan. ');
                    
                    
                    $("#register_form").hide();  //.remove();
                    $("#register_head").text("Fout");
                    $("#register_text").text(msg).append($back_link);
                    $("#register_text").css("color","red");
                }
                else
                {
                    alert("Er is een fout ontstaan tijdens het registreren.");   
                    
                }
                
                
            }
            
        };        
        
    });
})(jQuery);


