document.getElementsByClassName = function(class_name) {
	var all_obj, ret_obj = new Array(), j = 0, strict = 0, a = 1

	if (document.getElementsByClassName.arguments.length > 1)
		strict = ( document.getElementsByClassName.arguments[1] ? 1 : 0 )

	if (document.all) {
		all_obj = document.all
	} else if (document.getElementsByTagName && !document.all) {
		all_obj = document.getElementsByTagName("a")
	}

	for (i = 0; i < all_obj.length; i++) {
		if (
			(' ' + all_obj[i].className + ' ').toLowerCase().match(
				new RegExp (( strict ? '^ ' + class_name + ' $' : '^.* ' + class_name + ' .*$').toLowerCase(),'g' )
			)
		 ) {
			ret_obj[j++] = all_obj[i]
		}
	}

	return ret_obj
}


function addEvent(obj,evType,fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType,fn,false)
		return true
	} else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType,fn)
		return r
	} else {
		return false
	}
}

function getTarget(e) {
	if(window.event && window.event.srcElement) {
		r = window.event.srcElement
	} else {
		r = e
	}

	return r
}

function getParent(el, pTagName) {
	if (el == null) {
        	return null
	} else if (el.nodeType == 1 && elementCompare(el.tagName,pTagName)) {
		return el
	} else {
		return getParent(el.parentNode, pTagName)
	}
}

function elementCompare(a,b) {
	a = a.toLowerCase() // Gecko bug, supposed to be uppercase
	b = b.toLowerCase()

	if((a == b) || (a == "html:" + b)) { // opera has html: in front of elements
		return true
	} else {
		return false
	}
}


var window_left = Math.round(0.1 * window.screen.width)
var window_top = Math.round(0.1 * window.screen.height)

var window_conf = "location=no,menubar=no,toolbar=no,directories=no,status=no,dependent=yes,resizable=yes,scrollbars=yes,top="+window_top+",left=" +window_left

var window_size = ",width=550,height=500"
var window_padding = 0

if(navigator.userAgent.match(/Gecko/i)) {
	window_padding = 20
} else if(navigator.userAgent.match(/MSIE/i)) {
	window_padding = 50
}

function imageEnlarge(e) {
	if(window.event && window.event.srcElement) {
		linky = window.event.srcElement
	} else {
		linky = this
	}


	if(elementCompare(linky.tagName,"img")) {
		linky = getParent(linky,"A")
	}

	title = linky.title

	re = /^.*\([^,]+,\s*(\d+)\s*x\s*(\d+)\)$/i
  	dimensions = title.match(re)
	uri = linky.href

	if(dimensions) {
		width = parseInt(dimensions[1]) + window_padding
		height =  parseInt(dimensions[2]) + window_padding

		if(window.open(uri,"CNF_enlarge",window_conf + ",width=" + width + ",height=" + height)) {
			cancelDefault(e)
			return false
		}
	} else {
		height = Math.round(0.6 * window.screen.height)
		ratio = parseInt(linky.getElementsByTagName("img")[0].width) / parseInt(linky.getElementsByTagName("img")[0].height)
		width = Math.round(height * ratio)

		if(window.open(uri,"CNF_enlarge",window_conf + ",width=" + width + ",height=" + height)) {
			cancelDefault(e)
			return false
		}
	}
}

window.onload = function() {
	enlarge = document.getElementsByClassName('enlarge');

	for(n = 0; n < enlarge.length; n++) {
		addEvent(enlarge[n],"click",imageEnlarge)
	}
}

function cancelDefault(e) {
	if (e.cancelable) {
		e.preventDefault()
	} else if (document.all) {
		event.returnValue = false
	} else {
		alert('not cancelable')
	}
}