








var expanded = false;
var origHeight = '';

function toggleExpanding(link)
{
  toggle = $(link);
  container = $(link).up(0).previous(0);
  contents = $(container).down(0)
  if (!expanded)
  {
    Effect.BlindDown(container, { restoreAfterFinish: false, duration: 0.5, scaleFrom: 100, scaleTo: contents.offsetHeight / container.offsetHeight * 100 });
    expanded = true;
    toggle.className = 'collapsing_toggle';
    toggle.innerHTML = (typeof collapseText == 'undefined' ? 'Collapse' : collapseText);
  }
  else
  {
    Effect.BlindDown(container, { restoreAfterFinish: false, duration: 0.5, scaleFrom: 100, scaleTo: origHeight / container.offsetHeight * 100 });
    expanded = false;
    toggle.className = 'expanding_toggle';
    toggle.innerHTML = (typeof expandText == 'undefined' ? 'Expand for more' : expandText);
    document.location.hash = 'contents_top';
  }
}

function showExpandingNav()
{
  $$('div.expanding_contents').each(function(s) {
    if ($(s).getHeight() > 125)
    {
      $(s).up(0).next('div.expanding_nav').style.display = 'block';
      origHeight = $(s).up(0).getHeight();
    }
    else
    {
      $(s).up(0).next('div.expanding_nav').style.display = 'none';
      $(s).up(0).style.height = $(s).getHeight() + "px";
    }
  });

}

function showBackground()
{
  document.body.style.backgroundImage = 'url(/assets/images/nav/background.jpg )';
}


function getFirstAncestorByClassName(element, className) {
		// if no tag or class is specified, simply get the parent element
		if (className == null) return $(this.parentNode);

		// store this element to a local var
		var el = element;

		// if a tag and class are specified
		if (className) {
			// work your way up the DOM by parent element
			while (el = $(el.parentNode)) {
				// if tag equals the elment's tag name and matches the class regex, return that element
				if (el.className.indexOf(className) != -1) {
				  return el;
				}
			}
		}
		// you should never get to this point but this is here just in case
		return null;
	}



/* Calabash Player Code */
// these functions are called by the pages on listen/playlist/album links
var flashPlayerRef;

function openPlayer(id, type, player_opts) {
	var playerAction, idName;

	// set default player options
	if (!player_opts) {
	    var player_opts = "resizable=1,scrollbars=0,width=380,height=450";
	}

	// set action type for making the player URL
	switch(type) {
		case "sample":
		case "sampleBuy":
            playerAction = "loadSample";
            idName = "sampleID";
		    break;

		case "album":
		case "albumBuy":
            playerAction = "loadAlbum";
            idName = "albumID";
		    break;

		case "playlist":
		case "playlistBuy":
		    playerAction = "loadPlaylist";
            idName = "playlistID";
		    break;
	}

	// build URLs
	var dom = "calabashmusic.com";
	var real_dom = "nationalgeographicmusic.com";
	var player_name = "xspfPlayer";

	var playlist_url = "http://"+dom+"/world/publisher/flashPlayer/action/view?playerAction="+playerAction+"&"+idName+"="+id+"&real_domain="+real_dom;
	if (type == "sampleBuy" || type == "albumBuy" || type == "playlistBuy") {
	    playlist_url += "&addItemToCart="+id;
	}

	// if player is open, refresh playlist, otherwise, launch player in a window
    if (flashPlayerRef = window.open(playlist_url,player_name,player_opts)) {
		return flashPlayerRef;
	} else {
		return window.open(playlist_url,player_name,player_opts);
	}

	return false;
}

// functions for viewing the player
function loadSample(songID, player_opts) {
	if (flashPlayerRef = openPlayer(songID, "sample", player_opts) ) {
		flashPlayerRef.focus();
	}
}

function loadAlbum(albumID, player_opts) {
    if (flashPlayerRef = openPlayer(albumID, "album", player_opts)) {
        flashPlayerRef.focus();
    }
}

function loadPlaylist(playlistID, player_opts) {
	if (flashPlayerRef = openPlayer(playlistID, "playlist", player_opts) ) {
		flashPlayerRef.focus();
	}
}

// functions for buying directly from the website
function buySample(sampleID, player_opts) {
    if (flashPlayerRef = openPlayer(sampleID, "sampleBuy", player_opts)) {
		flashPlayerRef.focus();
	}
}

function buyAlbum(albumID, player_opts) {
    if (flashPlayerRef = openPlayer(albumID, "albumBuy", player_opts)) {
		flashPlayerRef.focus();
	}
}

function buyPlaylist(playlistID, player_opts) {
	if (flashPlayerRef = openPlayer(playlistID, "playlistBuy", player_opts)) {
		flashPlayerRef.focus();
	}
}

