topnav_rollout_interval = null;

function topnav_rollout() {
  clearInterval(topnav_rollout_interval);
  topnav_rollout_interval = setInterval("topnav_rollout_do();", 500);
}

function topnav_rollover() {
  clearInterval(topnav_rollout_interval);
}

function topnav_rollout_do() {
  clearInterval(topnav_rollout_interval);
  $("#topnav").find(".jq_over").removeClass("jq_over");
}

$(document).ready(function(){

  /* dev rules */
  $("#hooks a").click(function() {
    $("body").toggleClass("hooks");
    return false;
  });

  // topnav
  $("#topnav > div > ul > li:not(.selected) > a").mouseover(function() {
    topnav_rollout_do();
    if ($(this).parents("li").find("ul").length) {
      $(this).parent().addClass("jq_over");
      $(this).parents("#topnav").find("li.selected ul").addClass("jq_over");
      $(this).parents("#topnav").find("div.shim").addClass("jq_over");
    }
    topnav_rollover();
  }).mouseout(function() {
    topnav_rollout();
  });

  $("#topnav div.shim").add("#topnav ul ul").mouseover(function() {
    topnav_rollover();
  }).mouseout(function() {
    topnav_rollout();
  });

  // login/register links
  $('a.form_link').click(function(){
    var href_parts = $(this).attr('href').split('?');
    $('#form_link_form').attr({action: href_parts[0]});
    if (href_parts[1]) {
      var qs = href_parts[1].split('#')[0];
      $.each(qs.split('&'), function(){
        $('#form_link_form input[name=' + this.split('=')[0] + ']').val(
          unescape(this.split('=')[1])
        );
      });
    }
    $('#form_link_form').submit();
    return false;
  });

  // useful
  $('form.no_submit').submit(function(){
    return false;
  });

});


/* CONVERT INPUT BUTTONS TO PRETTY ICON-STYLE A BUTTONS */

$(document).ready(function() {
  convert_input_button();
});

function convert_input_button() {

  $("div[class^=icon-]").each(function() {
    var icon = $(this).attr("class").replace(/^icon-/, "");

    var input = $(this).find("input.button, input.button2");

    if (!input.is(':hidden')) {

      var input_value = input.val();
      var input_class = input.attr("class");

      $(this).append('<a class="' + input_class + '"><span class="icon ' + icon + '">' + input_value + '</span></a>')
        .click(function() {
          input.click();
          return false;
        });

        input.addClass("hidden");
      } else {
        $(this).find('a').unbind('click');
        $(this).find('a').click(function(){
          input.click();
          return false;
        });
      }

  });
}


/* LOCALIZED STRING HANDLING */ 

LOCALIZED_STRINGS = {};

function set_localized_strings(obj) {
  for (var prop in obj) {
    set_localized_string(prop, obj[prop]);
  }
}

function set_localized_string(str_english, str_localized) {
  LOCALIZED_STRINGS[str_english] = str_localized ? str_localized : str_english;
}

function get_localized_string(str_english) {
  return LOCALIZED_STRINGS[str_english] ?
    LOCALIZED_STRINGS[str_english] : str_english;
}

/* retrieve value from "prefix-value" from a class or space-delimited list of classes */

function get_value_from_class(prefix, class_list) {
  if (typeof class_list != "string") {
    class_list = $(class_list).attr("class");
  }
  class_list = " " + class_list + " ";
  prefix = prefix.replace(/(.*?)[-]?$/, " $1-");
  var idx = class_list.indexOf(prefix);
  if (idx == -1) {
    return "";
  } else {
    var val = class_list.substring(idx + prefix.length);
    val = val.substring(0, val.indexOf(" "));
    return val;
  }
}

