function trim(stringToTrim) {
	if(stringToTrim == null){
		return "";
	}else{
		return stringToTrim.replace(/^\s+|\s+$/g,"");
	}
}

function createRequest() {
  var request = null;
  try {
    request = new XMLHttpRequest();
  } 
  catch (trymicrosoft) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (othermicrosoft) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } 
      catch (failed) {
        request = null;
      }
    }
  }

  if (request == null)
    alert("Error creating request object!");
  else
    return request;
}

function sendRequest(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
      updatePage(request);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function showLink(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
      editLink(request);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function editLink(request) {
	if (request.readyState == 4) {
    	if (request.status == 200) {
	 		var tab_info = trim(request.responseText);
     	 	values=tab_info.split("|");
			if(last_link != 0){ document.getElementById(last_link).innerHTML = ""; }
	 	 	document.getElementById(values[0]).innerHTML = values[2];
			last_link = values[0];
		}else{
    	  	alert("Error! Request status is " + request.status);
  		}
	}
}

function update_home_tab(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
      updatePage(request);
	  fill_home_tab(request);
	  tb_init('a.thickbox');
	  //initialize();
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function fill_home_tab(request) {
	if (request.readyState == 4) {
    	if (request.status == 200) {
	 		var tab_info = trim(request.responseText);
     	 	values=tab_info.split("|");
	 	 	document.getElementById(values[0]).innerHTML = values[1];
			if(values[0] == "gallery" || values[0] == "photune"){
				$.scrollTo( '#top_table', 1500);
			}else{
				$.scrollTo( '#bottom_table', 1500);
			}
		}else{
    	  	alert("Error! Request status is " + request.status);
  		}
	}
}

function getTabInfo(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
      updatePage(request);
	  fillTab(request);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function fillTab(request) {
	if (request.readyState == 4) {
    if (request.status == 200) {
	  var tab_info = trim(request.responseText);
      values=tab_info.split("|");
	  document.getElementById(values[0]).innerHTML = values[1];
	  if(values[2] == "playlistGenre"){
		 hilitePlaylistTab(values[3],values[4],values[7],values[8],values[5]); 
	  }
	}else{
      alert("Error! Request status is " + request.status);
  	}
	}
}

function hilitePlaylistTab(selected, num_tabs, alt_color, hilite_color, user){
	var last_tab = parseInt(num_tabs) + 1;
	for(i=0;i<last_tab;i++){
		var thisName = user+"_"+i;
		document.getElementById(thisName).style.backgroundColor = alt_color;
	}
	document.getElementById(selected).style.backgroundColor = hilite_color;
}

function sendResetDefaults(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
      updatePage(request);
	  goPage('user_settings.php');
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function sendPlaylistRequest(url, param, artist) {
  var request = createRequest();
  request.onreadystatechange = function() {
      sendSongRequest("/ajax/ajax_get_songs.php","a=" + artist);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function sendBandsRequest(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
      updatePage(request);
	  fillBands(request);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function sendSongRequest(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
	  fillSongs(request);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function deletePlaylistSong(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
	  fillSongs(request);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function updatePage(request) {
  if (request.readyState == 4) {
    /* if (request.status == 200) {
      var response = request.responseText;
      //document.getElementById("ajax_info").innerHTML = response;
      //var xmlDoc = request.responseXML;
    }
    else 
      alert("Error! Request status is " + request.status);
	 */
  } 
}

function fillBands(request) {
	if (request.readyState == 4) {
    if (request.status == 200) {
      var response = request.responseText;
	  band_array = eval(response);
      values=band_array.split("|");
	  //document.getElementById("ajax_info").innerHTML = response;
	  var obj = document.playlist.artist;
	  obj.options.length=0;
	  for (i=0; i<values.length; i++){
			obj.options[obj.options.length]=new Option(values[i], values[i], false); //
		}
	  document.getElementById("instr").innerHTML = "Select an artist.";
      //var xmlDoc = request.responseXML;
    }
    else 
      alert("Error! Request status is " + request.status);
  }
}

function fillSongs(request) {
	if (request.readyState == 4) {
    if (request.status == 200) {
      var response = request.responseText;
	  song_array = eval(response);
	  section_array = song_array.split("^");
      values = section_array[0].split("|");
	  html_str = "<table class='playlist_left'>";
	  for (i=0; i<values.length-1; i++){
		  chunks=values[i].split("~");
		  thisBand = chunks[0];
		  if(i == 0){
		  	html_str += "<tr bgcolor='#99BBDB'><td colspan=3><strong>Available " + chunks[0] +" Tracks:</strong></td></tr>";
		  }
		  html_str += "<tr";
		  if(i % 2){
		  	html_str += " bgcolor='#FFFFFF'";
		  }else{
		    html_str += " bgcolor='#EAEAEA'";
		  }
		  html_str += "><td width='5%'><a href='javascript: void(0);' onClick='sendPlaylistRequest(\"/ajax/ajax_add_to_playlist.php\",\"mpl_user_fk=";
		  html_str += chunks[5];
		  html_str += "&mpl_song_fk=";
		  html_str += chunks[4];
		  html_str += "\",\"" + thisBand +"\");";
		  html_str += "'>ADD</a>&nbsp;</td>";
		  html_str += "<td width='85%'><strong>Artist:&nbsp;</strong>" + chunks[0] + "<br>";
		  html_str += "<strong>Song:&nbsp;</strong>" + chunks[1] + "</td>";
		  html_str += "<td width='10%'><embed src='mp3_only.swf?song_url=" + chunks[2] + "&enablejs=true&autoplay=false' width='25' height='25' wmode='transparent'></embed></td></tr>";
	  }
	  html_str += "</table>";
	  //Current Playlist
	  values = section_array[1].split("|");
	  current_str = "<table class='playlist_right'><tr bgcolor='#99BBDB'><td colspan=4><strong>Your Current Playlist</strong></td></tr>";
	  for (i=0; i<values.length-1; i++){
		  chunks=values[i].split("~");
		  current_str += "<tr";
		  if(i % 2){
		  	current_str += " bgcolor='#FFFFFF'";
		  }else{
		    current_str += " bgcolor='#EAEAEA'";
		  }
		  current_str += "><td width='8%'><strong>" + (i+1) + ") </strong></td>";
		  current_str += "<td width='72%'><strong>Artist:&nbsp;</strong>" + chunks[0] + "<br>";
		  current_str += "<strong>Song:&nbsp;</strong>" + chunks[1] + "</td>";
		  current_str += "<td width='20%'>";
		  
		  current_str += "<a href='javascript: void(0);' onclick='sendPlaylistRequest(\"/ajax/ajax_reorder_songs.php\",\"mpl_user_fk=";
		  current_str += chunks[5];
		  current_str += "&mpl_song_fk=";
		  current_str += chunks[4];
		  current_str += "&dir=-1";
		  current_str += "\",\"" + thisBand +"\");";
		  current_str += "'><img src='/images/arrow_up.gif' border=0></a>&nbsp;&nbsp;";
		  
		  current_str += "<a href='javascript: void(0);' onclick='sendPlaylistRequest(\"/ajax/ajax_reorder_songs.php\",\"mpl_user_fk=";
		  current_str += chunks[5];
		  current_str += "&mpl_song_fk=";
		  current_str += chunks[4];
		  current_str += "&dir=2";
		  current_str += "\",\"" + thisBand +"\");";
		  current_str += "'><img src='/images/arrow_down.gif' border=0></a>&nbsp;&nbsp;";
		  
		  current_str += "<a href='javascript: void(0);' onclick='sendPlaylistRequest(\"/ajax/ajax_add_to_playlist.php\",\"mpl_user_fk=";
		  current_str += chunks[5];
		  current_str += "&mpl_song_fk=";
		  current_str += chunks[4];
		  current_str += "\",\"" + thisBand +"\");";
		  current_str += "'>[X]</a>&nbsp;</td>";
		  //current_str += "<td width='10%'><embed src='mp3_only.swf?song_url=" + chunks[2] + "&enablejs=true&autoplay=false' width='25' height='25' wmode='transparent'></embed></td></tr>";
		  current_str += "</tr>";
	  }
	  current_str += "</table>";
      document.getElementById("instr").innerHTML = "Click the links to add, delete and reorder your playlist.";
	  document.getElementById("songs").innerHTML = html_str;
	  document.getElementById("current").innerHTML = current_str;
	  //document.getElementById("ajax_info").innerHTML = html_str;
    }
    else 
      alert("Error! Request status is " + request.status);
  }
}

function sendMailingListRequest(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
	  fillMailingList(request);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function fillMailingList(request) {
	if (request.readyState == 4) {
    if (request.status == 200) {
      var response = request.responseText;
	  user_array = eval(response);
      values=user_array.split("|");
	  //document.getElementById("ajax_info").innerHTML = response;
	  var obj = document.getElementById('current_ml');
	  obj.options.length=0;
	  for (i=0; i<values.length; i++){
		  	chunks=values[i].split("~");
			obj.options[obj.options.length]=new Option(chunks[1], chunks[2], false); 
		}
    }
    else 
      alert("Error! Request status is " + request.status);
  }
}

function createMailingListRequest(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
	  createMailingList(request);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function createMailingList(request) {
	if (request.readyState == 4) {
    if (request.status == 200) {
      var response = request.responseText;
	  user_array = eval(response);
      values=user_array.split("|");
	  //document.getElementById("ajax_info").innerHTML = response;
	  var obj = document.getElementById('ml_uuid');
	  obj.options.length=0;
	  var the_select = 0;
	  var the_id = 0;
	  for (i=0; i<values.length; i++){
		  chunks=values[i].split("~");
		  if(chunks[2] > the_id){
			  the_id = chunks[2];
			  the_select = i;
		  }
		  obj.options[obj.options.length]=new Option(chunks[1], chunks[0], true); 
	  }
	  //Clear Current Mailing List entries
	  var obj2 = document.getElementById('current_ml');
	  obj2.options.length=0;
	  obj2.options[obj.options.length]=new Option("", "", false);
	  //Clear ml_name
	  document.getElementById('ml_name').value = "";
	  if(user_array.charAt() == '~'){
		document.getElementById('ml_uuid').selectedIndex = 0;
	  }else{
	    document.getElementById('ml_uuid').selectedIndex = the_select;
	  }
    }
    else 
      alert("Error! Request status is " + request.status);
  }
}

function updateMailingListRequest(url, param) {
  var request = createRequest();
  request.onreadystatechange = function() {
	  updateMailingList(request);
  }
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send(param);
}

function updateMailingList(request) {
	if (request.readyState == 4) {
    if (request.status == 200) {
      var response = request.responseText;
	  user_array = eval(response);
      values=user_array.split("|");
	  //document.getElementById("ajax_info").innerHTML = response;
	  var obj = document.getElementById('current_ml');
	  obj.options.length=0;
	  for (i=0; i<values.length; i++){
		  	chunks=values[i].split("~");
			obj.options[obj.options.length]=new Option(chunks[1], chunks[2], false); 
		}
    }
    else 
      alert("Error! Request status is " + request.status);
  }
}

