/*
Last Modified by: Kashan Ahmed
Added function "ChangeCheckBoxSelectionByID" to change checkbox selection in a specific grid. 
This function can be used for single or multiple grids on the page.
                      
Added function "ChangeRadioButtonSelection" to changed radio button selection in a grid. Only one radio button
can be selected in the grid at one time. This function can be used for multiple grids on the page.

Add function Trim to trim the leading and trailing spaces from text
*/

function ChangeCheckBoxSelectionByID(checkbox, ChildID) {
    if (checkbox.checked) {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if ((document.forms[0].elements[i].name.indexOf(ChildID) >= 0) && !(document.forms[0].elements[i].disabled)) {
                    document.forms[0].elements[i].checked = true;
                }
            }

        }
    }
    else {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if ((document.forms[0].elements[i].name.indexOf(ChildID) >= 0) && !(document.forms[0].elements[i].disabled)) {
                    document.forms[0].elements[i].checked = false;
                }
            }

        }
    }
}

function ConfirmChangeStatusWithCascade(msg) {
    var chkSelected = false;
    for (var i = 0; i < document.forms[0].elements.length; i++) {
        if (document.forms[0].elements[i].type == "checkbox") {
            if (document.forms[0].elements[i].name.indexOf("chkCascadeUpdate") == -1) {
                if (document.forms[0].elements[i].checked) {
                    chkSelected = true;
                    break
                }
            }
        }
    }
    if (chkSelected == false) {
        alert("Please select at least one record to change status.");
        return false;
    }
    else {
        var msg = window.confirm(msg);
        if (msg == false) {
            return false;
        }
    }
}

function ConfirmDelete(msg) {
    var chkSelected = false;
    for (var i = 0; i < document.forms[0].elements.length; i++) {
        if (document.forms[0].elements[i].type == "checkbox") {
            if (document.forms[0].elements[i].checked && document.forms[0].elements[i].disabled == false) {
                chkSelected = true;
                break
            }
        }
    }
    if (chkSelected == false) {
        alert("Please select at least one record.");
        return false;
    }
    else {
        var msg = window.confirm(msg);
        if (msg == false) {
            return false;
        }
    }
}

function ConfirmDelete(msg, type) {
    if (type == null) {
        var chkSelected = false;
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].checked) {
                    chkSelected = true;
                    break
                }
            }
        }
        if (chkSelected == false) {
            alert("Please select at least one record to delete.");
            return false;
        }
        else {
            var msg = window.confirm(msg);
            if (msg == false) {
                return false;
            }
        }
    }
    else {
        var msg = window.confirm(msg);
        if (msg == false) {
            return false;
        }
    }
}

function ConfirmDeleteSingle(msg) {
    var msg = window.confirm(msg);

    if (msg == false) {
        return false;
    }

    else if (msg == true)
        return true;
}

function ChangeCheckBoxSelection(checkbox) {
    if (checkbox.checked) {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDelete") >= 0) {
                    document.forms[0].elements[i].checked = true;
                }
            }

        }
    }
    else {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDelete") >= 0) {
                    document.forms[0].elements[i].checked = false;
                }
            }

        }
    }

}

function ChangeCollaborationCheckBoxSelection(checkbox) {
    if (checkbox.checked) {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkItemCollab") >= 0) {
                    document.forms[0].elements[i].checked = true;
                }
            }

        }
    }
    else {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkItemCollab") >= 0) {
                    document.forms[0].elements[i].checked = false;
                }
            }

        }
    }
}

function ChangeInternetCheckBoxSelection(checkbox) {
    if (checkbox.checked) {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDelete") >= 0) {
                    document.forms[0].elements[i].checked = true;
                }
            }

        }
    }
    else {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDelete") >= 0) {
                    document.forms[0].elements[i].checked = false;
                }
            }

        }
    }
}

function ChangeTopMenuCheckBoxSelection(checkbox) {
    if (checkbox.checked) {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDeleteTopMenu") >= 0) {
                    document.forms[0].elements[i].checked = true;
                }
            }

        }
    }
    else {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDeleteTopMenu") >= 0) {
                    document.forms[0].elements[i].checked = false;
                }
            }

        }
    }
}

