self.window.focus();
var strLeadingSubjectText = 'Free Music From Napster';
var strLeadingBodyText = '';
var strFinalLink = '';
var q = location.search.substring(1);
var qSplit = q.split("&");
var qParams = new Array();
var logAtt = 0;

for (i = 0; i < qSplit.length; i++) {
	var each = qSplit[i].split("=");
	qParams[each[0]] = each[1];
}

var clipResponseData = new Array();
var CurrPlay = "";
var CurrAlbum = "";
var CurrArtist = "";
var adCounter = 2;
var adMod = 3;
var dataIDs = "";
var dataType = "";
var playIdx = 0;
var playLen = 0;
var bNewData = false;
var bFirstPlay = false;
var bFPreturn = false;

var playLimit = 25;
var cookieDays = 30;

// set up DART site to accommodate skins
var DARTsite = "naps.player";
var skin = "";

/* set if we're returning from first play reg */
if(qParams['fpr'] && qParams['fpr'] == 1) {
	bFPreturn = true;
}

function load() {
    dataIDs = qParams['play_id'];
    dataType = qParams['type'];
    LoadSponsorBanner();
    getData();
    //staticBanner();
    //loadAds();
}

function loadNewData(pid,tp) {
    dataIDs = pid;
    dataType = tp; 
    clipResponseData = new Array();
    $('playlistData').innerHTML = "";
    CurrPlay = "";
    CurrAlbum = "";
    CurrArtist = "";
    bNewData = true;
    getData();
}

function getPlayCount() {
    return parseInt($C('NWPC') ? $C('NWPC').split("|")[0] : 0);
}

function updatePlayCount(val) {
	val = val - 0;
    
    var ckTime = new Date();
	ckTime.setTime( ckTime.getTime() + (1000 * 60 * 60 * 24 * cookieDays) ); //getting current time + 30days, from milliseconds
	//ckTime.setTime( ckTime.getTime() + (1000 * 60 * 1) ); //testing
	
	
	if ($C('NWPC')) {
		var oldExpire = $C('NWPC').split("|")[1];
    	val = val + "|" + oldExpire;
    	document.cookie = "NWPC=" + val + "; domain=.napster.com; " + "expires=" + oldExpire +  ";";
	} else {
    	val = val + "|" + ckTime.toGMTString();
    	document.cookie = "NWPC=" + val + "; domain=.napster.com; " + "expires=" + ckTime.toGMTString() +  ";";
    }
    //document.cookie = "NWPC=" + val + "; domain=.napster.com";
    if(typeof(console) != "undefined") { console.log("v8 updatePlayCount: " + val); }
}

function playerBuy( intType ){
	intType = parseInt(intType);
	
	var strID = (intType == 0) ? CurrPlay : CurrAlbum;
	//var objNapsterPlugin = $('objNapsterPlugin');
	/*
	if( !$B.isNapCompatible ) {
		$('UnsupportedOSWarning').style.visibility = "visible";
	}
	else if( intType == 0 ){
		$SCEG( 'Click', 's_eVar3="Purchase_Track_' + strID + '_' + $FILEPATH() + '"' );
		//$OC( "op=download_tracks%26perm%3dy%26ids%3d" + strID, $C( 'CLID' ), 'window.open("http://www.napster.com/nweb/subscribe/purchase.html?track_id=' + strID + '","playerOpenedWindow")' );
		var openURL = 'http://free.napster.com/nweb/subscribe/purchase.html?track_id=' + strID;
		window.open(openURL,"playerOpenedWindow");
	}
	else if( intType == 1 ){
		$SCEG( 'Click', 's_eVar3="Purchase_Album_' + strID + '_' + $FILEPATH() + '"' );
		//$OC( "op=download_album%26perm%3dy%26ids%3d" + strID, $C( 'CLID' ), 'window.open("http://www.napster.com/nweb/subscribe/purchase.html?album_id=' + strID + '","playerOpenedWindow")' );
		var openURL = 'http://free.napster.com/nweb/subscribe/purchase.html?album_id=' + strID;
		window.open(openURL,"playerOpenedWindow");
	}
	else if( intType == 2 ){
		$SCEG( 'Click', 's_eVar3="Purchase_Track_' + strID + '_' + $FILEPATH() + '"' );
		//$OC( "op=download_tracks%26perm%3dy%26ids%3d" + strID, $C( 'CLID' ), 'window.open("http://www.napster.com/nweb/subscribe/purchase.html?work_id=' + strID + '","playerOpenedWindow")' );
		var openURL = 'http://free.napster.com/nweb/subscribe/purchase.html?work_id=' + strID;
		window.open(openURL,"playerOpenedWindow");
	}*/
	switch(intType) {
		default:
			Buy_mp3(strID, intType);
	}
}

