var compost_url, _commentsform, _txtarea, _chars;

var init = function () {
    // init variables
    _chars      = 0;
    _commentsform = jQuery('form.commentsform');
    compost_url    = _commentsform.attr('action');
    _txtarea    = jQuery('.commentsform .textarea');

    // init events
    _commentsform.submit(_postMessage);
    _txtarea.keyup(_change);

    // show form
    jQuery('div.hide').removeClass('hide');

    // load comments
    _loadComments();

}

// event-handler for posting a message
var _postMessage = function ( ) {
    jQuery.post(
        ABS_URI+compost_url,
        {
            'token'     : jQuery('.commentsform input[name=token]').val(),
            'mediatype' : jQuery('.commentsform input[name=mediatype]').val(),
            'mediaid'   : jQuery('.commentsform input[name=mediaid]').val(),
            'comment'   : jQuery('.commentsform textarea').val(),
            'mid'       : jQuery('.commentsform input[name=mid]').val(),
            'ip'        : jQuery('.commentsform input[name=ip]').val()
        },
        function (data, textStatus, XMLHttpRequest) {
            if ( textStatus == 'success' ){
                _txtarea.val('');
                setTimeout ( '_loadComments()', 1000 );
                    if (data.result == false) {
                        _displayErrorMessage(data);
                    }
            }
        },
        'json'
    );
    return false;
}

// registers keystrokes etc. from within textarea
var _change = function () {
    _chars = _txtarea.val().length;
    jQuery('.comments span').html(_chars);
        if ( _chars > 139 ) {
            _txtarea.val( _txtarea.val().substring(0, 139) );
        }
}

// register error
var _displayErrorMessage = function (data) {
        switch ( data.message ) {
            case 'MISSING PARAMS':
            break;

            case 'USER_ERROR':
            break;

            case 'TOKEN_ERROR':
            break;

            case 'TIME_ERROR':
                alert('Je kunt niet meer dan 1 reactie per 30 seconden plaatsen.');
            break;

            case 'STORE_ERROR':
                alert('Het bericht kon niet worden opgeslagen.');
            break;
        }
}

var _loadComments = function () {
    jQuery.get(
        ABS_URI+'shared/comments/list.php?time='+new Date().getTime(),
        {
            'type': jQuery('.commentsform input[name=mediatype]').val(),
            'id': jQuery('.commentsform input[name=mediaid]').val()
        },
        function ( data, textStatus, XMLHttpRequest ){
            jQuery('.comments #list').html(data);
        }
    );
}

jQuery(document).ready(init);
