//GENERIC READY FUNCTION FOR BINDS TO BE CALLED FROM
$(document).ready(function() {
    bindEachTextareaMaxLength();
});



//FUNCTION TO BIND EACH TEXT AREA WITH A MAX LENGTH ATTRIBUTE
//TO THE FUNCTION THAT WILL UPDATE COUNT AND CONTROL LENGTH
function bindEachTextareaMaxLength() {
    $('textarea[maxlength]').each(function() {
        bindTextAreaMaxLength(this);
    });
}

//SETS THE MAX AREA FOR A TEXTAREA AND PLACES COUNT BENEATH IT.
//THE CONTAINER FOR THOS SHOULD HAVE THE CLASS "charsRemaining".
//THIS IS A SEPERATE FUNCTION THAT IT CAN BE CALLED AFTER
//AN AJAX UPDATE TO BIND NEW DOM OBJECTS.
function bindTextAreaMaxLength(ta) {
    updateBoundTextArea(ta)

    $(ta).bind('paste', null, function() { setTimeout(function() { updateBoundTextArea(ta); }, 100); });
    $(ta).keyup(function() { updateBoundTextArea(ta); });
}

//DO THE TRIMMING AND COUNTING.
function updateBoundTextArea(ta) {
    var max = parseInt($(ta).attr('maxlength'));
    if (max == null || max <= 0) return;
    if ($(ta).val().length > max) {
        $(ta).val($(ta).val().substr(0, max));
        $(ta).scrollTop($(ta)[0].scrollHeight);
    }
    $(ta).parent().find('.charsRemaining').text('(' + (max - $(ta).val().length) + ' characters remaining)');
}

//THIS WILL TRY TO EXECUTE A FUNCTION DYNAMICALLY.
//IF THE FUNCTION DOES NOT EXIST, IT WILL NOT EXECUTE.
//ONLY WORKS WITH PARAMETERLESS FUNCTIONS.
function checkAndExecuteFunction(funcName, arg) {
    if (eval("typeof " + funcName + " == 'function'")) {
        eval(funcName + "(arg)");
    }
}

/* DROPDOWN SELECT LIST */
function selectDropdown(index) {
    $('#drop-select').val(index);
    }


