/*
Charset: UTF-8（京雀）
Version: 20090117
Programing by Masao Takahashi.
*/
function ImageZoomer() {
	this.aConfig = new Array();
	this.ajax = new MyHttpRequest();
	this.isExec = false;
	this.interval = 50; //ミリ秒単位
	this.divide = 8;
}
ImageZoomer.prototype = {
onLoad : function()
{
	for (var j in g_zoomer.aConfig) {
		
		g_zoomer.execConfig(j);
	}
},
click : function(node)
{//not loaded body
	return false;
},
/*this is old function*/
setConfig : function(imgDir,interval,devide)
{
	g_zoomer.registElementsByClass(false,"zoomable","image",imgDir);
},
/*extra function*/
registExHandler : function(eventHandler)
{
	g_zoomer.eventHandler = eventHandler;
},
_buildConfig : function(mode)
{
	var config = new Array();
	var j = mode.indexOf(":");
	if (j >= 0) {
		config.mode = mode.substr(0,j);
		config.option = mode.substr(j+1);
	}
	else {
		config.mode = mode;
		config.option = false;
	}
	return config;
},
registElementById : function(flag, id, mode, dirName)
{
	var config = g_zoomer._buildConfig(mode);
	config.id = id;
	config.dirName = dirName;
	g_zoomer.aConfig.push(config);
	if (flag) g_zoomer.execConfig(g_zoomer.aConfig.length-1);
},
registElementsByClass : function(flag, className, mode, dirName)
{
	var config = g_zoomer._buildConfig(mode);
	config.className = className;
	config.dirName = dirName;
	g_zoomer.aConfig.push(config);
	if (flag) g_zoomer.execConfig(g_zoomer.aConfig.length-1);
},
execConfig : function(index)
{
	
	var config = g_zoomer.aConfig[index];
	
	if (config.className) {
		var list = getElementsByClass(config.className,null,null);
		
	}
	else {
		var node = document.getElementById(config.id);
		if (node == null) { return; }
		var list = new Array();
		list.push(node);
	}
	if (config.mode == 'image') {
		config.thumbList = new Array();
		config.thumbCount = 0;
		for (var i=0; i<list.length; i++) {
			var node = list[i];
			node._config = index;
			node.onclick = g_zoomer.doOpen;
			node.style.cursor = "url('"+config.dirName+"/zoomin.cur'),pointer";
			if (!config.thumbList[node.href]) {
				config.thumbList[node.href] = new Array();
				config.thumbList[node.href].id = config.thumbCount ++;
				config.thumbList[node.href].caption = "";
			}
			var nodeImg = getFirstElement(node);
			if (!nodeImg) continue;
			if (nodeImg.tagName.toLowerCase() != 'img') continue;

			var caption = "";
			//var temp = getElementsByClass("js-caption",node.parentNode,null);
			//if (temp.length) caption = temp[0].innerHTML;
			if (nodeImg.title) caption = nodeImg.title;
			config.thumbList[node.href].img = nodeImg;
			config.thumbList[node.href].caption = caption;
		}
	}
	else {
		for (var i=0; i<list.length; i++) {
			var node = list[i];
			node._config = index;
			node.onclick = g_zoomer.doOpen;
		}
	}
},
doOpen : function(e)
{
	
	var config = g_zoomer.aConfig[this._config];
	
	g_zoomer.open(this, config);
	return false;
},
open : function(linkNode, config)
{
	
	g_zoomer.isZooming = false;
	g_zoomer.close();
	g_zoomer.linkNode = linkNode;
	g_zoomer.href = g_zoomer.linkNode.href;
	g_zoomer.config = config;//g_zoomer.aConfig[g_zoomer.linkNode._config];
	

	if (g_zoomer.config.mode == "image") {
		var thumb = g_zoomer.config.thumbList[g_zoomer.href];
		g_zoomer.thumbID = thumb.id;
		g_zoomer.thumbImg = thumb.img;
		g_zoomer.ajax_url = g_zoomer.config.dirName+"/window.php";
		
	}
	else {
		if (g_zoomer.config.id) {
			g_zoomer.thumbImg = document.getElementById(g_zoomer.config.id);
		}
		else {
			g_zoomer.thumbImg = g_zoomer.linkNode;
		}
		if (!g_zoomer.thumbImg) {
			alert('not found thumb image');
			return false;
		}
		g_zoomer.ajax_url = g_zoomer.href;
	}
	if (g_zoomer.eventHandler) {
		g_zoomer.eventHandler("open", g_zoomer.linkNode);
	}
//set style sheets
	var time = new Date().getTime();
	g_zoomer.cssWnd  = addStyleSheet(g_zoomer.config.dirName+"/window.css?t="+(new Date().getTime()));
	
	g_zoomer.cssZoom = addStyleSheet(g_zoomer.config.dirName+"/zooming.css?t="+(new Date().getTime()));
	g_zoomer.showLoadMsg();
//load format
	g_zoomer.isZooming = true;
	var url = g_zoomer.ajax_url;
	if (url.indexOf("?") >= 0) { url += "&js=1&zooming=1"; }
	else { url += "?js=1&zooming=1"; }
	g_zoomer.ajax.send(url, new Array(), g_zoomer.open_cb1);
	return false;
},
open_cb1 : function()
{
//check ajax status
	var httpReq = g_zoomer.ajax.check();
	
	if (!httpReq) return;
	var html = httpReq.responseText;
//cancel
	if (!g_zoomer.isZooming) return;
//create zoom window
	html = html.split("<!--%CONTENT%-->")[1];
	
	var zoomWnd = document.createElement('table');
	var tbody = document.createElement("tbody");
	var tr = document.createElement("tr");
	var td = document.createElement("td");
	td.innerHTML = html;
	tr.appendChild(td);
	tbody.appendChild(tr);
	zoomWnd.appendChild(tbody);
	zoomWnd.className = "js-zoom-wnd";
	zoomWnd.style.zIndex = 9999;
	zoomWnd.style.position = "absolute";
	zoomWnd.style.visibility = "hidden";
	zoomWnd.style.borderCollapse = "collapse";
	zoomWnd.style.top = "-2000px";
	zoomWnd.style.width = zoomWnd.style.height = "1px";
//set elements
	g_zoomer.zoomImg = null;
	var zoomSrc = null;
	var list = zoomWnd.getElementsByTagName('img');
	
	for (var i=0; i<list.length; i++) {
		var node = list[i];
		var src = node.src;
		if (src) {
			if (!hasClassName(node, "js-absoulte-url")) {
				var j = src.lastIndexOf("/");
				if (j >= 0) src = src.substr(j+1);
				src = g_zoomer.config.dirName+"/"+src;
			}
			if (hasClassName(node, "js-zoomable")) {
				g_zoomer.zoomImg = node;
				g_zoomer.zoomImg.src ="";
				zoomSrc = src;
			}
			else {
				node.src = src;
			}
		}
		else {
			if (hasClassName(node, "js-zoomable")) {
				g_zoomer.zoomImg = node;
			}
		}
	}
	if (!g_zoomer.zoomImg) {
		alert("not found js-zoomable");
		return;
	}
	var list = getElementsByClass("js-caption",zoomWnd,null);
	if (list.length) {
		g_zoomer.caption = list[0];
		if (g_zoomer.config.mode != "iframe") {
			g_zoomer.caption.innerHTML = g_zoomer.getCaptionHTML();
		}
	}
	else {
		g_zoomer.caption = null;
	}
	g_zoomer.zoomWnd = zoomWnd;
	document.body.appendChild(zoomWnd);

//load zoomable image
	if (hasClassName(g_zoomer.zoomImg,"js-loadable")) {
		g_zoomer.zoomImg.onload = g_zoomer.open_cb2;
		g_zoomer.zoomImg.src = g_zoomer.href;
	}
	else {
		g_zoomer.zoomImg.onload = g_zoomer.open_cb2;
		g_zoomer.zoomImg.src = zoomSrc;
	}
},
open_cb2 : function()
{
	g_zoomer.zoomImg.onload = null;
	if (!g_zoomer.isZooming) return;
	g_zoomer.zoomImg.style.width = g_zoomer.zoomImg.width+"px";
	g_zoomer.zoomImg.style.height = g_zoomer.zoomImg.height+"px";
	g_zoomer.startZoom();
},
close : function()
{
	var bOpened = false;
	if (g_zoomer.shadow) {
		var j = g_zoomer.shadow.length;
		for (var i=0; i<j; i++) document.body.removeChild(g_zoomer.shadow.pop());
		g_zoomer.shadow = null;
	}
	if (g_zoomer.iframe) {
		if (g_common._browser == "ie") {
			var oDoc = g_zoomer.iframe.contentWindow.document;
			var _o = oDoc.getElementsByTagName("object");
			var _l = _o.length;
			for (var i = 0; i < _l; i++) {
				_o[i].style.display = "none";
				for (var x in _o[i]) {
					if (typeof _o[i][x] == "function") {
						_o[i][x] = null;
					}
				}
			}
		}
		document.body.removeChild(g_zoomer.iframe);
		g_zoomer.iframe = null;
		bOpened = true;
	}
	if (g_zoomer.zoomWnd) {
		document.body.removeChild(g_zoomer.zoomWnd);
		g_zoomer.zoomWnd = null;
		bOpened = true;
	}
	if (g_zoomer.cssZoom) {
		removeStyleSheet(g_zoomer.cssZoom);
		g_zoomer.cssZoom = null;
	}
	if (g_zoomer.cssWnd) {
		removeStyleSheet(g_zoomer.cssWnd);
		g_zoomer.cssWnd = null;
	}
	if (bOpened && g_zoomer.eventHandler) {
		g_zoomer.eventHandler("close", g_zoomer.linkNode);
	}
	return false;
},
startZoom : function()
{
	var zoomWnd = g_zoomer.zoomWnd;
	var zoomImg = g_zoomer.zoomImg;
	g_zoomer.viewRect = getWindowRect();
	

	g_zoomer.viewRect.grow(-10,-10);
	g_zoomer.hideLoadMsg();
	g_zoomer.maxImgWidth = parseInt(zoomImg.style.width);
	g_zoomer.maxImgHeight = parseInt(zoomImg.style.height);
	if (g_zoomer.caption) {
		g_zoomer.caption.style.width = g_zoomer.maxImgWidth+"px";
	}
	g_zoomer.marginW = zoomWnd.offsetWidth-g_zoomer.maxImgWidth;
	g_zoomer.marginH = zoomWnd.offsetHeight-g_zoomer.maxImgHeight;
	
	var rect = getElementRect(g_zoomer.thumbImg);
	g_zoomer.stepW = (g_zoomer.maxImgWidth-rect.width)/g_zoomer.divide/2;
	g_zoomer.stepH = (g_zoomer.maxImgHeight-rect.height)/g_zoomer.divide/2;

	if (g_zoomer.config.option == "nozoom") {
		g_zoomer.wndLeft = rect.left-(zoomWnd.offsetWidth/2);
		g_zoomer.wndTop = rect.top-(zoomWnd.offsetHeight/2);
		g_zoomer.imgWidth = g_zoomer.maxImgWidth;
		g_zoomer.imgHeight = g_zoomer.maxImgHeight;
		g_zoomer.adjustWindow();
		g_zoomer.endZoom();
		return;
	}

	var node = zoomImg;
	var marginLeft = 0;
	var marginTop = 0;
	do {
		marginLeft += node.offsetLeft;
		marginTop += node.offsetTop;
		node = node.offsetParent;
	} while (node != zoomWnd && node);
	marginLeft = Math.round(g_zoomer.marginW/2);//ie6 unknown bug

	g_zoomer.wndLeft = rect.left-marginLeft;
	g_zoomer.wndTop = rect.top-marginTop;


	g_zoomer.imgWidth = rect.width;
	g_zoomer.imgHeight = rect.height;
	
	g_zoomer.adjustWindow();
	
	zoomWnd.style.visibility = "visible";
	setTimeout(g_zoomer.actionZoom,g_zoomer.interval);
},
actionZoom : function(e)
{
	if (!g_zoomer.isZooming) return;
	var timerFlag = true;
	var stepW = g_zoomer.stepW;
	var stepH = g_zoomer.stepH;
	
	g_zoomer.imgWidth += stepW*2;
	g_zoomer.imgHeight += stepH*2;
	if (g_zoomer.imgWidth >= g_zoomer.maxImgWidth) {
		g_zoomer.imgWidth = g_zoomer.maxImgWidth;
		g_zoomer.imgHeight = g_zoomer.maxImgHeight;
		timerFlag = false;
	}
	g_zoomer.wndLeft -= stepW;
	g_zoomer.wndTop -= stepH;
	
	g_zoomer.adjustWindow();
	if (timerFlag) {
		setTimeout(g_zoomer.actionZoom,g_zoomer.interval);
	}
	else {
		if (g_zoomer.cssZoom) {
			removeStyleSheet(g_zoomer.cssZoom);
			g_zoomer.cssZoom = null;
		}
		setTimeout(g_zoomer.endZoom,g_zoomer.interval);
	}
},
endZoom : function(e)
{
	if (!g_zoomer.isZooming) return;
	if (g_zoomer.config.mode == "iframe") {
		var iframe = document.createElement('iframe');
		g_zoomer.iframe = iframe;
		iframe.style.position = "absolute";
		iframe.style.visibility = "hidden";
		iframe.style.overflow = "hidden";//firefox
		iframe.style.border = "none";//firefox
		iframe.frameBorder = "0";//ie7
		iframe.src = "javascript:false;";
		document.body.appendChild(iframe);
		if (g_common._browser == 'ie') iframe.onreadystatechange = g_zoomer.onloadFrame;
		else iframe.onload = g_zoomer.onloadFrame;
		var url = g_zoomer.ajax_url;
		if (url.indexOf("?") >= 0) { url += "&js=1"; }
		else { url += "?js=1"; }
		iframe.src = url;
	}
	else {
		g_zoomer.finishZoom();
	}
},
onloadFrame : function()
{
	if (g_common._browser == 'ie') {
		if (this.readyState != "complete") return;
	}
	if (!g_zoomer.isZooming) return;
//visible iframe
	var childDoc = g_zoomer.iframe.contentWindow.document;
	childDoc.zoomer = g_zoomer;

	var iframe = g_zoomer.iframe;
	iframe.style.zIndex = 9999;
	iframe.style.left = Math.round(g_zoomer.wndLeft)+"px";
	iframe.style.top = Math.round(g_zoomer.wndTop)+"px";
	iframe.style.width = g_zoomer.zoomWnd.offsetWidth+"px";
	iframe.style.height = g_zoomer.zoomWnd.offsetHeight+"px";

	iframe.style.visibility = "visible";
	iframe.onload = iframe.onreadystatechange = null;
//change zoomWnd<-iframe
	document.body.removeChild(g_zoomer.zoomWnd);
	g_zoomer.zoomWnd = null;

	//g_zoomer.iframe.contentWindow.onZoomed();
	g_zoomer.finishZoom();
},
finishZoom : function()
{
	g_zoomer.registWndHandler();
	if (g_zoomer.caption) g_zoomer.caption.style.width = "auto";
	g_zoomer.zoomImg.style.width = "auto";
	g_zoomer.zoomImg.style.height = "auto";
/*not supported iframe
	g_zoomer.zoomImg.style.cursor = "url('"+g_zoomer.config.dirName+"/zoomout.cur'),pointer";
	g_zoomer.zoomImg.onclick = g_zoomer.close;
*/
	g_zoomer.drawShadow();
},
registWndHandler : function()
{
	var zoomWnd = (this.iframe)?this.iframe.contentWindow.document:this.zoomWnd;
	var list = zoomWnd.getElementsByTagName('a');
	for (var i=0; i<list.length; i++) {
		var node = list[i];
		switch (node.className) {
		case 'js-prev':
			node.onclick = this.prev;
			break;
		case 'js-next':
			node.onclick = this.next;
			break;
		case 'js-close':
			node.onclick = this.close;
			break;
		}
	}
	zoomWnd.onmousedown = this.onDragStart;
},
/* for todays photo */
resizeFrameW : function(width)
{
	var iframe = g_zoomer.iframe;
	var childDoc = iframe.contentWindow.document;

	var old_w = parseInt(iframe.style.width);
	var new_w = width+g_zoomer.marginW;
	var right = parseInt(iframe.style.left) + old_w;
	iframe.style.left = (right - new_w)+"px";
	iframe.style.width = new_w+"px";
},
resizeFrameH : function(height)
{
	var iframe = g_zoomer.iframe;
	var childDoc = iframe.contentWindow.document;

	if (height == undefined) {
		iframe.style.height = childDoc.body.offsetHeight+"px";
	}
	else {
		iframe.style.height = (height+g_zoomer.marginH)+"px";
	}
	g_zoomer.drawShadow();
},
resizeFrame : function()
{
	var childDoc = g_zoomer.iframe.contentWindow.document;
	var iframe = g_zoomer.iframe;
	iframe.style.height = childDoc.body.offsetHeight+"px";
	g_zoomer.drawShadow();
},
/* for channel */
assignFrame : function(childDoc)
{
	var iframe = this.iframe;
	iframe.style.height = childDoc.body.offsetHeight+"px";
	this.registWndHandler();
	this.drawShadow();
},
adjustWindow : function()
{
	
	var rect = g_zoomer.viewRect;
	var left = g_zoomer.wndLeft;
	var top = g_zoomer.wndTop;
	var maxLeft = (rect.left+rect.width-g_zoomer.imgWidth-g_zoomer.marginW);
	var maxTop = (rect.top+rect.height-g_zoomer.imgHeight-g_zoomer.marginH);


	if (left < rect.left) left = rect.left;
	else if (left > maxLeft) left = maxLeft;
	if (top < rect.top) top = rect.top;
	else if (top > maxTop) top = maxTop;
	if (top < 0) top = 0;
	
	g_zoomer.wndLeft = left;
	g_zoomer.wndTop = top;

	g_zoomer.zoomWnd.style.left = Math.round(left)+"px";
	g_zoomer.zoomWnd.style.top = Math.round(top)+"px";
	if (g_zoomer.config.mode == "iframe") {
		g_zoomer.zoomWnd.style.width = (g_zoomer.imgWidth+g_zoomer.marginW)+"px";
		g_zoomer.zoomWnd.style.height = (g_zoomer.imgHeight+g_zoomer.marginH)+"px";
	}
	if (g_zoomer.caption) {
		g_zoomer.caption.style.width = g_zoomer.imgWidth+"px";
	}
	g_zoomer.zoomImg.style.width = g_zoomer.imgWidth+"px";
	g_zoomer.zoomImg.style.height = g_zoomer.imgHeight+"px";
},
prev : function()
{
	if (g_zoomer.thumbID == 0) {
		g_zoomer.thumbID = g_zoomer.config.thumbCount;
	}
	g_zoomer.thumbID --;
	g_zoomer.changeImage();
	return false;
},
next : function()
{
	if (++g_zoomer.thumbID >= g_zoomer.config.thumbCount) {
		g_zoomer.thumbID = 0;
	}
	g_zoomer.changeImage();
	return false;
},
getCaptionHTML : function()
{
	if (g_zoomer.config.thumbList) {
		var thumb = g_zoomer.config.thumbList[g_zoomer.href];
		return thumb.caption;
	}
	return "";
},
changeImage : function()
{
	var thumb = null;
	var list = g_zoomer.config.thumbList;
	for (var href in list) {
		if (list[href].id == g_zoomer.thumbID) {
			thumb = list[href];
			g_zoomer.href = href;
			g_zoomer.thumbImg = thumb.img;
			break;
		}
	}
	if (thumb == null) return;

	g_zoomer.zoomImg.style.visibility = "hidden";
	g_zoomer._width = g_zoomer.zoomImg.offsetWidth;
	g_zoomer.showClock();
	g_zoomer._tmpImg = document.createElement('img');
	g_zoomer._tmpImg.style.position = "absolute";
	g_zoomer._tmpImg.style.top = "-2000px";
	g_zoomer._tmpImg.style.visibility = "hidden";
	document.body.appendChild(g_zoomer._tmpImg);
	g_zoomer._tmpImg.onload = g_zoomer.changeImage_cb;
	g_zoomer._tmpImg.src = href;
},
changeImage_cb : function(e)
{
	if (!g_zoomer.isZooming) return;
	g_zoomer._tmpImg.onload = null;
	g_zoomer.hideClock();

	var left = parseInt(g_zoomer.zoomWnd.style.left);
	left += (g_zoomer._width - g_zoomer._tmpImg.width);
	g_zoomer.zoomWnd.style.left = left+"px";

	var parent = g_zoomer.zoomImg.parentNode;
	parent.replaceChild(g_zoomer._tmpImg, g_zoomer.zoomImg);
	g_zoomer.zoomImg = g_zoomer._tmpImg;
	g_zoomer.zoomImg.style.position = "";
	g_zoomer.zoomImg.style.top = "";
	g_zoomer.zoomImg.style.visibility = "visible";

	if (g_zoomer.caption) {
		g_zoomer.caption.innerHTML = g_zoomer.getCaptionHTML();
	}
	g_zoomer.drawShadow();
},
showLoadMsg : function()
{
	if (!g_zoomer.thumbImg) {
		return;
	}
	if (!g_zoomer.loadMsg) {
		var loadMsg = document.createElement('div');
		g_zoomer.loadMsg = loadMsg;
		loadMsg.className = "js-zoom-msg";
		loadMsg.style.position = "absolute";
		loadMsg.innerHTML = 'LOADING...';
		document.body.appendChild(loadMsg);
	}
	else {
		var loadMsg = g_zoomer.loadMsg;
	}
	var rect = getElementRect(g_zoomer.thumbImg);
	loadMsg.style.left = rect.left+Math.round((rect.width-loadMsg.offsetWidth)/2)+"px";
	loadMsg.style.top = rect.top+Math.round((rect.height-loadMsg.offsetHeight)/2)+"px";
},
hideLoadMsg : function()
{
	if (g_zoomer.loadMsg) {
		document.body.removeChild(g_zoomer.loadMsg);
		g_zoomer.loadMsg = null;
	}
},
showClock : function()
{
	var zoomImg = g_zoomer.zoomImg;
	var left = Math.round(zoomImg.offsetWidth/2)-16;
	var top = Math.round(zoomImg.offsetHeight/2)-16;
	if (!g_zoomer.clockImg) {
		var clockImg = document.createElement('img');
		g_zoomer.clockImg = clockImg;
		clockImg.style.position = "absolute";
		clockImg.style.left = left+"px";
		clockImg.style.top = top+"px";
		clockImg.src = g_zoomer.config.dirName+"/loading.gif";
		zoomImg.parentNode.style.position = "relative";
		zoomImg.parentNode.appendChild(clockImg);
	}
	else {
		var clockImg = g_zoomer.clockImg;
		clockImg.style.left = left+"px";
		clockImg.style.top = top+"px";
	}
},
hideClock : function()
{
	if (g_zoomer.clockImg) {
		if (g_zoomer.zoomImg) {
			g_zoomer.zoomImg.parentNode.removeChild(g_zoomer.clockImg);
		}
		g_zoomer.clockImg = null;
	}
},
drawShadow : function()
{
	var zoomWnd = (g_zoomer.iframe)?g_zoomer.iframe:g_zoomer.zoomWnd;
	var left = parseInt(zoomWnd.style.left) - 10;
	var top = parseInt(zoomWnd.style.top) - 10;
	var width = zoomWnd.offsetWidth - 20;
	var height = zoomWnd.offsetHeight - 20;

	var config = new Array(
		new Array(left, top, 20, 20, "t1.png", "no-repeat"),
		new Array(left+20, top, width, 10, "t2.png", "repeat-x"),
		new Array(left+20+width, top, 20, 20, "t3.png", "no-repeat"),

		new Array(left, top+20, 10, height, "l.png", "repeat-y"),
		new Array(left+30+width, top+20, 10, height, "r.png", "repeat-y"),

		new Array(left, top+20+height, 20, 20, "b1.png", "no-repeat"),
		new Array(left+20, top+30+height, width, 10, "b2.png", "repeat-x"),
		new Array(left+20+width, top+20+height, 20, 20, "b3.png", "no-repeat")
	);
	var _ie = (g_common._browser == 'ie');
	var _ie7over = _ie && (parseInt(g_common._version)>=7);
	var flagNew = false;
	if (!g_zoomer.shadow) {
		flagNew = true;
		g_zoomer.shadow = new Array(8);
	}
	for (var i = 0; i < 8; i++) {
		var param = config[i];
		if (flagNew) {
			var node = document.createElement('div');
			node.style.zIndex = 9999;
			node.style.className = "js-effect";
			node.style.position = "absolute";
			g_zoomer.shadow[i] = node;
		}
		else {
			var node = g_zoomer.shadow[i];
		}
		node.style.left = param[0]+"px";
		node.style.top  = param[1]+"px";
		node.style.width  = param[2]+"px";
		node.style.height = param[3]+"px";
		if (_ie) {
			if (param[3] == 10) {
				node.style.fontSize = 0;
				node.style.lineHeight = "10px";
			}
		}
		var url = g_zoomer.config.dirName+"/"+param[4];
		if (_ie && !_ie7over) {
			node.style.backgroundColor = "transparent";
			if (param[5].match(/^no-/)) {
				node.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader("+
					"enabled=true, sizingMethod=image src='"+url+"')";
			}
			else {
				node.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader("+
					"enabled=true, sizingMethod=scale src='"+url+"')";
			}
		}
		else {
			node.style.background = "url('"+url+"') 0 0 "+param[5];
		}
		if (flagNew) document.body.appendChild(node);
		node.style.visibility = "visible";
	}
},
getEventPt : function(e, flag)
{
	if (g_common._browser == "ie" || g_common._browser == "opera") {
		var evt = (flag) ? g_zoomer.iframe.contentWindow.event : window.event;
		var offsetX = document.documentElement.scrollLeft;
		var offsetY = document.documentElement.scrollTop;
		if (g_common._browser == "opera") {
			offsetX = offsetY = 0;
		}
		return {x:evt.screenX+offsetX, y:evt.screenY+offsetY};
	}
	else {
		var offsetX = window.scrollX;
		var offsetY = window.scrollY;
		return {x:e.screenX+offsetX, y:e.screenY+offsetY};
	}
},
onDragStart : function(e)
{
	if (g_common._browser == "ie") {
		if (g_zoomer.iframe) { e = g_zoomer.iframe.contentWindow.event; }
		else { e = window.event; }
	}
	if (hasClassName(getEventTarget(e),"js-nodrag")) {
		return true;
	}
	var target = (g_zoomer.iframe)?g_zoomer.iframe:g_zoomer.zoomWnd;
	var pt = g_zoomer.getEventPt(e, (g_zoomer.iframe));
	target.eX = pt.x;
	target.eY = pt.y;
	target.style.cursor = "move";
	if (g_zoomer.iframe) {
		g_zoomer.iframe.contentWindow.document.onmousemove = g_zoomer.onDragMove;
		g_zoomer.iframe.contentWindow.document.onmouseup = g_zoomer.onDragEnd;
	}
	if (g_common._browser == "ie") {
		window.onscroll = g_zoomer.onDragMove;
	}
	document.onmousemove = g_zoomer.onDragMove;
	document.onmouseup = g_zoomer.onDragEnd;
	var j = g_zoomer.shadow.length;
	for (var i=0; i<j; i++) {
		g_zoomer.shadow[i].style.visibility = "hidden";
	}
	target._minX = target._minY = 10;
	target._maxX = document.body.offsetWidth-target.offsetWidth-10;
	target._maxY = document.body.offsetHeight-target.offsetHeight-10;
	return false;
},
onDragMove : function(e)
{
	var target = (g_zoomer.iframe)?g_zoomer.iframe:g_zoomer.zoomWnd;
	var pt = g_zoomer.getEventPt(e, (this!=document));
	var left = parseInt(target.style.left)+pt.x-target.eX;
	var top  = parseInt(target.style.top)+pt.y-target.eY;

	if (top < target._minY) { top = target._minY; }
	/*
	//Windowが狭かったり、画像がでかいとバグるので削除
	else if (top > target._maxY) { top = target._maxY; 
	if (left < target._minX) { left = target._minX; }
	else if (left > target._maxX) { left = target._maxX; }
	*/
	target.style.left = left+"px";
	target.style.top = top+"px";
	target.eX = pt.x;
	target.eY = pt.y;
	return false;
},
onDragEnd : function(e)
{
	var target = (g_zoomer.iframe)?g_zoomer.iframe:g_zoomer.zoomWnd;
	target.style.cursor = "";
	window.onscroll = null;
	document.onmousemove = null;
	document.onmouseup  =null;
	if (g_zoomer.iframe) {
		g_zoomer.iframe.contentWindow.document.onmousemove = null;
		g_zoomer.iframe.contentWindow.document.onmouseup = null;
	}
	g_zoomer.drawShadow();
	return false;
}
};
var g_zoomer = new ImageZoomer();
g_common.registInterface(g_zoomer);
