YAHOO.namespace('BEBO');

YAHOO.BEBO.textCounter = (function() {
    //puzzled by this pattern (the module pattern)? see http://yuiblog.com/blog/2007/06/12/module-pattern
    var uniqueInstance, field,
    countfield,
    maxlimit;
    var constructor = function(fieldIn, countfieldIn, maxlimitIn) {
        field = fieldIn;
        countfield = countfieldIn;
        maxlimit = maxlimitIn;
        countfield.value = maxlimit - field.value.length;
        YAHOO.util.Event.addListener(field, 'keyup', checkField);
    };
    var checkField = function(e) {
        if (field.value.length >= maxlimit) {
            alert($I.transf("The message can be a maximum of [:maxLength] characters in length. Current message is [:curLength] characters", {maxLength:maxlimit, curLength:field.value.length}));
            field.value = field.value.substring(0, maxlimit);
            YAHOO.util.Event.preventDefault(e);
        } else {
            countfield.value = maxlimit - field.value.length;
        }

    };
    //return the getInstance method (lazy loading)
    return {
        getInstance: function(field, countfield, maxlimit) {
            if (!uniqueInstance) {
                //Instantiate only if the instance doesn't exist
                uniqueInstance = constructor(field, countfield, maxlimit);
            }
            return uniqueInstance;
        },
        reset: function() {
            field.value = "";
            countfield.value = maxlimit;
        }
    }
})();

