var StopReportsCurrentController = function(requestUrl, requestInterval, requestTimeout) {

	var E_RESULT = "stopreportsCurrent_result";

	var E_RF_DATEVIEW = "stopreportsCurrent_result_date";
	var E_RF_GLPERCENT = "stopreportsCurrent_result_glPercent";
	var E_RF_GLPERCENT1 = "stopreportsCurrent_result_glPercent1";
	var E_RF_SIGNALSCOUNT = "stopreportsCurrent_result_signalsCount";

	var C_FIELD = "field";
	var C_FIELDGAIN = "field_gain";
	var C_FIELDLOSS = "field_loss";

	this.init = function() {
		var thisClosure = this;
		this.refresh();
		setInterval(function(){thisClosure.refresh();}, requestInterval);
	}

	this.refresh = function() {
		this.load();
	}

	this.load = function() {
		var request = ((typeof XMLHttpRequest != 'undefined') ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"));
		var url = requestUrl + "?action=report&period=d&date=current&requestId=" + (new Date().getTime());
		request.open("GET", url, true);
		var thisClosure = this;
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				if (request.status == 200)
					thisClosure.processResponse(request.responseText);
			}
		}
		request.send(null);
		setTimeout((function() {thisClosure.processTimeout(request)}), requestTimeout);
	}

	this.processResponse = function(responseText) {
		if (responseText == "null")
			return;
		try {
			var response = eval("[" + responseText + "]")[0];
			var report = new Report(response);
			this.updateResult(report);
		} catch(e) {}
	}

	this.processTimeout = function(request) {
		if (request.readyState == 4 && request.status == 200)
			return;
		request.abort();
	}

	this.updateResult = function(report) {
		var glPercentClass = C_FIELD;
		if (report.getGlPercent() > 0)
			glPercentClass = C_FIELDGAIN;
		else if (report.getGlPercent() < 0)
			glPercentClass = C_FIELDLOSS;
		var glPercent1Class = C_FIELD;
		if (report.getGlPercent1() > 0)
			glPercent1Class = C_FIELDGAIN;
		else if (report.getGlPercent1() < 0)
			glPercent1Class = C_FIELDLOSS;
		setElementContent(E_RF_DATEVIEW, report.getDateView());
		setElementContent(E_RF_GLPERCENT, report.getGlPercent() + " %");
		setElementClassName(E_RF_GLPERCENT, glPercentClass);
		setElementContent(E_RF_GLPERCENT1, report.getGlPercent1() + " %");
		setElementClassName(E_RF_GLPERCENT1, glPercent1Class);
		setElementContent(E_RF_SIGNALSCOUNT, report.getSignalsCount());
		showElement(E_RESULT);
	}
}