/*
 * Reporting component functions
 */

var strAjaxDoPath = '/dios/ajaxDo'; // the full path to ajaxDo (this will be component-specific)


function createNewSigAch() {
	document.getElementById('resultTables').style.display='none';
	document.getElementById('indResults').style.display='none';
	document.getElementById('completedSigAch').style.display='none';
	document.getElementById('dtg-sig-ach').style.display='none';
	document.getElementById('sigAchNewTitle').style.display='block';
	document.getElementById('sigAchNewEdit').style.display='block';
}

function createReport(url) {
	document.getElementById('createNewVersion').style.display='none';
	document.getElementById('report-loading-image').style.display='block';
//	alert('Now creating new version.');
//	diosGo('home', 'startNewVersion', '1');
	window.location.href = url;
}

function cdmOptions() {
	alert('Test!');
}

function copyReport(start12Month) {
	/**
	 * Display loading indicator
	 * and redirect to do report copy
	 */

	document.getElementById('createNewVersion').style.display='none';
	document.getElementById('report-loading-image').style.display='block';
//	alert('Now creating new version.');
	if (typeof start12Month == 'undefined') { // just copy report
		diosGo('home', 'startNewVersion', '1');
	} else { // start 12 month report
		diosGo('home', 'startNewVersion12Month', '1');
	}
	this.href='javascript:void(0)';
}

function reportShowDialog() {
	/**
	 * Display report dialog
	 */

	getObj('progress-box');
	obj.style.display = 'block';

	// Now that it has been clicked, load the contents of the progress box
	showProgressInline();

	return;
}

function reportShowStatus(tabId, noCache, reportId) {
	/**
	 * Retrieve report status via ajax call
	 */

// MOVED TO FUNCTION BELOW TO DELAY START OF THIS AJAX CALL
//	if (reportId == undefined) { // no report Id supplied
//		sendRequest(strAjaxDoPath + '?tabId=' + tabId + '&action=getReportStatus', reportShowStatus_Callback);
//	} else { // status bar Id supplied
//		sendRequestM(strAjaxDoPath + '?tabId=' + tabId + '&action=getReportStatus&reportid=' + reportId, reportShowStatusM_Callback, null, reportId);
//	}

	//setTimeout('reportShowStatus_StartAfterDelay(' + tabId + ',' + reportId + ')', 500);

	strRequest = strAjaxDoPath + '.php?tabId=' + tabId + '&action=getReportStatus';

	if (noCache == 1) strRequest += ('&nocache=1'); // refresh cache
	if (reportId != undefined) strRequest += ('&reportid=' + reportId); // status bar Id supplied

	if (reportId == undefined) {
		sendRequest(strRequest, reportShowStatus_Callback, null, reportId);
	} else {
		sendRequestM(strRequest, reportShowStatusM_Callback, null, reportId); // use different callback function when report id given
	}

	return;
}

function reportShowStatus_StartAfterDelay(tabId, reportId) {

	if (reportId == undefined) { // no report Id supplied
		sendRequest(strAjaxDoPath + '.php?tabId=' + tabId + '&action=getReportStatus', reportShowStatus_Callback);
	} else { // status bar Id supplied
		sendRequestM(strAjaxDoPath + '.php?tabId=' + tabId + '&action=getReportStatus&reportid=' + reportId, reportShowStatusM_Callback, null, reportId);
	}

	return;
}

function reportShowStatus_Callback(req) {
	/**
	 * Handle callback data from the AJAX call
	 */

	s = req.responseText;
	getObj('report-status'); // load report element

	obj.innerHTML = s; // replace contents of report element
}

function reportShowStatusM_Callback(req, reportId) {
	/**
	 * Handle callback data from the AJAX call
	 */
	s = req.responseText;

	getObj('report-status' + reportId); // load report element

	obj.innerHTML = s; // replace contents of report element
}

function reportShowProgress(tabId) {
	/**
	 * Retrieve report progress via ajax call
	 */
// MOVED TO FUNCTION BELOW TO DELAY START OF THIS AJAX CALL
// ALTHOUGH THIS NOW LOADS ON CLICK, SO COULD REMOVE DELAY
// DELAY SET TO 0.5 sec
//	sendRequest(strAjaxDoPath + '?tabId=' + tabId + '&action=getReportProgress', reportShowProgress_Callback);
	setTimeout('reportShowProgress_StartAfterDelay(' + tabId + ')', 500);
	return;
}

function reportShowProgress_StartAfterDelay(tabId) {
	strRequest = strAjaxDoPath + '.php?tabId=' + tabId + '&action=getReportProgress';

	sendRequest(strRequest, reportShowProgress_Callback);
}