function iLog(obj)
{
  if(typeof console != "undefined")
  {
    console.log(obj);
  }
}

// directory functions
function loadAlphabet(container, directoryContainer, alphUrl, dirType, dirUrl, locale)
{
  var selectedAlphabets = document.getElementsByClassName('alphabet-container',container);
  //var selectedDirectories = document.getElementsByClassName('directory-container',container);
  loadingAlphabet = true;
  loadDirectory(directoryContainer, 'a', dirUrl, dirType, locale);
  var url = alphUrl + dirType + "/" + locale;
  var params = "";
	var myAjax = new Ajax.Updater(selectedAlphabets[0], url, { method:     'get',
	                                                  parameters: params,
	                                                  onComplete: function()
    {
	    loadingAlphabet = false;
	    activateAlphabetTabs();
	  }});
}

function loadDirectoryFeedback(divId, displayText, numDots)
{
  if (!loadingDirectory)
    return;
  var ellipsis;

  switch(numDots)
  {
    case 0: ellipsis = ""; break;
    case 1: ellipsis = "."; break;
    case 2: ellipsis = ".."; break;
    case 3: ellipsis = "..."; break;
  }
  $(divId).innerHTML = '<p class="loading">' + displayText + ellipsis + '</p>';
  numDots++;
  setTimeout("loadDirectoryFeedback('" + divId + "', '" +  displayText + "', " + (numDots % 4) + ")", 300);
}

function loadDirectory(container, letter, urlPath, dirType, locale)
{
  var selectedDirectories = document.getElementsByClassName('directory-container',container);
  loadingDirectory = true;
  loadDirectoryFeedback(selectedDirectories[0].id, 'loading', 0);
  var url = urlPath + dirType + "/" + locale;
  var layoutType = (selectedDirectories[0].className.indexOf('directory-music-page') != -1 ? '&layout=azmusic' : '');
  var params = "letter=" + letter + layoutType;
  var myAjax = new Ajax.Updater(selectedDirectories[0], url, { method:     'get',
	                                                  parameters: params,
	                                                  onComplete: function()
    {
	    loadingDirectory = false;
	  }});
}

function selectIndexTab(tabId, tabClassName, parentId)
{
  var indexTabs = document.getElementsByClassName(tabClassName, $(parentId));
  var selectedIndexTabIndex;
  for (var i = 0; i < indexTabs.length; i++)
  {
    indexTabs[i].className = indexTabs[i].className.replace(' selected', '');
    if (indexTabs[i].id == tabId)
      selectedIndexTabIndex = i;
  }
  $(tabId).className += ' selected';
}

function highlightLetter(letter, alphabetContainer) {
	var currentAlphabetTabs = document.getElementsByClassName('alphabet_tab',alphabetContainer);
 	for (var i = 0; i < currentAlphabetTabs.length; i++)
	{
		if (currentAlphabetTabs[i].className.indexOf('selected') != -1)
			currentAlphabetTabs[i].className = currentAlphabetTabs[i].className.replace(' selected', '');
	}
 	letter.className += ' selected';
}

function getDirectorySettings(div) {
	var directory = {};
  if ($$('div.js-directory-module')[0] == null) {
    var moduleInstance = getFirstAncestorByClassName('js-directory-module');
    alert(moduleInstance);
    var alphabetDivs = document.getElementsByClassName('alphabet_tabs_container');
    var directoryDivs = document.getElementsByClassName('directory-container','global-directory');
    var directoryType = directoryDivs[0].id.substring(directoryDivs[0].id.lastIndexOf('-')+1,directoryDivs[0].id.length);
  } else {
    var moduleInstance = getFirstAncestorByClassName('js-directory-module');
    var alphabetDivs = document.getElementsByClassName('alphabet_tabs_container');
    var directoryDivs = document.getElementsByClassName('directory-container',moduleInstance);
    var directoryType = directoryDivs[0].id.substring(directoryDivs[0].id.lastIndexOf('-')+1,directoryDivs[0].id.length);
  }
	directory = {"moduleInstance": moduleInstance, "directoryDiv": directoryDivs[0], "alphabetDiv": alphabetDivs[0], "directoryType": directoryType};
	return directory;
}

function handleIndexTabs() {
  var currentDirectory = getDirectorySettings(this);
	var tabDirectoryType = this.id.substring(this.id.lastIndexOf('_')+1,this.id.length);

  for (var i = 0; i < indexTabs.length; i++)
  {
    indexTabs[i].className = indexTabs[i].className.replace(' selected', '');
  }
  this.className += ' selected';
  currentDirectory.directoryDiv.id='directory-'+tabDirectoryType;
  loadAlphabet(currentDirectory.moduleInstance, currentDirectory.moduleInstance, "/view/component.alphabet/",tabDirectoryType, "/view/component.directory/", getLocale());
}

