
// ------------------------------- SHORT-CUT KEYS -------------------------------
document.onkeydown = function () {
	if (macFF || winFF) { event = arguments[0]; }
	if (event.altKey || event.ctrlKey || event.shiftKey) { return true; }
	if	(event.keyCode == 27)	{ }	// ESC
	else if	(event.keyCode == 39)	{ NEXT.go(); }			// →
	else if	(event.keyCode == 37)	{ history.go(-1); }			// ←
	else if	(event.keyCode == 38)	{ JSS.slide (3/4, JSS.focuskey); }	// ↑
	else if	(event.keyCode == 40)	{ JSS.slide (-3/4, JSS.focuskey); }	// ↓
	else if	(event.keyCode == 33)	{ JSS.slide(3/4, JSS.focuskey); }	// PAGE UP
	else if	(event.keyCode == 34)	{ JSS.slide(-3/4, JSS.focuskey);  }	// PAGE DOWN
	else if	(event.keyCode == 35)	{ JSS.slide(-99, JSS.focuskey); }	// END
	else if	(event.keyCode == 36)	{ JSS.slide(99, JSS.focuskey);  }	// HOME
	else if	(event.keyCode == 32)	{ JSS.slide(-3/4, JSS.focuskey); }	// Space Bar
	else if	(event.keyCode == 13)	{ GALLERY.open(0); }		// Return
//	else	{ alert(event.keyCode); }
}
// ------------------------------- Re -------------------------------
window.onresize	= function () { Re.set(); }
var Re	= { timer:undefined,
set:function () {
	if (Re.timer) { clearTimeout(Re.timer); }
	Re.timer = setTimeout('Re.on ();',128);
},
on:function () {
	if (showTXT.flag) { showTXT.open(1); }
	JSS.set();
}
}
// ------------------------------- PNG -------------------------------
if (winIE && parseInt(UAver) == 6) { load.Set('PNG();'); }
function PNG() {
var tmpA = (document.getElementById) ? document.getElementsByTagName('img') : document.images;
for (i = 0; i < tmpA.length; i ++) {
	if (!tmpA[i].runtimeStyle) continue;
	if (!tmpA[i].src.match(/(.*)[^-]\.(png)/i)) continue;
	tmpA[i].runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + tmpA[i].src + '", sizingmethod="image");';
	tmpA[i].src = 'transparent.png';
}
try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {}
}
// ------------------------------- NEXT -------------------------------
load.Set('NEXT.set();');
var NEXT = { timer:undefined, obj:new Object(), 
set:function () { 
	NEXT.obj = new OBJ('NEXT');
	ENV.Set();
	NEXT.obj.path.onmouseover	= function () { NEXT.on(); }
	NEXT.obj.path.onmousemove	= function () { NEXT.on(); }
	NEXT.obj.path.onmouseout	= function () { NEXT.off(); }
	NEXT.obj.setD(0).setC(0, NEXT.obj.W, NEXT.obj.H, (NEXT.obj.W-NEXT.obj.H)).setD(1);
	sweep.Set(NEXT.obj, 0, NEXT.obj.W, NEXT.obj.H, (NEXT.obj.W-NEXT.obj.H));
},on:function ()	{
	clearTimeout(NEXT.timer);
	if (NEXT.obj.C[3] != 0)	{ ENV.Set(); sweep.Set(NEXT.obj,0, NEXT.obj.W, NEXT.obj.H, 0); }
},off:function ()	{ 
	clearTimeout(NEXT.timer);
	NEXT.timer = setTimeout('if (NEXT.obj.C[3] != (NEXT.obj.W-NEXT.obj.H))	{ ENV.Set(); sweep.Set(NEXT.obj,0, NEXT.obj.W, NEXT.obj.H, (NEXT.obj.W-NEXT.obj.H)); }', 64);
},go:function ()	{
	if ( NEXT.obj.flag)	{ window.location.href = NEXT.obj.path.href; }
}
}
// ------------------------------- BALLOON -------------------------------
load.Set('BALLOON.set();');
var BALLOON = { timer:new Array(), flag:false, key:false, obj:new Object(), objs:new Array(), txts:new Object(),
set:function () {
	if(!BALLOON.obj.flag) {
		BALLOON.obj = new OBJ(document.createElement('div'));
		BALLOON.obj.path.setAttribute('id','BALLOON');
		BALLOON.obj.setD(0);
		document.getElementsByTagName('body').item(0).appendChild(BALLOON.obj.path);
	}
	BALLOON.objs = new CLASS('BALLOON');
	for (i = 0; i < BALLOON.objs.length; i ++) {
		BALLOON.txts[i] = BALLOON.objs[i].path.title;
		eval ('BALLOON.objs[' + i +'].path.onmouseover	= function () { BALLOON.on(' + i +'); }');
		eval ('BALLOON.objs[' + i +'].path.onmousemove	= function () { BALLOON.on(' + i +'); }');
		eval ('BALLOON.objs[' + i +'].path.onmouseout	= function () { BALLOON.off(' + i +'); }');
	}
}, on:function () {
	if (BALLOON.timer) clearTimeout(BALLOON.timer);
	BALLOON.key = arguments[0];
	if (BALLOON.txts[BALLOON.key]) {
		BALLOON.obj.setD(1);
		BALLOON.obj.setI(BALLOON.txts[BALLOON.key]);
		BALLOON.obj = new OBJ(BALLOON.obj);	// reset OBJ to get Width
		BALLOON.obj.setX(BALLOON.objs[BALLOON.key].tX - BALLOON.obj.W + BALLOON.objs[BALLOON.key].W);
		BALLOON.obj.setY(BALLOON.objs[BALLOON.key].tY - 30);
		BALLOON.obj.setA(100);	trans.Set(BALLOON.obj,100);
	} else { BALLOON.obj.setD(0); }
}, off:function () {
	if (BALLOON.timer) clearTimeout(BALLOON.timer);
	BALLOON.timer = setTimeout('trans.Set(BALLOON.obj,0);', 128);
}
}
// ------------------------------- JSS SCROLL -------------------------------
function WHEELs () {
if	(slideIMG.flag && !showTXT.flag)	{ slideIMG.wheel (MW); }
else					{ JSS.wheel (MW); }
}

