<script type="text/javascript">
//<![CDATA[
         //Manage Messages
         function getXDMDelayed(sheetName,factor) {
             window.setTimeout(function() {
                 getSubmissionSet(sheetName);
             }, factor * 750);
         }

         function getSubmissionSet(sheetName) {
			//https://docs.google.com/spreadsheets/d/1aOhhmBgp5xrJteHUAzr687c_J-Iz0qDgFsuZz1NbqT4/edit?usp=sharing
            var spreadsheetId = '1aOhhmBgp5xrJteHUAzr687c_J-Iz0qDgFsuZz1NbqT4';
            var url = BaseURL.sheets + spreadsheetId + '/values/' + sheetName + '?key=' + ApiKey;
            var client = new HttpClient(sheetName);
            client.get(url, _processXDMSubmissionSet);
         }

         function _processXDMSubmissionSet(response, sheetName) {
             var msgId = sheetName.split('^')[0] + '_' + sheetName.split('^')[1];
             var divId = 'div' + msgId;
             var values = JSON.parse(response).values;
             var title = values[0][0];
             var table = document.createElement('table');
             table.setAttribute('class','msgTable');
             var tableContent = _setXDMTableHeader(values);
             var level = 0;
             var exLevel = 0;
             var exclude = false;
             var testWord = "";
             var reqFlag = "";
             var value="";
             var cellStyle=""
             var colNum = values[1].length;
             var isGroupRow = true;
             var segments = new Object;
             segments.elements = new Object;
             segments.span = colNum;
             var segmentId = "";
             var elementId = "";
             for (var i=2; i < values.length; i++)
             {
                 level = (values[i][0].match(/\u21E8/g) || []).length; //number of leading arrows determines the nesting level
                 testWord = _lastWord(values[i][1].toLowerCase());
                 isGroupRow = (testWord == 'begin') || (testWord == 'end');
                 if (exclude)    //we are in an exclusion range, check for end of range
                 {
                     if ((level == exLevel) && (testWord == 'end'))
                     {
                         exclude = false;
                     }
                     continue;
                 }
                 reqFlag = (values[i][2] + "").toLowerCase();
                 if (!_required(reqFlag))
                 {
                     if (testWord == 'begin')  //start exclusion range
                     {
                        exLevel = level;
                        exclude = true;
                     }
                     if (testWord != 'end')   //catch closure of non-excluded group
                     {
                         continue;
                     }
                 }
                 tableContent = tableContent + '<tr>\n';
                 for (var j=0; j < colNum; j++)
                 {
                     value = values[i][j];
                     if (value == null)
                     {
                         value="";
                     }
                     cellStyle = '<td class="msgTable">';
                     if ( (j == 2) || j == 3)
                     {
                         cellStyle = '<td class="msgTable col' + j + '">';
                     }
                     if ( (j == 1) && isGroupRow)
                     {
                         cellStyle = '<td class="msgTable group">';
                     }
                     if ( (j == 0) && (!isGroupRow))
                     {
                         segmentId = value.substring(level).replace(/[\[\]\ {}]/g,'');
                         elementId = '360X_'+ msgId + '_' + segmentId + '_' + i;
                         value = value + '<div id="Cell_' + elementId + '" class="expand" onClick="segToggle(\'' + elementId + '\')">\u229e<\/div>';
                     }
                     if (j == 4 )
                     { 
                         value = value.replace(/(?:\r\n|\r|\n)/g, '<br />');
                     }

                     tableContent = tableContent + cellStyle + value + '<\/td>\n';
                 }
                 tableContent = tableContent + '<\/tr>\n';
                 if (!isGroupRow)           //build the segment table
                 {
                     tableContent = tableContent + '<tr id="' + elementId + '" class="hide"><\/tr>\n';
                     storeSegment(segments, segmentId, elementId);
                 }
             }
             //appendPre(tableContent);
             table.innerHTML = tableContent;
             var div = document.getElementById(divId);
             div.appendChild(table);
             getSegments(segments);
         }
                 
         function _setXDMTableHeader(values) {
             var content='<tr>\n<td colspan="' + values[1].length + '" class="msgTable title">' + values[0][0] + '<\/td>\n<\/tr>\n<tr>\n';
             for (var j=0; j < values[1].length; j++)
             {
                 content = content + '<th class="msgTable col' + j + '">' + values[1][j] + '<\/th>\n';
             }
             content = content + '<\/tr>\n';
             return content;
         }
//]]>
</script>