/* Cool Javascript MP3 Playback in Web Page with Custom Controls
Version 1.2b
By Jeff Baker 
Created October 12, 2007
Copyright 2007 by Jeff Baker
www.seabreezecomputers.com
*/
/*
Modififications made: 
    
function next_song() added code not to loop back to the first song but to stop
function pause_song() added code to stop_song 
    
    
function fast_forward() commented out
function fast_reverse() commented out
function shuffle() commented out
function fade() commented out  
function fader() commented out  
*/
var folder = 'audio/'; // if your songs are in a different folder specify it here
// example: var folder = 'music/'; 

var t; // for volume timer
var t2; // for song time display timer
var t3; // used for fast_reverse in media player

var current_song = 0; // start at song 0 in playlist
var fade_out = 0; // 0 = no fade out when stopping or changing songs
// change to fade_out = 1 for fade volume between songs
// or you can use the fade out button

var songs = new Array(); // will hold the playlist of songs
var media; // holds the filename of the current song

var nameFile = new String("");

var loadMsg = new String("Loading Amma Names Please Wait ... ");
var loadFlag = true;

function loadsongs() {

    var songs_list = document.getElementById('songlist').innerHTML;
    var songs_list_length = songs_list.length;


    // Remove all CRs (13) from IE's textarea
    songs_list = songs_list.replace(/\r/gi, "");
    // first remove first carriage return if there is one
    // IE = CRLF (1310)
    // Firefox + Netscape = LF (10)
    // Safari = LFLF (1010)
    // So the first if statement is for IE and Safari
    // to check for LF on the second character
    if (songs_list.charAt(1) == '\n')
        songs_list = songs_list.substr(1);
    if (songs_list.charAt(0) == '\n')
        songs_list = songs_list.substr(1);
    // now remove carriage return from the end of string if there is one
    // first if needed for Safari
    // second if needed for netscape and firefox
    if (songs_list.charAt(songs_list_length - 3) == '\n')
        songs_list = songs_list.substr(0, songs_list_length - 3);
    if (songs_list.charAt(songs_list_length - 2) == '\n')
        songs_list = songs_list.substr(0, songs_list_length - 2);
    if (songs_list.charAt(songs_list_length - 1) == '\n')
        songs_list = songs_list.substr(0, songs_list_length - 1);


    // Note: IE will only split a TEXTAREA by \n. It will not
    // work with a DIV
    songs = songs_list.split('\n');

    media = songs[0]; // media becomes first song in list
    current_song = 0;
    display_song();

}  // function loadsongs()



// Make a DIV to hold the player and place it off the screen
// so that we don't see it
document.write('<DIV ID="player"'
+ 'style="position:absolute;left:-1000px;top:-1000px"'
+ '></DIV>');

function load(media) {

    media = folder + media;

    var player = document.getElementById('player');

    if (detect_browser() == "MSIE" ||
		detect_browser() == "Netscape") {
        player.innerHTML = '<object id="sound"'
+ 'classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"'
+ 'codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"'
+ 'standby="Loading Microsoft® Windows® Media Player components..."'
+ 'type="application/x-oleobject" width="160" height="144">'
+ '<param name="url" value="' + media + '">'
+ '<param name="volume" value="100">'
+ '<embed id="sound" type="application/x-mplayer2" src="' + media + '"'
+ 'classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"'
+ 'pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"'
+ 'type="application/x-mplayer2"'
+ 'url="' + media + '"'
+ 'volume="100"'
+ 'width="160" height="144">'
+ '<\/embed>'
+ '<\/object>';
    }
    else // if Safari or Firefox, then load Quicktime controls
    {
        player.innerHTML = '<object '
+ 'classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" '
+ 'width="160" height="144" id="sound"'
+ 'style="position:absolute;left:-1000px;top:-1000px"'
+ 'codebase="http://www.apple.com/qtactivex/qtplugin.cab">'
+ '<param name="SRC" value="' + media + '">'
+ '<param name="AUTOPLAY" value="true">'
+ '<param name="CONTROLLER" value="false">'
+ '<param name="VOLUME" value="100">'
+ '<param name="ENABLEJAVASCRIPT" value="true">'
+ '<param name="TYPE" value="audio/wav">'
+ '<embed classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"'
+ 'name="sound"'
+ 'id="sound"'
+ 'src="' + media + '"'
+ 'pluginspage="http://www.apple.com/quicktime/download/"'
+ 'volume="100"'
+ 'enablejavascript="true" '
+ 'type="audio/wav" '
+ 'height="16" '
+ 'width="200"'
+ 'style="position:absolute;left:-1000px;top:-1000px"'
+ 'autostart="true"'
+ '> </embed>'
+ '</object>';
    }

} // end function load(media)

