// JavaScript Document

$(document).ready(setup);
var map;
var tempPoints = [];
var viewOptions = [];
var viewMarkers = [];

function setup() {
	$('#loading').bind('ajaxSend',function() {
		$(this).show();
	});
	$('#loading').bind('ajaxComplete',function() {
		$(this).hide();
	});
	map = new GMap2(document.getElementById('map'));
	map.addControl(new GLargeMapControl3D());
	map.addControl(new GScaleControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new displaySidebar());
	map.addMapType(G_PHYSICAL_MAP);
	//map.addMapType(G_SATELLITE_3D_MAP);
	map.addMapType(WMSCreateMap('Topo','Imagery by USGS / Web Service by TerraServer','http://www.terraserver-usa.com/ogcmap6.ashx','DRG',4,17,'t'));
	$('.navbar a').click(function() {
		$('.navbar a').removeClass('current');
		$(this).addClass('current');
		$('#content').html('');
		clearTempPoints();
	});
	displaySidebarHome();
	displayMapMainHike();
	$('#hike_link').click(displaySidebarHike);
	$('#view_link').click(displaySidebarView);
	$('#create_link').click(displaySidebarCreate);
	$('#home_link').click(displaySidebarHome);
	GEvent.addListener(map,'click',clickCollect);
	if(window.location.search) {
		displaySidebarHike();
		$('#content').ready(function() {
			var query = window.location.search;
			query = query.substr(query.indexOf('hike=')+5).split('+').join(' ');
			displayMapHike(query);
		});
	}
	startAnalytics();
}

function WMSCreateMap(name,copyright,baseUrl,layer,minResolution,maxResolution,urlArg) {
	var cr = new GCopyright(1,new GLatLngBounds(new GLatLng(-90,-180),new GLatLng(90,180)),0,copyright);
	var crc = new GCopyrightCollection();
	crc.addCopyright(cr);
	var tileLayer = new GTileLayer(crc,minResolution,maxResolution);
	tileLayer.baseUrl = baseUrl;
	tileLayer.layer = layer;
	tileLayer.getTileUrl = function(tile,zoom) {
		var southWestPixel = new GPoint(tile.x*256,(tile.y+1)*256);
		var northEastPixel = new GPoint((tile.x+1)*256,tile.y*256);
		var southWestCoords = G_NORMAL_MAP.getProjection().fromPixelToLatLng(southWestPixel,zoom);
		var northEastCoords = G_NORMAL_MAP.getProjection().fromPixelToLatLng(northEastPixel,zoom);
		var bbox = southWestCoords.lng()+','+southWestCoords.lat()+','+northEastCoords.lng()+','+northEastCoords.lat();
		return this.baseUrl+'?VERSION=1.1.1&REQUEST=GetMap&LAYERS='+this.layer+'&STYLES=&SRS=EPSG:4326&BBOX='+bbox+'&WIDTH=256&HEIGHT=256&FORMAT=image/jpeg&BGCOLOR=0xCCCCCC&EXCEPTIONS=INIMAGE';
	};
	var tileLayers = [tileLayer];
	return new GMapType(tileLayers,G_SATELLITE_MAP.getProjection(),name,{errorMessage:'',urlArg:'o'});
}

function displaySidebar() {}

displaySidebar.prototype = new GControl();
	
displaySidebar.prototype.initialize = function(map) {
	var sidebarToggle = document.createElement('div');
	sidebarToggle.setAttribute('id','sidebar_toggle');
	sidebarToggle.appendChild(document.createTextNode('Hide Sidebar'));
	GEvent.addDomListener(sidebarToggle,'click',function() {
		if($(this).text()=='Hide Sidebar') {
			$('#map').animate({
				'marginRight':'0px'
			},function() {
				$('#sidebar_toggle').text('Show Sidebar');
			});
		}
		else if($(this).text()=='Show Sidebar') {
			$('#map').animate({
				'marginRight':'300px'
			},function() {
				$('#sidebar_toggle').text('Hide Sidebar');
			});
		}
	});	
	$('#map').append(sidebarToggle);
	return sidebarToggle;
}

displaySidebar.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(7,30));
}

