// imgZoomクラス
function imgZoom() {
	var org = "cursor";
	var w = 200;
	var h = 200;
	var l = 0;
	var t = 0;
	if (arguments.length > 0) {
		var opts = arguments[0];
		if ("org" in opts) {
			org = opts.org;
		}
		if ("left" in opts) {
			l = opts.left;
		}
		if ("top" in opts) {
			t = opts.top;
		}
		if ("width" in opts) {
			w = opts.width;
		}
		if ("height" in opts) {
			h = opts.height;
		}
	}
	h += 17;
	this.zmdiv = document.createElement("DIV");
	with (this.zmdiv.style) {
		position = "absolute";
		left = l + "px";
		top = t + "px";
		width = w + "px";
		height = h + "px";
		padding = "5px";
		border = "2px solid #AAAAAA";
		backgroundColor = "#FFFFFF";
		display = "none";
	}
	this.org = org;
}

imgZoom.prototype.closeImg = "http://www.pasonet-world.com/images/close.gif";

imgZoom.prototype.setHandler = function(elem) {
	setImgZoomHandler(elem, this);
}

function setImgZoomHandler(elem, izobj) {
	elem.onclick = function(evt) {
		if(!evt) evt = window.event;
		var div = izobj.zmdiv
		if (elem.className == "imgclose") {
			div.style.display = "none";
		}
		else {
			var pos;
			if (izobj.org == "cursor") {
				pos = Position.adjustPosition(evt.clientX, evt.clientY, parseInt(div.style.width), parseInt(div.style.height));
			}
			else if (izobj.org == "elem") {
				pos = Position.getElementPosition(elem);
			}
			div.style.left = pos.x + "px";
			div.style.top = pos.y + "px";
			div.innerHTML = '<div style="width: ' + div.style.width + '; float: left;"><img class="imgclose" style="float: right; cursor: pointer;" src="' + izobj.closeImg + '"></div><div style="left: 0px; top: 17px; width: ' + div.style.width + '; float: left;"><img style="width: ' + div.style.width + ';" src="' + elem.src + '"></div>';
			div.style.display = "block";
			var imgs = div.getElementsByTagName("IMG");
			setImgZoomHandler(imgs[0], izobj);
		}
	}
}

// Positionクラス
function Position() { }

Position.safari = (navigator.userAgent.indexOf("Safari") >= 0);
Position.opera = (navigator.userAgent.indexOf("Opera") >= 0);

Position.getElementPosition = function(elem) {
	if (!elem) return {x: 0, y: 0};
	var left = elem.offsetLeft;
	var top = elem.offsetTop;
	var parent = elem.offsetParent;
	while (parent) {
		left += parent.offsetLeft;
		top += parent.offsetTop;
		parent = parent.offsetParent;
	}
	return {x: left, y: top};
}

Position.adjustPosition = function(x, y, width, height) {
	var cx = x;
	var cy = y;
	var scrollPos = Position.getScrollPosition();
	var screenSize = Position.getScreenSize();

	// Safariの場合位置調整
	if (Position.safari) {
		cx -= scrollPos.x;
		cy -= scrollPos.y;
	}
	if (cx + width > screenSize.w) {
		cx = screenSize.w - (width + 3);
	}
	if (cy + height > screenSize.h) {
		cy = screenSize.h - (height + 3);
	}
	cx += scrollPos.x;
	cy += scrollPos.y;
	return {x: cx, y: cy};
}

Position.getScrollPosition = function() {
	var obj = new Object();
	if (Position.safari) {
		obj.x = window.pageXOffset;
		obj.y = window.pageYOffset;
	}
	else {
		obj.x = document.documentElement.scrollLeft || document.body.scrollLeft;
		obj.y = document.documentElement.scrollTop || document.body.scrollTop;
	}
	return obj;
}

Position.getScreenSize = function() {
	var obj = new Object();
	if (!Position.safari && !Position.opera) {
		obj.w = document.documentElement.clientWidth || document.body.clientWidth || document.body.scrollWidth;
		obj.h = document.documentElement.clientHeight || document.body.clientHeight || document.body.scrollHeight;
	}
	else {
		obj.w = window.innerWidth;
		obj.h = window.innerHeight;
	}
	return obj;
}
