function kontrol_detect(){	
	
	this.browser_info 	= new BrowserInfo();
	this.set_text 		= kontrol_set_text;
	this.flash_version 	= detect_flash_version;
	this.start			= detect_start;
	this.warnings = [];	
	this.errors = [];		
	
	this.setCookie = function(id,val,days){
		// Set cookie (valid for one month)
		var exp = new Date( );
		var nowPlusOneWeek = exp.getTime( ) + (days * 24 * 60 * 60 * 1000);
		exp.setTime(nowPlusOneWeek);
		document.cookie = "Kontrol["+id+"]="+val+"; expires=" + exp.toGMTString();		
	}
	
	this.client_os = function(target){
		var label = this.browser_info.platform;
		this.setCookie('client_os',label,30);
		this.set_text(target,label);
	}

	this.browser_type = function(target){
		var label = this.browser_info.name+' '+this.browser_info.version;		
		this.setCookie('browser_type',label,30);
		this.set_text(target,label);
	}
	
	this.screen_dimentions = function(target){
		var label = this.browser_info.screenWidth+' x '+this.browser_info.screenHeight+' pixels';		
		this.setCookie('client_width',this.browser_info.screenWidth,30);
		this.setCookie('client_width',this.browser_info.screenHeight,30);
		this.set_text(target,label);
	}
	
	this.detect = function(name,target,version,icon,url){				
		var passed = false;
		var install_icon = '<a href="'+url+'"><img src="assets/plugins/install/'+icon+'" alt="install" class="install_icon"/></a>';
		if (this.pluginlist.indexOf(name)!=-1){
			label = '<div class="ok_text">'+
						'Detected '+name+
					'</div>';
			passed = true;
			if (version != -1){
				var browser_version = -1;				
				var css_class = 'warning_text';
				var ext_msg = '';
				if (name == 'Shockwave Flash'){
					browser_version = this.flash_version();
				}
				if (browser_version <= 0){
					browser_version = '[not detected]';
				}

				if (browser_version >= version){
					ext_msg = 'Browser version OK.';						
					css_class = 'ok_text';
				} else {
					var j = this.warnings.length;
					this.warnings[j] = 'Consider Upgrading '+name+' to version '+version;
					ext_msg = '<b>Recomended version '+version+'. Consider Upgrading.</b>'+"<br />"+install_icon;
					css_class	= 'warning_text';
					passed = false;
				}

				var msg = 'Detected '+name+', Version '+browser_version+'. ';

				label = '<div class="'+css_class+'">'+
							msg+ext_msg+
						'</div>';
			}
		} else {
			var j = this.warnings.length;
			this.warnings[j] = 'Could not detect '+name;
			label = '<div class="error_text">'+
						this.warnings[j]+"<br />"+//install_icon+
					'</div>';
			passed = false;
		}
		this.set_text(target,label);
		//this.set_text('kt_install_icon_'+name,install_icon);
		return passed;
	}
	
	this.require = function(name,target,version,icon,url){
		if (this.detect(name,target,version,icon,url) == false){			
			var j = this.errors.length;
			this.errors[j] = 'The plugin <b>'+name+'</b> is required for this website to work.';
		}
	}
	
	this.checkPlugins = function (){		
		
		var status_msg = '';		
		if (this.warnings.length > 0){
			var msg = '<br /><b>Warnings:</b><br />';
			for (var j = 0; j < this.warnings.length; j++){
				msg += this.warnings[j]+'<br />';
			}			
			this.set_text('detect_warnings',msg);
		}
		if (this.errors.length > 0){
			// Some required plugins failed
			var msg = '<br /><b>Errors:</b><br />';
			for (var j = 0; j < this.errors.length; j++){
				msg += this.errors[j]+'<br />';
			}			
			this.set_text('detect_errors',msg);
			status_msg = this.msg_failed;
		} else {
			// Detected all required plugins
			status_msg = this.msg_success;
		}
		this.set_text('detect_status_message',status_msg);
	}
}