var trackCapAll;
function trackCapReached() {
	alert("trackCapReached() 3");
	trackCapAll = "Y";
}

function subscribe() {
    window.open("http://free.napster.com/subscribe/","playerOpenedWindow");
}

function freeHome() {
    window.open("http://free.napster.com/","playerOpenedWindow");
}

function AlbumView() {
    window.open("http://free.napster.com/view/album/index.html?id=" + CurrAlbum,"playerOpenedWindow");
}

function ArtistView() {
    window.open("http://free.napster.com/view/artist/index.html?id=" + CurrArtist,"playerOpenedWindow");
}

function TrackView() {
    window.open("http://free.napster.com/view/track/index.html?id=" + CurrPlay,"playerOpenedWindow");
}

function eof_track( intIndexOffset ) {
//        if(bFirstPlay) {
//  		$SCData( 'FPF', 1 );
//		top.location.href = "http://sms.napster.com/nweb/registration/firstplay/?return_url=" + escape("http://www.napster.com/player/validate_play.html?" + location.search.substring(1) + "&fpr=1");
//		return;
//	}
    var bPlaylistEnd = false;
	if( intIndexOffset > 0 )
		playIdx++;
	else
		playIdx--;

    // set a flag that tells us that we've reached the end of the entire playlist
    if (playIdx == playLen) {
        playIdx = 0;
        bPlaylistEnd = true;
    }

    // FIXME: do we ever reach this condition?
	if( playIdx < 0 )
		playIdx = 0;

	try{
	    $(CurrPlay + '_play').innerHTML = '<img src="/images/spacer.gif" />';
	}
	catch(e){}
    if( !bPlaylistEnd && clipResponseData[playIdx] ) {
        CurrPlay = "";
        CurrAlbum = "";
	CurrArtist = "";
        if (getPlayCount() % adMod == 0 && (getPlayCount() > 0)) {
            //updatePlayCount('0');
            loadAds();
        }
        else {
            playClip();
        }
    }
}

function eof_ad() {
    if (CurrPlay && CurrPlay != "") {
    $(CurrPlay + '_play').innerHTML = "";
    }
    $('vidBannerTag').innerHTML = "";
    $('VideoAd').style.visibility = "hidden";
    CurrPlay = "";
    CurrAlbum = "";
	CurrArtist = "";
    //staticBanner();
    playClip();
}

function eof_getclip() {
	// there's no track in the player, so reset playIdx to 0 and start over
	playIdx = 0;
    if( clipResponseData[playIdx] ) { // make sure we've got some tracks loaded
        CurrPlay = "";
        CurrAlbum = "";
	CurrArtist = "";
        if (getPlayCount() % adMod == 0 && (getPlayCount() > 0)) {
            //updatePlayCount('0');
            loadAds();
        }
        else {
            playClip();
        }
    }
}

function getData() {

	xmlURL = "/playXML/" + dataType + "/" + dataIDs + '?r=' + Math.random();
	
    var myAjax = new Ajax.Request(
        xmlURL, {
            method: 'get',
            parameters: '',
            onComplete: parseResponse
        }
    );
}

	var objLastSelected = null;
	
	function SelectThis( objLayer, intIndex ){
		if( objLastSelected != null ){
			objLastSelected.style.backgroundColor = 'transparent';
		}
		objLayer.style.backgroundColor = '#6e6e6e';
		objLastSelected = objLayer;
	}
	
	function PlayThis( objLayer, intIndex ){
		playIdx = intIndex;
		try{
		    $(CurrPlay + '_play').innerHTML = '<img src="/images/spacer.gif" />';
		}
		catch(e){}
		if( objLastSelected != null ){
			objLastSelected.style.backgroundColor = 'transparent';
		}
		objLayer.style.backgroundColor = '#6e6e6e';
		objLastSelected = objLayer;
		CurrArtist = "";
		if (getPlayCount() % adMod == 0 && (getPlayCount() > 0)) {
			//updatePlayCount( '0' );
			loadAds();
		}
		else {
			playClip();
		}
	}

