function isChecked(name, value) {
    var checkboxes = document.all[name];
    for (var i = 0; i < checkboxes.length; i++) {
        if (checkboxes[i].value == value) {
            if (name == 'question_4823') {
                var issues = new Array('issue1', 'issue2', 'issue3', 'issue4');
                var bb = false;
                for (var j = 1; j < 6; j++) {
                    if (document.getElementsByName(name)[j].checked) {
                        bb = true;
                        break;
                    }
                }
                for (var j = 0; j < issues.length; j++) {
                    document.all(issues[j]).style.display = checkboxes[i].checked && bb ? 'block' : 'none';
                }
            }
            return checkboxes[i].checked;
        }
    }
    return false;
}

function dropDownOnChange(sender, value) {
    var editBox = document.all[sender.name + '_EDITBOX'];
    if (editValue != null) {
        editBox.value = editValue.value;
        editBox.display = 'none';
        //        editBox.disabled = false;
        //        editBox.style.display = 'none';
    } else {
        if (editBox != null) {
            //        editBox.disabled = true;
            editBox.display = 'block';
            //        editBox.style.display = 'block';

        }
    }
}


function createOtherValidator(elemName, editboxName) {

    validators[validators.length] = function() {

        var elem = document.all[elemName];
        var editbox = document.all[editboxName];
        if (elem != null && editbox != null && editbox.style != null && editbox.style.display != "none") {
            var ebValue = editbox.value;
            while (ebValue.indexOf(" ") != -1) {
                ebValue = ebValue.replace(" ", "");
            }
            if (ebValue == "" || editbox.type == 'select-one' && editbox.options[editbox.selectedIndex].value == '0') {
                alert("Please make sure you have answered all required questions!");
                editbox.focus();
                return false;
            }
        }
        return true;
    }

}

//function createOtherValidator(checkboxName, checkboxValue, editboxName) {
//
//    return new function() {
//
//        var checkbox = document.all[checkboxName];
//        var editbox = document.all[editboxName];
//
//        if (checkbox != null && editbox != null && checkbox.checked && editbox == "") {
//            editbox.focus();
//            return false;
//        }
//
//    }
//
//}

function getQuestionText(field) {
    var row = document.getElementById("rowid_" + field.name);
    var errMsg = "";
    if (row != null) {
        var childNodes = row.childNodes;
        if (childNodes.length > 0) {
            if (getUserAgent() == agentIE) {
                errMsg += "\n" + childNodes[0].innerText;
            }
            else {
                errMsg += "\n" + childNodes[0].childNodes[0].textContent;
            }
        }
    }
    return errMsg;
}

function validateCheckboxes(field, errMsg, minVal, maxVal, id) {
    var sum = 0;
    var disabled = 0;
    for (i = 0; i < field.length; i++) {
        if (field[i].checked) {
            sum ++;
        }
        if (field[i].disabled) {
            disabled ++;
        }
    }
    /*if all check-boxes are disabled then quit and move to next question*/
    if (disabled == field.length) {
        return true;
    }
    if (field[0].validate == false) {
        return true;
    }
    if ((sum < minVal) || (sum > maxVal)) {
        errMsg += getQuestionText(field[0]);
        alert(errMsg);
        highlightBg(id);
        for (var f = 0; f < field.length; f++) {
            if (!field[f].disabled) {
                field[f].focus();
                if (field[f].name.indexOf("question_18759") != -1 || field[f].name.indexOf("question_18752") != -1 || field[f].name.indexOf("question_18753") != -1
                        || field[f].name.indexOf("question_12271") != -1 || field[f].name.indexOf("question_20968") != -1 || field[f].name.indexOf("question_12293") != -1) {
                    if (document.getElementById(field[f].name)) {
                        document.getElementById(field[f].name).parentNode.parentNode.style.background = 'red';
                    }
                }
                break;
            }
        }
        return false;
    }
    return true;
}

function highlightBg(id) {
    var elem = document.getElementById("rowid_question_" + id);
    if (elem) {
        elem.onmouseover = function() {
            setTimeout(function() {
                elem.style.backgroundColor = "";
            }, 700);
        }
        elem.style.backgroundColor = "#DD7870";
    }
}

var validationElemNames = "";
validators = new Array();
pageNumber = 0;

function removeRequiredValidator(name) {
    var obj;
    if (typeof name == 'string') {
        obj = document.all[name];
    }
    else {
        obj = name;
    }
    if (obj == null) {
        return;
    }

    try {
        if (obj.length > 1) {
            obj[0].validate = false;
        }
    } catch (e) {

    }

    obj.validate = false;
}

function isRequired(name) {
    var obj;
    if (typeof name == 'string') {
        obj = document.all[name];
    }
    else {
        obj = name;
    }
    if (obj == null) {
        return false;
    }

    try {
        if (obj.length > 1) {
            return  obj[0].validate;
        }
    } catch (e) {

    }

    return obj.validate;
}

