/* ################################################################# */
/*                                                                   */
/*  TITLE:        GLOBAL.JS                                          */
/*  SITE:         nbcnewyork.com                                     */
/*  VERSION:      0.12                                               */
/*  LAST UPDATED: 2009/02/10                                         */
/*  UPDATED BY:   Brian Maniere                                      */
/*                                                                   */
/*  NAMESPACE: G                                                     */
/*                                                                   */
/*  PUBLIC DEFINITIONS:                                              */
/*    preloadImgs()                                                  */
/*    postloadImgs()                                                 */
/*    toggleImgs()                                                   */
/*                                                                   */
/*  PRIVATE DEFINITIONS:                                             */
/*    trackedEvents()                                                */
/*                                                                   */
/*  PUBLIC FUNCTIONS:                                                */
/*    prepSearchForm()                                               */
/*    outputHTML()                                                   */
/*    outputDebug()                                                  */
/*    navTo()                                                        */
/*    doPixelTracking()                                              */
/*    setMostPopularFilter()                                         */
/*                                                                   */
/*  PREREQUISTES:                                                    */
/*    U.preloadImgs                                                  */
/*    U.loadImg                                                      */
/*    U.postloadImgs                                                 */
/*    U.toggleImgs                                                   */
/*    U.toggleImg                                                    */
/*    U.isDomBrowser                                                 */
/*    U.$                                                            */
/*    U.doLoadImages                                                 */
/*    U.addEvent                                                     */
/*    U.doDoLoadImages                                               */
/*    U.insertAfter                                                  */
/*                                                                   */
/* ################################################################# */