function parseResponse(http_request) {
    try {
        if ( !(http_request.readyState == 4 && http_request.status == 200 && http_request.responseXML != null) ) throw 'BAD RESPONSE';
        var XMLdoc = http_request.responseXML;
        var cliplistData = XMLdoc.getElementsByTagName('clip');
        playLen = cliplistData.length;
        for(c = 0; c < cliplistData.length; c++) {
            var clipData = XMLdoc.getElementsByTagName('clip')[c];
            var responseData = new Array();
            for (x = 0; x < clipData.attributes.length; x++) {
                var dataKey = clipData.attributes[x].nodeName;
                responseData[dataKey] = clipData.getAttribute(dataKey);
            }

			var intPlayIndexStore = clipResponseData.length
            var plDisplay = "";
            plDisplay += '<div id="plData_' + responseData['track_id'] + '" class="plDataContainer" onclick="SelectThis( this, ' + intPlayIndexStore + ' )" ondblclick="PlayThis( this, ' + intPlayIndexStore + ' )">';
            plDisplay += '<div id="' + responseData['track_id'] + '_Title" class="plDataTitle" title="' + responseData['display_name'] + '">' + responseData['display_name'] + '</div>';
            plDisplay += '<div id="' + responseData['track_id'] + '_play" class="plDataPlay"><img src="/images/spacer.gif" /></div>'; 
            plDisplay += '<div id="' + responseData['track_id'] + '_Duration" class="plDataDuration">' + responseData['duration'] + '</div>'; 
            plDisplay += '<div id="' + responseData['track_id'] + '_Artist" class="plDataArtist" title="' + responseData['artist_name'] + '">' + responseData['artist_name'] + '</div>'; 
            plDisplay += '<div class="plDivider"><img src="/images/player/gfc_playlistdivider_sml.gif" alt="" /></div>'; 
            plDisplay += '</div>'; 
            $('playlistData').innerHTML += plDisplay;

            clipResponseData[clipResponseData.length] = responseData;
        }

        $('PlayDataLoading').style.visibility = "hidden";
        if (bNewData) {
            playIdx = 0;
            bNewData = false;
        }
	// bump up play index if we're coming back from free play
	if(bFPreturn) {
		playIdx = 1;
		// now set bFPreturn to false cuz we've done this once
		bFPreturn = false;
	}
        if ((getPlayCount() == '0' || getPlayCount() > adCounter) && ($SCData('FPF') > 0)) {
            loadAds();
        } else {
           staticBanner(Math.random()*10000000000000000,(clipResponseData[playIdx] ? clipResponseData[playIdx].genre_id : '0'));
           playClip();
        }
    } catch (e) {
        alert('There was a problem with the request');
    }
}