function reCreateRequiredValidator(name) {
    var obj;
    if (typeof name == 'string') {
        obj = document.all[name];
    }
    else {
        obj = name;
    }
    if (obj == null) {
        return;
    }

    try {
        if (obj.length > 1) {
            obj[0].validate = true;
        }
    } catch (e) {

    }

    obj.validate = true;
}

function createDisableFunction(name) {
    var obj = document.all[name];
    if (!obj) {
        return null;
    }
    obj.do_Disable = function() {
        this.isEnable = false;
        removeRequiredValidator(this);
        if (this.type == "text" || this.type == "textarea" || this.type == "select-one") {
            if (this.type == "select-one") {
                this.options[0].selected = true;
            }
            if (this.type == "text") {
                document.getElementsByName(this.name)[0].value = "";
            }

            this.disabled = true;
        } else {
            if (this.length) {
                for (var i = 0; i < this.length; i++) {
                    if (this[i].type == "radio") {
                        this[i].checked = false;
                    }
                    this[i].disabled = true;
                }
            }
        }
    }

    obj.do_Enable = function() {
        this.isEnable = true;
        reCreateRequiredValidator(this);
        if (this.type == "text" || this.type == "textarea" || this.type == "select-one") {
            this.disabled = false;
        } else {
            if (this.length) {
                for (var i = 0; i < this.length; i++) {
                    this[i].disabled = false;
                }
            }
        }
    }
    return obj;
}

function createDisableObjects(arr, name) {
    var obj = document.all[name];
    if (!obj) {
        return;
    }
    if (obj.length && !obj.tagName) {
        for (var j = 0; j < obj.length; j++) {
            obj[j].referenceObjects = new Array();
            for (var i = 0; i < arr.length; i++) {
                var o = createDisableFunction(arr[i])
                obj[j].referenceObjects[i] = o;
                delete o;
            }
        }
    } else {
        obj.referenceObjects = new Array();
        for (var i = 0; i < arr.length; i++) {
            var o = createDisableFunction(arr[i]);
            obj.referenceObjects[i] = o;
            delete o;
        }
    }
    delete obj;
}

var disableObjects = new Array();
function ToDoOnLoadDocument(arr, name) {
    var i = disableObjects.length;
    disableObjects[i] = new Object();
    disableObjects[i].arr = arr;
    disableObjects[i].name = name;
}

var changedObjects = new Array();
function addChangedObject(name) {
    var obj = document.all[name];
    /*TODO: use document.getElementById(name);*/
    if (obj.length && !obj.tagName) {
        for (var i = 0; i < obj.length; i++) {
            if (obj[i].checked) {
                changedObjects[changedObjects.length] = obj[i];
            }
        }
    } else {
        changedObjects[changedObjects.length] = obj;
    }
}

