﻿function RunningLine() {
	var self = this;
	this.Ticks = 0;
	this.RequestNumber = 0;
	this.RunningLine = document.getElementById("RunningLine");
	this.GetFares(this.RequestNumber);
}
RunningLine.prototype.GetFares = function(RequestNumber) {
	var self = this;
	if (this.RequestNumber == RequestNumber) {
		this.RequestNumber++;
		$.ajax({
			cache: false,
			type: "get",
			dataType: "xml",
			data: {
				"Ticks": self.Ticks
			},
			url: "/result/maps/",
			success: function(xml) {
				self.Ticks = xml.getElementsByTagName("Fares")[0].getAttribute("Ticks");
				var Fares = xml.getElementsByTagName("Fare");
				if (Fares.length > 0) {
		for( var i=0; i < Fares.length; i++ )
		{
                var From = Fares[ i ].getAttribute("FR");
                var To = Fares[ i ].getAttribute("TR");
                var Lat1 = parseFloat( Fares[ i ].getAttribute("Lat1") );
                var Lat2 = parseFloat( Fares[ i ].getAttribute("Lat2") );
                var Lon1 = parseFloat( Fares[ i ].getAttribute("Lon1") );
                var Lon2 = parseFloat( Fares[ i ].getAttribute("Lon2") );
                var Cost = Fares[ i ].getAttribute("Cost");
                var colorIndex = Math.floor(Math.random()*6);
                ShowRoute( colorIndex, From, To, Cost, Lat1, Lon1, Lat2, Lon2, i );
		}

					self.SetFares(Fares);
				} else {
					var tempRequestNumber = (RequestNumber + 1);
					setTimeout(function() {
						self.GetFares(tempRequestNumber);
					}, 5000);
				}
			},
			error: function() {
				var tempRequestNumber = (RequestNumber + 1);
				setTimeout(function() {
					self.GetFares(tempRequestNumber);
				}, 10000);
			}
		});
	}
};
RunningLine.prototype.SetFares = function(Fares) {
	var elUl = document.createElement("ul");
	for (var i = 0, length = Fares.length; i < length; i++) {
		this.AddFare(elUl, Fares[i]);
	}
	this.RunningLine.appendChild(elUl);
	this.Roll(elUl);
};
RunningLine.prototype.AddFare = function(elUl, Fare) {
	var From = Fare.getAttribute("FR");
	var To = Fare.getAttribute("TR");
/*
	if(language === "en"){
		From = Fare.getAttribute("F");
		To = Fare.getAttribute("T");
	}
*/
	var Cost = Fare.getAttribute("Cost");
	var colorIndex = Math.floor(Math.random() * 6);
	
	var elFareLi = document.createElement("li");
	
	var elDate = document.createElement("span");
	var date = new Date();
	elDate.appendChild(document.createTextNode(date.getHours() + ":" + (String(date.getMinutes()).length == 2 ? date.getMinutes() : '0' + date.getMinutes())));
	elDate.className = "date";
	//elFareLi.appendChild(elDate);
	
	var elFare = document.createElement("span");
	var Arrow = ' <span class="arrow">→</span> ';
	if (Fare.getAttribute("RT") == 1) {
		//Arrow = ' <span class="arrow"></span> ';
		Arrow = ' <span class="arrow"><span>→</span><span>←</span></span> ';
	}
	elFare.innerHTML = From + Arrow + To + ", $" + Cost;
	elFare.className = "Fare color_RL" + colorIndex;
	elFareLi.appendChild(elFare);
	
	elUl.appendChild(elFareLi);
};
RunningLine.prototype.Roll = function(elUl) {
	var self = this;
	var StartTime = new Date().getTime();
	var RightLimit = (0 - elUl.offsetWidth);
	elUl.style.right = RightLimit + "px";
	var duration = 10;
	var NewRequest = false;
	
	setTimeout(function() {
		var delta = (new Date().getTime()) - StartTime;
		var progress = delta / duration;
		var result = RightLimit + progress;
		elUl.style.right = result + "px";
		
		if (result > 0 && NewRequest === false) {
			self.GetFares(self.RequestNumber);
			NewRequest = true;
		}
		if ((elUl.offsetLeft - RightLimit) > 0 ) {
			setTimeout(arguments.callee, 10);
		}
	}, 10);
};