/*---------------------------------------------------
 copyright (C) 2003 GEOMETRY graphics
 ----------------------------------------------------
 #100 1-9-34 Minami-kumamoto Kumamoto 860-0812 Japan
 phone number : +81-96-373-0514
 fax number : +81-96-373-0516
 mailto : info@geometry.com
 url : http://www.geometry.ne.jp/
----------------------------------------------------*/

var initf = 0;
var innerW = 0;
var innerH = 0;
var scLeft,scTop,evinnerW,evinnerH,prvInnerW=1,prvInnerH=1;
var alpFg = ((is.p=="win") && (is.ie5 || is.ie6)) || (is.ns61up);

function init()
{
	if(!initf++){
		dynamicLayerInit();
		setInnerSize();

		if(typeof(cinit) == 'function'){
			cinit();
		}
		if(typeof(winResize) == 'function'){
			window.onresize = winResize;
		}
	}
}

function setInnerSize()
{
	if(is.ns){
		innerW = window.innerWidth;
		innerH = window.innerHeight;
		scLeft = window.pageXOffset;
		scTop  = window.pageYOffset;
		if(is.ns4 && (is.p=="win" || is.p=="mac")){
			innerW+=4;
			innerH+=4;
		}
		prvInnerW = innerW;
		prvInnerH = innerH;
	}else{
		innerW = document.body.clientWidth;
		innerH = document.body.clientHeight;
		if(innerW <= 0 && innerH <= 0){
			innerW = prvInnerW;
			innerH = prvInnerH;
		}else{
			prvInnerW = innerW;
			prvInnerH = innerH;
		}
		scLeft = document.body.scrollLeft;
		scTop  = document.body.scrollTop;
	}
}

function dynamicLayer(id,nest,frm)
{
	if(!is.ns6up && !dynamicLayer.set && !frm)
		dynamicLayerInit();
	this.frame = (frm || self);

	if(is.ie4){
		this.elm = this.event = this.frame.document.all[id];
		this.css = this.frame.document.all[id].style;
		this.doc = document;
		this.x = parseInt(this.elm.offsetLeft);
		this.y = parseInt(this.elm.offsetTop);
		this.w = this.sw = parseInt(this.css.pixelWidth);
		this.h = this.sh = parseInt(this.css.pixelHeight);
	}else if(is.ns4){
		if(!frm){
			if(!nest)
				nest = dynamicLayer.nestArray[id];
			if(!dynamicLayerTest(id,nest))
				return;
			this.css = (nest) ? eval("document."+nest+".document."+id) : document.layers[id];
		}
		else this.css = (nest) ? eval("frm.document."+nest+".document."+id) : frm.document.layers[id];
		this.elm = this.event = this.css;
		this.doc = this.css.document;
		this.x = parseInt(this.css.left);
		this.y = parseInt(this.css.top);
		this.sw = parseInt(this.doc.width);
		this.sh = parseInt(this.doc.height);
		this.w = parseInt(this.css.clip.right) - parseInt(this.css.clip.left);
		this.h = parseInt(this.css.clip.bottom) - parseInt(this.css.clip.top);
	}else {
		this.elm = document.getElementById(id);
		this.css = this.elm.style;
		this.doc = document;
		this.x = parseInt(this.elm.offsetLeft);
		this.y = parseInt(this.elm.offsetTop);
		this.w = this.sw = parseInt(this.elm.offsetWidth);
		this.h = this.sh = parseInt(this.elm.offsetHeight);
	}
	this.id = id;
	this.nest = nest;
	this.obj = id + "dynamicLayer";
	eval(this.obj + "=this");
}


function dynamicLayerInit(nest)
{
	if(!dynamicLayer.set)
		dynamicLayer.set = true;

	if(is.ie4 || (is.p=="mac" && is.ie)){
		for(var i=0; i<document.all.tags("DIV").length; i++){
			var divname = document.all.tags("DIV")[i].id;
			var index = divname.indexOf("Div");
			if(index > 0){
				eval(divname.substr(0,index)+' = new dynamicLayer("'+divname+'")');
			}
		}
	}else if(is.ns4){
		if(nest)
			var ref = eval('document.'+nest+'.document');
		else{
			var ref = document;
			nest = '';
		}
		for(var i=0; i<ref.layers.length; i++){
			var divname = ref.layers[i].name;
			dynamicLayer.nestArray[divname] = nest;
			var index = divname.indexOf("Div");
			if(index > 0){
				eval(divname.substr(0,index)+' = new dynamicLayer("'+divname+'","'+nest+'")');
			}
			if(ref.layers[i].document.layers.length > 0){
				dynamicLayer.refArray[dynamicLayer.refArray.length] = (nest=='')? ref.layers[i].name : nest+'.document.'+ref.layers[i].name;
			}
		}
		if(dynamicLayer.refArray.n < dynamicLayer.refArray.length){
			dynamicLayerInit(dynamicLayer.refArray[dynamicLayer.refArray.n++]);
		}
	}else{
		var p=0;
		while(document.getElementsByTagName("DIV").item(p) != null){
			var divname = document.getElementsByTagName("DIV").item(p).id;
			var index = divname.indexOf("Div");
			if(index > 0){
				eval(divname.substr(0,index)+' = new dynamicLayer("'+divname+'")');
			}
			p++;
		}
	}
	return true;
}