mouse.Set('JSS.drag();');
wheel.Set('WHEELs();'); // wheel.Set('JSS.wheel();');
msup.Set('JSS.off();');
load.Set('JSS.set();');
var JSS = { timer:new Array(), flag:new Array(), key:new Array(), keys:new Array(),
	device:new Array(), objs:new Array(), up:new Array(), dn:new Array(), pagetop:new Array(), /* to scroll */
	area:new Array(), areaX:new Array(), areaY:new Array(), areaoffset:0, /* scroll area */
	bar:new Array(), barX:new Array(), barY:new Array(), barOffset:0, barSize:new Array(), /* bar */
	box:new Array(), /* scroll bar box */
	mouseoffset:0, focus:0, focuskey:0, dragkey:undefined,
set:function () {
	JSS.objs		= new CLASS('JSS');
	JSS.area		= new CLASS('JSS_AREA');
	JSS.device	= new CLASS('JSS_DEVICE');
	JSS.bar		= new CLASS('JSS_BAR');
	JSS.box		= new CLASS('JSS_BOX');
	JSS.up		= new CLASS('JSS_UP');
	JSS.dn		= new CLASS('JSS_DN');
	JSS.pagetop	= new CLASS('JSS_PAGETOP');
for (i = 0; i < JSS.objs.length; i ++) {
	ENV.Set();
	JSS.areaoffset = 0;
	JSS.area[i].setY(JSS.areaoffset);
	JSS.area[i].setD(1);
	JSS.objs[i].setH (ENV.H - 90 - 60 - 120);
	JSS.device[i].setH (JSS.objs[i].H);
	JSS.box[i].setH (JSS.objs[i].H - 31);
	JSS.box[i].setW (11);
	JSS.device[i].setD(0); 
	JSS.bar[i].setY(JSS.barOffset);
	JSS.pagetop[i].setD(0); 
if (JSS.objs[i].flag && (JSS.area[i].H) > JSS.objs[i].H ) {
	if (JSS.pagetop[i] && JSS.pagetop[i].flag) { JSS.pagetop[i].setD(1); if (!JSS.flag[i]) { JSS.area[i].setH(JSS.area[i].H + 120); }}
	JSS.flag[i] = true;
	JSS.areaY[i]	= JSS.area[i].Y;
	JSS.barY[i]	= JSS.bar[i].Y;
//	JSS.box[i].setH(JSS.box[i].H);
//	JSS.box[i].setW(JSS.box[i].W);
	JSS.device[i].setD(1);
	JSS.barSize[i] = parseInt(JSS.objs[i].H / (JSS.area[i].H + JSS.areaoffset)  * JSS.box[i].H);
	JSS.barSize[i] = (JSS.barSize[i] < 30) ? 30 : JSS.barSize[i];
	// スクロール中の範囲選択を停止
	if ( document.getElementsByTagName('body')[0] ) { 
		document.getElementsByTagName('body')[0].onmousedown	= function () { return ((JSS.dragkey != undefined && JSS.key[JSS.dragkey])) ? false : true; }
		document.getElementsByTagName('body')[0].onmousemove	= function () { return ((JSS.dragkey != undefined && JSS.key[JSS.dragkey])) ? false : true; }
	}
	else if ( document.body ) { 
		document.body.onmousedown				= function () { return ((JSS.dragkey != undefined && JSS.key[JSS.dragkey])) ? false : true; }
		document.body.onmousemove				= function () { return ((JSS.dragkey != undefined && JSS.key[JSS.dragkey])) ? false : true; }
	}
	eval ('JSS.objs[' + i + '].path.onmouseover	= function () { clearTimeout(JSS.timer); JSS.focus = 1; JSS.focuskey = ' + i + '; }');
	eval ('JSS.objs[' + i + '].path.onmousemove	= function () { clearTimeout(JSS.timer); JSS.focus = 1; JSS.focuskey = ' + i + '; }');
//	eval ('JSS.objs[' + i + '].path.onmouseout	= function () { JSS.timer = setTimeout("JSS.focus = 0; JSS.focuskey = 0;",16); }');
	eval ('JSS.bar[' + i + '].path.onmousedown	= function () { JSS.on(' + i + '); }');
	eval ('JSS.box[' + i + '].path.onmousedown	= function () { JSS.slide(false, ' + i + '); }');
	eval ('JSS.up[' + i + '].path.onclick		= function () { JSS.slide(3/5, ' + i + '); JSS.key[' + i + '] = false; return false; }');
	eval ('JSS.dn[' + i + '].path.onclick		= function () { JSS.slide(-3/5, ' + i + '); JSS.key[' + i + '] = false; return false; }');
	eval ('JSS.pagetop[' + i + '].path.onclick	= function () { JSS.move(0, ' + i + '); JSS.key[' + i + '] = false; return false; }');
// 初期動作
	JSS.bar[i].setW(11);
	if (JSS.bar[i].H < 30) { JSS.bar[i].setH(1); }
	size.Set(JSS.bar[i], JSS.barSize[i], JSS.box[i].W);
}
// 初期絶対動作
//	move.Set(JSS.area[i], JSS.areaoffset, JSS.areaX);
}},
on:function (key) { JSS.key[key] = true; JSS.mouseoffset = MY - JSS.barY[key]; JSS.dragkey = key; return false; },
off:function (key) { JSS.key[key] = false; JSS.dragkey = undefined; },
move:function (tmp, key) { if (JSS.flag[key]) {
	JSS.areaY[key] = (arguments[0]) ? arguments[0] : 0;
	if	(JSS.areaY[key] > JSS.areaoffset )			{ JSS.areaY[key] = JSS.areaoffset; }
	else if	(JSS.areaY[key] < JSS.objs[key].H - JSS.area[key].H )	{ JSS.areaY[key] = JSS.objs[key].H - JSS.area[key].H - JSS.areaoffset; }
	JSS.barY[key] = - parseInt((JSS.areaY[key] - JSS.areaoffset) / ((JSS.area[key].H + JSS.areaoffset) - (JSS.objs[key].H - JSS.areaoffset)) * (JSS.box[key].H - JSS.barSize[key]));
	if	(JSS.barY[key] < JSS.barOffset )			{ JSS.barY[key] = JSS.barOffset; }
	else if	(JSS.barY[key] > JSS.box[key].H - JSS.barSize[key] )	{ JSS.barY[key] = JSS.box[key].H - JSS.barSize[key]; }
	move.Set(JSS.area[key], JSS.areaY[key], JSS.areaX[key], 3, 200);
	move.Set(JSS.bar[key], JSS.barY[key], JSS.barX[key], 5, 30);
}},
drag:function () { if (JSS.dragkey != undefined && JSS.flag[JSS.dragkey]) {
	if (JSS.key[JSS.dragkey]) {
	JSS.barY[JSS.dragkey] = MY - JSS.mouseoffset;
	if	(JSS.barY[JSS.dragkey] < JSS.barOffset)		{ JSS.barY[JSS.dragkey] = JSS.barOffset; }
	else if	(JSS.barY[JSS.dragkey] > JSS.box[JSS.dragkey].H - JSS.bar[JSS.dragkey].H )	{ JSS.barY[JSS.dragkey] = JSS.box[JSS.dragkey].H - JSS.bar[JSS.dragkey].H; }
	JSS.areaY[JSS.dragkey] = parseInt( - ((JSS.area[JSS.dragkey].H + JSS.areaoffset) - JSS.objs[JSS.dragkey].H + JSS.areaoffset) / (JSS.box[JSS.dragkey].H - JSS.bar[JSS.dragkey].H) * JSS.barY[JSS.dragkey]) + JSS.areaoffset;
	JSS.bar[JSS.dragkey].setY(JSS.barY[JSS.dragkey]); move.Set(JSS.bar[JSS.dragkey], JSS.barY[JSS.dragkey], JSS.barX[JSS.dragkey]);
	JSS.area[JSS.dragkey].setY(JSS.areaY[JSS.dragkey]); move.Set(JSS.area[JSS.dragkey], JSS.areaY[JSS.dragkey], JSS.areaX[JSS.dragkey]);
	}
}},
slide:function () { if (JSS.flag[(arguments[1])]) {
	var tmp = 1;
	if (!JSS.bar[(arguments[1])].tYoffset)	{ JSS.bar[(arguments[1])] = new OBJ (JSS.bar[(arguments[1])].path); }
	if (arguments[0])							{ tmp	= arguments[0]; }
	else if (MY - JSS.bar[(arguments[1])].tY > JSS.barSize[(arguments[1])])	{ tmp	= -3/5; }
	else if (MY - JSS.bar[(arguments[1])].tY < 0)				{ tmp	= 3/5; }
	else								{ tmp	= 0; }
	JSS.areaY[(arguments[1])] += parseInt(tmp * JSS.objs[(arguments[1])].H);
	
	JSS.move(JSS.areaY[(arguments[1])], arguments[1]);
	JSS.on ();
	return false;
}},
wheelkey:0, wheel:function () { if (JSS.focuskey != undefined && JSS.flag[JSS.focuskey]) {
	var tmp = (MW > 0) ? 1/5: -1/5;
//	if	(tmp > 0 && JSS.areaY[JSS.focuskey] >= 0)						{ JSS.wheelkey++; if (JSS.wheelkey >= 7) { JSS.timer = setTimeout("JSS.focus = 0; JSS.focuskey = undefined;",16); JSS.slide (1/8); JSS.key = false; }}
//	else if	(tmp < 0 && JSS.areaY[JSS.focuskey] <= JSS.objs[JSS.focuskey].H - JSS.area[JSS.focuskey].H)	{ JSS.wheelkey--; if (JSS.wheelkey <= -7) { JSS.timer = setTimeout("JSS.focus = 0; JSS.focuskey = undefined;",16); JSS.key = false; }}
	if ( false )  {;}
	else											{ JSS.wheelkey = 0; JSS.slide (tmp, JSS.focuskey); }
	for (i = 0; i < JSS.key.length; i ++) { JSS.key[i] = false; }
	JSS.dragkey = false;
}}
}
var GALLERY	= { flag:false,on:function () {  }}
var slideIMG	= { flag:false,wheel:function () {  }}
var showTXT	= { flag:false,open:function () {  }}
function Email () {
var Email_Addr	= 'kimura' + '\@' + 'ks-' + 'architects' + '.com';
if (arguments[0] && arguments[1]) { Email_Addr = arguments[0] + '\@' + arguments[1]; }
var string	= '<a href="' + 'mail' + 'to:' + Email_Addr + '">' + Email_Addr + '</a>';
document.open();
document.write(string);
document.close();
}
// AUDIO TEST Script...working on Safari & Opera
load.Set('AUDIO.set();');
var AUDIO = { timer:undefined, obj:new Object(), flag:false, play:function () { if (AUDIO.flag) { AUDIO.obj.play(); }}, set:function () {
if (macSF || macOP || winOP) {
	AUDIO.obj = new Audio('wclp.aiff'); 
	AUDIO.flag = true;
	var links = document.links;
	var imax = links.length;
	for(i = 0; i < document.links.length; i++){ if (!document.links[i].onmouseover) { document.links[i].onmouseover = AUDIO.play; }}
}
}}

