var heightProfileSteps = 1;
var pad_top = 10;
var heightMin = 20;

jQuery(document).ready(function(){
	jQuery('.absHeightProfile').each(function(){
		
		var tourId = jQuery(this).find('span').text();
		var container = jQuery(this);
				
	//	jQuery.getJSON(absBase+'/service/tour/data/tourId/'+tourId, function(json){
		
			//var tour = new AbsGpsTrack(json);
			var tour = new AbsGpsTrack(jQuery.parseJSON(absGpsTracksArr[0]));
			initHeightProfile(container, tour);
			
	//	});		
		
	});
	
});

function initHeightProfile(container, tour)
{
	var drawWidth = jQuery(container).width(), 
		drawHeight = jQuery(container).height();

	var raph = Raphael(jQuery(container).attr('id'), drawWidth, drawHeight);
	
	tour.getHeightProfile(drawWidth);
	
	drawHeightProfile(raph, tour, drawWidth, drawHeight);
	drawHeightLine(raph, tour, drawWidth, drawHeight);
	
}

function drawHeightProfile(raph, tour, drawWidth, drawHeight)
{
	var path = getHeightProfilePathFromTour(raph, tour, drawWidth, drawHeight);
}

function drawHeightLine(raph, tour, drawWidth, drawHeight)
{
	var path = getHeightLinePathFromTour(raph, tour, drawWidth, drawHeight);
	var c = raph.path(path).attr({fill: "none", "stroke-width": 7, "stroke" : '#999999'});
	var c = raph.path(path).attr({fill: "none", "stroke-width": 5, "stroke" : '#ff9900'});
}

function getHeightProfilePathFromTour(raph, track, drawWidth, drawHeight)
{
	var scale = (drawHeight-pad_top-heightMin)/(track.getMaxEle()-track.getMinEle());
	var set = raph.set();
	var i = 0;
	
	while ( i !== false)
	{	
		var next = getNextProfilePath(track, i, scale, drawWidth, drawHeight);
		var path = next[0];
		var col  = next[2];		
		
		var c = raph.path(path).attr({fill: "none", "stroke-width": 1, "stroke" : col, 'fill': col});
		i = next[1];
		set.push(c);
	}
}

function getNextProfilePath(track, i, scale, drawWidth, drawHeight)
{
	var path = '',
		iStart = i,
		trackpoints = track.getHeightProfile(drawWidth, false),
		ug = trackpoints[i].ug,
		x = 1,
		y = 0;
		
	path += "M" + [i, drawHeight];
		
	while (i < trackpoints.length && ug == trackpoints[i].ug)
	{
		var lineHeight = parseInt((trackpoints[i].ele-track.getMinEle())*scale+heightMin);
		var lineStart = drawHeight-lineHeight;
	  
		path += "L" + i + ","+ lineStart;
		i++;
	}
	
	
	path += "L" + (i-1) + "," + drawHeight;
	path += "L" + iStart + "," + drawHeight;
	var re = [];
	re.push(path);
	if (i < trackpoints.length)
		re.push(i);
	else
		re.push(false);
	re.push(track.colors[ug])
	return re;
}

function getHeightLinePathFromTour(raph, track, drawWidth, drawHeight)
{
	var path = '',
		x = heightProfileSteps,
		y = 0,
		steps = heightProfileSteps / drawWidth;
	
	var arrProfile = track.getHeightProfile(drawWidth, false);
	
	var scale = (drawHeight-pad_top-heightMin)/(track.getMaxEle()-track.getMinEle());
	
	
	for (var n = 0; n < arrProfile.length; n = n + heightProfileSteps)		
	{
		
		var lineHeight = parseInt((arrProfile[n].ele-track.getMinEle())*scale+heightMin);
		var lineStart = drawHeight-lineHeight;
					
		var value = lineStart;
	    if (n > 0) {
	        path += "C" + [x + heightProfileSteps/2, y, (x += heightProfileSteps) - heightProfileSteps/2, (y = value), x, y];
	    } else {
	        path += "M" + [0, (y = lineStart)];
	    }	
	}
	
	return path;
	
}