function displayMapMainHike() {
	$.ajax({
		'type':'GET',
		'url':'processor.php',
		'data':({'process':'fetch_hike','type':'all'}),
		'success': function(xml) {
			var hikingIcon = new GIcon();
			hikingIcon.image = 'http://map.jacobemerick.com/image/hiker.png';
			hikingIcon.iconSize = new GSize(20,20);
			hikingIcon.iconAnchor = new GPoint(12,12);
			hikingIcon.infoWindowAnchor = new GPoint(20,5);
			var points = [];
			$(xml).find('Placemark').each(function() {
				var point = latlngFind($(this).find('coordinates').text());
				var marker = new GMarker(point,{icon:hikingIcon});
				var hikeInfo = '<div class="info_window"><h3>'+$(this).find('name').text()+'</h3><p>'+$(this).find('description').text()+'</p><p>Rating: '+$(this).find('[name=rating]').text()+' - Length: '+convertMeterstoMiles($(this).find('[name=length]').text())+' miles - Difficulty: '+$(this).find('[name=difficulty]').text()+'<br /><a href="javascript:void(0) //View on Map" class="map_link">Go to on Map</a></p></div>';
				GEvent.addListener(marker,'click',function() {
					marker.openInfoWindowHtml(hikeInfo,{maxHeight:110,maxWidth:120});
				});
				GEvent.addListener(marker,'infowindowopen',function() {
					$('.info_window .map_link').click(function() {
						var hikeName = $(this).parent().parent().find('h3').text();
						var sidebarName = $('#content dt a:contains('+hikeName+')').parent();
						if(!$(sidebarName).hasClass('active')) {
							$('#content dt').removeClass('active');
							$(sidebarName).addClass('active');
							$('#content dd.active').slideUp('fast');
							$('#content dd').removeClass('active');
							$(sidebarName).next().addClass('active');
							$(sidebarName).next().slideDown('fast');
						}
					displayMapHike(hikeName);
					});
				});
				map.addOverlay(marker);
				points.push(point);
				viewMarkers.push(marker);
			});
			viewOptions.push('hike_all');
			if(!window.location.search) {
				positionFinder(points);
			}
		}
	});
}

function displayMapHike(hikeName) {
	map.closeInfoWindow();
	clearTempPoints();
	$.ajax({
		'type':'GET',
		'url':'processor.php',
		'data':({'process':'fetch_hike','type':hikeName}),
		'success':function(xml) {
			var waypointIcon = new GIcon();
			waypointIcon.image = 'http://map.jacobemerick.com/image/dot.png';
			waypointIcon.iconSize = new GSize(10,10);
			waypointIcon.iconAnchor = new GPoint(5,5);
			waypointIcon.infoWindowAnchor = new GPoint(10,5);
			var points = [];
			var waypoints = $(xml).find('LineString coordinates').text().split(' ');
			$.each(waypoints,function(i,n) {
				var point = latlngFind(n);
				waypoints[i] = point;
				var ele = n.split(',');
				ele = ele[2];
				if(i%5==4) {
					var marker = new GMarker(point,{icon: waypointIcon});
					var waypointInfo = '<div class="info_window"><p>Waypoint</p><p>'+point+'</p><p>Elevation: '+convertMeterstoFeet(ele)+' ft</p></div>';
					GEvent.addListener(marker,'click',function() {
						marker.openInfoWindowHtml(waypointInfo);
					});
					map.addOverlay(marker);
					tempPoints.push(marker);
				}
				points.push(point);
			});
			var polyLine = new GPolyline(points,'#a2bce1',3,.8);
			map.addOverlay(polyLine);
			tempPoints.push(polyLine);
			var poiIcon = new GIcon();
			poiIcon.iconSize = new GSize(17,20);
			poiIcon.iconAnchor = new GPoint(5,10);
			poiIcon.infoWindowAnchor = new GPoint(10,5);
			$(xml).find('#poi Placemark').each(function() {
				var point = latlngFind($(this).find('coordinates').text());
				var ele = $(this).find('coordinates').text().split(',');
				ele = ele[2];
				var marker = new GMarker(point,new GIcon(poiIcon,'http://map.jacobemerick.com/image/poi_'+$(this).find('styleUrl').text().substr(4).toLowerCase()+'.png'));
				var poiInfo = '<div class="info_window"><h3>'+$(this).find('name').text()+'</h3><p>'+point+'</p><p>Elevation: '+convertMeterstoFeet(ele)+' ft</p></div>';
				GEvent.addListener(marker,'click',function() {
					marker.openInfoWindowHtml(poiInfo);
				});
				map.addOverlay(marker);
				tempPoints.push(marker);
				points.push(point);
			});
			var photoIcon = new GIcon();
			photoIcon.iconAnchor = new GPoint(10,10);
			photoIcon.infoWindowAnchor = new GPoint(10,10);
			$(xml).find('#photo Placemark').each(function() {
				var point = latlngFind($(this).find('coordinates').text());
				var ele = $(this).find('coordinates').text().split(',');
				ele = ele[2];
				var marker = new GMarker(point,new GIcon(photoIcon,$(this).find('[name=thumb]').text()));
				var photo = $(this).find('[name=full]').text();
				var desc = $(this).find('name').text();
				GEvent.addListener(marker,'click',function() {
					photoDisplay(photo,desc);;
				});
				map.addOverlay(marker);
				tempPoints.push(marker);
				points.push(point);
			});
			positionFinder(points);
		}
	});
}

