﻿//Allows/disallows key presses
function txt_onkeydown(evt) {
    var theEvent = (document.all) ? event : evt
    var txtElm = (document.all) ? event.srcElement : evt.target;
    var maxLength = txtElm.getAttribute('maximumLength');
    var currentLength = txtElm.value.length + 1;
    var allowedKeys = new Array(8, 37, 38, 39, 40);
    for (var i = 0; i < allowedKeys.length; i++) {
        if (allowedKeys[i] == theEvent.keyCode) return;
    }
    if (currentLength > maxLength) {
        if (document.all) {
            event.returnValue = false;
            event.cancelBubble = true;
        }
        else {
            evt.preventDefault();
            if (evt.stopPropogation) evt.stopPropogation();
        }
    }
}

//Refreshes the character count every time a key is pressed
function txt_onkeyup(evt) {
    var theEvent = (document.all) ? event : evt
    var txtElm = (document.all) ? event.srcElement : evt.target;
    refreshCharactersRemainingElement(txtElm);
}

//Refreshes the character count every time a key focus is lost
function txt_onblur(evt) {
    var inputElm = (document.all) ? event.srcElement : evt.target;
    var maxLength = inputElm.getAttribute('maximumLength');
    var currentLength = inputElm.value.length + 1;
    if (currentLength > maxLength) {
        inputElm.value = inputElm.value.substr(0, maxLength);
    }
    refreshCharactersRemainingElement(inputElm);
}

//Updates the characters remaining field element associated with the specified input element
function refreshCharactersRemainingElement(inputElm) {
    var charactersRemainingElm = document.getElementById(inputElm.getAttribute('charactersRemainingElementId'));
    if (charactersRemainingElm == null) return;
    var maxLength = inputElm.getAttribute('maximumLength');
    var currentLength = inputElm.value.length;
    var remainingCharacters = maxLength - currentLength;
    if (remainingCharacters < 0) remainingCharacters = 0;
    charactersRemainingElm.innerHTML = "Characters remaining: " + remainingCharacters;
}

//Refreshes all input fields that have associated characters remaining elements
function refreshAllCharactersRemainingElements() {
    var allInputFields = document.getElementsByTagName("TEXTAREA");
    for (var i = 0; i < allInputFields.length; i++) {
        refreshCharactersRemainingElement(allInputFields[i]);
    }
}

//Perform any page initialisation
function loadHandler() {
    refreshAllCharactersRemainingElements();
}