;
var globalObj = {
    formErrorStatus : false,
    move : function (id, space) {
        var elem, offsetValue;
        elem = document.getElementById(id);
        if (!elem) {
            return false;
        }
        offsetValue = Position.cumulativeOffset(elem);
        setTimeout(function() {
            window.scrollTo(0, offsetValue[1] - space);
        }, 10);
    },
    autoFitTextareaHeight : function(elem, keyCode, fit) {
        var padding = 5;
        //backspace or delete or onblor
        if (keyCode === 8 || keyCode === 46 || fit) {
            elem.style.height = 'auto';
        }
        if (elem.scrollHeight > elem.offsetHeight) {
            elem.style.height = (elem.scrollHeight + padding) + 'px';
        }
    },
    setAutoFitTextareaHeight : function (name) {
        $$('textarea.' + name).each(function(elem) {
            globalObj.autoFitTextareaHeight(elem);
            Event.observe(elem, 'keyup', function (event) {
                globalObj.autoFitTextareaHeight(event.target, event.keyCode, false);
            });
            Event.observe(elem, 'blur', function (event) {
                globalObj.autoFitTextareaHeight(event.target, event.keyCode, true);
            });
        });
    },
    hideErrorDisplay : function (id, value, errorClassName, hiddenMessage, nullOk) {
        var blockElem = document.getElementById(id + '_block');
        if (blockElem) {
            var statusElem = document.getElementById(id + '_status');
            if (value !== '' || nullOk) {
                var borderElem = document.getElementById(id + '_border');
                var noticeElem = document.getElementById(id + '_notice');
                if (Element.hasClassName(blockElem, errorClassName)) {
                    Element.removeClassName(blockElem, errorClassName);
                    if (borderElem) {
                        borderElem.style.display = 'none';
                    }
                    if (noticeElem) {
                        noticeElem.innderHTML = '';
                        noticeElem.style.display = 'none';
                    }
                    if (statusElem) {
                        statusElem.style.display = 'none';
                    }
                    if (hiddenMessage) {
                        var errorBox = $$('.' + errorClassName);
                        if (errorBox.length === 0) {
                            $$('.error_box').each(function (elem) {
                                elem.style.display = 'none';
                            });
                        }
                    }
                }
            } else {
                if (statusElem) {
                    statusElem.style.display = 'inline';
                }
            }
        }
    },
    setHideErrorDisplay : function (id, eventType, errorClassName, hiddenMessage) {
        var eventType = eventType ? eventType : 'change';
        var elem = document.getElementById(id);
        var nullOk = (eventType === 'focus') ? true : false;
        Event.observe(elem, eventType, function(evt) {
            globalObj.hideErrorDisplay(id, evt.target.value, errorClassName, hiddenMessage, nullOk);
        });
    }
};
