var mode = null;
var cameras = {};

function onBodyLoad(admin) {
	mode = new Mode(admin);
	setDimensions();
	mode.switchTo('help');
	
	var cam;
	var feat;	
	cam = new Camera(1600, 1200, 860, 0, -3.2, -5, 2, 0.99);
	
	feat = new Feature(new Polygon('975,515;1005,512;1054,498;1117,520;1050,527'), 11.37, 'Viejas Mountain', 
						   'http://maps.google.com/?ie=UTF8&ll=32.86207,-116.725187&spn=0.051477,0.111237&t=p&z=14', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=5788256');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1237,505;1307,492;1328,494;1331,490;1389,505;1324,508'), 19.31, 'Cuyamaca Mountain', 
						   'http://maps.google.com/?ie=UTF8&ll=32.945734,-116.598158&spn=0.051428,0.111237&t=p&z=14', 
						   'http://en.wikipedia.org/wiki/Cuyamaca,_California');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('196,580;249,547;313,549;346,542;343,553;443,555;528,583;369,590;287,581'), 4.41, 'Sycuan Peak', 
						   'http://maps.google.com/?ie=UTF8&ll=32.754401,-116.805224&spn=0.025769,0.055618&t=p&z=15', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=6117056');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('579,520;610,506;638,508;654,504;677,505;693,502;737,509;796,524;677,531'), 15.1, 'El Cajon Mountain', 
						   'http://maps.google.com/?ie=UTF8&ll=32.907623,-116.813335&spn=0.05145,0.111237&t=p&z=14', 
						   'http://www.summitpost.org/mountain/rock/153145/el-cajon-mountain.html');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('968,549;992,541;1051,544;1109,533;1138,541;1179,539;1213,546;1216,565;1111,575;1035,567'), 4.85, 'Unnamed Peak SW of Loveland Reservoir', 
						   'http://maps.google.com/?ie=UTF8&ll=32.769053,-116.73862&spn=0.025765,0.055618&t=p&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('27,620;93,592;175,592;211,582;291,583;548,617;556,664;326,688;201,757;27,708'), 1.8, 'Low hills NW of Lyons Peak', 
						   'http://maps.google.com/?ie=UTF8&ll=32.721479,-116.78175&spn=0.025779,0.055618&t=p&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('113,561;194,543;253,545;299,540;354,545;242,570'), 9.7, 'Crest', 
						   'http://maps.google.com/?ie=UTF8&ll=32.790702,-116.864705&spn=0.025759,0.055618&t=p&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('479,596;535,584;587,578;613,579;654,593;587,603'), 9.7, 'Low ridge SE of Sycuan Peak', 
						   'http://maps.google.com/?ie=UTF8&ll=32.738158,-116.775441&spn=0.025774,0.055618&t=p&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('799,602;865,584;880,583;906,586;940,599;878,610'), 3.09, 'Mike\'s Hill N of Lyon\'s Peak', 
						   'http://maps.google.com/?ie=UTF8&ll=32.746569,-116.762524&spn=0.025772,0.055618&t=p&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('952,606;973,598;999,594;1041,598;995,623'), 2.92, 'Jim\'s Hill N of Lyon\'s Peak', 
						   'http://maps.google.com/?ie=UTF8&ll=32.746569,-116.762524&spn=0.025772,0.055618&t=p&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1066,1199;1086,1105;1131,998;1198,901;1285,821;1394,758;1527,716;1540,695;1592,701;1591,790;1599,798;1599,1199'), 0.0005, 'Microwave antenna on Lyon\'s Peak', 
						   'http://maps.google.com/?ie=UTF8&ll=32.702378,-116.763554&spn=0.025785,0.055618&t=p&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('906,502;926,495;936,493;972,509;936,504'), 77.4, 'San Jacinto Peak', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=33.815025,-116.675577&spn=0.025458,0.055618&z=15', 
						   'http://en.wikipedia.org/wiki/San_Jacinto_Peak');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('412,510;462,521;352,524;369,578'), 24.2, 'Woodson Mountain', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=33.008879,-116.971135&spn=0.025696,0.055618&z=15', 
						   'http://www.summitpost.org/mountain/rock/282613/woodson-mountain.html');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('376,689;397,696;436,713;480,726;482,722;447,713;393,691;376,685'), 1.32, 'Lyon\'s Creek Road', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.71776,-116.769733&spn=0.02578,0.055618&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1159,506;1162,500;1176,499;1212,501;1230,504;1191,508'), 32.19, 'Volcan Mountain/Oak Ridge', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=33.139564,-116.603823&spn=0.051315,0.111237&z=14', 
						   'http://www.volcanmt.org/');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('592,509;625,501;685,495;752,494;799,495;899,502;766,507'), 45.24, 'Palomar Mountain Range', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=33.346304,-116.888952&spn=0.051194,0.111237&z=14', 
						   'http://en.wikipedia.org/wiki/Palomar_Mountain');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('0,0;1599,0;1599,1199;0,1199'), 10000, 'Unidentified Feature', 
						   null, 
						   null);
	cam.addFeature(feat);
	cam.sortFeatures();
	cameras['north'] = cam;
	
	cam = new Camera(1600, 1200, 860, 90, -4, -5, -5, 1.075);
	feat = new Feature(new Polygon('163,470;263,498;160,509;92,497;135,480'), 3.8, 'Gaskill Peak', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.739133,-116.715274&spn=0.025774,0.055618&z=15', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=5865256');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('258,482;286,503;244,508;190,503;208,490;226,496;242,493;247,484;251,485'), 2.81, 'Lawson Peak', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.723501,-116.723728&spn=0.025778,0.055618&z=15', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=5905356');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('448,463;490,466;433,471;422,464'), 24.33, 'Laguna Mountain', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.858681,-116.386886&spn=0.051479,0.111237&z=14', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('402,460;419,464;402,468;382,464'), 24.1, 'Stephenson Peak', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.875442,-116.412506&spn=0.025734,0.055618&z=15', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=773545');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('671,473;714,485;614,480'), 11.17, 'Los Pinos Mountain', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.734837,-116.576614&spn=0.025775,0.055618&z=15', 
						   'http://www.socalfirelookouts.org/page4.html');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('526,466;558,479;482,476'), 10.85, 'Corte Madera Mountain', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.757758,-116.591163&spn=0.025768,0.055618&z=15', 
						   'http://www.rockclimbing.com/routes/North_America/United_States/California/San_Diego_County/Corte_Madera/');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1000,537;1019,541;1008,549;1026,550;993,554;992,548;1003,543'), 6.83, 'Barrett Lake', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.693132,-116.652489&spn=0.051574,0.111237&z=14', 
						   'http://www.sandiego.gov/water/recreation/barrett.shtml');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('976,499;993,500;1039,519;994,526;946,504'), 12.96, 'Morena Butte', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.67742,-116.552153&spn=0.025792,0.055618&z=15', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=5844956');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('834,488;849,493;832,495;820,491'), 11.76, 'Unnamed Peak NW of Lake Morena', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.705483,-116.562109&spn=0.025784,0.055618&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1186,506;1193,510;1246,514;1258,520;1168,525;1057,518;1078,509;1176,510'), 14.01, 'Hauser Mountain', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.623147,-116.542368&spn=0.025807,0.055618&z=15', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=5864956');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1075,517;1167,526;1076,546;1008,548;1016,539;1003,534;1025,521'), 7.22, 'Unnamed Peak S of Barrett Lake', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.66875,-116.640515&spn=0.025794,0.055618&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1156,536;1200,550;1255,544;1275,550;1313,566;1194,588;1048,557;1092,544;1127,542'), 3.05, 'Barber Mountain', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.685331,-116.710939&spn=0.025789,0.055618&z=15', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=5989556');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1198,543;1354,605;1240,709;926,676;986,609;1084,568;1155,554'), 2.21, 'Elena Mountain', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.689737,-116.730938&spn=0.025788,0.055618&z=15', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=5965756');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1492,524;1504,529;1510,533;1490,534;1479,531;142,527;1487,527'), 20.1, 'Unnamed Peak SE of Tecate, Mexico', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.517,-116.492157&spn=0.025838,0.055618&z=15', 
						   null);
	cam.addFeature(feat);
	feat = new Feature(new Polygon('1455,533;1502,551;1455,555;1394,544;1419,537;1431,537'), 9.43, 'Potrero Peak', 
						   'http://maps.google.com/?ie=UTF8&t=p&ll=32.618557,-116.633735&spn=0.025809,0.055618&z=15', 
						   'http://www.mountainzone.com/mountains/detail.asp?fid=5978556');
	cam.addFeature(feat);
	feat = new Feature(new Polygon('0,0;1599,0;1599,1199;0,1199'), 10000, 'Unidentified Feature', 
						   null, 
						   null);
	cam.addFeature(feat);
	cam.sortFeatures();
	cameras['east'] = cam;
	
	cam = new Camera(1600, 1200, 860, 180, 3.5, -5, -2, 1.05);
	feat = new Feature(new Polygon('0,0;1599,0;1599,1199;0,1199'), 10000, 'Unidentified Feature', 
						   null, 
						   null);
	cam.addFeature(feat);
	cam.sortFeatures();
	cameras['south'] = cam;
	
	cam = new Camera(1600, 1200, 860, 270, 2, -5, 0, 1.06);
	feat = new Feature(new Polygon('0,0;1599,0;1599,1199;0,1199'), 10000, 'Unidentified Feature', 
						   null, 
						   null);
	cam.addFeature(feat);
	cam.sortFeatures();
	cameras['west'] = cam;
	
	/* feature template
	feat = new Feature(new Polygon(''), , '', 
						   '', 
						   '');
	cam.addFeature(feat);
	*/
	
	$( 'plus'   ).observe( 'click', onPlusClick   );
	$( 'minus'  ).observe( 'click', onMinusClick  );
	$( 'equals' ).observe( 'click', onEqualsClick );
	$( 'help'   ).observe( 'click', onTabClick    );
	$( 'north'  ).observe( 'click', onTabClick    );
	$( 'east'   ).observe( 'click', onTabClick    );
	$( 'south'  ).observe( 'click', onTabClick    );
	$( 'west'   ).observe( 'click', onTabClick    );
	$( 'refresh').observe( 'click', onRefresh     );
	$( 'auto'   ).observe( 'click', onAuto        );
}