function displayMapPOI(type) {
	$.ajax({
		'type':'GET',
		'url':'processor.php',
		'data':({'process':'fetch_poi','type':type}),
		'success':function(xml) {
			var points = [];
			var poiIcon = new GIcon();
			poiIcon.iconSize = new GSize(17,20);
			poiIcon.iconAnchor = new GPoint(8,20);
			poiIcon.infoWindowAnchor = new GPoint(10,5);
			$(xml).find('Placemark').each(function() {
				var point = latlngFind($(this).find('coordinates').text());
				var ele = $(this).find('coordinates').text().split(',');
				ele = ele[2];
				var marker = new GMarker(point,new GIcon(poiIcon,'http://map.jacobemerick.com/image/poi_'+$(this).find('styleUrl').text().substr(4).toLowerCase()+'.png'));
				var poiInfo = '<div class="info_window"><h3>'+$(this).find('name').text()+'</h3><p>'+point+'</p><p>Elevation: '+convertMeterstoFeet(ele)+' ft</p></div>';
				GEvent.addListener(marker,'click',function() {
					marker.openInfoWindowHtml(poiInfo);
				});
				map.addOverlay(marker);
				tempPoints.push(marker);
				points.push(point);
				viewMarkers.push(marker);
			});
		}
	});
}

function displayMapPhoto(type) {
	$.ajax({
		'type':'GET',
		'url':'processor.php',
		'data':({'process':'fetch_photo','type':type}),
		'success':function(xml) {
			var points = [];
			var photoIcon = new GIcon();
			photoIcon.iconAnchor = new GPoint(10,10);
			photoIcon.infoWindowAnchor = new GPoint(10,10);
			$(xml).find('Placemark').each(function() {
				var point = latlngFind($(this).find('coordinates').text());
				var ele = $(this).find('coordinates').text().split(',');
				ele = ele[2];
				if(type=='all_no_hike'||type=='all') {
					var marker = new GMarker(point,new GIcon(photoIcon,'http://map.jacobemerick.com/image/camera.png'));
				}
				else {
					var marker = new GMarker(point,new GIcon(photoIcon,$(this).find('[name=thumb]').text()));
				}
				var photo = $(this).find('[name=full]').text();
				var desc = $(this).find('name').text();
				GEvent.addListener(marker,'click',function() {
					photoDisplay(photo,desc);;
				});
				map.addOverlay(marker);
				points.push(point);
				viewMarkers.push(marker);
			});
		}
	});
}

function displaySidebarHome() {
	$('.navbar a').removeClass('current');
	$('#content').html('<h3>Welcome</h3>');
	$('#content').append('<p>Welcome to my adventure map! This is a dynamic resource with many of my favorite locations, hikes, and photos from my adventuring in the Keweenaw area.</p><p>During my employment at Michigan Tech I decided to visit waterfalls in my spare time. I soon found other interesting destinations, and after a year of hiking, wanted to put together a map that featured these adventures that other restless people could use and enjoy. It was hard to not only gather all of the information displayed, but also hard to pick and choose what to display from the hundreds of hikes I have undertaken.</p><p>All of the content on this page is generated from my own experiences and I do not guarentee the accuracy of it. Latitude, longitude, and elevation were compiled from gps units, USGS query tools, and my own best guess. Any questions may be directed to <a href="mailto:jpemeric@gmail.com">Jacob Emerick</a>.</p>');
}