function play_song() {

    if (loadFlag) {
        loadFlag = false;
        document.all.Translation.innerHTML = loadMsg;
    }
    // Check to see if current song has stopped
    if (document.getElementById('player').innerHTML == '') {


        load(media);
        setTimeout('display_time();', 1000);
        setTimeout('display_info();', 1000);
        display_song();
    }
    else // otherwise wait until it has 
        setTimeout('play_song()', 500);
}  // end function play


function stop_song() {
    var done;
    var mseconds; // milliseconds
    var player = document.getElementById('player');

    // if IE or Netscape then Media Player Pause Controls
    if (detect_browser() == "MSIE" ||
		detect_browser() == "Netscape")
        mseconds = 500;
    else // if Firefox
        mseconds = 200;

    if (document.getElementById('player').innerHTML != '')
        if (fade_out == 1) // if we are fading the volume
    {
        done = fader();
        if (!done) {
            setTimeout('stop_song();', mseconds);
            return;
        }
    }

    // Call stop function if available in quicktime player
    //document.getElementById('message').innerHTML = (typeof document.sound.Stop);
    if (document.sound)
        if (typeof document.sound.Stop == 'function') {
        if (document.getElementById('message'))
            document.getElementById('message').innerHTML = "QT Stop.";
        document.sound.Stop();
    }
    // Call stop function if available in Media player
    //document.getElementById('message').innerHTML = (typeof document.sound.controls);
    if (document.sound)
        if (typeof document.sound.controls == 'object') {
        if (document.getElementById('message'))
            document.getElementById('message').innerHTML = "WMP Stop.";
        document.sound.controls.Stop();
    }


    // Stop time display timer
    clearTimeout(t2);
    // Stop fast_reverse timer
    clearTimeout(t3);

    // Wipe out contents of player DIV
    player.innerHTML = '';

    // set speed display to 1X
    if (document.getElementById('speed'))
        document.getElementById('speed').innerHTML = '1X';
} // end function stop()

function pause_song() {

    // if a song is not playing then just return
    if (document.getElementById('player').innerHTML == '')
        return;

    stop_song();
    return;
    // if IE or Netscape then Media Player Pause Controls
    if (detect_browser() == "MSIE" ||
		detect_browser() == "Netscape") {
        if (!document.sound.controls) {
            if (document.getElementById('message'))
                document.getElementById('message').innerHTML = 'This'
			+ ' browser does not support pause control.';
            return;
        }

        // if pause
        if (document.getElementById('pause_btn').innerText == 'Pause') {
            document.sound.controls.pause();
            document.getElementById('pause_btn').innerText = 'Unpause';
        }
        else // if unpause
        {
            document.sound.controls.play();
            document.getElementById('pause_btn').innerText = 'Pause';
        }
    }
    else // If Firefox or Safari then use Quicktime Stop (Pause)	
    {

        // Check to see if Stop is a function
        // If not then return
        // So far Safari does not support Stop
        if (typeof document.embeds['sound'].Stop != 'function') {
            if (document.getElementById('message'))
                document.getElementById('message').innerHTML = 'This'
			+ ' browser does not support pause control.';
            return;
        }

        // if pause
        if (document.getElementById('pause_btn').innerHTML == 'Pause') {
            document.embeds['sound'].Stop();
            document.getElementById('pause_btn').innerHTML = 'Unpause';
        }
        else // if unpause
        {
            document.embeds['sound'].Play();
            document.getElementById('pause_btn').innerHTML = 'Pause';
        }
    }

}  // end function pause_song()


