/* ****	The Browser and Environment Client-Side Sniff and Divert Script External Code, version 2.7.0.2 
   ****	Originally developed by <mailto:larspeemm@netscape.net> 2001-07-21  
   ****	Copyrighted by lars.pm <mailto:larspeemm@netscape.net> (C) 2001-2006  
   ****	It is FREE for use, but is NOT allowed to be traded in.
   
   NOTE: This script file must be used in conjunction with Generated code from version 2.5 
	 *or* HEAD code from version 2.2 and Generated code from version 2.4 in combination.

   The version including a licensed part (2.7.0-basic) was made available 2006-03-25. 
   Older versions of this particular file are improperly licensed and should not be used.

	Versions History (summarised): 
   	** maintenance release 2.6.2 2005-12-25: correction of the grabbing of vendor name for 
   		navigator.prettyName (lines 255-256)
   	** maintenance release 2.6.1 2005-10-20: removing exami.vendorSub and deprecating the
   		entire /exami/ object, deprecating the /envir/ properties decimalcss and strictjava
   	** revision release 2.6 2005-05-06: adding navigator.prettyName, removing .org and .family,
   		removing the /extra/ properties and setting envir.pdfpage, .quickpage and 
   		.flashpage to empty strings, removing envir.CSS, deprecating most /exami/ properties, 
   		changing the call of the xbDetectBrowser function, removing the test for js 1.5
   	** revision release 2.5 2005-04-10: reordering script code to facilitate the 
   		splitting of this file in two, where the "-basic" is JavaScript 1.1 
   		friendly and the "-envir" requires JavaScript 1.2 (or ECMA) compliance. 
   		Removing all earlier deprecated properties (/exami/ properties js and rv, 
   		/navigator/ properties NS4, MSIE, DOMHTML, DOMHTML2, DOMEVENTS and OS).
   		Deprecating /envir/ properties CSS, language2, occident, newworld, oldworld,
   		xhtmlmod, threshold, deluxe, allround, flashpage, pdfpage and quickpage 
   		for future removal. Adding /exami/ properties DOMVIEWS, DOMCSS2 and DOMXML,
   		while modifying conditions for DOMSTYLE and DOMCSS.
   	** revision release 2.4 2004-11-07: moving almost all creations of /navigator/ 
   		properties to the xbDetectBrowser function, replacing exami.js with 
   		navigator.js while reorganising the javascript check, modifying the 
   		calling and creating of the /extra/ object, adding a bunch of /extra/ 
   		properties, and deprecating some properties.
	** revision release 2.3 2004-03-05: adapting to the release of /uaorganizer.js/,
		thereby removing the properties DOMCORE1, DOMCORE2, DOMCORE3, DOMSTYLE 
		and DOMCSS from the /navigator/ object, and deprecating some properties 
		for future removal. Adding a bunch of /exami/ properties.
	** New full version release 2003-12-31: This version does not work with earlier
		releases, particularly because of the rewrite of the /UseDynamic/ function.
		The separated files uasupport.js and envirsniff.js will continue the
		version 1 series (now at 1.9.x) for earlier HEAD code releases.
   **** */

//___________start of uasniff.js file___________________________________________________________
/* ****	PM Browser and Environment Client-Side Sniffer Script External Code, version 2.7.0-basic 

 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is Netscape code.
 *
 * The Initial Developer of the Original Code is
 * Netscape Corporation.
 * Portions created by the Initial Developer are Copyright (C) 2001
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s): Bob Clary <bclary@netscape.com>
 *		   Lars P M <larspeemm@netscape.net>

NOTE:	This particular code version of the script is not made available as a separate file.
 * The Modifications of the Original Code are documented in the uajs_modifications.html file
 * located at <http://memo.mikaels.net/pm-public/uajs_modifications.html>

   **** */

//declaring a simple function
function F(){};

