function setVar() {}
window.onload=initPage;
function initPage() {
    if (document.forms[0]!=undefined) {
        initFocus();
        if (document.forms[0]._errjs) {
            window.ISE.parse(document.forms[0]._errjs.value);
        }
    }
    self.scroll(0,0);
}
function initFocus() {
    if (document.forms[0]!=undefined) {
        var elist = document.forms[0].elements;
        var e;
        for (var i = 0; i < elist.length; i++) {
            e = elist[i];
            if (e.type != 'hidden' && e.style.visibility != 'hidden' && e.style.display != 'none' && e.disabled == false
                    && e.type!='submit' && e.type!='button' && e['data-auto-focus']!==false) {
                try {
                    e.focus();
                    break;
                } catch (err) {}
            }
        }
    }
}
function goBackBtn() {
    var f = document.forms[0];
    f.backBtn.value = 1;
    f.submit();
}
function register(qname,instant) {
    var ques = document.forms[0][qname];
    if (!ques) return;
    if (ques._registered)
        return;
    if (isCRA(ques)) {
        for (var i=0; i<ques.length; i++) {
            addEvent(ques[i], 'click', _updateMulti);
        }
    }
    else if (ques.type == 'checkbox' || ques.type == 'radio') {
        addEvent(ques, 'click', _updateSingle)
    }

    if (instant) {
        addEvent(ques, 'keyup', _rrho);
    } else {
        addEvent(ques, 'change', _rrho);
    }
    ques._registered=1;
}
function registerMulti(e) {
    for(var i=0; i<arguments.length; i++) register(arguments[i]);
}
function _updateMulti(e) {
    var ques = document.forms[0][this.name];
    e.t1 = (this.value) ? this.value : null;
    if (ques._updating==1) return;
    ques._updating=1;
    if (this._updated!=1) {
        this._updated=1;
    }
    for (var i=0; i<ques.length; i++) {
        if (ques[i]._updated!=1) {
            ques[i]._updated=1;
            runChangeEvent(ques[i],e);
            ques[i]._updated=0;
        }
    }
    if (this._updated == 1) runChangeEvent(ques,e);

    this._updated=0;
    ques._updating=0;
}
function _updateSingle (e) {
    var ques = document.forms[0][this.name];
    e.t1 = (this.value) ? this.value : null;
    if (this._updating==1) return;

    this._updating=1;
    runChangeEvent(this,e);
    this._updating=0;
}
function addEvent( obj, type, fn ) {
    if (obj.addEventListener)
        obj.addEventListener( type, fn, false );
    else if (obj.attachEvent) {
        obj["e"+type+fn] = fn;
        obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
        obj.attachEvent( "on"+type, obj[type+fn] );
    }
    if (type=='change') {
        if (isCRA(obj)) {
            var subobj = obj[0];
            if (subobj.masterOnChangeList == undefined) {
                subobj.masterOnChangeList = new Array;
            }
            subobj.masterOnChangeList.push(fn);
        }
        else {
            if (obj.onChangeList == undefined) {
                obj.onChangeList = new Array;
            }
            obj.onChangeList.push(fn);
        }
    }
}
function removeEvent( obj, type, fn ) {
    if (obj.removeEventListener)
        obj.removeEventListener( type, fn, false );
    else if (obj.detachEvent) {
        obj.detachEvent( "on"+type, obj[type+fn] );
        obj[type+fn] = null;
        obj["e"+type+fn] = null;
    }
    if (obj.onChangeList != undefined) {
        var newList = new Array;
        for (var i=0; i < obj.onChangeList.length; i++) {
            if (obj.onChangeList[i] != fn) {
                newList.push(obj.onChangeList[i]);
            }
        }
        obj.onChangeList = newList;
    }
}
function runEvent(obj, evType) {
    if (document.createEvent) {
        var evt;
        if (evType.match(/click|mousedown|mousemove|mouseout|mouseover|mouseup/)) {
            evt = document.createEvent("MouseEvents");
            evt.initMouseEvent(evType,true,true,window,1,0,0,0,0,false,false,false,false,0,obj);
        } else {
            evt = document.createEvent("Events");
            evt.initEvent(evType, true, true);
        }
        evt.t2=obj;
        obj.dispatchEvent(evt);
    } else if (obj.fireEvent) {
        obj.fireEvent("on" + evType);
    }
}
function runChangeEvent(form_elem, e) {
    var ocArray = (isCRA(form_elem)) ? form_elem[0].masterOnChangeList : form_elem.onChangeList;
    if (ocArray != undefined) {
        var evt;
        if (document.createEvent) {
            evt = document.createEvent("HTMLEvents");
            evt.initEvent("change", true, true);
        }
        else if (document.createEventObject) {
            evt = document.createEventObject(e);
        }
        evt.t2=form_elem;
        if (e && e.t1) evt.t1 = e.t1;
        for (var i=0; i < ocArray.length; i++)
            ocArray[i](evt);
    }
}
function stopEvent(e) {
    if (!e) var e = window.event;
    if (e) e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
}
function addSeparators(num, sep) {
    num += '';
    if (typeof(sep) == 'undefined') {sep = ',';}
    var rgx = /(\d)(\d{3})\b/;
    while (rgx.test(num)) {
        num = num.replace(rgx, '$1' + sep + '$2');
    }
    return num;
}
function getQues(qname) {
    var ques = document.forms[0][qname];
        if (!ques) return 0;
    return ((ques.value || ques.value=='') && ! isCRS(ques)) ? ques.value : ques;
}
function countChecked(ques) {
    if (! ques) return 0;
    var reAr = new Array();
    var re;
    for (var i=1; i < arguments.length; i++) {
        reAr.push(arguments[i]);
        var res = '^(' + reAr.join('|') + ')$';
        re = new RegExp(res);
    }
    if (isCheckboxArray(ques)) {
        var c = 0;
        for (var i = 0; i < ques.length; i++)
            if (ques[i].checked && (!re || ques[i].value.match(re))) c++;
        return c;
    }
    else if (isRadioArray(ques)) {
        for (var i = 0; i < ques.length; i++)
            if (ques[i].checked && (!re || ques[i].value.match(re))) return 1;
        return 0;
    }
    else if (isCheckbox(ques))
        return (ques.checked && (!re || ques.value.match(re))) ? 1 : 0
    else if (isSelect(ques))
        return (ques.selectedIndex && (!re || ques[ques.selectedIndex].value.match(re))) ? 1 : 0
    return 0;
}
function anyChecked(ques) {
    var vals;
    if (ques && typeof ques=="object" && (ques.tagName=="INPUT" || (ques[0] && ques[0].tagName=="INPUT"))) {
        vals = getFieldValue(ques);
    } else {
        vals = ques;
    }
    if (!(vals instanceof Array)) {vals = [vals];}
    for (var i=0; i<vals.length; i++) {
        for (var j=1; j<arguments.length; j++) {
            if (vals[i]==arguments[j]) {
                return true;
            }
        }
    }
    return false;
}
var isChecked = anyChecked;
function noneChecked() {return !anyChecked.apply(this, arguments);}
// getFieldValue
// takes input form element and returns its value.  If the form element is undefined we
// return undefined.  If the value is a number, return it as a number, otherwise as a string.
// Note that an empty field (or spaces only field) is returned as 0 since Number("") is 0.
function getFieldValue(el) {
    var val;
    if (typeof el != 'undefined') {
        if (isCheckboxArray(el)) {
            var checked_vals = [];
            for (var i=0; i < el.length; i++) {
                if (el[i].checked) checked_vals.push(el[i].value);
            }
            return checked_vals;
        } else if (isCheckbox(el)) {
            if (el.checked)
                val = [el.value];
        } else if (isRadioArray(el)) {
            for (var i=0; i < el.length; i++) {
                if (el[i].checked) {
                    val = el[i].value;
                    break;
                }
            }
        } else if (el.type == 'select-one') {
            val = (el.selectedIndex>=0) ? el.options[el.selectedIndex].value : '';
        } else if (typeof el.value != 'undefined') {
            val = el.value;
        }
    }
    return isNaN(val) ? val : Number(val);
}
function getFieldText(el) {
    var val;
    if (typeof el == 'undefined') {
        val = '';
    } else if (isCheckboxArray(el)) {
        var checked_vals = new Array();
        for (var i=0; i < el.length; i++) {
            if (el[i].checked) {
                val = _merge_text(el[i]);
                if (val && val != '') checked_vals.push(val);
            }
        }
        return checked_vals;
    } else if (isCheckbox(el)) {
        if (el.checked) {
            return _merge_text(el);
        }
    } else if (isRadioArray(el)) {
        var tie;
        for (var i=0; i < el.length; i++) {
            if (el[i].checked) {
                return _merge_text(el[i]);
            }
        }
    } else if (el.type == 'select-one') {
        return el.options[el.selectedIndex].text;
    } else if (typeof el.value != 'undefined') {
        return el.value;
    }
    return '';
}
function _merge_text(elt) {
    var tie = getAtt(elt, 'otxt') || getAtt(elt, 'tie');
    var ties = tie.split(',');
    var str = '';
    for (var i=0; i<ties.length; i++) {
        if (ties[i].substr(0,2) == '$!') {
            str += getFieldText(document.forms[0][ties[i].substr(2)]);
        }
        else {
            var el = document.getElementById(ties[i]);
            if (el) str += el.innerHTML;
        }
    }
    return str;
}

