function getBrowser()
{

	// this is for an alert box to get a new browser, so it only opens once
	var b_first;

	//initialization, browser, os detection
	var d, dom, nu='', brow='', ie, ie4, ie5, ie5x, ie6, ie7;
	var ns4, moz, moz_rv_sub, release_date='', moz_brow, moz_brow_nu='', moz_brow_nu_sub='', rv_full=''; 
	var mac, win, old, lin, ie5mac, ie5xwin, konq, saf, op, op4, op5, op6, op7;

	d=document;
	n=navigator;
	nav=n.appVersion;
	nan=n.appName;
	nua=n.userAgent;
	old=(nav.substring(0,1)<4);
	mac=(nav.indexOf('Mac')!=-1) ? true : false;
	win=( ( (nav.indexOf('Win')!=-1) || (nav.indexOf('NT')!=-1) ) && !mac)?true:false;
	lin=(nua.indexOf('Linux')!=-1);
	// begin primary dom/ns4 test
	// this is the most important test on the page
	if ( !document.layers )
	{
		dom = ( d.getElementById ) ? d.getElementById : false;
	}
	else { 
		dom = false; 
		ns4 = true;// only netscape 4 supports document layers
	}
	// end main dom/ns4 test

	op=(nua.indexOf('Opera')!=-1);
	saf=(nua.indexOf('Safari')!=-1);
	konq=(!saf && (nua.indexOf('Konqueror')!=-1) ) ? true : false;
	moz=( (!saf && !konq ) && ( nua.indexOf('Gecko')!=-1 ) ) ? true : false;
	ie=((nua.indexOf('MSIE')!=-1)&&!op);
	if (op)
	{
		str_pos=nua.indexOf('Opera');
		nu=nua.substr((str_pos+6),4);
		brow = 'Opera';
	}
	else if (saf)
	{
		str_pos=nua.indexOf('Safari');
		nu=nua.substr((str_pos+7),5);
		brow = 'Safari';
	}
	else if (konq)
	{
		str_pos=nua.indexOf('Konqueror');
		nu=nua.substr((str_pos+10),3);
		brow = 'Konqueror';
	}
	// this part is complicated a bit, don't mess with it unless you understand regular expressions
	// note, for most comparisons that are practical, compare the 3 digit rv nubmer, that is the output
	// placed into 'nu'.
	else if (moz)
	{
		// regular expression pattern that will be used to extract main version/rv numbers
		pattern = /[(); \n]/;
		// moz type array, add to this if you need to
		moz_types = new Array( 'Firebird', 'Phoenix', 'Firefox', 'Galeon', 'K-Meleon', 'Camino', 'Epiphany', 
			'Netscape6', 'Netscape', 'MultiZilla', 'Gecko Debian', 'rv' );
		rv_pos = nua.indexOf( 'rv' );// find 'rv' position in nua string
		rv_full = nua.substr( rv_pos + 3, 6 );// cut out maximum size it can be, eg: 1.8a2, 1.0.0 etc
		// search for occurance of any of characters in pattern, if found get position of that character
		rv_slice = ( rv_full.search( pattern ) != -1 ) ? rv_full.search( pattern ) : '';
		//check to make sure there was a result, if not do  nothing
		// otherwise slice out the part that you want if there is a slice position
		( rv_slice ) ? rv_full = rv_full.substr( 0, rv_slice ) : '';
		// this is the working id number, 3 digits, you'd use this for 
		// number comparison, like if nu >= 1.3 do something
		nu = rv_full.substr( 0, 3 );
		for (i=0; i < moz_types.length; i++)
		{
			if ( nua.indexOf( moz_types[i]) !=-1 )
			{
				moz_brow = moz_types[i];
				break;
			}
		}
		if ( moz_brow )// if it was found in the array
		{
			str_pos=nua.indexOf(moz_brow);// extract string position
			moz_brow_nu = nua.substr( (str_pos + moz_brow.length + 1 ) ,3);// slice out working number, 3 digit
			// if you got it, use it, else use nu
			moz_brow_nu = ( isNaN( moz_brow_nu ) ) ? moz_brow_nu = nu: moz_brow_nu;
			moz_brow_nu_sub = nua.substr( (str_pos + moz_brow.length + 1 ), 8);
			// this makes sure that it's only the id number
			sub_nu_slice = ( moz_brow_nu_sub.search( pattern ) != -1 ) ? moz_brow_nu_sub.search( pattern ) : '';
			//check to make sure there was a result, if not do  nothing
			( sub_nu_slice ) ? moz_brow_nu_sub = moz_brow_nu_sub.substr( 0, sub_nu_slice ) : '';
		}
		
		if ( moz_brow == 'Netscape6' )
		{
			moz_brow = 'Netscape';
		}
		else if ( moz_brow == 'rv' || moz_brow == '' )// default value if no other gecko name fit
		{
			moz_brow = 'Mozilla';
		} 
		if ( !moz_brow_nu )// use rv number if nothing else is available
		{
			moz_brow_nu = nu;
			moz_brow_nu_sub = nu;
		}
		if (n.productSub)
		{
			release_date = n.productSub;
		}
		
		brow = moz_brow + ' ' + moz_brow_nu_sub;
	}
	else if (ie)
	{
		str_pos=nua.indexOf('MSIE');
		nu=nua.substr((str_pos+5),3);
		brow = 'Microsoft Internet Explorer ' + nu;
	}
	// default to navigator app name
	else 
	{
		brow = nan;
	}

return brow;
}