//NOTE: the xbDetectBrowser function should be safe on js language versions 1.0+
function xbDetectBrowser()
{
  var oldOnError = window.onerror;
  var element = null;

  window.onerror = null;
  
  var navigator_org    = '';
  var navigator_family  = '';

  var appV = window.navigator.appVersion;
  navigator.version  = parseFloat(appV);
  var sversion = '0.01';  //temporarily stringed version number
  var version;  

  var i = 0;
  var appuA = window.navigator.userAgent;
  var ua = appuA.toLowerCase();
  
  navigator.js = 0

  if (ua.indexOf('opera') != -1)
  {
    i = ua.indexOf('opera');
    navigator_family  = 'opera';
    navigator_org    = 'opera';
    navigator.version  = parseFloat('0' + ua.substring(i+6), 10);

  }
  else if ((i = ua.indexOf('msie')) != -1)
  {
    if (ua.indexOf('netscape') != -1) {
      navigator_org = 'netscape'; 
      sversion = ua.substring(ua.lastIndexOf('/') + 1, ua.length);
      }
    else {  
    navigator_org    = 'microsoft'; navigator.prettyName = 'Internet Explorer'; 
    navigator.version  = parseFloat('0' + ua.substring(i+5), 10);
    }
    if (navigator.version < 4)
      navigator_family = 'ie3';
    else
      navigator_family = 'ie4'
  }
  else if (ua.indexOf('like gecko') != -1)
  {
    if( ua.indexOf('applewebkit') != -1 )
    {
        i = ua.indexOf('applewebkit');
        navigator_org = 'apple'; 
        sversion = ua.substring(i+12);
    }
  }
  else if (ua.indexOf('gecko') != -1)
  {
    navigator_family = 'gecko';
    var rvStart = ua.indexOf('rv:');
    var rvEnd   = ua.indexOf(')', rvStart);
    var rv      = ua.substring(rvStart+3, rvEnd);
    var rvParts = rv.split('.');
    var rvValue = 0;
    var exp     = 1;

    for (var i = 0; i < rvParts.length; i++)
    {
      var val = parseInt(rvParts[i]);
      rvValue += val / exp;
      exp *= 100;
    }
    navigator.version = (Math.round(rvValue*1000000)/1000000);

    if (ua.indexOf('netscape') != -1)
      navigator_org = 'netscape';
    else if (ua.indexOf('compuserve') != -1)
      navigator_org = 'compuserve';
    else
      navigator_org = 'mozilla';

    if( ua.indexOf("galeon") != -1 )
    {
        navigator.prettyName = "Galeon";
        sversion = ua.substring(ua.indexOf("galeon") + 7);
    }
    else if( ua.indexOf("beonex") != -1 )
    {
        navigator.prettyName = "Beonex";
        sversion = ua.substring(ua.indexOf("beonex") + 7, ua.indexOf("-", ua.indexOf("beonex")));
    }
    else if( ua.indexOf("phoenix") != -1 || ua.indexOf("firebird") != -1 || ua.indexOf("firefox") != -1)
    {
        navigator.prettyName = "Firefox";
        sversion = ua.substring(ua.lastIndexOf('/') + 1, ua.length);
    }
    else if( ua.indexOf("chimera") != -1 || ua.indexOf("camino") != -1 )
    {
        sversion = ua.substring(ua.lastIndexOf('/') + 1, ua.length);
    }
    else if( ua.indexOf("meleon") != -1 )
    {
        navigator.prettyName = "K-Meleon";
        sversion = ua.substring(ua.indexOf("meleon") + 7);
    }
    else if( ua.indexOf("netscape")  != -1 )
    {
        sversion = ua.substring(ua.lastIndexOf('/') + 1, ua.length);
    } 
    else if(ua.indexOf("mozilla") != -1 && (ua.indexOf("rv:") ==-1)){ 
//other Gecko based browsers using the mozilla spoof
        sversion = ua.substring(ua.indexOf("mozilla") + 8, ua.indexOf("(", ua.indexOf("mozilla") + 8)); 
    } 
    else if(ua.indexOf("rv:") ==-1){ 
//other Gecko based browsers following the proposal at http://www.mozilla.org/build/revised-user-agent-strings.html
        sversion = ua.substring(ua.indexOf('/')+1, ua.indexOf('(', ua.indexOf('/')));
        navigator_org = ua.substring(0,ua.indexOf('/'));
    } 
    else sversion = ua.substring(ua.indexOf("rv:") + 3, ua.indexOf(')',ua.indexOf("rv:")));
  }
//versions and pretty names for a few more browsers
  else if( ua.indexOf("omniweb") != -1 )
  {
    navigator.prettyName = "OmniWeb";
    sversion = ua.substring(ua.indexOf("omniweb") + 8);
  }
  else if( ua.indexOf("fresco") != -1 )
  {
    navigator.prettyName = "ANT Fresco";
    sversion = ua.substring((ua.indexOf("fresco") + 7), ua.indexOf(';',ua.indexOf("fresco")));
  }
  else if( ua.indexOf("konqueror") != -1 )
  {
    navigator.prettyName = "Konqueror";
    sversion = ua.substring((ua.indexOf("konqueror") + 10), ua.indexOf(';',ua.indexOf("konqueror")));
  }
  else if( ua.indexOf("icab") != -1 )
  {
    navigator.prettyName = "iCab";
    sversion = ua.substring(ua.indexOf("icab") + 5);
  }
  else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('java')==-1))
  {
    var is_major = parseFloat(navigator.appVersion);
    
    if (is_major < 4)
      navigator.version = is_major;
    else
    {
      i = ua.lastIndexOf('/')
      navigator.version = parseFloat('0' + ua.substring(i+1), 10);
    }
    navigator_org = 'netscape';
    navigator_family = 'nn' + parseInt(navigator.appVersion);
  }
  else if ((i = ua.indexOf('aol')) != -1 )
  {
    // aol
    navigator_family  = 'aol';
    navigator_org    = 'aol'; navigator.prettyName = 'AOL';
    navigator.version  = parseFloat('0' + ua.substring(i+4), 10);
  }
  else if ((i = ua.indexOf('java')) != -1 )
  {
    navigator_family  = 'java';
    if ((i = ua.indexOf('hotjava')) != -1 ){
    // hotjava
    navigator_org    = 'sun'; navigator.prettyName = 'HotJava Browser';
    navigator.version  = parseFloat(navigator.appVersion);
    }
    if ((i = ua.indexOf('icebrowser')) != -1 ){
    // ICEbrowser
    navigator.prettyName = navigator.appName
    sversion = ua.substring(ua.lastIndexOf('/') + 2, ua.length);
    }
  }

  window.onerror = oldOnError;
