/*
* Copyright (c) 2002-2004 Victor A.Spirin. All rights reserved.
* author: Victor A.Spirin - victor_aspirin [at] mail [dot] ru
* 
* version: 1.0.3
* date:    2005.03.28
* started: 2004.09.02
*/



var userAgent = new UserAgent();

function UserAgent()
	{
	var type;
	var version;
	
	function init()
		{
		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;
			for( var n in REs )
			{
			var ms = ua.match(REs[n]);
				if( ms != null )
				{
				type = n;
				version = ms[1];
				break;
				}
			}
		}
	
	this.isMSIE = function ()
		{
		return type == 'msie';
		}
	
	this.isFirefox = function ()
		{
		return type == 'firefox';
		}
	
	this.isMozilla = function ()
		{
		return type == 'mozilla';
		}
	
	this.isOpera = function ()
		{
		return type == 'opera';
		}
	
	this.getVersion = function ()
		{
		return version;
		}
	
	this.loadScript = function ( fileName, availableUAs, noCache )
		{
			if( fileName.substring(fileName.length - 3) != '.js' )
			return alert('UserAgent.loadScript: Script file "' + fileName + '" must ends with ".js"');
			if( typeof(availableUAs) != 'object' || availableUAs.length == null )
			return alert('UserAgent.loadScript: Illegal argument "availableUAs"');
			if( noCache != null && typeof(noCache) != 'boolean' )
			return alert('UserAgent.loadScript: Illegal argument "noCache"');
		
		var script = fileName.substring(0, fileName.length - 3);
		var ua = type + Math.floor(10*parseFloat(version));
		var file = null;
		var exists = false;
			for( var i = 0 ; i < availableUAs.length ; i++ )
			{
				if( availableUAs[i] == type ) exists = true;
				else if( availableUAs[i] == ua )
				{
				file = script + '.' + ua + '.js';
				break;
				}
			}
			if( file == null && exists ) file = script + '.' + type + '.js';
			if( file != null )
			document.write('<' + 'script src="' + file + (noCache ? '?v=' + Math.random() : '') + '"' + '><' + '/' + 'script' + '>');
		}
	
	init();
	}