function playClip() {
	var currPlayCount = getPlayCount();
	$C( 'PLAYDATA', '', true, null );
	if (bNewData) {
		playIdx = 0;
		bNewData = false;
	}
	$('MaxPlaysWarning').style.visibility = "hidden";
	//if(clipResponseData.length > 0) {
	if(clipResponseData[playIdx]){
		if( !FWSupportedCountries[$C( 'COUNTRYCODE' )] ){
			if( $C( 'OSUSW' ) == null || $C( 'OSUSW' ) != '1' ){
				if( NapSupportedCountries[$C( 'COUNTRYCODE' )] != null ){
					$('OutsideUSPlayWarning').style.visibility = "visible";
					$( 'CountryPlayName' ).innerHTML = NapSupportedCountries[$C( 'COUNTRYCODE' )].name;
					$( 'CountryPlayLink' ).innerHTML = '<a href="' + NapSupportedCountries[$C( 'COUNTRYCODE' )].url + '" target="_blank">' + NapSupportedCountries[$C( 'COUNTRYCODE' )].url + '</a>';
					setTimeout( function(){
						$('OutsideUSPlayWarning').style.visibility = "hidden";
					}, 16000 );
				}
				else{
					$('UnsupportedCountryPlayWarning').style.visibility = "visible";
					setTimeout( function(){
						$('UnsupportedCountryPlayWarning').style.visibility = "hidden";
					}, 16000 );
				}
			}
			$C( 'OSUSW', 1 );
		}
		var playData = clipResponseData[playIdx];
		if( !FWSupportedCountries[ $C( 'COUNTRYCODE' ) ] )
			$SCEG( 'Play', 's_eVar1=' + playData['track_id'] + ';s_eVar2="Clip - Territory (Clip =:30s)"' );
		else{
			if( playData['is_free'] == 'M' || playData['is_free'] == 'm' ){
				$SCEG( 'Play', 's_eVar1=' + playData['track_id'] + ';s_eVar2="Clip - Maximum (Clip =:30s)"' );
			}
			else if( playData['streaming_is_active'] == 'N' || playData['is_free'] == 'n' ){
				$SCEG( 'Play', 's_eVar1=' + playData['track_id'] + ';s_eVar2="Clip - Rights (Clip =:30s)"' );
			}
			else{
				$SCEG( 'Play', 's_eVar1=' + playData['track_id'] + ';s_eVar2="Full-length"' );
			}
		}
	$('PlayTracker').innerHTML = "<img src=\"http://sms.napster.com/cgi-bin/trackplays.cgi?tid=" + playData['track_id'] + "&rnd=" + Math.random()*10000000000000000 + "\" />";
		if (trackCapAll == 'Y') {
			alert("set sia to n 3.1");
			console.log(playData['pld']);
		}
				
		if (currPlayCount < playLimit) {
			passClip("player_control",playData['pld']);
		} else {
			$('MaxPlaysWarning').style.visibility = "visible";
		}
		var album_art = playData['image'] ? playData['image'] : "/images/albums/gfc_150x150_default.gif";
		$('albumArt').innerHTML = "<a href=\"javascript:AlbumView()\;\"><IMG SRC=\"" + album_art + "\" class=\"AlbumImage\" onerror=\"ImageErrorHandler( this, 150 )\"></a>";

		$('songArtist').innerHTML= "<a href=\"javascript:ArtistView()\;\">" + playData['artist_name'] + "</a>";
		$('songAlbum').innerHTML= "<a href=\"javascript:AlbumView()\;\">" + playData['album_name'] + "</a>";
		$('songTitle').innerHTML= "<a href=\"javascript:TrackView()\;\">" + playData['display_name'] + "</a>";

		if( FWSupportedCountries[$C( 'COUNTRYCODE' )] ){
			$('BuyTrackCost').innerHTML= "$" + playData['track_price'];
			$( 'BuyTrackContainer' ).style.visibility = "visible";
			$( 'BuyUnlimitedContainer' ).style.visibility = "visible";
		}
		var albumLink = '';
		if( FWSupportedCountries[$C( 'COUNTRYCODE' )] && playData['album_price'] && playData['album_price'] != "" ){
			albumLink += '<div class="BuyAlbumButton"><a href="javascript:playerBuy( 1 )" class="RollOverBuyAlbumPlayer"><div></div></a></div><div id="BuyAlbumCost">$' + playData['album_price'] + '</div>';
		}
		else {
			albumLink += '<div><a href="javascript:AlbumView()" class="ViewAlbumLink">View Album</a></div>';
		}
		$('BuyAlbumContainer').innerHTML= albumLink;
		
		var strMediaAndArtist = playData['display_name'] + ' by ' + playData['artist_name'];
		strLeadingBodyText = 'Listen to this great music from Napster! Click below to hear ' + strMediaAndArtist + ', and go to Napster.com to listen to millions of free tracks.%0A%0A';
		strFinalLink = "http://play.napster.com/track/" + playData['track_id'];
		$('shareLink').innerHTML= "http://play.napster.com/track/" + playData['track_id'];
		$(playData['track_id'] + '_play').innerHTML = '<img src="/images/player/gfc_playstat.gif" alt="" />';
		CurrPlay = playData['track_id'];
		CurrAlbum = playData['album_id'];
		CurrArtist = playData['artist_id'];
		if(playData['is_free'] == 'M') {
	/* max plays purchase info commented out with move from 5 to 3 plays            var max_art = playData['image_max'] ? playData['image_max'] : "/images/gfc_75x75_default.gif";
			$('MaxPlaysAlbumArt').innerHTML = '<img src="' + max_art + '" />';
			$('MaxPlaysSongAlbum').innerHTML = playData['album_name'];
		$('MaxPlaysSongAlbum').title = playData['album_name'];
			$('MaxPlaysSongArtist').innerHTML = playData['artist_name'];
		$('MaxPlaysSongArtist').title = playData['artist_name'];
			$('MaxPlaysSongTitle').innerHTML = '"' + playData['display_name'] + '"';
		$('MaxPlaysSongTitle').title = playData['display_name'];
			$('MaxPlaysBuyTrackCost').innerHTML= "$" + playData['track_price'];
		
			var maxAlbumLink = '';
			if (playData['album_price'] && playData['album_price'] != "") {
				 maxAlbumLink += '<div class="MaxPlaysBuyAlbumButton"><a href="javascript:playerBuy( 1 )" class="RollOverBuyAlbumPlayerMaxPlay"><div></div></a></div><div id="MaxPlaysBuyAlbumCost">$' + playData['album_price'] + '</div>';
			}
			else {
				maxAlbumLink += '<div><a href="javascript:AlbumView()" class="ViewAlbumLink">View Album</a></div>';
			}
			$('MaxPlaysBuyAlbumContainer').innerHTML= maxAlbumLink;
		*/
			$('MaxPlaysWarning').style.visibility = "visible";
		}
		
		//updatePlayCount((currPlayCount > adCounter ? 0 : (currPlayCount - 0)) + 1);
		if (currPlayCount < playLimit) {
			updatePlayCount(currPlayCount + 1);
		}
	}
}

	function SendEmailLink(){
		location.href = 'mailto:?subject=' + strLeadingSubjectText + '&body=' + strLeadingBodyText + strFinalLink;
	}