(function() {

if(!window.G) {
  window['G'] = {};
}

  // preloadImgs definition
U.preloadImgs = (
  new U.loadImg("NBC_main_v6_A-1.jpg")
);

  // postloadImgs definition
U.postloadImgs = (
  new U.loadImg("btn_go_h.gif")
);

  // toggleImgs definition.  Use toggle button css id as the array identifier when adding to this array
U.toggleImgs["searchSubmit"] = new U.toggleImg("btn_go.gif","btn_go_h.gif");

  // behaviors for search form
function prepSearchForm() {
  var keyPressed = false;
  if (U.isDomBrowser) {
    if (U.$("searchForm")) {
      var searchForm = U.$("searchForm");
      var searchText = U.$("searchText");
      searchText.onfocus = function() {
        if (this.value=='Search') {
          this.value='';
        }
      }
      searchText.onkeypress = function(e) {
      keyPressed = true;
        if (U.enterKeyPressed(e)) {
          searchForm.submit();
        }
      }
      searchForm.onsubmit = function() {
        if (searchText.value == "Search" && !keyPressed) {
          searchText.value='';
        }
      }     
      U.$("searchSubmit").onmouseover = function() {
        this.src = U.imagePath + U.toggleImgs["searchSubmit"]["hoverImg"];
      }
      U.$("searchSubmit").onmouseout = function() {
        this.src = U.imagePath + U.toggleImgs["searchSubmit"]["defaultImg"];
      }
    }
    return true;
  }
  return false;
}
window['G']['prepSearchForm'] = prepSearchForm;

  // writes markup to screen within specified divID.  Used by Media Viewer.
function outputHTML(markup, divID) {
  if (U.$(divID)) {
    var targetNode = U.$(divID);
    targetNode.innerHTML = markup;
  }
}
window['G']['outputHTML'] = outputHTML;

  // writes debug information to screen.  Outputs the msg param to the div matching with the id in the divID param
function outputDebug(msg, divID) {
  if (U.$(divID)) {
    var parentNode = U.$(divID);
    if (!U.$("debug")) {
      var div = document.createElement("div");
      div.setAttribute("id","debug");
      U.insertAfter(div, parentNode);
    }
    var d = U.$("debug");
    var p = document.createElement("p");
    p.innerHTML = msg;
    d.appendChild(p);
  }
}
window['G']['outputDebug'] = outputDebug;

  // writes debug information to screen.  Outputs the msg param to a new div that is created as the child of the body
function outputDebug2(msg) {
  if (!U.$("debug2")) {
    var parentNode = document.getElementsByTagName("body")[0];
    var div = document.createElement("div");
    div.setAttribute("id","debug2");
    parentNode.appendChild(div);
  }
  var d = U.$("debug2");
  var p = document.createElement("p");
  p.innerHTML = msg;
  d.appendChild(p);
}
window['G']['outputDebug2'] = outputDebug2;


function navTo(nextURL) {
  document.location.replace(nextURL);
}
window['G']['navTo'] = navTo;

  // trackedEvents definition
var trackedEvents = new Array();
trackedEvents[7]  = "Homepage Multimedia Module Clicks";
trackedEvents[8]  = "Homepage Multimedia Nav Clicks";
trackedEvents[16] = "Poll ClickThrough Tracker";
trackedEvents[44] = "Show Articles";
trackedEvents[45] = "Show Videos";
trackedEvents[46] = "Show Galleries";
trackedEvents[51] = "Slideshow Tracker";
trackedEvents[52] = "MediaViewer Timeline Clicks";
trackedEvents[53] = "MediaViewer Top Story Clicks";
trackedEvents[54] = "MediaViewer Full Story Clickthrus";
trackedEvents[57] = "MediaViewer Next Story Clicks";
trackedEvents[58] = "MediaViewer Previous Story Clicks";
trackedEvents[59] = "MediaViewer Most Commented Button Clicks";
trackedEvents[60] = "MediaViewer List View Clicks";
trackedEvents[61] = "MediaViewer Next Page Clicks";
trackedEvents[62] = "MediaViewer Previous Page Clicks";
trackedEvents[63] = "MV Most Viewed Button Clicks";
trackedEvents[64] = "MV Most Viewed Item 1";
trackedEvents[65] = "MV Most Viewed Item 2";
trackedEvents[66] = "MV Most Viewed Item 3";
trackedEvents[67] = "MV Most Viewed Item 4";
trackedEvents[68] = "MV Most Viewed Item 5";
trackedEvents[69] = "MV Most Viewed Item 6";
trackedEvents[70] = "MV Most Viewed Item 7";
trackedEvents[71] = "MV Most Viewed Item 8";
trackedEvents[72] = "MV Most Commented Item 1";
trackedEvents[73] = "MV Most Commented Item 2";
trackedEvents[74] = "MV Most Commented Item 3";
trackedEvents[75] = "MV Most Commented Item 4";
trackedEvents[76] = "MV Most Commented Item 5";
trackedEvents[77] = "MV Most Commented Item 6";
trackedEvents[78] = "MV Most Commented Item 7";
trackedEvents[79] = "MV Most Commented Item 8";

  // fetches an image with a query string that helps us track user events and learn how to make a better site
function doPixelTracking(eventNumber, doPageRefresh) {
  if (!doPageRefresh) { // this allows the doPageRefresh param to be optional / undefined
    doPageRefresh = false;
  }
  var _srcURL = "";
  var _reportSuiteID = "";
  var _siteName = "";
  var _eventName = "";
  var _eventNumber = "Event" + eventNumber;
  var _pe = "";
  var _c3 = "";
  if (typeof s_account == 'undefined'  || typeof s.prop10 == 'undefined' || typeof trackedEvents[eventNumber] == 'undefined') {
    return false;
  }
  else {
    if (doPageRefresh) {
      _reportSuiteID =  s_account;
      _c3 = "&c3=Gallery";  // currently hardcoded for the case of a slideshow/gallery
      _eventName = document.title.replace(/^\s+|\n+|\t+|\s+$/g,''); // strip whitespace
      if (_eventName.match('|')) { // only use that part of the title before any pipe
        _eventName = _eventName.split('|')[0];
      }
    }
    else {
      var tokens =  s_account.split(",");
      _reportSuiteID =  tokens[tokens.length-1];
      _pe = "pe=lnk_o&";
      _eventName = trackedEvents[eventNumber];
    }
    _siteName = s.prop10;
  }
  _srcURL = "http://oimg.nbcuni.com/b/ss/" + _reportSuiteID + "/1/H.2-pdv-2/s16571644299919?" + _pe + "pev2=" + _siteName + "&pageName=" + _eventName + _c3 + "&events=" + _eventNumber;
  _srcURL = U.charEncodeSpaces(_srcURL);
  var img = new Image();
  img.src = _srcURL;
    // alert(img.src);
}
window['G']['doPixelTracking'] = doPixelTracking;

  // uses U.setClass to update the class of the mostPopularItems and mostPopularLists nodes
function setMostPopularFilter(cssClass) {
  U.setClass('mostPopularFilterer',cssClass);
  U.setClass('mostPopularLists',cssClass);
}
window['G']['setMostPopularFilter'] = setMostPopularFilter;

})();

  // load image(s) before window.onload
U.doLoadImages(U.preloadImgs);

  // load image(s) upon window.onload
U.addEvent(window,'load',U.doDoLoadImages);

  // prep forms upon window.onload
U.addEvent(window,'load',G.prepSearchForm);
