function addLoadEvent(f)
{
	var o = window.onload;
	if(typeof window.onload != 'function') { window.onload = f; }
	else { window.onload = function() { o(); f(); }; }
}

//_____[ HOME : explore ]_____\\

function addExploreHandler()
{
	$('#exploring_previous,#exploring_next').click
	(
		function(event)
		{
			var n = $(this).attr('href').split('=')[1];
			$.get
			(
				'/index.functions.php',
				{type:'ajax',f:n},
				function(data)
				{
					if(data!='')
					{
						if($.browser.msie) // fadeOut + png transparency issues = jagged, black background.
						{
							$('#explore').replaceWith(data);
							addExploreHandler();
							if(window.addPngTransparency) { addPngTransparency(); }
						}
						else
						{
							$('#explore').fadeOut
							(
								'fast',
								function()
								{
									$('.content').prepend(data);
									$('.content div:first').hide().fadeIn('fast');
									$(this).remove();
									addExploreHandler();
								}
							);
						}
					}
				}
			);
			event.preventDefault();
		}
	);
}
$(document).ready(addExploreHandler);

//_____[ SEARCHBOX : q ]_____\\

function checkSearchbox()
{
	if(!document.getElementById('q')) return false;
	var q = document.getElementById('q');
	var q_default = 'Search this site';
	q.onfocus = function()
	{
		if(q.value == q_default)
		{
			q.value = '';
		}
	};
	q.onblur = function()
	{
		if(q.value == '')
		{
			q.value = q_default;
		}
	};
}
addLoadEvent(checkSearchbox);

//_____[ AUXILIARY : expand + collapse ]_____\\

$(document).ready
(
 	function()
	{
		$('#facets li a').click
		(
			function(event)
			{
				event.stopPropagation();
			}
		);
		$('#facets > ul > .hier, #facets > ul > .parent').click
		(
		 	function()
			{
				$(this).find('ul').slideToggle('slow');
				if($(this).hasClass('expanded'))
				{
					$(this).removeClass('expanded current');
					$(this).find('.child').removeClass('current');
				}
				else
				{
					$(this).addClass('expanded');
				}
			}
		);
		$('#facets > ul > .hier, #facets > ul > .parent').hover
		(
			function()
			{
				if(!$(this).hasClass('expanded'))
				{
					$(this).addClass('collapsed');
				}
			}, 
			function()
			{
				if(!$(this).hasClass('expanded'))
				{
					$(this).removeClass('collapsed');
				}
			}
		);
		$('#aux_browse').click
		(
			function()
			{
				if(!$(this).hasClass('active'))
				{
					$('#aux_search').removeClass('active');
					$(this).addClass('active');
					cookie.create('df-aux-browse','active',1);
					$('#advancedsearch').hide();
					$('#facets').fadeIn();
					$(this).blur();
				}
				return false;
			}
		);
		$('#aux_search').click
		(
			function()
			{
				if(!$(this).hasClass('active'))
				{
					$('#aux_browse').removeClass('active');
					cookie.erase('df-aux-browse');
					$(this).addClass('active');
					$('#facets').hide();
					$('#advancedsearch').fadeIn();
					$('#q_aux').focus();
				}
				return false;
			}
		);
		var c = cookie.get('df-aux-browse');
		if(c && c == 'active')
		{
			if(!$(this).hasClass('active'))
			{
				$('#aux_search').removeClass('active');
				$('#aux_browse').addClass('active');
				$('#advancedsearch').hide();
				$('#facets').fadeIn();
				$(this).blur();
			}
			return false;
		}
	}
);

//_____[ LINK: Request a print ]_____\\

var df_print = 
{
	openRequest: function()
	{
		var w = 470;
		var h = 520;
		dimensions.get();
		var w2 = ((dimensions.w-w)/2)-53;
		var h2 = (dimensions.h-h)/2;
		//window.open(this.href,'','width=470,height=520,scrollbars=1,resizable=yes');
		window.open(this.href,'','width='+w+',height='+h+',scrollbars=1,resizable=yes,left='+w2+',top='+h2+'');
		return false;
	},
	
	init: function()
	{
		if(!document.getElementById || !document.getElementById('request_link') || !document.getElementById('photo_print')) return false;
		var r = document.getElementById('request_link');
		var p = document.getElementById('photo_print');
		r.onclick = df_print.openRequest;
		p.onclick = df_print.openRequest;
	}
}
addLoadEvent(df_print.init);

// _____[ REQUEST: terms and conditions ]_____ \\

var df_request = 
{
	form: null,
	submitbutton: null,
	terms_and_conditions: null,
	license: null,
	
	seeLicense: function()
	{
		df_request.license.onclick = function()
		{
			opener.location.href = this.getAttribute('href');
			return false;
		}
	},
	
	setActivateSubmit: function()
	{
		df_request.terms_and_conditions.onclick = function()
		{
			df_request.submitbutton.disabled = (df_request.terms_and_conditions.checked == false) ? true : false;
		}
	},
	
	disableSubmit: function()
	{
		df_request.terms_and_conditions.checked = false;
		df_request.submitbutton.disabled = true;
	},
	
	assignElements: function()
	{
		df_request.form = document.getElementById('df_request_form');
		df_request.submitbutton = document.getElementById('submit');
		df_request.terms_and_conditions = document.getElementById('terms_and_conditions');
		df_request.license = document.getElementById('license');
	},
	
	init: function()
	{
		if(!document.getElementById || !document.getElementById('df_request_form')) return false;
		df_request.assignElements();
		df_request.disableSubmit();
		df_request.setActivateSubmit();
		df_request.seeLicense();
	}
}
addLoadEvent(df_request.init);