function createRequiredValidator(name) {
    validationElemNames += name + ",";
    validators[validators.length] = function() {
        if (name == EmailName) {
            return validateSpecial();
        }

        var msg = "Please make sure that you have answered all required questions!";
        var val = "";
        var valueRadiobutton = false;

        var elementsByName = document.getElementsByName(name);
        var id = name.substring(name.lastIndexOf("_") + 1, name.length);
        if (elementsByName == null || elementsByName.length == 0 || elementsByName[0] == null) {
            return true;
        }
        var questionElement = document.all[name];
        if (elementsByName.length == 1) {
            if (questionElement == null) {
                return true;
            }
            if (questionElement.disabled) {
                return true;
            }
            if (questionElement.validate == false) {
                return true;
            }
            if (questionElement.type == "text" || questionElement.type == "textarea") {
                val = questionElement.value;
            }
            if (questionElement.type == "select-one") {
                val = questionElement.options[questionElement.selectedIndex].value == '0' ? ''
                        : questionElement.options[questionElement.selectedIndex].value;
            }
            if (questionElement.type == "checkbox" && elementsByName[0].checked == true) {
                return true;
            }
        } else {
            if (elementsByName[0].type == "radio") {
                valueRadiobutton = true;
                if (elementsByName[0].disabled) {
                    return true;
                }
                if (elementsByName[0].validate == false) {
                    return true;
                }
                return validateCheckboxes(questionElement, "Please make sure you have answered all required questions!", 1, 32000, id);
            } else {
                if (elementsByName.length > 1 && document.getElementsByName(name + "_name").length > 1) {
                    return validateMultipleEditbox(document.all[name + "_name"], "Please make sure you have answered all required questions!", 1, 32000, id);
                } else {
                    if (elementsByName.length > 1) {
                        return validateCheckboxes(questionElement, "Please make sure you have answered all required questions!", 1, 32000, id);
                    }
                }
            }
        }
        if (val == '') {
            msg += getQuestionText(questionElement);
            //start for survey iperesearch 144
            var questionsPro = new Array(
                    "12179", "12186", "12187", "12188", "12189", "12193", "12194", "12195", "12198", "12196", "18599", "12197", "12916",
                    "12208", "12209", "12210", "12211", "12213", "12214", "12215", "12217", "12920", "12221", "12224", "12225", "12226",
                    "12921", "12922", "18765", "12236", "12238", "18769", "18771", "18773", "18774", "12250", "12251", "12246", "12252",
                    "12253", "12927", "12928", "18760", "18761", "12264", "12265", "12266", "18751", "12267", "12268", "12931", "12274",
                    "12930", "12272", "12273", "18746", "18748", "12282", "12283", "12284", "18737", "18738", "18739", "18740", "18741",
                    "12159", "12161", "12162", "12166", "12167", "12171", "20352", "12199", "12219", "12227", "12241", "12254", "18762",
                    "18762", "12279", "18750", "12286", "12175"
            );
            for (var quest = 0; quest < questionsPro.length; quest++) {
                if (name.indexOf("question_" + questionsPro[quest]) != -1) {
                    if (document.getElementById(name)) {
                        document.getElementById(name).parentNode.style.background = 'red';
                    }
                }
            }
            //end for survey iperesearch 144

            alert(msg);
            if (!questionElement.disabled) {
                highlightBg(id);
                questionElement.focus();
            }
            return false;
        }

        if (isExist("question_12161") && questionElement.name == "question_12161") {
            var email = document.getElementsByName("question_12161")[0].value;
            if (!emailValidator(email, 'Not a Valid Email')) {
                questionElement.focus();
                return false;
            }
        }

        return true;
    }

    function emailValidator(value, helperMsg) {
        var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
        if (value.match(emailExp)) {
            return true;
        } else {
            alert(helperMsg);
//            elem[0].focus();
            return false;
        }
    }

    function validateMultipleEditbox(field, errMsg, minVal, maxVal, id) {
        var sum = 0;
        for (i = 0; i < field.length; i++) {
            if (field[i].value != '') {
                sum ++;
            }
        }
        if ((sum < minVal) || (sum > maxVal)) {
            alert(errMsg);
            highlightBg(id)
            field[0].focus();
            return false;
        }
        return true;
    }


    function createNumberValidator(name, fieldName) {
        validators[validators.length] = function() {
            var msg = "Please specify a valid number!";
            var val = "";
            if (document.all[name] == null) {
                return true;
            }
            if (document.all[name].type == "text") {
                val = document.all[name].value;
            }
            if (val == '' || isNaN(val)) {
                alert(msg);
                document.all[name].focus();
                return false;
            }
            return true;
        }
    }

    function validate() {
        var i;
        for (i = 0; i < validators.length; i++) {
            if (!validators[i]()) {
                return false;
            }
        }

        return true;
    }

}
function isExist(name) {
    return document.getElementsByName(name) != null && document.getElementsByName(name).length > 0;
}

var EmailName = null;
function validateSpecialEmail(str) {
    EmailName = str;
}
function validateSpecial() {
    if (EmailName != null && EmailName.length > 0) {
        var email = document.all[EmailName];
        if (!isEmail(email.value)) {
            highlightBg(EmailName.substring(EmailName.lastIndexOf("_") + 1, EmailName.length))
            alert("Email is invalid !");
            email.focus();
            return false;
        }
    }
    return true;
}
//emailToValidate
function isEmail(str) {
    var emailLength = str.length;
    var atPos = str.indexOf('@');
    var firstDotPos = str.indexOf('.');
    var lastDotPos = str.lastIndexOf('.');
    if (emailLength < 7) {
        return false;
    } // ("x@xx.xx")
    if (atPos < 1) {
        return false;
    }
    if (firstDotPos < 1) {
        return false;
    }
    if (atPos == emailLength - 1) {
        return false;
    }
    if (lastDotPos >= emailLength - 2) {
        return false;
    }

    if (str.charAt(atPos - 1) == '.' || str.charAt(atPos + 1) == '.') {
        return false;
    }
    return true;
}

var agentIE = 1;
var agentFF = 2;
function getUserAgent() {
    var agt = navigator.userAgent.toLowerCase();
    return agt.indexOf("msie") != -1 ? agentIE : agentFF;
}

/*
 arr -  an Array of question IDs to be hidden or shown
 atr - current selected listValueID
 listValues - listValueIDs that when clicked must show (un-hide) questions in arr
 */