function detect_browser() {

    var browser_name = navigator.userAgent;
    // We have to check for Opera first because
    // at the beginning of the userAgent variable
    // Opera claims it is MSIE. 

    if (browser_name.indexOf("Opera") != -1)
        browser_name = "Opera";
    else if (browser_name.indexOf("Firefox") != -1)
        browser_name = "Firefox";
    else if (browser_name.indexOf("MSIE") != -1)
        browser_name = "MSIE";
    else if (browser_name.indexOf("Netscape") != -1)
        browser_name = "Netscape";
    else if (browser_name.indexOf("Safari") != -1)
        browser_name = "Safari";

    return browser_name;


} // end function detect_browser()

function next_song(dir) {
    playlist_length = songs.length - 1;

    // stop the current song if playing
    if (document.getElementById('player').innerHTML != '')
        stop_song();

    if (dir == 1) // previous
    {
        current_song--;
        if (current_song < 0)
            current_song = playlist_length; // loop to last song
    }
    else // next
    {
        current_song++;

        if (current_song > playlist_length) {
            current_song = 0; // To loop to first song comment out stop_song & return stmts
            stop_song(); // added to stop
            return;
        }
    }
    media = songs[current_song];

    play_song();

} // end function next_song(dir)

function display_song() {

    // display the name of the mp3
    // displays only if songname DIV exists
    if (document.getElementById('songname')) {
        document.getElementById('songname').innerHTML = 'Current song: '
	+ media;


    }
}  // end function display_song()

function volume(dir) {
    var current_volume;

    // if a song is not playing then just return
    if (document.getElementById('player').innerHTML == '')
        return;

    // if IE or Netscape then Media Player Volume Controls
    if (detect_browser() == "MSIE" ||
		detect_browser() == "Netscape") {
        if (!document.sound.settings) {
            if (document.getElementById('message'))
                document.getElementById('message').innerHTML = 'This'
			+ ' browser does not support volume control.';
            return;
        }

        current_volume = document.sound.settings.volume;



        if (document.getElementById('vol_display'))
            document.getElementById('vol_display').innerHTML = current_volume;


        if (dir == 1 || dir == 5) // left or down
        {
            document.sound.settings.volume = current_volume - 10;
            //document.embeds['sound'].SetVolume(current_volume-10);
            if (dir == 1)
                t = setTimeout('volume(' + dir + ')', 100);
        }
        else if (dir == 2) // right or up
        {
            document.sound.settings.volume = current_volume + 10;
            //document.embeds['sound'].SetVolume(current_volume+10);
            t = setTimeout('volume(' + dir + ')', 100);
        }
        else if (dir == 3) // stop changing volume
        {
            clearTimeout(t);
        }
    }
    else // if Firefox or Safari then Quicktime volume controls
    {
        // Check to see if GetVolume is a function
        // If not then return
        // So far Safari does not support GetVolume
        if (typeof document.embeds['sound'].GetVolume != 'function') {
            if (document.getElementById('message'))
                document.getElementById('message').innerHTML = 'This'
			+ ' browser does not support volume control.';
            return;
        }

        current_volume = document.embeds['sound'].GetVolume();


        if (document.getElementById('vol_display'))
            document.getElementById('vol_display').innerHTML = current_volume;


        if (dir == 1 || dir == 5) // left or down
        {
            //document.sound.settings.volume = current_volume-10;
            document.embeds['sound'].SetVolume(current_volume - 10);
            if (dir == 1)
                t = setTimeout('volume(' + dir + ')', 100);
        }
        else if (dir == 2) // right or up
        {
            //document.sound.settings.volume = current_volume+10;
            document.embeds['sound'].SetVolume(current_volume + 10);
            t = setTimeout('volume(' + dir + ')', 100);
        }
        else if (dir == 3) // stop changing volume
        {
            clearTimeout(t);
        }

    }
    return current_volume;
} // end function volume(dir)