function getFlashMovieObject(movieName){
	if (window.document[movieName])
	{
		return window.document[movieName];
	}
	if (navigator.appName.indexOf("Microsoft Internet")==-1)
	{
		if (document.embeds && document.embeds[movieName]) {
    		return document.embeds[movieName]; 
        }
    }
	else
	{
        return $(movieName);
	}
}


function passClip(playerID,which) {
	if($SCData('FPF') == 0) {
		bFirstPlay = true;
	}
	if(($C('NTLG').indexOf('!1') < 0) && (logAtt < 3)) {
		var execStr = "passClip('" + playerID + "','" + which + "')";
		logAtt++;
		setTimeout(execStr,500);
	}
	else {
		logAtt = 0;
	    var flashMovie=getFlashMovieObject(playerID);
		flashMovie.SetVariable("clip",which);
	}
}

function loadAds() {
    ord=Math.random()*10000000000000000;
	if (clipResponseData[playIdx]) {
   		playgenre = clipResponseData[playIdx].genre_id;
		videoAd( ord, playgenre );
	   	staticBanner( ord, playgenre );
	}
	else {
		/* will occur if you're returning from reg following a single track first play free */
	   	staticBanner( ord, '0');
	}
}

function staticBanner(ord,genre_zone) {
    /* begin ad tag */
    var theBanner = "";
    theBanner += '<iframe src="http://ad.doubleclick.net/adi/' + DARTsite + '/' + ($C('spn') ? ($C('spn')) : (skin ? skin : ('g_' + genre_zone))) + ';dcopt=ist;sz=300x250;ptile=2;ord=' + ord + '?" width="300" height="250" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling=no borderCOLOR="#000000">';
    if (navigator.userAgent.indexOf("Gecko")==-1) {
        theBanner += '<script language="JavaScript" src="http://ad.doubleclick.net/adj/' + DARTsite + '/' + ($C('spn') ? ($C('spn')) : (skin ? skin : ('g_' + genre_zone))) + ';dcopt=ist;sz=300x250;abr=!ie;ptile=2;ord=' + ord + '?" type="text/javascript"><\/script>';
    }
    theBanner += '</iframe>';
    /* End ad tag */
    $('adBannerTag').innerHTML = theBanner;
}

