function processResponse(response){
  if(response.match(/OK: (.*)/)){
    return { result: 'ok', message: response.match(/OK: (.*)/)[1] };
  } else if(response.match(/ERROR: (.*)/)){
    return { result: 'error', error: response.match(/ERROR: (.*)/)[1] };
  } else {
    return { result: 'unknown' };
  }
};

function standardResponse(response){
  $('p.error').hide();
  $('p.message').hide();
  
  var detail  = processResponse(response);

  if(detail.result == 'ok'){
    $('p.message').html(detail.message).show();
    return true;
  } else if(detail.result == 'error'){
    $('p.error').html(detail.error).show();
    return false;
  } else {
    $('p.error').html('An unknown error occurred').show();
    return false;
  }
};

function idResponse(response){
  var error   = $('p.error');
  var message = $('p.message');
  
  error.hide();
  message.hide();
  
  var detail  = processResponse(response);
  var info;
  
  if(detail.result == 'ok' && (info = detail.message.match(/([^\;]*); *ID: (.*)/))){
    message.html(info[1]).show();
    return info[2];
  } else if(detail.result == 'ok'){
    error.html('No identity returned when one expected');
    return false;
  } else if(detail.result == 'error'){
    error.html(detail.error).show();
    return false;
  } else {
    error.html('An unknown error occurred').show();
    return false;
  }
};

function redirectResponse(response, url){
  $('p.error').hide();
  $('p.message').hide();
  
  var detail  = processResponse(response);

  if(detail.result == 'ok'){
    window.location.href = ((url.match(/\?/)) ? url + '&message=' : url + '?message=') + encodeURIComponent(detail.message);
    return true;
  } else if(detail.result == 'error'){
    $('p.error').html(detail.error).show();
    return false;
  } else {
    $('p.error').html('An unknown error occurred').show();
    return false;
  }
};

function showActivity(){
  var msg = (arguments.length > 0 && typeof arguments[0] == 'string') ? arguments[0] : 'loading...';
  
  $('div.site-activity p').html(msg);
  $('div.site-activity').show();
  $('div.site-activity').triggerHandler('show');
};

function hideActivity(){
  $('div.site-activity').hide();
};

function contentNav() {
  $('ul.subnav li.second-level span.menu-arrow').click(function() {
    var id =  $(this).parents('li.second-level').attr('id'); 
    if($(this).hasClass('open')) {
      $('ul.subnav ul.third-level-'+id).hide();
      $(this).removeClass('open')        
    } else {
      $('ul.subnav ul.third-level-'+id).show();
      $(this).addClass('open')                
    }         
  })
}

var NumberFormat = function(num){
                     var decimals  = (arguments.length > 1 && !isNaN(parseInt(arguments[1]))) ? arguments[1] : 0;
                     var seperator = (arguments.length > 2) ? arguments[2].toString() : ",";
                     
                     num = num.toFixed(decimals);
                     
                     while(num.indexOf(seperator) > 3 || (num.indexOf(seperator) == -1 && num.indexOf(".") > 3)){
                       var index = (num.indexOf(seperator) != -1) ? num.indexOf(seperator) : num.indexOf(".");
                       num       = num.substr(0, index - 3) + seperator + num.substr(index - 3);
                     }
                     return num;
                   };

function makeAlias(title){
  var alias = $.trim(title).toLowerCase();
  alias     = alias.replace(/[^a-z0-9\-\_ ]/g, "");
  alias     = alias.replace(/ /g, "-");

  return alias;
};

jQuery(function(){
  $('body').ajaxStart(showActivity);
  $('body').ajaxStop(hideActivity);
  
  $('body').ajaxError(function(){
    $('p.error').html('An unexpected error was encountered').show();
  });
  
  function sizeContentWindow(){
    var total   = $(window).height();
    var top     = $('div.site-content').offset().top;
    var height  = $('div.site-content').height();
    var padding = parseInt($('div.site-content').css('paddingTop')) + parseInt($('div.site-content').css('paddingBottom'));
    var bodyPad = parseInt($('body').css('paddingBottom'));
    
    if(height + padding + top < total){
      var newHeight = total - top - padding - bodyPad;
      $('div.site-content').css('minHeight', newHeight.toString() + 'px');
    }
  };
  
  if($('div.site-content.windowed').length){
    sizeContentWindow();
    $(window).resize(sizeContentWindow);
  }
  
  $('a.site-menu-button').click(function(e){
    e.preventDefault();
    e.stopPropagation();
    console.log($('div.site-menu-dropdown').css('display'));
    
    if($('div.site-menu-dropdown').css('display') == 'none')
      $('div.site-menu-dropdown').show('slide', { 'direction': 'up', 'speed': 'fast' });
    else
      $('div.site-menu-dropdown').hide('slide', { 'direction': 'up', 'speed': 'fast' });
  });
  
  $('body').click(function(e){
    if($('div.site-menu-dropdown').css('display') != 'none' && !$(e.originalTarget).hasClass('site-menu-dropdown'))
      $('div.site-menu-dropdown').hide('slide', { 'direction': 'up', 'speed': 'fast' });
  });
  
  $('div.action-menu').each(function(){
    $(this).remove();
    $('body').append(this);
  });
  
  $('p.action-bar a.action-menu').click(function(e){
    e.preventDefault();
    
    var offset    = $(this).offset();
    var id        = this.href.match(/#(.+)/)[1];
    
    var menu      = $('#'+id);

    if(menu && menu.css('display') == 'none'){
      menu.css('left', offset.left);
      menu.css('top', offset.top + $(this).height());
      menu.slideDown('fast');
    } else if(menu){
      menu.slideUp('fast');
    }
  });

});


