﻿$(document).ready(function() {
jQuery.extend($.xs.profile, {
    account: {
        membership: {
            setup:function() {
                $.xs.payments.setup();
                $('#MembershipForm').validate({
                    submitHandler: function(form) {
                        if ($.xs.isDisabled($('#Save'))) return false;
                        
                        $('#Save').attr('disabled',true);
                        var strPostData = $("#MembershipForm").serialize();
                        
                        $.ajax({
                            type: 'POST',
                            url: '/xseno/_site/pages/profile/account/_post.aspx?id=8',
                            data: strPostData,
                            success: function(data) {
                                var intResponseId = parseFloat(data);
                                if (isNaN(intResponseId)) { alert('Het verwerken is niet gelukt, probeer het nogmaals (fout: '+data+').'); return false; }
                                else if (intResponseId < 0) {
                                    switch(intResponseId) {
                                        case -1: alert('Fout bij het verzenden van de gegevens.'); $('#Save').attr('disabled',false); break;
                                        case -2: alert('Er is een blokkade geactiveerd op je codes. Mogelijk is dit omdat je in strijd hebt gehandeld met de voorwaarden. Een blokkade blijft in de regel 7 dagen actief. Probeer het later nogmaals of neem contact op voor meer informatie.'); break;
                                        case -3: alert('Het aantal toegestane pogingen is bereikt. In de meeste gevallen worden blokkades binnen 1 dag automatisch verwijderd. Neem eventueel contact op voor meer informatie.'); break;
                                        case -4: alert('Deze code is onjuist, probeer het nogmaals. Let op: je hebt 5 pogingen. Als je een juiste code intoetst, heb je weer 5 nieuwe pogingen.'); $('#Save').attr('disabled',false); break;
                                        default: alert('Het verwerken is niet gelukt, probeer het nogmaals (fout: '+data+').'); $('#Save').attr('disabled',false); break;
                                    }
                                }
                                        
                                else {
                                    alert('Je diamond membership is nu geactiveerd! Bedankt voor de activatie!');
                                    $.xs.redirect('/profile/');
                                }
                            }
                        });
                    },
                    focusInvalid: true,
                    rules: {
                        Code: { required:true, digits:true }
                    },
                    messages: {
		                Code: {
                            required: '<div class="b_misc_error">Type de code in die je hebt ontvangen.</div>',
                            digits: '<div class="b_misc_error">De code mag alleen uit cijfers bestaan.</div>'
                        }
                    }
                });
            }
        },
        settings: {
            setup: function() {
                $('#SettingsForm').validate({
                    submitHandler: function(form) {
                        if ($.xs.isDisabled($('#SaveSettings'))) return false;
                        
                        $('#SaveSettings').attr('disabled',true);
                        var strPostData = $("#SettingsForm").serialize();
                        
                        $.ajax({
                            type: 'POST',
                            url: '/xseno/_site/pages/profile/account/_post.aspx?id=6',
                            data: strPostData,
                            success: function(data) {
                                if (!$.xs.error.checker(parseFloat(data))) { $('#SaveSettings').attr('disabled',false); return false; }
                                window.location.reload();
                            }
                        });
                    }
                });
                
                $("a[rel='deblock']").click(function() {
                    var intBlockId = $(this).attr('id').replace('DeBlock','');
                    
                    if ($.xs.isDisabled($(this))) return false;
                    if (confirm('Weet je zeker dat je de blokkade wilt opheffen?')) {
                        $(this).attr('disabled',true);
                        
                        $.ajax({
                            type: 'POST',
                            url: '/xseno/_site/pages/profile/account/_post.aspx?id=7',
                            data: 'BlockId='+intBlockId,
                            success: function(data) {
                                if (!$.xs.error.checker(parseFloat(data))) { $('#DeBlock'+intBlockId).attr('disabled',false); return false; }
                                $('#DeBlockPh'+intBlockId).hide();
                            }
                        });
                    }
                });
            }
        },
        data: {
            setup: function(intMemberType) {
                $.xs.payments.setup();
                $.xs.profile.account.data.setupInfo(intMemberType);
                $.xs.profile.account.data.setupEmail();
                $.xs.profile.account.data.setupNickName();
                $.xs.profile.account.data.setupPassword();
                $.xs.profile.account.data.setupDelete();
            },
            setupDelete: function() {
                $('#DeleteForm').validate({
                    submitHandler: function(form) {
                        if ($.xs.isDisabled($('#DeleteForm'))) return false;
                        
                        $('#SaveDelete').attr('disabled',true);
                        var strPostData = $("#DeleteForm").serialize();
                        
                        $.ajax({
                            type: 'POST',
                            url: '/xseno/_site/pages/profile/account/_post.aspx?id=5',
                            data: strPostData,
                            success: function(data) {
                                if (!$.xs.error.checker(parseFloat(data))) { $('#SaveDelete').attr('disabled',false); return false; }
                                alert('Je profiel is succesvol verwijderd.');
                                $.xs.redirect('/');
                            }
                        });
                    },
                    focusInvalid: true,
                    rules: {
                        DeletePassword: { required:true },
                        ConfirmDelete: { required:true }
                    },
                    messages: {
	                    DeletePassword: '<div class="b_misc_error">Vul je xseno wachtwoord in.</div>'
                    }
                });
            },
            setupPassword: function() {
                $('#PasswordForm').validate({
                    submitHandler: function(form) {
                        if ($.xs.isDisabled($('#SavePassword'))) return false;
                        
                        $('#SavePassword').attr('disabled',true);
                        var strPostData = $("#PasswordForm").serialize();
                        
                        $.ajax({
                            type: 'POST',
                            url: '/xseno/_site/pages/profile/account/_post.aspx?id=4',
                            data: strPostData,
                            success: function(data) {
                                if (!$.xs.error.checker(parseFloat(data))) { $('#SavePassword').attr('disabled',false); return false; }
                                alert('Je wachtwoord is succesvol veranderd!\n\nLet op: je kan voortaan alleen nog met het nieuwe wachtwoord inloggen!');
                                alert('Om veiligheidsredenen word je wordt nu uitgelogd. Log opnieuw in met je nieuwe wachtwoord.');
                                window.location.reload();
                            }
                        });
                    },
                    focusInvalid: true,
                    rules: {
                        PasswordNew: { validChars:true },
                        PasswordCheck: { required:true, minlength:4, maxlength:20, equalTo:'#PasswordNew' },
                        PasswordOld: { required:true }
                    },
                    messages: {
                        PasswordNew: { validChars:'<div class="b_misc_error">De volgende karakters zijn niet toegestaan:<br />!@#$%^&*()+=-\\[]\';,./{}|\":<>?._ en spaties</div>' },
	                    PasswordCheck: '<div class="b_misc_error">Dit wachtwoord is onjuist.</div>',
	                    PasswordOld: '<div class="b_misc_error">Vul je xseno wachtwoord in.</div>'
                    }
                });
            },
            setupNickName: function() {
                $('#NickNameForm').validate({
                    submitHandler: function(form) {
                        if ($.xs.isDisabled($('#SaveNickName'))) return false;
                        
                        $('#SaveNickName').attr('disabled',true);
                        var strPostData = $("#NickNameForm").serialize();
                        
                        $.ajax({
                            type: 'POST',
                            url: '/xseno/_site/pages/profile/account/_post.aspx?id=3',
                            data: strPostData,
                            success: function(data) {
                                var intResponseId = parseFloat(data);
                                if (isNaN(intResponseId)) { alert('Het verwerken is niet gelukt, probeer het nogmaals (fout: '+data+').'); return false; }
                                else if (intResponseId < 0) {
                                    switch(intResponseId) {
                                        case -1: alert('Fout bij het verzenden van de gegevens.'); $('#SaveNickName').attr('disabled',false); break;
                                        case -2: alert('Er is een blokkade geactiveerd op je codes. Mogelijk is dit omdat je in strijd hebt gehandeld met de voorwaarden. Een blokkade blijft in de regel 7 dagen actief. Probeer het later nogmaals of neem contact op voor meer informatie.'); break;
                                        case -3: alert('Het aantal toegestane pogingen is bereikt. In de meeste gevallen worden blokkades binnen 1 dag automatisch verwijderd. Neem eventueel contact op voor meer informatie.'); break;
                                        case -4: alert('Deze code is onjuist, probeer het nogmaals. Let op: je hebt 5 pogingen. Als je een juiste code intoetst, heb je weer 5 nieuwe pogingen.'); $('#SaveNickName').attr('disabled',false); break;
                                        case -5: alert('Het wachtwoord is onjuist.'); $('#SaveNickName').attr('disabled',false); break;
                                        default: alert('Het verwerken is niet gelukt, probeer het nogmaals (fout: '+data+').'); $('#SaveNickName').attr('disabled',false); break;
                                    }
                                }
                                        
                                else {
                                    alert('Je nickname is succesvol gewijzigd!\n\nLet op: vergeet niet om voortaan met je nieuwe nickname in te loggen!');
                                    window.location.reload();
                                }
                            }
                        });
                    },
                    focusInvalid: true,
                    rules: {
                        NickName: { required:true, nickname:true, remote:'/xseno/_site/api/data/default.aspx?id=3' },
                        Code: { required:true, digits:true },
                        Password: { required:true }
                    },
                    messages: {
                        NickName: {
		                    required: '<div class="b_misc_error">Vul je nickname in.</div>',
		                    nickname: '<div class="b_misc_error">Je nickname moet minimaal 3 tekens bevatten.<br />Alleen de volgende tekens zijn toegestaan: 0-9, a-z,<br />A-Z, !$()*,.-;=[]^_{}~</div>',
		                    remote: '<div class="b_misc_error">Deze nickname is al geregistreerd op een ander profiel.</div>'
		                },
		                Code: {
                            required: '<div class="b_misc_error">Type de code in die je hebt ontvangen.</div>',
                            digits: '<div class="b_misc_error">De code mag alleen uit cijfers bestaan.</div>'
                        },
		                Password: '<div class="b_misc_error">Vul je xseno wachtwoord in.</div>'
                    }
                });
            },
            setupEmail: function() {
                $('#EmailForm').validate({
                    submitHandler: function(form) {
                        if ($.xs.isDisabled($('#SaveEmail'))) return false;
                        
                        $('#SaveEmail').attr('disabled',true);
                        var strPostData = $("#EmailForm").serialize();
                        
                        $.ajax({
                            type: 'POST',
                            url: '/xseno/_site/pages/profile/account/_post.aspx?id=2',
                            data: strPostData,
                            success: function(data) {
                                if (!$.xs.error.checker(parseFloat(data))) { $('#SaveEmail').attr('disabled',false); return false; }
                                alert('Er is een e-mail gestuurd naar '+$('#Email').val()+' met instructies om je e-mail adres te activeren.');
                            }
                        });
                    },
                    focusInvalid: true,
                    rules: {
                        Email: { required:true, email:true, remote:'/xseno/_site/api/data/default.aspx?id=2' },
                        Password: { required:true, maxlength:40 }
                    },
                    messages: {
                        Email: {
		                    required: '<div class="b_misc_error">Vul je e-mail adres in in.</div>',
		                    email: '<div class="b_misc_error">Vul je e-mail adres in in.</div>',
		                    remote: '<div class="b_misc_error">Dit e-mail adres is al geregistreerd op een ander profiel. Verwijder eventueel eerst dit (oude) profiel, om het e-mail adres op dit profiel te activeren. Wachtwoord vergeten? <a href="/help/faq/5/">Klik hier.</a></div>'
		                },
		                Password: '<div class="b_misc_error">Vul je xseno wachtwoord in.</div>'
                    }
                });
            },
            setupInfo: function(blnDisable) {
                $.xs.suggest('City','/xseno/_site/api/data/default.aspx?id=1');
                               
                $('#InfoForm').validate({
                    submitHandler: function(form) {
                        if ($.xs.isDisabled($('#SaveInfo'))) return false;
                        
                        $('#SaveInfo').attr('disabled',true);
                        $.xs.profile.account.data.disable(false);
                        var strPostData = $("#InfoForm").serialize();
                        $.xs.profile.account.data.disable(true);
                        
                        $.ajax({
                            type: 'POST',
                            url: '/xseno/_site/pages/profile/account/_post.aspx?id=1',
                            data: strPostData,
                            success: function(data) {
                                if (!$.xs.error.checker(parseFloat(data))) { $('#SaveInfo').attr('disabled',false); return false; }
                                window.location.reload();
                            }
                        });
                    },
                    focusInvalid: true,
                    rules: {
                        FirstName: { required:true, minlength:2, maxlength:50, validCharsWithSpaces:true },
                        LastName: { required:true, minlength:2, maxlength:50, validCharsWithSpaces:true },
                        Gender: { required:true },
                        BirthDateDay: { required:true },
                        BirthDateMonth: { required:true },
                        BirthDateYear: { required:true },
                        CityId: { required:true }
                    },
                    messages: {
                        FirstName: {
		                    required: '<div class="b_misc_error">Een volledige voornaam is verplicht.</div>',
		                    minlength: '<div class="b_misc_error">Een volledige voornaam is verplicht.</div>',
		                    validCharsWithSpaces:'<div class="b_misc_error">De volgende karakters zijn niet toegestaan:<br />!@#$%^&*()+=-\\[]\';,./{}|\":<>?._</div>'
		                },
		                LastName: {
		                    required: '<div class="b_misc_error">Een volledige achternaam is verplicht.</div>',
		                    minlength: '<div class="b_misc_error">Een volledige achternaam is verplicht.</div>',
		                    validCharsWithSpaces:'<div class="b_misc_error">De volgende karakters zijn niet toegestaan:<br />!@#$%^&*()+=-\\[]\';,./{}|\":<>?._ spaties</div>'
		                },
		                Gender:'*',
                        BirthDateDay:'*',
                        BirthDateMonth:'*',
                        BirthDateYear:'*',
                        CityId: '<div class="b_misc_error">Kies een woonplaats uit de lijst.</div>'
                    }
                });
                
                if (blnDisable == true) {
                    $.xs.profile.account.data.disable(true);
                }
                
                else {
                    $('#InfoForm').valid();
                }
            },
            disable: function(bool) {
                $('#FirstName').attr('disabled', bool);
                $('#LastName').attr('disabled', bool);
                $('#Gender').attr('disabled', bool);
                $('#BirthDateDay').attr('disabled', bool);
                $('#BirthDateMonth').attr('disabled', bool);
                $('#BirthDateYear').attr('disabled', bool);
            }
        }
    }
});
});