<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://karaoke.kjams.com/w/index.php?action=history&amp;feed=atom&amp;title=Server%2FCode%2Fmain.js</id>
	<title>Server/Code/main.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://karaoke.kjams.com/w/index.php?action=history&amp;feed=atom&amp;title=Server%2FCode%2Fmain.js"/>
	<link rel="alternate" type="text/html" href="https://karaoke.kjams.com/w/index.php?title=Server/Code/main.js&amp;action=history"/>
	<updated>2026-06-09T14:48:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://karaoke.kjams.com/w/index.php?title=Server/Code/main.js&amp;diff=7977&amp;oldid=prev</id>
		<title>Deusexmachina at 02:23, 4 September 2012</title>
		<link rel="alternate" type="text/html" href="https://karaoke.kjams.com/w/index.php?title=Server/Code/main.js&amp;diff=7977&amp;oldid=prev"/>
		<updated>2012-09-04T02:23:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://karaoke.kjams.com/w/index.php?title=Server/Code/main.js&amp;amp;diff=7977&amp;amp;oldid=5850&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Deusexmachina</name></author>
	</entry>
	<entry>
		<id>https://karaoke.kjams.com/w/index.php?title=Server/Code/main.js&amp;diff=5850&amp;oldid=prev</id>
		<title>Dave: Created page with &#039;&lt;pre&gt; /*   kJams Project - main.js    Description: Main screen functionality.    (c) 2007 kJams and David M. Cotter   */  var timer = null; var allowBackspace = false; var inSear…&#039;</title>
		<link rel="alternate" type="text/html" href="https://karaoke.kjams.com/w/index.php?title=Server/Code/main.js&amp;diff=5850&amp;oldid=prev"/>
		<updated>2010-05-18T18:11:10Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;&amp;lt;pre&amp;gt; &lt;span class=&quot;autocomment&quot;&gt;kJams Project - main.js    Description: Main screen functionality.    (c) 2007 kJams and David M. Cotter: &lt;/span&gt;  var timer = null; var allowBackspace = false; var inSear…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/*   kJams Project - main.js&lt;br /&gt;
   Description: Main screen functionality.&lt;br /&gt;
   (c) 2007 kJams and David M. Cotter   */&lt;br /&gt;
