// A nice way to include javascript from other include from
// http://www.phpied.com/javascript-include/

function include_dom(script_filename, onLoadCallback) {   
   var html_doc = document.getElementsByTagName('head').item(0);
   var js = document.createElement('script');
   js.setAttribute('language', 'javascript');
   js.setAttribute('type', 'text/javascript');
   js.setAttribute('src', script_filename);
   // Attach some callbacks one for internet explorer and the other for
   // other browsers that will be triggered when the script has loaded
   // if one is passed in
   if ('undefined' != typeof onLoadCallback) {
     if (js.addEventListener) {
       js.addEventListener("DOMContentLoaded", onLoadCallback, false);
     }
     js.onreadystatechange = function () {
       if (js.readyState == 'complete') {
        // Trigger callback
        onLoadCallback();
       }
     }
     js.onload = function () {
       // Trigger callback
       onLoadCallback();
     }
   }
   
   html_doc.appendChild(js);
   return false;
}

var included_files = new Array();

function include_once(script_filename,onLoadCallback) {
   if (!in_array(script_filename, included_files)) {
       included_files[included_files.length] = script_filename;
       include_dom(script_filename,onLoadCallback);
   }
}

function in_array(needle, haystack) {
   for (var i = 0; i < haystack.length; i++) {
       if (haystack[i] == needle) {
           return true;
       }
   }
   return false;
}

/* Misc Utils */

// Extracts the text from the first h1 in the page or returns '' if
// there is no h1 or its empty
function first_h1_tag_text() {
  var header_tags = document.getElementsByTagName('h1');
  if (header_tags.length < 1) {
    return '';
  }
  
  var header = header_tags[0];
  if (header.childNodes.length < 1) {
    return '';
  }
  
  return header.firstChild.nodeValue;
}