function reportShowProgress_Callback(req) {
	/**
	 * Handle callback data from the AJAX call
	 */

	s = req.responseText;

	getObj('progress-box');

	obj.innerHTML = s; // replace contents of report element
}

function reportShowStatusList(tabId, reportId) {
	/**
	 * Retrieve report progress via ajax call
	 */
	strRequest = strAjaxDoPath + '.php?tabId=' + tabId + '&action=getReportStatusList&reportid=' + reportId;

	sendRequest(strRequest, reportShowStatusList_Callback);
}

function reportShowStatusList_Callback(req) {
	/**
	 * Handle callback data from the AJAX call
	 */

	s = req.responseText;

	// split out report id
	str = ''; // to store responseText
	arr = s.split('-');
	reportId = arr[0]; // report id is the first element of the array

//	if (reportId.length > 3) { // something wrong in the response
//		document.write(s); // show the response text
//	} else { // all appears ok
		for (var i = 1; i < arr.length; i++) { // iterate through array of string values
			str += arr[i]; // add array value to string
		}

		getObj('report-status-' + reportId); // select report progress object

		obj.innerHTML = 'current'; // replace contents of report element
		if (str) obj.innerHTML = str; // replace contents of report element
//	}
}

function reportIconClick(n) {
	/*
	 * Select report
	 */
	var objReport = document.getElementById('reportIcon' + n);
	var objText = document.getElementById('txt' + n);
	var objTextSmall = document.getElementById('small' + n);
	var objTextSelected = document.getElementById('selected' + n);
	var objTextReport = document.getElementById('text-report' + n);
	var objImage = document.getElementById('reportImg' + n);
	var objReportDetails = document.getElementById('reportDetails' + n);
	var objReportOptions = document.getElementById('reportOptions' + n);

	// hilight row
	objReport.style.backgroundColor = '#b7d9f5';

	// show extra report text
	objText.style.display = 'block';

	// hide 'click for details' text
	objTextSmall.style.display = 'none';

	// show 'selected' text
	objTextSelected.style.display = 'block';

	// adjust 'report' text
	objTextReport.style.fontSize = '1.2em';
	objTextReport.style.fontWeight = 'bold';

	// enlarge image
	objImage.style.backgroundImage = 'url(/dios/images/report_bg.gif)';
	objImage.style.height = '144px';
	objImage.style.paddingLeft = '14px';

	// show extra report details (comments)
	objReportDetails.style.display = 'block';

	// show report options
	if (objReportOptions) { // in case report options are not rendered
		objReportOptions.style.display = 'block';
	}

	/*
	 * Hide all other report icons
	 */

	var arrReport =			getElementsByClassName(document, 'div', 'report-icon-container');
	var arrText = 			getElementsByClassName(document, 'p', 'reportIconLargeText');
	var arrTextSmall = 		getElementsByClassName(document, 'small', 'text-small');
	var arrTextSelected = 	getElementsByClassName(document, 'h4', 'text-selected');
	var arrTextReport =		getElementsByClassName(document, 'h3', 'text-report');
	var arrImageCur = 		getElementsByClassName(document, 'div', 'report-img-current');
	var arrImageArc = 		getElementsByClassName(document, 'div', 'report-img-archived');
	var arrImageSub = 		getElementsByClassName(document, 'div', 'report-img-submitted');
	var arrImageRej = 		getElementsByClassName(document, 'div', 'report-img-rejected');
	var arrImageApp = 		getElementsByClassName(document, 'div', 'report-img-approved');
	var arrReportDetails = 	getElementsByClassName(document, 'table', 'report-details-collapsed-footer');
	var arrReportOptions = 	getElementsByClassName(document, 'table', 'report-options-collapsed-footer');

	// un-hilight row
	for (var i = 0; i < arrReport.length; i++) { // iterate through array of report icon container objects and hide them
		if (arrReport[i].id != objReport.id) { // only if not selected
			arrReport[i].style.backgroundColor = '#dddddd';
		}
	}

	// hide extra report text
	for (var i = 0; i < arrText.length; i++) { // iterate through array of report text objects and hide them
		if (arrText[i].id != objText.id) { // only if not selected
			arrText[i].style.display = 'none';
		}
	}

	// show 'click for details' text
	for (var i = 0; i < arrTextSmall.length; i++) {
		if (arrTextSmall[i].id != objTextSmall.id) { // only if not selected
			arrTextSmall[i].style.display = 'inline';
		}
	}

	// hide 'selected' text
	for (var i = 0; i < arrTextSelected.length; i++) {
		if (arrTextSelected[i].id != objTextSelected.id) { // only if not selected
			arrTextSelected[i].style.display = 'none';
		}
	}

	// adjust 'report' text
	for (var i = 0; i < arrTextReport.length; i++) {
		if (arrTextReport[i].id != objTextReport.id) { // only if not selected
			arrTextReport[i].style.fontSize = '.8em';
			arrTextReport[i].style.fontWeight = 'normal';
		}
	}

	// shrink images
	for (var i = 0; i < arrImageCur.length; i++) {
		if (arrImageCur[i].id != objImage.id) { // only if not selected
			arrImageCur[i].style.backgroundImage = 'url(/dios/images/report_bg_small.gif)';
			arrImageCur[i].style.height = '72px';
			arrImageCur[i].style.paddingLeft = '7px';
		}
	}

	for (var i = 0; i < arrImageArc.length; i++) {
		if (arrImageArc[i].id != objImage.id) { // only if not selected
			arrImageArc[i].style.backgroundImage = 'url(/dios/images/report_bg_small.gif)';
			arrImageArc[i].style.height = '72px';
			arrImageArc[i].style.paddingLeft = '7px';
		}
	}

	for (var i = 0; i < arrImageSub.length; i++) {
		if (arrImageSub[i].id != objImage.id) { // only if not selected
			arrImageSub[i].style.backgroundImage = 'url(/dios/images/report_bg_small.gif)';
			arrImageSub[i].style.height = '72px';
			arrImageSub[i].style.paddingLeft = '7px';
		}
	}

	for (var i = 0; i < arrImageRej.length; i++) {
		if (arrImageRej[i].id != objImage.id) { // only if not selected
			arrImageRej[i].style.backgroundImage = 'url(/dios/images/report_bg_small.gif)';
			arrImageRej[i].style.height = '72px';
			arrImageRej[i].style.paddingLeft = '7px';
		}
	}

	for (var i = 0; i < arrImageApp.length; i++) {
		if (arrImageApp[i].id != objImage.id) { // only if not selected
			arrImageApp[i].style.backgroundImage = 'url(/dios/images/report_bg_small.gif)';
			arrImageApp[i].style.height = '72px';
			arrImageApp[i].style.paddingLeft = '7px';
		}
	}

	// hide extra report details (comments)
	for (var i = 0; i < arrReportDetails.length; i++) {
		if (arrReportDetails[i].id != objReportDetails.id) { // only if not selected
			arrReportDetails[i].style.display = 'none';
		}
	}

	// hide report options
	for (var i = 0; i < arrReportOptions.length; i++) {
		if (arrReportOptions[i].id != objReportOptions.id) { // only if not selected
			arrReportOptions[i].style.display = 'none';
		}
	}
}