/*
function fade()
{

// if fade_display span exists
if (document.getElementById('fade_display'))
{
if (document.getElementById('fade_display').innerHTML == ': Off')
{
fade_out = 1;
document.getElementById('fade_display').innerHTML = ': On';
}
else
{
fade_out = 0;
document.getElementById('fade_display').innerHTML = ': Off';
}
}

} // end function fade()

function fader()
{
var current_volume;
	
// if IE or Netscape then Media Player Volume Controls
if (detect_browser() == "MSIE" || 
detect_browser() == "Netscape")
{ 
if (!document.sound.settings)
{
if (document.getElementById('message'))
document.getElementById('message').innerHTML = 'This'
+ ' browser does not support volume control.';
return 1; // done because no fade support
}
}
else // if Firefox or Safari then Quicktime volume controls
{
// Check to see if GetVolume is a function
// If not then return
// So far Safari does not support GetVolume
if (typeof document.embeds['sound'].GetVolume != 'function')
{
if (document.getElementById('message'))
document.getElementById('message').innerHTML = 'This'
+ ' browser does not support volume control.';
return 1; // done because no fade support
}
}	
current_volume = volume(5);
//document.getElementById('message').innerHTML = current_volume;
if (current_volume <= 0)
{
volume(3); // end volume decrease
return 1; // return done
}
else
return 0;	

} // end function fader()
*/
function display_time() {
    // This function not only displays the current position
    // of time in the file, but it also get's the end time
    // so that if a song reaches the end it will play the
    // next song
    var time;
    var duration;
    var song_status;
    var buffer_status; // used for media player
    var mins; // used for quicktime
    var secs; // used for quicktime
    var scale; // used for quicktime

    // if IE or Netscape then Media Player 
    if (detect_browser() == "MSIE" ||
		detect_browser() == "Netscape") {
        //document.getElementById('message').innerHTML = typeof document.sound.settings;
        if (!document.sound.settings) {
            if (document.getElementById('message'))
                document.getElementById('message').innerHTML = 'This'
			+ ' browser does not support autoplay of next song in playlist.';
            return; // done because no fade support
        }
        //song_status = document.sound.status;
        song_status = document.sound.playState;
        buffer_status = document.sound.network.bufferingProgress;


        if (buffer_status < 100) // 3 = playing; 1 = stopped
        {
            t2 = setTimeout('display_time();', 20); // recall this function in 20ms
            return;
        }
        else {
            if (document.getElementById('songtime'))
                document.getElementById('songtime').innerHTML = 'Buffering: '
			+ buffer_status + '%';
        }
        //time = document.sound.controls.currentPosition;
        time = document.sound.controls.currentPositionString;
        //duration = document.sound.currentMedia.duration;
        duration = document.sound.currentMedia.durationString;

    }
    else  // Firefox or Safari
    {

        // if quicktime GetVolume not supported
        if (typeof document.sound.GetVolume != 'function') {
            if (document.getElementById('message'))
                document.getElementById('message').innerHTML = 'This'
			+ ' browser does not support autoplay of next song in playlist.';
            return; // done 
        }

        song_status = document.embeds['sound'].GetPluginStatus();


        if (song_status.toLowerCase() != 'playable' &&
		song_status.toLowerCase() != 'complete') {
            t2 = setTimeout('display_time();', 250); // recall this function every 250 ms
            return;
        }
        else {
            if (document.getElementById('songtime'))
                document.getElementById('songtime').innerHTML = song_status;
        }

        time = document.embeds['sound'].GetTime();
        duration = document.embeds['sound'].GetDuration();
        scale = document.embeds['sound'].GetTimeScale();
        time = Math.floor(time * (1 / scale));  // convert to seconds
        duration = Math.floor(duration * (1 / scale));  // converts to seconds
        // convert seconds into mm:ss
        mins = Math.floor(time / 60);
        secs = time - (mins * 60);
        time = mins + ':' + secs;
        mins = Math.floor(duration / 60);
        secs = duration - (mins * 60);
        duration = mins + ':' + secs;


    }

    if (document.getElementById('songtime'))
        document.getElementById('songtime').innerHTML = 'Time: '
		+ time + ' of ' + duration;


    // This is for Firefox
    if (time == duration) // if at end of song
    {
        next_song(2); // then play next song in playlist
        return;
    }
    // This is for Ie
    if (song_status == 1) // song stopped
    {
        next_song(2);
        return;
    }
    t2 = setTimeout('display_time();', 250); // recall this function every 250ms

} // end function display_time()

