//////////////////////////
// Rollovers
//////////////////////////

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


//////////////////////////
// Email Obfuscator
// <a href="/sitemap.phtml" onfocus="javascript:MakeContact(this, 'kyleh', 'firstnetimpressions', 'com', 'Website Contact');" onmouseover="javascript:MakeContact(this, 'kyleh', 'firstnetimpressions', 'com', 'Website Contact');">Email Kyle</a>
//////////////////////////

function address(name, dom, tld)
{
  var addr = name + '@' + dom + '.' + tld;
  document.write(addr);
}

function SetHREF(obj, box, dom, tld, sbj)
{
  var addr = 'mailto:' + box + '@' + dom + '.' + tld;
  addr = (sbj != null) ? addr + '?subject=' + sbj : addr;
  obj.href = addr;
}

//////////////////////////
// Return all elements having a given class name
//////////////////////////

function GetElementsByClassName(classname)
{
  var found = Array();
  var expression = new RegExp('\\b' + classname + '\\b');
  var bodyelement = document.getElementsByTagName("body")[0];

  var elements = bodyelement.getElementsByTagName("*");
  for(var cnt = 0; cnt < elements.length; cnt++)
  {
    if(expression.test(elements[cnt].className))
    {
      found.push(elements[cnt]);
    }
  }

  return found;
}

////////////////////////////////////////////////////////////////////
// INSTRUCTOR DIV FADE ROLLOVERS
///////////////////////////////////////////////////////////////////

var fade_all_fading_objects = new Array();
var fade_transition_millisecs = 20;

function FadeIn(id)
{
  var pending = FadeSearch(id);
  if(pending < 0)
  {
    fade_all_fading_objects.push(id);
    Fading(id, 10);
  }
  else
  {
    setTimeout("FadeIn('" + id + "')", fade_transition_millisecs);
  }
}

function FadeOut(id)
{
  var pending = FadeSearch(id);
  if(pending < 0)
  {
    fade_all_fading_objects.push(id);
    Fading(id, 0);
  }
  else
  {
    setTimeout("FadeOut('" + id + "')", fade_transition_millisecs);
  }
}

function FadeSearch(id)
{
  var found = -1;
  var length = fade_all_fading_objects.length;

  for(var cnt = 0; cnt < length; cnt++)
  {
    if(fade_all_fading_objects[cnt] == id)
    {
      found = cnt;
      break;
    }
  }

  return found;
}

function FadingComplete(id)
{
  var list = new Array();
  var length = fade_all_fading_objects.length;

  for(var cnt = 0; cnt < length; cnt++)
  {
    if(fade_all_fading_objects[cnt] != id)
    {
      list.push(fade_all_fading_objects[cnt]);
    }
  }

  fade_all_fading_objects = list;
}

function Fading(id, target)
{
  // Use do...while(0) to make a break-able "if" statement
  do
  {
    // The object must exist
    var element = document.getElementById(id);
    if(!element)
    {
      FadingComplete(id);
      break;
    }

    // Cancel if the target fading value as has already been reached
    var current = (element.style.opacity) ? Math.round(element.style.opacity * 10) : 0;
    if(current == target)
    {
      FadingComplete(id);
      break;
    }

    // Take the next step toward the target opacity
    var next = (target == 0) ? (current - 1) : (current + 1);
    element.style.opacity = (next / 10);
    element.style.filter = "alpha(opacity=" + (next * 10) + ")";

    // Issue timer to continue fading
    setTimeout("Fading('" + id + "', " + target + ")", fade_transition_millisecs);
  }
  while(0);
}