function dynamicLayerReLoad()
{
	this.hide();
	this.show();
}

function dynamicLayerShow()
{
	this.css.visibility = (is.ns4) ? "show" : "visible";
}

function dynamicLayerHide()
{
	this.css.visibility = (is.ns4) ? "hide" : "hidden";
}

function dynamicLayerGetVisibility()
{
	return ((is.ns4) ? this.css.visibility == "show" : this.css.visibility=="visible");
}

function dynamicLayerMoveTo(x,y)
{
	if(x!=null && !isNaN(x)){
		this.x = x;
		(is.ie) ? this.css.pixelLeft = x : this.css.left = x;
	}
	if(y!=null && !isNaN(y)){
		this.y = y;
		(is.ie) ? this.css.pixelTop = y : this.css.top = y;
	}
}

function dynamicLayerMoveBy(x,y)
{
	var dx = this.x;
	var dy = this.y;
	if(x!=null && !isNaN(x))
		dx += x;
	if(y!=null && !isNaN(y))
		dy += y;
	this.moveTo(dx,dy);
}

function dynamicLayerClipInit(clipTop, clipRight, clipBottom, clipLeft)
{
	this.clipTo(clipTop, clipRight, clipBottom, clipLeft);
}

function dynamicLayerClipTo(tp, rt, bt, lt)
{
	if(tp==null) tp = this.clipValues('tp');
	if(rt==null) rt = this.clipValues('rt');
	if(bt==null) bt = this.clipValues('bt');
	if(lt==null) lt = this.clipValues('lt');
	if(is.ie || is.ns6up){
		this.css.clip = "rect("+tp+"px "+rt+"px "+bt+"px "+lt+"px)";
	}else if(is.ns4){
		this.css.clip.top = tp;
		this.css.clip.right = rt;
		this.css.clip.bottom = bt;
		this.css.clip.left = lt;
	}
}

function dynamicLayerClipValues(which)
{
	var f,clipv;
	if(is.ns6up || is.ie){
		f = true;
		if(is.ie4 && is.p=="mac")
			clipv = this.css.clip.split("rect(")[1].split(")")[0].split(" ");
		else	clipv = this.css.clip.split("rect(")[1].split(")")[0].split("px");
	}else if(is.ns4){
		f = false;
		clipv = "";
	}
	if(which=="tp") return ((f) ? Number(clipv[0]) : this.css.clip.top);
	if(which=="rt") return ((f) ? Number(clipv[1]) : this.css.clip.right);
	if(which=="bt") return ((f) ? Number(clipv[2]) : this.css.clip.bottom);
	if(which=="lt") return ((f) ? Number(clipv[3]) : this.css.clip.left);
}

function dynamicLayerResizeTo(w,h)
{
	if(w != null && !isNaN(w)){
		this.w = this.sw = w;
		(is.ns4) ? this.doc.width = w : this.css.width = w;
	}
	if(h != null && !isNaN(h)){
		this.h = this.sh = h;
		(is.ns4) ? this.doc.height = h : this.css.height = h;
	}
}

function dynamicLayerBackgroundImage(imgpath)
{
	if(is.ns4){
		this.css.background.src=imgpath;
	}else{
		this.css.backgroundImage = 'url("'+imgpath+'")';
	}
}

function dynamicLayerAlphaSet(a)
{
	if(alpFg){
		if(is.ie){
			if(this.css.filter=="")
				this.css.filter = "alpha(opacity="+a+")";
			else	this.elm.filters.alpha.opacity = a;
		}else{
			this.css.MozOpacity = parseFloat(0.01*a);
		}
	}
}

// the prototype is declared.
dynamicLayer.prototype.reLoad = dynamicLayerReLoad;
dynamicLayer.prototype.moveTo = dynamicLayerMoveTo;
dynamicLayer.prototype.moveBy = dynamicLayerMoveBy;
dynamicLayer.prototype.show = dynamicLayerShow;
dynamicLayer.prototype.hide = dynamicLayerHide;
dynamicLayer.prototype.getVisibility = dynamicLayerGetVisibility;
dynamicLayer.prototype.clipInit = dynamicLayerClipInit;
dynamicLayer.prototype.clipTo = dynamicLayerClipTo;
dynamicLayer.prototype.clipValues = dynamicLayerClipValues;
dynamicLayer.prototype.resizeTo = dynamicLayerResizeTo;
dynamicLayer.prototype.backImg = dynamicLayerBackgroundImage;
dynamicLayer.prototype.alphaSet = dynamicLayerAlphaSet;

dynamicLayer.set = false;
dynamicLayerTest = new Function('return true');
dynamicLayer.nestArray = new Array();
dynamicLayer.refArray = new Array();
dynamicLayer.refArray.n = 0;


function reloadNS(ev)
{
	if(is.ns4 && ev.type && ev.type=='resize'){
		if(ev.width && ev.height){
			if(ev.width != evinnerW || ev.height != evinnerH){
				evinnerW = ev.width;
				evinnerH = ev.height;
				window.location.reload();
			}
		}
	}
}