// _____[ THUMBNAILS: show and hide ]_____ \\

var df_th = 
{
	container: null,
	links: null,
	thumbnails: null,
	active: null,
	record: null,
	
	assignElements: function()
	{
		df_th.container = document.getElementById('results');
		df_th.links = document.getElementsByClassName('thumbnail');
	},
	
	getImageSrc: function(element)
	{
		var thumbnail, src;
		
		thumbnail = element.firstChild;
		while(thumbnail.nodeType != 1) { thumbnail = element.firstChild.nextSibling; }
		src = thumbnail.getAttribute('src');
		src = src.split('-th');
		src = src[0] + src[1];
		return src;
	},
	
	getPermalink: function(record_id)
	{
		var href;
		
		href = document.getElementById(record_id + '-permalink');
		href = (href) ? href.getAttribute('href') : '';
		return href;
	},
	
	showFullImage: function(element)
	{
		var img, src, alt;
		var a, href;
		var record_id;
		
		if(df_th.active)
		{
			df_th.active.parentNode.removeChild(df_th.active);
			df_th.active = null;
			df_th.record.className = 'record';
			df_th.record = null;
		}
		df_th.active = document.createElement('div');
		df_th.active.className = 'access';
		
		record_id = element.parentNode.getAttribute('id');
		href = df_th.getPermalink(record_id);
		
		src = df_th.getImageSrc(element);
		alt = element.getAttribute('title');
		
		img = document.createElement('img');
		img.setAttribute('src',src);
		img.setAttribute('alt',alt);
		
		a = document.createElement('a');
		a.setAttribute('href',href);
		
		a.appendChild(img);
		df_th.active.appendChild(a);
		
		df_th.record = element.parentNode;
		df_th.record.appendChild(df_th.active);
		fadeIn(df_th.active);
		df_th.record.className = df_th.record.className + ' active';
	},
	
	setThumbnails: function()
	{
		for(var i = 0; i < df_th.links.length; i++)
		{
			df_th.links[i].index = i;
			df_th.links[i].onclick = function()
			{
				df_th.showFullImage(this);
				cookie.create('df_th','index::' + this.index + '|page::' + location.href,1,'/photos/');
				return false;
			}
		}
	},
	
	getLastThumbnail: function()
	{
		var url = location.href;
		var c = cookie.get('df_th');
		if(c)
		{
			var cc = c.split('|');
			var i = cc[0].split('::');
			var p = cc[1].split('::');
			var index = i[1];
			var path = p[1];
			if(path == url)
			{
				return df_th.links[index];
			}
		}
		return df_th.links[0];
	},
	
	init: function()
	{
		if(!document.getElementById || !document.getElementById('results')) return false;
		df_th.assignElements();
		df_th.setThumbnails();
		df_th.showFullImage(df_th.getLastThumbnail());
	}
}
addLoadEvent(df_th.init);

//_____[ effects ]_____\\

function setOpacity(e,i)
{
	if(e.filters) { e.style.filters = 'alpha(opacity=' + i + ')'; }
	else { e.style.opacity = i/100; }
}

function fadeIn(e)
{
	setOpacity(e,0);
	e.style.visibility = 'visible';
	for(var i = 0; i <= 100; i += 5)
	{
		(
			function()
			{
				var pos = i;
				setTimeout( function(){ setOpacity(e,pos); }, (pos + 1) * 5);
			}
		)();
	}
}

//_____[ getDimensions ]_____\\

var dimensions = 
{
	w: null,
	h: null,
	
	get: function()
	{
		if(typeof(window.innerWidth) == 'number')
		{
			dimensions.w = window.innerWidth;
		}
		else if(document.documentElement && document.documentElement.clientWidth)
		{
			dimensions.w = document.documentElement.clientWidth;
		}
		if(typeof(window.innerHeight) == 'number')
		{
			dimensions.h = window.innerHeight;
		}
		else if(document.documentElement && document.documentElement.clientHeight)
		{
			dimensions.h = document.documentElement.clientHeight;
		}
	}
}

//_____[ getElementsByClassName ]_____\\

document.getElementsByClassName = function(name)
{
	var results = new Array();
	var a = document.getElementsByTagName("*");
	for(var i=0; i<a.length; i++)
	{
		if(a[i].className.indexOf(name) != -1)
		{
			results[results.length] = a[i];
		}
	}
	return results;
};


//_____[ COOKIE ]_____\\

var cookie = 
{
	date: function(d)
	{
		var datetime = new Date();
		datetime.setTime(datetime.getTime()+(d*24*60*60*1000));
		return datetime.toGMTString();
	},
	
	create: function(n,v,d,p)
	{
		var name, date, path;
		
		name = n + '=' + v;
		date = (d) ? '; expires=' + cookie.date(d) : '';
		path = (p) ? '; path=' + p : '; path=/';
		document.cookie = name + date + path;
	},
	
	get: function(n)
	{
		if(document.cookie.indexOf(n) != -1) { var c = document.cookie.split(n + '='); if(c[1]) { var u = c[1].split(';'); return u[0]; } }
		else { return null; }
	},
	
	erase: function(n)
	{
		cookie.create(n,'',-1);
	}
}
