/*
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
description:	appmosphere useragent library
last modified:	25.11.2001
author:			benjamin nowack, b@e-senses.de
copyright:		1999-2001, e-senses, germany, http://www.e-senses.de, all rights reserved
language:		javascript
comments:		
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
*/

function Useragent_obj(ua){
	// superclasses
	
	// parms
	if(ua){
		this.ua=ua.toLowerCase();ua=null;
	}
	else{
		if(navigator && navigator.userAgent){
			this.ua=navigator.userAgent.toLowerCase();
		}
		else{
			this.ua="_null";
		}
	}
	// defaults
	
	// methods
	this.is_ns=browser_is_ns;
	this.is_ie=browser_is_ie;
	this.is_opera=browser_is_opera;
	this.is_konqueror=browser_is_konqueror;
	this.is_mozilla=browser_is_mozilla;
	this.is_webtv=browser_is_webtv;
	
	this.is_win=browser_is_win;
	this.is_mac=browser_is_mac;
	this.is_unix=browser_is_unix;

	this.get_prefix_version=browser_get_prefix_version;
	this.get_version=browser_get_version;

	this.is_supported=browser_is_supported;
	
	this.get_dt_type=browser_get_dt_type;
}

// browser
function browser_is_ns(){// true if ns and maybe spoofer
	var r=((this.ua.indexOf("mozilla")!=-1) && (this.ua.indexOf("compatible")==-1) && (!this.is_opera()) && (!this.is_webtv()) && (!this.is_mozilla()));
	return r;
}
function browser_is_ie(){
	var r=((this.ua.indexOf("mozilla")!=-1) && (this.ua.indexOf("compatible")!=-1) && (this.ua.indexOf(" msie")!=-1) && !this.is_opera() && !this.is_webtv());
	return r;
}
function browser_is_opera(){
	var r=(this.ua.indexOf("opera")!=-1);
	return r;
}
function browser_is_konqueror(){
	var r=(this.ua.indexOf("konqueror")!=-1);
	return r;
}
function browser_is_mozilla(){
	var r=((this.ua.indexOf("mozilla")!=-1) && (this.ua.indexOf("rv:")!=-1) && (this.ua.indexOf("compatible")==-1) && (!this.is_opera()) && (!this.is_webtv()) && (this.ua.indexOf("netscape")==-1));
	return r;
}
function browser_is_webtv(){
	var r=(this.ua.indexOf("webtv")!=-1);
	return r;
}


// os
function browser_is_win(){
	var r=(this.ua.indexOf("win")!=-1);
	return r;
}
function browser_is_mac(){
	var r=(this.ua.indexOf("mac")!=-1);
	return r;
}
function browser_is_unix(){
	var r=false;
	if(this.ua.indexOf("linux")!=-1 || this.ua.indexOf("x11")!=-1 || this.ua.indexOf("unix")!=-1 || this.ua.indexOf("aix")!=-1 || this.ua.indexOf("sunos")!=-1){
		r=true;
	}
	return r;
}


// version
function browser_get_prefix_version(){// z.B. Opera/5.01 (Windows 98; U) [en]
	var v=0;
	if(this.ua.indexOf("/")!=-1){
		var prefix_end=1+this.ua.indexOf("/");
		v=parseFloat(this.ua.substring(prefix_end, this.ua.length));
	}
	return v;
}
function browser_get_version(){
	var v=0;
	if(this.is_ns()){
		v=this.get_prefix_version();
		if(v>=5){
			if(this.ua.indexOf("netscape")!=-1){// >= ns6 z.B. .. netscape6/6.0
				v=parseFloat(this.ua.substring(10+this.ua.indexOf("netscape"), this.ua.length));
			}
		}
	}
	if(this.is_ie()){
		v=parseFloat(this.ua.substring(5+this.ua.indexOf("msie "), this.ua.length));
	}
	if(this.is_opera()){
		if(this.ua.indexOf("mozilla")!=-1){// spoofing: Mozilla/5.0 (Windows 98; U) Opera 5.01 [en]
			v=parseFloat(this.ua.substring(6+this.ua.indexOf("opera "), this.ua.length));
		}
		else{// z.B. Opera/5.01 (Windows 98; U) [en]
			v=this.get_prefix_version();
		}
	}
	if(this.is_konqueror()){// Mozilla/5.0 (compatible; Konqueror/2.0.1; X11)
		v=parseFloat(this.ua.substring(10+this.ua.indexOf("konqueror"), this.ua.length));
	}
	if(v==0){// any unknown
		v=this.get_prefix_version();
	}
	return v;
}


// flash_version

// css_version

// supported (known browsers)
function browser_is_supported(){
	var r=false;
	if((this.is_ns())
		&& (this.is_win() || this.is_mac() || this.is_unix())
		&& (this.get_version()>=3)){
		r=true;
	}
	if((this.is_ie())
		&& (this.is_win() || this.is_mac() || this.is_unix())
		&& (this.get_version()>=4)){
		r=true;
	}
	if((this.is_opera())
		&& (this.is_win() || this.is_mac() || this.is_unix())
		&& (this.get_version()>=5)){
		r=true;
	}
	return r;
}


// dt_type
function browser_get_dt_type(){
	var r=0;
	if(this.is_supported()){
		if(this.is_opera() && this.get_version()>=5){
			r=1; // z.B. opera5: document_write, css, get_by_id
		}
		if(this.is_ns() && this.get_version()>=4){
			r=2; // z.B. ns4: document_write, css, div_write
		}
		if(this.is_ie() && this.get_version()>=4){
			r=3; // z.B. ie4: document_write, css, document.all, innerHTML
		}
		if(this.is_ie() && this.get_version()>=5 ){
			r=4; // z.B. ie5: document_write, css, document.all, get_by_id, DOM, innerHTML
		}
		if(this.is_ns() && this.get_version()>=6){
			r=5; // z.B. ns6: document_write, css, get_by_id, DOM, innerHTML
		}
		if(this.is_ie() && this.get_version()>=5 && this.is_mac()){
			r=6; // z.B. ie5mac: document_write, css, document.all, get_by_id, DOM, innerHTML
		}
	}
	return r;
}


/* # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # */

if(!window.libs_loaded){
	window.libs_loaded=1;
}
else{
	window.libs_loaded++;
}
