/* --------------------------------------------------------------
//
//　関数　floatingWindow ( obj ) 　−　表示・非表示を行なう
//
//  [ 使い方 ]

	object = new Object();

	// ----- 各種パラメータ -----
	object.url = "URL" (省略不可);
	object.id = "ID" (省略時 URLをもとに生成);
	
	object.width = "ヨコ幅" (省略時 500px);
	object.height = "タテ幅" (省略時 500px);
	object.top = "y 座標" (省略時 中央に表示);		// 数値で入力する以外には、"t"(上部), "c"(中央), "b"(下部) がある
	object.left = "x 座標" (省略時 中央に表示);		// 数値で入力する以外には、"l"(左端), "c"(中央), "r"(右端) がある
	
	object.url_bg = "背景画像URL" (省略時 背景画像なし);
	object.id_bg = "背景ID" (省略時 IDをもとに生成);
	object.bgc = "背景色" (省略時 背景色なし);
	
	object.zindex = "階層" (省略時 1000);
	object.sc = "スクロール有無" (省略時 false);	// ブラウザのスクロールに追随するかどうか(true or false)
	object.cl = "×ボタン有無" (省略時 false);		// 閉じるボタンを表示するかどうか　位置は下部中央(true or false)
	
	object.param = new Array();
	object.param = [ "各種埋め込みパラメータ" ] (省略時 なし);
	// 例） flashの場合、object.param = [ "wmode", "transparent", "bgcolor", "#FFFFFF" ];　など
	
	
	floatingWindow(object);		// 表示・非表示切り替え
//
*/

var objectNumber = 0;
var objectArray = new Array();