// **** ua support properties begin
//setting the *product* property if not already there
var productfirst=navigator_family.charAt(0).toUpperCase();
if(!navigator.product){
	if (navigator_family == 'ie4' || (navigator_family == 'aol'
	 && ua.indexOf("msie")!= -1)) navigator.product = 'Trident'
	else if (navigator_family.indexOf('nn') !=-1) {
	//Netscape versions 3 or 4
	navigator.product = 'Netscape'; } 
	else if (ua.indexOf("konqueror") != -1 || ua.indexOf("safari") != -1) navigator.product = 'KDE' 
	else if (navigator_family == 'gecko') navigator.product = 'Gecko_spoofer' 
	else navigator.product = productfirst+navigator_family.substring(1);
	}
if(!navigator.productSub){
	navigator.productSub = ""
	}
//differentiating between release version number and applied version number
navigator.rversion = navigator.version;
navigator.rv = '';
//setting the string value of .rversion
if (navigator_family == 'gecko'){
	if( ua.indexOf("rv:") != -1 ){
        	navigator.rv = ua.substring(ua.indexOf("rv:") + 3, ua.indexOf(')',ua.indexOf("rv:")));
    		}
	}
//pretty names
var prettyfirst=navigator_org.charAt(0).toUpperCase();
/* Some browsers had the pretty name defined above, but navigator.vendor will replace it,
 * unless it's not an empty string (or undefined). If neither is defined the navigator_org
 * will be used (which might be empty).
 */
if (navigator.vendor) navigator.prettyName = navigator.vendor;
if (!navigator.prettyName) {navigator.prettyName=prettyfirst+navigator_org.substring(1)}
//stealing the navigator.vendorSub version number if it's really a number
if (navigator.vendorSub) {
	if (!isNaN(parseFloat(navigator.vendorSub))) sversion=navigator.vendorSub;
	}
/* We need to make numbers from the version strings, thereby simply putting possible maintenance (third)
 * release numbers to the minor (second) version number, and treating the first dot as a decimal point. 
 */
