var PWM = {};

PWM.settings = {
  "photo": {
    "wrap_class": "photo-ctr",
    "blurb_class": "photo-blurb",
    "blurb_height": 35
  }
};

PWM.faq = {};

PWM.faq.hide_answers = function () {
  $(".answer").hide();
};

PWM.faq.bind_openers = function () {
  $(".more").bind("click", function (e) {
      $(this).parent().next(".answer").slideDown(200);
      if (!$(this).hasClass("nohide")) {
          $(this).hide();
      }
      return false;
  });
};

PWM.faq.init = function () {
  PWM.faq.hide_answers();
  PWM.faq.bind_openers();
};

PWM.paginate = {};

PWM.paginate.back = function(page_id) {
  if (page_id === 0) {
    return null;
  } else {
    return page_id - 1;
  }
};

PWM.paginate.next = function(page_id) {
  if (page_id === PWM.paginate.n) {
    return null;
  } else {
    return page_id + 1;
  }
};

PWM.paginate.set_back = function(page_id) {
  var back = PWM.paginate.back(page_id);

  if (back) {
    $(".paginate-back")
        .unbind("click.paginate")
        .bind("click.paginate", function(e){
      PWM.paginate.turn_to(back);
      return false;
    });
    $(".paginate-back").show();
  } else {
    $(".paginate-back").hide();
  }
};

PWM.paginate.set_next = function(page_id) {
  var next = PWM.paginate.next(page_id);

  if (next) {
    $(".paginate-next")
        .unbind("click.paginate")
        .bind("click.paginate", function(e){
      PWM.paginate.turn_to(next);
      return false;
    });
    $(".paginate-next").show();
  } else {
    $(".paginate-next").hide();
  }
};

PWM.paginate.set_navigation = function(page_id) {
  PWM.paginate.set_back(page_id);
  PWM.paginate.set_next(page_id);
};

PWM.paginate.set_index = function(page_id) {
  $(".paginate-index").html("");
  $(".paginate").each(function(i, el) {
    var pg = parseInt($(el).attr("page"), 10),
        click_id = "paginate-click-"+pg,
        html = "";

    if (pg === page_id) {
      html = "<a class=\""+click_id+" this-page\" href=\"#\">"+pg+"</a> ";
    } else {
      html = "<a class=\""+click_id+"\" href=\"#\">"+pg+"</a> ";
    }
    $(".paginate-index").append(html);

    $("."+click_id)
        .unbind("click.paginate")
        .bind("click.paginate", function(e) {
      PWM.paginate.turn_to(pg);
      return false;
    });
  });
};

PWM.paginate.turn_to = function(page_id) {
  $(".paginate").each(function(i, el){
    var pg = parseInt($(el).attr("page"), 10);
    if (pg === page_id) {
      $(el).show(75);
    } else {
      $(el).hide();
    }
  });
  PWM.paginate.set_navigation(page_id);
  PWM.paginate.set_index(page_id);
};

PWM.paginate.init = function() {
  PWM.paginate.n = $(".paginate").size();
  PWM.paginate.turn_to(1);
};

PWM.table = {};

PWM.table.ledgerify = function() {
  $(".ledgerify tr:odd").addClass("odd");
  $(".ledgerify tr:even").addClass("even");
};

PWM.photo = {};

PWM.photo.process = function(i) {
  var photo = $(this),
  w = parseInt(photo.width()),
  h = parseInt(photo.height()),
  h2 = h + PWM.settings.photo.blurb_height,
  wrapper = $("<div class=\"" + PWM.settings.photo.wrap_class + "\"></div>"),
  blurb = $("<div class=\"" + PWM.settings.photo.blurb_class + "\"><span></span></div>");
  blurb.find("span").html(photo.html());
  photo.html("");
  blurb.width(w+"px");
  blurb.height(PWM.settings.photo.blurb_height + "px");
  wrapper.height(h2+"px");
  wrapper.width(w+"px");
  wrapper.css("float", photo.attr("position"));
  photo.wrap(wrapper);
  photo.after(blurb);
};

PWM.photo.init = function() {
  $(".photo").each(PWM.photo.process);
};

$(document).ready(PWM.faq.init);
$(document).ready(PWM.paginate.init);
$(document).ready(PWM.photo.init);