function hide_show_question(arr, atr, listValues) {

    var tbl = "block";
    if (window.opera != null) {
        tbl = "table-row";
    } else {
        var agt = navigator.userAgent.toLowerCase();
        isIE = (agt.indexOf("msie") != -1);
        tbl = isIE ? "block" : "table-row";
    }
    if (typeof listValues == 'undefined' || listValues == null) {
        listValues = "yes";
    }
    var display = listValues.indexOf(atr) >= 0 ? tbl : "none";
    var hide = listValues.indexOf(atr) < 0;
    var disabled = listValues.indexOf(atr) < 0;

    for (i = 0; i < arr.length; i++) {
        if (i >= 0) {
            var elemName = "question_" + arr[i];
            //document.getElementsByName(elemName)[0].disabled = true;
            if (validationElemNames.indexOf(elemName + ",") >= 0) {
                if (hide) {
                    removeRequiredValidator(elemName);
                    document.getElementById("rowid_question_" + arr[i]).style.display = "none";
                } else {
                    reCreateRequiredValidator(elemName);
                    document.getElementById("rowid_question_" + arr[i]).style.display = "table-row";
                }
            } else {

                if (hide) {
                    removeRequiredValidator(elemName);
                    if (arr[i].indexOf("14110") != -1) {
                        document.getElementsByName("question_14110")[0].value = "";
                    }
                    document.getElementById("rowid_question_" + arr[i]).style.display = "none";
                } else {
                    reCreateRequiredValidator(elemName);
                    document.getElementById("rowid_question_" + arr[i]).style.display = tbl;
                }
            }
        }
    }
}

