/*
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.

Added function Trim to trim the leading and trailing spaces from text

Added function HideShowManufacturer to hide/show options for user's role and user's right on User Management section
*/


/// Global variables added for PMM Bulk Assignment Count By Sheraz
var TotalCount = 0;
var Waterborne = 0;
var Solventborne = 0;
var HotThermoplastic = 0;
var PerformedThermoplastic = 0;
var Tape = 0;
var MultiComponents = 0;

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 PEFStep5Next(msg, hfield) {
    var msg = window.confirm(msg);
    var hfref = document.getElementById(hfield);
    if (msg == true) {
        hfref.value = "YES";
    }
    else {
        hfref.value = "NO";
    }
    return true;
}

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 ConfirmAssignTestingFacilityWithoutMsg(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) //everything validated, so return validation passed as true
    {
        return { IsValidationPassed: true }
    }
}
function ShowTestingFacilityConfirmationMsg(msgConfirmation) {
    var msg = window.confirm(msgConfirmation);
    if (msg == false) {
        return { IsConfirmAssign: false }
    }
    else //user confirmed the action
    {
        return { IsConfirmAssign: true }
    }
}
function ConfirmAssignTestingFacility(msgConfirmation, chkPrefixTestingFacility, chkPrefixTestName, ddlPrefixTestingFacility, txtComments) {
    var objResultData = ConfirmAssignTestingFacilityWithoutMsg(msgConfirmation, chkPrefixTestingFacility, chkPrefixTestName, ddlPrefixTestingFacility, txtComments)

    if (objResultData.IsValidationPassed) //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 }
        }
    }
    else {
        return objResultData;
    }
}

//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 CalculateCountforPMM(chkID, lblID, gvTestNameID, gvLabDataID) {
    var chkBox = document.getElementById(chkID);
    var r = document.getElementById(lblID);
    var Type = r.innerHTML;
    if (Type != "") {
        if (chkBox.checked) {

            TotalCount = TotalCount + 1;

            if (Type == "1a" || Type == "1b" || Type == "1c") { Waterborne = Waterborne + 1; }
            if (Type == "2a" || Type == "2b" || Type == "2c") { Solventborne = Solventborne + 1; }
            if (Type == "3a") { HotThermoplastic = HotThermoplastic + 1; }
            if (Type == "3b") { PerformedThermoplastic = PerformedThermoplastic + 1; }
            if (Type == "4a" || Type == "4b") { Tape = Tape + 1; }
            if (Type == "5a" || Type == "5b" || Type == "5c" || Type == "5d" || Type == "5e") { MultiComponents = MultiComponents + 1; }
        }
        else {
            TotalCount = TotalCount - 1;
            if (Type == "1a" || Type == "1b" || Type == "1c") { Waterborne = Waterborne - 1; }
            if (Type == "2a" || Type == "2b" || Type == "2c") { Solventborne = Solventborne - 1; }
            if (Type == "3a") { HotThermoplastic = HotThermoplastic - 1; }
            if (Type == "3b") { PerformedThermoplastic = PerformedThermoplastic - 1; }
            if (Type == "4a" || Type == "4b") { Tape = Tape - 1; }
            if (Type == "5a" || Type == "5b" || Type == "5c" || Type == "5d" || Type == "5e") { MultiComponents = MultiComponents - 1; }
        }
    }

    // for test grid
    var grid = document.getElementById(gvTestNameID);
    //variable to contain the cell of the grid
    var cell;

    if (grid.rows.length > 0) {
        //loop starts from 1. rows[0] points to the header.
        for (i = 1; i < grid.rows.length; i++) {
            //get the reference of first column
            cell = grid.rows[i].cells[2];

            //loop according to the number of childNodes in the cell
            for (j = 0; j < cell.childNodes.length; j++) {
                //if childNode type is Label

                if (cell.childNodes[j].nodeName == "SPAN") {
                    //assign the total count to the count label in test grid                    
                    cell.childNodes[j].innerHTML = TotalCount;
                }
            }
        }
    }

    /// for lab data grid
    var LabDataGrid = document.getElementById(gvLabDataID);
    //variable to contain the cell of the grid
    var cellLab;

    if (LabDataGrid.rows.length > 0) {
        //loop starts from 1. rows[0] points to the header.
        for (i = 1; i < LabDataGrid.rows.length; i++) {
            //get the reference of first column
            cellLab = LabDataGrid.rows[i].cells[2];

            //loop according to the number of childNodes in the cell
            for (j = 0; j < cellLab.childNodes.length; j++) {
                //if childNode type is Label

                if (cellLab.childNodes[j].nodeName == "SPAN") {

                    if (i == 1) { /// for Waterborne
                        cellLab.childNodes[j].innerHTML = Waterborne;
                    }
                    if (i == 2) { /// for Solventborne
                        cellLab.childNodes[j].innerHTML = Solventborne;
                    }
                    if (i == 3) { /// for perform thermoplastic
                        cellLab.childNodes[j].innerHTML = PerformedThermoplastic;
                    }
                    if (i == 4) { /// for Hot extrude thermoplastic
                        cellLab.childNodes[j].innerHTML = HotThermoplastic;
                    }
                    if (i == 5) { /// for Tape
                        cellLab.childNodes[j].innerHTML = Tape;
                    }
                    if (i == 6) { /// for Multiple Components
                        cellLab.childNodes[j].innerHTML = MultiComponents;
                    }
                }
            }
        }
    }
}