function ChangeTabMenuCheckBoxSelection(checkbox) {
    if (checkbox.checked) {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDeleteTabMenu") >= 0) {
                    document.forms[0].elements[i].checked = true;
                }
            }

        }
    }
    else {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDeleteTabMenu") >= 0) {
                    document.forms[0].elements[i].checked = false;
                }
            }

        }
    }
}

function ChangeContentMenuCheckBoxSelection(checkbox) {
    if (checkbox.checked) {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDeleteContentMenu") >= 0) {
                    document.forms[0].elements[i].checked = true;
                }
            }

        }
    }
    else {
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].name.indexOf("chkDeleteContentMenu") >= 0) {
                    document.forms[0].elements[i].checked = false;
                }
            }

        }
    }
}

function ConfirmSaveProduct(msg, type) {
    if (type == null) {
        var chkSelected = false;
        for (var i = 0; i < document.forms[0].elements.length; i++) {
            if (document.forms[0].elements[i].type == "checkbox") {
                if (document.forms[0].elements[i].checked) {
                    chkSelected = true;
                    break
                }
            }
        }
        //        if (chkSelected == false) {
        //            alert("Please select at least one record to save.");
        //            return false;
        //        }
        //        else {
        var msg = window.confirm(msg);
        if (msg == false) {
            return false;
        }
        //        }
    }
    else {
        var msg = window.confirm(msg);
        if (msg == false) {
            return false;
        }
    }
}

//////////////////////////////////////////////////Added by Kashan//////////////////////////////////////////////////
function ConfirmAssignTestingFacility(msgConfirmation, chkPrefixTestingFacility, chkPrefixTestName, ddlPrefixTestingFacility, txtComments) {
    var validated = false;

    if (document.getElementById(txtComments).value.length == 0) {
        return { IsCommentValid: false };
    }

    //check if atleast one testing facility is selected
    for (var i = 0; i < document.forms[0].length; i++) {
        var element = document.forms[0].elements[i];
        if (element.type.indexOf('checkbox') != -1 && element.name.indexOf(chkPrefixTestingFacility) != -1 && element.checked) {
            validated = true;
            break;
        }
    }

    if (validated) //atleast one testing facility is selected, now check if atleast one test is selected
    {
        validated = false; //set validation to false as we need to check test name
        for (var i = 0; i < document.forms[0].length; i++) {
            var element = document.forms[0].elements[i];
            if (element.type.indexOf('checkbox') != -1 && element.name.indexOf(chkPrefixTestName) != -1 && element.checked) {
                validated = true;
                break;
            }
        }
        if (!validated) //atlease one test name is not selected
        {
            return { IsTestNameValid: false }
        }
    }
    else //atleast one testing facility is not selected
    {
        return { IsTestingFacilityValid: false }
    }

    if (validated) //Confirm if the user wants to assing system to testing facility
    {
        var msg = window.confirm(msgConfirmation);
        if (msg == false) {
            return { IsConfirmAssign: false }
        }
        else //user confirmed the action
        {
            return { IsConfirmAssign: true }
        }
    }
}

//checks if atleast one item is selected in the listbox
function ValidateSelected(sender, args) {
    var listBox = document.getElementById(sender.controltovalidate);
    sender.errormessage = "Please select atleast one item from the list.";

    var itemSelected = false;

    for (i = 0; i < listBox.options.length; i++) {
        if (listBox.options[i].selected) {
            itemSelected = true;
            break;
        }
    }
    args.IsValid = itemSelected;
}
//Use this function when there are multiple grids on the page
function ChangeCheckBoxSelectionByID(chkIDPrefix, chkSelectAllChecked) {
    for (var i = 0; i < document.forms[0].length; i++) {
        var element = document.forms[0].elements[i];
        if (element.type.indexOf('checkbox') != -1 && element.name.indexOf(chkIDPrefix) != -1) {
            document.forms[0].elements[i].checked = chkSelectAllChecked;
        }
    }
}
function ChangeRadioButtonSelection(rdoClicked, rdoIDPrefix) {
    for (var i = 0; i < document.forms[0].length; i++) {
        var element = document.forms[0].elements[i];
        if (element.type.indexOf('radio') != -1 && element.name.indexOf(rdoIDPrefix) != -1) {
            //select only the radio button which is clicked
            document.forms[0].elements[i].checked = (element.name == rdoClicked.name);
        }
    }
}

