function findObj(n, d) {
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

var activepage = 0;
var maploaded = false;
var bgloaded = false;
var navimemory = "";
var xmlpathstart = "http://www.serum.fi/admin/images.php";
var cachebuster = new Date().getTime();

// Handle menu clicks etc.
function navi(nmbr) {
	// Remove activation from button
	$('#mainmenubtn' + activepage).removeClass('active');
	// slide up old content area
	$('#pagecontent' + activepage).slideUp('slow', function() {
		// handle menu button and variable
		activepage = nmbr;
		// hide gallery and return to normal bg pic if not page 2 or 22
		if (nmbr != 2 && nmbr != 22 && bgloaded == false) {
			$("#bgpic").remove(); // completely remove flash container (to prevent IE cache probs)
			$("#hiddengallery").after('<div id="bgpic"></div>'); // re-create it  (to prevent IE cache probs)
			cachebuster = cachebuster + 1; // increase cachebuster variable (to prevent IE cache probs)
			// Check flash version
			if (majorflashversion == "" || majorflashversion < 8) {
				$('#mainmenubtn2').hide();
				$('#flashnotify').html('For the best Serum experience and <strong>access to our projects</strong>, you need a recent Flash plug-in. Get it for free <a href="http://www.adobe.com/go/EN_US-H-GET-FLASH">here</a>.')
			} else {
				$('#flashnotify').hide();
				
				xmlfilepath = xmlpathstart + "?album=7"; // Build XML file path for flash
				var flashvars = {
					xmlfile: xmlfilepath
				};
				var params = {
					allowScriptAccess: "always",
					wmode: "transparent"
				};
				var attributes = {
					id: "bgpic",
					name: "bg"
				};
				swfobject.embedSWF("gallery.swf?cachebuster=" + cachebuster + "&", "bgpic", "100%", "100%", "8.0.0", "expressInstall.swf", flashvars, params, attributes);
				bgloaded = true;
			}
		}
		// load hidden flash to generate album list
		if (nmbr == 2) {
			xmlfilepath = xmlpathstart + "?gallery=1"; // Build XML file path for flash
			var flashvars = {
				xmlfile: xmlfilepath
			};
			var params = {
				allowScriptAccess: "always",
				wmode: "transparent"
			};
			var attributes = {
				id: "hiddengallery",
				name: "hiddenssp"
			};
			swfobject.embedSWF("gallery.swf?cachebuster=" + cachebuster + "&", "hiddengallery", "1%", "1%", "8.0.0", "expressInstall.swf", flashvars, params, attributes);
		}
		// Slide down new content area
		$('#pagecontent' + nmbr).slideDown('slow',function() {
			$('#mainmenubtn' + nmbr).addClass('active');
			// if this is a map page
			if (nmbr == 3 && maploaded == false) {
				initializemap();
				maploaded = true;
			}
		});	
	});
}


// Handle album selections in project gallery
function openalbum(albumid) {
	// get album number from album id
	albumtoload = albumid.substring(albumid.search('-')+1);
	// Copy title and description
	findObj('selectedalbumtitle').innerHTML = findObj(albumid + '-title').innerHTML;
	findObj('selecteddesc').innerHTML = findObj(albumid + '-description').innerHTML;
	// Replace image navigation with loading feedback 
	findObj('prevnext').innerHTML = "loading...";
	// Load flash
	$("#bgpic").remove(); // completely remove flash container (to prevent IE cache probs)
	$("#hiddengallery").after('<div id="bgpic"></div>'); // re-create it  (to prevent IE cache probs)
	cachebuster = cachebuster + 1; // increase cachebuster variable (to prevent IE cache probs)
	
	xmlfilepath = xmlpathstart + "?album=" + albumtoload; // Build XML file path for flash
	var flashvars = {
		xmlfile: xmlfilepath
	};
	var params = {
		allowScriptAccess: "always",
		wmode: "transparent"
	};
	var attributes = {
		id: "bgpic",
		name: "bg"
	};
	swfobject.embedSWF("gallery.swf?cachebuster=" + cachebuster + "&", "bgpic", "100%", "100%", "8.0.0", "expressInstall.swf", flashvars, params, attributes);
	// Change to album view mode
	navi(22);
}


// Show and hide project info
var infoopen = false;

function showinfo() {
	if (infoopen == false) {
		$('#selecteddesc').show();
		infoopen = true;
	}
	else {
		$('#selecteddesc').hide();
		infoopen = false;
	}
}

var majorflashversion = 0;

// Initialize page
$(document).ready(function() {
	// MAKE NON-JS COMPATIBLE begin
		// hide default content
		$("#pagecontent0").css("display","none");
		// show map
		$("#mapcanvas").css("display","block");
		// replace navigation links with javascript alternatives
		$("#logo").attr("href","javascript:navi(0)");
		$("#mainmenubtn1").attr("href","javascript:navi(1)");
		$("#mainmenubtn2").css("display","block");
		$("#mainmenubtn2").attr("href","javascript:navi(2)");
		$("#mainmenubtn3").attr("href","javascript:navi(3)");
	// MAKE NON-JS COMPATIBLE end
	
	// Detect if flash  is installed and get version
	swfobject.addDomLoadEvent(flashdetection);
	
	// get flash player version
	findObj("flashnotify").innerHTML = swfobject.getFlashPlayerVersion();
	
	// Load first page
	navi(0);
	// fill image navigation to variable
	navimemory = findObj('prevnext').innerHTML;
});


function flashdetection() {
	var playerVersion = swfobject.getFlashPlayerVersion(); // returns a JavaScript object
	// var output = "You have Flash player " + playerVersion.major + "." + playerVersion.minor + "." + playerVersion.release + " installed";
	majorflashversion = playerVersion.major;
}
	


// Email links
function mailme(name,domain,subj) {
	if (subj == undefined) subj = ""; 
	lctn = 'mailto:' + name + '@' + domain + '?subject=' + subj;
	document.location = lctn;
}

// Map control
function initializemap() {
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("mapcanvas"));
		map.setCenter(new GLatLng(60.195985,24.950037), 15);
		
		// Add controls
		map.addControl(new GSmallMapControl());
		
		// Create our "tiny" marker icon
		var blueIcon = new GIcon(G_DEFAULT_ICON);
		blueIcon.image = "http://www.serum.fi/site/images/mapicon.png";
		
		// Set up our GMarkerOptions object
		markerOptions = { icon:blueIcon };
		
		// Add 10 markers to the map at random locations
		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var lngSpan = northEast.lng() - southWest.lng();
		var latSpan = northEast.lat() - southWest.lat();
		var latlng = new GLatLng(60.195600,24.950037);
		map.addOverlay(new GMarker(latlng, markerOptions));
	}
}


// External slide show control 
	
	
	function sspToggleDisplayMode() {
		thisMovie("bg").sspToggleDisplayMode();
	}
	
	function sspNextImage() {
		if (obj = findObj('prevnext')) {
			obj.innerHTML = "loading..."
		}
		thisMovie("bg").sspNextImage();
	}
	
	function sspPreviousImage() {
		if (obj = findObj('prevnext')) {
			obj.innerHTML = "loading..."
		}
		thisMovie("bg").sspPreviousImage();
	}
	
	// when the image has loaded...
	function loadcomplete() {
		if (obj = findObj('prevnext')) {
			obj.innerHTML = navimemory;
		}
	}
	
	/*
	Passes the ID of the album from the XML file
	we want SlideShowPro inside the SWF to load
	*/
	function sspLoadAlbum(album) {
		thisMovie("bg").sspLoadAlbum(album);
	}
	
	function thisMovie(movieName) {
		if (navigator.appName.indexOf("Microsoft") != -1) {
			return window[movieName]
		} else {
			return document[movieName]
		}
	}
	
// Events

// On resize reload the page
	window.onresize = function() {
		history.go(0);
	};
	
	// for ff
	function resize() {
		window.location.href=window.location.href;
	};
