var gigs = {
  showmore: function(link, rowid) {
    $j("#tr" + rowid).toggleClass("hidden");
    if ($j("#tr" + rowid).css("display") == "none") $j(link).html("more&nbsp;&raquo;"); else $j(link).html("less&nbsp;&laquo;"); 
  }
}

function show(item, btn)
{
  $j("#music").css("display", (item == "music")?"block":"none");
  $j("#comments").css("display", (item == "comments")?"block":"none");
  $j("#bio").css("display", (item == "bio")?"block":"none");
  $j("#gigs").css("display", (item == "gigs")?"block":"none");
  $j("#fans").css("display", (item == "fans")?"block":"none");
  
  $j("div.menu button").removeClass("current");
  $j(btn).addClass("current");             
               
  if (item != "music") {
    band.currenttrack = null;
    $j("#review").css("display", "none");
  }
}

var comments = {
  maxCommentLength: 500,
  comment: "",
  fetch: function(page, bandid) { ajaxpost("/ajax/getcomments", this.commentHandler, [{"name": "page", "value": page}, {"name": "bandid", "value": bandid}]); },
  commentHandler: function(ajaxObj) { showElements(["loading", "comments"], [false, true]); $j("#comments").html(ajaxObj.responseText); },
  confirmTruncate: function() { if (this.comment.length > this.maxCommentLength) { this.comment = this.comment.substr(0, this.maxCommentLength); return confirm("Your comment is greater than " + this.maxCommentLength + " characters long and will be truncated.\nClick OK to post anyway, or Cancel to change your comment"); } else return true; },
  add: function (bandid) { this.comment = $j('#newComment').val().trim(); if (this.confirmTruncate()) { $j("#showElements").fadeOut("fast"); ajaxpost("/ajax/addcomment", this.commentHandler, [{"name": "page", "value": 0}, {"name": "bandid", "value": bandid}, {"name": "comment", "value": this.comment}]); } }
}
               
$j(document).ready( function() { hs.preloadImages(5); } ); 


function Useractions() {

  this.fanhandler = function(o) {
    if (o.xmlhttp.status == 200) { $j("#fans").html(o.responseText); };
  };
  
  this.fannav = function(band, page) {
    ajaxpost("/ajax/getfans", useractions.fanhandler, [{"name": "bandid", "value": band}, {"name": "page", "value": page}]);
  };
  
  this.report = function(band) {
    var f = function() { ajaxpost("/ajax/reportform", useractions.srh, [{name: "bandid", value: band}]); }
    this.postquery(f);
  };

  this.srh = function(o) {
    if (o.xmlhttp.status == 200) {
      $j("div#dyn").html(o.responseText).slideDown("normal");
    }
  }
  
  this.sendreport = function(band) {
    var type = $j("#rbcopyright").attr("checked")?1:$j("#rbrude").attr("checked")?2:0;
    
    var details = escape($j("#txtDetails").val().trim());
    var fullname = escape($j("#repfullname").val().trim());
    var email = escape($j("#repemail").val().trim());
    
    if ((fullname == "") || (email == ""))
      return alert("We take all reports of copyright / offensive material seriously.\nPlease provide your full name and email address so we may respond to your report");
    
    if ((type < 1) || (type > 2) || (details == ""))
      return alert("Please identify which items you are reporting, and why");
    else
    {
      f = function() { ajaxpost("/ajax/report", useractions.srh, [{name: "name", value: fullname}, {name: "email", value: email}, {name: "bandid", value: band}, {name: "type", value: type}, {name: "details", value: details}]); };
      this.postquery(f);
    }
  };
  
  this.cancel = function() {
    $j("#dyn").slideUp("normal");
  };
  
  this.postquery = function(f) {
    if ($j("div#dyn").css("display") == "block")
      $j("div#dyn").slideUp("normal", f);
    else
      f();
  }

  this.checkAddress = function(obj) {
    obj.className = (obj.value.trim() == "")?"addr":"";
  }
  
  this.playalbum = function(bandid, albumid) {
    player.playalbum(bandid, albumid);
  }

  this.getgigs = function(b, m, y) {
    ajaxpost("/ajax/artistgigscalendar", useractions.gigrh, [{name: "bandid", value: b}, {name: "month", value: m}, {name: "year", value: y}]);
  }
  
  this.gigrh = function(o) {
    if (o.xmlhttp.status == 200)
      $j("#calendar").html(o.responseText);
  }
  
  this.closegig = function() {
    $j("#gig").fadeOut("fast", function() { $j("#calendar").fadeIn("fast") });
  }
  
  this.showgig = function(b, d) {
    ajaxpost("/ajax/showgigs", useractions.gigrh2, [{name: "bandid", value: b}, {name: "date", value: d}]);
  }
  
  this.gigrh2 = function(o) {
    if (o.xmlhttp.status == 200) {
      $j("#gig").html(o.responseText);
      $j("#calendar").fadeOut("fast", function() { $j("#gig").fadeIn("fast") });
      
    }
  }
  
  
};

var useractions = new Useractions();