function addUpdateEvent(form_elem, fn) {
    if (isCRA(form_elem)) {
         // for radio and checkbox ques, want 'click' event on all members
        for (var i=0; i < form_elem.length; i++) {
            addEvent(form_elem[i], 'click', fn);
        }
    }
    else if (isCheckbox(form_elem)) {
        addEvent(form_elem, 'click', fn);
    }
    // other types just add a regular change event
    else {
        addEvent(form_elem, 'change', fn);
    }
}
function resetFormElement(form_elem) {
    if (form_elem.type == 'select_one') {
        form_elem.selectedIndex = 0;
    } else if (isCRA(form_elem)) {
        for (var i=0; i < form_elem.length; i++) {
            form_elem[i].checked = false;
        }
    } else {
        form_elem.value = '';
    }
}
function isCheckboxArray(el) {
    if ((typeof el != 'undefined') && (typeof el.length == 'number') &&
            (el[0] && el[0].type == 'checkbox')) return true;
}
function isRadioArray(el) {
    if ((typeof el != 'undefined') && (typeof el.length == 'number') &&
            (el[0] && el[0].type == 'radio')) return true;
}
function isCheckbox(el) {
    if ((typeof el != 'undefined') && (el.type == 'checkbox')) return true;
}
function isRadio(el) {
    if ((typeof el != 'undefined') && (el.type == 'radio')) return true;
}
function isCRS(el) {
    if ((typeof el != 'undefined') && ((el.type == 'radio')||(el.type == 'checkbox')||(el.type == 'select-one'))) return true;
}
function isCRA(el) {
    if ((typeof el != 'undefined') && (typeof el.length == 'number' && el[0]) && ((el[0].type == 'radio')||(el[0].type == 'checkbox'))) return true;
}
function isSelect(el) {
    if ((typeof el != 'undefined') && (el.type == 'select-one')) return true;
}
function isSelectMultiple(el) {
    if ((typeof el != 'undefined') && (el.type == 'select-multiple')) return true;
}
function unformatInt(int_str) {
    if (typeof int_str == 'string') {
        int_str = int_str.replace(/^\$/, '');
        int_str = int_str.replace(/%$/, '');
        int_str = int_str.replace(/,(\d\d\d)/g, "$1");
        int_str = int_str.replace(/\.(\d\d\d)/g, "$1");
    }
    var val = Number(int_str);
    return isNaN(val) ? 0 : val;
}
function getValue(str) {
    return str.match(/^\d*(\.\d+)?$/) ? Number(str) : str;
}
function getNumber(qname) {
    var ques = document.forms[0][qname];
    if (isCRA(ques))
        return ques;
    return (ques) ? unformatInt(ques.value) : 0;
}
function getEls(name) {
    if (!name) return;
    var da = new Array();
    var el = document.getElementById(name);
    var i = 1;
    while (el && el != undefined) {
        da.push( el );
        el = document.getElementById(name + ':' + i++);
    }
    return da;
}
function getAtt (el,att) {
    var as = el.getAttribute(att);
    if (!as) {
        var oa = el.attributes[att];
        if (oa) as = oa.value;
    }
    return (as) ? as : "";
}
// registerHandlerObject
function registerHandlerObject (oq, ob, key) {
    if (isCRA(oq)) {
        if (!oq[0]._ho) oq[0]._ho = { _list : {} };
        if (!oq[0]._ho._list[key]) oq[0]._ho._list[key] = new Array();
        oq[0]._ho._list[key].push(ob)
    }
    else {
        if (!oq._ho) oq._ho = { _list : {} };
        if (!oq._ho._list[key]) oq._ho._list[key] = new Array();
        oq._ho._list[key].push(ob)
    }
}
// runRegisteredHandlerObject
function _rrho (e) {
    var name = this.name;
    if (!name) {
        if (!e) e=window.event;
        var t = e.t2;
        if (t && e.type) {
            if (t.name)
                name = t.name
            else if (t[0] && t[0].name)
                name = t[0].name;
        }
    }
    if (!name) return;
    var ques = document.forms[0][name];
    if (!ques) return;

    var ho = (ques[0] && ques[0]._ho) ? ques[0]._ho : ques._ho;
    if (!ho || !ho._list) return;

    for (var key=1; key<=5; key++) {
        if (ho._list[key]) {
            for (var i in ho._list[key]) {
                if (isNaN(Number(i))) { continue }
                ho._list[key][i].run(e);
            }
        }
    }
}
// runHandlerObjectSet
function _rhos (e, el, key) {
    var ho = (el[0] && el[0]._ho) ? el[0]._ho : el._ho;
    if (!ho || !ho._list) return;
    if (key && key > 0) {
        for (var i in ho._list[key]) ho._list[key][i].run(e);
    }
    else {
        for (key=1; key<=5; key++) {
            if (ho._list[key]) {
                for (var i in ho._list[key]) ho._list[key][i].run(e);
            }
        }
    }
}
function clearFormElement(elem,e) {
    var nm = elem.name;
    var f = document.forms[0];
    if (f[nm].length && (isRadio(elem) || isCheckbox(elem))) {
            for (var i=0;i<f[nm].length;i++) {
                f[nm][i].checked=false;
            }
    } else if (isRadio(elem) || isCheckbox(elem)) {
            f[nm].checked=false;
    } else if (isSelect(elem) || isSelectMultiple(elem)) {
        resetFormElement(elem);
    } else {
        f[nm].value='';
    }
    runChangeEvent(elem,e);
}