function CalculateCountforPMMHeaderClick(chkIDPrefix, chkID, gvProductsDetailID, gvTestNameID, gvLabDataID) {

    var gvProductsDetail = document.getElementById(gvProductsDetailID);
    var chkBox = document.getElementById(chkID);
    var chkSelectAllChecked = chkBox.checked;
    ChangeCheckBoxSelectionByID(chkIDPrefix, chkSelectAllChecked);

    TotalCount = 0;
    Waterborne = 0;
    Solventborne = 0;
    HotThermoplastic = 0;
    PerformedThermoplastic = 0;
    Tape = 0;
    MultiComponents = 0;

    for (i = 1; i < gvProductsDetail.rows.length; i++) {
        var cellchkBox = gvProductsDetail.rows[i].cells[8];
        for (j = 0; j < cellchkBox.childNodes.length; j++) {
            //if childNode type is Label

            if (cellchkBox.childNodes[j].nodeName == "SPAN") {
                var Type = cellchkBox.childNodes[j].innerHTML;
                if (Type != "") {
                    if (chkSelectAllChecked) {
                        TotalCount = TotalCount + 1;

                        if (Type == "1a" || Type == "1b" || Type == "1c") { Waterborne = Waterborne + 1; }
                        if (Type == "2a" || Type == "2b" || Type == "2c") { Solventborne = Solventborne + 1; }
                        if (Type == "3a") { HotThermoplastic = HotThermoplastic + 1; }
                        if (Type == "3b") { PerformedThermoplastic = PerformedThermoplastic + 1; }
                        if (Type == "4a" || Type == "4b") { Tape = Tape + 1; }
                        if (Type == "5a" || Type == "5b" || Type == "5c" || Type == "5d" || Type == "5e") { MultiComponents = MultiComponents + 1; }
                    }
                    else {
                        TotalCount = TotalCount - 1;
                        if (Type == "1a" || Type == "1b" || Type == "1c") { Waterborne = Waterborne - 1; }
                        if (Type == "2a" || Type == "2b" || Type == "2c") { Solventborne = Solventborne - 1; }
                        if (Type == "3a") { HotThermoplastic = HotThermoplastic - 1; }
                        if (Type == "3b") { PerformedThermoplastic = PerformedThermoplastic - 1; }
                        if (Type == "4a" || Type == "4b") { Tape = Tape - 1; }
                        if (Type == "5a" || Type == "5b" || Type == "5c" || Type == "5d" || Type == "5e") { MultiComponents = MultiComponents - 1; }
                    }
                }
            }
        }
    }
    if (TotalCount < 0) TotalCount = 0;
    if (Waterborne < 0) Waterborne = 0;
    if (Solventborne < 0) Solventborne = 0;
    if (HotThermoplastic < 0) HotThermoplastic = 0;
    if (PerformedThermoplastic < 0) PerformedThermoplastic = 0;
    if (Tape < 0) Tape = 0;
    if (MultiComponents < 0) MultiComponents = 0;

    // for test grid
    var grid = document.getElementById(gvTestNameID);
    //variable to contain the cell of the grid
    var cell;

    if (grid.rows.length > 0) {
        //loop starts from 1. rows[0] points to the header.
        for (i = 1; i < grid.rows.length; i++) {
            //get the reference of first column
            cell = grid.rows[i].cells[2];

            //loop according to the number of childNodes in the cell
            for (j = 0; j < cell.childNodes.length; j++) {
                //if childNode type is Label

                if (cell.childNodes[j].nodeName == "SPAN") {
                    //assign the total count to the count label in test grid                    
                    cell.childNodes[j].innerHTML = TotalCount;
                }
            }
        }
    }

    /// for lab data grid
    var LabDataGrid = document.getElementById(gvLabDataID);
    //variable to contain the cell of the grid
    var cellLab;

    if (LabDataGrid.rows.length > 0) {
        //loop starts from 1. rows[0] points to the header.
        for (i = 1; i < LabDataGrid.rows.length; i++) {
            //get the reference of first column
            cellLab = LabDataGrid.rows[i].cells[2];

            //loop according to the number of childNodes in the cell
            for (j = 0; j < cellLab.childNodes.length; j++) {
                //if childNode type is Label

                if (cellLab.childNodes[j].nodeName == "SPAN") {

                    if (i == 1) { /// for Waterborne
                        cellLab.childNodes[j].innerHTML = Waterborne;
                    }
                    if (i == 2) { /// for Solventborne
                        cellLab.childNodes[j].innerHTML = Solventborne;
                    }
                    if (i == 3) { /// for perform thermoplastic
                        cellLab.childNodes[j].innerHTML = PerformedThermoplastic;
                    }
                    if (i == 4) { /// for Hot extrude thermoplastic
                        cellLab.childNodes[j].innerHTML = HotThermoplastic;
                    }
                    if (i == 5) { /// for Tape
                        cellLab.childNodes[j].innerHTML = Tape;
                    }
                    if (i == 6) { /// for Multiple Components
                        cellLab.childNodes[j].innerHTML = MultiComponents;
                    }
                }
            }
        }
    }
}

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 for copy and paste for other modules/////////////

