

//calculate speed when create new direction
function Speed(_directionRendered){
	this.directionRendered = _directionRendered;
	
	this.averageLegSeped = 0;
	this.averageStepSpeed = 0;
	
	this.maxLegSpeed = 0;
	this.minLegSpeed = 0;
	
	this.maxStepSpeed = 0;
	this.minStepSpeed = 0;
};

Speed.prototype.setDirectionsRenderer = function(value){
	this.directionRendered = value;
};

Speed.prototype.calculateSpeed = function(){
	//alert(this.directionRendered.routes);
	if(this.directionRendered.getDirections() == null){
		alert('this.directionRendered.getDirections() is null');
		return;
	}
	var arrayLegSpeed = new Array();
	var arrayStepSpeed = new Array();
	
	var result = this.directionRendered.getDirections()
	var route = result.routes[0];
	var legs = route.legs;
	for(var i=0;i< legs.length;i++){
		var leg = legs[i];
		
		var distance = leg.distance.value;
		var time = leg.duration.value;
		
                if(distance != 0 && time != 0){
                    var speedLeg = (distance / 1000) / (time / 3600);
                    arrayLegSpeed.push(speedLeg);
                }
		var steps = leg.steps;
		for(var j=0;j<steps.length;j++){
			var step = steps[j];
			var distance = step.distance.value;
			var time = step.duration.value;

                        if(distance != 0 && time != 0){
                            var speedStep = (distance / 1000) / (time / 3600);
                            arrayStepSpeed.push(speedStep);
                        }
		}
	}
	
	this.averageLegSpeed = average(arrayLegSpeed);
	this.averageStepSpeed = average(arrayStepSpeed);
	
	this.maxLegSpeed = maxSpeed(arrayLegSpeed);
	this.minLegSpeed = minSpeed(arrayLegSpeed);
	
	this.maxStepSpeed = maxSpeed(arrayStepSpeed);
	this.minStepSpeed = minSpeed(arrayStepSpeed);
	
		
	function average(array){
		var val = 0;
		$.each(array, function (i, item){
			val += item;
		});
		if(array.length > 0)
			return val / array.length;
		return 0;
	}
	
	function minSpeed(array){
		var speed = array[0];
		for(var i=1;i < array.length;i++){
			if(speed > array[i]){
				speed = array[i];
			}
		}
		return speed;
	}
	
	function maxSpeed(array){
		var speed = array[0];
		for(var i=1;i< array.length;i++){
			if(speed < array[i]){
				speed = array[i];
			}
		}
		return speed;
	}
};