function doDisable(obj) {
    //    var obj = document.all[name];
    var atr = null;
    if (obj.tagName.toLowerCase() == "input") {
        atr = obj.nextSibling.nodeValue.toLowerCase();
    }
    else {
        if (obj.tagName.toLowerCase() == "select") {
            for (var i = 0; i < obj.childNodes.length; i++) {
                if (obj.childNodes[i].selected) {
                    atr = obj.childNodes[i].childNodes[0].nodeValue.toLowerCase();
                    break;
                }
            }
        }
    }
    if (!obj.referenceObjects) {
        return;
    }

    if (atr == null || atr != "yes" && atr != "increase" && atr != "decrease" && atr != "no" && atr != "don't know" && atr != "n/a" && atr != "stay the same"
            && atr != "(b) rely entirely on third party fund managers" && atr != "(a) manage some or all portfolios in-house"
            && atr != "rely on the prime broker" && atr != "do it ourselves" && atr != "both"
            && atr != "yes, i receive reports directly from this fund manager" && atr != "no, i rely entirely on third parties" && atr != "yes, from both") {
        var bool = obj.value == "0" || obj.value == "" || obj.value.toLowerCase().indexOf("please select") > -1;
        for (var i = 0; i < obj.referenceObjects.length; i++) {
            var o = obj.referenceObjects[i];
            if (bool) {
                o.do_Enable();
            }
            else {
                o.do_Disable();
            }
            delete o;
        }
        return;
    } else if (atr == "yes, i receive reports directly from this fund manager" || atr == "no, i rely entirely on third parties" || atr == "yes, from both"/*for IPE Survey Only*/) {
        var quest = 1;
        for (var i = 0; i < obj.referenceObjects.length; i++) {
            var o = obj.referenceObjects[i];
            if (o != null) {
                if (atr == "yes, i receive reports directly from this fund manager") {
                    o.do_Enable();
                    o[0].validate = true;
                } else if (atr == "no, i rely entirely on third parties") {
                    o.do_Disable();
                } else if (atr == "yes, from both") {
                    if (quest != obj.referenceObjects.length) {
                        o.do_Disable();
                    } else {
                        o.do_Enable();
                        o[0].validate = true;
                    }

                }
            }
            quest++;
            delete o;
        }
        return;
    }
    else {
        if (atr == "yes" || atr == "increase" || atr == "decrease"
                || atr == "(a) manage some or all portfolios in-house"/*for IPE Survey Only*/
                || atr == "rely on the prime broker" || atr == "do it ourselves" || atr == "both") {
            for (var i = 0; i < obj.referenceObjects.length; i++) {
                var o = obj.referenceObjects[i];
                if (o != null) {
                    if (isExist(o.name)) {
                        if (obj.name.indexOf("7799") > -1 || obj.name.indexOf("13790") > -1 || o.name.indexOf("19844") > -1 || o.name.indexOf("19871") > -1 || o.name.indexOf("19952") > -1 || o.name.indexOf("19872") > -1 || o.name.indexOf("19953") > -1 || o.name.indexOf("19962") > -1 || o.name.indexOf("19568") > -1 || o.name.indexOf("19650") > -1 || o.name.indexOf("19569") > -1 || o.name.indexOf("19651") > -1 || o.name.indexOf("19759") > -1) {
                            o.do_Disable();
                            o[0].validate = false;
                        } else if (obj.name.indexOf("20560") > -1) {
                            if (o.name.indexOf("20561") > -1 || o.name.indexOf("20562") > -1 || o.name.indexOf("20563") > -1 || o.name.indexOf("20644") > -1 || o.name.indexOf("20564") > -1 || o.name.indexOf("20645") > -1 || o.name.indexOf("20654") > -1 || o.name.indexOf("20566") > -1) {
                                o.do_Enable();
                                o.validate = true;
                                document.getElementsByName("question_20565")[0].disabled = false;
                            }
                        } else if (obj.name.indexOf("20562") > -1) {
                            if (o.name.indexOf("20561") > -1 || o.name.indexOf("20562") > -1 || o.name.indexOf("20563") > -1 || o.name.indexOf("20644") > -1 || o.name.indexOf("20564") > -1 || o.name.indexOf("20645") > -1 || o.name.indexOf("20654") > -1 || o.name.indexOf("20566") > -1) {
                                o.do_Disable();
                                o.validate = false;
                                document.getElementsByName("question_20565")[0].disabled = true;
                            }
                        } else if (obj.name.indexOf("20801") > -1) {
                            if (o.name.indexOf("20802") > -1 || o.name.indexOf("20877") > -1 || o.name.indexOf("20803") > -1 || o.name.indexOf("20878") > -1 || o.name.indexOf("20887") > -1 || o.name.indexOf("20953") > -1) {
                                o.do_Disable();
                                o.validate = false;
                                document.getElementsByName("question_20804")[0].disabled = true;
                            }
                        } else {
                            o.do_Enable();
                            if (o.name.indexOf("20800") > -1) {
                                document.getElementsByName("question_20804")[0].disabled = false;
                            }
                        }
                    } else {
                        if (obj.name.indexOf("7799") > -1 || obj.name.indexOf("13790") > -1) {
                            o.do_Disable();
                            o[0].validate = false;
                        } else if (o[0].name.indexOf("20561") > -1 || o[0].name.indexOf("20562") > -1) {
                            o.do_Enable();
                            document.getElementsByName("question_20565")[0].disabled = false;
                        } else {
                            o.do_Enable();
                            if (o[0].name.indexOf("20800") > -1) {
                                document.getElementsByName("question_20804")[0].disabled = false;
                            }
                        }
                    }
                }
                delete o;
            }
            return;
        } else {
            if (atr == "no" || atr == "don't know" || atr == "n/a" || atr == "stay the same"
                    || atr == "(b) rely entirely on third party fund managers"/*for IPE Survey Only*/) {
                for (var i = 0; i < obj.referenceObjects.length; i++) {
                    var o = obj.referenceObjects[i];
                    if (o != null) {
                        if (isExist(o.name)) {
                            if (obj.name.indexOf("7799") > -1 || obj.name.indexOf("13790") > -1 || o.name.indexOf("19844") > -1 || o.name.indexOf("19871") > -1 || o.name.indexOf("19952") > -1 || o.name.indexOf("19872") > -1 || o.name.indexOf("19953") > -1 || o.name.indexOf("19962") > -1 || o.name.indexOf("19568") > -1 || o.name.indexOf("19650") > -1 || o.name.indexOf("19569") > -1 || o.name.indexOf("19651") > -1 || o.name.indexOf("19759") > -1) {
                                o.do_Enable();
                                o[0].validate = true;
                            } else if (obj.name.indexOf("20560") > -1) {
                                if (o.name.indexOf("20561") > -1 || o.name.indexOf("20562") > -1 || o.name.indexOf("20563") > -1 || o.name.indexOf("20644") > -1 || o.name.indexOf("20564") > -1 || o.name.indexOf("20645") > -1 || o.name.indexOf("20654") > -1 || o.name.indexOf("20566") > -1) {
                                    o.do_Disable();
                                    o.validate = false;
                                    document.getElementsByName("question_20565")[0].disabled = true;
                                }
                            } else if (obj.name.indexOf("20562") > -1) {
                                if (o.name.indexOf("20561") > -1 || o.name.indexOf("20562") > -1 || o.name.indexOf("20563") > -1 || o.name.indexOf("20644") > -1 || o.name.indexOf("20564") > -1 || o.name.indexOf("20645") > -1 || o.name.indexOf("20654") > -1 || o.name.indexOf("20566") > -1) {
                                    o.do_Enable();
                                    o.validate = true;
                                    document.getElementsByName("question_20565")[0].disabled = false;
                                }
                            } else if (obj.name.indexOf("20801") > -1) {
                                if (o.name.indexOf("20802") > -1 || o.name.indexOf("20877") > -1 || o.name.indexOf("20803") > -1 || o.name.indexOf("20878") > -1 || o.name.indexOf("20887") > -1 || o.name.indexOf("20953") > -1) {
                                    o.do_Enable();
                                    o.validate = false;
                                    document.getElementsByName("question_20804")[0].disabled = false;
                                }
                            } else {
                                o.do_Disable();
                                if (o.name.indexOf("20800") > -1) {
                                    document.getElementsByName("question_20804")[0].disabled = true;
                                }
                            }
                        } else {
                            if (obj.name.indexOf("7799") > -1 || obj.name.indexOf("13790") > -1) {
                                o.do_Enable();
                                o.validate = true;
                            } else if (o[0].name.indexOf("20561") > -1 || o[0].name.indexOf("20562") > -1) {
                                o.do_Disable();
                                document.getElementsByName("question_20565")[0].disabled = true;
                            } else {
                                o.do_Disable();
                                if (o[0].name.indexOf("20800") > -1) {
                                    document.getElementsByName("question_20804")[0].disabled = true;
                                }
                            }
                        }
                    }
                    delete o;
                }
                return;
            }
        }
    }
}