////////////////////////////////////paste function for all modules //////////////////////////////

function CheckClipBoard() {
    // get the clipboard text      
    var clipText = window.clipboardData.getData('Text');
    // split into rows      
    clipRows = clipText.split("\n");
    
    // split rows into columns      
    for (i = 0; i < clipRows.length; i++) {
        clipRows[i] = clipRows[i].split("\t");

    }

    clipBoardTable = document.createElement("table");
    //clipBoardTable.border = 1;
    for (i = 0; i < clipRows.length - 1; i++) {
        newRow = clipBoardTable.insertRow();
        for (j = 0; j < clipRows[i].length; j++) {
            newCell = newRow.insertCell();
            if (clipRows[i][j].length == 0) {
                newCell.innerText = ' ';
            }
            else {
                newCell.innerText = clipRows[i][j];
            }
        }
    }

    return clipBoardTable;
   
}

function PasteSelectedData(gridID, grdActiveCell) {
    //alert(CheckClipBoard());
    var grd = igtbl_getGridById(gridID);
   
    var TotalGridRows = grd.Rows.length;
    var grdActiveCell;
    var ActiveRowIndex;

    var currRow;
    if (!grd.getActiveCell()) {

        var rowsColl = grd.Rows;
        row = rowsColl.getRow(0);
        currRow = grdActiveCell;
        ActiveRowIndex = currRow.getRow().getIndex();
        
    }
    else {
        grdActiveCell = grd.getActiveCell();
        currRow = grd.getActiveCell();
        ActiveRowIndex = currRow.getRow().getIndex();
    }

    var clipboard = CheckClipBoard();
    for (i = 0; i < clipboard.rows.length; i++) {
        var columnIndex;
        if (!grdActiveCell) {
            grdActiveCell = grdActiveCell;
            //columnIndex = grdActiveCell.getElement().cellIndex;
            columnIndex = grdActiveCell.Column.getRealIndex();
        }
        else {
            //columnIndex = grdActiveCell.getElement().cellIndex;
            columnIndex = grdActiveCell.Column.getRealIndex();
        }
        
        for (j = 0; j < clipboard.rows[i].cells.length; j++) {
            if (grd.Rows.getRow(ActiveRowIndex) != null) {
                if ((grd.Rows.getRow(ActiveRowIndex).getCell(columnIndex) != null) && (grd.Rows.getRow(ActiveRowIndex).getCell(columnIndex).Column.Hidden!=true)) {
                  if (grd.Rows.getRow(ActiveRowIndex).getCell(columnIndex).isEditable()) {
                        grd.Rows.getRow(ActiveRowIndex).getCell(columnIndex).setValue(clipboard.rows[i].cells[j].innerText);
                    }
                    
                }

            }
            columnIndex++;
        }
        ActiveRowIndex++;
    }
    
    return false;
}

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();
        PasteSelectedData(gridID, grdActiveCell);
        //grd.paste();
    }
    else //If any cell is selected, starting pasting from that cell
    {
      
        grdActiveCell.activate();
        grdActiveCell.select();
        PasteSelectedData(gridID, grdActiveCell);
        //grd.paste();
    }
    return false;
}


