// jQuery
document.write('<script type="text/javascript" src="/js/jquery/jquery.js"></script>');
document.write('<script type="text/javascript" src="/js/jquery/jquery.form.js"></script>');
document.write('<script type="text/javascript" src="/js/jquery/jquery.superfish.js"></script>');
document.write('<script type="text/javascript" src="/js/jquery/jquery.ui.js"></script>');
document.write('<script type="text/javascript" src="/js/jquery/jquery.swfupload.js"></script>');
    
// Unified File Attachment System
document.write('<script type="text/javascript" src="/js/ufas.js"></script>');
document.write('<script type="text/javascript" src="/js/swfupload/swfupload.js"></script>');

// Data Library
document.write('<script type="text/javascript" src="/js/date.js"></script>');

// Form System
document.write('<script type="text/javascript" src="/js/form.js"></script>');
document.write('<script type="text/javascript" src="/js/jsift.js"></script>');
document.write('<script type="text/javascript" src="/js/popup.js"></script>');
document.write('<script type="text/javascript" src="/js/timepicker.js"></script>');

// DOM Element Lookup
function e(id) { return document.getElementById(id); }

// Search System
var s = [];

function schedule_search(table,filter)
{
  filter = filter.toLowerCase();
  if(!s[table]) s[table] = [];
  filter = filter.replace(/ /g,"%20").replace(/&/g,"*amp*");

  // skip scheduling a search for the same text
  if(s[table].last == filter) return;

  // clear timer for fast typers
  if(s[table].run) clearTimeout(s[table].run);

  // set timer to run search in a quarter of a second
  s[table].run = setTimeout(function()
  {
    s[table].last = (filter.length < 2 ? '' : filter);
    $('#l'+table).load(s[table].url+'&dataonly='+table+'&ajax=true&filter='+s[table].last+'&sorton='+s[table].sorton+'&sortdir='+s[table].sortdir);
  },200);
};

// keyboard shortcuts handler
function keyboard_handler(e)
{
  var code = e.which;
  var key = String.fromCharCode(code).toLowerCase();
  
  if(e.which == 27)
  {
    popup_close();
    return false;
  }
  
  if(e.altKey)
  {
    switch(key)
    {
      case "n":
        newtab();
        return false;
        break;
    }
    if($('#cmdkey_'+key).trigger('click').length) return false;
  }
}

// retrieve url with search persistence
function search_url(url,name)
{
  if(s[name])
  {
    if(s[name].sorton) url += "&sorton="+s[name].sorton;
    if(s[name].sortdir) url += "&sortdir="+s[name].sortdir;
    if(s[name].filter != "") url += "&filter="+s[name].filter;
  }
  return url;
}

// menuing and tab controls
var menu;
var tabs = 0;
var active = 0;
var windowdata = [];
windowdata[active] = [];

function newtab()
{
  tabs++;  // increment tab count
  $('.primarytabs').append('<li id="tab'+tabs+'" style="z-index:'+tabs+'"></li>'); // add tab to menu list
  $('.primarytabs li:last').prepend('<span class="title">&nbsp;</span><a class="closetab"></a>'); // add tab title to menu list
  $('.primarytabs li:last .closetab').bind('click',function() { closetab(this); }); // bind 'click' on close button to close this tab
  $('.primarytabs li:last').bind('click',function() { setactive(this); }); // bind 'click' on entire tab to bring this tab/window into focus
  $('.content .white').append('<div id="window'+tabs+'" class="window"></div>'); // create blank window
  setactive($('.primarytabs li:last')); // activate and display new tab
}

// set active tab
function setactive(tab)
{
  active = $(tab).attr('id').substr(3); // get id of tab

  // set width to fixed so the removal of bold doesn't change width
  $('li.active .title').each(function(){$(this).css('width',$(this).width()+'px');});
  $('li.active').removeClass('active'); // remove active class from any tabs

  $(tab).addClass('active'); // add active class to current tab
  $('li.active .title').each(function(){$(this).css('width','auto');});  // set width back to auto

  $('.window').hide(); // hide all tab displays
  $('#window'+active).show(); // show current window
  if(windowdata[active]) highlight(windowdata[active]['menu']);
}

// destroy a tab
function closetab(tab)
{
  cleanup();
  
  if(!$(tab).parent().hasClass('active')) return;

  if($('.primarytabs li').length == 1)
  {
    run('/',true);
    return;
  }

  if(!$(tab).parent().prev().attr('id'))
  {
    remove = $('.primarytabs li').eq(0);
    active = $('.primarytabs li').eq(1);
  }
  else
  {
    active = $(tab).parent().next();
    if(!active.attr('id')) active = $(tab).parent().prev();
    remove = $(tab).parent();
  }
  id = $(remove).attr('id').substr(3);
  $('#window'+id).remove();
  remove.remove();
  setactive(active);
}

function run(menu,noload)
{
  cleanup();

  if(typeof(menu) == "string") var url = menu;
  else
  var url = $(menu).attr('href');

  if(!noload) $('#window'+active).html("<div style='padding:10px 0px;'><img src='"+loading+"' align='absmiddle'/> <strong>Loading...</strong></div>");

  $('#window'+active).load(url+'&ajax=true');

  windowdata[active] = [];
  windowdata[active]['menu'] = typeof(menu)=="string"?[]:menu;
  windowdata[active]['title'] = "";

  if(typeof(menu) != "string")
  {
    $('ul.navigate li').hideSuperfishUl(menu);
    $('.navigate ul > li').filter('.current:last-child').addClass('currentlast'); // flag last items as 'last' for rounded bottoms
    $('.navigate ul > li').filter(':last-child').not('.currentlast').addClass('last'); // flag last items as 'last' for rounded bottoms
    highlight(menu);
  }

  return false;
}

function newwind(menu)
{
  var url = $(menu).attr('href');
  window.open(url);
  return false;
}

function highlight(menu)
{
  var url = $(menu).attr('href');
  $('.current').removeClass('current');
  $('.currentlast').removeClass('currentlast');
  $("a[href='"+url+"']").parents('li').not('.last').addClass('current');
  $("a[href='"+url+"']").parents('li').filter('.last').addClass('currentlast');
  $(menu).parents('li').not('.last').addClass('current');
  $(menu).parents('li').filter('.last').addClass('currentlast');
}

function openintab(url)
{
  newtab();
  run(url);
  return false;
}

function menuhandle(ob)
{
  id = $(ob).attr('id');
  if($('#submenu-'+id).css('display')=='none')
  {
    $(ob).css('background-color','#333');
    $('#submenu-'+id).css('top','20px').css('left','0px').slideDown('normal');
  }
  else
  $('#submenu-'+id).slideUp('normal',function(){$(ob).css('background-color','transparent');});

  return false;
}

function loader(target,href)
{
  cleanup();
  $(target).load(href);
}

function cleanup()
{
  if(windowdata[active])
  {
    if(windowdata[active].cleanup)
    {
      windowdata[active].cleanup();
      windowdata[active].cleanup = false;
    }
  }
}