/*
* Copyright (c) 2002-2007 Victor A.Spirin <victor_aspirin [at] mail [dot] ru>
* v. 2.0.0 - 2007.05.20
*/



var userAgent = new RiniX_UA_UserAgent();

function RiniX_UA_UserAgent()
	{
	/*string*/
	var type;
	
	/*string*/
	var version;
	
	/*string*/
	var jsRoot;
	
	/*string[]*/
	var files;
	
	var This = this;
	
	
	
	
	
	function __construct()
		{
		var REs = {firefox: /Firefox\x2f([0-9\.]+)/, mozilla: /rv:([0-9\.]+)\) Gecko/, opera: /Opera[ \x2f]([0-9\.]+)/, msie: /MSIE ([0-9\.]+)/};
		
		var ua = navigator.userAgent;
		var ms;
			for( var n in REs )
				if( (ms = ua.match(REs[n])) != null )
				{
				type = n;
				version = ms[1];
				break;
				}
		
		files = [];
		}
	
	
	
	
	
	/*string*/
	this.getJSRoot = function ()
		{
			if( jsRoot == null ) _searhJsRoot();
		return jsRoot;
		}
	
	
	
	
	
	/*string*/
	this.getType = function ()
		{
		return type;
		}
	
	
	/*boolean*/
	this.is = function ( /*string*/ vendor )
		{
			if( typeof(vendor) != 'string' || vendor == '' )
			throw new Error(_e = 'RiniX_UA_UserAgent.is: Illegal argument "vendor"', _e);
		
		return type == vendor.toLowerCase();
		}
	
	
	/*string*/
	this.getVersion = function ()
		{
		return version;
		}
	
	
	
	
	
	/*void*/
	this.load = function ( /*string*/ pointer, /*string[]*/ types )
		{
			if( typeof(pointer) != 'string' || pointer.search(/^[a-z0-9_\.]+$/gi) == -1 )
			throw new Error(_e = 'RiniX_UA_UserAgent.load: Illegal argument "pointer"', _e);
		
			if( jsRoot == null ) _searhJsRoot();
		
			if( jsRoot != null )
			This.loadFile(jsRoot + pointer.replace(/[_\.]/gi, '/') + '.js', types);
		}
	
	
	/*void*/
	this.loadFile = function ( /*string*/ url, /*string[]*/ types )
		{
			if( typeof(url) != 'string' || url.substring(url.length - 3) != '.js' )
			throw new Error(_e = 'RiniX_UA_UserAgent.loadFile: Illegal argument "url"', _e);
			if( types != null && !(typeof(types) == 'object' && types.length != null) )
			throw new Error(_e = 'RiniX_UA_UserAgent.loadFile: Illegal argument "types"', _e);
		
			if( types != null )
			{
			var base = url.substring(0, url.length - 3);
			var ua = type + Math.floor(10*parseFloat(version));
			url = null;
			var exists = false;
				for( var i = 0 ; i < types.length ; i++ )
				{
					if( types[i] == type ) exists = true;
					else
					if( types[i] == ua )
					{
					url = base + '.' + ua + '.js';
					break;
					}
				}
				if( url == null && exists ) url = base + '.' + type + '.js';
				if( url == null ) return;
			}
		_load(url);
		}
	
	
	/*void*/
	function _load( /*string*/ src )
		{
			for( var i = 0 ; i < files.length ; i++ )
				if( files[i] == src ) return;
		
		var e = document.createElement('script');
		e.setAttribute('type', 'text/javascript');
		document.documentElement.firstChild.appendChild(e);
		e.setAttribute('src', src);
		
		files.push(src);
		}
	
	
	
	
	
	/*void*/
	function _searhJsRoot()
		{
		var es = document.getElementsByTagName('script');
		var src, j;
			for( var i = 0 ; i < es.length ; i++ )
				if( (src = es[i].getAttribute('src')) != null &&
					(j = src.toLowerCase().indexOf('rinix/ua/useragent.js')) != -1 )
				{
				var a = location.pathname;
				a = a.substring(0, a.lastIndexOf('/') + 1);
				var b = src.substring(0, j);
					if( b.substring(0, 2) == './') b = b.substring(2);
				b = b.replace(/\x2f\.\x2f/g, '/');
					while( b.substring(0, 3) == '../' )
					{
					b = b.substring(3);
						if( a == '' ) return;
					
					a = a.substring(0, a.length - 1);
					a = a.substring(0, a.lastIndexOf('/') + 1);
					}
				jsRoot = a + b;
				return;
				}
		}
	
	
	
	
	
	__construct();
	}