////////////////////////////////end paste function for all modules////////////////////


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 showHideTable(chkWTesting, validator1, validator2, tbluvType) {

    var chkBox = document.getElementById(chkWTesting);
    var Validator_1 = document.getElementById(validator1);
    var Validator_2 = document.getElementById(validator2);


    var table = document.getElementById(tbluvType);  //document.getElementById(tbluvType)
    table.style.display = (chkBox.checked) ? "block" : "none";

    var status = table.style.display;
    if (status == "none") {

        ValidatorEnable(Validator_1, false);
        ValidatorEnable(Validator_2, false);
    }
    else {
        ValidatorEnable(Validator_1, true);
        ValidatorEnable(Validator_2, true);
    }

}



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;
    }

}

function HideShowManufacturer(ddlUserRightID, txtManufacturerID, ddlTestingFacilityID, ddlUserRoleID, lblManufacturerID) {
    ddlUserRight = document.getElementById(ddlUserRightID);
    txtManufacturer = document.getElementById(txtManufacturerID);
    ddlTestingFacility = document.getElementById(ddlTestingFacilityID);
    ddlUserRole = document.getElementById(ddlUserRoleID);
    lblManufacturer = document.getElementById(lblManufacturerID);

    //if user's role is testing facility
    if (ddlUserRole != null && ddlUserRole.options[ddlUserRole.selectedIndex].text.toLowerCase() == "aashto" ||
        ddlUserRole != null && ddlUserRole.options[ddlUserRole.selectedIndex].text.toLowerCase() == "no access") {
        if (lblManufacturer != null && txtManufacturer != null) {
            lblManufacturer.style.display = "inline";
            txtManufacturer.style.display = "inline";
        }
    }
    else if (ddlUserRole != null && ddlUserRole.options[ddlUserRole.selectedIndex].text.toLowerCase() == "testing facility") {
        if (ddlTestingFacility != null)
            ddlTestingFacility.style.display = "inline";
    }
    else {
        //is user's right is state or lead state
        if (ddlUserRight != null && (ddlUserRight.options[ddlUserRight.selectedIndex].text.toLowerCase() == "state" ||
                    ddlUserRight.options[ddlUserRight.selectedIndex].text.toLowerCase() == "lead state")
           ) {
            if (txtManufacturer != null && ddlTestingFacility != null) {
                txtManufacturer.style.display = "inline";
                ddlTestingFacility.style.display = "none";
                lblManufacturer.innerHTML = "Manufacturer:";
            }
        }
        else {
            if (txtManufacturer != null && ddlTestingFacility != null) {
                txtManufacturer.style.display = "none";
                ddlTestingFacility.style.display = "inline";
                lblManufacturer.innerHTML = "Testing Facility:";
            }
        }
    }
}
//////////////////////////////////////////////////End Added by Kashan//////////////////////////////////////////////////