&lt;br /&gt;
var timer = null;&lt;br /&gt;
var allowBackspace = false;&lt;br /&gt;
var inSearch = {&lt;br /&gt;
   on: function() {allowBackspace = true;},&lt;br /&gt;
   off: function() {allowBackspace = false;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_populatePlaylists() {&lt;br /&gt;
   //Remove anything that was already there&lt;br /&gt;
   divObj = document.getElementById(&amp;quot;playlists&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
   for (var i = 0; i &amp;lt; divObj.childNodes.length; i++) {&lt;br /&gt;
	  divObj.removeChild(divObj.childNodes[i]);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   list = new KJDropList();&lt;br /&gt;
   list.create(divObj);&lt;br /&gt;
   playlistsList = list;&lt;br /&gt;
   &lt;br /&gt;
   getPlaylists(url_playlists, m_playlistsLoaded);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_playlistsLoaded(list) {&lt;br /&gt;
   listCtrl = document.getElementById(&amp;quot;playlists&amp;quot;).childNodes[0].parent;&lt;br /&gt;
   &lt;br /&gt;
   for (var i = 0; i &amp;lt; list.length; i++) {&lt;br /&gt;
	  if ((list[i][&amp;#039;name&amp;#039;] == &amp;quot;Library&amp;quot;) || (list[i][&amp;#039;name&amp;#039;] == &amp;quot;History&amp;quot;))&lt;br /&gt;
		 dropTarget = false;&lt;br /&gt;
	  else&lt;br /&gt;
		 dropTarget = true;&lt;br /&gt;
	  &lt;br /&gt;
	  listCtrl.addItem(&amp;quot;p&amp;quot; + list[i][&amp;#039;id&amp;#039;], list[i][&amp;#039;name&amp;#039;], dropTarget, null, false);&lt;br /&gt;
	  &lt;br /&gt;
	  //Library and History items are not rearrangeable&lt;br /&gt;
	  if ((list[i][&amp;#039;name&amp;#039;] == &amp;quot;Library&amp;quot;) || (list[i][&amp;#039;name&amp;#039;] == &amp;quot;History&amp;quot;))&lt;br /&gt;
		 document.getElementById(&amp;quot;p&amp;quot; + list[i][&amp;#039;id&amp;#039;]).rearrange = false;&lt;br /&gt;
	  else&lt;br /&gt;
		 document.getElementById(&amp;quot;p&amp;quot; + list[i][&amp;#039;id&amp;#039;]).rearrange = true;&lt;br /&gt;
	  &lt;br /&gt;
	  //Keep track of ids for &amp;#039;Tonight&amp;#039; and &amp;#039;Favorites&amp;#039;&lt;br /&gt;
	  if (list[i][&amp;#039;name&amp;#039;] == &amp;quot;Tonight&amp;quot;) {&lt;br /&gt;
		 pTonightID = list[i][&amp;#039;id&amp;#039;];&lt;br /&gt;
	  }&lt;br /&gt;
	  &lt;br /&gt;
	  if (list[i][&amp;#039;name&amp;#039;] == &amp;quot;Favorites&amp;quot;) {&lt;br /&gt;
		 pFavoritesID = list[i][&amp;#039;id&amp;#039;];&lt;br /&gt;
	  }&lt;br /&gt;
	  &lt;br /&gt;
	  //Store the playlist name in the DOM object&lt;br /&gt;
	  document.getElementById(&amp;quot;p&amp;quot; + list[i][&amp;#039;id&amp;#039;]).name = list[i][&amp;#039;name&amp;#039;];&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   listCtrl.color();&lt;br /&gt;
   listCtrl.evtClick = m_populateSongs;&lt;br /&gt;
   listCtrl.evtDropInto = m_playlistDrop;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_populateSongs(playlist) {&lt;br /&gt;
   playlist = playlist.substring(1);&lt;br /&gt;
   &lt;br /&gt;
   //Hide&lt;br /&gt;
   if (songsList) {&lt;br /&gt;
	  songsList.hide();&lt;br /&gt;
	  &lt;br /&gt;
	  if (songsList.playlist != &amp;quot;1&amp;quot;) {&lt;br /&gt;
		 songsList.destroy();&lt;br /&gt;
	  }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   //Hide &amp;quot;No Playlist&amp;quot; message, show waiting message&lt;br /&gt;
   document.getElementById(&amp;quot;message&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
   document.getElementById(&amp;quot;msg_dosearch&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
   document.getElementById(&amp;quot;msg_error&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
   document.getElementById(&amp;quot;waiting&amp;quot;).style.display = &amp;#039;&amp;#039;;&lt;br /&gt;
   &lt;br /&gt;
   //If the list is already loaded, simply display it&lt;br /&gt;
   if ((playlist == &amp;quot;1&amp;quot;) &amp;amp;&amp;amp; (songsLists[playlist] != undefined)) {&lt;br /&gt;
	  songsList = songsLists[playlist];&lt;br /&gt;
	  songsList.show();&lt;br /&gt;
	  document.getElementById(&amp;quot;waiting&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   //If it&amp;#039;s the library, request that user do a search first&lt;br /&gt;
   else if (playlist == &amp;quot;1&amp;quot;) {&lt;br /&gt;
	  document.getElementById(&amp;quot;waiting&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
	  document.getElementById(&amp;quot;msg_dosearch&amp;quot;).style.display = &amp;#039;&amp;#039;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   else {&lt;br /&gt;
	  //Playlist DOM object&lt;br /&gt;
	  playlistObj = document.getElementById(&amp;quot;p&amp;quot; + playlist);&lt;br /&gt;
	  &lt;br /&gt;
	  //Which columns are needed?&lt;br /&gt;
	  var columns = Array(&amp;quot;#&amp;quot;, &amp;quot;Song Name&amp;quot;, &amp;quot;Artist&amp;quot;, &amp;quot;Album&amp;quot;);&lt;br /&gt;
	  &lt;br /&gt;
	  if (playlistObj.name == &amp;quot;Tonight&amp;quot;) {&lt;br /&gt;
		 columns.push(&amp;quot;Pitch&amp;quot;);&lt;br /&gt;
		 columns.push(&amp;quot;Add to&amp;quot;);&lt;br /&gt;
	  }&lt;br /&gt;
	  &lt;br /&gt;
	  else if (playlistObj.name == &amp;quot;Favorites&amp;quot;) {&lt;br /&gt;
		 columns.push(&amp;quot;Add to&amp;quot;);&lt;br /&gt;
	  }&lt;br /&gt;
	  &lt;br /&gt;
	  else {&lt;br /&gt;
		 columns.push(&amp;quot;Add to&amp;quot;);&lt;br /&gt;
		 columns.push(&amp;quot;Add to&amp;quot;);&lt;br /&gt;
	  }&lt;br /&gt;
	  &lt;br /&gt;
	  songsList = new KJList();&lt;br /&gt;
	  songsList.rearrange = playlistObj.rearrange;&lt;br /&gt;
	  songsList.playlist = playlist;&lt;br /&gt;
	  songsList.playlistName = playlistObj.name;&lt;br /&gt;
	  songsList.create(document.getElementById(&amp;quot;songs&amp;quot;));&lt;br /&gt;
	  songsList.setColumns(columns, 0);&lt;br /&gt;
	  songsList.evtDrop = m_songRearrange;&lt;br /&gt;
	  songsLists[playlist] = songsList;&lt;br /&gt;
	  getSongs(url_songs, m_songsLoaded, &amp;quot;playlist=&amp;quot; + playlist);&lt;br /&gt;
	  &lt;br /&gt;
	  if (false) {&lt;br /&gt;
		 songsList.evtColClick = null;&lt;br /&gt;
	  }&lt;br /&gt;
	  else {&lt;br /&gt;
		 songsList.evtColClick = m_sortSongs;&lt;br /&gt;
	  }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   m_sessionCheckin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_songsLoaded(list) {&lt;br /&gt;
   //Hide waiting message&lt;br /&gt;
   document.getElementById(&amp;quot;waiting&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
   &lt;br /&gt;
   //Rearrangeable?&lt;br /&gt;
   if (songsList.rearrange)&lt;br /&gt;
	  var rearrange = true;&lt;br /&gt;
   else&lt;br /&gt;
	  var rearrange = false;&lt;br /&gt;
   &lt;br /&gt;
   for (var i = 0; i &amp;lt; list.length; i++) {&lt;br /&gt;
	  //Add to favorites&lt;br /&gt;
	  var favsButton = document.createElement(&amp;quot;INPUT&amp;quot;);&lt;br /&gt;
	  favsButton.type = &amp;quot;button&amp;quot;&lt;br /&gt;
	  favsButton.name = songsList.playlist + &amp;quot;-&amp;quot; + list[i][&amp;#039;itemId&amp;#039;];&lt;br /&gt;
	  favsButton.songId = list[i][&amp;#039;id&amp;#039;];&lt;br /&gt;
	  favsButton.value = &amp;quot;Favorites&amp;quot;;&lt;br /&gt;
	  favsButton.onmousedown = m_addToFavorites;&lt;br /&gt;
	  &lt;br /&gt;
	  //Add to Tonight&lt;br /&gt;
	  var tonightButton = document.createElement(&amp;quot;INPUT&amp;quot;);&lt;br /&gt;
	  tonightButton.type = &amp;quot;button&amp;quot;;&lt;br /&gt;
	  tonightButton.name = songsList.playlist + &amp;quot;-&amp;quot; + list[i][&amp;#039;itemId&amp;#039;];&lt;br /&gt;
	  tonightButton.songId = list[i][&amp;#039;id&amp;#039;];&lt;br /&gt;
	  tonightButton.value = &amp;quot;Tonight&amp;quot;;&lt;br /&gt;
	  tonightButton.onmousedown = m_addToTonight;&lt;br /&gt;
   &lt;br /&gt;
	  //Columns&lt;br /&gt;
	  var columns = Array(i, list[i][&amp;#039;name&amp;#039;], list[i][&amp;#039;artist&amp;#039;]);&lt;br /&gt;
	  &lt;br /&gt;
	  if (typeof(list[i][&amp;#039;album&amp;#039;]) == &amp;quot;object&amp;quot;) {&lt;br /&gt;
		 var dropDown = document.createElement(&amp;quot;SELECT&amp;quot;);&lt;br /&gt;
		 dropDown.name = list[i][&amp;#039;id&amp;#039;];&lt;br /&gt;
		 &lt;br /&gt;
		 for (var j = 0; j &amp;lt; list[i][&amp;#039;album&amp;#039;][&amp;#039;items&amp;#039;].length; j++) {&lt;br /&gt;
			var optionObj = document.createElement(&amp;quot;OPTION&amp;quot;);&lt;br /&gt;
			optionObj.value = list[i][&amp;#039;album&amp;#039;][&amp;#039;items&amp;#039;][j];&lt;br /&gt;
			optionObj.innerHTML = optionObj.value;&lt;br /&gt;
			&lt;br /&gt;
			if (list[i][&amp;#039;album&amp;#039;][&amp;#039;default&amp;#039;] == j) {&lt;br /&gt;
			   optionObj.selected = true;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			dropDown.appendChild(optionObj);&lt;br /&gt;
		 }&lt;br /&gt;
		 &lt;br /&gt;
		 columns.push(dropDown);&lt;br /&gt;
	  }&lt;br /&gt;
	  &lt;br /&gt;
	  else {&lt;br /&gt;
		 columns.push(list[i][&amp;#039;album&amp;#039;]);&lt;br /&gt;
	  }&lt;br /&gt;
	  &lt;br /&gt;
	  if (songsList.playlistName == &amp;quot;Tonight&amp;quot;) {&lt;br /&gt;
		 //Drop-down&lt;br /&gt;
		 var options = {&amp;quot;+6&amp;quot; : 6, &amp;quot;+5&amp;quot; : 5, &amp;quot;+4&amp;quot; : 4, &amp;quot;+3&amp;quot; : 3, &amp;quot;+2&amp;quot; : 2, &amp;quot;+1&amp;quot; : 1, &amp;quot;0&amp;quot; : 0, &amp;quot;-1&amp;quot; : -1, &amp;quot;-2&amp;quot; : -2, &amp;quot;-3&amp;quot; : -3, &amp;quot;-4&amp;quot; : -4, &amp;quot;-5&amp;quot; : -5, &amp;quot;-6&amp;quot; : -6}&lt;br /&gt;
		 var dropDown = document.createElement(&amp;quot;SELECT&amp;quot;);&lt;br /&gt;
		 dropDown.name = list[i][&amp;#039;itemId&amp;#039;];&lt;br /&gt;
		 dropDown.songId = list[i][&amp;#039;id&amp;#039;];&lt;br /&gt;
		 dropDown.onchange = m_changePitch;&lt;br /&gt;
		 for (option in options) {&lt;br /&gt;
			var optionObj = document.createElement(&amp;quot;OPTION&amp;quot;);&lt;br /&gt;
			optionObj.value = options[option];&lt;br /&gt;
			optionObj.innerHTML = option;&lt;br /&gt;
			&lt;br /&gt;
			if(list[i][&amp;#039;pitch&amp;#039;] == options[option]) {&lt;br /&gt;
			   optionObj.selected = true;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			dropDown.appendChild(optionObj);&lt;br /&gt;
		 }&lt;br /&gt;
		 &lt;br /&gt;
		 columns.push(dropDown);&lt;br /&gt;
		 columns.push(favsButton);&lt;br /&gt;
	  }&lt;br /&gt;
	  &lt;br /&gt;
	  else if (songsList.playlistName == &amp;quot;Favorites&amp;quot;) {&lt;br /&gt;
		 columns.push(tonightButton);&lt;br /&gt;
	  }&lt;br /&gt;
	  &lt;br /&gt;
	  else {&lt;br /&gt;
		 columns.push(tonightButton);&lt;br /&gt;
		 columns.push(favsButton);&lt;br /&gt;
	  }&lt;br /&gt;
   &lt;br /&gt;
	  index = songsList.addItem(songsList.playlist + &amp;quot;-&amp;quot; + list[i][&amp;#039;itemId&amp;#039;], columns, rearrange, null, false);&lt;br /&gt;
	  &lt;br /&gt;
	  document.getElementById(songsList.getByIndex(index)).songName   = list[i][&amp;#039;name&amp;#039;];&lt;br /&gt;
	  document.getElementById(songsList.getByIndex(index)).songId      = list[i][&amp;#039;id&amp;#039;];&lt;br /&gt;
	  document.getElementById(songsList.getByIndex(index)).piIx      = list[i][&amp;#039;itemId&amp;#039;];&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   songsList.color();&lt;br /&gt;
   &lt;br /&gt;
   if (songsList.playlistName != &amp;quot;Tonight&amp;quot; &amp;amp;&amp;amp; songsList.playlistName != &amp;quot;History&amp;quot;) {&lt;br /&gt;
	  songsList.evtColClick = m_sortSongs;&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
	  songsList.evtColClick = null;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_songRearrange(list, song, index, oldIndex) {&lt;br /&gt;
   sendData(url_rearrange, &amp;quot;playlist=&amp;quot; + list.playlist + &amp;quot;&amp;amp;index=&amp;quot; + index + &amp;quot;&amp;amp;oldIndex=&amp;quot; + oldIndex);&lt;br /&gt;
   m_sessionCheckin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_playlistDrop(song, index, nodeId) {&lt;br /&gt;
   playlists   = document.getElementById(&amp;quot;playlists&amp;quot;).childNodes[0].parent;&lt;br /&gt;
   item      = songsList.getByID(song);&lt;br /&gt;
   &lt;br /&gt;
   if (songsLists[playlists.getByIndex(index).substring(1)]) { songsLists[playlists.getByIndex(index).substring(1)].destroy(); }&lt;br /&gt;
   songsLists[playlists.getByIndex(index).substring(1)] = null;&lt;br /&gt;
   sendData(url_drop, &amp;quot;playlist=&amp;quot; + playlists.getByIndex(index).substring(1) + &amp;quot;&amp;amp;song=&amp;quot; + songsList.getByID(song).songId);&lt;br /&gt;
   &lt;br /&gt;
   m_setStatus(&amp;quot;Added \&amp;quot;&amp;quot; + item.songName + &amp;quot;\&amp;quot; to \&amp;quot;&amp;quot; + m_getPlaylistName(playlists.getByIndex(index)) + &amp;quot;\&amp;quot; ...&amp;quot;);&lt;br /&gt;
   m_sessionCheckin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_addToTonight(event) {&lt;br /&gt;
   playlists = document.getElementById(&amp;quot;playlists&amp;quot;).childNodes[0].parent;&lt;br /&gt;
   m_playlistDrop(event.target.name, playlists.getIndex(&amp;quot;p&amp;quot; + pTonightID), event.target.name);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_addToFavorites(event) {&lt;br /&gt;
   playlists = document.getElementById(&amp;quot;playlists&amp;quot;).childNodes[0].parent&lt;br /&gt;
   m_playlistDrop(event.target.name, playlists.getIndex(&amp;quot;p&amp;quot; + pFavoritesID), event.target.name);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_sortSongs(list, column) {&lt;br /&gt;
   list.removeAll();&lt;br /&gt;
   list.setPrimaryCol(column);&lt;br /&gt;
   document.getElementById(&amp;quot;waiting&amp;quot;).style.display = &amp;#039;&amp;#039;;&lt;br /&gt;
   &lt;br /&gt;
   if (document.getElementById(&amp;quot;searchfield&amp;quot;).value) {&lt;br /&gt;
	  search = &amp;quot;&amp;amp;search=&amp;quot; + document.getElementById(&amp;quot;searchfield&amp;quot;).value;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   getSongs(url_sort, m_songsLoaded, &amp;quot;playlist=&amp;quot; + list.playlist + &amp;quot;&amp;amp;orderby=&amp;quot; + column + search);&lt;br /&gt;
   m_sessionCheckin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_changePitch(event) {&lt;br /&gt;
   sendData(url_pitch, &amp;quot;song=&amp;quot; + event.target.songId + &amp;quot;&amp;amp;pitch=&amp;quot; + event.target.value);&lt;br /&gt;
   m_sessionCheckin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_doSearch() {&lt;br /&gt;
   //Remove old search list if it&amp;#039;s there&lt;br /&gt;
   if (songsLists[&amp;quot;1&amp;quot;]) {&lt;br /&gt;
	  songsLists[&amp;quot;1&amp;quot;].parentObj.removeChild(songsLists[&amp;quot;1&amp;quot;].container);&lt;br /&gt;
	  songsLists[&amp;quot;1&amp;quot;].parentObj.removeChild(songsLists[&amp;quot;1&amp;quot;].columnsObj);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   //Hide currently loaded list&lt;br /&gt;
   if (songsList) {&lt;br /&gt;
	  songsList.hide();&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   document.getElementById(&amp;quot;msg_dosearch&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
   document.getElementById(&amp;quot;message&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
   document.getElementById(&amp;quot;msg_error&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
   document.getElementById(&amp;quot;waiting&amp;quot;).style.display = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
   var columns = Array(&amp;quot;#&amp;quot;, &amp;quot;Song Name&amp;quot;, &amp;quot;Artist&amp;quot;, &amp;quot;Album&amp;quot;, &amp;quot;Add to&amp;quot;, &amp;quot;Add to&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
   songsList = new KJList();&lt;br /&gt;
   songsList.rearrange = false;&lt;br /&gt;
   songsList.playlist = &amp;quot;1&amp;quot;;&lt;br /&gt;
   songsList.playlistName = &amp;quot;Library&amp;quot;;&lt;br /&gt;
   songsList.create(document.getElementById(&amp;quot;songs&amp;quot;));&lt;br /&gt;
   songsList.setColumns(columns, 1);&lt;br /&gt;
   songsLists[&amp;quot;1&amp;quot;] = songsList;&lt;br /&gt;
   &lt;br /&gt;
   getSongs(url_search, m_songsLoaded, &amp;quot;search=&amp;quot; + document.getElementById(&amp;quot;searchfield&amp;quot;).value);&lt;br /&gt;
   m_sessionCheckin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function searchKeyPressed(event) {&lt;br /&gt;
   if (event.keyCode == 13) {&lt;br /&gt;
	  m_doSearch();&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_getSongName(id) {&lt;br /&gt;
   songObj = document.getElementById(id);&lt;br /&gt;
   return songObj.songName;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_getPlaylistName(id) {&lt;br /&gt;
   playlistObj = document.getElementById(id);&lt;br /&gt;
   return playlistObj.name;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function kj_data_error(id, desc) {&lt;br /&gt;
   songsLists[songsList.id] = null;&lt;br /&gt;
   songsList.hide();&lt;br /&gt;
   document.getElementById(&amp;quot;waiting&amp;quot;).style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
   &lt;br /&gt;
   document.getElementById(&amp;quot;msg_error&amp;quot;).innerHTML = &amp;quot;Error: &amp;quot; + desc&lt;br /&gt;
   document.getElementById(&amp;quot;msg_error&amp;quot;).style.display = &amp;#039;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_setStatus(status, revert) {&lt;br /&gt;
   statusObj = document.getElementById(&amp;quot;status&amp;quot;);&lt;br /&gt;
   statusObj.innerHTML = status;&lt;br /&gt;
}&lt;br /&gt;
function trapDelete() {&lt;br /&gt;
   var keyID = (window.event) ? event.keyCode : e.keyCode;&lt;br /&gt;
   if (keyID==8 &amp;amp;&amp;amp; !allowBackspace){&lt;br /&gt;
	  return false;&lt;br /&gt;
   }&lt;br /&gt;
   return true;&lt;br /&gt;
}&lt;br /&gt;
function m_keyPressed(event) {&lt;br /&gt;
   //This is not IE-compliant code.&lt;br /&gt;
   if (event.keyCode == 46 || event.keyCode ==8) {&lt;br /&gt;
	  if (!songsList.selection) {&lt;br /&gt;
		 return;&lt;br /&gt;
	  }&lt;br /&gt;
   &lt;br /&gt;
	  playlistName   = songsList.playlistName;&lt;br /&gt;
&lt;br /&gt;
	  if (playlistName != &amp;quot;Library&amp;quot; &amp;amp;&amp;amp; playlistName != &amp;quot;History&amp;quot;) {&lt;br /&gt;
		 selection   = songsList.selection;&lt;br /&gt;
		 item      = songsList.getByID(selection);&lt;br /&gt;
		 &lt;br /&gt;
		 songsList.select(null);&lt;br /&gt;
		 sendData(url_remove, &amp;quot;playlist=&amp;quot; + songsList.playlist + &amp;quot;&amp;amp;piIx=&amp;quot; + item.piIx);&lt;br /&gt;
		 m_setStatus(&amp;quot;Removed \&amp;quot;&amp;quot; + item.songName + &amp;quot;\&amp;quot; ...&amp;quot;);&lt;br /&gt;
		 songsList.removeItem(selection);&lt;br /&gt;
	  }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_sessionCheckin() {&lt;br /&gt;
   /* A true or false value is set by the server before delivering this script&lt;br /&gt;
	  depending on preference.&lt;br /&gt;
   if (!{auto_logout}) {&lt;br /&gt;
	  return;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   if (timer == null) {&lt;br /&gt;
	  timer = setInterval(&amp;quot;m_sessionLogout()&amp;quot;, {timeout} * 1000);&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
	  clearInterval(timer);&lt;br /&gt;
	  timer = null;&lt;br /&gt;
	  return m_sessionCheckin();&lt;br /&gt;
   }&lt;br /&gt;
	*/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function m_sessionLogout() {&lt;br /&gt;
//   window.location=url_login;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dave</name></author>
	</entry>
</feed>