function isUndefined(x) {
    return x == null && x !== null;
}

function checkSumTextBox(obj, arr) {
    var s = 0;
    var selCount = 0;
    for (var i = 0; i < arr.length; i++) {
        var elem = document.getElementsByName("question_" + arr[i])[0];
        var elemText = elem.text;
        if (!isNaN(parseInt(elemText))) {
            s += parseInt(elemText);
        }
        if (elem.text) {
            selCount++;
        }
    }
    var tekst = elem.text;
    s += parseInt(tekst);
    if (selCount == arr.length && s != 100) {
        alert("Please note that the numbers should add up to 100%");
        obj.selectedIndex = 0;
        obj.focus();
    }
}
function checkSum(obj, arr) {
    var s = 0;
    var selCount = 0;
    for (var i = 0; i < arr.length; i++) {
        var elem = document.getElementsByName("question_" + arr[i])[0];
        var elemText = elem.options[elem.selectedIndex].text;
        var tVal = elemText.substring(0, elemText.indexOf('%'));
        if (!isNaN(parseInt(tVal))) {
            s += parseInt(tVal);
        }
        if (elem.options[elem.selectedIndex].value != 0) {
            selCount++;
        }
    }
    var tekst = obj.options[obj.selectedIndex].text;
    var tekstVal = tekst.substring(0, tekst.indexOf('%'));
    s += parseInt(tekstVal);
    if (selCount == arr.length && s != 100) {
        alert("Please note that the numbers should add up to 100%");
        obj.selectedIndex = 0;
        obj.focus();
    }
}

function checkValuesSelect(arr) {
    validators[validators.length] = function() {
        var s = 0;
        var bol = false;
        for (var i = 0; i < arr.length; i++) {
            var elem = document.getElementsByName(arr[i])[0];
            var elemText = elem.options[elem.selectedIndex].text;
            if (elemText != '0') {
                bol = true;
                break;
            }
        }
        if (bol) {
            if (arr[0].indexOf("question_12179") != -1) {
                var leng = arr.length / 2;
                for (var i = 0; i < leng; i++) {
                    var elem = document.getElementsByName(arr[i])[0];
                    var elemText = elem.options[elem.selectedIndex].text;
                    var tVal = elemText.substring(0, elemText.indexOf('%'));
                    if (!isNaN(parseInt(tVal))) {
                        s += parseInt(tVal);
                    }
                }
                if (s == 100) {
                    return true;
                } else {

                    if (arr[0].indexOf("question_12179") != -1) {
                        document.getElementById(arr[0]).parentNode.style.background = "red";
                    }

                    alert("Please note that the numbers should add up to 100%");
                    document.getElementsByName(arr[0])[0].focus();
                    return false;
                }
            } else {
                for (var i = 0; i < arr.length; i++) {
                    var elem = document.getElementsByName(arr[i])[0];
                    var elemText = elem.options[elem.selectedIndex].text;
                    var tVal = elemText.substring(0, elemText.indexOf('%'));
                    if (!isNaN(parseInt(tVal))) {
                        s += parseInt(tVal);
                    }
                }
                if (s == 100) {
                    return true;
                } else {

                    if (arr[0].indexOf("question_12179") != -1) {
                        document.getElementById(arr[0]).parentNode.style.background = "red";
                    }

                    alert("Please note that the numbers should add up to 100%");
                    document.getElementsByName(arr[0])[0].focus();
                    return false;
                }
            }

        }
        return true;
    }
}

function enableBrokerElem(obj, brokerElem) {
    var elems = document.getElementsByName(brokerElem);
    for (var i = 0; i < elems.length; i++) {
        var elemValue = elems[i].value;
        if (elemValue == obj.value) {
            elems[i].disabled = !obj.checked;
            if (!obj.checked) {
                elems[i].checked = false;
            }
        }
    }
}

function doDisableEnable(obj, listValue, questions, doDisable) {
    if (obj.value == listValue) {
        for (var i = 0; i < questions.length; i++) {
            var q = document.getElementsByName(questions[i]);
            if (obj.checked == doDisable) {
                doDisableEnableElem(q, true);
            }
            else {
                doDisableEnableElem(q, false);
            }
        }
    }
}

function doDisableEnableElem(obj, status) {
    if (obj.type == "text" || obj.type == "textarea" || obj.type == "select-one") {
        obj.disabled = status;
    } else {
        if (obj.length) {
            for (var i = 0; i < obj.length; i++) {
                obj[i].disabled = status;
            }
        }
    }
}

var doDisableEnables = new Array();