var band = {
  albums: null,
  currenttrack: null,
  
  rrh: function(o) {
    if (o.xmlhttp.status == 200) {
      $j(".loading").css("display", "none");
      $j("#reviewdata").html(o.responseText);
      if ($j.browser.ie) $j(".item").css("visibility", "visible");
    }
  },
  
  drh: function(o) {
    if (o.xmlhttp.status == 200) {
      band.rrh(o);
      var c = parseInt($("sr" + band.currenttrack.id).innerHTML) - 1;
      $j("#sr" + band.currenttrack.id).html((c > 0)?c:"0");
      band.currenttrack.reviewcount = (c >= 0)?c:0;
    }
  },
  
  srh: function(o) {
    if (o.xmlhttp.status == 200) {
      band.rrh(o);
      var c = parseInt($("sr" + band.currenttrack.id).innerHTML) + 1;
      $j("#sr" + band.currenttrack.id).html((c > 0)?c:"0");
      band.currenttrack.reviewcount = (c >= 0)?c:0;
    }
  },
  
  arh: function(o) {
    if (o.xmlhttp.status == 200) {
      band.rrh(o);
      $j("textarea.review").get(0).focus();
    }
  },
  
  rmreview: function(trackid, reviewid) {
    if (confirm("Are you sure you want to delete this review?\nClick 'OK' to delete, or 'Cancel' to do nothing")) {
      var f = function() {
        $j("#reviewdata").html("");
        $j(".loading").css("visibility", "hidden").css("display", "block")
        $j("#review").slideDown("normal", function() {
          $j(".loading").css("visibility", "visible");
          ajaxpost("/ajax/getreviews", band.drh, [{name: "a", value: 2}, {name: "trackid", value: trackid}, {name: "reviewid", value: reviewid}]);
        })
      }
      $j("#review").slideUp("normal", f);
    }
  },
  
  cancelreview: function(trackid) {
    band.fetchreviews(trackid);
  },
  
  savereview: function(trackid) {
    var review = escape($("newreview").value.trim());
    if (review != "") {
      var f = function() {
        $j("#reviewdata").html("");
        $j(".loading").css("visibility", "hidden").css("display", "block");
        $j("#review").slideDown("normal", function() {
          $j(".loading").css("visibility", "visible");
          ajaxpost("/ajax/getreviews", band.srh, [{name: "a", value: 4}, {name: "trackid", value: trackid}, {name: "review", value: review}]);
        });
      }
  
      if ($j("#review").css("display") == "block") {
        if ($j.browser.msie) $j(".item").css("visibility", "hidden");
        $j("#review").slideUp("normal", f);
      }
      else
        f();
    }
  },
  
  editreview: function(trackid, reviewid) {
    var f = function() {
      $j("#reviewdata").html("");
      $j(".loading").css("visibility", "hidden").css("display", "block")
      $j("#review").slideDown("normal", function() {
        $j(".loading").css("visibility", "visible");
        ajaxpost("/ajax/getreviews", band.arh, [{name: "a", value: 5}, {name: "trackid", value: trackid}, {name: "reviewid", value: reviewid}]) } );
    }

    if ($j("#review").css("display") == "block") {
      if ($j.browser.msie) $j(".item").css("visibility", "hidden");
      $j("#review").slideUp("normal", f);
    }
    else
      f();
  },
  
  saveedited: function(trackid, reviewid) {
    var review = escape($("newreview").value.trim());
    if (review != "") {
      var f = function() {
        $j("#reviewdata").html("");
        $j(".loading").css("visibility", "hidden").css("display", "block");
        $j("#review").slideDown("normal", function() {
          $j(".loading").css("visibility", "visible");
          ajaxpost("/ajax/getreviews", band.rrh, [{name: "a", value: 6}, {name: "reviewid", value: reviewid}, {name: "trackid", value: trackid}, {name: "review", value: review}]);
        });
      }
  
      if ($j("#review").css("display") == "block")
      {
        if ($j.browser.msie) $j(".item").css("visibility", "hidden");
        $j("#review").slideUp("normal", f);
      }
      else
        f();
    }
  },
  
  fetchreviews: function(trackid) {
    var f = function() {
      $j("#reviewtitle span").html(band.currenttrack.title);
      $j("#reviewdata").html("");
      $j(".loading").css("visibility", "hidden").css("display", "block")
      $j("#review").slideDown("normal", function() {
        $j(".loading").css("visibility", "visible");
        ajaxpost("/ajax/getreviews", band.rrh, [{name: "a", value: 1}, {name: "trackid", value: trackid}]) } );
    }

    if ($j("#review").css("display") == "block")
    {
      if ($j.browser.msie) $j(".item").css("visibility", "hidden");
      $j("#review").slideUp("normal", f);
    }
    else
      f();
  },
  
  showreview: function(album, track, trackid) {
    if (!band.currenttrack || (trackid != band.currenttrack.id)) {
      band.currenttrack = band.albums[album].tracks[track];
      
      band.fetchreviews(trackid);
    }
  },
  
  closereview: function() {
    band.currenttrack = null;
    $j("#review").slideUp("normal");
  },
  
  createcell: function(r, p) {
    for (var i=0; i<p.length; i++) {
      var td = r.insertCell(-1);
      if (p[i][0] != "") td.className = p[i][0];
      td.innerHTML = p[i][1];
    }
  }
   
};
