var args = {
	"title" : "Schedule Task",
	"type" : "report",
	"dataset" : "(|ContrName|) (|EndDate|) (|Structure|StruName|) (|Unit|UnitName|)",
	"sql" : [
		{
		"query": "select TaskID, TaskName, UIDD, Summary, Imp, WbsNum, Milestone,
			CASE WHEN SubType in (TSvtSym, TSmtSym, TZbtSym) THEN SubType ELSE '' END SubType,
			ObsNum, BcwsCum, PlanLevelCode, CA, BcwpCum, Hdv, WP, AcwpCum,
			CASE WHEN ( Startt is NULL and BaselineStart is not NULL ) THEN 'Yes' ELSE 'No' END BLO,
			Evm, Bac,
			CASE WHEN ( Startt is not NULL and BaselineStart is NULL ) THEN 'Yes' ELSE 'No' END FCO,
			CASE WHEN SubType in (TCmsSym) THEN SubType ELSE '' END CM,
			Lre, CASE WHEN SubType in (TRmtSym) THEN SubType ELSE '' END RMT
			from Task inner join Project on Task.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			inner join Contract on Contract.ContrID = Period.ContrID
			where TaskID = ct_id and Period.PeriodID = cd_id",
		},
		{
		"query": "select TaskID, BaselineStart, Startt, BaselineFinish, Finish,
			EarlyStart, EarlyFinish, LateStart, LateFinish, Duration, BaselineDuration,
			TotalFloat, BlTotalFloat, Critical, BlCritical, LongestPath, BlDriving, StartVar,
			Slip, ActualStart, ActualFinish, RemainingDuration, ActualDuration, BaselinePctCmp, AssessedPctCmp, CalcPctCmp, PercentComplete
			from Task inner join Project on Task.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where TaskID = ct_id and Period.PeriodID = cd_id",
		},
		{
		"query": "select TaskID, Critical, LongestPath, TotalFloat, FreeFloat, Startt, Finish, Slip
			from Task inner join Project on Task.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where TaskID = ct_id and Period.PeriodID = cd_id",
		},
		{
		"query": "select TaskID, Critical, LongestPath, TotalFloat, FreeFloat,
			Startt, Finish, Slip
			from Task inner join Project on Task.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where UIDD = (select UIDD from Task where TaskID = ct_id)
			and Period.OrdVal - 1 = ord_id",
		},
		{
		"query": "select TaskID, Critical, LongestPath, TotalFloat, FreeFloat,
			Startt, Finish, Slip
			from Task inner join Project on Task.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where UIDD = (select UIDD from Task where TaskID = ct_id)
			and Period.OrdVal - 2 = ord_id",
		},
		{
		"query": "select TaskID, Critical, LongestPath, TotalFloat, FreeFloat,
			Startt, Finish, Slip
			from Task inner join Project on Task.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where UIDD = (select UIDD from Task where TaskID = ct_id)
			and Period.OrdVal - 3 = ord_id",
		},
		{
		"query": "select TaskID, ConstraintType, ConstraintDate, BlConstraintType, BlConstraintDate, ConstraintType2, ConstraintDate2, BlConstraintType2, BlConstraintDate2
			from Task inner join Project on Task.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where TaskID = ct_id and Period.PeriodID = cd_id",
		},
		{
		"query": "select t.TaskID, ts.UIDD, ts.TaskName, LagType, LagVal
			from TaskPred tp inner join Task t on tp.TaskID = t.TaskID
			inner join Task ts on tp.PredID = ts.TaskID
			inner join Project on t.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where t.TaskID = ct_id and Period.PeriodID = cd_id and tp.BlPred = 0",
		},
		{
		"query": "select t.TaskID, t.UIDD, ts.TaskName, LagType, LagVal
			from TaskPred tp inner join Task t on tp.TaskID = t.TaskID
			inner join Task ts on tp.PredID = ts.TaskID
			inner join Project on t.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where t.TaskID = ct_id and Period.PeriodID = cd_id and tp.BlPred = 1",
		},
		{
		"query": "select t.TaskID, ts.UIDD, ts.TaskName, LagType, LagVal
			from TaskPred tp inner join Task t on tp.PredID = t.TaskID
			inner join Task ts on tp.TaskID = ts.TaskID
			inner join Project on t.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where t.TaskID = ct_id and Period.PeriodID = cd_id and tp.BlPred = 0",
		},
		{
		"query": "select t.TaskID, ts.UIDD, ts.TaskName, LagType, LagVal
			from TaskPred tp inner join Task t on tp.PredID = t.TaskID
			inner join Task ts on tp.TaskID = ts.TaskID
			inner join Project on t.ProjID = Project.ProjID
			inner join Period on Project.PeriodID = Period.PeriodID
			where t.TaskID = ct_id and Period.PeriodID = cd_id and tp.BlPred = 1",
		},
		{
		"query": "select dt.TestID, dt.Title, t.UIDD, l.UIDD
			from EarnedValue
			inner join Element on Element.ElemID = EarnedValue.ElemID
			inner join altelem on altelem.ElemID = Element.ElemID
			inner join Period on Period.PeriodID = EarnedValue.PeriodID
			inner join Project prj on prj.PeriodID = Period.PeriodID
			inner join Task t on t.ProjID = prj.ProjID
			inner join DqiTask d on d.TaskID = t.TaskID left join Task l on l.TaskID = d.LinkedID
			inner join TaskLink tl on tl.TaskID = t.TaskID and tl.StruID = Element.StruID and tl.LinkVal = Element.LinkVal
			inner join DqiTitle dt on dt.TestID = d.TestID
			where EarnedValue.UnitID = un_id
			and altelem.StruID in (1, 3)
			and Period.PeriodID = cd_id
			and TestGroup in (3, 5)
			and t.TaskID = ct_id
			order by dt.TestOrder, t.UIDD, l.UIDD",
		},
		{
		"query": "select tp.TaskID, tp.PredID, e.WbsNum, prj.ProjName, t.UIDD, t.TaskName,
			p.UIDD, p.TaskName, LagVal, LagType, BlPred
			from TaskLink tl
			inner join Task t on t.TaskID = tl.TaskID
			inner join TaskPred tp on t.TaskID = tp.TaskID
			inner join Task p on p.TaskID = tp.PredID
			inner join Project prj on prj.ProjID = t.ProjID
			inner join Period per on per.PeriodID = prj.PeriodID
			inner join Element e on e.ContrID = per.ContrID and e.StruID = tl.StruID and e.LinkVal = tl.LinkVal
			inner join DqiTask d on d.TaskID = t.TaskID and d.LinkedID = tp.PredID
			where per.PeriodID = cd_id
			and e.StruID = st_id
			and t.TaskID = ct_id
			and d.TestID = 48
			order by e.ElemHier, BlPred, t.UIDD, p.UIDD",
		},
	],
};

