/*
 * -- Tewonder code description start --
 * Name: se.tewonder.Global.GlobalObjects.PluginDetector.DetectorObjects.QuickTimeVideoDetector
 * Type: Class
 * Version: 0.0.01
 *
 * Edited by: Mattias Ekendahl (mattias@tewonder.se)
 * Updates:
 *
 * Notes:
 * Todo: 
 * -- Tewonder code description end --
 */
 
 function gTewonderLocalScopeFunction() {
	//alert("gTewonderLocalScopeFunction::QuickTimeVideoDetector");
	
	var theClass = (function() {
		//alert("se.tewonder.Global.GlobalObjects.PluginDetector.DetectorObjects.QuickTimeVideoDetector");
		this.name = "QuickTime";
		this.activeXObjectName = "QuickTimeCheckObject.QuickTimeCheck";
		this.addMimeType("video/quicktime");
		this.addSuffix("mov");
		this.skipVersion = false; //MENOTE: getting QuickTimeVersion is very slow so this property prevents that command
		
		this.pluginVersionString = null;
		
		this.detectPlugin = (function() {
			//alert("se.tewonder.Global.GlobalObjects.PluginDetector.DetectorObjects.QuickTimeVideoDetector::detectPlugin");
			if(navigator.mimeTypes && navigator.mimeTypes.length) {
				pluginObject = gTewonderGlobalObjects["pluginDetector"].getNavigatorPlugin("video/quicktime");
				if(pluginObject != null) {
					if(!this.skipVersion) {
						this.pluginVersionString = pluginObject.name.substring(("QuickTime Plug-in ").length, pluginObject.name.length);
					}
				}
			}
			else {
				pluginObject = gTewonderGlobalObjects["pluginDetector"].getActiveXObjectPlugin("QuickTimeCheckObject.QuickTimeCheck");
				if(pluginObject != null) {
					if(!pluginObject.IsQuickTimeAvailable(0)) return false;
					if(!this.skipVersion) {
						var versionString = pluginObject.QuickTimeVersion.toString(16);
						this.pluginVersionString = versionString.charAt(0) + "." + versionString.charAt(1) + "." + versionString.charAt(2);
					}
				}
			}
			return (pluginObject != null);
		});
		
		this.isCorrectVersion = (function(aVersion, aType) {
			//alert("se.tewonder.Global.GlobalObjects.PluginDetector.DetectorObjects.QuickTimeVideoDetector::isCorrectVersion");
			if(this.skipVersion) {
				//METODO: error message
				return true;
			}
			var compareResult;
			var currentVersionArray = this.pluginVersionString.split(".");
			var testForVersionArray = aVersion.split(".");
			for(var i = -1; ++i < testForVersionArray.length;) {
				if(i >= currentVersionArray.length) {
					if(1*testForVersionArray[i] != 0) {
						compareResult = -1;
						break;
					}
					else {
						compareResult = 0;
					}
				}
				else {
					if(1*testForVersionArray[i] == 1*currentVersionArray[i]) {
						compareResult = 0;
					}
					else if(1*testForVersionArray[i] > 1*currentVersionArray[i]) {
						compareResult = -1;
						break;
					}
					else {
						compareResult = 1;
						break;
					}
				}
			}
			switch(aType) {
				case "eq":
					return (compareResult == 0);
				case "ne":
					return (compareResult != 0);
				case "le":
					if(compareResult == 0) return true;
				case "lt":
					return (compareResult == -1);
				case "ge":
					if(compareResult == 0) return true;
				case "gt":
					return (compareResult == 1);
				default:
					gTewonderGlobalObjects["errorManager"].report("error", 3, "se.tewonder.Global.GlobalObjects.PluginDetector.DetectorObjects.QuickTimeVideoDetector", "isCorrectVersion", "No type named " + aType);
					return false;
			}
		});
		
		this.toString = (function() {
			return "[se.tewonder.Global.GlobalObjects.PluginDetector.DetectorObjects.QuickTimeVideoDetector]";
		});
	});
	
	gTewonderGlobalFunctions.addClass("se.tewonder.Global.GlobalObjects.PluginDetector.DetectorObjects.QuickTimeVideoDetector", theClass);
	
	gTewonderGlobalFunctions.setClassInheritance(gTewonderClasses.se.tewonder.Global.GlobalObjects.PluginDetector.DetectorObjects.QuickTimeVideoDetector, gTewonderClasses.se.tewonder.Global.GlobalObjects.PluginDetector.DetectorObjects.BaseObject);
}

gTewonderLocalScopeFunction();