function reportIconOver(n) {
	/*
	 * Hilight the report row
	 */

	var objReport = document.getElementById('reportIcon' + n);

	// hilight row - only if not already the selected report icon
	if (objReport.style.backgroundColor != '#b7d9f5' && objReport.style.backgroundColor != 'rgb(183, 217, 245)') { // not the selected report icon - hilight (w/ffox test)
		objReport.style.backgroundColor = '#ffc600';
	}
}

function reportIconOut(n) {
	/*
	 * Un-hilight the report row
	 */

	var objReport = document.getElementById('reportIcon' + n);

	// un-hilight row - only if not the selected report icon
	if (objReport.style.backgroundColor != '#b7d9f5' && objReport.style.backgroundColor != 'rgb(183, 217, 245)') { // not the selected report icon - un-hilight (w/ffox test)
		objReport.style.backgroundColor = '#dddddd';
	}
}

function reportIconDown(n) {
	/*
	 * Begin click effect
	 */

	var objReport = document.getElementById('reportIcon' + n);

	// hilight row - only if not already the selected report icon
	if (objReport.style.backgroundColor != '#b7d9f5' && objReport.style.backgroundColor != 'rgb(183, 217, 245)') { // not the selected report icon - hilight (w/ffox test)
		objReport.style.backgroundColor = '#fff600';
	}
}

/**
 * Some javascript functions for the compare reports feature
 */
function enableDisableSubmitButton() {
	// Enable or disable the compare report form submit button
	// according to the selected value under the report drop-down
	// menu (ie. a report must be selected)

	getObj('reportSelect'); // set obj to drop-down list

	if (obj.value > 0) { // report selected - enable submit button
		getObj('btnCompare'); // set obj to submit button
		obj.disabled = false;
	} else { // report not selected - disable the submit button
		getObj('btnCompare'); // set obj to submit button
		obj.disabled = true;
	}
}

/**
 * To display word limit warning
 */
function exceededWordLimit() {
	alert('One or more fields have exceeded word limit!\n\nPlease refer to highlighted fields.');
}