function displaySidebarHike() {
	$.ajax({
		'type':'GET',
		'url':'processor.php',
		'data':({'process':'fetch_hike','type':'all'}),
		'success':function(xml) {
			var length = $(xml).find('Placemark').length;
			if(length>0) {
				$('#content').html('<ul class="option_bar"><li><a href="javascript:void(0) //Sort A-Z" id="alpha" class="current ascending">A-Z +</a></li><li><a href="javascript:void(0) //Sort by Rating" id="rating">Rating +</a></li><li><a href="javascript:void(0) //Sort by Length" id="length">Length +</a></li><li><a href="javascript:void(0) //Sort by Difficulty" id="difficulty">Difficulty +</a></li></ul>');
				$('#content .option_bar li a').click(function() {
					if($(this).hasClass('ascending')) {
						var reverseOrder = true;
						var content = $(this).text();
						$(this).text(content.substr(0,content.length-1)+'-');
						$(this).removeClass('ascending');
						$(this).addClass('descending');
					}
					else {
						$('#content li a').each(function() {
							var content = $(this).text();
							$(this).text(content.substr(0,content.length-1)+'+');
							$(this).removeClass('descending');
							$(this).removeClass('current');
						});
						$(this).addClass('current');
						$(this).addClass('ascending');
					}
					var sortedArray = [];
					var sorterArray = [];
					var id = $(this).attr('id');
					$(xml).find('Placemark').each(function() {
						if(id=='alpha') {
							var compare = $(this).find('name').text();
						}
						if(id=='rating') {
							var compare = $(this).find('[name=rating]').text();
						}
						if(id=='length') {
							var compare = $(this).find('[name=length]').text()/1.3;
						}
						if(id=='difficulty') {
							var compare = $(this).find('[name=difficulty]').text();
						}
						if(sorterArray.length<1) {
							sorterArray[0] = compare;
							sortedArray[0] = $(this).find('name').text();
						}
						else {
							if(sorterArray[0]>compare) {
								sorterArray.splice(0,0,compare);
								sortedArray.splice(0,0,$(this).find('name').text());
							}
							else {
								for(var i=0;i<length;i++) {
									if(sorterArray[i]>compare) {
										sorterArray.splice(i,0,compare);
										sortedArray.splice(i,0,$(this).find('name').text());
										break;
									}
									else if((i+1)==length) {
										sorterArray.splice(i+1,0,compare);
										sortedArray.splice(i+1,0,$(this).find('name').text());
										break;
									}
								}
							}
						}
					});
					if(id=='rating') {
						sortedArray.reverse();
					}
					if(reverseOrder) {
						sortedArray.reverse();
					}
					displaySortedHikes(xml,sortedArray,id);
				});
				$('#content').append('<dl></dl>');
				$(window).resize(function() {
					$('#content dl').css({'height':($(window).height()-205)+'px'});
				});
				displaySortedHikes(xml,null,'alpha');
			}
			else {
				$('#content').append('<p>No hikes found. Please try again.</p>');
			}
		}
	});
}

function displaySortedHikes(xml,array,method) {
	$('#content dl').css({'height':($(window).height()-205)+'px'});
	if(!array) {
		var array = [];
		var i = 0;
		$(xml).find('Placemark').each(function() {
			array[i] = $(this).find('name').text();
			i++;
		});
	}
	$('#content dl').empty();
	for(var i=0;i<array.length;i++) {
		var xmlNode = $(xml).find('Placemark name:contains('+array[i]+')').parent();
		if(method=='alpha') {
			method = 'rating';
		}
		var selectMethod = '[name='+method+']';
		if(method=='length') {
			var iconClass = Math.floor(convertMeterstoMiles($(xmlNode).find(selectMethod).text())/2);
			if(iconClass>4) {
				iconClass = 4;
			}
		}
		else {
			var iconClass = Math.floor($(xmlNode).find(selectMethod).text()/2);
		}
		$('#content dl').append('<dt><a href="javascript:void(0) //Open this hike">'+$(xmlNode).find('name').text()+'<span class="distance">('+convertMeterstoMiles($(xmlNode).find('[name=length]').text())+')</span><span class="icon '+method+' level'+iconClass+'"><span class="hidden">'+$(xmlNode).find(selectMethod).text()+'</span></span></a></dt><dd>'+$(xmlNode).find('description').text()+'<br />Rating: '+$(xmlNode).find('[name=rating]').text()+' - Length: '+convertMeterstoMiles($(xmlNode).find('[name=length]').text())+' miles - Difficulty: '+$(xmlNode).find('[name=difficulty]').text()+'<br /><a href="javascript:void(0) //View this hike" class="map_link">Go on Map</a> <a href="http://map.jacobemerick.com/processor.php?process=fetch_hike&type='+$(xmlNode).find('name').text().split(' ').join('+')+'" class="download_link">Download</a> <a href="http://map.jacobemerick.com/?hike='+$(xmlNode).find('name').text().split(' ').join('+')+'" class="direct_link">Link</a></dd>');
	}
	$('#content dt').click(function() {
		if($(this).hasClass('active')) {
			$(this).removeClass('active');
			$(this).next().slideUp('fast');
			$(this).next().removeClass('active');
		}
		else {
			$('#content dt').removeClass('active');
			$(this).addClass('active');
			$('#content dd.active').slideUp('fast');
			$('#content dd').removeClass('active');
			$(this).next().addClass('active');
			$(this).next().slideDown('fast');
		}
	});
	$('#content dd a.map_link').click(function() {
		var hikeName = $(this).parent().prev().find('a').text();
		hikeName = hikeName.substring(0,hikeName.indexOf('('));	
		displayMapHike(hikeName);
	});
}

