/*
 *	browser2.js - ブラウザチェック用スクリプト
 *
 *		著作者:
 *			HIROTAKA.YAMASHITA. 2008-2011. - sousyu.yama@gmail.com 
 *
 *		ライセンス:
 *			The MIT License
 *
 *			Copyright (c) 2008-2011 HIROTAKA YAMASHITA.
 *
 *			以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル（以下「ソフトウェア」）の
 *			複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、
 *			ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または
 *			販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。
 *
 *			上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載する
 *			ものとします。
 *
 *			ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。
 *			ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、
 *			それに限定されるものではありません。作者または著作権者は、契約行為、不法行為、
 *			またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用または
 *			その他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。 
 *
 *			Permission is hereby granted, free of charge, to any person obtaining a copy
 *			of this software and associated documentation files (the "Software"), to deal
 *			in the Software without restriction, including without limitation the rights
 *			to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 *			copies of the Software, and to permit persons to whom the Software is
 *			furnished to do so, subject to the following conditions:
 *
 *			The above copyright notice and this permission notice shall be included in
 *			all copies or substantial portions of the Software.
 *
 *			THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *			IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *			FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *			AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *			LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *			OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *			THE SOFTWARE.
 *
 *		Flash バージョンは 9 以上が必要
 *
 *		以下のブラウザを推奨するスクリプト
 *			Internet Explorer 7 以上
 *			Firefox 3 以上
 *			Safari 4 以上
 *			Opera 10 以上
 *			Chrome 10 以上
 *
 */
if(typeof shadewww2=="undefined"){
	var shadewww2=new Object();
}
////////////////////////////////////////////////////////////////////////////////////////////
shadewww2.Browser2 = function() {
	this.ua = navigator.userAgent.toUpperCase();
	this.browserName = '';
	this.wwwFlag = false;
	this.qtplugin = false;
	this.flashplugin = false;

	this.validData = [
		{
			name:			"MSIE",
			vstring:	"MSIE ",
			version:	7,
			flag:			false
		},
		{
			name:			"CHROME",
			vstring:	"CHROME/",
			version:	10,
			flag:			false
		},
		{
			name:			"SAFARI",
			vstring:	"VERSION/",
			version:	4,
			flag:			false
		},
		{
			name:			"FIREFOX",
			vstring:	"FIREFOX/",
			version:	3,
			flag:			false
		},
		{
			name:			"OPERA",
			vstring:	"VERSION/",
			version:	10,
			flag:			false
		},
		{
			name:			"APPLEWEBKIT",
			vstring:	"APPLEWEBKIT/",
			version:	530,
			flag:			false
		}
	];
};
////////////////////////////////////////////////////////////////////////////////////////////
shadewww2.Browser2.prototype = {
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//	対象ブラウザの設定
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	validBrowser: function () {
		for (var i = 0; i < this.validData.length; i++) {
			var bName = this.validData[i].name;
			var idx = this.ua.indexOf(bName);
			if (idx != -1)	{
				this.browserName = bName;
				var idx = this.ua.indexOf(this.validData[i].vstring);
				if (idx != -1) {
					var vStr = this.ua.substring(idx + this.validData[i].vstring.length);
					var version  = parseFloat(vStr);
					if (version >= this.validData[i].version) {
						this.validData[i].flag = true;
					}
				}
				this.wwwFlag = true;
				break;
			}
		}
		return;
	},

//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//	Internet Explorerの判定
//
//		戻り値:	true	:IE
//					false	:IE以外
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	isIE: function () {
		if ("MSIE" == this.browserName) {
			return true;
		} else {
			return false;
		}
	},

//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//	QuickTime プラグインの確認 (バージョン6以上)
//
//		戻り値:	true	:インストール済み
//					false	:未インストール
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	isQuicktimePlugin: function () {
		var pluginFlag = false;
		if (this.isIE() || navigator.mimeTypes.length == 0) {
			var qt;
			try {
				qt = new ActiveXObject("QuickTimeCheckObject.QuickTimeCheck");
			} catch (ex) {
				qt = false;
			}
			if (qt) {
				var qtVersion = parseInt(qt.QuickTimeVersion.toString(16).substring(0,1), 16);
				if (qtVersion >= 6){
					pluginFlag = true;
				}
			}
		} else {
			if (navigator.mimeTypes['video/quicktime']) {
				var plugin = navigator.mimeTypes['video/quicktime'].enabledPlugin;
				if (plugin.name.toUpperCase().indexOf ("QUICKTIME") != -1) {
					var qtversion = plugin.name.replace(/^[A-Za-z\s-]+/, '');
					qtversion = parseFloat (qtversion);
					if (qtversion >= 6 || (typeof plugin.version == "undefined")) {
						pluginFlag = true;
					}
				}
			}
		}

		this.qtplugin = pluginFlag;
	},

//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//	Flash プラグインの確認 (バージョン9以上)
//
//		戻り値:	true	:インストール済み
//					false	:未インストール
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	isFlashPlugin: function () {
		var pluginFlag = false;

		if (this.isIE() || navigator.mimeTypes.length == 0) {
			var flash;
			try {
				flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.9");
			} catch (ex) {
				flash = false;
			}
			if (flash) {
				var flashVersion = flash.GetVariable("$version").replace(/^[A-Za-z\s-]+/, '');
				flashVersion = parseFloat(flashVersion.replace(/,/, '.'));
				if (flashVersion >= 9){
					pluginFlag = true;
				}
			}
		} else {
			if (navigator.mimeTypes['application/x-shockwave-flash']) {
				var plugin = navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin;
				if (plugin.description.toUpperCase().indexOf ("FLASH") != -1) {
					var flashVersion = plugin.description.replace(/^[A-Za-z\s]+/, '');
					flashVersion = parseFloat (flashVersion);
					if (flashVersion >= 9) {
						pluginFlag = true;
					}
				}
			}
		}

		this.flashplugin = pluginFlag;
	},

//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//	対象ブラウザの判定
//
//		戻り値:	true	:対象ブラウザ
//					false	:対象外ブラウザ
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	isBrowser: function () {
		return this.wwwFlag;
	},

//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//	対象ブラウザのバージョン判定
//
//		戻り値:	true	:対象バージョン,判定不能
//					false	:対象外バージョン
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	isVersion: function () {
		for (var i = 0; i < this.validData.length; i++) {
			if (this.browserName == this.validData[i].name) {
				return this.validData[i].flag;
			}
		}
		return true;
	},

//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//	QuickTime プラグインの判定
//
//		戻り値:	true	:インストール
//					false	:未インストール
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	isQT: function () {
		return this.qtplugin;
	},

//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//	Flash プラグインの判定
//
//		戻り値:	true	:インストール
//					false	:未インストール
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	isFLASH: function () {
		return this.flashplugin;
	}

////////////////////////////////////////////////////////////////////////////////////////////
};
////////////////////////////////////////////////////////////////////////////////////////////
if(typeof Browser2=="undefined"){
	var Browser2 = new shadewww2.Browser2();
	Browser2.validBrowser ();
	Browser2.isQuicktimePlugin ();
	Browser2.isFlashPlugin ();
}
// で始まる行はコメントアウトされます。
//Browser.checkBrowser(0);	//メッセージ非表示
//Browser.checkBrowser(1);	//p要素でメッセージ表示
//Browser.checkBrowser(2);	//警告ダイアログでメッセージ表示
//Browser.isFlashPlugin(0);
//Browser.isFlashPlugin(1);
//Browser.isFlashPlugin(2);

