/*
 * layer: layerのラッパー
 * Copyright (c) 2003- Seesaa CO.,LTD. All rights reserved.
 * 
 * mailto: hanabusa@seesaa.jp
 * url: http://seesaa.jp/
 */


function layerHandle (layer) {
	if ( typeof(layer) == 'undefined' ) {
		return this;
	}
	else if ( typeof(layer) == 'string' ) {
		if ( document.getElementById ) {
			layer = document.getElementById(layer);
		}
		else if ( document.all ) {
			layer = document.all(layer);
		}
		else if ( document.layers ) {
			layer = document.layers[layer];
		}
	}
	this.srcElement = layer;
	return this;
}


layerHandle.prototype.show = function () {
	var e = this.srcElement;
	if ( e.style && e.style.display ) {
		e.style.display = 'block';
	}
	else if ( e.visibility ) {
		e.visibility = 'show';
	}
}


layerHandle.prototype.hide = function () {
	var e = this.srcElement;
	if ( e.style && e.style.display ) {
		e.style.display = 'none';
	}
	else if ( e.visibility ) {
		e.visibility = 'hide';
	}
}


layerHandle.prototype.bgColor = function (color) {
	if ( color ) {
		if ( document.getElementById || document.all ) {
			this.srcElement.style.backgroundColor = color;
		}
		else if ( document.layers ) {
			this.srcElement.bgColor = color;
		}
	}
	if ( document.getElementById || document.all ) {
		return this.srcElement.style.backgroundColor;
	}
	else if ( document.layers ) {
		return this.srcElement.bgColor;
	}
}


layerHandle.prototype.left = function (x) {
	if ( typeof(x) == 'number' ) {
		if ( document.getElementById ) {
			this.srcElement.style.left = x + 'px';
		}
		else if ( document.all ) {
			this.srcElement.style.pixelLeft = x;
		}
		else if ( document.layers ) {
			this.srcElement.left = x;
		}
	}
	if ( document.getElementById ) {
		return parseInt(this.srcElement.style.left);
	}
	else if ( document.all ) {
		return this.srcElement.style.pixelLeft;
	}
	else if ( document.layers ) {
		return this.srcElement.left;
	}
}


layerHandle.prototype.top = function (y) {
	if ( typeof(y) == 'number' ) {
		if ( document.getElementById ) {
			this.srcElement.style.top = y + 'px';
		}
		else if ( document.all ) {
			this.srcElement.style.pixelTop = y;
		}
		else if ( document.layers ) {
			this.srcElement.top = y;
		}
	}
	if ( document.getElementById ) {
		return parseInt(this.srcElement.style.top);
	}
	else if ( document.all ) {
		return this.srcElement.style.pixelTop;
	}
	else if ( document.layers ) {
		return this.srcElement.top;
	}
}


layerHandle.prototype.moveTo = function (x, y) {
	this.left(x);
	this.top(y);
}


layerHandle.prototype.alpha = function (value) {
	var ua = new userAgent();
	if ( ua.isIE() ) {
		this.srcElement.style.filter = "alpha(opacity=0)";
        this.srcElement.filters.alpha.opacity = value;
	}
	else if ( ua.isGecko() ) {
		this.srcElement.style.MozOpacity = value / 100;
	}
}


layerHandle.prototype.zIndex = function (value) {
	if ( document.layers ) {
		this.srcElement.zIndex = value;
	}
	else {
		this.srcElement.style.zIndex = value;
	}
}


layerHandle.prototype.innerHTML = function (html) {
	if ( document.layers ) {
		with ( this.srcElement.document ) {
			open();
			write(html);
			close();
		}
	}
	else {
		this.srcElement.innerHTML = html;
	}
}


function createLayer (name) {
	if ( document.getElementById ) {
		var layer = document.createElement('div');
		layer.setAttribute('id', name);
		layer.style.display = 'none';
		layer.style.position = 'absolute';
		document.body.appendChild(layer);
		return new layerHandle(name);
	}
	else if ( document.all ) {
		var str =
			'<div id="' + name + '" style="' +
			'display:none; position:absolute; left:0px; top:0px;"></div>';
		document.body.insertAdjacentHTML('BeforeEnd',str);
		return new layerHandle(name);
	}
	else if ( document.layers ) {
		var layer = new Layer(65535);
		var lh = new layerHandle(layer.name);
		lh.hide();
		lh.moveTo(0, 0);
		return lh;
	}
	return null;
}


function createPopupLayer (name, inner_html) {
	var lh = createLayer(name);
	if ( ! lh ) return null;
	lh.innerHTML(inner_html);
	var mouseover = new Function('e', 'new layerHandle(this).show();');
	var mouseout  = new Function('e', 'new layerHandle(this).hide();');
	if ( lh.srcElement.addEventListener ) {
		lh.srcElement.addEventListener('mouseover', mousemove, true);
		lh.srcElement.addEventListener('mouseout',  mouseout,  true);
	}
	else {
		lh.srcElement.onmouseover = mouseover;
		lh.srcElement.onmouseout  = mouseout;
	}
	return lh;
}

