/*
 * Javascript für die Registrierung
 * Version: 1.0
 */

/*
 * Funktion zum initialiseren aller Javascript-Events, die für die Registrierung
 * benötigt werden
 */
function initRegistration(){
    //Verstecke Element mit der ID 'company'
    $('#company').hide();
    //Verstecke Element mit der ID 'ajaxload'
    $('#ajaxload').hide();
    //Zeige Element Commercial Checkbox an
    $('#comlable').show();
    //Zuweisen eines Click-Events an ein Element mit der ID 'return'
    $('#return').click(function(){
        //Zeige Suche-Biete Bereich an
        
    });
    $('#registrationForm').append(addExtraParam());
    /*Zuweisen des Validierungs-Event an das Formular mit der ID
      'registrationForm'*/
    $('#registrationForm').validate({
        errorPlacement: general.errorPlacement,
        highlight: general.highlight,
        unhighlight: general.unhighlight,
        debug: general.debug,
        submitHandler:function(){
            //Abfrage ob Checkbox mit ID 'agb' markiert wurde
            if($('#agb').is(":checked")){
                /*Erhalte Werte von allen Inputfelder, die nicht im Attribute
                  Class 'ni' haben im JSON Format*/
                var data=$("#registrationForm :not(input[class*='ni'])").
                    serializeArray();
                /*Aufrufen der JSP für die weitere verarbeitung der erhaltenen
                  Daten*/
                ajaxRegisterNewUser(data);
            }
        },
        //Validierungsregeln für diese Formular einstellen
        rules:allRules.registration
    });
    //Zuweisen eines Blur-Events an Element mit der ID 'rpassword'
    $("#rpassword").blur(function() {
        //Validieren des Elements mit ID 'rpasswordrep'
        $("#rpasswordrep").valid();
    });
    $('#email').blur(function(){
        ajaxCheckEMail($(this).val(),'#checkem');
        if($(this).valid()){
            //Anzeigen des Element mit ID 'canUse' und verstecken des nächsten
            $('#canUse').show().next().hide();
        }else{
            //Verstecken des Element mit ID 'canUse' und anzeige des nächsten
            $('#canUse').hide().next().show();
        }
    });
    $('#commercial').click(function(){
        //Überprüfe ob dieses Element markiert wurde
        if($(this).attr('checked')){
            //Zeige Element mit der ID 'company'
            $('#company').show();
        }else{
            //Verstecke Element mit der ID 'company'
            $('#company').hide();
        }
    });
    $('#policy a').click(function(event){
        event.preventDefault();
        
    });
}

function addExtraParam(){
    var hidd=$('<input type="hidden"/>')
    hidd.attr({
       "name":"option",
       "value":"finish"
    });
    return hidd;
}

/*
 * Funktion zuständig für das anzeigen des Registrierungsformular mit Hilfe von
 * AJAX
 */
function ajaxGetRegistrationPage(){
    $.ajax({
        //Übertragungsmethode ist GET
        type: "GET",
        //URL des Files, das aufgerufen wird
        url: "account/registrationPage.jsp",
        //Format der Antwort des Files, hier HTML
        dataType: "html",
        success:
        function(data){
            //Schreibe Antwort in Element mit ID 'content'
            $('#content').html(data);
            //initialisiere Javascript-Events
            initRegistration();
        },
        error:
        function (xhr){
            //Öffne Alertbox mit Fehlercode
            alert(xhr.status+" "+xhr.statusText);
        }
    });
}

/*
 * Funktion zuständig für das senden des Username zu der JSP, die diesen dann
 * auf seine Existenz überprüft
 * 1.Parameter: STRING Username der gerade eingegeben wurde
 * 2.Parameter: STRING ID des Elements in der die Antwort geschrieben wird
 */
function ajaxCheckEMail(em,place){
    $.ajax({
        type: "POST",
        url: "account/checkEMailAvaibility.jsp",
        dataType: "html",
        //Daten die mit übertragen werden
        data:"email="+em,
        async:false,
        success:
        function(data){
            //schreibe Antwort in place rein
            $(place).text(data);
        },
        error:
        function (xhr){
            alert(xhr.status+" "+xhr.statusText);
        }
    });
}

/*
 * Funktion zum weiterleiten der Formulardaten an die JSP, die für die weiter
 * Verarbeitung von den Daten des neuen Users.
 * 1.Parameter: JSON Formulardaten des neuen Benutzers
 */
function ajaxRegisterNewUser(data){
    $.ajax({
        type: "POST",
        url: "account/registrationPage.jsp",
        dataType: "html",
        data:data,
        //Vor dem Senden diese Funktion ausführen
        beforeSend:function(){
            //Zeige Element mit ID 'ajaxload' und verstecke vorheriges Element
            $('#ajaxload').show().prev().hide();
        },
        success:
        function(data){
            $('#content').html(data);
        },
        error:
        function (xhr){
            alert(xhr.status+" "+xhr.statusText);
        }
    });
}