function setDimensions() {
	var framer = $('framer');
	var header = $('north');
	var content = $('content');
	var info = $('info');
	var dims = document.viewport.getDimensions();
	var w = dims.width;
	var h = dims.height;
	var oh = header.getHeight() + info.getHeight();
	var ch = h - (oh + (Prototype.Browser.IE ? 17 : 14)); 
	content.style.height = ch + 'px';
}

function onTabClick(event) {
	event.stop();
	mode.switchTo(this.id);
}

function onPhotoLoad() {
	if (!mode || !mode.photo)
		return;
	mode.photo.onload();
}

function onPlusClick(event) {
	if (!mode || !mode.photo)
		return;
	event.stop();
	mode.photo.onPlusClick();
}

function onMinusClick(event) {
	if (!mode || !mode.photo)
		return;
	event.stop();
	mode.photo.onMinusClick();
}

function onEqualsClick(event) {
	if (!mode || !mode.photo)
		return;
	event.stop();
	mode.photo.onEqualsClick();
}

function onContentMouseDown(event) {
	if (!mode || !mode.photo)
		return;
	mode.photo.onContentMouseDown(event, this);
}

function onContentMouseUp(event) {
	if (!mode || !mode.photo)
		return;
	mode.photo.onContentMouseUp(event, this);
}

function onContentMouseMove(event) {
	if (!mode || !mode.photo)
		return;
	mode.photo.onContentMouseMove(event, this);
}

function onRefresh() {
	if (!mode)
		return;
	if (!mode.photo)
		return;
	mode.photo.refresh();
}

function onRefreshTick() {
	mode.autoCount--;
	if (mode.autoCount <= 0) {
		mode.autoCount = 120;
		onRefresh();
	}
	$('auto').innerHTML = mode.autoCount;
}

function onAuto() {
	if (!mode)
		return;
		
	if (mode.auto) {
		mode.auto = false;
		clearInterval(mode.autoHandle);
		$('auto_cell').style.backgroundColor = '#fffadb';
		$('auto').innerHTML = 'Auto';
	}
	else {
		mode.auto = true;
		mode.autoHandle = setInterval(onRefreshTick, 1000);
		$('auto_cell').style.backgroundColor = '#ddffd7';
		mode.autoCount = 120;
		$('auto').innerHTML = mode.autoCount;
	}
}