if ((navigator.appName=='Netscape'&& parseInt(appV)<3) || 
(appuA.indexOf('MSIE')!=-1 && parseInt(appV)<4)) {
	version = parseFloat('0'+sversion, 10);
	navigator.js = 1.0;
	}
else { //NOTE: breaks js 1.0
var sParts = sversion.split('.',3);
var sMajor = sParts[0];
var sMinor = sParts[1];
var sThird = sParts[2];
version = parseFloat('0'+sMajor+'.'+sMinor+sThird, 10);
}
//making version number spoof friendly
if (ua.indexOf("opera") ==-1 && ua.indexOf("msie") != -1) {navigator.version=parseFloat(ua.substring(ua.indexOf("msie") + 5))}
//final decision on the version and re-adjusting Netscape version number
else if (version == 0.01){navigator.version = navigator.rversion}
 else {navigator.version = version};

//irrelevant rversion number to 0 -
if (ua.indexOf("rv:")==-1) navigator.rversion=0;
//setting the *kin* property, original case preserved, simplifying Internet Explorer for safer checkings
if (navigator.appName == 'Microsoft Internet Explorer'){
	navigator.kin = 'MSIE/'+parseInt(appV);
	} else navigator.kin = navigator.appName+'/'+parseInt(appV);
	
/* First decision on the browser version *generation*: creating navigator.appCodeNameSub
 * This property is (and should be) spoofable if the ua calls itself by the browser code name "Mozilla",
 * which it normally does. If not, the ua is probably not a browser at all, but the matter of fact will
 * be tried in a second decision later on.
 */
 var aCN; 	if (window.navigator.appCodeName) aCN = window.navigator.appCodeName.toLowerCase();
 		if (aCN && aCN != 'mozilla') navigator.appCodeNameSub = ''; else if (aCN) {
//the above case is browser *not* identifying by the code name Mozilla, so making empty string
 var aCNS;	if (ua.indexOf(aCN+'/')==-1) aCNS = parseFloat(appV);  
//the above case is Mozilla but *not* using the code name in the ua string, so we grab the application version instead
 		else aCNS = parseFloat(ua.substring(ua.indexOf('mozilla') + 8)); //ua string version accepted

//recognizing only five generations
 if (aCNS >= 6) aCNS = 5;
// adjusting known fallacies - IE too shy(!)
if (aCNS >= 5){
 if (navigator.kin == "Opera/5" || navigator.kin == "Opera/6") aCNS=4;
}
else if (aCNS >= 4){
 	if (navigator.kin == "MSIE/4" && ((navigator.version >= 5 && navigator.platform.indexOf('Mac') != -1) 
	|| (navigator.version >= 6 && navigator.platform.indexOf('Win') != -1))) aCNS=5;
	}

//setting *temporary* application code name version number or string
 navigator.appCodeNameSub = aCNS;
 } //(else clause ends)

// **** end of ua support properties
}  // xbDetectBrowser ends
// function call
xbDetectBrowser();