function floatingWindow ( obj ) {
	
	var layer_main;
	var layer_bg
	
	var str = new String;
	
	
	if ( ! obj.url )		return;		// URL 未指定ならリターン
	
	if ( ! obj.id ) {					// id 未指定なら URL より生成
		var ar = obj.url.split("/");
		if ( 2 <= ar.length )	obj.id = ar[ar.length-2].toUpperCase() + "_";
		else					obj.id = "";	
		obj.id += ar[ar.length-1].split(".").join("").toUpperCase();
	}
	if ( ! obj.id_bg )	obj.id_bg = obj.id + "_BACKGROUND";
	
	
	
	if ( document.getElementById(obj.id) == null )		// 未定義（一度も表示されていない）
	{
		
		// ------------------------- 計算 ---------------------------
		
		if ( isNaN(obj.zindex) )	obj.zindex = 1000;	// z-index
		
		if ( ! obj.width )		obj.width  = 500;	// width
		if ( ! obj.height )		obj.height = 500;	// height
		if ( ! obj.top )		obj.top  = "c";		// top
		if ( ! obj.left )		obj.left = "c";		// left	
		
		// --- width  height  top  left
		if ( ! parseInt(obj.width) )							obj.width = 500;
		else if ( obj.width.toString().indexOf("%") == -1 )	obj.width = parseInt(obj.width);
		if ( ! parseInt(obj.height) )							obj.height = 500;
		else if ( obj.height.toString().indexOf("%") == -1 )	obj.height = parseInt(obj.height);
		
		if ( ! isNaN(parseInt(obj.top)) )		obj.top = parseInt(obj.top);
		else if ( obj.top.toLowerCase() != "t" && obj.top.toLowerCase() != "b" )	obj.top = "c";
		else									obj.top = obj.top.toLowerCase();
		
		if ( ! isNaN(parseInt(obj.left)) )		obj.left = parseInt(obj.left);
		else if ( obj.left.toLowerCase() != "l" && obj.left.toLowerCase() != "r" )		obj.left = "c";
		else									obj.left = obj.left.toLowerCase();
		// ---  ---
		
		str = inner_string ( obj );		//// 挿入するタグの生成関数呼び出し
		
		var ar_size = new Array();		// ブラウザ内サイズ
		ar_size = get_innersize();
		
		var ar_posi = new Array();		// スクロール位置
		ar_posi = get_scposition();
		
		// -------------------------
		
		
		/* 背景レイヤー */
		if ( obj.url_bg || obj.bgc ) {		// 背景URLか背景色が定義されていれば
			
			layer_bg = document.createElement("div");
			layer_bg.id = obj.id_bg;
			
			layer_bg.style.position = "absolute";
			layer_bg.style.zindex = obj.zindex;
			layer_bg.style.display = "block";
			
			
			layer_bg.style.width = "100%";
			layer_bg.style.height = "100%";
			if ( obj.bgc )		layer_bg.style.backgroundColor = obj.bgc;
			if ( obj.url_bg )	layer_bg.style.backgroundImage = 'url('+obj.url_bg+')';
			
			layer_bg.style.top = ar_posi[1] + "px";
			layer_bg.style.left = ar_posi[0] + "px";
			
			layer_bg.style.visibility = "visible";
			
			layer_bg.innerHTML = '';
			
			document.getElementsByTagName("body")[0].appendChild(layer_bg);
		}
		
		/* メインレイヤー */
		layer_main = document.createElement("div");
		layer_main.id = obj.id;
		
		layer_main.style.position = "absolute";
		layer_main.style.zindex = parseInt(obj.zindex) + 1;
		layer_main.style.display = "block";
		
		
		//if ( obj.width == "100%" )	layer_main.style.width = "100%";
		//if ( obj.height == "100%" )	layer_main.style.height = "100%";
		if ( obj.width.toString().indexOf("%") != -1 )		layer_main.style.width = "100%";
		if ( obj.height.toString().indexOf("%") != -1 )	layer_main.style.height = "100%";
			
		var w = obj.width;
		if ( obj.width.toString().indexOf("%") != -1 )		w = ar_size[0] * parseInt(obj.width)/100;
		var h = obj.height;
		if ( obj.height.toString().indexOf("%") != -1 )	h = ar_size[1] * parseInt(obj.height)/100;
		
		
		if ( isNaN(obj.left) ) {
			if ( obj.left == "c" )			layer_main.style.left = ar_posi[0] + (ar_size[0]-w)/2 + "px";
			else if ( obj.left == "l" )	layer_main.style.left = ar_posi[0] + "px";
			else if ( obj.left == "r" )	layer_main.style.left = ar_posi[0] + (ar_size[0]-w) + "px";
		} else								layer_main.style.left = ar_posi[0] + obj.left + "px";
		
		
		if ( isNaN(obj.top) ) {
			if ( obj.top == "c" )			layer_main.style.top = ar_posi[1] + (ar_size[1]-h)/2 + "px";
			else if ( obj.top == "t" )		layer_main.style.top = ar_posi[1] + "px";
			else if ( obj.top == "b" )		layer_main.style.top = ar_posi[1] + (ar_size[1]-h) + "px";
		} else								layer_main.style.top = ar_posi[1] + obj.top + "px";	

		
		layer_main.style.visibility = "visible";
		
		layer_main.innerHTML = str;
		
		objectArray[ objectNumber ] = new Object();
		objectArray[ objectNumber ] = obj;
		
		objectArray[ objectNumber ].n = objectNumber;
		objectArray[ objectNumber ].str = str;
		
		
	
		if( obj.sc )	objectArray[ objectNumber ].clid = setInterval("func_interval(objectArray[ "+objectNumber+" ])",100);	///// setInterval
		
		document.getElementsByTagName("body")[0].appendChild(layer_main);
		//var objBody = document.body;
		//objBody.insertBefore(layer_main, objBody.firstChild);
		layer_main.style.display = "block";
		
		objectNumber ++;
	
	}
	else	// 定義済み
	{
		layer_main = document.getElementById(obj.id);
		layer_bg = document.getElementById(obj.id_bg);
		
		if ( layer_main.style.visibility == "visible" ) {
			layer_main.innerHTML = "";
			layer_main.style.visibility = "hidden";
			
			if( obj.sc )	clearInterval(obj.clid);	///// clearInterval
			
			if ( layer_bg != null )	layer_bg.style.visibility = "hidden";
			
		} else {
			layer_main.innerHTML = obj.str;				/////
			layer_main.style.visibility = "visible";
			 
			if( obj.sc )	objectArray[ obj.n ].clid = setInterval("func_interval(objectArray[ "+obj.n+" ])",100);		///// setInterval

			if ( layer_bg != null )	layer_bg.style.visibility = "visible";
		}
	}

}