(function() {
	'use strict';
	var em = [], tarr = args.sql[0][0], tarr1 = args.sql[1][0], trendcur = args.sql[2][0],
		trend1 = args.sql[3][0], trend2 = args.sql[4][0], trend3 = args.sql[5][0],
		constr = args.sql[6][0], fcpred = args.sql[7], blpred = args.sql[8],
		fcsucc = args.sql[9], blsucc = args.sql[10], dqilist = args.sql[11],
		oos = args.sql[12],
		i, ilen, j, jlen, val, rnull, rnullarr;

		
	em.push('<div class="rpt">');

	rnull = function (obj) {
		if( obj ) {
			for( var j = 0; j < obj.length; j++ ) {
				obj[j] = ( obj[j] == null ) ? '' : obj[j];
			}
		}
		return obj;
	};

	rnullarr = function (obj) {
		if( obj ) {
			for( var j = 0; j < obj.length; j++ ) {
				var olen = obj[j].length;
				for( var i = 0; i < olen; i++ ) {
					obj[j][i] = ( obj[j][i] == null ) ? '' : obj[j][i];
				}
			}
		}
		return obj;
	};

	rnull(tarr);
	rnull(tarr1);
	rnull(trendcur);
	rnull(trend1);
	rnull(trend2);
	rnull(trend3);
	rnull(constr);
	rnullarr(fcpred);
	rnullarr(blpred);
	rnullarr(fcsucc);
	rnullarr(blsucc);

	if( !tarr || !tarr[0] ) {
		em.push('<div class="rtitle">No task selected.</div>');
		em.push('</div>');
		return em.join('');
	}

	em.push('<div class="rtitle">');
	s = extra.title;
	if (args.sync && extra.pf && extra.pf.length) {
		s = s + ' (' + extra.pf + ')';
	}
	em.push(s);
	em.push('<br>');
	em.push('<div>Task Name: ' + tarr[1] + '</div>');
	em.push('</div>');


	em.push('<span class="rpt rtb">Task Information</span>');
	em.push('<br>'); 
	em.push('<p><table class="rpt">');
	em.push('<tr>');
	var	hdr = ['Unique ID', 'Summary Task', 'IMP'];
	for (i = 0, ilen = hdr.length; i < ilen; i++) {
		em.push('<td class="rpt ral rcgr1 rtb">' + hdr[i] + '</td>');
		em.push('<td class="rpt ral rcgr1 rtb">' + tarr[i+2] + '</td>');
	}
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">WBS</td>');
	em.push('<td class="rpt rnw">' + tarr[5] + '</td>');
	em.push('<td class="rpt rnw">Milestone</td>');
	em.push('<td class="rpt rnw">' + tarr[6] + '</td>');
	em.push('<td class="rpt rnw">SubType</td>');
	em.push('<td class="rpt rnw">' + tarr[7] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">OBS</td>');
	em.push('<td class="rpt rnw">' + tarr[8] + '</td>');
	em.push('<td class="rpt rnw">BCWS</td>');
	em.push('<td class="rpt rnw">' + tarr[9] + '</td>');
	em.push('<td class="rpt rnw">PlanLevelCode</td>');
	em.push('<td class="rpt rnw">' + tarr[10] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">CA</td>');
	em.push('<td class="rpt rnw">' + tarr[11] + '</td>');
	em.push('<td class="rpt rnw">BCWP</td>');
	em.push('<td class="rpt rnw">' + tarr[12] + '</td>');
	em.push('<td class="rpt rnw">HDV</td>');
	em.push('<td class="rpt rnw">' + tarr[13] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">WP</td>');
	em.push('<td class="rpt rnw">' + tarr[14] + '</td>');
	em.push('<td class="rpt rnw">ACWP</td>');
	em.push('<td class="rpt rnw">' + tarr[15] + '</td>');
	em.push('<td class="rpt rnw">Baseline Only</td>');
	em.push('<td class="rpt rnw">' + tarr[16] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">EVM</td>');
	em.push('<td class="rpt rnw">' + tarr[17] + '</td>');
	em.push('<td class="rpt rnw">BAC</td>');
	em.push('<td class="rpt rnw">' + tarr[18] + '</td>');
	em.push('<td class="rpt rnw">Forecast Only</td>');
	em.push('<td class="rpt rnw">' + tarr[19] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Contract Milestone</td>');
	em.push('<td class="rpt rnw">' + tarr[20] + '</td>');
	em.push('<td class="rpt rnw">EAC</td>');
	em.push('<td class="rpt rnw">' + tarr[21] + '</td>');
	em.push('<td class="rpt rnw">Resource Mitigation Task</td>');
	em.push('<td class="rpt rnw">' + tarr[22] + '</td>');
	em.push('</tr>');
	em.push('</table>');


	em.push('<br>'); 


	em.push('<p><table class="rpt">');
	em.push('<tr>');
	em.push('<td></td>');
	em.push('<td class="rpt ral rcgr1 rtb">Baseline</td>');
	em.push('<td class="rpt ral rcgr1 rtb">Forecast</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Start</td>');
	em.push('<td class="rpt rnw">' + tarr1[1] + '</td>');
	em.push('<td class="rpt rnw">' + tarr1[2] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Finish</td>');
	em.push('<td class="rpt rnw">' + tarr1[3] + '</td>');
	em.push('<td class="rpt rnw">' + tarr1[4] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Early Start</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[5] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Early Finish</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[6] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Late Start</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[7] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Late Finish</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[8] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Duration</td>');
	em.push('<td class="rpt rnw">' + tarr1[9] + '</td>');
	em.push('<td class="rpt rnw">' + tarr1[10] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Total Float</td>');
	em.push('<td class="rpt rnw">' + tarr1[11] + '</td>');
	em.push('<td class="rpt rnw">' + tarr1[12] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Critical</td>');
	em.push('<td class="rpt rnw">' + tarr1[13] + '</td>');
	em.push('<td class="rpt rnw">' + tarr1[14] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Longest Path</td>');
	em.push('<td class="rpt rnw">' + tarr1[15] + '</td>');
	em.push('<td class="rpt rnw">' + tarr1[16] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Start Variance</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[17] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Slip</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[18] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Actual Start</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[19] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Actual Finish</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[20] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Remaining Duration</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[21] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Actual Duration</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[22] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">% Cmp</td>');
	em.push('<td class="rpt rnw">' + tarr1[23] + '</td>');
	em.push('<td class="rpt rnw">' + tarr1[26] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Assessed % Complete</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[24] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Calc % Complete</td>');
	em.push('<td class="rpt rcgr1"></td>');
	em.push('<td class="rpt rnw">' + tarr1[25] + '</td>');
	em.push('</tr>');
	em.push('</table>');



	em.push('<br>'); 
	em.push('<span class="rpt rtb">Forecast Trends</span>');
	em.push('<br>'); 

	em.push('<p><table class="rpt">');
	em.push('<tr>');
	em.push('<td></td>');
	em.push('<td class="rpt ral rcgr1 rtb">Current</td>');
	em.push('<td class="rpt rar rcgr1 rtb">-1</td>');
	em.push('<td class="rpt rar rcgr1 rtb">-2</td>');
	em.push('<td class="rpt rar rcgr1 rtb">-3</td>');
	em.push('</tr>');

	hdr = ['Critical', 'Longest Path', 'Total Float', 'Free Float', 'Start', 'Finish', 'Slip'];
	for (i = 0, ilen = hdr.length; i < ilen; i++) {
		val = (trend1 && trend1[i+1]) ? trend1[i+1] : '';
		em.push('<tr>');
		em.push('<td class="rpt rnw">' + hdr[i] + '</td>');
		em.push('<td class="rpt rnw">' + trendcur[i+1] + '</td>');
		em.push('<td class="rpt rnw">' + val + '</td>');
		val = (trend2 && trend2[i+1]) ? trend2[i+1] : '';
		em.push('<td class="rpt rnw">' + val + '</td>');
		val = (trend3 && trend3[i+1]) ? trend3[i+1] : '';
		em.push('<td class="rpt rnw">' + val + '</td>');
		em.push('</tr>');
	}

	em.push('</table>');


	em.push('<br>'); 
	em.push('<span class="rpt rtb">Constraints</span>');
	em.push('<br>'); 

	em.push('<p><table class="rpt">');
	em.push('<tr>');
	em.push('<td></td>');
	em.push('<td class="rpt ral rcgr1 rtb">Constraint Type</td>');
	em.push('<td class="rpt ral rcgr1 rtb">Constraint Date</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Baseline Constraint #1</td>');
	em.push('<td class="rpt rnw">' + constr[3] + '</td>');
	em.push('<td class="rpt rnw">' + constr[4] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Baseline Constraint #2</td>');
	em.push('<td class="rpt rnw">' + constr[7] + '</td>');
	em.push('<td class="rpt rnw">' + constr[8] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Forecast Constraint #1</td>');
	em.push('<td class="rpt rnw">' + constr[1] + '</td>');
	em.push('<td class="rpt rnw">' + constr[2] + '</td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt rnw">Forecast Constraint #2</td>');
	em.push('<td class="rpt rnw">' + constr[5] + '</td>');
	em.push('<td class="rpt rnw">' + constr[6] + '</td>');
	em.push('</tr>');
	em.push('</table>');


	em.push('<br>'); 
	em.push('<span class="rpt rtb">Relationships</span>');
	em.push('<br>'); 
	em.push('<br>'); 

	em.push('<span class="rpt rtb">Forecast Schedule Relationships</span>');
	em.push('<p><table class="rpt">');
	em.push('<tr>');
	em.push('<td class="rpt ral rcgr1 rtb">Predecessor</td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td></td>');
	em.push('<td class="rpt ral rcgr1 rtb">Successor</td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt ral rnw">UID</td>');
	em.push('<td class="rpt ral rnw">Predecessor Name</td>');
	em.push('<td class="rpt ral rnw">Type</td>');
	em.push('<td class="rpt ral rnw">Lag</td>');
	em.push('<td></td>');
	em.push('<td class="rpt ral rnw">UID</td>');
	em.push('<td class="rpt ral rnw">Successor Name</td>');
	em.push('<td class="rpt ral rnw">Type</td>');
	em.push('<td class="rpt ral rnw">Lag</td>');
	em.push('</tr>');

	var fclen = Math.max(fcpred.length, fcsucc.length);
	for (i = 0, ilen = fclen; i < ilen; i++) {
		val = fcpred[i] || ['','','','',''];
		em.push('<tr>');
		em.push('<td class="rpt ral rnw">' + val[1] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[2] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[3] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[4] + '</td>');

		em.push('<td></td>');

		val = fcsucc[i] || ['','','','',''];
		em.push('<td class="rpt ral rnw">' + val[1] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[2] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[3] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[4] + '</td>');
		em.push('</tr>');
	}
	em.push('</table>');


	em.push('<br>'); 
	em.push('<span class="rpt rtb">Baseline Schedule Relationships</span>');

	em.push('<p><table class="rpt">');
	em.push('<tr>');
	em.push('<td class="rpt ral rcgr1 rtb">Predecessor</td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td></td>');
	em.push('<td class="rpt ral rcgr1 rtb">Successor</td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('<td class="rpt ral rcgr1 rtb"></td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="rpt ral rnw">UID</td>');
	em.push('<td class="rpt ral rnw">Predecessor Name</td>');
	em.push('<td class="rpt ral rnw">Type</td>');
	em.push('<td class="rpt ral rnw">Lag</td>');
	em.push('<td></td>');
	em.push('<td class="rpt ral rnw">UID</td>');
	em.push('<td class="rpt ral rnw">Successor Name</td>');
	em.push('<td class="rpt ral rnw">Type</td>');
	em.push('<td class="rpt ral rnw">Lag</td>');
	em.push('</tr>');

	var bllen = Math.max(blpred.length, blsucc.length);
	for (i = 0, ilen = bllen; i < ilen; i++) {
		val = blpred[i] || ['','','','',''];
		em.push('<tr>');
		em.push('<td class="rpt ral rnw">' + val[1] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[2] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[3] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[4] + '</td>');

		em.push('<td></td>');

		val = blsucc[i] || ['','','','',''];
		em.push('<td class="rpt ral rnw">' + val[1] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[2] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[3] + '</td>');
		em.push('<td class="rpt ral rnw">' + val[4] + '</td>');
		em.push('</tr>');
	}
	em.push('</table>');


	if( (oos && oos[0]) || (dqilist && dqilist[0]) ) {
		em.push('<br>'); 
		em.push('<span class="rpt rtb">DQIs</span>');
		em.push('<br>'); 
		em.push('<br>'); 

		for (i = 0, ilen = dqilist.length; i < ilen; i++) {
			em.push('<div style="font-family:sans-serif;font-size:11pt;" >' + dqilist[i][1] + '</div>');
		}

		if( oos && oos[0] ) {
			em.push('<br>'); 
			em.push('<span class="rpt rtb">Out of Sequence Relationships</span>');
			em.push('<p><table class="rpt">');
			em.push('<tr>');
			em.push('<td class="rpt ral rcgr1 rtb">WBS</td>');
			em.push('<td class="rpt ral rcgr1 rtb">PROJ</td>');
			em.push('<td class="rpt ral rcgr1 rtb">UID</td>');
			em.push('<td class="rpt ral rcgr1 rtb">Task Name</td>');
			em.push('<td class="rpt ral rcgr1 rtb">Pred UID</td>');
			em.push('<td class="rpt ral rcgr1 rtb">Pred Name</td>');
			em.push('<td class="rpt ral rcgr1 rtb">LagVal</td>');
			em.push('<td class="rpt ral rcgr1 rtb">LagType</td>');
			em.push('<td class="rpt ral rcgr1 rtb">BL</td>');
			em.push('</tr>');

			for (i = 0, ilen = oos.length; i < ilen; i++) {
				em.push('<tr>');
				val = oos[i];
				em.push('<td class="rpt ral rnw">' + val[2] + '</td>');
				em.push('<td class="rpt ral rnw">' + val[3] + '</td>');
				em.push('<td class="rpt ral rnw">' + val[4] + '</td>');
				em.push('<td class="rpt ral rnw">' + val[5] + '</td>');
				em.push('<td class="rpt ral rnw">' + val[6] + '</td>');
				em.push('<td class="rpt ral rnw">' + val[7] + '</td>');
				em.push('<td class="rpt ral rnw">' + val[8] + '</td>');
				em.push('<td class="rpt ral rnw">' + val[9] + '</td>');
				em.push('<td class="rpt ral rnw">' + val[10] + '</td>');
				em.push('</tr>');
			}
			em.push('</table>');
		}

	}

	em.push('</div>');
	return em.join('');
})();