function kontrol_set_text(target,val){
	elem = document.getElementById(target);
	if (elem){
		elem.innerHTML = val;
	}
}

function BrowserInfo(){
  this.name = navigator.appName;
  this.codename = navigator.appCodeName;
  this.version = navigator.appVersion.substring(0,4);
  this.platform = navigator.platform;
  this.javaEnabled = navigator.javaEnabled();
  this.screenWidth = screen.width;
  this.screenHeight = screen.height;
}

function detectIE(ClassID,name){ 
	result = false; 
	document.write(
'<SCRIPT LANGUAGE=VBScript>\n on error resume next \n result = IsObject(CreateObject("'+ClassID+'"))</SCRIPT>\n'
				); 
	if (result){
		return name+','; 
	} else {
		return ''; 
	}
}

function detectNS(ClassID,name){ 
	n = ""; 
	if (nse.indexOf(ClassID) != -1){
		if (navigator.mimeTypes[ClassID].enabledPlugin != null){
			n = name+","; 
		}		
	}
	return n; 
}

function detect_flash_version(){	
	var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) 
					? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
	// Does the plugin exist?
	if ( plugin ) {
		// Get description of plugin		
		var words = navigator.plugins["Shockwave Flash"].description.split(" ");
		alert(words);
		for (var i = 0; i < words.length; ++i) {
			if (isNaN(parseInt(words[i]))) continue;
			var MM_PluginVersion = words[i]; 
		}
		return MM_PluginVersion;
	} else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 && (navigator.appVersion.indexOf("Win") != -1)) {
		//FS hide this from IE4.5 Mac by splitting the tag
		/*
		document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n'); 
		document.write('on error resume next \n');
		document.write('MM_FlashCanPlay = ( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & MM_contentVersion)))\n');
		document.write('</SCR' + 'IPT\> \n');
		*/
		/*
			Revise code for IE
		*/
		return 0;
	}
	return -1;
}



// =========================================================================================
// State variables
// =========================================================================================
var agt	= navigator.userAgent.toLowerCase();
var ie  = (agt.indexOf("msie") != -1);
var ns  = (navigator.appName.indexOf("netscape") != -1);
var win = ((agt.indexOf("win")!=-1) || (agt.indexOf("32bit")!=-1));
var mac = (agt.indexOf("mac")!=-1);

function detect_start(){
	var pluginlist = '';
	if (ie && win) {	
		pluginlist =detectIE("Adobe.SVGCtl","SVG Viewer") + 
					detectIE("SWCtl.SWCtl.1","Shockwave Director") + 
					detectIE("ShockwaveFlash.ShockwaveFlash.1","Shockwave Flash") + 
					detectIE("rmocx.RealPlayer G2 Control.1","RealPlayer") + 
					detectIE("QuickTimeCheckObject.QuickTimeCheck.1","QuickTime") + 
					detectIE("MediaPlayer.MediaPlayer.1","Windows Media Player") + 
					detectIE("PDF.PdfCtrl.5","Acrobat Reader"); 
	}
	
	if (ns || !win) {
		nse = ""; 
		for (var i=0;i<navigator.mimeTypes.length;i++){
			nse += navigator.mimeTypes[i].type.toLowerCase();
		}
		pluginlist =detectNS("image/svg-xml","SVG Viewer") + 
					detectNS("application/x-director","Shockwave Director") + 
					detectNS("application/x-shockwave-flash","Shockwave Flash") + 
					detectNS("audio/x-pn-realaudio-plugin","RealPlayer") + 
					detectNS("video/quicktime","QuickTime") + 
					detectNS("application/x-mplayer2","Windows Media Player") + 
					detectNS("application/pdf","Acrobat Reader");
	}
	
	pluginlist += navigator.javaEnabled() ? "Java," : "";
	
	if (pluginlist.length > 0){
		pluginlist = pluginlist.substring(0,pluginlist.length-1);
	}
	
	this.setCookie('plugins',pluginlist,30);
	this.pluginlist = pluginlist;
	return pluginlist;
}

