// $Id$

function arguments_to_array( args )
{
  var arr = new Array();
  for (var i=0; i<args.length; ++i) {
    arr[i] = args[i];
  }
  return arr;
}

function bcl_go( e )
{
  var cmd = e.bclline.value;
  bcl_run( cmd );
  e.bclline.value="";
  e.bclline.focus();
  return false;
}

function bcl_parse( cmd )
{
  return cmd.split( /\s+/ );
}

function bcl_remove_blank_words( words )
{
  // Remove leading and trailing blank words.
  while (words.length>0 && words[0]==="") {
    words = words.slice( 1 );
  }
  while (words.length>0 && words[words.length-1]==="") {
    words = words.slice( 0, words.length-1 );
  }
  return words;
}

function bcl_run( cmd )
{
  words = bcl_parse( cmd );
  words = bcl_remove_blank_words( words );

  var last_cmd_word = null;

  for (var i=0; i<words.length; ++i) {
    var fun_name = words.slice( 0, i+1 ).join( "_" );
    if (window[fun_name] == undefined) {
      break;
    } else {
      last_cmd_word = i;
    }
  }

  if (last_cmd_word===null || words.length==0) {
    error( "No such command \""+words[0]+"\"" );
    return;
  }

  var fun_name = words.slice( 0, last_cmd_word+1 ).join( "_" );
  var fun = window[fun_name];
  var args = words.slice( last_cmd_word+1 );
  fun.apply( this, args );
}

function bcl_jump_cgi( url, kvs )
{
  var url = url+"?";
  for (var k in kvs) {
    var v = kvs[k];
    url += k+"="+escape( v );
  }
  location = url;
}

function g()
{
  var search_string = arguments_to_array( arguments ).join( " " );
  bcl_jump_cgi( "http://www.google.com/search", { "q": search_string } );
}

function nomice()
{
	error("Error: No mice allowed. Use command line - typing is good for you!");
	bcl_focus();
}

function g_i()
{
  var search_string = arguments_to_array( arguments ).join( " " );
  bcl_jump_cgi( "http://www.google.com/images", { "q": search_string } );
}

function w()
{
  var search_string = arguments_to_array( arguments ).join( " " );
  bcl_jump_cgi( "http://en.wikipedia.org/wiki/Special:Search", { "search": search_string } );
}

function al( o )
{
  alert( o );
}

function home()
{
	getURL("ascii.html","joeimage");		
}

function about()
{
	getURLType("about.html","joeimage");		
}

function ls()
{
	error("What do you think this is, UNIX??!");
}

function dir()
{
	error("What do you think this is, DOS??!");
}

function help()
{
	error("See command list above, type command.");
}

function h()
{
	help();
}

function pubs()
{
	window.open('http://www.ncbi.nlm.nih.gov/sites/entrez?cmd=search&db=pubmed&term=mocanu+j','publications');
}

function facebook()
{
	window.open('http://www.facebook.com/profile.php?id=28128304','facebook');
}

function linkedin()
{
	window.open('http://www.linkedin.com/pub/6/52b/a7','linkedin');
}

function code()
{
	window.open('http://www.josephmocanu.com/codeportfolio.html','code');
}

function research()
{
	getURLType("research.html","joeimage");		
}

function photos()
{
	error("Photos are currently private. Please contact me for the URL.");
}

function art()
{
	error("Command not ready yet! You're not missing much...");
}

function music()
{
	getURLType("music.html","joeimage");		
}


function blogs()
{
	getURLType("blogs.html","joeimage");		
}

function contact()
{
	error("joseph d0t mocanu at gmail - or type 'linkedin' or 'facebook' for my respective profiles");
}