function addDoDisableEnables(lv_arr, q_arr, qname, bool) {
    doDisableEnables[doDisableEnables.length] = function() {
        var obj = document.all[qname];
        var chbool = null;
        for (var i = 0; i < obj.length; i++) {
            if (contains(lv_arr, obj[i].value)) {
                if (!(chbool != null && chbool) || !bool) {
                    chbool = obj[i].checked;
                }
                for (var j = 0; j < q_arr.length; j++) {
                    var qobj = document.getElementsByName(q_arr[j]);
                    for (var k = 0; k < qobj.length; k++) {
                        qobj[k].disabled = bool ? chbool : !chbool;
                    }
                }
            }
        }
    }
}

function contains(arr, val) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] == val) {
            return true;
        }
    }
    return false;
}

function validateCheckMinMax(obj_id, minVal, maxVal) {
    validators[validators.length] = function() {
        var elem = document.getElementsByName('question_' + obj_id);
        var msg = '';
        var sum = 0;
        if (maxVal != null && minVal != null && maxVal != 0 && minVal != 0 && maxVal != 1000000 && minVal != -1) {
            msg = 'Please choose at least ' + minVal + ' but no more than ' + maxVal + ' options';
        }
        else {
            if (minVal != null && minVal != 0 && minVal != -1) {
                msg = 'Please choose at least ' + minVal + ' options';
                maxVal = 1000000;
            }
            else {
                msg = 'Please choose but no more than ' + maxVal + ' options';
                minVal = -1;
            }
        }
        for (var i = 0; i < elem.length; i++) {
            if (elem[i].checked) {
                sum ++;
            }
        }
        if (sum < minVal || sum > maxVal) {
            alert(msg);
            elem[0].focus();
            //highlightBg(elem[0]);
            return false;
        }
        return true;
    }
}

function checkSumChange(self, arr) {
    var doubleNum = /^[0-9]+\.[0-9]+$/;
    var intNum = /^[0-9]+$/
    var s = 0;
    if (self.value == null || self.value == "") {
        return true;
    }
    if (self.value.match(doubleNum) || self.value.match(intNum)) {
        if (parseFloat(self.value) <= 100) {
            if (arr[0] = '0' && arr.length == 1) {
                return true;
            }
            for (var i = 0; i < arr.length; i++) {
                var elem = document.getElementsByName(arr[i])[0];
                if (!isNaN(parseFloat(elem.value))) {
                    s += parseFloat(elem.value);
                }
            }
            s += parseFloat(self.value)
            if (s <= 100) {
                return true;
            }
            else {
                alert("Please note that the numbers should add up to 100%");
                self.value = "";
                self.focus();
                return false;
            }
        } else {
            alert("Please note that the numbers should add up to 100%");
            self.value = "";
            self.focus();
            return false;
        }
    }
    else {
        alert("Please enter only number");
        self.value = "";
        self.focus();
        return false;
    }
}

function isDisable(self, count) {
    var self_notes = document.getElementsByName(self.name + "_notes");
    if (self_notes[count].disabled == true) {
        self_notes[count].disabled = false;
    }
    else {
        self_notes[count].disabled = true;
    }
}

function validateIsNumber(self) {
    var doubleNum = /^[0-9]+\.[0-9]+$/;
    var intNum = /^[0-9]+$/
    var s = 100;
    if (self.value == null || self.value == "") {
        return true;
    }
    if (self.value.match(doubleNum) || self.value.match(intNum)) {
        if (parseFloat(self.value) <= 100) {
            return true;
        }
        else {
            alert("Please enter only number and not more than 100%");
            self.value = "";
            self.focus();
            return false;
        }
    }
    else {
        alert("PLease enter only number and not more than 100%");
        self.value = "";
        self.focus();
        return false;
    }

}

function checkEditBoxSum(obj_name) {
    validators[validators.length] = function() {
        var s = 0,k = 0;
        var elem = document.getElementsByName(obj_name + "_notes");
        var arr = new Array();
        for (var i = 0; i < elem.length; i++) {
            if (elem[i].disabled == false) {
                arr[k++] = elem[i];
            }
        }
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].value != "" && (s + parseFloat(arr[i].value) <= 100)) {
                s += parseFloat(arr[i].value);
            }
            else {
                alert("PLease enter only number and not more than 100%");
                arr[i].focus();
                return false;
            }
        }
        return true;
    }

}

function validateIntDouble(self, params) {
    var doubleNum = /^[0-9]+\.[0-9]+$/;
    var intNum = /^[0-9]+$/
    if (self.value == null || self.value == "") {
        return true;
    }
    if (params == "int") {
        if (self.value == "" || self.value.match(intNum)) {
            return true;
        }
        else {
            alert("Please enter only integer number");
            self.value = "";
            self.focus();
            return false;
        }
    }
    else {
        if (params == "double") {
            if (self.value == "" || self.value.match(intNum) || self.value.match(doubleNum)) {
                return true;
            }
            else {
                alert("Please enter only number");
                self.value = "";
                self.focus();
                return false;
            }
        }
    }
}

