topical media & game development

talk show tell print

mobile-graphic-enchant-doc-template-javascript-all.js / js



  
@fileOverview Contains standard code in the namespace 'wbos' and code specifically written for Codeview in the namespace 'codeview'
author: Wouter Bos (www.thebrightlines.com) @since 1.0 - 2010-09-10
version: 1.0 - 2010-09-10

  
  
  if (typeof(wbos) == "undefined") {
          
@namespace Standard code of Wouter Bos (wbos)

  
          wbos = {}
  }
  if (typeof(wbos.CssTools) == "undefined") {
          
@namespace Namespace for CSS-related functionality

  
          wbos.CssTools = {}
  }
  
  
@namespace Fallback for CSS advanced media query @class @since 1.0 - 2010-09-10
version: 1.0 - 2010-09-10

  
  wbos.CssTools.MediaQueryFallBack = ( function() {
          var config = {
                  cssScreen: "/css/screen.css",
                  cssHandheld: "/css/handheld.css",
                  mobileMaxWidth: 660,
                  testDivClass: "cssLoadCheck",
                  dynamicCssLinkId: "DynCssLink",
                  resizeDelay: 30
          }
          var noMediaQuery = false;
          var delay;
          var currentCssMediaType;
  
          // Adding events to elements in the DOM without overwriting it
          function addEvent(element, newFunction, eventType) {
                  var oldEvent = eval("element." + eventType);
                  var eventContentType = eval("typeof element." + eventType)
                  
                  if ( eventContentType != 'function' ) {
                          eval("element." + eventType + " = newFunction")
                  } else {
                          eval("element." + eventType + " = function(e) { oldEvent(e); newFunction(e); }")
                  }
          }
          
          // Get the the inner width of the browser window
          function getWindowWidth() {
                  if (window.innerWidth) {
                          return window.innerWidth;
                  } else if (document.documentElement.clientWidth) {
                          return document.documentElement.clientWidth;
                  } else if (document.body.clientWidth) {
                          return document.body.clientWidth;
                  } else{
                          return 0;        
                  }
          }
          
          function addCssLink(cssHref) {
                  var cssNode = document.createElement('link');
                  var windowWidth;
                  cssNode.type = 'text/css';
                  cssNode.rel = 'stylesheet';
                  cssNode.media = 'screen, handheld, fallback';
                  cssNode.href = cssHref;
                  document.getElementsByTagName("head")[0].appendChild(cssNode);
          }
          
  
          /* Start public */
          return {
                    
Adds link to CSS in the head if no CSS is loaded @since 1.0 - 2010-08-21
version: 1.0 - 2010-08-21
parameter: {String|Object} cssScreen URL to CSS file for larger screens
parameter: {String|Object} cssHandheld URL to CSS file for smaller screens
parameter: {Number} mobileMaxWidth Maximum width for handheld devices @example wbos.CssTools.MediaQueryFallBack.LoadCss(['screen.css', 'screen2.css'], 'mobile.css', 480)

  
                  LoadCss: function(cssScreen, cssHandheld, mobileMaxWidth) {
                          // Set config values
                          if (typeof(cssScreen) != "undefined") {
                                  config.cssScreen = cssScreen;        
                          }
                          if (typeof(cssHandheld) != "undefined") {
                                  config.cssHandheld = cssHandheld;        
                          }
                          if (typeof(mobileMaxWidth) != "undefined") {
                                  config.mobileMaxWidth = mobileMaxWidth;        
                          }
                          
                          // Check if CSS is loaded
                          var cssloadCheckNode = document.createElement('div');
                          cssloadCheckNode.className = config.testDivClass;
                          document.getElementsByTagName("body")[0].appendChild(cssloadCheckNode);
                          if (cssloadCheckNode.offsetWidth != 100 && noMediaQuery == false) {
                                  noMediaQuery = true;
                          }
                          cssloadCheckNode.parentNode.removeChild(cssloadCheckNode)
                          
                          if (noMediaQuery == true) {
                                  // Browser does not support Media Queries, so JavaScript will supply a fallback 
                                  var cssHref = "";
                                  
                                  // Determines what CSS file to load
                                  if (getWindowWidth() <= config.mobileMaxWidth) {
                                          cssHref = config.cssHandheld;
                                          newCssMediaType = "handheld";
                                  } else {
                                          cssHref = config.cssScreen;
                                          newCssMediaType = "screen";
                                  }
                                  
                                  // Add CSS link to <head> of page
                                  if (cssHref != "" && currentCssMediaType != newCssMediaType) {
                                          var currentCssLinks = document.styleSheets
                                          for (var i = 0; i < currentCssLinks.length; i++) {
                                                  for (var ii = 0; ii < currentCssLinks[i].media.length; ii++) {
                                                          if (typeof(currentCssLinks[i].media) == "object") {
                                                                  if (currentCssLinks[i].media.item(ii) == "fallback") {
                                                                          currentCssLinks[i].ownerNode.parentNode.removeChild(currentCssLinks[i].ownerNode)
                                                                          i--
                                                                          break;
                                                                  }
                                                          } else {
                                                                  if (currentCssLinks[i].media.indexOf("fallback") >= 0) {
                                                                          currentCssLinks[i].owningElement.parentNode.removeChild(currentCssLinks[i].owningElement)
                                                                          i--
                                                                          break;
                                                                  }
                                                          }
                                                  }
                                          }
                                          if (typeof(cssHref) == "object") {
                                                  for (var i = 0; i < cssHref.length; i++) {
                                                          addCssLink(cssHref[i])
                                                  }
                                          } else {
                                                  addCssLink(cssHref)
                                          }
                                                                                  
                                          currentCssMediaType = newCssMediaType;
                                  }
  
                                  
                                  // Check screen size again if user resizes window 
                                  addEvent(window, wbos.CssTools.MediaQueryFallBack.LoadCssDelayed, 'onresize')
                          }
                  },
                  
                    
Runs LoadCSS after a short delay @since 1.0 - 2010-08-21
version: 1.0 - 2010-08-21 @example wbos.CssTools.MediaQueryFallBack.LoadCssDelayed()

  
                  LoadCssDelayed: function() {
                          clearTimeout(delay);
                          delay = setTimeout( "wbos.CssTools.MediaQueryFallBack.LoadCss()", config.resizeDelay)
                  }
                  
          }
          /* End public */
  })();
  
  
