

	var $T = function(){
		if( arguments[0] != null ){
			document.title = arguments[0];
		}
		else
			return document.title;
	}
	
	function GetVersion( strBrowser, objData ){
		var strReturn = null;
		for( var i = 0; i < objData.length; i++ ){
			var strData = objData[i].split( "/" );
			if( strData[0] == strBrowser )
				strReturn = strData[1];
		}
		return strReturn;
	}
	
	function Browser(){
		var objAgent = navigator.userAgent.toLowerCase();

		var objBrowserRegExp = new RegExp( "[\\\w\\\d]+\\\/[\\\.\\\w\\\d]+", "g" );
		var objOSRegExp = new RegExp( "\\\([\\\.\\\;\\\s\\\w\\\d]*", "gi" );

		this.agent = navigator.userAgent;
		this.major  = parseInt( navigator.appVersion );
		this.minor  = parseFloat( navigator.appVersion );

		if( objAgent.indexOf( 'safari' ) != -1 )
			this.browser = 'safari';
		else if( objAgent.indexOf( 'firefox' ) != -1 )
			this.browser = 'firefox';
		else if( objAgent.indexOf( 'opera' ) != -1 )
			this.browser = 'opera';
		else if( objAgent.indexOf( 'msie' ) != -1 )
			this.browser = 'msie';
		else if( objAgent.indexOf( 'mozilla' ) != -1 )
			this.browser = 'mozilla';
		
		objData = objAgent.match( objOSRegExp );
		
		this.isNapCompatible =  ( objAgent.indexOf( "windows nt 5" ) > -1 ) || ( objAgent.indexOf( "Windows NT 6" ) > -1 ) || ( objAgent.indexOf( "Win 9x 4.90" ) > -1 );
		
		if( objData != null ){
			var objDataTemp = objData[0].split( '; ' );
			this.os = objDataTemp[0].replace( "(", "" );
			this.os_ver = objDataTemp[2];
		}
		else{
			this.os = 'unknown';
			this.os_ver = 'unknown';
		}
		
		if( this.browser == 'msie' ){
			var objTemp = objDataTemp[1].split( ' ' );
			this.version = objTemp[1];
		}
		else
			this.version = GetVersion( this.browser, objAgent.match( objBrowserRegExp ) );
	}
	
	var $B = new Browser();
	
	String.prototype.UnEscapeString = function(){
		var strValue = this;
		aryEscapeCodes = new Array( '%3A,:', '%2F,/', '%2E,.', '%5F,_', '%26,&', '%3D,=', '%2B,+' );
		for( intCodes = 0; intCodes < aryEscapeCodes.length; intCodes++ ){
			aryTemp = aryEscapeCodes[intCodes].split( ',' );
			objRegExp = new RegExp( '\\' + aryTemp[0], 'gi' );
			strValue = strValue.replace( objRegExp, aryTemp[1] );
		}
		return strValue;
	};
	/*
	
	document.writeln( '<embed type="application/x-napsterlinks" name="objFFNapsterPlugin" width="1" height="1" hidden="true">' );
	
	if( $B.browser == 'msie' ){
		document.writeln( '<style type="text/css">' );
		document.writeln( '	<!--' );
		document.writeln( '	EMBED{' );
		document.writeln( '		position : absolute ;' );
		document.writeln( '		top : -12px ;' );
		document.writeln( '	}' );
		document.writeln( '	-->' );
		document.writeln( '</style>' );
	}
	*/
	function $OC( strOpCode, strLID, strDefaultAction ){
		var objDate = new Date();
		var intTime = objDate.getTime();
		var strExp = ( Math.round( intTime / 1000 ) + 60 ) + ( objDate.getTimezoneOffset() * 60 );
		if( $B.browser == 'firefox' )
			var objPlugin = document.embeds['objNapsterPlugin'];
		else
			var objPlugin = document.getElementById( 'objNapsterPlugin' );
		var blnSuccess = false;
        if (strOpCode.indexOf('op=') > -1)
        	strOpCode = strOpCode.substring( 3 );
		try{
			objPlugin.NCOMAuth2( strLID.UnEscapeString(), strExp, 'op=' + strOpCode );
			blnSuccess = true;
		}
		catch(e){
			try{
				objPlugin.DoOpcode( strOpCode );
				blnSuccess = true;
			}
			catch(e){
				try{
					if( strDefaultAction != null ){
						eval( strDefaultAction );
						blnSuccess = true;
					}
				}
				catch(e){
					alert(e);
					blnSuccess = false;
				}
			}
		}
		return blnSuccess;
	}
	
	function CountryData(){
		this.name = arguments[0];
		this.url = arguments[1];
	}
/*	
	var FWSupportedCountries = new Object();
	
	FWSupportedCountries['US'] = true;
	FWSupportedCountries['GB'] = false;
	FWSupportedCountries['CA'] = false;
	FWSupportedCountries['DE'] = false;
	FWSupportedCountries['JP'] = false;
*/	
	var NapSupportedCountries = new Object();
	
	NapSupportedCountries['GB'] = new CountryData( 'the UK', "http://www.napster.co.uk" );
	NapSupportedCountries['CA'] = new CountryData( 'Canada', "http://www.napster.ca" );
	NapSupportedCountries['DE'] = new CountryData( 'Germany', "http://www.napster.de" );
	
	function OpenUpgradeFlow( strServiceLevel ){
		if( $C( 'SL' ) != null && $C( 'SL' ) == 'NTG' )
			alert( 'You are already subscribed to Napster - there is no need to subscribe again.' );
		else
			$OC( "?op=switch%26dlg%3dmyaccount%26tab%3daccountstatus%26url%3dhttp:%2f%2fsms.gb.napster.com%2fduet%2faccount%2fac_creditinfo.html?default_offer%3d1%26src%3daccountstatus%26return_url%3dac_upsell_upgrade.html", $C( 'CLID' ), 'location.href="http://sms.gb.napster.com/duet/registration/r_install.html?opcode=switch%26dlg%3dmyaccount%26tab%3daccountstatus%26url%3dhttp:%2f%2fsms.gb.napster.com%2fduet%2faccount%2fac_creditinfo.html?default_offer%3d1%26src%3daccountstatus%26return_url%3dac_upsell_upgrade.html"' );
	} 
	
	function OpenUpgradeFlowNG( strServiceLevel ){
		if( $C( 'SL' ) != null && $C( 'SL' ) == 'NTG' )
			alert( 'You are already subscribed to Napster - there is no need to subscribe again.' );
		else
			$OC( "?op=switch%26dlg%3dmyaccount%26tab%3daccountstatus%26url%3dhttp:%2f%2fsms.gb.napster.com%2fduet%2faccount%2fac_creditinfo.html?default_offer%3d1%26src%3daccountstatus%26return_url%3dac_upsell_upgrade.html&promo_id=NAPSTERGIRL", $C( 'CLID' ), 'location.href="http://sms.gb.napster.com/duet/registration/r_install.html?opcode=switch%26dlg%3dmyaccount%26tab%3daccountstatus%26url%3dhttp:%2f%2fsms.gb.napster.com%2fduet%2faccount%2fac_creditinfo.html?default_offer%3d1%26src%3daccountstatus%26return_url%3dac_upsell_upgrade.html"' );
	} 

	var $FORM = function(){
		var aryForms = document.forms;
		for( var i = 0; i < aryForms.length; i++ ){
			if( aryForms[i].action.indexOf( arguments[0] ) > -1 ){
				return aryForms[i];
			}
		}
		return false;
	}