function firstCheckedAllDisabled(self) {
    var massiv = document.getElementsByName(self.name);
    for (var i = 1; i < massiv.length; i++) {
        if (massiv[i].disabled == true) {
            massiv[i].disabled = false;
        }
        else {
            massiv[i].disabled = true;
        }
    }
}

function expandProviders(obj) {
    var sel = document.getElementById(obj.value);
    if (sel != null) {
        sel.style.display = obj.checked ? 'block' : 'none';
    }

    obj.parentNode.style.fontWeight = obj.checked ? 'bold' : 'normal';
}

function hide_show_list_value(arr, listValue) {
    var hide = listValue == 'no';
    for (var i = 0; i < arr.length; i++) {
        var array = document.getElementsByName("question_" + arr[i]);
        for (var j = 0; j < array.length; j++) {
            if (j == 0) {
                if (hide) {
                    array[j].checked = true;
                    document.getElementsByName("question_" + arr[i] + "ED" + array[j].value)[0].style.display = 'inline';
                }
            } else {
                array[j].parentNode.style.display = hide ? 'none' : 'inline';
                if (hide) {
                    array[j].checked = false;
                    document.getElementsByName("question_" + arr[i] + "ED" + array[j].value)[0].style.display = 'none';
                    document.getElementsByName("question_" + arr[i] + "ED" + array[j].value)[0].value = '';
                }
            }
        }
    }
}

var disableSelectedOptionsObjects = new Array();

function addDisableSelectedOptions(name, arr) {
    var i = disableSelectedOptionsObjects.length;
    disableSelectedOptionsObjects[i] = new Object();
    disableSelectedOptionsObjects[i].name = name;
    disableSelectedOptionsObjects[i].arr = arr;
}

function disableSelectedOptions(name, arr) {
    var obj = document.getElementsByName(name)[0];
    var curval = obj.selectedIndex;
    var selectedIndexs = "'" + curval + "',";
    for (var l = 0; l < arr.length; l++) {
        var othObj = document.getElementsByName(arr[l])[0];
        if (othObj.selectedIndex != 0) {
            selectedIndexs += "'" + othObj.selectedIndex + "',";
        }
    }
    for (var i = 0; i < arr.length; i++) {
        var othObj = document.getElementsByName(arr[i])[0];
        for (var j = 1; j < othObj.options.length; j++) {
            othObj.options[j].disabled = othObj.selectedIndex != j && selectedIndexs.indexOf("'" + j + "'") != -1;
        }
    }
}

var disableSelectedProvNames = new Array();

function addDisableSelectedProv(name) {
    var i = disableSelectedProvNames.length;
    disableSelectedProvNames[i] = name;
}

function disableSelectedOptionsByProvider() {
    var arr = disableSelectedProvNames;
    var selectedIndexs = "";
    for (var l = 0; l < arr.length; l++) {
        var othObj = document.getElementsByName(arr[l])[0];
        if (othObj.selectedIndex != 0) {
            selectedIndexs += "'" + othObj.selectedIndex + "',";
        }
    }
    for (var i = 0; i < arr.length; i++) {
        var othObj = document.getElementsByName(arr[i])[0];
        for (var j = 1; j < othObj.options.length; j++) {
            othObj.options[j].disabled = othObj.selectedIndex != j && selectedIndexs.indexOf("'" + j + "'") != -1;
        }
    }
}


function showOtherBox(obj, listvalue, othername) {
    if (obj.type == "select-one") {
        var selected = obj.options[obj.selectedIndex].value == listvalue;
        document.all[othername].style.display = (selected ? 'inline' : 'none');
        if (obj.name == "question_12162" || obj.name == "question_12167" || obj.name == "question_12199" || obj.name == "question_12219") {
            document.getElementById("question_12162").parentNode.style.background = "#EEF3F9";
            document.getElementById("question_12167").parentNode.style.background = "#EEF3F9";
        }
        if (obj.name.indexOf("question_20352") != -1) {
            document.getElementsByName(obj.name)[0].setAttribute("id", obj.name);
            document.getElementById(obj.name).parentNode.style.background = "#EEF3F9";
        }
        if (selected) {
            document.all[othername].focus();
        }
    } else {
        if (obj.type == "radio") {
            var checked = obj.value == listvalue;
            document.all[othername].style.display = checked ? 'inline' : 'none';
            if (checked) {
                document.all[othername].focus();
            }
        } else {
            var checked = isChecked(obj.name, listvalue);
            document.all[othername].style.display = checked ? 'inline' : 'none';
            if (checked) {
                document.all[othername].focus();
            }
        }
    }
}

function loading(show) {
    if (document.getElementById("loading") != null) {
        document.getElementById("loading").style.display = show ? "block" : "none";
    }
}

function loading1(show) {
    if (document.getElementById("loading1") != null) {
        document.getElementById("loading1").style.display = show ? "block" : "none";
    }
}
