
/*
* afhandeling van het upload formulier
*/

$(function(){
    //preload alle messages
    loadMessages([
        'contact.veld.leeg',
        'contact.veld.email.ongeldig',
        'aflevering.reactie.bedankt',
        'aflevering.reactie.fout']);
    
    //gebruik de dwr service om een ticket op te halen voor dit reactie form
    comments.getNewTicket(function(data){
        $("input[name='ticket']").val(data);
    })
    
    $("form.respond").submit(postReaction);
    
    //formulier uitklappen als je op het bericht veld klikt
    $("li.respond textarea.reaction").focus(function() {
            $("li.personalia").slideDown("fast");
    });
    
    //formulier cancle link
    $("li.personalia a.cancel").click(function() {
            $("li.personalia").slideUp("fast");
            $("form.respond").trigger("reset");
    });
 });


//callback voor form.submit
function postReaction(e) {
    if (!e) var e = window.event;
    var formObject = this;
    var formID = formObject.getAttribute("id");
    var nodenr = formObject['nodenr'].value;
    var name = formObject['name'].value;
    var email = formObject['email'].value;
    var title = formObject['title'].value;
    var body = formObject['reaction'].value;
    var ticket = formObject['ticket'].value;
    if (!validate(formID)) {
        e.cancleBubble = true;dddddd
        e.returnValue = false;
        return false;
    }
    dwr.engine.setErrorHandler(errorCallback);
    comments.createCommentWithTicket(parseInt(nodenr), name, email, title, body, parseInt(portalnr), ticket, successCallback);
    e.cancleBubble = true;
    e.returnValue = false;
    return false;
}



function errorCallback(data){
    $("*", $("form.respond")).hide();
    $("form.respond").trigger("reset");
    $("form.respond").append('<div class="error">'+messageCache['aflevering.reactie.fout']+'</div>');
}

function successCallback(){
    $("*", $("form.respond")).hide();
    $("form.respond").trigger("reset");
    $("form.respond").append('<div class="confirm">'+messageCache['aflevering.reactie.bedankt']+'</div>');
}


/*
*valideer de velden van het reactie formulier
* @return true als alle velden een geldige waarde bevatten.
*/
function validate(id){
     var valid = true;
    $(':input', $('form#'+id)).each(function(){
        type = $(this).get(0).type;
        if( type != 'submit' && type != 'hidden'){
            /*check op lege velden */

            /*omdat er al een error div kan staan van een andere error, verweideren we die eernst */
            $(this).prev('div.error').remove();
            $(this).removeClass('error');
            if( $(this).fieldValue() == ''){
                valid = false;
                $(this).before($('<div class="error"></div>').text(messageCache['contact.veld.leeg'])).addClass('error');
            }
            /*check op valide email adres */
            if( $(this).attr('name') == 'email' ){
                if(!checkMail($(this).fieldValue())){
                   valid = false;
                    if($(this).prev('div.error').size() == 0){

                        $(this).before( $('<div class="error"></div>').text(messageCache['contact.veld.email.ongeldig'])).addClass('error');
                    }
                }
            }
        }
    });
    return valid;
}

/*
* @return true wanneer de gegeven waarde een geldig email adres is.
*/
function checkMail(value) {
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return filter.test(value);
}
