
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.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 == "") {
//            alert("Please make sure you have answered all required questions!");
//            editbox.focus();
//            return false;
//        }
//
//    }
//
//}

function validateCheckboxes(field, errMsg, minVal, maxVal) {
    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 ((sum < minVal) || (sum > maxVal)) {
        alert(errMsg);
        field[0].focus();
        return false;
    }
    return true;
}

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;
    obj.validate = false;
}

function reCreateRequiredValidator(name) {
    var obj;
    if(typeof name == 'string')
        obj = document.all[name];
    else obj = name;
    if (obj == null) return;
    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") {
            this.disabled = true;
        } else
            if (this.length) {
                for (var i = 0; i < this.length; i++)
                    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) {
    validators[validators.length] = function() {
        var msg = "Please make sure that you have answered all required questions!";
        var val = "";
        if(document.getElementsByName(name)==null || document.getElementsByName(name).length==0 || document.getElementsByName(name)[0]==null){
            return true;
        }
        if (document.getElementsByName(name).length == 1) {
            if (document.all[name] == null) return true;
            if (document.all[name].disabled) return true;
            if (document.all[name].validate==false) return true;
            if (document.all[name].type == "text" || document.all[name].type == "textarea")
                val = document.all[name].value;
            if (document.all[name].type == "select-one")
                val = document.all[name].options[document.all[name].selectedIndex].value == '0'?''
                        :document.all[name].options[document.all[name].selectedIndex].value;
        } else if (document.getElementsByName(name)[0].type=="radio") {
            if(document.getElementsByName(name)[0].disabled) return true;
            if(document.getElementsByName(name)[0].validate==false) return true;
            return validateCheckboxes(document.all[name], "Please make sure you have answered all required questions!", 1, 32000);
        } else if (document.getElementsByName(name).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);
        } else if (document.getElementsByName(name).length > 1) {
            return validateCheckboxes(document.all[name], "Please make sure you have answered all required questions!", 1, 32000);
        }
        if (val == '') {
            alert(msg);
            document.all[name].focus();
            return false;
        }
        return true;
    }

    function validateMultipleEditbox(field, errMsg, minVal, maxVal) {
        var sum = 0;
        for (i = 0; i < field.length; i++)
        {
            if (field[i].value != '')
                sum ++;
        }
        if ((sum < minVal) || (sum > maxVal)) {
            alert(errMsg);
            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;
    }
}
var EmailName = null;
function validateSpecialEmail(str)
{
    EmailName = str;
}
function validateSpecial()
{
    if (EmailName != null && EmailName.length > 0) {
        var email = document.all[EmailName];
        //        alert("checking..."+EmailName+" - value - "+email.value);
        if (!isEmail(email.value)) {
            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;
}

function hide_show_question(arr, atr, listValue){
    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 listValue == 'undefined' || listValue == null )
        listValue = "yes";

    var stil = atr==listValue?tbl:"none";
    var disbl = atr==listValue?false:true;

    for(i=1;i<arr.length;i++){
        document.getElementsByName("question_"+arr[i])[0].disabled = disbl;
    }
    for(i=0;i<arr.length;i++){
//        if(i!=0) var elem = document.getElementsByName(("question_"+arr[i]));
//        if(elem!=null) elem.setAttribute(disabled,dis);
        document.getElementById("rowid_question_"+arr[i]).style.display = stil;
    }
}

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") {
        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" || 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 (obj.name.indexOf("7799") > -1 || obj.name.indexOf("13790") > -1) {
                o.do_Disable();
                o[0].validate = false;
            }
            else
                o.do_Enable();
            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 (obj.name.indexOf("7799") > -1 || obj.name.indexOf("13790") > -1) {
                o.do_Enable();
                o[0].validate = true;
            }
            else
                o.do_Disable();
            delete o;
        }
        return;
    }
}

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) {
            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 {
                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();
            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 ? 'block' : 'none');
        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();
    }
}