script.coordinateSystem = 'bottom-up';

var file = new File(script.file.parent, 'Domboshawa.csv');

if(file.exists()){
	
	//	Import data and create 2D data array
	//=========================================================================================
	
	file.open();
	var data = file.readAll();
	file.close();
	
	var firstArray = data.split('\n');
	
	for(record in firstArray){
		firstArray[record] = firstArray[record].split(',');
	}
	
	//	Get max & min lat & long
	//=========================================================================================
	
	var minLat;
	var minLon;
	var maxLat;
	var maxLon;
	
	for(record in firstArray){
		for(field in firstArray[record]){
			if(firstArray[record][field] == 'minlat'){
				minLat = firstArray[Number(record) + 1][field];
			}else if(firstArray[record][field] == 'minlon'){
				minLon = firstArray[Number(record) + 1][field];
			}else if(firstArray[record][field] == 'maxlat'){
				maxLat = firstArray[Number(record) + 1][field];
			}else if(firstArray[record][field] == 'maxlon'){
				maxLon = firstArray[Number(record) + 1][field];
			}
		}
	}
	
	var totalLat = maxLat - minLat;
	var totalLon = maxLon - minLon;
	
	//	Get origin
	//=========================================================================================
	
	var margin = 10; // Percentage of width or height
	var origin = new Point(0, 0);
	var scale;
	
	if(((document.size.height * ((100 - (margin * 2)) / 100)) / (document.size.width * ((100 - (margin * 2)) / 100))) > (totalLat / totalLon)){
		scale = (document.size.width * ((100 - (margin * 2)) / 100)) / totalLon;
		origin.x = document.size.width * (margin / 100);
		origin.y = (document.size.height - (totalLat * scale)) / 2;
	}else{
		scale = (document.size.height * ((100 - (margin * 2)) / 100)) / totalLat;
		origin.x = (document.size.width - (totalLon * scale)) / 2;
		origin.y = document.size.height * (margin / 100);
	}
	
	//	Create track arrays
	//=========================================================================================
	
	var tracks = [];
	var trackCount = 0;
	var pointCount = 0;
	
	function addTrack(i){
		tracks[trackCount] = {
			name: firstArray[i][1].substring(1, firstArray[i][1].length - 1),
			points: []
		}
		trackCount++;
		if(Number(firstArray[i + 1][0]) == Number(firstArray[i][0]) + 1){
			addTrack(i + 1);
		}else{
			trackCount = 0;
		}
	}
	
	function newPoint(i){
		var myPoint = new Point((firstArray[i][3] - minLon) * scale + origin.x, (firstArray[i][2] - minLat) * scale + origin.y);
		tracks[trackCount].points[pointCount] = myPoint;
		if(Number(firstArray[i + 1][0]) == Number(firstArray[i][0]) + 1){
			pointCount++;
			if(Number(firstArray[i + 1][1]) == Number(firstArray[i][1]) + 1){
				trackCount++;
				pointCount = 0;
			}
			newPoint(i + 1);
		}
	}
	
	//	Create waypoint array
	//=========================================================================================
	
	var wayPoints = [];
	var wayPointCount = 0;
	
	function newWayPoint(i){
		var myPoint = new Point((firstArray[i][2] - minLon) * scale + origin.x, (firstArray[i][1] - minLat) * scale + origin.y);
		wayPoints[wayPointCount] = {
			name: firstArray[i][7].substring(1, firstArray[i][7].length - 1),
			symbol: firstArray[i][11].substring(1, firstArray[i][11].length - 1),
			point: myPoint
		}
		wayPointCount++;
		if(Number(firstArray[i + 1][0]) == Number(firstArray[i][0]) + 1){
			newWayPoint(i + 1);
		}
	}
	
	//	Iterate through data file
	//=========================================================================================
	
	for(record in firstArray){
		if(firstArray[record][0] == 'trk\r' && firstArray[Number(record) + 2][0] == '1'){
			addTrack(Number(record) + 2);
		}else if(firstArray[record][0] == 'trkpt\r' && firstArray[Number(record) + 2][0] == '1'){
			newPoint(Number(record) + 2);
		}else if(firstArray[record][0] == 'wpt\r' && firstArray[Number(record) + 2][0] == '1'){
			newWayPoint(Number(record) + 2);
		}
	}
	
	//	Draw paths
	//=========================================================================================
	
	for(track in tracks){
		var myPath = new Path();
		myPath.name = tracks[track].name;
		for(point in tracks[track].points){
			myPath.add(tracks[track].points[point]);
		}
	}
	
	for(wayPoint in wayPoints){
		var myPath = new Path();
		myPath.name = wayPoints[wayPoint].name;
		myPath.add(wayPoints[wayPoint].point);
	}
	
}else{
	Dialog.alert('The file specified in the script does not exist in the location specified.');
}