if (!DGN) var DGN = { };
DGN.DateInput = Class.create({
    initialize: function(inputname) {
        this.input = $(inputname);
        this.input.maxLength = 14;
        this.updateField();
        this.input.observe('keyup',this.onKeypress.bindAsEventListener(this));
    },
    updateField: function(e) {
        value = this.input.getValue();
        value = value.replace(/[^0-9]/g,'');

        if(e && e.keyCode == Event.KEY_BACKSPACE) {
            if(value == this.previous) {
                value = value.substring(0,value.length - 1);
            }
        }
        this.previous = value

        day = value.substring(0,2);
        month = value.substring(2,4);
        year = value.substring(4,8);
        pos = day.length + month.length + year.length;

        if(pos >= 2) { pos += 3; }
        if(pos >= 7) { pos += 3; }

        value = day + ' - ' + month + ' - ' + year;
        this.input.setValue(value);
    },
    onKeypress: function(e) {
        if(e && e.keyCode) {
            switch(e.keyCode) { // allow moving through field
                case Event.KEY_LEFT:
                case Event.KEY_UP:
                case Event.KEY_RIGHT:
                case Event.KEY_DOWN:
                case Event.KEY_DELETE:
                case Event.KEY_HOME:
                case Event.KEY_END:
                case Event.KEY_PAGEUP:
                case Event.KEY_PAGEDOWN:
                case 16: //SHIFT
                case 17: //CONTROL
                case 18: //ALT
                    return;
            }
        }

        this.updateField(e);

        if(this.input.style.display == 'none' ||
           this.input.parentNode.style.display == 'none' ||
           this.input.parentNode.parentNode.style.display == 'none'
           ) {
            return;
        }
        if(document.selection) {
            this.input.focus ();

            var selrange = document.selection.createRange ();

            selrange.moveStart ('character', - this.input.value.length);
            selrange.moveStart ('character', pos );
            selrange.moveEnd ('character', this.input.value.length);
            selrange.moveEnd ('character', pos - this.input.value.length);
            selrange.select ();

        } else if (e && (e.element().selectionStart || e.element().selectionStart == '0')) {
            e.element().selectionStart = pos;
            e.element().selectionEnd = pos;
            e.element().focus ();
        }

    }
});