//ページを閉じる際に、画面を暗くして、警告文を出す
//　バックスリーン基幹部
(function(){
	
	// ドキュメントウィンドサイズを得る
	var windowWH = function( mode ){
		var mode = mode.toLowerCase() ;
		mode = ( mode === 'w' ||  mode === 'width') ? 'Width' :
					(( mode === 'h' ||  mode === 'height') ? 'Height' : false ) ;
		if( !mode ) return null ;
		return window['inner' + mode ] ||  document.documentElement['client' + mode ] ||document.body['client' + mode ] ||  0 ;
	};
	
	// 簡易ブラウザ選別
	var getBrowser = function(){
		var ua = navigator.userAgent.toLowerCase();
		if( ua.indexOf('msie') !== -1 ){
			return 'ie';
		} else if (
			ua.indexOf('firefox') !== -1  ){
			return 'ff';
		} else if (
			ua.indexOf('applewebkit') !== -1 &&  ua.indexOf('safari') !== -1 && ua.indexOf('chrome')  !== -1 ){
			return 'chrome';
		} else if (
			ua.indexOf('applewebkit') !== -1 &&  ua.indexOf('safari') !== -1 ){
			return 'safari';
		} else if (
			ua.indexOf('opera') !== -1 ){
			return 'opera';
		} 
		return false;
	};

	//　バックスクリーン作成
	// opacity 0 - 100
	var createScreen = function( opacity ){
		var oBody = document.getElementsByTagName('body')[0] ;
		var msgBG = document.createElement('div');
		// 透明度のデフォルト
		if( ( !opacity && opacity !== 0 ) || isNaN( opacity ) ){
			opacity = 50;
		} 
		
		msgBG.id = 'createScreen'; //便宜上の名前ですので、必要な場合適宜変更してください。
		//
		msgBG.style.backgroundColor = '#000000' ;
		msgBG.style.left = 0 + 'px';
		msgBG.style.top = 0 + 'px';
		msgBG.style.width = windowWH( 'w' ) + 'px';
		msgBG.style.height = windowWH( 'h' ) + 'px';
		msgBG.style.display = 'block';
		msgBG.style.position = 'absolute';
		
		//透明度
		if( getBrowser() === 'ie'  ){
			msgBG.style.filter = 'alpha( opacity = ' + opacity + ')';
		} else 
			msgBG.style.opacity = opacity / 100;
		//　オブジェクトを生成
		oBody.appendChild( msgBG );
	};
	
	// バックスクリーンの消去
	var removeScreen = function(){
		var o = document.getElementById('createScreen');
		if( !o ) return ;
		o.parentNode.removeChild( o );
	};

	// Fire Fox 	
	var ffFxs = {
		//　
		createScreen : function( opacity ){
			createScreen( opacity );
			// 最初はOnloadにいるので、一端ブラウザにコントロールを返さないとダイアログが出ません。
			// そのため、タイマーをかけて、帰った瞬間にコントロールをこちらに掌握します。
			// 一度目のリロード時の設定
			i1 = setTimeout( function(e){ 
				clearTimeout( i1 );
				// 同様に、ダイアログで留まった時、バックスクリーンを消去するためにタイマーを仕掛けています。
				// 留まったときに強制的にスクリーンを削除するための時間
				i2 = setTimeout( function(e){
					clearTimeout( i2 );
					removeScreen(); 
					location.replace( location.pathname );
				},500 );//あまり短くすると、動作しない場合があります。
			}, 500 ) ;//あまり短くすると、動作しない場合があります。
		}
	};
	
	// グローバル
	window.createScreen = createScreen;
	window.getBrowser = getBrowser;
	window.ffFxs = ffFxs;
})();

//
// イベント部
//
window.onload = function(){
	var browser = getBrowser();
	//  FireFox用リロード時処理
	if( browser ==='ff' ){
		if( location.search.indexOf( 'flg=1' ) !== -1 ) {
			ffFxs.createScreen( 80 ); //バックグラウンドの透明度
		} else {
			exPopup.url =  exPopup.url + '?flg=1' ;
		}
	} 
	window.onbeforeunload = function(e){
		// chrome は対象外
		if( browser === 'chrome' ) return;
		if( document.activeElement.nodeName != "A" ){
			if( browser === 'ff' ){
				// Fire Fox
				// リダイレクト抑制(違うページに飛ばすときは不必要)
				if( location.search.indexOf( 'flg=1' ) !== -1 ) return null;
				return exPopup.callback() ;
			}  else {
				// IE safari 処理
				if(browser === 'ie'  || browser === 'safari'  ){
					createScreen( 75 );
					return exPopup.callback();
				}
			}
			// その他のブラウザ
			return exPopup.callback();
		}
	}
}

