






var expanded = false;
function toggleExpanding(container, contents, originalHeight, toggle)
{
  if (!expanded)
  {
    Effect.BlindDown(container, { restoreAfterFinish: false, duration: 0.5, scaleFrom: 100, scaleTo: contents.offsetHeight / container.offsetHeight * 100 });
    expanded = true;
    toggle.innerHTML = '<img id="expanding_toggle_image" src="/worldmusic/assets/images/buttons/collapse.gif" width="73" height="16" alt="Collapse" title=""/>';
  }
  else
  {
    Effect.BlindDown(container, { restoreAfterFinish: false, duration: 0.5, scaleFrom: 100, scaleTo: originalHeight / container.offsetHeight * 100 });
    expanded = false;
    toggle.innerHTML = '<img id="expanding_toggle_image" src="/worldmusic/assets/images/buttons/expand.gif" width="114" height="16" alt="Expand for more" title=""/>';
    document.location.hash = 'contents_top';
  }  
} 

function showExpandingNav()
{
  if ($('expanding_contents').offsetHeight > 310)
  {
    $('expanding_nav').style.display = 'block';
  }
  else
  {
    $('expanding_nav').style.display = 'none';
    $('expanding_frame').style.height = $('expanding_contents').offsetHeight + "px";
  }
}

function showBackground()
{
  document.body.style.backgroundImage = 'url(/worldmusic/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();
	}
}


// directory functions 

function loadAlphabet(container, alphUrl, dirType, dirUrl)
{ 
  var selectedAlphabets = document.getElementsByClassName('alphabet-container',container);
  //var selectedDirectories = document.getElementsByClassName('directory-container',container);
  loadingAlphabet = true;
  loadDirectory(container, 'a', dirUrl, dirType);
  var url = alphUrl + dirType;
  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)
{ 
  var selectedDirectories = document.getElementsByClassName('directory-container',container);
  loadingDirectory = true;
  loadDirectoryFeedback(selectedDirectories[0].id, 'loading', 0);
  var url = urlPath + dirType;
  var params = "letter=" + letter;
	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 = {};
	var moduleInstance = getFirstAncestorByClassName(div,'js-directory-module');
	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], "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, "/worldmusic/view/component.alphabet/",tabDirectoryType, "/worldmusic/view/component.directory/");			
}


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.moduleInstance);    				
			
    	loadDirectory(currentDirectory.moduleInstance, selectedLetter, '/worldmusic/view/component.directory/', currentDirectory.directoryType);			    
}
		
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', h, w);
}