// setInterval
function func_interval ( obj ) {
		
	var layer_main = document.getElementById(obj.id);
	var layer_bg = document.getElementById(obj.id_bg);
	
	var ar_size = new Array();		// ブラウザ内サイズ
	ar_size = get_innersize();
	
	var ar_posi = new Array();		// スクロール位置
	ar_posi = get_scposition();
	
	if ( obj.url_bg || obj.bgc ) {
		layer_bg.style.top = ar_posi[1] + "px";
		layer_bg.style.left = ar_posi[0] + "px";
	}


	if ( obj.width.toString().indexOf("%") != -1 )		layer_main.style.width = "100%";
	if ( obj.height.toString().indexOf("%") != -1 )	layer_main.style.height = "100%";
		
	var w = obj.width;
	if ( obj.width.toString().indexOf("%") != -1 )		w = ar_size[0] * parseInt(obj.width)/100;
	var h = obj.height;
	if ( obj.height.toString().indexOf("%") != -1 )	h = ar_size[1] * parseInt(obj.height)/100;
	
	if ( isNaN(obj.left) ) {
		if ( obj.left == "c" )			layer_main.style.left = ar_posi[0] + (ar_size[0]-w)/2 + "px";
		else if ( obj.left == "l" )	layer_main.style.left = ar_posi[0] + "px";
		else if ( obj.left == "r" )	layer_main.style.left = ar_posi[0] + (ar_size[0]-w) + "px";
	} else								layer_main.style.left = ar_posi[0] + obj.left + "px";
	
	if ( isNaN(obj.top) ) {
		if ( obj.top == "c" )			layer_main.style.top = ar_posi[1] + (ar_size[1]-h)/2 + "px";
		else if ( obj.top == "t" )		layer_main.style.top = ar_posi[1] + "px";
		else if ( obj.top == "b" )		layer_main.style.top = ar_posi[1] + (ar_size[1]-h) + "px";
	} else								layer_main.style.top = ar_posi[1] + obj.top + "px";	
}

/* 挿入するHTMLタグを返す */
function inner_string ( obj ) {
	
	var s = new String();
	var ar = obj.url.split(".");
	var ex = ar[ar.length-1].toLowerCase();	// 拡張子（小文字）
	
	if ( ex == "swf" ) {	// SWF
		
		s =  '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';
		s += '" width="'+obj.width+'" height="'+obj.height+'">';
		s += '<param name="movie" value="'+obj.url+'" />';
	
		if ( obj.param ) {
			for ( i = 0; obj.param[i]; i += 2 )
				s += '<param name="'+obj.param[i]+'" value="'+obj.param[i+1]+'" />';
		}
		
		s += '<embed src="'+obj.url+'" width="'+obj.width+'" height="'+obj.height+'" '
		
		if ( obj.param ) {
			for ( i = 0; obj.param[i]; i += 2 )
				s += obj.param[i]+'="'+obj.param[i+1]+'" ';
		}
		
		s += 'type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'
		s += '</object>';
		
		/*
		s =  '<object type="application/x-shockwave-flash" data="';
		s += obj.url+'" width="'+obj.width+'" height="'+obj.height+'">';
		s += '<param name="movie" value="'+obj.url+'" />';
	
		if ( obj.param ) {
			for ( i = 0; obj.param[i]; i += 2 )
				s += '<param name="'+obj.param[i]+'" value="'+obj.param[i+1]+'" />';
		}
		s += '</object>';
		*/
		
	} else if ( ex == "jpg" || ex == "gif" || ex == "png" || ex == "jpeg" ) {				// 画像
		s = '<img src="'+obj.url+'" width="'+obj.width+'" height="'+obj.height+'" />';
	} else {
		s = '<iframe src="'+obj.url+'" name="'+obj.id+'" width="'+obj.width+'" height="'+obj.height+'" ></iframe>';
	}
	
	// 閉じるボタン
	if ( obj.cl )
		s += '<br/>&nbsp;&nbsp;<center><a href="javascript:void(0)" onClick="floatingWindow(objectArray[ '+objectNumber+' ])" style="color:#444444; font-size:x-small;">x</a></center>';
	
	return s;
}

/* ブラウザ内の横、縦 */
function get_innersize ( ) {
	
	var ar = new Array( 1280, 1024 );
	
	if ( window.innerWidth )
		ar = [ window.innerWidth, window.innerHeight ];
	else if ( document.documentElement.clientWidth )
		ar = [ document.documentElement.clientWidth, document.documentElement.clientHeight ];
	else if ( document.body.clientWidth )
		ar = [ document.body.clientWidth, document.body.clientHeight ];
	
	return ar;
}
/* 現在のスクロール位置 */
function get_scposition ( ) {
	
	var ar = new Array( 0, 0 );
	
	if ( window.pageXOffset != undefined )
		ar = [ window.pageXOffset, window.pageYOffset ];
	else if ( document.documentElement.scrollLeft != undefined )
		ar = [ document.documentElement.scrollLeft, document.documentElement.scrollTop ];
	else if ( document.body.scrollLeft != undefined )
		ar = [ document.body.scrollLeft, document.body.scrollTop ];
	
	return ar;
}