////////////////////////////////////////////////////////////////////////////////////////////////////
// © 2009 Noise Digital
// Author: Noise Digital
////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////
// Accordion Component (See: accordion-menu-v2.js)
////////////////////////////////////////////////////////////////////////////////////////////////////

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 opened (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 Mechanism
////////////////////////////////////////////////////////////////////////////////////////////////////

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] + '&cntnt01detailtemplate=' + template, 'news');
        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)
			}
            
        }
    }
    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' );
    }
}
