var args = {
	"type": "report",
	"title": "Labor Rate Analysis",
	"dataset" : "(|ContrName|) (|EndDate|) (|Structure|StruName|) Labor Dollars [(|Element|WbsNum|) : (|Element|ElemDesc|)]",
	"sql" : [
		{
		"query": "select BcwsCum, BcwpCum, AcwpCum, EarnedValue.BcwpCum-EarnedValue.BcwsCum SV,
			EarnedValue.BcwpCum-EarnedValue.AcwpCum CV, EarnedValue.Bac-EarnedValue.BcwpCum BCWR,
			EarnedValue.Lre-EarnedValue.AcwpCum ETC, Bac, Lre EAC, EarnedValue.Bac-EarnedValue.Lre VAC,
			RateVar, EffVar, RateVarTC, EffVarTC, EarnedValue.BcwpCum-EarnedValue.AcwpCum CvCum
			from EarnedValue inner join Period on EarnedValue.PeriodID = Period.PeriodID
			inner join Contract on Period.ContrID = Contract.ContrID
			where ElemID = ce_id and Period.PeriodID = cd_id
			and UnitID = LaborDolID",
		"format": ["ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "", "", "", "", "ndd"],
		"scale": ["ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds"]
		},
		{
		"query": "select BcwsCum, BcwpCum, AcwpCum, EarnedValue.BcwpCum-EarnedValue.BcwsCum SV,
			EarnedValue.BcwpCum-EarnedValue.AcwpCum CV, EarnedValue.Bac-EarnedValue.BcwpCum BCWR,
			EarnedValue.Lre-EarnedValue.AcwpCum ETC, Bac, Lre EAC, EarnedValue.Bac-EarnedValue.Lre VAC,
			RateVar, EffVar, RateVarTC, EffVarTC
			from EarnedValue inner join Period on EarnedValue.PeriodID = Period.PeriodID
			inner join Contract on Period.ContrID = Contract.ContrID
			where ElemID = ce_id and Period.PeriodID = cd_id
			and UnitID = LaborHrID",
		"format": ["ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "ndd", "", "", "", ""],
		"scale": ["ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds"]
		}
	],
	"cols": ["BCWS", "BCWP", "ACWP", "SV", "CV", "BCWR", "ETC", "BAC", "EAC", "VAC"],
	"align": ["r", "r", "r", "r", "r", "r", "r", "r", "r", "r"],
	"sumdata" : [
		(|Meta|BeginLoop|unvar|IDSelect|select LaborDolID from Period inner join Contract on Period.ContrID = Contract.ContrID where PeriodID = cd_id|)
		{
			"data": [
				"(|BcwsCum|$cd$|[ndd]|%unvar%|)",
				"(|BcwpCum|$cd$|[ndd]|%unvar%|)",
				"(|AcwpCum|$cd$|[ndd]|%unvar%|)",
				"(|SvCum|$cd$|[ndd]|%unvar%|)",
				"(|CvCum|$cd$|[ndd]|%unvar%|)",
				"(|Bcwr|$cd$|[ndd]|%unvar%|)",
				"(|Etc|$cd$|[ndd]|%unvar%|)",
				"(|Bac|$cd$|[ndd]|%unvar%|)",
				"(|Lre|$cd$|[ndd]|%unvar%|)",
				"(|Vac|$cd$|[ndd]|%unvar%|)",
				"(|RateVar|$cd$|[ndd]|%unvar%|)",
				"(|EffVar|$cd$|[ndd]|%unvar%|)",
				"(|RateVarTC|$cd$|[ndd]|%unvar%|)",
				"(|EffVarTC|$cd$|[ndd]|%unvar%|)",
				"(|CvCum|$cd$|[ndd]|%unvar%|)",
			],
		},
		(|Meta|EndLoop|unvar|)
	],
	"hrsumdata" : [
		(|Meta|BeginLoop|unvar|IDSelect|select LaborHrID from Period inner join Contract on Period.ContrID = Contract.ContrID where PeriodID = cd_id|)
		{
			"data": [
				"(|BcwsCum|$cd$|[ndd]|%unvar%|)",
				"(|BcwpCum|$cd$|[ndd]|%unvar%|)",
				"(|AcwpCum|$cd$|[ndd]|%unvar%|)",
				"(|SvCum|$cd$|[ndd]|%unvar%|)",
				"(|CvCum|$cd$|[ndd]|%unvar%|)",
				"(|Bcwr|$cd$|[ndd]|%unvar%|)",
				"(|Etc|$cd$|[ndd]|%unvar%|)",
				"(|Bac|$cd$|[ndd]|%unvar%|)",
				"(|Lre|$cd$|[ndd]|%unvar%|)",
				"(|Vac|$cd$|[ndd]|%unvar%|)",
				"(|RateVar|$cd$|[ndd]|%unvar%|)",
				"(|EffVar|$cd$|[ndd]|%unvar%|)",
				"(|RateVarTC|$cd$|[ndd]|%unvar%|)",
				"(|EffVarTC|$cd$|[ndd]|%unvar%|)",
			],
		},
		(|Meta|EndLoop|unvar|)
	]
};

(function() {
	"use strict";
	var em = [],
		td_h = "rpt rac rcgr1 rtb",
		td_c = "rpt ra",
		scale = extra.scale, decpl = scale.dd,
		s, i, ilen, j, jlen, vals, val, val1, val2, rval,
		tdarr = args.sql[0], tharr = args.sql[1], darr, harr;

	if( tdarr && tdarr[0] ) {
		darr = tdarr[0];
	}
	if( tharr && tharr[0] ) {
		harr = tharr[0];
	}
	em.push('<div class="rpt">');

	if( darr === undefined ) {
		darr = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
	}
	if( harr === undefined ) {
		harr = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
	}

	if( extra.dataset.cc === 0 && extra.dataset.ce === 'sum' ) {
		em.push('<div class="rtitle">Not available for cross-contract sums.</div>');
		em.push('</div>');
		return em.join('');
	}

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

	s = args.L1 ? args.dataset : extra.title;
	s = args.dataset;
	if (args.sync && extra.pf && extra.pf.length) {
		s = s + ' (' + extra.pf + ')';
	}
	em.push(s);
	em.push('<br>');
	s = args.title;
	if (extra.scale.text.length) {
		s = s + ' (' + extra.scale.text + ')';
	}
	em.push(s);
	em.push('</div>');
	if( extra.dataset.ce === 'sum' ) {
		darr = args.sumdata[0].data;
		harr = args.hrsumdata[0].data;
	}

	if (args.header) {
		em.push('<br>');
		em.push(args.header);
	}
	em.push('<p>');
	em.push('<table class="rpt">');
	em.push('<tr>');
	em.push('<td></td>');
	for (i = 0, ilen = args.cols ? args.cols.length : 0; i < ilen; i++) {
		s = args.cols[i];
		em.push('<td class="' + td_h + '">' + s + '</td>');
	}
	em.push('</tr>');

	var rows = ["Hours", "Labor Dollars", "Rate", "Rate Var", "Efficiency Var", "Total Labor Variance"];

	em.push('<tr>');
	em.push('<td class="' + td_h + '">' + rows[0] + '</td>');
	for (i = 0, ilen = harr.length - 4; i < ilen; i++) {
		val = dtostr(harr[i], decpl);
		s = args.align ? args.align[i] : 'l';
		em.push('<td class="' + td_c + s + '">' + val + '</td>');
	}
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="' + td_h + '">' + rows[1] + '</td>');
	for (j = 0, jlen = darr.length - 5; j < jlen; j++) {
		val = dtostr(darr[j], decpl);
		s = args.align ? args.align[j] : 'l';
		em.push('<td class="' + td_c + s + '">' + val + '</td>');
	}
	em.push('</tr>');


	em.push('<tr>');
	em.push('<td class="' + td_h + '">' + rows[2] + '</td>');
	for (j = 0, jlen = 10; j < jlen; j++) {
		if( j === 3 || j === 4 || j === 9 ) {
			em.push('<td class="' + td_c + s + '"></td>');
			continue;
		}
		val1 = harr[j];
		val2 = darr[j];
		val = ( val1 && val1 != 0 ) ? val2 / val1 : 0;
		rval = parseFloat(val).toFixed(2);
		s = args.align ? args.align[j] : 'l';
		em.push('<td class="' + td_c + s + '">' + rval + '</td>');
	}
	em.push('</tr>');


	em.push('<tr>');
	em.push('<td colspan=11 style="height:14px"></td>');
	em.push('</tr>');


	em.push('<tr>');
	em.push('<td class="' + td_h + '">' + rows[3] + '</td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + 'r' + '">' + dtostr(darr[10], decpl) + '</td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + 'r' + '">' + dtostr(darr[12], decpl) + '</td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="' + td_h + '">' + rows[4] + '</td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + 'r' + '">' + dtostr(darr[11], decpl) + '</td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + 'r' + '">' + dtostr(darr[13], decpl) + '</td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('</tr>');

	em.push('<tr>');
	em.push('<td class="' + td_h + '">' + rows[5] + '</td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + 'r' + '">' + dtostr(darr[14], decpl) + '</td>');
	em.push('<td class="' + td_c + '"></td>');
	val = darr[12] + darr[13];
	em.push('<td class="' + td_c + 'r' + '">' + dtostr(val, decpl) + '</td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('<td class="' + td_c + '"></td>');
	em.push('</tr>');

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