function displaySidebarView() {
	$('#content').html('<h3>View Options</h3>');
	$('#content').append('<h4>Hikes</h4><ul><li><input type="checkbox" name="hike" id="hike_all" /><label for="hike_all">All (default)</label></li></ul>');
	$('#content').append('<h4>Points of Interest</h4><ul><li><input type="checkbox" name="shoreline" id="poi_shoreline" /><label for="poi_shoreline">Shoreline Features</label></li><li><input type="checkbox" name="camping" id="poi_camping" /><label for="poi_camping">Camping Sites</label></li><li><input type="checkbox" name="waterfall" id="poi_waterfall" /><label for="poi_waterfall">Waterfalls</label></li><li><input type="checkbox" name="mountain" id="poi_mountain" /><label for="poi_mountain">Mountain Peak</label></li><li><input type="checkbox" name="park" id="poi_park" /><label for="poi_park">Park</label></li><li><input type="checkbox" name="all_no_hike" id="poi_all_no_hike" /><label for="poi_all_no_hike">All (no hike points)</label></li><li><input type="checkbox" name="all" id="poi_all" /><label for="poi_all">All (include hike point)</label></li></ul>');
	$('#content').append('<h4>Photos</h4><ul><li><input type="checkbox" name="all_no_hike" id="photo_all_no_hike" /><label for="photo_all_no_hike">All (no hike photos)</label></li><li><input type="checkbox" name="all" id="photo_all" /><label for="photo_all">All (include hike photos)</label></li></ul><p>* Note: photo icons may take a long time to load on your first visit. Please be patient.</p>');
	$.each(viewOptions,function(i,n) {
		$('#'+n+'').attr('checked',true);
	});
	$('input:checkbox').click(function() {
		if($(this).attr('id')=='poi_shoreline'||$(this).attr('id')=='poi_camping'||$(this).attr('id')=='poi_waterfall'||$(this).attr('id')=='poi_mountain'||$(this).attr('id')=='poi_park') {
			$('#poi_all').attr('checked',false);
			$('#poi_all_no_hike').attr('checked',false);
		}
		if($(this).attr('id')=='poi_all') {
			$('#poi_shoreline').attr('checked',false);
			$('#poi_camping').attr('checked',false);
			$('#poi_waterfall').attr('checked',false);
			$('#poi_mountain').attr('checked',false);
			$('#poi_park').attr('checked',false);
			$('#poi_all_no_hike').attr('checked',false);
		}
		if($(this).attr('id')=='poi_all_no_hike') {
			$('#poi_shoreline').attr('checked',false);
			$('#poi_camping').attr('checked',false);
			$('#poi_waterfall').attr('checked',false);
			$('#poi_mountain').attr('checked',false);
			$('#poi_park').attr('checked',false);
			$('#poi_all').attr('checked',false);
		}
		if($(this).attr('id')=='photo_all') {
			$('#photo_all_no_hike').attr('checked',false);
		}
		if($(this).attr('id')=='photo_all_no_hike') {
			$('#photo_all').attr('checked',false);
		}
		$.each(viewMarkers,function(i,n) {
			map.removeOverlay(viewMarkers[i]);
		});
		viewMarkers.splice(0,viewMarkers.length);
		viewOptions = [];
		$('input:checkbox:checked').each(function() {
			viewOptions.push($(this).attr('id'));
			if($(this).attr('id').substr(0,3)=='poi') {
				displayMapPOI($(this).attr('id').substr(4).toLowerCase());
			}
			if($(this).attr('id').substr(0,5)=='photo') {
				displayMapPhoto($(this).attr('id').substr(6).toLowerCase());
			}
			if($(this).attr('id').substr(0,4)=='hike') {
				displayMapMainHike();
			}
		});
	});
}

