     var loading = false;
     
     window.onpopstate = function(event) {
       var s = event.state;
       if(s != null) {
         if(s.searchterms != null) {
           var url = "searchpane.php?random=" + Math.random() + "&searchterms=" + s.searchterms;
           getSheetList(url, true);
         } else if(s.startswith != null) {
           var url = "searchpane.php?random=" + Math.random() + "&startswith=" + s.startswith;
           getSheetList(url);           
         } else if(s.latest != null) {
           var url = "searchpane.php?random=" + Math.random();
           getSheetList(url, true);
         }
       }       
     }
     
     function activateExternalLinks() {
       $("a.extlink").mouseup(function(event) {
         if(event.which !== 3) {
           logExternalLink($(this).attr("linkId"));
         }
       });
     }

     function showAll() {
       $(".sheetList")
       .find("h3") 
         .addClass("ui-accordion-header-active ui-state-active")
         .removeClass("ui-state-default ui-corner-bottom")
         .find("> .ui-icon")
           .addClass("ui-icon-triangle-1-s")
           .removeClass("ui-icon-triangle-1-e")
           .end()
         .next()
           .addClass("ui-accordion-content-active")
           .show();
     }

     function hideAll() {
       $(".sheetList")
         .find("h3") 
           .addClass("ui-accordion-header ui-state-default ui-corner-bottom")
           .removeClass("ui-accordion-header-active ui-state-active")
           .find("> .ui-icon")
             .addClass("ui-icon-triangle-1-e")
             .removeClass("ui-icon-triangle-1-s")
             .end()
           .next()
             .removeClass("ui-accordion-content-active")
             .hide();  
     }
      
      function sourceByFirstLetter(letter) {
        var url = "searchpane.php?random=" + Math.random() + "&startswith=" + letter;
        getSheetList(url);
        if(history.pushState) {
          history.pushState(
            {"startswith": letter},
            "",
            "index.php?startswith=" + letter
          );
        }
      }
      
      function doSearch(searchterms) {
        var url = "searchpane.php?random=" + Math.random() + "&searchterms=" + searchterms;
        getSheetList(url, true);
        if(history.pushState) {
          history.pushState(
            {"searchterms": searchterms},
            "",
            "index.php?searchterms=" + searchterms
          );
        }
      }

      function getLatest() {
        var url = "searchpane.php?random=" + Math.random();
        getSheetList(url, true);
        if(history.pushState) {
          history.pushState(
            {"latest": true},
            "",
            "index.php"
          );
        }
      }
      
      function getSheetList(url, autoOpen) {
        
        if(loading) { return false; }
        $("#loadingIcon").show();
        loading = true;
        
        var xhr = createXHR();
        xhr.open("GET", url);
        xhr.onreadystatechange = function() {
          if(xhr.readyState == 4) {
            $("#loadingIcon").hide();
            loading = false;
            var resp = xhr.responseText;
            document.getElementById("sheetmusic").innerHTML = resp;
            initAccordion(".sheetList");
            $("#tabs").tabs("select", "sheetmusic");
            if(autoOpen) {
              showAll();
            }
            activateExternalLinks();
            //reloadSidebars();
          }
        };
        xhr.send(null);
        
      }
      
      function logExternalLink(id) {
        var url = "logclick.php?random=" + Math.random() + "&id=" + id;
        var xhr = createXHR();
        xhr.open("GET", url);
        xhr.send(null);
      }
      
      function reloadSidebars() {
        $("#sidebar-left").load("sidebar-left.php?random=" + Math.random());
        $("#sidebar-right").load("sidebar-right.php?random=" + Math.random());
      }
      
      function initAccordion(id, isOpen, fastToggle) {
        
        if(fastToggle) {
          
          $(id).addClass("ui-accordion ui-accordion-icons ui-widget ui-helper-reset")
          .find("h3")
            .addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-top ui-corner-bottom")
            .hover(function() { $(this).toggleClass("ui-state-hover"); })
            .prepend('<span class="ui-icon ui-icon-triangle-1-e"></span>')
            .click(function() {
              $(this)
              .toggleClass("ui-accordion-header-active ui-state-active ui-state-default ui-corner-bottom")
              .find("> .ui-icon")
                .toggleClass("ui-icon-triangle-1-e ui-icon-triangle-1-s")
                .end()
              .next()
                .toggle()
                .toggleClass("ui-accordion-content-active");
              return false;
            })
            .next()
              .addClass("ui-accordion-content ui-widget-content ui-helper-reset ui-corner-bottom")
              .hide();
          
        } else {
          
      	  $(id).addClass("ui-accordion ui-accordion-icons ui-widget ui-helper-reset")
  			  .find("h3")
  			    .addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-top ui-corner-bottom")
  			    .hover(function() { $(this).toggleClass("ui-state-hover"); })
  			    .prepend('<span class="ui-icon ui-icon-triangle-1-e"></span>')
  			    .click(function() {
              $(this)
              .toggleClass("ui-accordion-header-active ui-state-active ui-state-default ui-corner-bottom")
              .find("> .ui-icon")
                .toggleClass("ui-icon-triangle-1-e ui-icon-triangle-1-s")
                .end()
              .next()
                .slideToggle(100)
                .toggleClass("ui-accordion-content-active");
  			      return false;
  			    })
  			    .next()
  			      .addClass("ui-accordion-content ui-widget-content ui-helper-reset ui-corner-bottom")
  			      .hide();
      	  
        }
    	  
        if(isOpen === true) {
          $(id)
          .find("h3") 
            .addClass("ui-accordion-header-active ui-state-active")
            .removeClass("ui-state-default ui-corner-bottom")
            .find("> .ui-icon")
              .addClass("ui-icon-triangle-1-s")
              .removeClass("ui-icon-triangle-1-e")
              .end()
            .next()
              .addClass("ui-accordion-content-active")
              .show();
        }    	  
    	  
      }

      function createXHR() {
        try { return new XMLHttpRequest(); } catch(e) {}
        try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
        try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
        try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
        return null;
      }      
        
      
      
