   <!-- loc is the id of any span you need to display the results in. -->
   function MakeAjaxGetRequest(parameters, loc, url, callback) {
	var http_request;
	http_request = false;

      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
	 // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
     
      // trick to pass parameters to callback handler!
      http_request.onreadystatechange = function()
	{
	  callback(http_request, loc);
	}

      http_request.open('GET', url + parameters, true);
      http_request.send(null);
   }

   function MakeAjaxPostRequest(parameters, loc, url, callback) {
      var http_request;
      http_request = false;

      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
	 // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
     
      // trick to pass parameters to callback handler!
      http_request.onreadystatechange = function()
	{
	  callback(http_request, loc);
	}

      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   // callback functions start going here
   <!-- Private, do not use in your html -->
   function GET(http_request, span_loc) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById(span_loc).innerHTML = result;            
         } else {
	    // Fixme: remove for release
            alert('There was a problem with the request.');
         }
      }
   }

   function NO_RESPONSE(http_request, span_loc) {
   }

   function CROPPER_GET(http_request, span_loc) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('cropper_div2').innerHTML = result;
            document.getElementById('cropper_div2').style.display = 'block';
         } else {
	    // Fixme: remove for release
            alert('There was a problem with the request.');
         }
      }
   }

   function GET_MOD(http_request, span_loc) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById(span_loc).innerHTML = result;
	    document.getElementById('notice').innerHTML = '';
         } else {
            // Fixme: remove for release
            alert('There was a problem with the request.');
         }
      }
   }

   function GET_EMAIL(http_request, span_loc) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            result =  eval("(" + http_request.responseText + ")");
            document.getElementById(span_loc).innerHTML = result.notice;
            document.getElementById(span_loc).style.display = 'block';
	    //alert(result.notice);
	    if(result.failure == 1) {
		document.getElementById("messageartistsend").disabled = true;
	    }
	    if(result.failure == 2) {
		document.getElementById("messageurlsend").disabled    = true;
	    }
         } else {
            // Fixme: remove for release
            alert('There was a problem with the request.');
         }
      }
   }

function JSON_UNGROUPED(http_request, span_loc) {
     if (http_request.readyState == 4) {
          if (http_request.status == 200)
          {
               music = eval("(" + http_request.responseText + ")");
               results = "";

               var ctr = 0;
               results = '<center>Search Results</center><BR/><table class=\"search\" style=\"width: 100%; \">';
               for (var x = 0 ; x < (music.number + 0.5)/5; x++)
               {
                    if(ctr == music.number) break;
                    results += '<tr>';
                    for (var y = 0 ; y < 5; y++) {
                         results += '<td width=\"20%\" align=\"left\" valign=\"top\"><div><table class=\"none\" style=\"width: 100%;\"><tr><td class=\"none\" valign=\"top\" align=\"left\">';

                         if(music.comments[ctr] == 0) {
                              cstring = 'none';
                         }
                         else {
                              cstring = music.comments[ctr];
                         }
                         if(music.plays[ctr] == 0) {
                              pstring = 'none';
                         }
                         else {
                              pstring = music.plays[ctr];
                         }
                         if(music.rating[ctr] == 0) {
                              rstring = 'unrated';
                         }
                         else {
                              rstring = music.rating[ctr]+'/5';
                         }

                         if (music.prefs[0]==0 && music.prefs[1]==0 && music.prefs[2]==0 && music.prefs[3]==0) {
                              interests ="";
                         }
                         else {
                              interests = "Interests: <span class=\"smallLabel\">";

                              seen_prev = 0;

                              if(music.interest[ctr]==1) {
                                   interests += "Bands";
                                   seen_prev = 1;
                              }
                              if(music.hire[ctr]==1) {
                                   if ( seen_prev == 1 ) interests += ", ";
                                   interests += "Work for hire";
                                   seen_prev = 1;
                              }
                              if(music.take[ctr]==1) {
                                   if ( seen_prev == 1 ) interests += ", ";
                                   interests += "Take lessons";
                                   seen_prev = 1;
                              }
                              if(music.give[ctr]==1) {
                                   if ( seen_prev == 1 ) interests += ", ";
                                   interests += "Give lessons";
                                   seen_prev = 1;
                              }

                              interests += "</span>";

                         }

                         results += '<center><a href=\"./live?track=' + music.cid[ctr] + '\"><img class=\"imgborder\" width=\"125\" height=\"125\" border=\"0\" src=\"uploads/' + music.image[ctr] + '_search.jpg\"/></a></center><br/>';
                         results += '<h4>' + music.name[ctr] + '</h4>';
                         results += 'by <b><a class=\"smallTextU\" href=\"./'+music.usernames[ctr]+'\" >'+music.usernames[ctr]+'</a></b><br/><br/><table style=\"width: 100%;\" border=\"0\">';

                         results += '<tr><td align=\"left\">&nbsp;</td><td>Comments: <span class=\"statVal\">'+cstring+'</span></td></tr><tr><td align=\"left\">&nbsp;</td><td>Plays: <span class=\"statVal\">'+pstring+'</span></td></tr><tr><td align=\"left\">&nbsp;</td><td>Rating: <span class=\"statVal\">'+rstring+'</span></td></tr>';

                         results += '</table><br/>'+interests;
                         results += '</td></tr></table></div></td>';
                         ctr = ctr + 1;
                         if(ctr == music.number) break;
                    }
                    results += '</tr>';
               }
               results += "</table>";

               document.getElementById("searchResults").innerHTML = results;
          }
     }
}