function displaySidebarCreate() {
	$('#content').html('<h3>Create</h3>');
	$('#content').append('<input type="checkbox" id="record" /><label for="record">Record map clicks</label><p id="intro">This tool allows you to create your own basic hike with waypoints. Once you are done, you can download the hike as a KML document, which can be used with Google Maps, Google Earth, most GPS units, and other tools.</p><ul id="points"></li>');
}

function clickCollect(marker,point) {
	if($('#record:checked').get(0)) {
		if($('#intro').get(0)) {
			$('#intro').remove();
			$('label').after('<table><tr><td>Name:</td><td><input type="text" name="name" /></td></tr><tr><td>Length:</td><td id="length"></td></tr><tr><td>Points:</td><td id="number"></td></tr><tr><td>&nbsp;</td><td><a href="javascript:void(0) //Download as KML" id="download">Download</a></td></tr></table>');
			$('#download').click(function() {
				var kmlPoints = '';
				var i = 1;
				$('#points li').each(function() {
					kmlPoints += '&point'+i+'='+$(this).text();
					i++;
				});
				var kmlName = escape($('[name=name]').val());
				var dataString = 'process=create_kml&kmlName='+kmlName+'&kmlLength='+$('#length').text()+'&kmlNumber='+$('#number').text()+kmlPoints;
				$.ajax({
					'type':'GET',
					'url':'processor.php',
					'data':dataString,
					'success':function(fileName) {
						window.location.href = fileName;
					}
				});
			});
		}
		$('#points').append('<li>'+point.lng().toFixed(8)+','+point.lat().toFixed(8)+'<span class="del"></span></li>');
		$('#points .del').click(function() {
			$(this).parent().remove();
			drawLine();
		});
		drawLine();
	}
}

function drawLine() {
	clearTempPoints();
	var points = [];
	$('#points li').each(function() {
		points.push(latlngFind($(this).text()));
	});
	var polyLine = new GPolyline(points,'#a2bce1',3,.8);
	$('#length').text(convertMeterstoMiles(polyLine.getLength()).toFixed(1)+' miles');
	$('#number').text($('#points li').length);
	map.addOverlay(polyLine);
	tempPoints.push(polyLine);
}

function clearTempPoints() {
	$.each(tempPoints,function(i,n) {
		map.removeOverlay(tempPoints[i]);
	});
	tempPoints.splice(0,tempPoints.length);
}

function positionFinder(array) {
	var bounds = new GLatLngBounds();
	for(var i=0;i<array.length;i++) {
		bounds.extend(array[i]);
	}
	map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));
}

function latlngFind(coordinate) {
	coordinate = coordinate.split(',');
	return new GLatLng(coordinate[1],coordinate[0]);
}

function convertMeterstoMiles(meters) {
	return Math.round((.000621371192*meters)*10)/10;
}

function convertMeterstoFeet(meters) {
	return Math.round(3.2808399*meters);
}

function photoDisplay(photo,description) {	
	var loading = '<div id="zoom_load"></div>';
	$('body').append(loading);
	$('#zoom_load').css({'top':($(window).height()/2-12)+'px','left':($(window).width()/2-12)+'px'});
	$('#zoom_load').animate({'opacity':'show'},500);
	var html = '<div id="zoom"><div id="zoom_inner"><div id="zoom_content"><img src="'+photo+'" /></div><div id="zoom_info">'+description+'</div></div></div>';
	$('body').append(html);
	$('#zoom').css({'top':($(window).height()/2-310)+'px','left':($(window).width()/2-400)+'px'});
	$('#zoom #zoom_content img').load(function() {
		$('#zoom_load').remove();
		$('#zoom').animate({'opacity':'show'},500);
		$('#zoom_inner').css({'width':$('#zoom #zoom_content img').width()+'px'});
	});
	$('html').click(function(){
		$('#zoom').animate({'opacity':'hide'},500,function() {
			$('#zoom_load').remove();
			$('#zoom').remove();
		});
	});
	$(document).keyup(function(event){
		$('#zoom').animate({'opacity':'hide'},500,function() {
			$('#zoom_load').remove();
			$('#zoom').remove();
		});
	});
}

var gaJsHost = (("https:"==document.location.protocol) ? "https://ssl.":"http://www.");
document.write(unescape("%3Cscript src='"+gaJsHost+"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

function startAnalytics() {
	try {
		var pageTracker = _gat._getTracker("UA-9807801-1");
		pageTracker._trackPageview();
	} 
	catch(err) {}
}
