/**
 * UofC wide js code.
 */

// Immediately hide all elements of js-hidden class
var _uofc_js_hidden_style = $('<style type="text/css">.js-hidden {display:none;}</style>');
$('head').append(_uofc_js_hidden_style);

// Immediately hide all elements of js-wait class
var _uofc_js_wait_style = $('<style type="text/css">.js-wait {display:none;}</style>');
$('head').append(_uofc_js_wait_style);

// Immediately show all elements of js-until class
var _uofc_js_until_style = $('<style type="text/css">.js-until-block {display:block;} .js-until-inline {display:inline;}</style>');
$('head').append(_uofc_js_until_style);

$(document).ready(function() {
  // Show all elements of js-wait class upon document being ready
  _uofc_js_wait_style.remove();

  // Hide all elements of js-until class upon document being ready
  _uofc_js_until_style.remove();
});


/*
 * Smooth scrolling for anchors
 */
$().oninit('a[href^=#]', function() {
  $(this).click(function(event){
    var href = this.href;
    var split_href = href.split('#');
    var target_name = split_href[split_href.length - 1];
    $.scrollTo('a[name='+target_name+']', 300, function() {
      window.location = href;
    });
    return false;
  });
}, []);

/**
 * Concatenates the values of a variable into an easily readable string
 * by Matt Hackett [scriptnode.com]
 * @param {Object} x The variable to debug
 * @param {Number} max The maximum number of recursions allowed (keep low, around 5 for HTML elements to prevent errors) [default: 10]
 * @param {String} sep The separator to use between [default: a single space ' ']
 * @param {Number} l The current level deep (amount of recursion). Do not use this parameter: it's for the function's own use
 */
function print_r(x, max, sep, l) {

  l = l || 0;
  max = max || 5;
  sep = sep || ' ';

  if (l > max) {
      return "[WARNING: Too much recursion]\n";
  }

  var
    i,
    r = '',
    t = typeof x,
    tab = '';

  if (x === null) {
    r += "(null)\n";
  }
  else if (t == 'object') {

    l++;

    for (i = 0; i < l; i++) {
      tab += sep;
    }

    if (x && x.length) {
      t = 'array';
    }

    r += '(' + t + ") :\n";

    for (i in x) {
      try {
        r += tab + '[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
      } catch(e) {
        return "[ERROR: " + e + "]\n";
      }
    }
  }
  else {
    if (t == 'string') {
      if (x == '') {
        x = '(empty)';
      }
    }
    r += '(' + t + ') ' + x + "\n";
  }

  return r;
};

function var_dump(input) {
  alert(print_r(input));
}
