/*
 *
 * File name: windowpopup.js  Shift_JIS-[CR+LF]
 * Version: 1.0 - 2007/08/05
 * Written by TEC INFORMATION SYSTEMS CORPORATION
 * 
 * based on jquery_n.js
 * 
 * [概要]
 * 別ウィンドウをポップアップさせます。
 * 親ウィンドウにフォーカスが戻ると、自動的に子ウィンドウが閉じます。
 * 
 * [Usage]
 *   <script type="text/javascript" src="windowpopup.js"></script>
 *   <script type="text/javascript"><!--
 *   //ウィンドウポップアップの設定
 *   // gWINDOW_POPUPER_LIST['a要素ID'] = ['ポップアップHTMLのURL', Width, Height];
 *   gWINDOW_POPUPER_LIST['newwin01'] = ['popup01.html#a01', 0, 0];
 *   gWINDOW_POPUPER_LIST['newwin02'] = ['popup01.html#a02', 0, 0];
 *   --></script>
 *   </head>
 *   
 *   〜
 *   
 *   <a href="popup01.html#a01" id="newwin01" target="_blank">別ウィンドウで開きます</a>
 *   <a href="popup01.html#a02" id="newwin02" target="_blank">別ウィンドウで開きます</a>
 *   
 *   ・ウィンドウポップアップの設定はページごと、HTMLヘッダ内に記述します。
 *   ・a要素にはIDを指定します。（gWINDOW_POPUPER_LISTに、このIDと同じ名前を設定します）
 *   ・a要素にはtargetを指定します。（JavascriptOFF時の対応）
 * 
 */

// ---------------------------------------------------------
//ウィンドウポップアップの設定変数（の初期化）
// gWINDOW_POPUPER_LIST['a要素ID'] = ['ポップアップHTMLのURL', Width, Height];
//     ポップアップHTMLのURL：　ページ内参照（例：xxx.html#a01）を含むことができます。
//     Width：　ポップアップウィンドウの幅（px）。「0」を指定するとデフォルト幅になります。
//     Height： ポップアップウィンドウの高さ（px）。「0」を指定するとデフォルト高さになります。
var gWINDOW_POPUPER_LIST = new Array();

//ウィンドウの自動クローズ機能の有効／無効
var gWINDOW_POPUPER_IS_CLOSE = true;
// ---------------------------------------------------------



//グローバルWindowPopuperオブジェクト
var gWindowPopuper;

//定数
var WINDOW_POPUPER_COL_URL = 0;	//ポップアップURL：ウィンドウポップアップの設定
var WINDOW_POPUPER_COL_W = 1;		//幅：ウィンドウポップアップの設定
var WINDOW_POPUPER_COL_H = 2;		//高：ウィンドウポップアップの設定


/// WindowPopuperクラス
var WindowPopuper = function() {
		//ポップアップした要素
		this.m_popupWindow = null;
};
WindowPopuper.prototype = {
	
	/// ポップアップ初期化
	init: function()
	{
		for (aId in gWINDOW_POPUPER_LIST)
		{
			//イベント：a要素クリック
			$("#" + aId).click(function(event){
				if (! gWINDOW_POPUPER_IS_CLOSE) {
					if (gWindowPopuper.m_popupWindow != null)
					{
						gWindowPopuper.m_popupWindow.close();
					}
				}
				
				//ID
				var id = $(this).attr("id");
				
				var winUrl = gWINDOW_POPUPER_LIST[id][WINDOW_POPUPER_COL_URL];
				var winW   = gWINDOW_POPUPER_LIST[id][WINDOW_POPUPER_COL_W];
				var winH   = gWINDOW_POPUPER_LIST[id][WINDOW_POPUPER_COL_H];
				
				var options = "directories=no,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=yes,toolbar=yes";
				if (winW != 0) {
					options += ",width=" + winW;
				}
				if (winH != 0) {
					options += ",height=" + winH;
				}
				
				//ウィドウ名
				var winName = "windowpopup";
				if (gWINDOW_POPUPER_IS_CLOSE)
				{
					//ランダムに生成する
					winName = "windowpopup" + Math.floor(Math.random() * 100);
				}
				
				//ウィンドウを開く
				gWindowPopuper.m_popupWindow = window.open(winUrl, winName, options);
				
				//イベントの伝搬を抑止
				if (event.preventDefault) {
					event.preventDefault(); 
					event.stopPropagation(); 
				} else {
					event.returnValue = false; 
					event.cancelBubble = true; 
				}
			});
		}
		//イベント：ウィンドウフォーカス
		$(window).focus(function(event){
			//親ウィンドウにフォーカスが戻ったら子ウィンドウを閉じる
			if (gWINDOW_POPUPER_IS_CLOSE)
			{
				if (gWindowPopuper.m_popupWindow != null) {
					try {
						gWindowPopuper.m_popupWindow.close();
						gWindowPopuper.m_popupWindow = null;
					} catch (exception) {
						gWindowPopuper.m_popupWindow = null;
					}
				}
			}
		});
	},
	
	//最後のカンマを忘れないためのダミー関数
	dmyFunction: function() {}
}// ImagePopuper

/// メイン
$(function(){
	gWindowPopuper = new WindowPopuper();
	gWindowPopuper.init();
});