//NOTE: the Exami function should be safe on js language version 1.1
function Exami()
{
  var agt = window.navigator.userAgent.toLowerCase();
/* DEPRECATED SECTION **********************************
If there are some user agents out there, that you don't
want to visit your site, you could declare them here.
The holders of the exami.foe property can at any rate not 
use this script to crawl the site. */

//To be sure to disable the email collectors you need to use a /robots.txt/ file.
//These declarations are mainly for demonstration purposes.
//info found at <http://www.siteware.ch/webresources/useragents/collectors/>
if ((agt.indexOf("mozilla") >-1 && agt.indexOf('newt')!=-1) || (agt.indexOf('picker')!=-1 || 
	(agt.indexOf("mozilla")==-1 && agt.indexOf('email')!=-1) || agt.indexOf('extractor')!=-1 
	|| agt.indexOf('toolpak')!=-1))	this.foe = true; else this.foe = false;

//DEPRECATED SECTION ENDS ******************************

var naCNS = navigator.appCodeNameSub;

if (typeof(naCNS) =='number'){
//converting to a pretty name *string* value
 var saCNS = naCNS.toString();  
 if(saCNS.indexOf(".")==-1) saCNS=saCNS+'.0';
 navigator.appCodeNameSub = saCNS;
}  

//DEPRECATED SECTION - AVOID ALL OF THE exami PROPERTIES ***

//setting the *number* value as /exami.appCodeNameSub/ for comparisons
 this.appCodeNameSub = parseFloat(naCNS);

//making number of the release date as /exami.productSub/ for comparisons
this.productSub=parseFloat(navigator.productSub);

//DOCUMENT OBJECT MODEL (DOM) CHECK - 
//traditional competitors - classic sniffing -
  	//environment is typical Netscape Navigator 4.x 
  this.NS4 = (navigator.kin == "Netscape/4" && (typeof(document.layers) != 'undefined'));
  	//environment is typical Microsoft Internet Explorer 4+ 
  this.MSIE = (navigator.kin == "MSIE/4" && (typeof(document.all) != 'undefined'));
  	//DOM standards (W3C recommendations)
  this.DOMCORE1  = (typeof(document.getElementsByTagName) != 'undefined' &&
  					   typeof(document.createElement) != 'undefined');
  this.DOMHTML  = (this.DOMCORE1 && typeof(document.getElementById) != 'undefined');

//DOM Level 2 modules -
  this.DOMCORE2  = (typeof(document.getElementsByTagName) != 'undefined' &&
  				typeof(document.createElement) != 'undefined' && 
				typeof(document.implementation) != 'undefined' &&
				typeof(document.getElementById) != 'undefined' &&
  				typeof(document.getElementsByTagNameNS) != 'undefined');
//HTML module (strict conformance)
  this.DOMHTML2 = false;
  if(this.DOMCORE2)
  {   
 	this.DOMHTML2 = (document.implementation.hasFeature("HTML","2.0"));
  }

//Events module (lax conformance)
  this.DOMEVENTS  = (typeof(document.createEvent) != 'undefined');

//Style Sheets module
  var element = null;
  this.DOMSTYLE = false;
  if (this.DOMCORE2)
  {
     element = document.createElement('p');
     this.DOMSTYLE = (typeof(element.style) == 'object');
  }

//Views and CSS modules (strict conformance)
  this.DOMVIEWS = false;
  this.DOMCSS = false;
  this.DOMCSS2 = false;
  if (this.DOMCORE2)
  {
 	this.DOMVIEWS = (document.implementation.hasFeature("Views","2.0"));
  	if (this.DOMVIEWS)
  	{   
 		this.DOMCSS = (document.implementation.hasFeature("CSS","2.0"));
  		if (this.DOMCSS)
  		{
  			this.DOMCSS2 = (document.implementation.hasFeature("CSS2","2.0"));
  		}
  	}
  }

//XML module (strict conformance)
  this.DOMXML = false;
  if(this.DOMCORE2)
  {   
 	this.DOMXML = (document.implementation.hasFeature("XML","2.0"));
  }

//DOM Level 3 modules -
  this.DOMCORE3 = false;
  if(typeof(document.implementation) != 'undefined')
  {   
 	this.DOMCORE3 = (document.implementation.hasFeature("Core","3.0"));
  }

  
//JAVASCRIPT VERSION CHECK  
  this.ECMA = ((typeof(Infinity) =='number') && (typeof(NaN) =='number') && 
	(typeof(isFinite) !='undefined') && (typeof(Date.prototype.getMilliseconds) !='undefined') && 
	(typeof(Date.prototype.setFullYear) !='undefined') && 
	(typeof(Date.prototype.toUTCString) !='undefined'));
//setting JScript version
   var JScript = "";
  if (typeof(ScriptEngine) =='function'){
   JScript += ScriptEngineMajorVersion() + ".";
   JScript += ScriptEngineMinorVersion();
   }
   else if (navigator.product == "Trident") JScript = "3.0";
  this.jscript = parseFloat(JScript);

// *** END OF DEPRECATED SECTION ***

  if (this.ECMA && (typeof(F.call) !='undefined') && (typeof(F.apply) !='undefined') ) navigator.js = 1.3;
  else if ((this.jscript >= 3 || (typeof(navigator.javaEnabled) !='undefined')) &&
	(typeof(navigator.mimeTypes) =='object') && (typeof(navigator.plugins) =='object') &&
	(typeof(Date.prototype.getMonth) !='undefined') && 
	(typeof(Date.prototype.getTimezoneOffset) !='undefined') &&
  	(typeof(navigator.language) != 'undefined' || typeof(navigator.userLanguage) != 'undefined'
  	 || typeof(navigator.systemLanguage) != 'undefined') &&
	(typeof(navigator.platform) != 'undefined') &&
	(typeof(screen) =='object')) navigator.js = 1.2;
//NOTE: JS 1.2 is also the requirement for calling the Envir function (like JScript 3.0)
  else navigator.js = 1.1; 
//estimated (since it reads js src files and handles the *typeof* operator)

//(C) PeEmm 2001-2005 <larspeemm@netscape.net> This is author info. Please do not remove.
//Exami ends.
}
var exami;

