////////////////////////////////////////////////////////////////////////////////////////////////////
// © 2009 Noise Digital
// Author: Noise Digital
////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////
// Accordion Component (See: accordion-menu-v2.js)
////////////////////////////////////////////////////////////////////////////////////////////////////

var openPanel = null;

function onMyMenuOpen(obj)
{		
  var dl = obj.dl;
  var dt = obj.dt;
  var dd = obj.dd;
  //
  // Do something when an accordion pane is opened (Insert code below)
  //
  // Initialize Google maps
  initMaps();
};

function onMyMenuClose(obj)
{
  var dl = obj.dl;
  var dt = obj.dt;
  var dd = obj.dd;

  //
  // Do something when an accordion pane is closed (Insert code below)
  //
  // Clear accordion content
  //
  var list = YAHOO.util.Dom.getElementsByClassName('accordionContent','div',dd)
  var content = list[0]
  content.innerHTML = ""
  
};


var oOptions= 
{	
  /* [ bool ] if dependent is false, then each menu open/close independently*/
  dependent:true,
  
  /* [function] callback when a menu is opened*/
  onOpen:onMyMenuOpen,
  
  /* [function] ccallback when a menu is closed*/
  onClose:onMyMenuClose,

  /* [array] default ids of opened menues' dt*/
  openedIds:[],
  
  /* [number ] seconds for animations*/
  seconds:0.4,
  
  /*[ bool ] set true if the animation is to be played slower and slower and vise versa*/
  easeOut:true,
  
  /*[ bool ] set true if the animation is to be played*/
  animation:true
}
var setting = new AccordionMenu.setting('menu',oOptions);




////////////////////////////////////////////////////////////////////////////////////////////////////
// SWFAddress (Deep linking stuff)
////////////////////////////////////////////////////////////////////////////////////////////////////

function navigateTo( path )
{
  if(path.substring(0,1) == '/') {
    //
    // A leading slash means we need to handle an absolute path
    SWFAddress.setValue( path )  
  } else {
    //
    // No leading slash means we need to handle a relative path
    //
    var currentPath = SWFAddress.getValue();
    
    var localPath = currentPath.substring( 0 , currentPath.lastIndexOf("/") );
    
    SWFAddress.setValue( localPath + '/' + path )
    }
    
    //
    // Unload Google Map if one exists
    var mc = document.getElementById("map_canvas");
    if(mc) {
      mc.style.display = "none";
    if ( GUnload ) { 
      GUnload() 
    }
  }
}

//
// This function handles navigation requests from SWFAddress
// We are using faux mod_rewrite directives to generate the correct URL
//
function handleChange(event) 
{
  var path = event.path;
  var parts;
  if(parts = path.match(/news\/([0-9]+)/i)) {
    var cat = SWFAddress.getParameter('cat')||31;
    var template = SWFAddress.getParameter('template')||'Sample';
    loadElement( 'http://' + location.hostname + '/index.php?mact=News,cntnt01,detail,0&cntnt01returnid='+cat+'&cntnt01articleid=' + parts[1], 'news');
  }
  else if(parts = path.match(/careers\/([0-9]+)/i)) {
    loadElement( 'http://' + location.hostname + '/index.php?mact=Jobs,cntnt01,detail,0&cntnt01returnid=36&cntnt01jobid=' + parts[1] , 'careers')    
  }
  else if(parts = path.match(/([a-z0-9-]+)\/([a-z0-9-]+)/i)){
    loadElement( 'http://' + location.hostname + '/index.php?page=' + parts[2] , parts[1])
  }
}

//
// AJAX function for loading new HTML content into a given accordion pane
//
function loadElement(url, elemID) 
{
  //
  // Get accordion pane
  var elem = document.getElementById(elemID)
  
  //
  // Get accordion bar
  var accElem = document.getElementById('acc-' + elemID)
  
  //
  // Attach loader sprite to the accordion bar
  //
  loaderSpriteList = YAHOO.util.Dom.getElementsByClassName('ajax-loader','img',accElem)
  if(loaderSpriteList.length == 0) {
    //
    // Only attach a loader sprite if one does not exist
    //
    var loaderSprite = document.createElement("img");
    loaderSprite.src = "images/ajax-loader.gif";
    loaderSprite.className = "ajax-loader";
    accElem.appendChild(loaderSprite) 
  }
  //
  
  //
  // Create event handlers for AJAX request
  //
  var handleSuccess = function(o) 
  {
    if(o.responseText !== undefined) {
      //
      // Get the contents of the BODY tag
      //
      var content
      var parts = o.responseText.split("<body>");
      content = parts[1];
      content = content.replace(/<\/body>/,'');
      content = content.replace(/<\/html>/,'');
      
      //
      // Set page title using SWFAddress
      var titleList = o.responseText.match(/<title>([^<]+)<\/title>/,'');
      var title = titleList[1]
      title = title.replace(/&amp;/g,'&');
      SWFAddress.setTitle('Noise Digital | ' + title)
      
      //
      // Track page for Google Analytics
      pageTracker._trackPageview(title)
      //
      // Open the target accordion pane after a short delay
      setTimeout( function() {
        AccordionMenu.openDtById( 'acc-' + o.argument.elemID)    
      }, 100 );
      //
      // Set content of the target accordion page
      o.argument.elem.innerHTML = content;
      //
      // Remove loader sprite
      if(o.argument.loaderSprite) {
        o.argument.accElem.removeChild(o.argument.loaderSprite);
      }
      //
      //
      // Refresh MilkBox
      // See http://reghellin.com/milkbox/
      if(milkbox) {
        milkbox.reloadGalleries();
      }
      //
      // Execute in-line scripts on the new page
      var scripts = o.argument.elem.getElementsByTagName("script")
      for(var i=0; i<scripts.length; i++ ) {
        eval(scripts[i].innerHTML)
      }
      
      doSifr();
      openPanel = o.argument.elemID;
    }
  }
  var handleFailure = function(o)
  {
    if(o.responseText !== undefined){
      o.argument.elem.innerHTML = "Unable to load";
    }
  }
  var callback =
  {
    success:handleSuccess,
    failure: handleFailure,
    argument: { elem:elem, elemID:elemID, loaderSprite:loaderSprite, accElem:accElem  }
  };
  
  //
  // Begin AJAX request using Yahoo Connection Utility
  //
  var request = YAHOO.util.Connect.asyncRequest('GET', url, callback);

}

//
// Listen to SWF address for navigation changes
//
SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);


window.onload = function()
{
  if(location.hash == "") {
  navigateTo( '/news/recent-news' );
  }
}


////////////////////////////////////////////////////////////////////////////////////////////////////
// sIFR Text Replacement
////////////////////////////////////////////////////////////////////////////////////////////////////

function doSifr()
{
  //alert("doSifr()")
  //
  sIFR.replace(theSansBlackItalic, {
    selector: 'h1'
    ,css: [
    '.sIFR-root { text-align: left; font-weight: normal; color: #000000; text-transform:uppercase; leading:-10; }'
    ,'a { text-decoration: none; color: #FF9516; }'
    ,'a:link { color: #FF9516; }'
    ,'a:hover { color: #FF9516; }'
    ]
    ,wmode: 'transparent'
    ,tuneHeight: -9
  });


}