@namespace Adds a function to an event of a single element. Use this if you don't want to use jQuery @class @since 1.0 - 2010-02-23
version: 1.0 - 2010-02-23

  
  wbos.Events = ( function() {
          /* Start public */
          return {
                    
Adds a function to an event of a single element @since 1.0 - 2010-02-23
version: 1.0 - 2010-02-23
parameter: {Object} element The element on which the event is placed
parameter: {Function} newFunction The function that has to be linked to the event
parameter: {String} eventType Name of the event @example wbos.Events.AddEvent( document.getElementById('elementId'), functionName, "onclick" )

  
                  AddEvent: function( element, newFunction, eventType ) {
                          var oldEvent = eval("element." + eventType);
                          var eventContentType = eval("typeof element." + eventType)
                          
                          if ( eventContentType != 'function' ) {
                                  eval("element." + eventType + " = newFunction")
                          } else {
                                  eval("element." + eventType + " = function(e) { oldEvent(e); newFunction(e); }")
                          }
                  }
          }
          /* End public */
  })();
  
  if (typeof(codeview) == "undefined") {
          
@namespace Code written for the Codeview template

  
          codeview = {}
  }
  
  
@namespace Enables filtering in class lists @class @since 1.0 - 2010-11-08
version: 1.0 - 2010-11-08

  
  codeview.classFilter = ( function() {
          function onkeyup_ClassFilter() {
                  var listItems
                  var search = document.getElementById('ClassFilter').value
                  search = search.toLowerCase()
                  if (document.getElementById('ClassList')) {
                          listItems = document.getElementById('ClassList').getElementsByTagName('li')
                          filterList(listItems, search)
                  }
                  if (document.getElementById('ClassList2')) {
                          listItems = document.getElementById('ClassList2').getElementsByTagName('li')
                          filterList(listItems, search)
                  }
                  if (document.getElementById('FileList')) {
                          listItems = document.getElementById('FileList').getElementsByTagName('li')
                          filterList(listItems, search)
                  }
                  if (document.getElementById('MethodsListInherited')) {
                          var links = document.getElementById('MethodsListInherited').getElementsByTagName('a')
                          var linksSelected = new Array()
                          for (var i=0; i < links.length; i++) {
                                  if (links[i].parentNode.parentNode.tagName == "DD") {
                                          linksSelected.push(links[i])
                                  }
                          }
                          filterList(linksSelected, search)
                  }
                  if (document.getElementById('MethodsList')) {
                          listItems = document.getElementById('MethodsList').getElementsByTagName('tbody')[0].getElementsByTagName('tr')
                          filterList(listItems, search, document.getElementById('MethodDetail').getElementsByTagName('li'))
                  }
          }
          
          function filterList(listItems, search, relatedElements) {
                  var itemContent = ""
                  for (var i=0; i < listItems.length; i++) {
                          itemContent = listItems[i].textContent||listItems[i].innerText
                          if (itemContent != undefined) {
                                  itemContent = itemContent.toLowerCase()
                                  itemContent = itemContent.replace(/\s/g, "")
                                  if (itemContent.indexOf(search) >= 0 || itemContent == "") {
                                          listItems[i].style.display = ""
                                  } else {
                                          listItems[i].style.display = "none"
                                  }
                                  if (relatedElements != null) {
                                          filterRelatedList(listItems[i], search, relatedElements)
                                  }
                          }
                  }
          }
          
          function filterRelatedList(listItem, search, relatedElements) {
                  var itemIndex = parseInt(listItem.className.replace('item', ''))
                  if (itemIndex <= relatedElements.length) {
                          if (relatedElements[itemIndex].className == "item"+ itemIndex) {
                                  relatedElements[itemIndex].style.display = listItem.style.display
                          }
                  }
          }
          
          
          
          
          
          /* Start public */
          return {
                  Init: function() {
                          wbos.Events.AddEvent(
                                  document.getElementById('ClassFilter'),
                                  onkeyup_ClassFilter,
                                  "onkeyup"
                          )                                        
                  }
          }
          /* End public */
  })();
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.