/*
expand.js v1.3
Author: soramimi
Author URI: http://swordfish.s53.xrea.com/
*/

function showMore(id, uri) {
	if(document.getElementById) {
		var d = document.getElementById('expand-'+id);
		var m = document.getElementById('more-link-'+id);
		if(d.style.display) {
			m.style.display = "none";
			d.style.display = "block";
			var l = document.getElementById('less-link-'+id);
			addListener(l, 'mousedown', eventMousedown);
		} else {
			location.href = uri;
			return true;
		}
	} else { 
		location.href = uri;
		return true;
	}
}

function eventMousedown(e) {
	var elem = e.srcElement || e.target;
	var id   = elem.hash.match(/\d+/)[0];
	var d    = document.getElementById('expand-'+id);
	var m    = document.getElementById('more-link-'+id);
	var l    = document.getElementById('less-link-'+id);

	d.style.display = "none";
	m.style.display = "block";

	var gp  = getMousePosition(e);
	var pos = getElementPosition(m);
	window.scrollTo(pos.x-gp.x, pos.y-gp.y+10);
	removeListner(l, 'mousedown', eventMousedown);
}

function getElementPosition(e) {
	var p = { x:0, y:0 };
	do {
		p.x += e.offsetLeft || 0;
		p.y += e.offsetTop || 0;
	} while (e = e.offsetParent);
	return p;
}

function getMousePosition(e) {
	var p = { x:0, y:0 };
	if(e) {
		p.x = e.clientX;
		p.y = e.clientY;
	} else {
		p.x = event.clientX;
		p.y = event.clientY;
	}
	return p;
}

function addListener(e, type, func) {
	if (!e) { return false; }
	if (e.addEventListener) {
		e.addEventListener(type, func, false);
	} else if(e.attachEvent) {
		e.attachEvent('on'+type, func);
	} else {
		return false;
	}
	return true;
}

function removeListner(e, type, func) {
	if (!e) { return false; }
	if (e.removeEventListener) {
		e.removeEventListener(type, func, false);
	} else if(e.detachEvent) {
		e.detachEvent('on'+type, func);
	} else {
		return false;
	}
	return true;
}
