window.onload = function() {
	
	if (typeof(document.getElementById) == 'undefined') {
		document.getElementById = function(id) {
			return document.all[id];
		}
	}
	
	if (typeof(document.getElementsByClassName) == 'undefined') {
		document.getElementsByClassName = function(tag, elementClass) {
			var elements = document.getElementsByTagName(tag);
			var classElements = new Array();
			for (var i = 0; i< elements.length; i++) {
				if (elements[i].className == elementClass) {
					classElements[classElements.length] = elements[i];
				}
			}
			return classElements;			
		}
	}
	
	if (document.getElementById('thumbs')) {
		var thumbs = document.getElementsByClassName('IMG', 'thumb');
		for (var i = 0; i< thumbs.length; i++) {
			
			thumbs[i].className = (i == '0') ? 'selected' : 'out';			
			
			addEventHandler(thumbs[i], 'mouseover', true, function () {
				if (this.className != 'selected') {
					this.className = 'over';
				}
			});
			
			addEventHandler(thumbs[i], 'mouseout', true, function () {
				if (this.className != 'selected') {
					this.className = 'out';
				}
			});
			addEventHandler(thumbs[i], 'click', true, function() {
					cleanSelectors();				
					this.className = 'selected';
					
					var query = this.src.substr(this.src.indexOf('?')+3).split('/');
					document.getElementById('main_image').src = 'image.php?q=' + query[0] + '/image';
					setInnerHTML(document.getElementById('caption'), eval('image_' + query[0]));
				}
			);
		}
	}
	
}

function cleanSelectors() {
	if (document.getElementById('thumbs')) {
		var thumbs = document.getElementsByClassName('IMG', 'selected');
		for (var i = 0; i < thumbs.length; i++) {
			thumbs[i].className = 'out';
		}
	}
}

function addEventHandler(element, eventName, reference, functionName) {

	if (element.addEventListener) {
		element.addEventListener(eventName, functionName, false);
	}
	if (element.attachEvent && !reference) {
		element.attachEvent('on' + eventName, functionName);
	}
	else {
		eval('element.on' + eventName + ' = ' + functionName);
	}
	
}

function setInnerHTML(element, toValue) {
	if (typeof(element.innerHTML) != 'undefined') {
		element.innerHTML = toValue;
	}
	else {
		var range = document.createRange();
		rangthis.selectNodeContents(element);
		rangthis.deleteContents();
		element.appendChild(rangthis.createContextualFragment(toValue));
	}
}

function AddText(id, text) {
	var textarea = document.getElementById(id);

	// Attempt to create a text range (IE).
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange) {
		var caretPos = textarea.caretPos;

		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		caretPos.select();
	}
	// Mozilla text range replace.
	else if (typeof(textarea.selectionStart) != "undefined") {
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + text + end;

		if (textarea.setSelectionRange) {
			textarea.focus();
			textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);
		}
		textarea.scrollTop = scrollPos;
	}
	
	// Just put it on the end.
	else {
		textarea.value += text;
		textarea.focus(textarea.value.length - 1);
	}
}

function storeCaret(text) {
	// Only bother if it will be useful.
	if (typeof(text.createTextRange) != "undefined")
		text.caretPos = document.selection.createRange().duplicate();
}

function toggleCollapse(id) {
	var element = document.getElementById(id);
	element.style.display == 'none' ? element.style.display = '' : element.style.display = 'none';
}