function videoAd(ord,genre_zone) {
    var adSrc = "http://ad.doubleclick.net/pfadx/" + DARTsite + "/" + ($C('spn') ? ($C('spn')) : (skin ? skin : ('g_' + genre_zone))) + ";dcmt=text/html;sz=320x240;ptile=1;ord=" + ord + "?";
    var theVidAd = "";

    theVidAd += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" type="application/x-shockwave-flash"  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="player_video" width="330" height="250" align="left">';
    theVidAd += '<param name="movie" value="player_video_alpha.swf?fileType=swf&clip=' + adSrc + '" />';
    theVidAd += '<param name="FlashVars" value="fileType=swf&clip=' + adSrc + '" />';
    theVidAd += '<param name="allowScriptAccess" value="sameDomain" /><param name="menu" value="false" /><param name="quality" value="high" /><param name="salign" value="LT" /><param name="wmode" value="transparent" />';
    theVidAd += '<embed src="player_video_alpha.swf?fileType=swf&clip=' + adSrc + '" name="player_video" FlashVars="fileType=swf&clip=' + adSrc + '" allowScriptAccess="sameDomain" menu="false" quality="high" salign="LT" wmode="transparent" swLiveConnect="true" width="330" height="250" align="left" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
    theVidAd += '</embed> </object>';
	
    $('vidBannerTag').innerHTML = theVidAd;
    $('VideoAd').style.visibility = "visible";
    self.window.focus();
}
function gotAdContent() {
    $('VideoAd').style.visibility = "visible";
}

	function IsValidInput( objElementPassed ){
		var objRegExp = new RegExp( '[\\\<\\\%3ca]+script', 'gi' );
		var objNewLineRegExp = new RegExp( '[\\\n\\\r]+', 'gi' );
		var blnSubmitForm = true;
		if( typeof objElementPassed == 'object' ){
			for( var i = 0; i < objElementPassed.elements.length; i++ ){
				var strToTest = objElementPassed.elements[i].value.replace( objNewLineRegExp, '' );
				if( ( objElementPassed.elements[i].type == 'text' || objElementPassed.elements[i].type == 'textarea' ) && ( strToTest.match( objRegExp ) ) ){
					alert( 'The text you entered is not valid\nPlease try again.' );
					blnSubmitForm = false;
				}
			}
			if( blnSubmitForm ){
				objElementPassed.submit();
				return true;
			}
		}
		else if( typeof objElementPassed == 'string' ){
			var strToTest = objElementPassed.replace( objNewLineRegExp, '' );
			if( strToTest.match( objRegExp ) ){
				alert( 'The text you entered is not valid\nPlease try again.' );
				blnSubmitForm = false;
			}
			return blnSubmitForm;
		}
	}

	function playerSearchFormSubmit() {
	    var formObj = $('searchForm');
	    var searchURL = formObj.action;
	    searchURL += "?type=" + formObj.type.value + "&query=" + formObj.query.value;
		if( formObj.query.value != '' && IsValidInput( formObj.query.value ) ) {
		    window.open( searchURL,"playerOpenedWindow" );
                    }
	    return false;
	}


function LoadSponsorBanner() {
/* code for ad tag for sponsor banner */

if (qParams['spn']) {
    document.cookie = "spn=" + qParams['spn'] + "; path=/; domain=.napster.com";
}
if($C('spn')) {
var sponsorOrd = Math.random()*10000000000000000;
var sponsorBanner = "";
sponsorBanner += '<iframe src="http://ad.doubleclick.net/adi/' + DARTsite + '/' + $C('spn') + ';dcopt=ist;sz=180x51;ptile=3;ord=' + sponsorOrd + '?" width="180" height="51" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling=no borderCOLOR="#000000">';
if (navigator.userAgent.indexOf("Gecko")==-1) {
sponsorBanner += '<script language="JavaScript" src="http://ad.doubleclick.net/adj/' + DARTsite + '/' + $C('spn') + ';dcopt=ist;sz=180x51;abr=!ie;ptile=3;ord=' + sponsorOrd + '?" type="text/javascript"><\/script>';
}
sponsorBanner += '</iframe>';
/* End ad tag */
$('SponsorLogo').innerHTML = sponsorBanner;
}
}