function JSON_GROUPED(http_request, span_loc) {
     if (http_request.readyState == 4) {
          if (http_request.status == 200)
          {
               music = eval("(" + http_request.responseText + ")");
               results = "";

               var ctr = 0;
               results = '<center>Search Results</center><BR/><table class=\"search\" style=\"width: 100%; \">';
               for (var x = 0 ; x < (music.number + 0.5)/5; x++)
               {
                    if(ctr == music.number) break;
                    results += '<tr>';
                    for (var y = 0 ; y < 5; y++) {
                         results += '<td width=\"20%\" align=\"left\" valign=\"top\"><div><table class=\"none\" style=\"width: 100%;\"><tr><td class=\"none\" valign=\"top\" align=\"left\">';

                         if (music.prefs[0]==0 && music.prefs[1]==0 && music.prefs[2]==0 && music.prefs[3]==0) {
                              interests ="";
                         }
                         else {
                              interests = "Interests: <span class=\"smallLabel\">";

                              seen_prev = 0;

                              if(music.interest[ctr]==1) {
                                   interests += "Bands";
                                   seen_prev = 1;
                              }
                              if(music.hire[ctr]==1) {
                                   if ( seen_prev == 1 ) interests += ", ";
                                   interests += "Work for hire";
                                   seen_prev = 1;
                              }
                              if(music.take[ctr]==1) {
                                   if ( seen_prev == 1 ) interests += ", ";
                                   interests += "Take lessons";
                                   seen_prev = 1;
                              }
                              if(music.give[ctr]==1) {
                                   if ( seen_prev == 1 ) interests += ", ";
                                   interests += "Give lessons";
                                   seen_prev = 1;
                              }

                              interests += "</span>";

                         }

                         if ( music.avg_rating[ctr] != -1 )
                              avg_rating = music.avg_rating[ctr];
                         else
                              avg_rating = 'unrated';
                              
                         if ( music.first_name[ctr] )
                              first_name = music.first_name[ctr];
                         else
                              first_name = '';               
                              
                         if ( music.last_name[ctr] )
                              last_name = music.last_name[ctr];
                         else
                              last_name = '';
                              
                         if ( (first_name == '') && (last_name == '') )
                         {
                              name_str = 'Anonymous';
                         }                          
                         else
                         {
                              name_str = first_name + ' ' + last_name;
                         }                  

                         results += '<center><a href=\"./' + music.username[ctr] + '\"><img class=\"imgborder\" border=\"0\" src=\"' + music.display_image[ctr] + '\"/></a></center><br/>';
                         results += '<h4>' + name_str + '</h4>';
                         results += 'Aka: <b><a class=\"smallTextU\" href=\"./' + music.username[ctr] + '\">' + music.username[ctr] + '</a></b><br/><br/><table style=\"width: 100%;\" border=\"0\">';
                         
                         results += '<tr><td align=\"left\">&nbsp;</td><td>Tracks matched: <span class=\"statVal\"><a href=\"./' + music.username[ctr] + '\">' + music.track_cnt[ctr] + '</a></span></td></tr><tr><td align=\"left\">&nbsp;</td><td>Avg rating: <span class=\"statVal\">' + avg_rating + '</span></td></tr>';

                         results += '</table><br/>'+interests;
                         results += '</td></tr></table></div></td>';
                         ctr = ctr + 1;
                         if(ctr == music.number) break;
                    }
                    results += '</tr>';
               }
               results += "</table>";

               document.getElementById("searchResults").innerHTML = results;
          }
     }
}

   function EXPLORER(http_request, span_loc) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            music = eval("(" + http_request.responseText + ")");
            results = "";
	    results += " <table style=\"width: 90%;\" border=\"0\"><tr valign=\"middle\" align=\"center\">";
            for (var x = 0 ; x < music.number; x++) {
                results += '<td height=\"75\" width=\"10%\"><a href=\"./live?track=' + music.cid[x] + '\"><img src=\"uploads/' + music.image[x] + '_thumb.jpg\"  border=\"0\"/></a></td>';
            }
	    results += "</tr></table>";
            document.getElementById("explorer").innerHTML = results;
         }
      }
   }


   function STARS(http_request, span_loc) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            // alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById("stars").innerHTML = result;
         } else {
	    // Fixme: Remove for release
            alert('There was a problem with the request.');
         }
      }
   }

   function UPLOAD(http_request, span_loc) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            // alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById("upload_status").innerHTML = result;
         } else {
            // Fixme: Remove for release
            alert('There was a problem with the request.');
         }
      }
   }
   
   function UPLOADLITE(http_request, span_loc) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            // alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById("final_notice").innerHTML = result;
         } else {
            // Fixme: Remove for release
            alert('There was a problem with the request.');
         }
      }
   }