﻿//<![CDATA[
function DateControl(dateElement, monthElement, yearElement) {

        this.dateElement = document.getElementById(dateElement);
        this.monthElement = document.getElementById(monthElement);
        this.yearElement = document.getElementById(yearElement);
        this.setupEvents = function(el) {
            addEvent(el, 'focus', this.onFocus, false);
            addEvent(el, 'keydown', this.onKeyDown, false);
            addEvent(el, 'keyup', this.onKeyUp, false);
            addEvent(el, 'blur', this.onBlur, false);
        }
        this.setup = function() {
            this.setupEvents(this.dateElement);
            this.setupEvents(this.monthElement);
            this.setupEvents(this.yearElement);
        }
        this.isValidKey = function(keyCode) {
            if ((keyCode >= 8 && keyCode <= 9) || keyCode == 13 || keyCode == 46 || (keyCode >= 37 && keyCode <= 40) || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105)) { return true; }
            return false;
        }
        this.onFocus = function(e) {
            if (window.event) {
                if (isNaN(window.event.srcElement.value)) {
                    window.event.srcElement.value = '';
                    window.event.srcElement.select();
                }
            }
            else if (e) {
                if (isNaN(e.target.value)) {
                    e.target.value = '';
                    e.target.select();
                }
            }
        }
        this.onBlur = function(e) {
            if (window.event) {
                if (window.event.srcElement.value.length == 0) {
                    if (window.event.srcElement.id == "txtMonth") { window.event.srcElement.value = "MM"; }
                    else if (window.event.srcElement.id == "txtDay") { window.event.srcElement.value = "DD"; }
                    else if (window.event.srcElement.id == "txtYear") { window.event.srcElement.value = "YY"; }
                }
            }
            else if (e) {
                if (e.target.value.length == 0) {
                    e.target.value = e.target.getAttribute("value");
                }
            }
        }
        this.onKeyDown = function(e) {
            var evt = window.event != null ? window.event : e;
            if (evt.keyCode == 9 && evt.shiftKey == true) { return; }
            if (!dateControl.isValidKey(evt.keyCode) || evt.shiftKey == true) {
                //if (evt.returnValue) {
                if (window.event) {
                    evt.returnValue = false;
                    evt.cancelBubble = true;
                }
                else {
                    evt.preventDefault();
                    evt.stopPropagation();
                }
            }
        }
        this.onKeyUp = function(e) {

            var evt = window.event != null ? window.event : e;
            var trgt = evt.srcElement != null ? evt.srcElement : evt.target;
            if (trgt.value.length == trgt.maxLength) {
                if (evt.keyCode == 9 || evt.keyCode == 16 || (evt.keyCode >= 37 && evt.keyCode <= 40)) {
                    //if (evt.returnValue) {
                    if(window.event) {
                        evt.returnValue = false;
                        evt.cancelBubble = true;
                    } else {
                        evt.preventDefault();
                        evt.stopPropagation();
                    }
                    return;
                }
                else {
                    var nextElm = getNextTabElement(trgt);
                    if (nextElm) { nextElm.focus(); }
                }
            }
        }
    }

   function getNextTabElement(elementToFind) {
       var allElements = document.getElementsByTagName('input');
       for(var i=0; i<allElements.length; i++)
       {
          if(allElements[i] == elementToFind) {
             if(i != allElements.lenght-1) {
                return allElements[i+1];
             }
             else {
                return document.getElementById("cmdSubmit");
             }       
          }
       }
       return null;
   }
   //]]>