function display_info() {
    // Display info about the song
    var song_title;
    var song_artist;
    

    var indx = current_song + 1;
       
    document.all.Translation.innerHTML = ammaEnglishNames[current_song];

    nameFile = "images/ammaName";
    nameFile = nameFile.concat(indx, ".JPG");
    document.AmmaNameDisplayed.src = nameFile;

    // if IE or Netscape then Media Player 
    if (detect_browser() == "MSIE" ||
		detect_browser() == "Netscape") {
        //song_title = document.sound.currentMedia.name;
        song_title = document.sound.currentMedia.getItemInfo('Title');
        song_artist = document.sound.currentMedia.getItemInfo('Author');
    }
    else // Firefox Quicktime
    {
        // if quicktime GetVolume not supported
        if (typeof document.sound.GetVolume != 'function') {
            if (document.getElementById('message'))
                document.getElementById('message').innerHTML = 'This'
			+ ' browser does not support song ID3 information.';
            return; // done 
        }

        song_title = document.sound.GetUserData('©nam');
        song_artist = document.sound.GetUserData('©ART');
        /* Quicktime has a problem of not being able to load
        the song name and artist until most of the song is
        loaded, so if song_title == null we need to call this
        function again in a few milliseconds */
        if (song_title == null) {
            setTimeout('display_info();', 250);
            return;
        }
    }

    if (document.getElementById('message')) {
        document.getElementById('message').innerHTML = "Title: "
	+ song_title
	+ '<BR>'
	+ "Artist: "
	+ song_artist;
    }



}  // end function song_info()

/*
function fast_forward()
{
var current_rate;
	
// if song is stopped then just return
if (document.getElementById('player').innerHTML == '')
return;
	
// Note: Only WMV and ASF files can go backwards with -.5 to -5
// if IE or Netscape then Media Player 
if (detect_browser() == "MSIE" || 
detect_browser() == "Netscape")
{	
if (document.sound.settings.isAvailable('Rate'))
{
current_rate = parseFloat(document.sound.settings.rate);
//document.getElementById('message').innerHTML = current_rate;
if (current_rate == 1)
current_rate = 2;
else if (current_rate == 2)
current_rate = 3;
else 
current_rate = 1;
			
document.sound.settings.rate = current_rate;    
}
else
{	
if (document.getElementById('message'))
document.getElementById('message').innerHTML = "This"
+ " browser does not support fast forward.";
}
}
else // Firefox so quicktime
{
if (typeof document.sound.GetVolume != 'function')
{
if (document.getElementById('message'))
document.getElementById('message').innerHTML = 'This'
+ ' browser does not support fast forward.';
return ; // done 
}
current_rate = document.sound.GetRate();
if (current_rate == 1)
current_rate = 2;
else if (current_rate == 2)
current_rate = 3;
else
current_rate = 1;
			
document.sound.SetRate(current_rate);
}
	
if (document.getElementById('speed'))
document.getElementById('speed').innerHTML = current_rate
+ 'X';

} // end function fast_forward()


function fast_reverse(rewinding)
{
var current_pos;
var current_rate;
clearTimeout(t3);
// Note: Only WMV and ASF files can go backwards with -.5 to -5
// in Media Player.  So instead of using controls.fastReverse
// or settings.rate for reverse, I use controls.currentPosition
// and make it go back two seconds.
// var rewinding is used for media player with the setTimeout
// becuase there is not a real rewind with MP3s in WMP
	
// if song is stopped then just return
if (document.getElementById('player').innerHTML == '')
return;
	
// if IE or Netscape then Media Player 
if (detect_browser() == "MSIE" || 
detect_browser() == "Netscape")
{
current_pos = document.sound.controls.currentPosition;
if (document.getElementById('speed').innerHTML == '1X'
&& rewinding != 1)
current_rate = -2;
else if (document.getElementById('speed').innerHTML == '-2X'
&& rewinding != 1)
current_rate = -3;
else if (rewinding != 1)
current_rate = 1;
else 
current_rate = parseFloat(document.getElementById('speed').innerHTML);

current_pos = current_pos + current_rate;
if (current_rate < 1)
{	
document.sound.controls.currentPosition = current_pos;
t3 = setTimeout('fast_reverse(1);', 1000);
}
}
else // Firefox so quicktime
{
if (typeof document.sound.GetVolume != 'function')
{
if (document.getElementById('message'))
document.getElementById('message').innerHTML = 'This'
+ ' browser does not support rewind.';
return ; // done 
}
current_rate = document.sound.GetRate();
if (current_rate == 1)
current_rate = -2;
else if (current_rate == -2)
current_rate = -3;
else
current_rate = 1;
	
document.sound.SetRate(current_rate);
}
	
document.getElementById('speed').innerHTML = current_rate
+ 'X';
	
}

function shuffle()
{
songs.sort(function() 
{
return 0.5 - Math.random()
}) //Array elements now scrambled
	
media = songs[current_song]; // media becomes the random song at current position
display_song();
}  // end function shuffle()

*/
window.onload = loadsongs;

