String.isUsable = function(postulant_data) {return typeof postulant_data == 'string' && postulant_data.length > 0;};
Object.isUsable = function(postulant_data) {return !(postulant_data === null || typeof postulant_data == 'undefined');};

var query_string_story_specifier_key = 'pg';

function getQueryStringStorySpecifierValue()
{
  var query_string_story_specifier = {key:self.query_string_story_specifier_key, value:''};
  // Requires a Query String.
  if (String.isUsable(self.location.search))
  {
    var query_string = self.location.search.replace(/^\?/, '');
    var key_value_pairs = query_string.split('&');
    // Requires at least one key/value pair in the Query String.
    if (String.isUsable(key_value_pairs[0]))
    {
      var getKey = function(key_value_pair) {return key_value_pair.slice(0, (key_value_pair.indexOf('=') < 0 ? 0 : key_value_pair.length));};
      var getValue = function(key_value_pair) {return key_value_pair.slice(key_value_pair.indexOf('=') + 1);};
      // Captures the first Query String value as a default (disregarding the key).
      query_string_story_specifier.value = getValue(key_value_pairs[0]);
      for (var pairs_index = 1; pairs_index < key_value_pairs.length; pairs_index++)
      {
        // Requires a matching key in order to overwrite the captured default value.
        if (query_string_story_specifier.key == getKey(key_value_pairs[pairs_index]))
        {
          query_string_story_specifier.value = getValue(key_value_pairs[pairs_index]);
          break;
        }
      }
    }
  }
  return query_string_story_specifier.value;
}

function updateFlashStorySelector(programs_menu)
{
  var query_string_story_specifier_value = self.getQueryStringStorySpecifierValue();
  var flashvars_value = '';
  // Passes in "programs" menu information to be able to filter/sort people in the selector.
  if (Object.isUsable(programs_menu))
  {
    flashvars_value += 'programs_menu_selected_index=' + programs_menu.selectedIndex.toString();
    if (String.isUsable(programs_menu.options[programs_menu.selectedIndex].text))
    {
      flashvars_value += '&programs_menu_text=' + programs_menu.options[programs_menu.selectedIndex].text;
    }
    if (String.isUsable(programs_menu.options[programs_menu.selectedIndex].value))
    {
      flashvars_value += '&programs_menu_value=' + programs_menu.options[programs_menu.selectedIndex].value;
    }
  }
  flashvars_value += String.isUsable(flashvars_value) ? '&' : '';
  flashvars_value += 'query_string_story_specifier_key=' + self.query_string_story_specifier_key;
  // Passes in an available story specifier to be able to exclude the corresponding person from the selector.
  if (String.isUsable(query_string_story_specifier_value))
  {
    flashvars_value += '&query_string_story_specifier_value=' + query_string_story_specifier_value;
  }
  Flash_Code.embedMovie({id:'Flash_Story_Selector', playerversion:'8', movie:'./flash/story_selector.swf', width:'252', height:'416', bgcolor:'#654514', flashvars:flashvars_value}, 'story_selector');
}
