/*
Last Modified by: Kashan Ahmed
Added function LimitFileType: To limit uploading files of specified types

Added function PasteDataInGrid: To allow pasting of data from clip board to the grid. Use for Infragistics Ultrawebgrid.

Added function OnlyCurrency: To allow only valid values for currency (in textbox)
CountCharacters: Counts the specified character in a given string
               
Added function TrimCharacters: To Trim leading and trailing spaces from string.
LimitCharacters: To limit character input to a specified length.

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) {
            if (document.forms[0].elements[i].disabled == false) {
                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);
}

function TrimCharacters(inputControl, charLength) {
    if (inputControl.value.length >= charLength) {
        inputControl.value = inputControl.value.substring(0, charLength);
    }
    return true;
}
function LimitCharacters(inputControl, charLength) {
    if (inputControl.value.length >= charLength) {
        return false;
    }
    else {
        return true;
    }
}
function OnlyCurrency(evt, numberValue) {
    var e = event || evt;

    var charCode = e.which || e.keyCode;

    //allow dots "." for floating point numbers
    if (charCode == 46) {
        if (CountCharacters(numberValue, '.') >= 1) //if there is already a dot "." in field, return
            return false;
        else
            return true;
    }

    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}
function CountCharacters(inputString, character) {
    if (inputString != '' && character != '') {
        var count = 0;
        for (i = 0; i < inputString.length; i++) {
            if (inputString.charAt(i) == character)
                ++count;
        }
        return count;
    }
    return 0;
}
function PasteDataInGrid(gridID, defaultGrdFirstActiveCell) {
    var grd = igtbl_getGridById(gridID);
    var grdActiveCell = grd.getActiveCell();
    if (!grdActiveCell)//If no cell is selected in grid, paste data in first cell
    {
        var rowsColl = grd.Rows;
        row = rowsColl.getRow(0);
        grdActiveCell = row.getCellFromKey(defaultGrdFirstActiveCell);
        grdActiveCell.activate();
        grdActiveCell.select();
        grd.paste();
    }
    else //If any cell is selected, starting pasting from that cell
    {
        grdActiveCell.activate();
        grdActiveCell.select();
        grd.paste();
    }
    return false;
}
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);
        }
    }
}
function DisplayOtherTextBoxFromRadioButtonList(ddlID, trOtherID, requiredFieldValidatorID) {
    ddl = document.getElementById(ddlID);
    trOther = document.getElementById(trOtherID);
    requiredFieldValidator = document.getElementById(requiredFieldValidatorID);
    var otherItemFound = false;

    if (ddl != null && trOther != null) {
        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(ddlID) != -1)
            {
                //check which radio button is checked from the list
                if (document.forms[0].elements[i].checked) {
                    if (document.forms[0].elements[i].value == 'Other') {
                        trOther.style.display = 'block';
                        if (requiredFieldValidator != null)
                            ValidatorEnable(requiredFieldValidator, true);
                        otherItemFound = true;
                        //break;
                    }
                    else {
                        trOther.style.display = 'none';
                        if (requiredFieldValidator != null)
                            ValidatorEnable(requiredFieldValidator, false);
                    }
                }
            }

            if (otherItemFound == true)
                break;
        }
    }
}

function LimitFileType(form, file, extensions) 
{
    if (extensions != '') //restrict file types
    {
        extArray = extensions.split(',');
        allowSubmit = false;
        if (!file) return;

        while (file.indexOf("\\") != -1)
            file = file.slice(file.indexOf("\\") + 1);

        ext = file.slice(file.indexOf(".")).toLowerCase();
        for (var i = 0; i < extArray.length; i++) {
            if (extArray[i] == ext) { allowSubmit = true; break; }
        }
        if (allowSubmit) return true;
        else
            alert("Please only upload files that end in types:  " + (extArray.join("  ")) + "\nSelect a new "
                    + "file to upload and submit again.");
        return false;
    }
    else //no restriction
    {
        return true;
    }

}

//////////////////////////////////////////////////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 ConfirmDeleteListbox(lstbox,msg) {

    var functionReturn = false;
    var listBoxRef = document.getElementById(lstbox);
    for (var i = 0; i < listBoxRef.options.length; i++) {
        if (listBoxRef.options[i].selected) {
            functionReturn = true;
            break;
        }
    }
    if (functionReturn == true) {
        functionReturn = window.confirm(msg);
    }
    else {
        alert('Please select at least one record to delete.');
    }

    return functionReturn;
}