var intCnt = 0;
function RushTraffic () {
	
	var me = this;
	this.intPageNum = 0;
	this.arrLineData = new Array();
	this.mapListenerIntervalID = null;
	
	this.mapListener = function ()
	{
		if (kijs_traffic_data != null)
		{
			clearInterval(this.mapListenerIntervalID);
			this.mapListenerIntervalID = null;
			this.setupTable();
			for (var n=0; n<kijs_traffic_data.length; n++)
			{
				kijs_traffic_data[n].Tooltip = this.getTooltip(kijs_traffic_data[n].ID);
			}
		}
	}
	
	this.setupTraffic = function ()
	{
		$("#rush_div").html("");
		$("#rush_div").css({display: 'none'});
		$("#ajax-loading").css({display: 'block'});
		this.mapListenerIntervalID = setInterval(function () {me.mapListener()}, 500);
	}
	
	this.switchPage = function (intPageNum, strFilter) {

		intPageNum = parseInt(intPageNum);
		
		this.arrLineData = new Array();
		var strHTML = '';
		var strJS = '';
		var arrData = new Array();
		
		if (typeof(strFilter) != 'undefined' && strFilter.length > 2)
		{
			strFilter = strFilter.toLowerCase()
			for (var n=0; n<kijs_traffic_data.length; n++)
			{
				var str = kijs_traffic_data[n].name.toLowerCase();
				if (str.indexOf(strFilter) != -1)
				{
					arrData.push(kijs_traffic_data[n]);
				}
			}
		}
		else
		{
			strFilter = '';
			arrData = kijs_traffic_data;
		}
		
		var intFrom = arrData.length - 1 - (intPageNum*15);
		var intTo = arrData.length - 15 - (intPageNum*15);

		if (intFrom < 0) {
			intFrom = arrData.length - Math.ceil(arrData.length / 15);
		}
		
		if (intTo < 0) {
			intTo = 0;
		}
		
		for (var n=intFrom; n>=intTo; n--)
		{
			var intNormalDriveTime = parseInt(arrData[n].normal_drive_time);
			var intDriveTime = parseInt(arrData[n].drive_time);
			
			var intC = intNormalDriveTime / intDriveTime;
			if (intC > 1)
			{
				intC = 1;
			}
			
			if (intC < 0.1)
			{
				intC = 0;
			}
			var intPoints = 100 - Math.round(intC * 100);
			var strTdStyle = '';
			/*
			if (intPoints < 30)
			{
				intR = 0;
				intG = Math.round(200 / 100 * (30-(intPoints))) + 55;
			}
			else
			{
				intR = Math.round(200 / 100 * intPoints) + 55;
				intG = 0;
			}
			
			var strR = intR.toString(16);
			if (strR.length == 1)
			{
				strR = '0' + strR;
			}
			
			var strG = intG.toString(16) 
			if (strG.length == 1)
			{
				strG = '0' + strG;
			}
			
			strTdStyle = 'style="color: #'+ strR + strG + '00;"';
			*/
			
			var intFullMinutes_real = Math.floor(intDriveTime / 60);
			strMin = intFullMinutes_real + 'm';
			var intSec_real = intDriveTime - intFullMinutes_real * 60;
			if (intSec_real > 0)
			{
				strMin += intSec_real + 's';
			}
			var intFullMinutes = Math.floor(intNormalDriveTime / 60);
			strMinNorm = intFullMinutes + 'm';
			var intSec_real = (intNormalDriveTime - intFullMinutes * 60);
			if (intSec_real > 0)
			{
				strMinNorm += intSec_real + 's';
			}
			
			this.arrLineData[intCnt] = [{x:arrData[n].min_x, y:arrData[n].min_y}, {x:arrData[n].max_x, y:arrData[n].max_y}];

			if (intPoints < 30)
			{
				strTdStyle = 'color: #71a817;';
			}
			else if (intPoints >= 30 && intPoints < 60)
			{
				strTdStyle = 'color: #e18542;';
			}
			else if (intPoints >= 60)
			{
				strTdStyle = 'color: #e14542;';
			}
			
			if (intDriveTime == 0)
			{     
				strTdStyle = 'color: #CDCDCD;';
			}
			
			strTdStyle = 'style="'+strTdStyle+' cursor: pointer;"';
			
			var intID = arrData[n].line_id;
			var intPoints1 = intPoints;
			if (intDriveTime == 0)
			{
				intPoints1 = -1;
			}
			
			strLineTime = arrData[n].date.substring(11, 16);
			
			strHTML += "\n<tr id=\"traffic_row_"+intID+"\" onClick=\"objTraffic.showLine("+intCnt+");\"> <td "+strTdStyle+">" + arrData[n].name + "</td> <td "+strTdStyle+"><span style=\"display: none;\">"+intPoints1+"</span><span class=\"progressBar\" id=\"pb_"+intCnt+"\" style=\"width: 28px;\">"+intPoints+"%</span></td><td "+strTdStyle+">"+ strLineTime +"</td> <td "+strTdStyle+">" +strMinNorm + "</td> <td "+strTdStyle+">" + strMin + "</td> </tr>"
			intCnt++;
			
			strJS += '$("#traffic_row_'+intID+'").tooltip({tip: \'#traffic_row_descr_'+intID+'\', position: [\'center\', \'right\'], offset: [-2, 10], effect: \'toggle\'});';
			if ($("#traffic_row_descr_"+intID).html())
			{                                                                                                
			}
			else
			{
				$("body").append("<div class=\"tooltip_graphs\" id=\"traffic_row_descr_"+intID + "\">"+ this.getTooltip(intID) + "</div>");
			}
			
		}
		
		$("#ajax-loading").css({display: 'none'});
		$("#rush_div").css({display: 'block'});
		this.createTable(strHTML);

		
		//$('#rush_table').jTPS( {perPages:[15],scrollStep:1,scrollDelay:30} );
		
		eval(strJS);
		
		for (var n=0; n<arrData.length; n+=15)
		{
			$("#traffic_paging div.pagination").append('<div class="pageSelector'+ (Math.ceil(n / 15)==intPageNum ? ' hilightPageSelector' : '') +'" style="margin-right: 1px;" onclick="objTraffic.switchPage('+ Math.ceil(n / 15) +', \'' + strFilter + '\');"><a href="#" class="pageNum">'+ (Math.ceil(n / 15) +1) +'</a></div>');
		}
		
	}
	
	this.setupTable = function () {
		
		this.switchPage(0);
	}
	
	this.showLine = function (n)
	{
		map.ShowPoints(this.arrLineData[n]);
	}

	this.getTooltip = function (intID) 
	{
		return Lang.txtTrafficGraphsTitle +"<br />"+ Lang.txtRush_THIS_MONTH +"<br /><img src=\"traffic_graph.php?line_id=" + intID + "\" /><br />"+ Lang.txtRush_PREVIOUS_MONTH +"<img src=\"traffic_graph.php?line_id=" + intID + "&type=2\" /><br />"+ Lang.txtRush_2_MONTH_Ago +"<img src=\"traffic_graph.php?line_id=" + intID + "&type=3\" />";
	}
	
	this.createTable = function (strContent) 
	{
		var strHTML = '			<table id="rush_table" class="rush_table jTPS" cellpadding="0" cellspacing="0" style="width: 322px; background-color: white;">';
		strHTML += '				<thead>';
		strHTML += '					<tr style="cursor: pointer;">';
		strHTML += '						<th>'+ Lang.txtRush_PLACE_NAME +'</th>';
		strHTML += '						<th style="width: 28px;" id="rush_sort">&nbsp;</th>';
		strHTML += '						<th style="width: 28px;" id="rush_trustable">'+ Lang.txtRush_TIME +'</th>';
		strHTML += '						<th>'+ Lang.txtRush_DRIVE_MINUTES_NORMAL +'</th>';
		strHTML += '						<th>'+ Lang.txtRush_DRIVE_MINUTES +'</th>';
		strHTML += '					</tr>';
		strHTML += '				</thead>';
		strHTML += '				';
		strHTML += '				<tbody>';
		strHTML += strContent;
		strHTML += '				</tbody>';
		strHTML += '';
		strHTML += '				<tfoot>';
		strHTML += '					<tr>';
		strHTML += '						<td colspan="5" id="traffic_paging">';
		strHTML += '							<div class="pagination"></div>';
		//strHTML += '							<div class="paginationTitle">'+Lang.txtPages+': </div>';
		strHTML += '							<div class="paginationTitle"></div>';
		strHTML += '							<div class="status"></div>';
		strHTML += '						</td>';
		strHTML += '					</tr>';
		strHTML += '				</tfoot>';
		strHTML += '			</table>';

		$("#rush_div").html(strHTML);
		
		$("#rush_sort").tooltip({tip: '#traffic_proportion', position: ['center', 'right'], offset: [-2, 10], effect: 'toggle'});
		
		for (var n=0; n<=intCnt; n++)
		{
			$("#pb_"+n).progressBar({width: 28, showText: false});
		}
		
	}
	
	
	this.SearchTable = function (strValue)
	{
		this.switchPage(0, strValue);
	}

}