function activateIndexTabs() {
	for (var i = 0; i < indexTabs.length; i++)
  {
    Event.observe(indexTabs[i],'click', handleIndexTabs.bindAsEventListener(indexTabs[i]));
	}
}

function handleAlphabetTabs(e) {
  var currentDirectory = getDirectorySettings(this);
  var selectedLetter = this.id.substring(this.id.lastIndexOf('_')+1,this.id.length);
  highlightLetter(this, currentDirectory.alphabetDiv);
  loadDirectory(currentDirectory.moduleInstance, selectedLetter, '/view/component.directory/', currentDirectory.directoryType, getLocale());
}

function activateAlphabetTabs() {
	var alphabetTabs = document.getElementsByClassName('alphabet_tab');
	for (var i = 0; i < alphabetTabs.length; i++)
  {
    Event.observe(alphabetTabs[i],'click', handleAlphabetTabs.bindAsEventListener(alphabetTabs[i]));
  }
}

function openNewWindow(url,h,w) {
	window.open(url, 'ngwm', 'width='+w+',height='+h);
}

// Newsletter signup form

function submitNewsletter() {
	var email = $('newsletter-email').value;
	var today = new Date();
	var todayString = today.getFullYear();
	if (today.getMonth() + 1 < 10) todayString += '0' + (today.getMonth() + 1);
	else todayString += (today.getMonth() + 1);
	if (today.getDate() < 10) todayString += '0' + today.getDate();
	else todayString += today.getDate();
	if (validateEmail(email)) {
		var post = 'http://web.bigfootinteractive.com:9000/api/RecordUploadQueue.mpl?client_name=National%20Geographic%20Society&client_token=ELQV8N3SOXQ89CUKEOV8&plist_name=NG_Master_List&REFERRING_SITE=MUSIC&campaign_name=Data_Collection&action_type=Upload&upload_type=merge_replace&check_email_addr=Y&optin_mask_add=N03&P/SOURCE_WORLD_MUSIC=MUSICHOMEPAGEAPI';
		post += '&email_addr=' + email + '&profile_key=' + email;
		post += '&P/DATE_WORLD_MUSIC=' + todayString;
		$('newsletter-hidden').src = post;
		$('newsletter-error').style.display = 'none';
		$('newsletter-fields').style.display = 'none';
		$('newsletter-confirm').style.display = 'block';
		$('newsletter-email').value = '';
	}
	return false;
}

function validateEmail(email) {
  var theStr = new String(email)
  var index = theStr.indexOf('@');
  if (index > 0) {
    	var pindex = theStr.indexOf('.', index);
  	if ((pindex > index + 1) && (theStr.length > pindex + 1)) {
  		var sindex = theStr.indexOf(' ');
  		if (sindex == -1) {
  			return true;
  		}
  	}
  }
  $('newsletter-error').style.display = 'block';
  return false;
}

function showNewsletter() {
  newsletterWindow = window.open('http://newsletters.nationalgeographic.com/p/National%20Geographic%20Society/WorldMusic_sample','newsletterWindow','width=700,height=600,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0');
  if (window.focus) {
    newsletterWindow.focus()
  }
  void(0);
}

function showRadio() {
  radioWindow = window.open('http://r1.grayv.com/strm/ngm/streamer3.html','radioWindow','width=380,height=40,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0');
  if (window.focus) {
    newsletterWindow.focus()
  }
  void(0);
}

function showSongPlayer() {
  $('song-player-div').style.display = 'block';
  setTimeout("document.getElementById('song-player').SetVariable('player:jsPlay', '')", 100);
}


function popstreamplayer() {
  if (window.location.pathname.indexOf('/view/page.basic/radio') != -1) {
    self.close();
  } else {
    radioWindow = window.open('/view/page.basic/radio ', 'radioWindow', 'height=143, width=324, scrollbars=no, resizable=no');
    radioWindow.focus();
  }
}

var DropDownMenu = Class.create();

DropDownMenu.prototype = {

 initialize: function(menuElement) {
	menuElement.childElements().each(function(node){
		// if there is a submenu
		var submenu = $A(node.getElementsByTagName("ul")).first();
		if(submenu != null){
			// make sub-menu invisible
			Element.extend(submenu).setStyle({display: 'none'});
			// toggle the visibility of the submenu
			node.onmouseover = node.onmouseout = function(){
				Element.toggle(submenu);
			}
		}
	});
}

};