/* javascript functions for eForms */

// toggle visibility of an element by ID
function toggleVisibility(elt) {
    if (document.getElementById(elt).style.visibility == "visible") {
        document.getElementById(elt).style.visibility="hidden";
        document.getElementById(elt).style.display="none";
    } else {
        document.getElementById(elt).style.visibility="visible";
        document.getElementById(elt).style.display="inline";
    }
}

// set visibility of an element by ID
function setVisibility(elt, value) {
    if (value) {
        document.getElementById(elt).style.visibility="visible";
        document.getElementById(elt).style.display="inline";
    } else {
        document.getElementById(elt).style.visibility="hidden";
        document.getElementById(elt).style.display="none";
    }
}

// determine the selected value of a radio button list
function getCheckedValue(radioObj) {
    if (!radioObj) return "";
    var radioLength = radioObj.length;
    if (radioLength == undefined) {
        if(radioObj.checked) return radioObj.value;
        else return "";
    }
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) return radioObj[i].value;
    }
    return "";
}

// definition of eForm progress bar
function ProgressBar(id) {
    this.setWidth = function(w) {
      progressOuter.style.width = w
    };
    
    this.setProgress = function(s, t) {
      pc = Math.round(100 * s / t);
      progressInner.style.width = pc + "%";
      progressText.innerHTML = "Step " + s + " of " + t;
    };

    this.setText = function(t) {
      progressText.innerHTML = t;
    };

    this.setBackgroundColour = function(c) {
      progressOuter.style.backgroundColor = c;
    };
    
    this.setProgressColour = function(c) {
      progressInner.style.backgroundColor = c;
    };

    this.setProgressBorder = function(b) {
      progressOuter.style.border = b;
    };

    this.id = id;
    var progressBar = document.getElementById(this.id);
    progressBar.innerHTML = "<div class='progressText'></div><div class='progressOuter'><div class='progressInner'>&nbsp;</div></div>";
    var progressOuter = progressBar.childNodes[1];
    var progressInner = progressOuter.childNodes[0];
    var progressText = progressBar.childNodes[0];

    this.setBackgroundColour("#eeeeee");
    this.setProgress(1, 1);
    this.setProgressColour("#ff0000");
    this.setProgressBorder("1px solid black");
}

//ensure only one checkbox item is selected
function selectOne(form, selectedElement) {
    for(i=0; i<form.elements.length; i++) {
        if(form.elements[i].type=='checkbox') {
            form.elements[i].checked = false;
        }
    }
    selectedElement.checked = true;
}

//limit a input textarea field to a specific number of characters
function limitChars(textid, limit, charsleftid) {
    var text = $('#'+textid).val();
    if(text.length >= limit) {
        $('#'+charsleftid).html('no characters');
        $('#'+textid).val(text.substr(0,limit));
        return false;
    } else {
        $('#'+charsleftid).html((limit - text.length) +' characters');
        return true;
    }
}
