// xWindowライブラリ
// LibCrossBrowser.jsを先に読むこと
// IE6,N6で動作確認
// last modified 2002.04.15

/* skinオブジェクト
Skin = {
	dir:"ディレクトリ",
	cont:{
		upper:{height:n,leftWidth:n,rightWidth:n},
		middle:{leftWidth:n,rightWidth:n},
		lower:{height:n,leftWidth:n,rightWidth:n}
	},
	info:{
		upper:{height:n,leftWidth:n,rightWidth:n},
		middle:{leftWidth:n,rightWidth:n},
		lower:{height:n,leftWidth:n,rightWidth:n}
	},
	panel:{
		upper:{height:n,leftWidth:n,rightWidth:n},
		middle:{leftWidth:n,rightWidth:n},
		lower:{height:n,leftWidth:n,rightWidth:n}
	},
	line:{height:n}
}*/

var xWindowsSkin;
var spacer = "<img src='t.gif' width=1 height=1>";

// panelに使用する文字列のサイズを計測するレイヤ
document.write("<div id=forMeasure style='position:absolute;visibility:hidden'></div>");

function setxWindowsSkin(skin){
	xWindowsSkin = skin;
}

function getLineHTML(width){
	var HTML = "<img src='"+xWindowsSkin.dir+"/line.gif' width="+width+" height="+xWindowsSkin.line.height+">";
	return HTML;
}

// getPanelsHTML(width,height,caption[[,contents],valign])
// macはIE、NNともレイヤのサイズ取得がおかしくなるので、captionは枠の中に入れてしまう
// win IEも4.0では同様
function getPanelsHTML(width,height,caption){
	var contents = (arguments.length>3)?arguments[3]:spacer;
	var va = (arguments.length>4)?arguments[4]:"top";
	var dir_area = xWindowsSkin.dir+"/panel";
	var div = getDivFromName("forMeasure");
	writeDivHTML(div,1,1,caption);
	var captionWidth = getDivWidth(div);
	var captionHeight = getDivHeight(div);
	if (height!="100%"){
		var mdheight = height - captionHeight - xWindowsSkin.panel.height;
	}else var mdheight="100%";
	var HTML = "<table width="+width+" height="+height+" border=0 cellpadding=0 cellspacing=0>";
	if (_mac || _dom==1){
		HTML += "<tr><td height="+xWindowsSkin.panel.height+">"+getPartsHTML(dir_area+"_up",xWindowsSkin.panel,xWindowsSkin.panel.height)+"</td></tr>";
		contents = caption+"<br>"+contents;
	}else{
		HTML += "<tr><td>"+getCaptionPartHTML(dir_area,caption,captionWidth,captionHeight)+"</td></tr>";
	}
	HTML += "<tr><td>"+getPartsHTML(dir_area+"_md",xWindowsSkin.panel,mdheight,contents,va)+"</td></tr>";
	HTML += "<tr><td height="+xWindowsSkin.panel.height+">"+getPartsHTML(dir_area+"_lw",xWindowsSkin.panel,xWindowsSkin.panel.height)+"</td></tr>";
	HTML += "</table>";
	return HTML;
}

// getPanelHTMLのサブ.機能からの要請ではなく読みやすさのため
function getCaptionPartHTML(dir_area,caption,captionWidth,captionHeight){
	var h1 = xWindowsSkin.panel.height;
	var h0 = Math.floor((captionHeight-h1)/2);
	var h2 = captionHeight-h1-h0;
	var HTML = "<table width=100% height="+captionHeight+" border=0 cellpadding=0 cellspacing=0>";
	HTML += "<tr><td height="+h0+" width="+xWindowsSkin.panel.leftWidth+">"+spacer+"</td>";
	HTML += "<td height="+h0+" width=6>"+spacer+"</td>";
	HTML += "<td rowspan=3 width="+captionWidth+">"+caption+"</td>";
	HTML += "<td height="+h0+">"+spacer+"</td>";
	HTML += "<td height="+h0+" width="+xWindowsSkin.panel.rightWidth+">"+spacer+"</td></tr>";

	HTML += "<tr><td height="+h1+" width="+xWindowsSkin.panel.leftWidth+" background='"+dir_area+"_up_l.gif'>"+spacer+"</td>";
	HTML += "<td height="+h1+" width=6 background='"+dir_area+"_up_m.gif'>"+spacer+"</td>";
	HTML += "<td height="+h1+" background='"+dir_area+"_up_m.gif'>"+spacer+"</td>";
	HTML += "<td height="+h1+" width="+xWindowsSkin.panel.rightWidth+" background='"+dir_area+"_up_r.gif'>"+spacer+"</td></tr>";

	HTML += "<tr><td height="+h2+" width="+xWindowsSkin.panel.leftWidth+" background='"+dir_area+"_md_l.gif'>"+spacer+"</td>";
	HTML += "<td height="+h2+" width=6 background='"+dir_area+"_md_m.gif'>"+spacer+"</td>";
	HTML += "<td height="+h2+" background='"+dir_area+"_md_m.gif'>"+spacer+"</td>";
	HTML += "<td height="+h2+" width="+xWindowsSkin.panel.rightWidth+" background='"+dir_area+"_md_r.gif'>"+spacer+"</td></tr>";

	HTML += "</table>";
	return HTML;
}

// getAreasHTML(areaName,width,height[[[,shape],contents],valign])
// shape: 0=upper+middle+lower／1=middle+lower
// contents: 中に収容するHTML
// valign: 中に収容するHTMLのvalign．デフォルトはtop
// N6だとheight=100%が正常に動作しない
function getAreasHTML(areaName,width,height){
	var areaObject = xWindowsSkin[areaName];
	var dir_area = xWindowsSkin.dir+"/"+areaName;
	var va = (arguments.length>5)?arguments[5]:"top";
	var contents = (arguments.length>4)?arguments[4]:"<img src='t.gif' width=1 height=1>";
	var shape = (arguments.length>3)?arguments[3]:0;
	var HTML = "<table width="+width+" height="+height+" border=0 cellpadding=0 cellspacing=0>";
	if (height!="100%"){
		var mdheight = height-areaObject.upper.height-areaObject.lower.height;
	}else var mdheight="100%";
	if (! shape) HTML += "<tr><td height="+areaObject.upper.height+">"+getPartsHTML(dir_area+"_up",areaObject.upper,areaObject.upper.height)+"</td></tr>";
	HTML += "<tr><td>"+getPartsHTML(dir_area+"_md",areaObject.middle,mdheight,contents,va)+"</td></tr>";
	HTML += "<tr><td height="+areaObject.lower.height+">"+getPartsHTML(dir_area+"_lw",areaObject.lower,areaObject.lower.height)+"</td></tr>";
	HTML += "</table>";
	return HTML;
}

function getPartsHTML(dir_area_part,partObject,height){
	var contents = (arguments.length>3)?arguments[3]:spacer;
	var va = (arguments.length>4)?arguments[4]:"top";
	var HTML = "<table width=100% border=0 cellpadding=0 cellspacing=0";
	if (height) HTML += " height="+height;
	HTML += "><tr>";
	HTML += "<td width="+partObject.leftWidth+" background='"+dir_area_part+"_l.gif'>"+spacer+"</td>";
	HTML += "<td cellpadding=3 valign="+va+" background='"+dir_area_part+"_m.gif'>"+contents+"</td>";
	HTML += "<td width="+partObject.leftWidth+" background='"+dir_area_part+"_r.gif'>"+spacer+"</td>";
	HTML += "</tr></table>";
	return HTML;
}