/* *** End of declarations (C) <mailto:larspeemm@netscape.net>
   FREE TO USE AND PROMOTE. ***
   Visit http://memo.mikaels.net/pm-public/ for killing time only. */

//___________end of uasniff.js file_____________________________________________________________

//___________start of uaenvir.js file___________________________________________________________
/* ****	PM Browser and Environment Client-Side Sniffer Script External Code, version 2.7.0-envir 
   **** This script is intended for ECMAScript and JavaScript language 1.2 and up.
   ****	Originally developed by <mailto:larspeemm@netscape.net> 2001-07-21  
   ****	Copyrighted by lars.pm <mailto:larspeemm@netscape.net> (C) 2001-2005  
   ****	It is FREE for use, but is NOT allowed to be traded in. 
   
   *Please DO NOT remove author info.*

NOTES: 	* This particular code version of the script is not made available as a separate file.
	* Editable sections are pointed out as such. 
 				

 **** */
//Quality assurance
var Extver = 2.7
function QA(){if (typeof(Exami)!='function'){
alert("Error! The Exami function is "+typeof(Exami)+".\n"+
   "\(This was a Quality Assurance alert.\)")}}
QA();


function Envir()
{

// CHECKING OS
  var platform = navigator.platform.toLowerCase();
    if (platform.indexOf('win') != -1)
      this.OS = 'win';
    else if (platform.indexOf('mac') != -1)
      this.OS = 'mac';
    else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
      this.OS = 'nix';
    else this.OS = '';

// CHECKING JAVA (and related functionalities)
//This check is MS java friendly. Cp. /strictjava/ further below. 
  this.java = (navigator.javaEnabled())

this.strictjava = false; var let_go = isNaN(exami.jscript);
//Sun Java or equivalent enabled - The envir property strictjava is DEPRECATED ***
  if ((exami.jscript >= 5) || let_go){
  if (typeof navigator.javaEnabled =='function') this.strictjava = (navigator.javaEnabled()); 
  	} 
  	
  //environment consists of the implied applications to work in tandem with HTML4 -
  this.modern = (exami.ECMA && this.java && exami.DOMHTML);

  //e-shop reliable - 
  if (typeof(navigator.cookieEnabled) =='undefined') navigator.cookieEnabled = false; 
  this.ebusiness = (this.modern && navigator.cookieEnabled);

// CSS COMPLIANCE CHECK - The envir property decimalcss is DEPRECATED ***

/* Cascading Style Sheets are implemented gradually in browsers and therefore the series
 * 0.5 , 0.8 - meaning closing in on CSS1 - 1.1 , 1.4 , 1.6 , 1.8 and 2.0 - almost full 
 * CSS2 - and 2.1 is used. Support info and nice testings respectively at
 * <http://www.westciv.com/style_master/academy/browser_support/index.html> 
 * <http://devedge.netscape.com/toolbox/tools/2001/feature-detection/>
 */

this.decimalcss = 0

  //Some familiar browsers' CSS compatibility which need to be preset - EDITING OK ****
  if (navigator.product == 'Opera' && navigator.version >= 5) this.decimalcss = 1.6 ;
  
  else if (navigator.product == 'Opera' && navigator.version >= 3.6) this.decimalcss = 1.1 ;

  else if (navigator.product == 'Trident') this.decimalcss = 0.8 ;
  
  else if (navigator.product == 'Netscape') this.decimalcss = 0.5 ;

  //Checking the style object - DO NOT EDIT THIS PART ****
  if (document.body)
	{
	if (document.body.style && this.decimalcss < 0.8)
  		{
		if (typeof(document.body.style.background)!='undefined' &&
		typeof(document.body.style.backgroundColor)!='undefined' &&
		typeof(document.body.style.backgroundImage)!='undefined' &&
		typeof(document.body.style.color)!='undefined' &&
		typeof(document.body.style.height)!='undefined') this.decimalcss = 0.8
		}
	if (document.body.style && this.decimalcss < 1.1)
		{
		if (typeof(document.body.style.visibility)!='undefined' &&
		typeof(document.body.style.width)!='undefined' &&
		typeof(document.body.style.zIndex)!='undefined' &&
		typeof(document.body.style.clear)!='undefined') this.decimalcss+= 0.3
		}
	if (document.body.style && this.decimalcss < 1.4)
		{
		if (typeof(document.body.style.left)!='undefined' &&
		typeof(document.body.style.top)!='undefined' &&
		(typeof(document.body.style.cssFloat)!='undefined' ||
		typeof(document.body.style.styleFloat)!='undefined')) this.decimalcss+= 0.3
		}
	if (document.body.style && this.decimalcss < 1.6)
		{
		if (typeof(document.body.style.minHeight)!='undefined') this.decimalcss+= 0.2
		}
	if (document.body.style && this.decimalcss < 1.8)
		{
		if (typeof(document.body.style.borderSpacing)!='undefined' &&
		typeof(document.body.style.clip)!='undefined' &&
		typeof(document.body.style.captionSide)!='undefined' &&
		typeof(document.body.style.maxWidth)!='undefined') this.decimalcss+= 0.2
		}
	if (document.body.style && this.decimalcss < 2.0)
		{
		if (typeof(document.body.style.tableLayout)!='undefined' &&
		typeof(document.body.style.position)!='undefined' &&
		typeof(document.body.style.display)!='undefined' &&
		typeof(document.body.style.cursor)!='undefined') this.decimalcss+= 0.2
		}
	if (this.decimalcss > 1.8 && typeof(document.createElement) != 'undefined')
		{ 
		//checking CSS 2.1 support
		var element1 = document.createElement('p');
		element1.style.display = 'inline-block';
		var element2 = document.createElement('div');
		element2.style.cursor = 'progress';
		if(element1.style.display == "inline-block" && 
		element2.style.cursor == "progress") this.decimalcss+= 0.1 
		}
	}

// CSS COMPLIANCE - DO NOT EDIT THIS PART ****
this.CSS1 = (Math.floor(this.decimalcss) >= 1);
this.CSS2 = (Math.floor(this.decimalcss) == 2);

// LANGUAGE - DO NOT EDIT THIS PART ****
//language-COUNTRY code 
  if (navigator.language){
       this.dialect=navigator.language }
  else if (navigator.userLanguage){
       this.dialect=navigator.userLanguage }
  else if (navigator.browserLanguage) {
       this.dialect=navigator.browserLanguage } else this.dialect = ''; 
  //e.g. British English will be "en-GB" or most often only English "en"

//language code 
  this.language = ''; if (this.dialect.length >=2) this.language =this.dialect.charAt(0)+this.dialect.charAt(1);
this.language = this.language.toLowerCase();
//languages spoken in Scandinavia - DEPRECATED - DO NOT USE ****
  this.language2 = (this.language == 'sv' || this.language == 'da' || 
	this.language == 'no' || this.language == 'fi');

// TIMEZONE
  var today = new Date();
  var month = today.getMonth();
  this.timezone = today.getTimezoneOffset()/-60 ;
  //relative to Greenwich Mean Time

  //West European timezones  (incl. West Africa), and daylight saving time taken into account - DEPRECATED - DO NOT USE ****
  if (month >= 3 && month < 10)  {this.occident = (this.timezone >= 0 && this.timezone < 3);}
  else {this.occident = (this.timezone >= 0 && this.timezone < 2);}
  //Old world timezones (from Cape Verde to Japan and Australia) - DEPRECATED - DO NOT USE ****
  this.oldworld = (this.timezone > -2 && this.timezone <= 10);
  //New World timezones incl. the Pacific and Far Eastern parts of Russia - DEPRECATED - DO NOT USE ****
  this.newworld = !this.oldworld;

// SCREEN 
//checking number of colours - DO NOT EDIT THIS PART ****
  if ((screen.colorDepth >= 32) || (screen.pixelDepth >= 32)) this.screencolor = 4;
  else if ((screen.colorDepth >= 24) || (screen.pixelDepth >= 24)) this.screencolor = 3;
  else if ((screen.colorDepth >= 16) || (screen.pixelDepth >= 16)) this.screencolor = 2;
  else if ((screen.colorDepth >= 8) || (screen.pixelDepth >= 8)) this.screencolor = 1;
  else this.screencolor = 0;
  
//checking screen resolution - DO NOT EDIT THIS PART ****
  if ((screen.width >= 1600 || screen.availWidth >= 1596) &&
  (screen.height >= 1200 || screen.availHeight >= 1168)) this.screensize = 6;
  else if ((screen.width >= 1280 || screen.availWidth >= 1276) &&
  (screen.height >= 1024 || screen.availHeight >= 992)) this.screensize = 5;
  else if ((screen.width >= 1152 || screen.availWidth >= 1148) &&
  (screen.height >= 864 || screen.availHeight >= 832)) this.screensize = 4;
  else if ((screen.width >= 1024 || screen.availWidth >= 1020) &&
  (screen.height >= 768 || screen.availHeight >= 736)) this.screensize = 3;
  else if ((screen.width >= 800 || screen.availWidth >= 796) &&
  (screen.height >= 600 || screen.availHeight >= 568)) this.screensize = 2;
  else if ((screen.width >= 640 || screen.availWidth >= 636) &&
  (screen.height >= 480 || screen.availHeight >= 448)) this.screensize = 1;
  else this.screensize = 0;
  
//screen qualities - EDITING OK ****
  //environment is a 640x480 pixels screen or smaller -
  this.small = (this.screensize <= 1);
  //environment is 800x600 pixels and up -
  this.space = (this.screensize >= 2 && this.screencolor >= 1);
  //environment is 1024x768 pixels and up -
  this.muchspace = (this.screensize >= 3 && this.screencolor >= 2);
    
/* HTML RENDERING MODES
 * Recent browsers are able to trigger a *standards* mode if dealing with HTML4.01 and referring
 * to the W3C DTD URI. Those browsers are attached with the "envir.standards" property. In order
 * not to exclude competent browsers, which use odd ways of identifying themselves, the decision
 * on this property should be lax, and therefore it's spoofable to some extent. The non-spoofable 
 * equivalent property is "envir.strict", which applies to HTML4.01 Strict and CSS level 2 
 * reasonably compliant applications. 
 */  
  //the 21st Century DOM browsers come here -
  //compliant with W3C Frameset and Transitional HTML4.01 and DTD URI reference -
  //NOTE: Spoofing is possible in /standards/ but not in /strict/ -
  this.standards = (exami.appCodeNameSub >= 5);

  //compliant with W3C Strict HTML4.01 (i.e. HTML, which is not backwards compatible) -
  this.strict = (exami.DOMHTML && this.decimalcss >= 1.8);
 
  //compliant with W3C XHTML1.1 (i.e. the XHTML modules for the screen) - DEPRECATED - DO NOT USE ****
  this.xhtmlmod = (exami.DOMHTML && this.CSS2 && exami.DOMEVENTS);

  //excluding screens smaller than 800x600 pixels - DEPRECATED - DO NOT USE ****
  this.threshold = (this.standards && this.space);
  //suitable for portals on rich colour screens at least 1024x768 pixels - DEPRECATED - DO NOT USE ****
  this.deluxe = (this.standards && this.muchspace);
  
  //the 20th Century DHTML browsers come here -
  //including Netscape Communicator -
  this.dhtml = (exami.appCodeNameSub >= 4);   
  //excluding Netscape Communicator -
  this.common = (this.dhtml && this.CSS1);   
  //even excluding screens smaller than 800x600 pixels - DEPRECATED - DO NOT USE ****
  this.allround = (this.common && this.space);   

//empty strings for backwards compatibility
this.pdfpage=''; this.quickpage=''; this.flashpage='';

//Envir ends.
}
var envir;

/* *** End of declarations (C) <mailto:larspeemm@netscape.net>
   FREE TO USE AND PROMOTE. ***
   Visit http://memo.mikaels.net/pm-public/ for killing time only. */

//___________end of uaenvir.js file_______________________________________

