<html>
<lock>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Music search</title>
<style>
body,input,button{font-family:"Tahoma";}
body{background-color:#DDEEFF}
input.srch{border:solid MidnightBlue 1px;}
div.fdbk{border:solid MidnightBlue 1px;background-color:silver;}
b.artist{color:#0000BB}
.prgbar{
background-color:MidnightBlue;
}
button,input.btn,.volctrl,.lnkhovr
{
color:black;
background-color:#AABBFF;
border:solid #6688AA 1px;
}
button.fdbk
{
color:yellow;
}
button.play
{
border:solid #BBCCFF 1px;
}
a{text-decoration:none}
input.srch,.prgbar{width:200pt;}
div.fdbk{width:200pt;}
td.songtitle{height:40pt;vertical-align:top;}
.lnkhovr{border:0px;}
button.fdbk
{
font-family:wingdings;
border:none;
background-color:transparent;
}
button.play
{
font-family:wingdings;
}
.ctrl,.btn
{
width:48pt;
margin-right:1pt;
}
</style>
<script language="javascript" src="apptitle.js"></script>
<script>
/*************************
* *
* STRING FUNCTIONS *
* *
**************************/
function remove_ext(s)
{
// Remove the extension.
s=""+s;
var i_ext=s.lastIndexOf(".");
if (i_ext>0)
{
s=s.substring(0,i_ext);
}
return s;
}
function last_char(s_str)
{
var l=s_str.length;
var r="";
if (l>0) r=s_str.substring(l-1,l);
return r;
}
function last_char_code(s_str)
{
var l=s_str.length;
var n=0;
if (l>0) n=s_str.charCodeAt(l-1);
return n;
}
function trim_a_char_from_right(s_str)
{
var l=s_str.length-1;
if (l>0) s_str=s_str.substring(0,l);
return s_str;
}
function trim_chars_from_right(s_str, n)
{
s_str=""+s_str;
var l=s_str.length-n;
if (l>0) s_str=s_str.substring(0,l);
return s_str;
}
function trim_str(s)
{
var i=0;
var r='';
var c='';
var b_start=false;
var end_index=0;
s=''+s;
for (i=s.length-1;i>0;i--)
{
c=s.charAt(i);
if(c!=' ')
{
end_index=i;
break;
}
}
for (i=0;i<=end_index;i++)
{
c=s.charAt(i);
if(c!=' ')b_start=true;
if(b_start==true)r=r+c;
}
return r;
}
function replaceAll(txt, s_replace, with_this)
{
return txt.replace(new RegExp(s_replace, 'g'),with_this);
}
function SetCookie(name,value)
{
var xDate = new Date();
xDate.setDate(xDate.getDate() + 365);
document.cookie=name+"="+escape(value)+";expires="+xDate;
}
function GetCookie(name)
{
var arg=name+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while(i<clen)
{
var j=i+alen;
if(document.cookie.substring(i,j)==arg)
{
return getCookieVal(j);
}
i=document.cookie.indexOf(" ",i)+1;
if(i==0) break;
}
return ""; // instead of null
}
function getCookieVal(offset)
{
var endstr=document.cookie.indexOf(";",offset);
if(endstr==-1)
{
endstr=document.cookie.length;
}
return unescape(document.cookie.substring(offset,endstr));
}
function smart_set_focus(s)
{
var e;
try
{
e=document.getElementById(s);
e.focus();
}
catch(err)
{
}
return;
}
function capital_str(s)
{
var c=s.charAt(0);
c=c.toUpperCase();
s=c+s.substring(1);
return s;
}
function capitalize_str(s)
{
var sc=s.toLowerCase();
var r="";
var c="";
var b_got_cap=false;
var i=0;
for (i=0;i<sc.length;i++)
{
c=sc.charAt(i);
if (c>="a" && c<="z" && b_got_cap==false)
{
c=c.toUpperCase();
b_got_cap=true;
}
r+=c;
}
return r;
}
function is_upper_alpha_num(c)
{
r = ((c>="A" && c<="Z") || (c>="0" && c<="9")) ? true : false;
return r;
}
function string_ends_in(s_host,s_para)
{
var b_result=false;
var sl=s_host.length;
var pl=s_para.length;
var ns=sl-pl;
var s_end_host="";
if (ns>=0)
{
s_end_host=s_host.substring(ns,pl+ns);
if (s_end_host==s_para) b_result=true;
}
return b_result;
}
function last_char_str(s)
{
var c="";
var n=s.length;
if (n>0) c=s.charAt(n-1);
return c;
}
function int_to_min_sec(time)
{
var s="";
var minutes = Math.floor(time / 60);
var seconds = time - minutes * 60;
if (seconds<10) seconds="0"+seconds;
s=minutes + ":" + seconds;
return s;
}
function is_valid_word(s)
{
var i=0;
var b_valid=false;
var c="";
for(i=0;i<s.length;i++)
{
c=s.charAt(i);
if (c>="A" && c<="Z")
{
b_valid=true;
}
else
{
b_valid=false;
break;
}
}
return b_valid;
}
function has_only_one_capital_letter(s)
{
var r=-1;
var n_cap=0;
var n_first_cap=-1;
var i=0;
var c="";
// Have to trick it for the double underscore.
if (s.indexOf("__")>0)
{
r=s.indexOf("__")+1;
}
else
{
for (i=1;i<s.length;i++)
{
c=s.charAt(i);
if (c=='.') break;
if (c>="A" && c<="Z")
{
if (n_cap==0) n_first_cap=i;
n_cap++;
}
}
if (n_cap==1 && n_first_cap>0) r=n_first_cap;
}
return r;
}
function check_all_filenames()
{
var i=0;
var h="";
for (i=0; i<a_songs.length; i++)
{
if (has_only_one_capital_letter(a_songs[i])<0)
h+=a_songs[i]+"<br>\n";
}
var wnd=window.open("","_blank");
wnd.document.write(h);
wnd.document.close();
}
</script>
<script>
var g_youtube="";
var g_sequential=false; // whether or not it just plays the playlist in order from top to bottom.
var g_wnd;
var a_songs=new Array();
var a_caps=new Array();
var a_words=new Array();
var a_recent=new Array();
var a_playlist = new Array();
var m_play_list_ptr=-1;
var b_making_word_list=false;
var n_word_list_ptr=0;
var g_artist_search="";
// Do all initialization.
var g_enable=true;
var g_user_play=true;
var g_user_choice=false;
var g_seconds_not_playing=0;
var g_second_delay=0;
var g_previous_song=-1;
var g_current_song=-1;
var g_feedback_song=-1;
// Scoring
var a_indexes=new Array();
var a_scores=new Array();
var g_srch_ptr=0;
var g_busy_searching=false;
var g_repeat_search=false;
var g_busy_sorting=false;
var g_cancel_search=false;
var g_search_string="";
var g_sort_cycle_count=0;
var m_prev_elem="";
var m_muted=false;
var m_volume_at_begin=0; // for crank it feature
</script>
<script language="javascript" src="playlist.js"></script>
<script language="javascript" src="words.js"></script>
<script>
function getContentFromIframe(iFrameName)
{
var myIFrame = document.getElementById(iFrameName);
var content = myIFrame.contentWindow.document.body.innerHTML;
}
function remove_playlist_item(n)
{
var i=0;
for (i=n;i<a_playlist.length-1;i++)
a_playlist[i]=a_playlist[i+1];
a_playlist.pop();
redraw_playlist();
}
function add_song_to_playlist(n)
{
a_playlist.push(n);
redraw_playlist();
show_playlist("p");
}
function redraw_playlist()
{
var s_html="<table><th colspan=3 class=lnkhovr>Playlist</th>";
var i=0;
var s_song="";
for (i=0;i<a_playlist.length;i++)
{
s_song=a_songs[a_playlist[i]];
s_song=trim_chars_from_right(s_song,4);
s_song=convert_to_song_and_artist(s_song);
var s_remove="<button onClick=\"remove_playlist_item(" + i + ");\"> - </button>"
var s_on_click_cmd="do_link_click("+a_playlist[i]+"," + i + ");";
var s_line=s_remove + "</td><td> <span class='lnkhovr' id=\"spnplst" + i + "\" onclick=\"" + s_on_click_cmd + "\" style='background-color:transparent'>" + s_song +"</span>";
s_html+="<tr valign=top><td><nobr>"+s_line+"</td></tr>";
}
s_html+="</table>";
var e=document.getElementById("txtplay");
e.innerHTML=s_html;
save_playlist();
}
function load_playlist()
{
var s=GetCookie("playlist");
var a=s.split(";");
var i=0;
var n=0;
for (i=0;i<a.length;i++)
{
n=a[i];
if (n.length>0) a_playlist.push(n);
}
redraw_playlist();
}
function save_playlist()
{
var i=0;
var s="";
for (i=0;i<a_playlist.length;i++)
{
s+=a_playlist[i]+";";
}
SetCookie("playlist",s);
}
function exit_playlist()
{
m_play_list_ptr=-1;
highlight_playlist_item(m_play_list_ptr);
}
/*****************************
* *
* REGENERATE PLAYLIST *
* *
*****************************/
// Search variables
function regenerate_master_playlist()
{
s=show_input();
var a=s.split("\n");
var b="";
var i=0;
var r="";
var l="";
for (i=0;i<a.length;i++)
{
b=a[i];
b=b.replace(/\\/g,"\\\\");
b=b.replace(/\'/g,"\\\'");
b=b.replace(/\"/g,"\\\"");
if (last_char(b)!="3")
{
b=trim_a_char_from_right(b);
}
b=trim_str(b);
if (b!="")
{
if (i>0) r+="\n";
l="a_songs.push(\""+b+"\");";
r+=l;
}
}
show_data(r);
}
function show_data(r)
{
var wnd=window.open("playlist.txt","_blank");
wnd.document.write(r);
wnd.document.title="playlist.js";
wnd.document.close();
}
function show_input()
{
g_wnd=window.open("playlist.txt","_blank");
var s=g_wnd.document.body.innerHTML;
s=s.replace("<PRE>","");
s=s.replace("</PRE>","");
g_wnd.close();
return s;
}
function save_feedback_values()
{
var e_txt=document.getElementById("txtword");
SetCookie("feedback",e_txt.value);
return;
}
function load_feedback_values()
{
var e_txt=document.getElementById("txtword");
e_txt.value=GetCookie("feedback");
}
// make an array of capitalized, normalized strings to make searching faster and easier.
function init_caps()
{
var i=0;
var s="";
for (i=0;i<a_songs.length;i++)
{
s=convert_string(a_songs[i]);
s=trim_str(s);
a_caps.push(s);
}
}
init_caps();
function censored_str(s)
{
s=replaceAll(s,"goddamn","g******");
s=replaceAll(s,"bitch","b****");
s=replaceAll(s,"fuck","f***");
s=replaceAll(s,"shit","s***");
s=replaceAll(s,"damn","d***");
s=replaceAll(s,"Goddamn","g******");
s=replaceAll(s,"Bitch","b****");
s=replaceAll(s,"Fuck","f***");
s=replaceAll(s,"Shit","s***");
s=replaceAll(s,"Damn","d***");
return s;
}
// If the filename is all lowercase except for one letter, then that is the artist.
function convert_to_song_and_artist(s)
{
var i=0;
var n_first_cap=-1;
var c="";
var r="";
var lc="";
var sp=s.lastIndexOf("\\");
if (sp<=0) sp=0;
var sc=s;
var s_artist="";
sc=s.replace("__","**"); // Trick it in case a group name starts with a number
for (i=sp;i<sc.length;i++)
{
c=sc.charAt(i);
if (c!="\'") // skip apost in can't, etc, so it is treated as one word.
{
if (!((c>="A" && c<="Z") || (c>="0" && c<="9") || (c>="a" && c<="z") || (c=='*') ))
{
c=" ";
}
if (c!=" " || lc!=" ")
r+=c;
}
}
r=censored_str(r);
r=r.replace("**","__");
n_first_cap=has_only_one_capital_letter(r);
r=r.replace("__"," ");
if (n_first_cap>0)
{
// title / artist
s_artist=capitalize_str(r.substring(n_first_cap,r.length));
r="<b title='song' style='color:blue'>" + capitalize_str(r.substring(0,n_first_cap-1))+ "</b><br><b onclick=\"do_artist_search('" + s_artist + "');\" style='color:navy' " + " >" + s_artist + "</b>";
}
else
r="<b style='color:navy'>" + capitalize_str(r)+ "</b><br><b style='color:red'>Unknown artist</b>";
r=fix_contractions(r);
r=replace_all_upper(r,"i","I");
if (string_ends_in(r.toUpperCase(),"EXPLICIT"))
r=trim_chars_from_right(r,8)+" (explicit)";
if (string_ends_in(r.toUpperCase(),"MSTR"))
r=trim_chars_from_right(r,4);
return r;
}
// takes the filename off the last part of the directory.
function convert_string(s)
{
var r="";
var c="";
var lc="";
s=s.toUpperCase();
var i=0;
var sp=s.lastIndexOf("\\");
if (sp<=0) sp=0;
for (i=sp;i<s.length;i++)
{
c=s.charAt(i);
if (c!="\'") // skip apost in can't, etc, so it is treated as one word.
{
if (!is_upper_alpha_num(c)) c=" ";
if (c!=" " || lc!=" ") r+=c;
}
}
return r;
}
function convert_input_string(s)
{
var r="";
var c="";
var lc="";
s=s.toUpperCase();
var i=0;
for (i=0;i<s.length;i++)
{
c=s.charAt(i);
if (c!="\'") // skip apost in can't, etc, so it is treated as one word.
{
if (!is_upper_alpha_num(c)) c=" ";
if (c!=" " || lc!=" ")
r+=c;
}
}
return r;
}
function display_song_str(s)
{
s=s.toLowerCase();
s=censored_str(s);
s=capitalize_str(s);
return s;
}
// Replaces all uppercase words in a string, but preserves their case.
function replace_all_upper(s,s_word,s_word_with_apost)
{
r=" "+s+" ";
s_word=" "+s_word+" ";
s_word_with_apost=" "+s_word_with_apost+" ";
var u_word=capitalize_str(s_word);
var u_word_with_apost=capitalize_str(s_word_with_apost);
r=replaceAll(r,s_word,s_word_with_apost);
r=replaceAll(r,u_word,u_word_with_apost);
r=trim_str(r);
return r;
}
function fix_contractions(s)
{
var r=" "+s+" ";
r=replace_all_upper(r,"youve","you've");
r=replace_all_upper(r,"youre","you're");
r=replace_all_upper(r,"weve","we've");
r=replace_all_upper(r,"cant","can't");
r=replace_all_upper(r,"isnt","isn't");
r=replace_all_upper(r,"dont","don't");
r=replace_all_upper(r,"aint","ain't");
r=replace_all_upper(r,"talkin","talkin'");
r=replace_all_upper(r,"its","it's");
r=replace_all_upper(r,"ive","I've");
r=replace_all_upper(r,"im","I'm");
r=trim_str(r);
return r;
}
/**********************
* *
* SCORING *
* *
***********************/
function init_new_search()
{
g_repeat_search=false;
g_busy_searching=false;
g_busy_sorting=false;
g_cancel_search=false;
do_search();
}
function get_checked_status(id)
{
var r=false;
var e;
try
{
e=document.getElementById(id);
if (e.checked) r=true;
}
catch(err)
{
r=false;
}
return r;
}
function do_search()
{
var ed=document.getElementById("songsrch");
var s=ed.value;
var s_clean_str="";
var d_start_time = new Date();
var n_start_time = Date.parse(d_start_time);
if (g_busy_searching==false && g_busy_sorting==false)
{
g_search_string="";
a_indexes=new Array();
a_scores=new Array();
if (s=="admin")
{
ed.value="";
show_feedback_data();
return;
}
s=s.toLowerCase();
s_clean_str=censored_str(s);
ed.value=s_clean_str;
s=convert_input_string(s);
s=trim_str(s);
if (s=="") return;
check_search_words(s);
g_search_string=s;
g_srch_ptr=0;
// Show the progress bar.
var epr=document.getElementById("spnprog");
epr.style.display="block";
var esrch=document.getElementById("btnsrch");
esrch.value="Cancel";
g_busy_searching=true;
g_busy_sorting=false;
g_sort_cycle_count=0;
}
var i=g_srch_ptr;
var n_srch_loop_count=0;
if (g_cancel_search==false)
{
var epr=document.getElementById("spnprog");
if (g_busy_searching==true)
{
for (i=g_srch_ptr;i<a_songs.length;i++)
{
var n_score=0;
if (g_artist_search=="")
{
n_score=search_score(a_caps[i],g_search_string);
}
else
{
var ip=0;
ip=a_songs[i].indexOf(g_artist_search);
if (ip>0) n_score=1;
}
if (n_score>0)
{
a_indexes.push(i);
a_scores.push(n_score);
}
n_srch_loop_count++;
if (n_srch_loop_count>=2000) break;
}
g_srch_ptr=i;
// Jump out after a time if it is not done.
if (g_srch_ptr<a_songs.length)
{
// show progress bar.
var f_prog=g_srch_ptr/a_songs.length*172;
var epr=document.getElementById("spnprog");
var einp=document.getElementById("songsrch");
epr.style.backgroundColor=einp.style.borderColor;
f_prog=parseInt(f_prog);
epr.style.width=f_prog+"pt";
Timer=setTimeout("do_search()", 55);
return;
}
}
g_busy_searching=false;
var d_end_time = new Date();
var n_end_time = Date.parse(d_end_time);
var n_time_diff=n_end_time-n_start_time;
// Now sort them.
var n_sort_loop_count=0;
g_busy_sorting=true;
var b_need_sort=true;
while (b_need_sort==true)
{
b_need_sort=false;
for (i=0;i<a_indexes.length-1;i++)
{
if (a_scores[i+1]>a_scores[i])
{
b_need_sort=true;
var tmp_score=a_scores[i+1];
var tmp_index=a_indexes[i+1];
a_scores[i+1]=a_scores[i];
a_indexes[i+1]=a_indexes[i];
a_scores[i]=tmp_score;
a_indexes[i]=tmp_index;
}
}
n_sort_loop_count++;
if (n_sort_loop_count>=200)
{
if (b_need_sort==true)
{
// Progress bar for sorting.
g_sort_cycle_count++;
var f_prog=((g_sort_cycle_count % 5)+1)/5*172;
var epr=document.getElementById("spnprog");
f_prog=parseInt(f_prog);
epr.style.width=f_prog+"pt";
Timer=setTimeout("do_search()", 55);
return;
}
}
}
g_busy_sorting=false;
g_cancel_search=false;
} // g_cancel_search==false
g_busy_searching=false;
g_busy_sorting=false;
g_cancel_search=false;
// Hide the progress bar.
var epr=document.getElementById("spnprog");
epr.style.width=0;
epr.style.backgroundColor="transparent";
var esrch=document.getElementById("btnsrch");
esrch.value="Search";
var em=document.getElementById("txtsrch");
var s_table=draw_search_table();
em.innerHTML=s_table;
show_playlist("s");
// go ahead and play the first one, unless it is an artist search.
if (a_indexes.length>0 && g_artist_search=="")
{
change_sound(a_indexes[0]);
}
g_artist_search="";
a_indexes=null;
a_scores=null;
}
function search_item_common_string(n)
{
var s_song="";
var s_line="";
var s_btn="";
s_song=a_songs[n];
var s_show=remove_ext(s_song);
var s_on_click_cmd="";
var s_add="";
s_on_click_cmd="do_link_click("+n+", -1);";
s_show=convert_to_song_and_artist(s_show);
s_show="<span onclick=\"" + s_on_click_cmd + "\" onmouseover=\"this.style.backgroundColor=this.style.borderColor;\"; onmouseout=\"this.style.backgroundColor='transparent'\"; class='lnkhovr' style='background-color:transparent'>" + s_show + "</span>";
s_add="<button onClick=\"add_song_to_playlist(" + n + ");\"> + </button>"
s_score_str=""; // hide it now.
s_btn="<button onClick=\"" + s_on_click_cmd + "\">►</button>";
s_link="<a class=play href=\"" + s_song + "\">▼</a>";
s_line= s_add + s_btn + s_link + "@" + s_show;
return s_line;
}
function search_item_string(n)
{
var s_tmp=search_item_common_string(n);
s_tmp=s_tmp.replace("@", " ");
s_line="<nobr>" + s_tmp + "</nobr>";
return s_line;
}
function search_item_table_row(n)
{
var s_tmp=search_item_common_string(n);
s_tmp=s_tmp.replace("@", "</td><td style='border-top:solid black 1px' width=90%>");
s_line="<tr valign=top><td><nobr>"+ s_tmp + "</td></tr>";
return s_line;
}
// show the results of the search.
function draw_search_table()
{
var n_max_result=200;
var s_result="";
var s_song="";
var s_line="";
var s_btn="";
var i=0;
n_max_result=a_indexes.length;
if (n_max_result>200) n_max_result=200;
s_result="<table><th colspan=3 class=lnkhovr>Search results</th>";
for (i=0;i<n_max_result;i++)
{
s_line=search_item_table_row(a_indexes[i]);
s_result+=s_line;
}
s_result+="</table>";
return s_result;
}
function do_link_click(n, n_playlist)
{
if (g_busy_searching==false && g_busy_sorting==false)
{
exit_playlist();
g_user_choice=true;
g_user_play=true;
m_play_list_ptr=n_playlist;
if (m_play_list_ptr>=0)
{
highlight_playlist_item(m_play_list_ptr);
}
change_sound(n);
}
}
function highlight_playlist_item(n)
{
var this_elem="spnplst" + n;
var e=document.getElementById(this_elem);
var ep;
if (m_prev_elem!="")
{
ep=document.getElementById(m_prev_elem);
try
{ep.style.backgroundColor="transparent";}
catch(err) { }
}
m_prev_elem=this_elem;
try
{e.style.backgroundColor=e.style.borderColor;}
catch(err) { }
}
function do_artist_search(s)
{
g_artist_search=s;
g_artist_search=replaceAll(g_artist_search," ","_");
var ed=document.getElementById("songsrch");
ed.value=s;
if (g_busy_searching==false && g_busy_sorting==false)
init_new_search();
}
function do_search_button_click()
{
// Either do the search or cancel it.
g_repeat_search=false;
if (g_busy_searching==false && g_busy_sorting==false)
init_new_search();
else
g_cancel_search=true;
}
function remove_duplicate_words(a)
{
var i=0;;
var j=0;
for (i=0;i<a.length-1;i++)
{
for (j=i+1;j<a.length;j++)
{
if (a[i]==a[j]) a[j]="";
}
}
var b=new Array();
for (i=0;i<a.length;i++)
{
if (a[i]!="") b.push(a[i]);
}
return b;
}
// Should also do a comparison just to see how many raw letters match.
// Works, but it is really slow !
// Not used anymore - way too slow.
function compare_word_letters(s_host,s_para)
{
var i=0;
var r=0;
var c="";
for (i=0;i<s_para.length;i++)
{
c=s_para.charAt(i);
if (is_upper_alpha_num(c))
if (s_host.indexOf(c)>=0) r++;
}
return r;
}
function search_score(s_host, s_para)
{
if (s_para=="") return 0;
var n_score=0;
var n_words_matched=0;
if (s_host==s_para) n_score+=10000;
if (s_host.indexOf(s_para)>=0) n_score+=2000; // exact match
s_hw=s_host.split(" ");
s_pw=s_para.split(" ");
s_hw=remove_duplicate_words(s_hw);
s_pw=remove_duplicate_words(s_pw);
var i=0,j=0;
for (i=0;i<s_hw.length;i++)
{
for (j=0;j<s_pw.length;j++)
{
if (s_hw[i]==s_pw[j])
{
n_words_matched++;
n_score+=100;
}
}
}
// We also want it to score higher for words in the same order.
var s_word_pair="";
for (j=0;j<s_pw.length-1;j++)
{
s_word_pair=s_pw[j]+" "+s_pw[j+1];
if (s_host.indexOf(s_word_pair)>=0) n_score+=2037;
}
if (n_words_matched==s_pw.length) n_score+=1000;
return n_score;
}
function show_event(evt)
{
if (evt.keyCode==13) init_new_search();
}
/**********************
* *
* MEDIA CONTROLS *
* *
***********************/
function change_sound(n)
{
g_enable=false;
var s="";
var s_title="";
var s_file="";
var r=0;
var b_explicit=false;
r=Math.random()*a_songs.length;
r=parseInt(r);
var e=document.getElementById("chgsnd");
if (n>=0)
{
r=n;
}
if (g_sequential)
{
g_current_song++;
if (g_current_song>=a_songs.length) g_current_song=0;
r=g_current_song;
}
s=a_songs[r];
s_file=s;
// Remove the extension.
s=remove_ext(s);
s_title=convert_to_song_and_artist(s);
s=convert_string(s);
if (string_ends_in(s,"EXPLICIT")) b_explicit=true;
if (s.indexOf("BITCH")>=0) b_explicit=true;
if (s.indexOf("RAPE")>=0) b_explicit=true;
if (s.indexOf("FUCK")>=0) b_explicit=true;
if (s.indexOf("JESUS")>=0) b_explicit=true;
if (s.indexOf("DAMN")>=0) b_explicit=true;
if (s.indexOf("DEVIL")>=0) b_explicit=true;
if (s.indexOf("DEMON")>=0) b_explicit=true;
if (s.indexOf("SATAN")>=0) b_explicit=true;
if (s.indexOf("HELL")>=0) b_explicit=true;
if (s.indexOf("GOD")>=0) b_explicit=true;
if (b_explicit==true)
{
if (g_user_choice==true)
{
var n=confirm("This song is explicit.\nPlay it anyway ?","Confirm","Confirm");
if (n==false) return;
}
else
{
return;
}
}
g_previous_song=g_current_song;
g_current_song=r;
g_user_choice=false;
var em=document.getElementById("embplay");
em.URL=s_file;
em.AutoStart=false;
smart_stop_player();
m_volume_at_begin=volume_get();
g_seconds_not_playing=0;
g_second_delay=0;
var en=document.getElementById("txtnow");
s_title=search_item_table_row(r);
en.innerHTML="<table>"+s_title+"</table>";
update_recently_played(r);
var ep=document.getElementById("txtprev");
s="";
if (g_previous_song>=0)
{
ep.innerHTML="<table>"+search_item_table_row(g_previous_song)+"</table>";
var ef=document.getElementById("fdbprev");
ef.style.display="inline";
}
}
function update_recently_played(r)
{
var ef=document.getElementById("txtrecent");
var i=0;
var s="";
var g="";
var sh="<table><th colspan=3 class=lnkhovr>Recently played</th>";
var recent_list_len=21;
if (a_recent.length>=recent_list_len)
{
for (i=0;i<a_recent.length-1;i++)
{
a_recent[i]=a_recent[i+1];
}
a_recent.pop();
}
a_recent.push(r);
s=sh;
for (i=a_recent.length-2;i>=0;i--)
{
g=search_item_table_row(a_recent[i]);
g=g.replace("<td", "<td align=right>"+(a_recent.length-i-1)+"<td");
s+=g+"\n";
}
s+="</table>";
ef.innerHTML=s;
}
function song_index_to_display_str(n)
{
var s="";
s=a_songs[n];
s=remove_ext(s);
s=convert_to_song_and_artist(s);
return s;
}
function play_state_str(s)
{
if (s=="3") s="Playing";
if (s=="2") s="Paused";
if (s=="1") s="Stopped";
if (s=="0") s="Loading";
if (s=="10") s="Loading";
if (s=="9") s="Loading";
return s;
}
function smart_play_state()
{
var s="";
try
{
var em=document.getElementById("embplay");
s=""+em.playstate;
}
catch(err)
{
s="Waiting";
}
return s;
}
function dec_timer()
{
if (b_making_word_list==true)
{
regenerate_word_list();
}
if (g_busy_searching==false && g_busy_sorting==false)
{
var es=document.getElementById("txtstat");
var s="";
s=smart_play_state();
es.innerHTML=play_state_str(s);
if (s=="10")
{
if (g_second_delay<10)
{
if (g_second_delay<=4)
{
move_current_position(0);
}
g_second_delay++;
if (g_second_delay==4)
{
var em=document.getElementById("embplay");
em.controls.play();
set_mute(); // Make sure it doesn't come off mute when it switches songs.
}
}
}
if (s!="3" && s!="2" && g_enable==true)
{
play_next_sound();
}
if (s=="3")
{
g_enable=true;
show_current_position();
}
else
{
// In case it hits an audio file that is really short.
if (g_user_play==true)
{
g_seconds_not_playing++;
if (g_seconds_not_playing>8)
play_next_sound();
}
}
} // if busy && busy
Timer=setTimeout("dec_timer()", 300);
}
function play_next_sound()
{
if (m_play_list_ptr>=0)
{
// play the next song on the playlist.
m_play_list_ptr++;
if (m_play_list_ptr<a_playlist.length)
{
highlight_playlist_item(m_play_list_ptr);
change_sound(a_playlist[m_play_list_ptr]);
}
else
{
exit_playlist();
}
}
if (m_play_list_ptr<=-1)
change_sound(-1); // play a random sound.
}
function stop_sound()
{
g_enable=false;
g_user_play=false;
var em=document.getElementById("embplay");
try { em.controls.stop(); }
catch(err) { }
}
function smart_stop_player()
{
var em=document.getElementById("embplay");
try { em.controls.stop(); }
catch(err) { }
}
function play_sound()
{
g_enable=false;
g_user_play=true;
var em=document.getElementById("embplay");
em.controls.play();
g_enable=true;
}
function pause_sound()
{
g_enable=false;
g_user_play=false;
var em=document.getElementById("embplay");
em.controls.pause();
}
function volume_soft()
{
var em=document.getElementById("embplay");
var n=parseInt(em.Volume);
n-=2000;
if (n>=0) n=0;
em.Volume=n;
var et=document.getElementById("songsrch");
et.value=n;
}
function volume_get()
{
var n=0;
try {n=parseInt(em.Settings.volume);} catch(err) { return 0; }
return n;
}
function volume_set(i_dir)
{
var em=document.getElementById("embplay");
var n=0;
try {n=parseInt(em.Settings.volume);} catch(err) { return; }
if (i_dir<0)
{
n-=5;
}
if (i_dir>0)
{
n+=5;
}
if (n<0) n=0;
if (n>100) n=100;
em.Settings.volume=n;
var ev=document.getElementById("volvalue");
var sv=volume_value(n);
ev.innerHTML=""+n+"%";
}
function volume_up()
{
var em=document.getElementById("embplay");
var n=parseInt(em.Volume);
n+=300;
em.Volume=n;
}
function volume_value(n)
{
n/=5;
n=parseInt(n);
return n;
}
function show_feedback(n)
{
var e=document.getElementById("feedback");
e.style.display="block";
var ed=document.getElementById("txtsrch");
ed.innerHTML="";
var i=0;
for (i=0;i<document.frmfdbk.btnfdbk.length;i++)
{
document.frmfdbk.btnfdbk[i].checked=false;
}
if (n==1)
{
g_feedback_song=g_current_song;
}
if (n==-1)
{
g_feedback_song=g_previous_song;
}
var ef=document.getElementById("fdbksong");
ef.innerHTML=song_index_to_display_str(g_feedback_song);
}
function hide_feedback()
{
var e=document.getElementById("feedback");
e.style.display="none";
}
function cancel_feedback()
{
hide_feedback();
}
function submit_feedback()
{
var i=0;
var s_code="";
for (i=0;i<document.frmfdbk.btnfdbk.length;i++)
{
if (document.frmfdbk.btnfdbk[i].checked)
{
s_code=document.frmfdbk.btnfdbk[i].value;
}
}
hide_feedback();
if (s_code!="")
{
var s_text="";
var e_txt=document.getElementById("txtword");
s_text=e_txt.value;
var s_file=a_songs[g_feedback_song];
s_file=remove_ext(s_file);
s_text+=s_file+s_code+";";
e_txt.value=s_text;
save_feedback_values();
}
}
function feedback_code_str(c)
{
var s="";
switch(c)
{
case "x":s="Explicit";break;
case "p":s="Poor Quality";break;
case "i":s="Incomplete";break;
case "l":s="Loud";break;
case "s":s="Soft";break;
case "e":s="Spike at end";break;
}
return s;
}
function parse_feedback_data()
{
var e_txt=document.getElementById("txtword");
var s=e_txt.value;
var sline="";
var scode="";
var a=s.split(";")
var i=0;
var s_result="";
for (i=0;i<a.length;i++)
{
sline=a[i];
if (sline!="")
{
scode=last_char_str(sline);
sline=trim_a_char_from_right(sline);
s_result+=sline + " : " + feedback_code_str(scode) + "<br>\n";
}
}
var wnd=window.open("","_blank");
wnd.document.write(s_result);
wnd.document.close();
}
function hide_feedback_data()
{
var e=document.getElementById("adminfunc");
e.style.display="none";
}
function show_feedback_data()
{
var e=document.getElementById("adminfunc");
e.style.display="block";
}
function do_all_init()
{
dec_timer();
load_feedback_values();
load_playlist();
volume_set(0);
//regenerate_word_list();
var e=document.getElementById("apptitle");
e.innerHTML=g_app_title;
return 0;
}
function do_decide_display(s)
{
return;
var e=document.getElementById("frmlyr");
var ed=document.getElementById("divlyr");
var s_disp="";
if (s=="complete")
{
var x;
var b_show=false;
try {
x=e.contentWindow.document;
b_show=true;
}
catch(err) { }
s_disp=b_show ? "block" : "none";
if (b_show) show_playlist("l");
e.style.display=s_disp;
}
}
function toggle_mute()
{
m_muted=!m_muted;
set_mute();
}
function set_mute()
{
var e=document.getElementById("btnmute");
var ep=document.getElementById("embplay");
ep.Settings.mute=m_muted;
var s_txt=m_muted?"unmute":"mute";
e.value=s_txt;
}
function display_block_checked_str(c)
{
return c ? "inline" : "none";
}
function show_current_position()
{
var ep=document.getElementById("embplay");
var t=ep.Controls.currentPosition;
t=parseInt(t);
t=int_to_min_sec(t);
var et=document.getElementById("timeelap");
et.innerHTML=t;
}
function isNumber(n)
{
return !isNaN(parseFloat(n)) && isFinite(n);
}
function set_current_position()
{
var ep=document.getElementById("embplay");
var et=document.getElementById("txtsetpos");
if (isNumber(et.value))
{
ep.Controls.currentPosition=et.value;
}
}
function move_current_position(t)
{
var ep=document.getElementById("embplay");
var n=ep.Controls.currentPosition;
n+=t;
if (n<0)n=0;
ep.Controls.currentPosition=n;
}
function show_playlist(s)
{
var cs=document.getElementById("chksrch");
var cp=document.getElementById("chklist");
var cl=document.getElementById("chklyrk");
if (s=="s") cs.checked=true;
if (s=="p") cp.checked=true;
if (s=="l") cl.checked=true;
var es=document.getElementById("txtsrch");
var ep=document.getElementById("txtplay");
var sc=document.getElementById("colsrch");
var pc=document.getElementById("collist");
var sw=100;
var pw=100;
if (!cs.checked) sw=0;
if (!cp.checked) pw=0;
if (cs.checked && cp.checked) {pw=50;sw=50;}
sc.style.width=""+sw+"%";
pc.style.width=""+pw+"%";
es.style.display=display_block_checked_str(cs.checked);
ep.style.display=display_block_checked_str(cp.checked);
}
</script>
</head>
<body onload="do_all_init();">
<center>
<span id="apptitle"></span>
<table width=60% border=0><tr><td align=left>
<table class=currplay border=0 width=100%>
<tr><td></td><td colspan=2>
<table border=0>
<tr><td width=90%>
<b id="txtstat"></b> <span id="timeelap"></span>
</td><td width=5%><nobr>
<input type="text" size="4" id="txtsetpos" class="srch" style="width:32pt;">
<button onclick="set_current_position();" >set</button>
<button onclick="move_current_position(-10);" ondblclick="move_current_position(-10);" ><<</button>
<button onclick="move_current_position(10);" ondblclick="move_current_position(10);" >>></button>
</nobr>
</td></tr></table>
</td></tr>
<tr><td class=songtitle>
<nobr>
<button onClick="show_feedback(1);" class="fdbk">x</button>
</nobr>
</td><td class=songtitle width=95%>
<b id="txtnow"></b>
<td valign=top>
<input type="button" id="btncurr" onClick="do_youtube_current();" value="Youtube" class="btn">
</td>
</tr></table>
<table class=currplay><tr><td class=songtitle>
<nobr>
<button id="fdbprev" onClick="show_feedback(-1);" style="display:none" class="fdbk">x</button>
</nobr>
</td><td class=songtitle width=95%>
<span id="txtprev"></span>
</td></tr></table>
<hr>
<p id="chgsnd" style="display:none;">
<OBJECT id="embplay" width="320" height="240"
style="position:absolute; left:0;top:0;"
CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
type="application/x-oleobject">
<PARAM NAME="URL" VALUE="">
<PARAM NAME="SendPlayStateChangeEvents" VALUE="True">
<PARAM NAME="AutoStart" VALUE="True">
<PARAM name="uiMode" value="none">
<PARAM name="PlayCount" value="1">
</OBJECT>
</p>
<button onClick="g_user_play=true;exit_playlist();change_sound(-1);">Random song</button>
<button onClick="stop_sound();" class=ctrl>Stop</button>
<button onClick="pause_sound();" class=ctrl>Pause</button>
<button onClick="play_sound();" class=ctrl>Resume</button>
<p id="txttimer"></p>
<input id="songsrch" value="search" title="Enter your search here" onkeypress="show_event(event);" class="srch">
<input type="button" id="btnsrch" onClick="do_search_button_click();" value="Search" class="btn">
<input type="button" id="btnyou" onClick="do_youtube_search_bar();" value="Youtube" class="btn">
<font color=red><small><span id="spnprog" style="width:0;display:block;background-color:transparent" class="prgbar"> </span></small></font>
Volume :
<button onClick="volume_set(-1);" onDblClick="volume_set(-1);"> < </button><b id="volvalue" style="width:48pt;text-align:center;" class=volctrl></b>
<button onClick="volume_set(1);" onDblClick="volume_set(1);"> > </button>
<input type="button" id="btnmute" onClick="toggle_mute();" onDblClick="toggle_mute();" value="mute" class=btn>
<br />
<div id="feedback" class="fdbk" style="display:none;padding:8pt;">
<b id="fdbksong"></b>
<form name="frmfdbk">
<input type="radio" value="x" name="btnfdbk">offensive content<br />
<input type="radio" value="p" name="btnfdbk">poor audio quality<br />
<input type="radio" value="i" name="btnfdbk">incomplete<br />
<input type="radio" value="l" name="btnfdbk">too loud<br />
<input type="radio" value="s" name="btnfdbk">not loud enough<br />
<input type="radio" value="e" name="btnfdbk">spike at end<br />
<button onClick="submit_feedback();" style="width:64pt;">Submit</button>
<button onClick="cancel_feedback();" style="width:64pt;">Cancel</button>
<br />
</div>
<br>
<fieldset style="width:172pt">
<input type="checkbox" value="s" id="chksrch" onClick="show_playlist('');">search results<br />
<input type="checkbox" value="p" id="chklist" onClick="show_playlist('');">playlist<br />
</fieldset>
</form>
<table width=100%><tr><td id="colsrch" valign=top>
<span id="txtsrch" style="display:none;"></span>
</td><td id="collist" valign=top>
<span id="txtplay" style="display:none"></span>
</td></tr></table>
<div id="adminfunc" style="display:none">
<textarea id="txtword" rows=10 cols=40></textarea>
<br />
<button onClick="parse_feedback_data();" style="width:64pt;">show</button>
<button onClick="hide_feedback_data();" style="width:64pt;">hide</button>
<br/>
<button onClick="regenerate_master_playlist();" style="width:124pt;">regen playlist</button>
<br/>
<button onClick="regenerate_word_list();" style="width:124pt;">regen word list</button>
</div>
<p id="txtrecent"></p>
</td></tr></table>
</center>
<script>
function regenerate_word_list()
{
var s="";
var i=0,j=0;
var k=0;
if (b_making_word_list==true)
{
b_making_word_list=false;
for (i=n_word_list_ptr;i<a_caps.length;i++)
{
s=a_caps[i];
if (string_ends_in(s," MP3"))
s=trim_chars_from_right(s,4);
var w=s.split(" ");
for (j=0;j<w.length;j++)
{
if (is_valid_word(w[j])==true) smart_add_word(w[j]);
}
k++;
if (k>30)
{
k=0;
b_making_word_list=true;
break;
}
}
n_word_list_ptr=i;
var e=document.getElementById("songsrch");
e.value=""+n_word_list_ptr;
}
else
{
n_word_list_ptr=0;
b_making_word_list=true;
a_words=new Array();
}
if (b_making_word_list==true)
{
return;
}
var r="";
for (i=0;i<a_words.length;i++)
{
r+="a_words.push(\""+a_words[i]+"\");\n";
}
alert(a_words.length);
b_making_word_list=false;
document.write(r);
}
function smart_add_word(s)
{
var al=a_words.length;
var i=0;
var b_exists=false;
for (i=0;i<al;i++)
{
if (a_words[i]==s) b_exists=true;
}
if (b_exists==false) a_words.push(s);
}
function word_exists(s)
{
var r=false;
for (i=0;i<a_words.length;i++)
{
if (a_words[i]==s)
{
r=true;
break;
}
}
return r;
}
function check_search_words(s)
{
var e=document.getElementById("spnprog");
e.style.display="none";
var u=s.toUpperCase();
var w=u.split(" ");
var i=0;
var r="";
for (i=0;i<w.length;i++)
{
if (!word_exists(w[i]))
{
if (r!="") r+=",";
r+=w[i].toLowerCase();
}
}
if (r=="") r=" ";
e.innerHTML=r;
}
function do_youtube_search_bar()
{
var e=document.getElementById("songsrch");
var s=e.value;
do_youtube(s);
}
function do_youtube(s)
{
var s_url="";
s=replaceAll(s,"/"," ");
s=convert_input_string(s);
s=replaceAll(s," ","+");
s=s.replace("++","+");
s=s.toLowerCase();
s_url="http://www.youtube.com/results?search_query="+s;
var newwindow=window.open(s_url,'name','resizable=1,scrollbars=1');
if (window.focus) {newwindow.focus()}
}
function do_youtube_current()
{
var e=document.getElementById("txtnow");
var s=""+e.innerText;
do_youtube(s);
}
</script>
</body>
</html>
Diff to Previous Revision
--- revision 1 2013-05-10 13:59:33
+++ revision 2 2013-05-18 18:18:15
@@ -280,18 +280,42 @@
var n_first_cap=-1;
var i=0;
var c="";
- for (i=1;i<s.length;i++)
- {
- c=s.charAt(i);
- if (c>="A" && c<="Z")
- {
- if (n_cap==0) n_first_cap=i;
- n_cap++;
- }
- }
- if (n_cap==1 && n_first_cap>0) r=n_first_cap;
+ // Have to trick it for the double underscore.
+ if (s.indexOf("__")>0)
+ {
+ r=s.indexOf("__")+1;
+ }
+ else
+ {
+ for (i=1;i<s.length;i++)
+ {
+ c=s.charAt(i);
+ if (c=='.') break;
+ if (c>="A" && c<="Z")
+ {
+ if (n_cap==0) n_first_cap=i;
+ n_cap++;
+ }
+ }
+ if (n_cap==1 && n_first_cap>0) r=n_first_cap;
+ }
return r;
}
+
+function check_all_filenames()
+{
+ var i=0;
+ var h="";
+ for (i=0; i<a_songs.length; i++)
+ {
+ if (has_only_one_capital_letter(a_songs[i])<0)
+ h+=a_songs[i]+"<br>\n";
+ }
+ var wnd=window.open("","_blank");
+ wnd.document.write(h);
+ wnd.document.close();
+}
+
</script>
@@ -303,11 +327,11 @@
var a_caps=new Array();
var a_words=new Array();
var a_recent=new Array();
-var g_letter_search=false;
var a_playlist = new Array();
var m_play_list_ptr=-1;
var b_making_word_list=false;
var n_word_list_ptr=0;
+var g_artist_search="";
// Do all initialization.
@@ -370,7 +394,6 @@
var s_song="";
for (i=0;i<a_playlist.length;i++)
{
- //s_song=a_caps[a_playlist[i]];
s_song=a_songs[a_playlist[i]];
s_song=trim_chars_from_right(s_song,4);
s_song=convert_to_song_and_artist(s_song);
@@ -535,13 +558,17 @@
var lc="";
var sp=s.lastIndexOf("\\");
if (sp<=0) sp=0;
-
- for (i=sp;i<s.length;i++)
- {
- c=s.charAt(i);
+ var sc=s;
+ var s_artist="";
+
+ sc=s.replace("__","**"); // Trick it in case a group name starts with a number
+
+ for (i=sp;i<sc.length;i++)
+ {
+ c=sc.charAt(i);
if (c!="\'") // skip apost in can't, etc, so it is treated as one word.
{
- if (!((c>="A" && c<="Z") || (c>="0" && c<="9") || (c>="a" && c<="z")))
+ if (!((c>="A" && c<="Z") || (c>="0" && c<="9") || (c>="a" && c<="z") || (c=='*') ))
{
c=" ";
}
@@ -552,11 +579,16 @@
r=censored_str(r);
+ r=r.replace("**","__");
n_first_cap=has_only_one_capital_letter(r);
+ r=r.replace("__"," ");
if (n_first_cap>0)
+ {
// title / artist
- r="<b style='color:blue'>" + capitalize_str(r.substring(0,n_first_cap-1))+ "</b><br><b style='color:navy'>" + capitalize_str(r.substring(n_first_cap,r.length)) + "</b>";
+ s_artist=capitalize_str(r.substring(n_first_cap,r.length));
+ r="<b title='song' style='color:blue'>" + capitalize_str(r.substring(0,n_first_cap-1))+ "</b><br><b onclick=\"do_artist_search('" + s_artist + "');\" style='color:navy' " + " >" + s_artist + "</b>";
+ }
else
r="<b style='color:navy'>" + capitalize_str(r)+ "</b><br><b style='color:red'>Unknown artist</b>";
@@ -589,8 +621,7 @@
if (c!="\'") // skip apost in can't, etc, so it is treated as one word.
{
if (!is_upper_alpha_num(c)) c=" ";
- if (c!=" " || lc!=" ")
- r+=c;
+ if (c!=" " || lc!=" ") r+=c;
}
}
return r;
@@ -670,7 +701,6 @@
g_busy_searching=false;
g_busy_sorting=false;
g_cancel_search=false;
- g_letter_search=false;
do_search();
}
@@ -711,7 +741,6 @@
show_feedback_data();
return;
}
-
s=s.toLowerCase();
s_clean_str=censored_str(s);
@@ -745,7 +774,18 @@
{
for (i=g_srch_ptr;i<a_songs.length;i++)
{
- var n_score=search_score(a_caps[i],g_search_string,g_letter_search);
+ var n_score=0;
+ if (g_artist_search=="")
+ {
+ n_score=search_score(a_caps[i],g_search_string);
+ }
+ else
+ {
+ var ip=0;
+ ip=a_songs[i].indexOf(g_artist_search);
+ if (ip>0) n_score=1;
+ }
+
if (n_score>0)
{
a_indexes.push(i);
@@ -765,7 +805,6 @@
var einp=document.getElementById("songsrch");
epr.style.backgroundColor=einp.style.borderColor;
-
f_prog=parseInt(f_prog);
epr.style.width=f_prog+"pt";
@@ -837,12 +876,13 @@
em.innerHTML=s_table;
show_playlist("s");
- // go ahead and play the first one.
- if (a_indexes.length>0)
+ // go ahead and play the first one, unless it is an artist search.
+ if (a_indexes.length>0 && g_artist_search=="")
{
change_sound(a_indexes[0]);
}
+ g_artist_search="";
a_indexes=null;
a_scores=null;
@@ -859,7 +899,7 @@
var s_add="";
s_on_click_cmd="do_link_click("+n+", -1);";
s_show=convert_to_song_and_artist(s_show);
- s_show="<span onclick=\"" + s_on_click_cmd + "\" onmouseover=\"this.style.backgroundColor=this.style.borderColor;\"; onmouseout=\"this.style.backgroundColor='transparent'\"; class='lnkhovr' style='background-color:transparent' title=\"" + s_show +"\">" + s_show + "</span>";
+ s_show="<span onclick=\"" + s_on_click_cmd + "\" onmouseover=\"this.style.backgroundColor=this.style.borderColor;\"; onmouseout=\"this.style.backgroundColor='transparent'\"; class='lnkhovr' style='background-color:transparent'>" + s_show + "</span>";
s_add="<button onClick=\"add_song_to_playlist(" + n + ");\"> + </button>"
s_score_str=""; // hide it now.
s_btn="<button onClick=\"" + s_on_click_cmd + "\">►</button>";
@@ -941,6 +981,17 @@
catch(err) { }
}
+
+function do_artist_search(s)
+{
+ g_artist_search=s;
+ g_artist_search=replaceAll(g_artist_search," ","_");
+ var ed=document.getElementById("songsrch");
+ ed.value=s;
+ if (g_busy_searching==false && g_busy_sorting==false)
+ init_new_search();
+}
+
function do_search_button_click()
{
// Either do the search or cancel it.
@@ -972,6 +1023,7 @@
// Should also do a comparison just to see how many raw letters match.
// Works, but it is really slow !
+// Not used anymore - way too slow.
function compare_word_letters(s_host,s_para)
{
var i=0;
@@ -987,7 +1039,7 @@
return r;
}
-function search_score(s_host, s_para, b_letter)
+function search_score(s_host, s_para)
{
if (s_para=="") return 0;
var n_score=0;
@@ -1020,11 +1072,6 @@
}
if (n_words_matched==s_pw.length) n_score+=1000;
-
- if (b_letter)
- {
- n_score+=compare_word_letters(s_host,s_para);
- }
return n_score;
}
@@ -1132,7 +1179,7 @@
var g="";
var sh="<table><th colspan=3 class=lnkhovr>Recently played</th>";
- var recent_list_len=20;
+ var recent_list_len=21;
if (a_recent.length>=recent_list_len)
{
@@ -1664,7 +1711,7 @@
<button onClick="pause_sound();" class=ctrl>Pause</button>
<button onClick="play_sound();" class=ctrl>Resume</button>
<p id="txttimer"></p>
- <input id="songsrch" value="search" onkeypress="show_event(event);" class="srch">
+ <input id="songsrch" value="search" title="Enter your search here" onkeypress="show_event(event);" class="srch">
<input type="button" id="btnsrch" onClick="do_search_button_click();" value="Search" class="btn">
<input type="button" id="btnyou" onClick="do_youtube_search_bar();" value="Youtube" class="btn">
@@ -1846,7 +1893,6 @@
do_youtube(s);
}
-
</script>
</body>
</html>