// ======================================================================
// 
// JScript Source File -- copyright 2002 derStandard.at
// 
// NAME: PlugInsDetect.js
// 
// AUTHOR	: Michael Levitin, Bronner Online AG
// DATE		: 22.06.2005 v1.0
// 
// COMMENT: Steuerungsdatei Navigation 2005
// 
// sources are not to be used in other websites.
// if you want to use the navigation write to webmaster@derStandard.at
// =========================================================================

function PlugIns() {
	function Version(Infos) {
		this.Major = 0;
		this.Minor = 0;
		this.Build = 0;
		this.Rev = 0;
		if (Infos) {
			switch (Infos.length) {
				case 1:
					if (Infos[0].toString().indexOf('r') != -1) {
						this.Major = parseInt(Infos[0].substring(0, Infos[0].indexOf('r')));
						this.Rev = parseInt(Infos[0].substring(Infos[0].indexOf('r') + 1));
					} else {
						this.Major = parseInt(Infos[0]);
					}
				break;
				case 2:
					this.Major = parseInt(Infos[0]);
					if (Infos[1].toString().indexOf('r') != -1) {
						this.Minor = parseInt(Infos[1].substring(0, Infos[1].indexOf('r')));
						this.Rev = parseInt(Infos[1].substring(Infos[1].indexOf('r') + 1));
					} else {
						this.Minor = parseInt(Infos[1]);
					}
				break;
				case 3:
					this.Major = parseInt(Infos[0]);
					this.Minor = parseInt(Infos[1]);
					if (Infos[2].toString().indexOf('r') != -1) {
						this.Build = parseInt(Infos[2].substring(0, Infos[2].indexOf('r')));
						this.Rev = parseInt(Infos[2].substring(Infos[2].indexOf('r') + 1));
					} else {
						this.Build = parseInt(Infos[2]);
					}
				break;
				default:
					if (Infos.length != 0) {
						this.Major = parseInt(Infos[0]);
						this.Minor = parseInt(Infos[1]);
						this.Build = parseInt(Infos[2]);
						this.Rev = parseInt(Infos[3]);
					}
			}
		}
		this.toString = function() {
			if (this.Major != 0 || this.Minor != 0 || this.Build != 0 || this.Rev != 0) {
				return this.Major.toString() + '.' + this.Minor.toString() + '.' + this.Build.toString() + '.' + this.Rev.toString();
			} else {
				return 'No Infos!';
			}
		}
	}
	this.hasJava = (navigator.javaEnabled() ? new Version() : null);
	this.hasFlash = null;
	this.hasShockwave = null;
	this.hasWMP = null;
	this.hasReal = null;
	this.hasQT = null;
	this.hasAcrobat = null;
	this.hasSVG = null;
	if((State.Browser.mac || !State.Browser.ie) && navigator.plugins && navigator.plugins.length > 1) {
		for (var i = 0; i < navigator.mimeTypes.length; i++) {
			if (navigator.mimeTypes[i].enabledPlugin) {
				switch (navigator.mimeTypes[i].type) {
					case 'application/x-shockwave-flash':
						if (navigator.mimeTypes[i].enabledPlugin.description && navigator.mimeTypes[i].enabledPlugin.description.indexOf('.') != -1) {
							this.hasFlash = new Version(navigator.mimeTypes[i].enabledPlugin.description.replace(/.*\s+(\d+\..*)$/, '$1').split('.'));
						} else {
							this.hasFlash = new Version();
						}
					break;
					case 'application/x-director':
						if (navigator.mimeTypes[i].enabledPlugin.description && navigator.mimeTypes[i].enabledPlugin.description.indexOf('.') != -1) {
							this.hasShockwave = new Version(navigator.mimeTypes[i].enabledPlugin.description.replace(/.*\s+(\d+\..*)$/, '$1').split('.'));
						} else {
							this.hasShockwave = new Version();
						}
					break;
					case 'application/x-mplayer2':
						this.hasWMP = new Version();
					break;
					case 'audio/x-pn-realaudio-plugin':
						this.hasReal = new Version();
					break;
					case 'video/quicktime':
						if (navigator.mimeTypes[i].enabledPlugin.name && navigator.mimeTypes[i].enabledPlugin.name.indexOf('.') != -1) {
							this.hasQT = new Version(navigator.mimeTypes[i].enabledPlugin.name.replace(/.*\s+(\d+\..*)$/, '$1').split('.'));
						} else {
							this.hasQT = new Version();
						}
					break;
					case 'application/pdf':
						if (navigator.mimeTypes[i].enabledPlugin.description && navigator.mimeTypes[i].enabledPlugin.description.indexOf('.') != -1) {
							this.hasAcrobat = new Version(navigator.mimeTypes[i].enabledPlugin.description.replace(/.*\s+(\d+\.\d+).*/gi, '$1').split(' '));
						} else {
							this.hasAcrobat = new Version();
						}
					break;
					case 'image/svg-xml':
						if (navigator.mimeTypes[i].enabledPlugin.description && navigator.mimeTypes[i].enabledPlugin.description.indexOf('.') != -1) {
							this.hasSVG = new Version(navigator.mimeTypes[i].enabledPlugin.description.replace(/.*\s+[v]?(\d+\.\d+).*/gi, '$1').split(' '));
						} else {
							this.hasSVG = new Version();
						}
				}
			}
		}
	} else if (State.Browser.ie && !State.Browser.mac) {
		var AXObjectStore = null;
		try {
			AXObjectStore = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			this.hasFlash = new Version([AXObjectStore.FlashVersion() / 0x10000, AXObjectStore.FlashVersion() % 0x10000]);
			AXObjectStore = null;
		} catch(e) {
		}
		try {
			AXObjectStore = new ActiveXObject("SWCtl.SWCtl");
			this.hasShockwave = new Version(AXObjectStore.ShockwaveVersion("").split('.'));
			AXObjectStore = null;
		} catch(e) {
		}
		try {
			AXObjectStore = new ActiveXObject("WMPlayer.OCX");
			this.hasWMP = new Version(AXObjectStore.versionInfo.split('.'));
			AXObjectStore = null;
		} catch(e) {
		}
		try {
			AXObjectStore = new ActiveXObject("QuickTimeCheckObject.QuickTimeCheck");
			if (AXObjectStore.IsQuickTimeAvailable(0)) {
				this.hasQT = new Version([(AXObjectStore.QuickTimeVersion & 0xF000000) / 0x1000000, (AXObjectStore.QuickTimeVersion & 0xF00000) / 0x100000, (AXObjectStore.QuickTimeVersion & 0xF0000) / 0x10000]);
			}
			AXObjectStore = null;
		} catch(e) {
		}
		try {
			AXObjectStore = new ActiveXObject("QuickTimeCheckObject.QuickTimeCheck");
			if (AXObjectStore.IsQuickTimeAvailable(0)) {
				this.hasQT = new Version([(AXObjectStore.QuickTimeVersion & 0xF000000) / 0x1000000, (AXObjectStore.QuickTimeVersion & 0xF00000) / 0x100000, (AXObjectStore.QuickTimeVersion & 0xF0000) / 0x10000]);
			}
			AXObjectStore = null;
		} catch(e) {
		}
	}
}
if (State && State.Browser && State.Browser.PlugIns == null) {
	State.Browser.PlugIns = new PlugIns();
}
