Tuesday, 15 August 2017

Export HTML to MS Word document

1. Below is HTML with word Header and Footer

<!doctype html>
<html>
<head>
    <script type="text/javascript" src="../Style Library/website/jQuery-2.1.4.min.js"></script>
    <script src="../Style Library/website/Print/FileSaver.js"></script>
    <script src="../Style Library/website/Print/WordExport.js"></script>
    <script>
        jQuery(document).ready(function ($) {
            $("#btnWordExport").click(function (event) {
                   $("#page-content1").wordExport();
            });
        });
    </script>
</head>
<body>
    <div class="headerContent no-print">
        <table class='no-print'>
            <tr>
                <td>
                </td>
                <td>
                    <p><input type="button" id="btnWordExport" value="Export to word" class='no-print'></p>
                </td>
            </tr>
        </table>
    </div>
    <!-------------- HTML Content With Header and Footer in document --------------->
    <div>
        <div id="page-content1">
            <html xmlns:v="urn:schemas-microsoft-com:vml"
                  xmlns:o="urn:schemas-microsoft-com:office:office"
                  xmlns:w="urn:schemas-microsoft-com:office:word"
                  xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
                  xmlns="http://www.w3.org/TR/REC-html40">
            <head>
                <meta http-equiv=Content-Type content="text/html; charset=utf-8">
                <title></title>
                <style>
                    v\:* {
                        behavior: url(#default#VML);
                    }

                    o\:* {
                        behavior: url(#default#VML);
                    }

                    w\:* {
                        behavior: url(#default#VML);
                    }

                    .shape {
                        behavior: url(#default#VML);
                    }
                </style>
                <style>
                    @page {
                        mso-page-orientation: portrait;
                        size: 21cm 29.7cm;
                        /* mso-page-orientation:portrait;
                    size: 29.7cm 21cm;*/
                        margin: 1cm 1cm 1cm 1cm;
                    }

                    @page Section1 {
                        mso-header-margin: .2in;
                        mso-footer-margin: .5in;
                        mso-header: h1;
                        mso-footer: f1;
                    }

                    div.Section1 {
                        page: Section1;
                    }

                    table#hrdftrtbl {
                        margin: 0in 0in 0in 900in;
                        width: 1px;
                        height: 1px;
                        overflow: hidden;
                    }


                    p.MsoFooter, li.MsoFooter, div.MsoFooter {
                        margin: 0in;
                        margin-bottom: .0001pt;
                        mso-pagination: widow-orphan;
                        tab-stops: center 3.0in right 6.0in;
                        font-size: 12.0pt;
                    }
                </style>
                <xml>
                    <w:WordDocument>
                        <w:View>Print</w:View>
                        <w:Zoom>100</w:Zoom>
                        <w:DoNotOptimizeForBrowser />
                    </w:WordDocument>
                </xml>
            </head>

            <body>
                <div class="Section1">
                    <p>
                        <!-----Export body ------>
                        <table id="printsplit1">
                            <tbody id="perintbodyContent1" style="font-family:Arial;"></tbody>
                        </table>
                        <!-----End Export body ------>
                    </p>
                    <br />
                    <table id='hrdftrtbl' border='0' cellspacing='0' cellpadding='0'>
                        <tr>
                            <td>
                                <div style='mso-element:header;' id=h1>
                                    <!-- HEADER-tags -->
                                    <p class=MsoHeader>

                                        <table border="0" width="100%" cellpadding="0" cellspacing="0" style="border-bottom:1px solid #736D6E">
                                            <tr>
                                                <td width="100%" align="center">
                                                    <img align="center" src='/sites/website/SiteAssets/logo4.png' crossOrigin='Anonymous' />
                                                </td>

                                            </tr>
                                        </table>


                                    </p>
                                    <!-- end HEADER-tags -->
                                </div>
                            </td>
                            <td>
                                <div style='mso-element:footer' id=f1>
                                    <table border="0" width="100%" cellpadding="0" cellspacing="0" style="border-top:1px solid #736D6E">
                                        <tr>
                                            <td width="50%" align="left">
                                                Form Set / <label id="lblFormSetNo"></label>
                                            </td>
                                            <td width="50%" align="right">
                                                <p class=MsoFooter>
                                                    <span style='mso-tab-count:2'></span>
                                                    Page <span style='mso-field-code: PAGE '>
                                                        <span style='mso-no-proof:yes'></span> from <span style='mso-field-code: NUMPAGES '></span>
                                                        <!-- end FOOTER-tags -->
                                                    </span>
                                                </p>

                                            </td>
                                        </tr>
                                    </table>

                                </div>
                                <div style='mso-element:header' id=fh1>
                                    <p class=MsoHeader><span lang=EN-US style='mso-ansi-language:EN-US'>&nbsp;<o:p></o:p></span></p>
                                </div>
                                <div style='mso-element:footer' id=ff1>
                                    <p class=MsoFooter><span lang=EN-US style='mso-ansi-language:EN-US'>&nbsp;<o:p></o:p></span></p>
                                </div>

                            </td>
                        </tr>
                    </table>
                </div>

            </body>
        </html>
    </div>
</div>
</body>
</html>


2. Generate HTML,which content has to be exported in Word Document



  // generate Document Body in HTML
function GenerateDocumentBodyHTML() {

        var singleTr = "";
        var singleContentTD = "";
        var singleTDQNO = "";
        var contentDirection = "";
        var leftPadding = "";
        if (printType == "Arabic") {
            contentDirection = ";direction:rtl;";
            leftPadding = ";padding-right:30px;";
        }
        else {
            leftPadding = ";padding-left:30px;";
        }

        //style of columns
        var leftTDACSS = "style='width:100%;vertical-align: text-top;font-family:Arial;font-size:11px;border-top: 0px;border-bottom:0px;" + leftPadding + contentDirection + "'";
        var leftTDBCSS = "style='width:0%;vertical-align: text-top;background:gray;color:white;" + contentDirection + "'";
        //data can be any format
        for (var i = 0; i < 10; i++)
        {

            var questionContentColumn1 = "hi testting";
            var questionContentColumn2 = "hi testting";

            singleContentTD = "<td " + leftTDACSS + " class='table_contentA'>" + questionContentColumn2 + "</td>";
            singleTDQNO = "<td " + leftTDBCSS + " class='table_contentB'>" + questionContentColumn1 + + "</td>";

            if (printType == "Arabic")
            {
                //add two columns in table in arabic view
                singleTr = singleTr + "<tr>" + singleContentTD + singleTDQNO + "</tr>";
            }
            else
            {
                //add two columns in table in English view
                singleTr = singleTr + "<tr>" + singleTDQNO + singleContentTD + "</tr>";
            }                  
        }
                     
        //append rows to body of table html for export functionality
        $('#perintbodyContent1').append(singleTr);
        // find img and set attribute for cross domain
        $('img').each(function () {
            $(this).attr('crossOrigin', 'Anonymous');
            var url = $(this).attr('src');
            // convert all image url to datauri
            $(this).promise(callMethod($(this))).done(function (s) {
                //do whatever you want here
            });

        });
}




function callMethod(imagepath)
{
    var url = $(imagepath).attr('src');
    var s = "";
    convertFileToDataURLviaFileReader(url, function (base64Img)
    {
        $(imagepath).attr('src', base64Img);
        s = base64Img;
    });
    return s;
}
function convertFileToDataURLviaFileReader(url, callback)
{
    var xhr = new XMLHttpRequest();
    xhr.onload = function ()
    {
        var reader = new FileReader();
        reader.onloadend = function ()
        {
            callback(reader.result);
        }
        reader.readAsDataURL(xhr.response);
    };
    xhr.open('GET', url);
    xhr.responseType = 'blob';
    xhr.send();
}



3. Below are supported js file

   <script type="text/javascript" src="../Style Library/website/jQuery-2.1.4.min.js"></script>
    <script src="../Style Library/website/Print/FileSaver.js"></script>
    <script src="../Style Library/website/Print/WordExport.js"></script>

which can be download from below link  FileSaver.js     and    WordExport.js



4. Result will be













Monday, 7 August 2017

Add Filter in HTML table header using jquery


1. If you have data in array list then copy below function and modify as per your requirement.




function ShowFinalTable()
{

    var finalQuestionArrayList = new Array();
    var questionNoArrayList = new Array();
    var finalFormSetTableArrayList = new Array();
    var itemInformationArrayList = new Array();
    var difficlityArrayList = new Array();
    var complexityArrayList = new Array();
    var conareatextArrayList = new Array();
    var subcontentareatextArrayList = new Array();
    for (var i = 0; i < preTest_formSetsQuations.length; i++)
    {
        var formSet = {};
            formSet.FormSet = "Pre-Test";
            formSet.Question = preTest_formSetsQuations[i];
            finalQuestionArrayList.push(formSet);    
    }
    for (var i = 0; i < anchor_formSetsQuations.length; i++)
    {
        var formSet = {};
        formSet.FormSet = "Anchor";
        formSet.Question = anchor_formSetsQuations[i];
        finalQuestionArrayList.push(formSet);  
    }
    for (var i = 0; i < unique_formSetsQuations.length; i++)
    {
        var formSet = {};
        formSet.FormSet = unique_formSetsQuations[i].FormSet;
        formSet.Question = unique_formSetsQuations[i].Question;
        finalQuestionArrayList.push(formSet);
    }  
    var items = completeUniqueQuestionBankArray;
    var txtquestionNo=   "<br /><select type='text' id='txtquestionNo' class='rowSearchHeader' style='display:none'  onchange='searchRows(tableFinalResult)'></select>";
    var txtFormSet = "<br /><select type='text' id='ddlFinalFormSet' class='rowSearchHeader' onchange='searchRows(tableFinalResult)'></select>";
    var txtcontentArea = "<br /><select type='text' id='txtcontentArea' class='rowSearchHeader'   onchange='searchRows(tableFinalResult)'></select>";
    var txtsubContentArea = "<br /><select type='text' id='txtsubContentArea' class='rowSearchHeader'  onchange='searchRows(tableFinalResult)'></select>";
    var txtitemInformation = "<br /><select type='text' id='txtitemInformation' class='rowSearchHeader'   onchange='searchRows(tableFinalResult)'></select>";
    var txtdifficulty = "<br /><select type='text' id='txtdifficulty' class='rowSearchHeader'    onchange='searchRows(tableFinalResult)'></select>";
    var txtcomplexity = "<br /><select type='text' id='txtcomplexity' class='rowSearchHeader'   onchange='searchRows(tableFinalResult)'></select>";



    var tbody = "<div id='mainTablearea1'><table cellpadding='0' id='tableFinalResult' cellspacing='0' border='0' id='table' class='tinytable table table-bordered'></div><thead><tr style='background-color: #16629e;color: white;font-size: 11px;'><th class='nosort'>" + $('#colRequeNo').val() + txtquestionNo + "</th><th>FormSet" + txtFormSet + "</th><th>Content Area" + txtcontentArea + "</th><th>Sub Content Area" + txtsubContentArea + "</th><th>Item Information" + txtitemInformation + "</th><th>Difficulty" + txtdifficulty + "</th><th>Complexity" + txtcomplexity + "</th></tr></thead><tbody id='searchDatafinal' style='font-size: 11px;background-color: #fff;'>";
    var tr = "<tr class='rowSearch'>";
    var questionNo = "";
    for (var i = 0; i < items.length; i++)
    {
        var indexValue = finalQuestionArrayList.findIndex(x => x.Question == items[i].ID);
        var valueOfFormSet = "";
        if (indexValue != -1)
        {
            valueOfFormSet = finalQuestionArrayList[indexValue].FormSet;
            questionNo = items[i].ID;
         
            var itemInformation = items[i].ItemInformation;
            if (itemInformation == null) {
                itemInformation = "";
            }
            var difficlity = items[i].DifficulityText;
            if (difficlity == null) {
                difficlity = "";
            }
            var complexity = items[i].ComplexityText;
            if (complexity == null) {
                complexity = "";
            }
            var conareatext = items[i].ContentAreaText;
            if (conareatext == null) {
                conareatext = "";
            }
            var subcontentareatext = items[i].SubContentAreaText;
            if (subcontentareatext == null) {
                subcontentareatext = "";
            }
            tr = tr + "<td><a>" + questionNo + " </a></td><td>" + valueOfFormSet + "</td><td>" + conareatext + "</td><td>" + subcontentareatext + "</td><td>" + itemInformation + "</td><td>" + difficlity + "</td><td>" + complexity + "</td></tr>";
       
            if (questionNoArrayList.toString().indexOf(questionNo) == -1)
            {
                questionNoArrayList.push(questionNo);
            }
         
            if (finalFormSetTableArrayList.toString().indexOf(valueOfFormSet) == -1)
            {
                finalFormSetTableArrayList.push(valueOfFormSet);
            }
            if (itemInformationArrayList.toString().indexOf(itemInformation) == -1) {
                itemInformationArrayList.push(itemInformation);
            }
            if (difficlityArrayList.toString().indexOf(difficlity) == -1) {
                difficlityArrayList.push(difficlity);
            }
            if (complexityArrayList.toString().indexOf(complexity) == -1) {
                complexityArrayList.push(complexity);
            }
            if (conareatextArrayList.toString().indexOf(conareatext) == -1) {
                conareatextArrayList.push(conareatext);
            }
            if (subcontentareatextArrayList.toString().indexOf(subcontentareatext) == -1) {
                subcontentareatextArrayList.push(subcontentareatext);
            }
        }
    }
    var completebody = tbody  +tr + "</tr></tbody></table>";
    var dvTable = $("#mainDivFinalTable");
    dvTable.html("");
    //Append HTML in Main Div Area
    dvTable.append(completebody);

    $('#txtquestionNo').append('<option value="0">Select...</option>');
    for (var index = 0; index < questionNoArrayList.length; index++)
    {
        $('#txtquestionNo').append('<option value="' + questionNoArrayList[index] + '">' +  questionNoArrayList[index] + '</option>');
    }
    $('#ddlFinalFormSet').append('<option value="0">Select...</option>');
    for (var index = 0; index < finalFormSetTableArrayList.length; index++) {
        $('#ddlFinalFormSet').append('<option value="' + finalFormSetTableArrayList[index] + '">' + finalFormSetTableArrayList[index] + '</option>');
    }
    $('#txtcontentArea').append('<option value="0">Select...</option>');
    for (var index = 0; index < conareatextArrayList.length; index++) {
        $('#txtcontentArea').append('<option value="' + conareatextArrayList[index] + '">' + conareatextArrayList[index] + '</option>');
    }
    $('#txtsubContentArea').append('<option value="0">Select...</option>');
    for (var index = 0; index < subcontentareatextArrayList.length; index++) {
        $('#txtsubContentArea').append('<option value="' + subcontentareatextArrayList[index] + '">' +  subcontentareatextArrayList[index] + '</option>');
    }
    $('#txtitemInformation').append('<option value="0">Select...</option>');
    for (var index = 0; index < itemInformationArrayList.length; index++) {
        $('#txtitemInformation').append('<option value="' + itemInformationArrayList[index] + '">' +  itemInformationArrayList[index] + '</option>');
    }
    $('#txtdifficulty').append('<option value="0">Select...</option>');
    for (var index = 0; index < difficlityArrayList.length; index++) {
        $('#txtdifficulty').append('<option value="' + difficlityArrayList[index] + '">' +  difficlityArrayList[index] + '</option>');
    }
    $('#txtcomplexity').append('<option value="0">Select...</option>');
    for (var index = 0; index < complexityArrayList.length; index++) {
        $('#txtcomplexity').append('<option value="' + complexityArrayList[index] + '">' +  complexityArrayList[index] + '</option>');
    }
 
}


2. Copy below method and change the control header according to requirement .
in below script added the dropdown in header to filter the data but if you want to change to text box then replace select with input 





function searchRows(tblId) {
    var tbl = document.getElementById('tableFinalResult');
    var headRow = tblId.rows[0];
    var arrayOfHTxt = new Array();
    var arrayOfHtxtCellIndex = new Array();

    for (var v = 0; v < headRow.cells.length; v++) {
        if (headRow.cells[v].getElementsByTagName('select')[0])
        {
            var Htxtbox = headRow.cells[v].getElementsByTagName('select')[0];
            if (Htxtbox.value != 0) {
                if (Htxtbox.value.replace(/^\s+|\s+$/g, '') != '') {
                    arrayOfHTxt.push(Htxtbox.value.replace(/^\s+|\s+$/g, ''));
                    arrayOfHtxtCellIndex.push(v);
                }
            }
        }
    }

    for (var i = 1; i < tbl.rows.length; i++) {
        tbl.rows[i].style.display = 'table-row';
        for (var v = 0; v < arrayOfHTxt.length; v++) {
            var CurCell = tbl.rows[i].cells[arrayOfHtxtCellIndex[v]];
            var CurCont = CurCell.getElementsByTagName('span')[0];
            var reg = new RegExp(arrayOfHTxt[v] + ".*", "i");
            if (!CurCont) {
                CurCont = tbl.rows[i].cells[arrayOfHtxtCellIndex[v]];
            }
            if (CurCont.innerHTML.match(reg) == null) {
                tbl.rows[i].style.display = 'none';
            }
        }
    }

}

3. Below will be result 










Wednesday, 2 August 2017

Create Dynamic HTML Table with edit functionality using jquery

1.


 <table class="table table-bordered matrixTable" id="uniqueTableMatrix">
                                                                            <thead class="matrixTableHeader">
                                                                                <tr>
                                                                                    <td rowspan='2'>Content Area</td>
                                                                                    <td rowspan='2'>No of Item</td>
                                                                                    <td rowspan='2'>Sub Area</td>
                                                                                    <td rowspan='2'>No of Item</td>
                                                                                    <td colspan='3'>Difficulty Level 1</td>
                                                                                    <td colspan='3'>Difficulty Level 2</td>
                                                                                    <td colspan='3'>Difficulty Level 3</td>
                                                                                    <td rowspan='2'>Action</td>
                                                                                </tr>
                                                                                <tr>
                                                                                    <td>C 1</td>
                                                                                    <td>C 2</td>
                                                                                    <td>C 3</td>
                                                                                    <td>C 1</td>
                                                                                    <td>C 2</td>
                                                                                    <td>C 3</td>
                                                                                    <td>C 1</td>
                                                                                    <td>C 2</td>
                                                                                    <td>C 3</td>
                                                                                </tr>
                                                                            </thead>
                                                                            <tbody id="tblBodyMatrix"></tbody>

                                                                            <tfoot class="matrixTableFooter" id="questionsMatrixTableFooter">
                                                                                <tr class="totalColumn">
                                                                                    <td class="totalCol">Total:</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol"></td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol">0</td>
                                                                                    <td class="totalCol"></td>
                                                                                </tr>
                                                                            </tfoot>
                                                                        </table>







2.


$(document).ready(function () {
  uniqeQuestions.AddMore();
    uniqeQuestions.CellChangeTotal();
    uniqeQuestions.CellMaxLengthValodation();
});



3.

var uniqeQuestions ={
AddMore:function () {
    uniqeQuestions.RemoveMatrixRow();
        $('#btnAddmoreMatrix').click(function () {
            if ($("#ddlContentArea").prop('selectedIndex') != 0) {
                var contentareaID = $('#ddlContentArea').val();
                var rowIndex = uniqeQuestions.FindRowContent(contentareaID);
                var contentItem = $('#txtAreaItem').val();
                if (uniqeQuestions.ContentAreaitemValueValidation(rowIndex, contentItem)) {
                    contentItem = $('#txtAreaItem').val();
                    if (uniqeQuestions.ValidateMatrixTotalRequiedItems()) {
                        if (uniqeQuestions.ValidateDuplicateContentAreaSubContentArea()) {
                            var contentarea = $("#ddlContentArea option:selected").text();


                            var subArea = $("#ddlSubArea option:selected").text();
                            var subAreaID = $('#ddlSubArea').val();
                            if (rowIndex.length >= 1 || rowIndex.length == null)//Content area exist in matrix
                            {

                                var trRow = "<tr class='single'><td class='rowDataSd'><label class='contentAreaID' style='display:none;'>" + contentareaID + "</label><label class='contentAreaText' style='display:none;'>" + contentarea + "</label></td><td class='rowDataSd'>" + contentItem + "</td><td class='rowDataSd'><label class='subAreaID' style='display:none;'>" + subAreaID + "</label>" + subArea + "</td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d1c1'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d1c2'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d1c3'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d2c1'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d2c2'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d2c3'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d3c1'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d3c2'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d3c3'  /></td><td><a href='#' class='remove_MatrixRow'>Remove</a></td></tr>";
                                $('#uniqueTableMatrix > tbody > tr').eq(rowIndex).after(trRow);
                            }
                            else //else if content area does not exist in matrix
                            {
                                var trRow = "<tr class='single'><td class='rowDataSd'><label class='contentAreaID' style='display:none;'>" + contentareaID + "</label><label class='contentAreaText'>" + contentarea + "</label></td><td class='rowDataSd'>" + contentItem + "</td><td class='rowDataSd'><label class='subAreaID' style='display:none;'>" + subAreaID + "</label>" + subArea + "</td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d1c1'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d1c2'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d1c3'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d2c1'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d2c2'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d2c3'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d3c1'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d3c2'  /></td><td class='rowDataSd'><input  type='number'  min='1' max='30'  class='commontextBox matrixQuestionNo cellValidation d3c3'  /></td><td><a href='#' class='remove_MatrixRow'>Remove</a></td></tr>";
                                $('#tblBodyMatrix').append(trRow);
                            }
                            uniqeQuestions.RemoveMatrixRow();
                            uniqeQuestions.CellChangeTotal();
                            uniqeQuestions.CellMaxLengthValodation();
                            uniqeQuestions.TotalRowFooter();
                         
                        }
                    }
                }
            }
            else {
                alert('Please select content area !');
            }

        });
    },
ContentAreaitemValueValidation: function (rowIndex, contentItem)
{
var flag = true;
if (rowIndex.length >= 1 || rowIndex.length == null)
{
    $('#txtAreaItem').val('');
}
else
{
    if(contentItem==null || contentItem=="")
    {
        alert('Please enter content area item value !');
        flag = false;
    }
}
return flag;
},
RemoveMatrixRow:function()
{

    $(".remove_MatrixRow").unbind().click(function ()
    {
        if (!uniqeQuestions.ShiftRowDataNextRow($(this).closest(".single")))
        {
            $(this).closest(".single").remove();
        }
        else {
            $(this).closest(".single").remove();
        }
        uniqeQuestions.ResetAllTableData();
        uniqeQuestions.TotalRowFooter();
    });

},
ShiftRowDataNextRow:function (singleRow)
{
    var cellContentAreaCell = singleRow.find('.contentAreaText');
    var cellContentAreaId = singleRow.find('.contentAreaID').text();
    var currentCellValue = singleRow.find('td')[1].innerText;
    var flag = false;
    if (!$(cellContentAreaCell).is(':hidden'))
    {    
        var nextRow = $(singleRow).next('tr.single');
        var nextContentAreaId = nextRow.find('.contentAreaID').text();
        if (nextContentAreaId == cellContentAreaId)
        {
            $(singleRow).next('tr.single').find('.contentAreaText').show();//show the content area
            var s = $(singleRow).next('tr.single').find('td'); //Shuffle  the value of Content AreaItem
            s[1].innerText = currentCellValue;
        }
        flag = true;
    }
    return flag;
},
FindRowContent:function (conterntAreaId)
{
    var rowIndex = "";
    $("#tblBodyMatrix tr").each(function ()
    {
        if (conterntAreaId ==$(this).find('.contentAreaID').html())
        {
            rowIndex = $(this).index();
        }
    });
    return rowIndex;
},
CellMaxLengthValodation:function ()
{
    $(document).on('input', '.cellValidation', function ()
    {
        var allowedDigits = 2;
        var length = $(this).val().length;
        var max = parseInt($(this).attr("max"));
        if ($(this).val() == "") {
            $(this).val("");
        }
        if ($(this).val().indexOf('.') != -1) {
            allowedDigits = 3;
        }
        if (length > allowedDigits) {
            $(this).val($(this).val().substring(1));
        }
        if ($(this).val() > max && max > 0)
        {
            $(this).val($(this).val().substring(1));
        }


    });
},
CellChangeTotal:function ()
{
    $(".matrixQuestionNo").unbind().change(function ()
    {

        var $row = jQuery(this).closest('tr');
        var $columns = $row.find('td');
        ////To Check the limit of SubArea Item and total of difficulty &complexity ///////
        var subAreaItemLimit = 0;
        var sumSubAreaItem = 0;
        var contentAreaID = "";
        var subContentAreaId = "";
        jQuery.each($columns, function (i, item)
        {
            if (i == 0)
            {
                contentAreaID = $(item).find('.contentAreaID').text();
            }
            if (i == 2)
            {
                subContentAreaId = $(item).find('.subAreaID').text();
            }
            if ($(item).find('input').length != 0)
            {
                if (i == 3)
                {
                    var itemValue = $(item).find('input').val();
                    if (itemValue == "" || itemValue == null)
                    {
                        itemValue = 0;
                    }
                    subAreaItemLimit = parseInt(itemValue);
                     
                }
                else
                {
                    var itemValue = $(item).find('input').val();
                    if (itemValue == "" || itemValue == null)
                    {
                        itemValue = 0;
                    }
                    sumSubAreaItem = parseInt(sumSubAreaItem) + parseInt(itemValue);
                }
            }
        });
        if (sumSubAreaItem > subAreaItemLimit)
        {
            if ($(this).parent('td').index() == 3)
            {
                var tableRow = $(this).parent('td').parent('tr');
                uniqeQuestions.OnSubAreaLimitChange(tableRow);
                uniqeQuestions.ResetAllTableData();
            }
            else
            {
                alert('Please check sub area item limit :' + subAreaItemLimit);
                $(this).val('');
                $(this).focus();
            }
        }
        if (sumSubAreaItem <= subAreaItemLimit)
        {
            uniqeQuestions.ValidateSubAreaItemsTotal();
            uniqeQuestions.ResetAllTableData();
        }
        uniqeQuestions.TotalRowFooter();
    });
},
FinalValidation:function ()
{
    var contentItemsTotal = 0;
    var contentSubAreaItemsTotal = 0;
    var matrixItemsTotal = 0;
    var flag = true;
    $("#uniqueTableMatrix td.totalCol").each(function (i)
    {
        if (i ==1)
        {
            if ($(this).html() != "" )
            {
                contentItemsTotal = parseInt($(this).html());
            }
        }
        if (i == 3)
        {
            if ($(this).html() != "") {
                contentSubAreaItemsTotal = parseInt($(this).html());
            }
        }
        if (i == 13)
        {
            if ($(this).html() != "") {
                matrixItemsTotal = parseInt($(this).html());
            }
        }

    });
    if(contentSubAreaItemsTotal<contentItemsTotal)
    {
        alert('Sub area item total is less than the content area item total !');
        flag = false;
    }
    else if(matrixItemsTotal<contentSubAreaItemsTotal)
    {
        alert('Your selected items is less than required items !');
        flag = false;
    }
    else if (matrixItemsTotal == 0)
    {
        alert('There is no item added in matrix table !');
        flag = false;
    }
    return flag;
},
OnSubAreaLimitChange:function (tableRow)
{
    $(tableRow).each(function ()
    {
        $('td', this).each(function ()
        {
            if ($(this).index() != 3)
            {
                $(this).find('input').val('');
            }
        });
    });
},
ResetAllTableData:function ()
{
    unique_formSetsQuations = [];
    var contentAreaId = "";
    var subContentAreaId = "";
    $("#tblBodyMatrix tr td").each(function ()
    {
        if ($(this).index() == 0)
        {
            contentAreaId = $(this).find('.contentAreaID').text();
        }
        if ($(this).index() == 2)
        {
            subContentAreaId = $(this).find('.subAreaID').text();
        }
        if ($(this).index() > 3 && $(this).index() < 13)
        {
            var difficulityComplexity = $(this).find('input').attr('class').split(' ')[3];
            var cellValue = $(this).find('input').val();
            var difficulityLevelComplexityLevel = uniqeQuestions.GetDifficulityComplexity(difficulityComplexity);
            var difficulity = difficulityLevelComplexityLevel.split('#')[0];
            var complexity = difficulityLevelComplexityLevel.split('#')[1];
            if (cellValue == null || cellValue == "")
            {
                cellValue = "";
            }
            if (cellValue != "")
            {
                var result = uniqeQuestions.MatrixRule(contentAreaId, subContentAreaId, difficulity, complexity, cellValue);
                if(result==1)
                {
                    $(this).find('input').val('');
                }
            }
        }    
    });
},
ValidateSubAreaItemsTotal:function ()
{

    var contentAreaId = "";
    var subContentAreaId = "";
    var itemsTotal = 0;
    var cellValueItemSum = 0;
    var valueChanged = false;
    var eventStop = true;
    $("#tblBodyMatrix tr").each(function ()
    {
        $('td', this).each(function ()
        {        
            if ($(this).index() == 0)
            {
                if (contentAreaId != $(this).find('.contentAreaID').text())
                {
                    itemsTotal = 0;
                    cellValueItemSum = 0;
                }  
                contentAreaId = $(this).find('.contentAreaID').text();
            }
            if ($(this).index() == 1)
            {

                if ($(this).html() != "")
                {
                    itemsTotal = parseInt($(this).html());            
                }
            }
            if ($(this).index() ==3)
            {

                var cellValue = $(this).find('input').val();
                if (cellValue == null || cellValue == "")
                {
                    cellValue = "";
                }
                if (cellValue != "")
                {
                    cellValueItemSum = cellValueItemSum + parseInt(cellValue);
                }
            }
        });
        if (itemsTotal < cellValueItemSum)
        {
            if (eventStop == true)
            {
                alert("Content sub area total can't be more than content area total ! ")
                uniqeQuestions.ClearCurrentRowCellsValue(this);
                eventStop = false;
            }
        }
     
    });
},
ClearCurrentRowCellsValue:function (tableRow)
{
    $(tableRow).each(function ()
    {
        $('td', this).each(function ()
        {
            $(this).find('input').val('');
        });
    });
},
ValidateDuplicateContentAreaSubContentArea:function ()
{
    var validationflag = true;
    var contentAreaId = "";
    var subContentAreaId = "";
    var ddlContentArea = $('#ddlContentArea').val();
    var ddlSubArea = $('#ddlSubArea').val();
    $("#tblBodyMatrix tr td").each(function ()
    {
        if ($(this).index() == 0)
        {      
            contentAreaId = $(this).find('.contentAreaID').text();
            subContentAreaId = "";
        }
        if ($(this).index() == 2)
        {
         
            subContentAreaId = $(this).find('.subAreaID').text();
        }
        if (contentAreaId == ddlContentArea && subContentAreaId == ddlSubArea)
        {
            if (validationflag)
            {
                alert("This content area and sub content area is already added in matrix  !");
                validationflag = false;
                contentAreaId = "";
            }
        }
    });
    return validationflag;
},
ValidateMatrixTotalRequiedItems:function ()
{
    var validationflag = true;
    var totalRequiredItems = parseInt($('#txtUnique').val());
    var txtAreaItem = $('#txtAreaItem').val();
    var getFooterTableTotal = 0;
    $("#questionsMatrixTableFooter tr td").each(function ()
    {
        if ($(this).index() == 1)
        {
            if ($(this).html() != "") {
                getFooterTableTotal = parseInt($(this).html());
            }
        }
     
    });
    var total = parseInt(getFooterTableTotal) + parseInt(txtAreaItem);
    if(total > totalRequiredItems)
    {
        alert("Please check the required items limit and matrix items ,You are trying to add more items than the required items !");
        validationflag = false;
    }
    return validationflag;
},
TotalRowFooter:function ()
{
    var totals = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
    var $dataRows = $("#tblBodyMatrix tr:not('.totalColumn, .titlerow')");
    $dataRows.each(function () {

        $(this).find('.rowDataSd').each(function (i) {

            var s = $(this).find('input').val();
            if ($(this).find('input').length == 0)
            {
                s = $(this).html();
            }
            if ($.isNumeric(parseInt(s))) {
           
                totals[i] += parseInt(s);
            }
        });
    });
    var itemsSum = 0;
    $("#uniqueTableMatrix td.totalCol").each(function (i)
    {
        if (i != 0 && i != 1 && i != 2 && i != 3 && i !=13)
        {
            itemsSum = itemsSum + parseInt(totals[i]);
        }
        if (i == 0)
        {
            $(this).html("Total :");
        }
        else
        {
            if (i == 2 || i ==13)
            {
                if (i == 13)
                {

                    $(this).html(itemsSum);
                }
                else
                {
                    $(this).html('');
                }
            }
            else
            {
             
                $(this).html(totals[i]);
            }
        }
     
    });

}}

Below will be result