function CalculateFee(txtEvalFeeID, txtAddFeeID, txtPvtLabelFee, lblCalFeeID, lblTotFee, gridTable) {

    //    alert("hello!!!");
    //    alert("EvalFeeID:" + EvalFeeID);
    //    alert("AddFeeID:" + AddFeeID);
    //    alert("PvtLabelFee:" + PvtLabelFee);
    //    alert("this is value:" + document.getElementById(txtEvalFeeID).value);

    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);

    //    alert("lblCalculatedFee:" + lblCalculatedFee);
    var lblControls = tbl.getElementsByTagName("span");
    for (i = 0; i < lblControls.length; i++) {
        //        alert("Inside for loop");
        if (lblControls[i].id.indexOf(lblCalculatedFee) >= 0) {
            CalculatedFee += parseFloat(lblControls[i].innerHTML);
        }
    }
    //    alert("CalculatedFee:" + CalculatedFee);
    document.getElementById(lblTotFee).innerText = "$ " + roundNumber(CalculatedFee, 2);
}



/////...CalculateFeeEdit...////

//function CalculateFeeEdit(txtEvalFeeID, txtAddFeeID, txtPvtLabelFee, lblCalFeeID, lblTotFee, gridTable) {
//    var EvalFeeID = document.getElementById(txtEvalFeeID).value;
//    var AddFeeID = document.getElementById(txtAddFeeID).value;
//    var PvtLabelFee = document.getElementById(txtPvtLabelFee).value;

//        alert("EvalFeeID:" + EvalFeeID);
//        alert("AddFeeID:" + AddFeeID);
//        alert("PvtLabelFee:" + PvtLabelFee);    
//    
//    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;
}


function CheckFilterSelected() {

    for (var i = 0; i < document.forms[0].elements.length; i++) {

        if (document.forms[0].elements[i].type == "select-multiple") {
            var LstBox = document.forms[0].elements[i];
            var LoopCounter = 0;
            var str = "";
            for (i = 0; i < LstBox.options.length; i++) {
                if (LstBox.options[i].selected) {
                    LoopCounter++;
                }
            }
            if (LoopCounter > 0) {
                return ConfirmDeleteSingle('Are you sure you want to delete the selected Filter(s)?');
            }
            else {
                alert('Please select atleast one filter to delete.');
                return false;
            }

        }
    }


}

//code for PMM FormulatedRange Min Max Value validation fot TotalSolid and Density By farooq//////////////////////

