function GraphBuilder(data, container) {
	this.data = data;
	this.container = ABC.$(container);
	this.resultBars = [];
	this.sum = 0;
	
	this.buildGrid();
	this.draw();
}

GraphBuilder.prototype.draw = function() {
	var resultsCnt = this.data.length;	
	var dWidth = 0;
	var maxVotes = this.getVotesMaxCount();
	
	for(var i = 0; i < resultsCnt; i++) {
		dWidth = Math.ceil(this.resultBars[i][1].offsetWidth * (this.resultBars[i][2] / maxVotes));		
		this.resultBars[i][0].style.width = dWidth+'px';
	}
	if(this.data.length == 0 && this.resultBars[0][0].childNodes.length == 0) {
		this.resultBars[0][0].appendChild(document.createTextNode('Нет результатов'));
	}
}

GraphBuilder.prototype.getVotesMaxCount = function() {
	var len = this.data.length;
	var max = 0;
	
	for(var i = 0; i < len; i++) {
		max = Math.max(this.data[i][1], max);
	}
	return max;
}

GraphBuilder.prototype.buildGrid = function() {
	var wrapper = ABC.create('DIV', {'class': 'graph-wrapper'});
	ABC.css(wrapper, {'width': this.container.offsetWidth+'px'});
	
	var graph = ABC.create('TABLE', {'class': 'graph-table', 'cellpadding': 0, 'cellspacing': 0, 'border': 0});	
	var graphBody = ABC.create('TBODY', {'class': 'graph-table-body'});
	ABC.css(graph, {'border-collapse': 'collapse'});
	
	var records = this.data.length;	
	var tr, td1, td2, td3, sum, resDiv;

	for(var i = 0; i < records; i++) {
		tr = ABC.create('TR', {'class': 'graph-table-tr'});
		td1 = ABC.create('TD', {'class': 'graph-table-td1'});
		td2 = ABC.create('TD', {'class': 'graph-table-td2'});		
		td3 = ABC.create('TD', {'class': 'graph-table-td3'});
		resDiv = ABC.create('DIV', {'class': 'graph-result-bar bar-style-'+(i+1)});		
		
		td1.innerHTML = this.data[i][0];		
		td3.innerHTML = this.data[i][1];
		resDiv.innerHTML = '&nbsp;';
		this.sum += parseInt(this.data[i][1]);
		this.resultBars[this.resultBars.length] = [resDiv, td2, this.data[i][1]];
		
		td2.appendChild(resDiv);
		
		tr.appendChild(td1);
		tr.appendChild(td2);
		tr.appendChild(td3);
		
		graphBody.appendChild(tr);
		if(i+1 < records) {
			this.appendDelimiter(graphBody, 3);
		}
	}

	if(records == 0) {
		tr = ABC.create('TR', {'class': 'graph-table-tr'});
		td = ABC.create('TD', {'class': 'graph-table-td1'});
		tr.appendChild(td);
		graphBody.appendChild( tr );
		this.resultBars[this.resultBars.length] = [td];
	}
	
	graph.appendChild(graphBody);	
	this.container.appendChild(graph);
}

GraphBuilder.prototype.appendDelimiter = function(el, colspan) {
	tr = ABC.create('TR', {'class': 'graph-table-tr'});
	td = ABC.create('TD', {'class': 'graph-table-delimiter', 'colspan': colspan});
	
	tr.appendChild(td);
	el.appendChild(tr);
}