window.onunload = stop_song;


//Amma names english translation
var ammaEnglishNames = new Array();
ammaEnglishNames[0] = "Salutations to Her who is the complete manifestation of the absolute truth (Brahman)";
ammaEnglishNames[1] = "Salutations to Her who is existance, knowledge and bliss embodied";
ammaEnglishNames[2] = "Salutations to Her who is supreme among those who revel in the inner self";
ammaEnglishNames[3] = "Salutations to Her whose inner self is merged in yoga";
ammaEnglishNames[4] = "Salutations to Her whose nature is innerwardly drawn";
ammaEnglishNames[5] = "Salutations to Her who dwels in the top most plane of consciousness known as turiya";
ammaEnglishNames[6] = "Salutations to Her who is totally surrounded by divine light";
ammaEnglishNames[7] = "Salutations to Her whose greatness is unsurpassable";
ammaEnglishNames[8] = "Salutations to Her who has risen above all limitations of space, matter and time";
ammaEnglishNames[9] = "Salutations to Her who is devoid of all kinds of differences, species and within one and the same individual";
ammaEnglishNames[10] = "Salutations to Her whom speech and intellict cannot comprehend";
ammaEnglishNames[11] = "Salutations to Her whose path is eternally non-defined";
ammaEnglishNames[12] = "Salutations to Her who is devoid of name and form";
ammaEnglishNames[13] = "Salutations to Her to whom the yogic powers are of no importance ";
ammaEnglishNames[14] = "Salutations to Her who has the auspicious marks of the six godly qualities";
ammaEnglishNames[15] = "Salutations to Her who is devoid of the six modifications of life ";
ammaEnglishNames[16] = "Salutations to Her who is emanating the light of the Self which is eternal, conscious, pure and free";
ammaEnglishNames[17] = "Salutations to Her who is full of mercy";
ammaEnglishNames[18] = "Salutations to Her who has given up the yogic sleep";
ammaEnglishNames[19] = "Salutations to Her who has incarnated in the land of Kerala";
ammaEnglishNames[20] = "Salutations to Her who has a feminine human body";
ammaEnglishNames[21] = "Salutations to Her who has incarnated of Her own will as the daughter of the virtuous Sugunananda and Damayanti";
ammaEnglishNames[22] = "Salutations to Her who was born to Her parents as a result of their many virtuous lives";
ammaEnglishNames[23] = "Salutations to Her who did the miraculous deed of keeping silence when she came out of Her mother's womb";
ammaEnglishNames[24] = "Salutations to Her who has the beautiful dark complexion of Kali and Krishna";
ammaEnglishNames[25] = "Salutations to Her who is the wealth (treasure) of Kerala (land of Bhargava, an incarnation) which had been missing for a long time and has been regained";
ammaEnglishNames[26] = "Salutations to Her who is the life of the land of Kerala, which was almost dying and then rose back again";
ammaEnglishNames[27] = "Salutations to Her who by Her qualities like good behavior, etc. attract the whole creation";
ammaEnglishNames[28] = "Salutations to Her whose feet are served by humans, animals, birds and all others";
ammaEnglishNames[29] = "Salutations to Her whose mind is always bathing in the holy river of mercy";
ammaEnglishNames[30] = "Salutations to Her who offered Her own food to the poor";
ammaEnglishNames[31] = "Salutations to Her whose need for food is fully satisfied when others have their meals";
ammaEnglishNames[32] = "Salutations to Her who attained the experience of oneness with one and all";
ammaEnglishNames[33] = "Salutations to Her who knew all about Krishna without being taught";
ammaEnglishNames[34] = "Salutations to Her who continuously contemplated on the various sports of Lord Krishna which brings sweet memories";
ammaEnglishNames[35] = "Salutations to Her whose mind was ever craving to see the face of the Son (Krishna) of Nanda";
ammaEnglishNames[36] = "Salutations to Her whose mind was burning in the fire of the agony of non-union with Govinda (Krishna)";
ammaEnglishNames[37] = "Salutations to Her whose body was often falling down, unconscious due to the grief of non-union with Krishna";
ammaEnglishNames[38] = "Salutations to Her who regained consciousness by the proper nursing done by dogs and other animals";
ammaEnglishNames[39] = "Salutations to Her whose supreme love attracted Krishna by force, as it were, to manifest Himself before Her";
ammaEnglishNames[40] = "Salutations to Her whose mind was relieved of its agony by the immense joy of the vision of Krishna";
ammaEnglishNames[41] = "Salutations to Her who had the vision of the form of Krishna shining with the golden ornaments hanging on His belt, anklets, peacock feather and flute";
ammaEnglishNames[42] = "Salutations to Her who felt the all-pervading presence of Rishikesha (another name for Krishna meaning one who has conquered all the senses)";
ammaEnglishNames[43] = "Salutations to Her whose eyes remained widely open with joy on beholding the smiling face (of Krishna)";
ammaEnglishNames[44] = "Salutations to Her whose hair stood on end when She bathed in that emanating light (of Krishna) which was like the Yamuna river";
ammaEnglishNames[45] = "Salutations to Her who had an unexpected vision of the form of the Divine Mother";
ammaEnglishNames[46] = "Salutations to Her who had the vision of the Divine Mother's beautiful form holding the veena in Her lotus hand";
ammaEnglishNames[47] = "Salutations to Her who became extremely sorrowful on the Divine Mother's sudden disappearance";
ammaEnglishNames[48] = "Salutations to Her whose sorrowful wailing was tearing the ears of the four skies";
ammaEnglishNames[49] = "Salutations to Her who gave up all thoughts of bodily activities like eating, drinking, sleeping, etc";
ammaEnglishNames[50] = "Salutations to Her whose body was nourished by the food brought by birds and other animals";
ammaEnglishNames[51] = "Salutations to Her whose ears became filled by the waves of divine melodies emanating from the veena";
ammaEnglishNames[52] = "Salutations to Her whose mind was merged in the intoxicating supreme bliss";
ammaEnglishNames[53] = "Salutations to Her who was unsatisfied by the vision of the terrible form of the Divine Mother";
ammaEnglishNames[54] = "Salutations to Her who was fully satisfied by drinking from the ambrosial river of the blissful aspect";
ammaEnglishNames[55] = "Salutations to Her whose nature and all qualities remind us of Sri Sarada Devi";
ammaEnglishNames[56] = "Salutations to Her in whom is reflected the forms of Sri Ramakrishna and Sarada Devi";
ammaEnglishNames[57] = "Salutations to Her in whom we can see the play of these two re-enacted";
ammaEnglishNames[58] = "Salutations to Her who is the ocean of ambrosia in which the waves of the various plays of Sri Ramakrishna and Sarada Devi arise";
ammaEnglishNames[59] = "Salutations to Her who has strengthened the divine potentialities of Kerala";
ammaEnglishNames[60] = "Salutations to Her who has brought forth again the eternal values set by the rishis";
ammaEnglishNames[61] = "Salutations to Her who is an ocean of divine qualities which are wonderful and blissful";
ammaEnglishNames[62] = "Salutations to Her who is the embodiment of aisvarya, virya, kirti, sri, jnana, and vairagya";
ammaEnglishNames[63] = "Salutations to Her who acquired the form and qualities of Bala Gopala";
ammaEnglishNames[64] = "Salutations to Her whose glances are most sweet and loving";
ammaEnglishNames[65] = "Salutations to Her who in the form of Krishna plays freely";
ammaEnglishNames[66] = "Salutations to Her who wore all the ornaments, the peacock feather and the flute, like Krishna";
ammaEnglishNames[67] = "Salutations to Her who wishes to please Her devotees by fulfilling all their desires";
ammaEnglishNames[68] = "Salutations to Her who in the mood of the Divine Mother, seated on the altar, shines with great effulgence";
ammaEnglishNames[69] = "Salutations to Her whose entire body shines, adorned by ornaments and unique dress like that of the Divine Mother ";
ammaEnglishNames[70] = "Salutations to Her who has a bright, shining face as beautiful as a lotus flower and who holds Her hand in the posture of blessing";
ammaEnglishNames[71] = "Salutations to Her who is wearing all the various gold ornaments and the crown like the Divine Mother";
ammaEnglishNames[72] = "Salutations to Her who with Her tongue touches the festering skin ulcers of many patients or persons with disease";
ammaEnglishNames[73] = "Salutations to Her who is like Sri Chaitanya in removing skin diseases";
ammaEnglishNames[74] = "Salutations to Her who is strongly disapproving of bad qualities like stealing, injuring others, using intoxicants";
ammaEnglishNames[75] = "Salutations to Her who encourages the development of good qualities like renunciation, dispassion, love";
ammaEnglishNames[76] = "Salutations to Her who steals away all the bad tendencies from the hearts of those who have taken refuge in Her";
ammaEnglishNames[77] = "Salutations to Her who resides in the cave of the hearts of those who have supreme devotion";
ammaEnglishNames[78] = "Salutations to Her who has the great name Sudhamani";
ammaEnglishNames[79] = "Salutations to Her whose speech is as sweet as ambrosia";
ammaEnglishNames[80] = "Salutations to Her who in Her name Amritanandamayi is well known to the world";
ammaEnglishNames[81] = "Salutations to Her who has aversion towards the offerings of vain and worldly people";
ammaEnglishNames[82] = "Salutations to Her who accepts food offered with humilty by devotees";
ammaEnglishNames[83] = "Salutations to Her who avoids sensual people";
ammaEnglishNames[84] = "Salutations to Her who likes the company of yogis";
ammaEnglishNames[85] = "Salutations to Her who encourages good actions like charity";
ammaEnglishNames[86] = "Salutations to Her who is worshipped by the sentient and insentient beings of the world";
ammaEnglishNames[87] = "Salutations to Her who encourages the learning that will lead to the truth";
ammaEnglishNames[88] = "Salutations to Her who brought back the great way of living of the sages of the forests";
ammaEnglishNames[89] = "Salutations to Her who is very much interested in re-establishing the (gurukula) way of education";
ammaEnglishNames[90] = "Salutations to Her who is a Mother to many, many life-long brahmacharins";
ammaEnglishNames[91] = "Salutations to Her who has given the divine brilliance to Her disciples";
ammaEnglishNames[92] = "Salutations to Her who sees all the actions of the disciples";
ammaEnglishNames[93] = "Salutations to Her who delights in blessing the worlds like a lamp which removes darkness";
ammaEnglishNames[94] = "Salutations to Her who is the light for the ignorant";
ammaEnglishNames[95] = "Salutations to Her who is the bright flame of the lamp kindled in the pure hearts of devotees";
ammaEnglishNames[96] = "Salutations to Her who enjoys taking the (butter) of the devotees' love";
ammaEnglishNames[97] = "Salutations to Her who likes to sit with the disciples in meditation";
ammaEnglishNames[98] = "Salutations to Her who is always concerned with the good of the world";
ammaEnglishNames[99] = "Salutations to Her who is happy in exchanging Her own merits with the demerits of others";
ammaEnglishNames[100] = "Salutations to Her who is happy in exchanging heaven with hell for the relief of others";
ammaEnglishNames[101] = "Salutations to Her who is Kanya Kumari (goddess of Cape Comarin) in human form";
ammaEnglishNames[102] = "Salutations to Her who is anxious to bring up the land of Kerala which is immersed in the ocean of ignorance";
ammaEnglishNames[103] = "Salutations to Her who has given a high place to this community of fishermen by taking birth in their line which is supposed to be the line of the great sage Vyasa";
ammaEnglishNames[104] = "Salutations to Her who promotes the vedic knowledge and all other spiritual texts";
ammaEnglishNames[105] = "Salutations to Her who is the divine consciousness of the awakening of the land of Kerala";
ammaEnglishNames[106] = "Salutations to Her who is the Great Divine Mother";
ammaEnglishNames[107] = "Salutations to Her who is full of divine love and bliss";