function ValidateFormulatedRange(gridId) {
    //alert(gridId);
    //get grid
    if (Page_ClientValidate()) {
        var CtrlFormulatedRange = document.getElementById(gridId);
        if (CtrlFormulatedRange != null) {

            var TotalSlideSpanTagMin = document.createElement("span");
            TotalSlideSpanTagMin.setAttribute("id", "0");

            TotalSlideSpanTagMin.style.color = "Red";

            var TotalSlideSpanTagMax = document.createElement("span");
            TotalSlideSpanTagMax.setAttribute("id", "1");

            TotalSlideSpanTagMax.style.color = "Red";

            var DensitySpanTagMin = document.createElement("span");
            DensitySpanTagMin.setAttribute("id", "2");

            DensitySpanTagMin.style.color = "Red";

            var DensitySpanTagMax = document.createElement("span");
            DensitySpanTagMax.setAttribute("id", "3");

            DensitySpanTagMax.style.color = "Red";


            TotalSlideSpanTagMin.innerHTML = "min value is required.";
            TotalSlideSpanTagMax.innerHTML = "max value is required.";
            DensitySpanTagMin.innerHTML = "min value is required.";
            DensitySpanTagMax.innerHTML = "max value is required.";

            //get value for TotalSolidMin and TotalSolidMax value

            CtrlTotalSolidMin = CtrlFormulatedRange.rows[3].cells[0].childNodes[0].childNodes[0];
            CtrlTotalSolidMax = CtrlFormulatedRange.rows[3].cells[1].childNodes[0].childNodes[0];

            //get value for DensityMin and DensityMax value

            CtrlDensityMin = CtrlFormulatedRange.rows[5].cells[0].childNodes[0].childNodes[0];
            CtrlDensityMax = CtrlFormulatedRange.rows[5].cells[1].childNodes[0].childNodes[0];
            //alert(CtrlDensityMax.value);


            var CheckValues = new Array();
            CheckValues[0] = CtrlTotalSolidMin.value;
            CheckValues[1] = CtrlTotalSolidMax.value;
            CheckValues[2] = CtrlDensityMin.value;
            CheckValues[3] = CtrlDensityMax.value;

            if (CheckValues[0] == "") {
                RemoveValidateFormulatedRange(gridId);
                CtrlFormulatedRange.rows[3].cells[0].appendChild(TotalSlideSpanTagMin);
                document.getElementById(CtrlFormulatedRange.rows[3].cells[0].childNodes[0].childNodes[0].id).focus();
                return false;
            }
            else if (CheckValues[1] == "") {
                RemoveValidateFormulatedRange(gridId);
                CtrlFormulatedRange.rows[3].cells[1].appendChild(TotalSlideSpanTagMax);
                document.getElementById(CtrlFormulatedRange.rows[3].cells[1].childNodes[0].childNodes[0].id).focus();
                return false;
            }
            else if (CheckValues[2] == "") {
                RemoveValidateFormulatedRange(gridId);
                CtrlFormulatedRange.rows[5].cells[0].appendChild(DensitySpanTagMin);
                document.getElementById(CtrlFormulatedRange.rows[5].cells[0].childNodes[0].childNodes[0].id).focus();
                return false;
            }
            else if (CheckValues[3] == "") {
                RemoveValidateFormulatedRange(gridId);
                CtrlFormulatedRange.rows[5].cells[1].appendChild(DensitySpanTagMax);
                document.getElementById(CtrlFormulatedRange.rows[5].cells[1].childNodes[0].childNodes[0].id).focus();
                return false;
            }
            else {
                return true;
            }

        }
    }


}

function RemoveValidateFormulatedRange(gridId) {
    var CtrlFormulatedRange = document.getElementById(gridId);

    var CheckValues = new Array();
    CheckValues[0] = "0";
    CheckValues[1] = "1";
    CheckValues[2] = "2";
    CheckValues[3] = "3";
    for (var i = 0; i < CheckValues.length; i++) {
        CtrlSpan = document.getElementById(CheckValues[i]);
        if (CtrlSpan != null) {
            if (CtrlSpan.innerHTML != "") {
                CtrlSpan.innerHTML = "";
                CtrlSpan.outerHTML = "";
                CtrlSpan.innerText = "";
                CtrlSpan.outerText = "";
                break;
            }
        }
        else {
            continue;
        }
    }
}

/////////////code for PMM FormulatedRange Min Max Value validation fot TotalSolid and Density end by farooq//////////////////////////////////
