function createLine( map, color, coordinates, width, parallelLines, mode )
{
	if( width == null ) width = 5;
	if( mode == null ) mode = 'up';
	if( parallelLines == null ) parallelLines = 0;

	if( false && parallelLines > 0 && map.getZoom() > 5 )
	{
		var newCoordinates = [];
		var startIndex = 0;
		var endIndex = coordinates.length;

		// highest zoom: 17
		// dx latitude at highest zoom: 0.00001729447701
		// dy longitude at highest zoom: 0.00001072883606
		var latMod = 13.674 * Math.exp( -0.6765 * map.getZoom() );
		var lngMod = 11.548 * Math.exp( -0.6801 * map.getZoom() );
		if( mode == 'up' )
		{
		} else { // down
			latMod = -1 * latMod;
		}
		//alert( latMod + "\n" + lngMod );
		
		/* if( mode.indexOf( 'd' ) > -1 ) latMod = -1*latMod;
		if( mode.indexOf( 'l' ) > -1 ) lngMod = -1*lngMod;
		if( mode == 'u' ) lngMod = 0;
		if( mode == 'd' ) lngMod = 0; */
		
		for( var j = startIndex; j < endIndex; j++ )
		{
			newCoordinates.push( new GLatLng( coordinates[ j ].lat() + latMod, coordinates[ j ].lng() + lngMod ) );
		}
		createLine( map, color, newCoordinates, 2, parallelLines - 1, mode );
	}

	map.addOverlay(new GPolyline(coordinates, "#000", width+5, 1));
	map.addOverlay(new GPolyline(coordinates, "#fff", width+3, 1));
	if( parallelLines == 0 || map.getZoom() > 5 )
	{
		map.addOverlay(new GPolyline(coordinates, color, width, 1));
	} else {
		map.addOverlay(new GPolyline(coordinates, '#000', width, 1));
	}
}
function drawLines( map ) {
	// tucson to long beach
	createLine( map, '#999', [
		new GLatLng(32.39851580247402, -110.91796875),
		new GLatLng(33.063924198120645, -111.64306640625),
		new GLatLng(33.08233672856376, -111.77490234375),
		new GLatLng(33.44977658311845, -112.060546875),
		new GLatLng(33.43144133557529, -112.65380859375),
		new GLatLng(33.119150226768866, -112.69775390625),
		new GLatLng(32.80574473290688, -114.2578125),
		new GLatLng(32.95336814579932, -115.33447265625),
		new GLatLng(33.119150226768866, -115.33447265625),
		new GLatLng(33.523078808904195, -115.7958984375),
		new GLatLng(33.94335994657882, -116.015625),
		new GLatLng(34.14363482031264, -117.333984375),
		new GLatLng(34.50655662164561, -117.7294921875),
		new GLatLng(34.34343606848294, -118.5205078125),
		new GLatLng(33.76088200086917, -118.4326171875)
	], 2, 1 );

	createLine( map, '#999', [
		new GLatLng(36.38591277287651, -112.1044921875),
		new GLatLng(37.42252593456306, -110.126953125),
		new GLatLng(36.06686213257888, -109.16015625),
		new GLatLng(34.84987503195418, -110.63232421875),
		new GLatLng(36.38591277287651, -112.1044921875)
	], 2, 1, 'up' );
}
function load() {
  if (GBrowserIsCompatible()) {
	var map = new GMap2(document.getElementById("map"),{draggableCursor: 'crosshair'});
	map.addControl(new GLargeMapControl()); 
	//map.addControl(new GMapTypeControl());
	//map.setCenter(new GLatLng(41.251999985566385, -95.93536376953125), 11);
	//map.setCenter(new GLatLng(34.27083595165, -113.09326171875), 6);
	map.setCenter(new GLatLng(36.38591277287651, -112.1044921875), 6);

	GEvent.addListener(map, "click", function(overlay, point) {
	  document.getElementById( 'pointcoors' ).innerHTML += 'new GLatLng' + point.toString() + ',<br/>';
	});
	GEvent.addListener(map, "zoomend", function(oldLevel, newLevel)
	{
		document.getElementById( 'zoomlevel' ).innerHTML = newLevel;
		this.clearOverlays();
		drawLines( this );
	});
	drawLines( map );

	// el paso to tucson
	/* createLine( map, '#f00', [
		new GLatLng(31.80289258670676, -106.54541015625),
		new GLatLng(32.2313896627376, -107.314453125),
		new GLatLng(32.30570601389429, -107.666015625),
		new GLatLng(32.19420867287538, -108.369140625),
		new GLatLng(32.37996146435729, -108.74267578125),
		new GLatLng(32.24997445586331, -109.0283203125),
		new GLatLng(32.36140331527543, -109.66552734375),
		new GLatLng(32.15701248607007, -110.01708984375),
		new GLatLng(31.970803930433096, -110.23681640625),
		new GLatLng(32.0639555946604, -110.76416015625),
		new GLatLng(32.19420867287538, -110.9619140625)
	] );
	createLine( map, '#f00', [
		new GLatLng(31.914867503276223, -106.41357421875),
		new GLatLng(32.39851580247402, -107.1826171875),
		new GLatLng(32.45415593941475, -107.64404296875),
		new GLatLng(32.37996146435729, -108.34716796875),
		new GLatLng(32.54681317351514, -108.720703125),
		new GLatLng(32.43561304116276, -109.072265625),
		new GLatLng(32.52828936482526, -109.70947265625),
		new GLatLng(32.861132322810945, -109.75341796875),
		new GLatLng(32.509761735919426, -109.70947265625),
		new GLatLng(32.30570601389429, -110.1708984375),
		new GLatLng(32.175612478499325, -110.3466796875),
		new GLatLng(32.24997445586331, -110.67626953125),
		new GLatLng(32.287132632616355, -110.7861328125)
	], 2 );


	// tucson to nogales
	createLine( map, '#ff0', [
		new GLatLng(32.008075959291055, -111.005859375),
		new GLatLng(31.746854162921405, -111.0498046875),
		new GLatLng(31.522361470421437, -111.02783203125),
		new GLatLng(31.3348710339506, -110.93994140625)
	] );

	// tucson to la
	createLine( map, '#999', [
		new GLatLng(32.30570601389429, -111.07177734375),
		new GLatLng(32.62087018318113, -111.4013671875),
		new GLatLng(32.89803818160524, -111.73095703125),
		new GLatLng(32.84267363195431, -112.39013671875),
		new GLatLng(32.97180377635758, -112.69775390625),
		new GLatLng(32.80574473290688, -113.48876953125),
		new GLatLng(32.63937487360669, -114.27978515625),
		new GLatLng(32.80574473290688, -115.55419921875),
		new GLatLng(33.00866349457558, -115.55419921875),
		new GLatLng(33.394759218577995, -116.015625),
		new GLatLng(33.76088200086917, -116.19140625),
		new GLatLng(33.92512970007199, -116.982421875),
		new GLatLng(33.97980872872457, -117.3779296875),
		new GLatLng(34.12544756511612, -117.9052734375),
		new GLatLng(34.08906131584994, -118.23486328125),
		new GLatLng(33.77914733128647, -118.19091796875)
	], 5 );

	//la to salt lake city
	createLine( map, '#4e9309', [
		new GLatLng(34.397844946449865, -117.39990234375),
		new GLatLng(34.92197103616377, -117.04833984375),
		new GLatLng(34.95799531086792, -116.71875),
		new GLatLng(35.101934057246055, -116.30126953125),
		new GLatLng(35.44277092585766, -115.77392578125),
		new GLatLng(35.496456056584165, -115.4443359375),
		new GLatLng(35.871246850027965, -115.24658203125),
		new GLatLng(36.19109202182454, -115.15869140625),
		new GLatLng(36.66841891894786, -114.521484375),
		new GLatLng(36.75649032950515, -114.14794921875),
		new GLatLng(37.055177106660814, -113.642578125),
		new GLatLng(37.21283151445594, -113.3349609375),
		new GLatLng(37.56199695314352, -113.1591796875),
		new GLatLng(37.87485339352928, -112.8955078125),
		new GLatLng(38.04809106745723, -112.60986328125),
		new GLatLng(38.51378825951165, -112.6318359375),
		new GLatLng(39.027718840211605, -112.3681640625),
		new GLatLng(39.470125122358176, -111.99462890625),
		new GLatLng(40.07807142745009, -111.6650390625),
		new GLatLng(40.48038142908172, -111.86279296875),
		new GLatLng(40.79717741518766, -111.884765625)
	], 5, 1 ); */

	// tucson to long beach
	/* createLine( map, '#999', [
		new GLatLng(32.39851580247402, -110.91796875),
		new GLatLng(33.063924198120645, -111.64306640625),
		new GLatLng(33.08233672856376, -111.77490234375),
		new GLatLng(33.44977658311845, -112.060546875),
		new GLatLng(33.43144133557529, -112.65380859375),
		new GLatLng(33.119150226768866, -112.69775390625),
		new GLatLng(32.80574473290688, -114.2578125),
		new GLatLng(32.95336814579932, -115.33447265625),
		new GLatLng(33.119150226768866, -115.33447265625),
		new GLatLng(33.523078808904195, -115.7958984375),
		new GLatLng(33.94335994657882, -116.015625),
		new GLatLng(34.14363482031264, -117.333984375),
		new GLatLng(34.50655662164561, -117.7294921875),
		new GLatLng(34.34343606848294, -118.5205078125),
		new GLatLng(33.76088200086917, -118.4326171875)
	], 2, 1, 'u' );

	createLine( map, '#999', [
		new GLatLng(36.38591277287651, -112.1044921875),
		new GLatLng(37.42252593456306, -110.126953125),
		new GLatLng(36.06686213257888, -109.16015625),
		new GLatLng(34.84987503195418, -110.63232421875),
		new GLatLng(36.38591277287651, -112.1044921875)
	], 2, 1, 'u' ); */

	
	/*createLine( map, '#f00', [
		new GLatLng(41.229281845547625, -95.91545104980469),
		new GLatLng(41.223084618644435, -95.92300415039062),
		new GLatLng(41.21585377825921, -95.93055725097656),
		new GLatLng(41.20810556217715, -95.9326171875),
		new GLatLng(41.19622318190573, -95.92987060546875),
		new GLatLng(41.188472641161425, -95.92437744140625),
		new GLatLng(41.183821876278486, -95.9161376953125),
		new GLatLng(41.18278832811288, -95.90171813964844),
		new GLatLng(41.175036196932844, -95.8941650390625),
		new GLatLng(41.16728314823924, -95.89073181152344),
		new GLatLng(41.15797827873605, -95.88729858398438),
		new GLatLng(41.14660386635527, -95.88661193847656),
		new GLatLng(41.13419316582356, -95.88935852050781),
		new GLatLng(41.120228320681306, -95.888671875),
		new GLatLng(41.11091677281061, -95.89004516601562)
	] );
	createLine( map, '#4e9309', [
		new GLatLng(41.231863850073026, -95.91476440429687),
		new GLatLng(41.24528862977438, -95.91957092285156),
		new GLatLng(41.2509675141624, -95.9271240234375),
		new GLatLng(41.24993502644133, -95.93742370605469),
		new GLatLng(41.24373975746002, -95.94429016113281),
		new GLatLng(41.23444575262552, -95.95184326171875),
		new GLatLng(41.21843631302414, -95.96420288085937),
		new GLatLng(41.20242295382758, -95.97999572753906),
		new GLatLng(41.193639770278715, -95.98823547363281),
		new GLatLng(41.19312307571869, -95.99235534667969),
		new GLatLng(41.19518982948959, -95.99716186523437),
		new GLatLng(41.19828983779905, -96.00196838378906),
		new GLatLng(41.19932314127607, -96.01913452148437),
		new GLatLng(41.19932314127607, -96.03973388671875),
		new GLatLng(41.19673985199647, -96.05072021484375),
		new GLatLng(41.19002282271705, -96.05964660644531),
		new GLatLng(41.1817547636353, -96.07200622558594),
		new GLatLng(41.18072118284585, -96.07681274414062),
		new GLatLng(41.183305104234684, -96.08436584472656),
		new GLatLng(41.18227154791307, -96.0919189453125)
	], 8 );
	createLine( map, '#ff0', [
		new GLatLng(41.10677788312023, -95.82069396972656),
		new GLatLng(41.11867648776222, -95.8172607421875),
		new GLatLng(41.145569731009495, -95.81588745117187),
		new GLatLng(41.19777317994312, -95.81382751464844),
		new GLatLng(41.21946929837953, -95.84129333496094),
		new GLatLng(41.22773259388588, -95.85227966308594),
		new GLatLng(41.24993502644133, -95.88592529296875),
		new GLatLng(41.24993502644133, -95.91819763183594)
	] );
	createLine( map, '#ff0', [
		new GLatLng(41.106260503564485, -95.81039428710937),
		new GLatLng(41.11815920196902, -95.80696105957031),
		new GLatLng(41.20138969929042, -95.80490112304687),
		new GLatLng(41.25767828661663, -95.88043212890625),
		new GLatLng(41.25716209782704, -95.91888427734375)
	], 10 );
	createLine( map, '#999', [
		new GLatLng(41.22153522014608, -96.00059509277344),
		new GLatLng(41.22153522014608, -96.04110717773438),
		new GLatLng(41.22153522014608, -96.11732482910156),
		new GLatLng(41.22360107665304, -96.13998413085938),
		new GLatLng(41.24528862977438, -96.16470336914062),
		new GLatLng(41.276258366085166, -96.19834899902344)
	], 10 );
	
	createLine( map, '#000', [
		new GLatLng(41.24993502644133, -95.8612060546875),
		new GLatLng(41.24993502644133, -95.85639953613281),
		new GLatLng(41.23238023874139, -95.83648681640625),
		new GLatLng(41.229281845547625, -95.83305358886719),
		new GLatLng(41.23031465959445, -95.82756042480469),
		new GLatLng(41.235994845209525, -95.82412719726562),
		new GLatLng(41.26438836965208, -95.8062744140625),
		new GLatLng(41.26438836965208, -95.79803466796875),
		new GLatLng(41.275742324160106, -95.78086853027344),
		new GLatLng(41.290189955885644, -95.76026916503906),
		new GLatLng(41.297412572239565, -95.75065612792969),
		new GLatLng(41.303086924071046, -95.73143005371094),
		new GLatLng(41.303086924071046, -95.72250366210937),
		new GLatLng(41.31237116211815, -95.69915771484375),
		new GLatLng(41.333513657873205, -95.68130493164062)
	], 5 );
	createLine( map, '#00f', [
		new GLatLng(41.268001205721035, -95.80764770507812),
		new GLatLng(41.27367811566259, -95.80902099609375),
		new GLatLng(41.281418560948055, -95.80558776855469),
		new GLatLng(41.32938883149378, -95.7513427734375),
		new GLatLng(41.34124700339191, -95.73760986328125),
		new GLatLng(41.347948493443546, -95.72181701660156),
		new GLatLng(41.353618446325335, -95.70533752441406),
		new GLatLng(41.367018190069956, -95.69435119628906),
		new GLatLng(41.38865810163064, -95.67306518554688)
	], 10 );*/
  }
}