var tipTimeOut = null;//holds tip timeout reference, used to clear timeout when needed
//e = event, spandID = ID of span tag that contains the text to be displayed
//width = width of span tag (or tooltip)
function ShowTip(e,spanID, width)
{
    var posX = 0;
    var posY = 0;
    evt = e || window.event;
    
    if (evt.clientX || evt.clientY)
    {
        posX = e.clientX;
        posY = e.clientY;
    }
    else if (evt.pageX || evt.pageY)
    {
        posX = e.pageX;
        posY = e.pageY;
    }
    
    var span = document.getElementById(spanID);
    if(span != null)
    {
        if(width != null && width != '')
            span.style.width = width;
        span.style.visibility = "visible";
        span.style.left = posX + 10 + "px";
        span.onmouseover = function(){clearTimeout(tipTimeOut)};
        span.onmouseout = function(){HideTip(this.id)};
        
        target = (evt.target) ? evt.target : evt.srcElement;
        target.onmouseout = function() { tipTimeOut = setTimeout(function() { HideTip(span.id)},100) };
    }
}
function HideTip(objSpanID)
{
    document.getElementById(objSpanID).style.visibility='hidden';
}


function GetValidatedFloatNumber(number) {
    if (!isNaN(parseFloat(number)))
        return parseFloat(number);
    else
        return 0;
}
function Trim(txtBox) {
    while (txtBox.value.charAt(0) == ' ')
        txtBox.value = txtBox.value.substring(1, txtBox.value.length);
    while (txtBox.value.charAt(txtBox.value.length - 1) == ' ')
        txtBox.value = txtBox.value.substring(0, txtBox.value.length - 1);
}

//////////////////////////////////////////////////End Added by Kashan//////////////////////////////////////////////////

function CalculateFee(txtEvalFeeID, txtAddFeeID, txtPvtLabelFee, lblCalFeeID, lblTotFee, gridTable) {

    var EvalFeeID = document.getElementById(txtEvalFeeID).value;
    var AddFeeID = document.getElementById(txtAddFeeID).value;
    var PvtLabelFee = document.getElementById(txtPvtLabelFee).value;
    document.getElementById(lblCalFeeID).innerText = roundNumber((parseFloat(EvalFeeID) + parseFloat(AddFeeID) + parseFloat(PvtLabelFee)), 2);

    var CalculatedFee = 0;
    var tbl = document.getElementById(gridTable);

    var lblCalculatedFee = lblCalFeeID.substring(lblCalFeeID.lastIndexOf("_") + 1, lblCalFeeID.length);
    var lblControls = tbl.getElementsByTagName("span");
    for (i = 0; i < lblControls.length; i++) {
        if (lblControls[i].id.indexOf(lblCalculatedFee) >= 0) {
            CalculatedFee += parseFloat(lblControls[i].innerHTML);
        }
    }

    document.getElementById(lblTotFee).innerText = "$ " + roundNumber(CalculatedFee, 2);
}

function roundNumber(num, dec) {
    var result = String(Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec));
    if (result.indexOf('.') == -1)
        result = result + ".00";
    return result;
}
function DisplayOtherTextBox(ddlID, trOtherID, requiredFieldValidatorID) {
    ddl = document.getElementById(ddlID);
    trOther = document.getElementById(trOtherID);
    requiredFieldValidator = document.getElementById(requiredFieldValidatorID);
    
    if (ddl != null && trOther != null) {
        if (ddl.value == 'Other') {
            trOther.style.display = 'block';
            if(requiredFieldValidator != null)
                ValidatorEnable(requiredFieldValidator, true); 
        }
        else {
            trOther.style.display = 'none';
            if (requiredFieldValidator != null)
                ValidatorEnable(requiredFieldValidator, false); 
        }
    }
}