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_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_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];}
}
//
//  Licensed Materials - Property of IBM
//  5724G06
//  (C) Copyright IBM Corp. 1995, 2003 All Rights Reserved.
//

// HpbImgPreload:
//
function HpbImgPreload()
{
  var appVer=parseInt(navigator.appVersion);
  var isNC=false,isN6=false,isIE=false;
  if (document.all && appVer >= 4) isIE=true; else
    if (document.getElementById && appVer > 4) isN6=true; else
      if (document.layers && appVer >= 4) isNC=true;
  if (isNC||isN6||isIE)
  {
    if (document.images)
    {
      var imgName = HpbImgPreload.arguments[0];
      var cnt;
      swImg[imgName] = new Array;
      for (cnt = 1; cnt < HpbImgPreload.arguments.length; cnt++)
      {
        swImg[imgName][HpbImgPreload.arguments[cnt]] = new Image();
        swImg[imgName][HpbImgPreload.arguments[cnt]].src = HpbImgPreload.arguments[cnt];
      }
    }
  }
}
// HpbImgFind:
//
function HpbImgFind(doc, imgName)
{
  for (var i=0; i < doc.layers.length; i++)
  {
    var img = doc.layers[i].document.images[imgName];
    if (!img) img = HpbImgFind(doc.layers[i], imgName);
    if (img) return img;
  }
  return null;
}
// HpbImgSwap:
//
function HpbImgSwap(imgName, imgSrc)
{
  var appVer=parseInt(navigator.appVersion);
  var isNC=false,isN6=false,isIE=false;
  if (document.all && appVer >= 4) isIE=true; else
    if (document.getElementById && appVer > 4) isN6=true; else
      if (document.layers && appVer >= 4) isNC=true;
  if (isNC||isN6||isIE)
  {
    if (document.images)
    {
      var img = document.images[imgName];
      if (!img) img = HpbImgFind(document, imgName);
      if (img) img.src = imgSrc;
    }
  }
}
var swImg; swImg=new Array;







if (typeof MEDIO == "undefined" || MEDIO == null) {
  var MEDIO = {};
  String.prototype.camelize = function( ) {
    return this.replace( /-([a-z])/g,
        function( $0, $1 ) { return $1.toUpperCase( ) } );
  }
  String.prototype.deCamelize = function( ) {
    return this.replace( /[A-Z]/g,
        function( $0 ) { return "-" + $0.toLowerCase( ) } );
  }
  MEDIO.addEvent = function(element, name, listener) {
    if (element.addEventListener) {
      element.addEventListener(name, listener, false);
    } else if (element.attachEvent) {
      element.attachEvent('on' + name, listener);
    }
  };
  MEDIO.getStyle = function(element, property, pseudo) {
    if( element.currentStyle ) { //IE or Opera
      return element.currentStyle[ property.camelize() ];
    } else if( getComputedStyle ) { //Mozilla or Opera
      return getComputedStyle( element, pseudo ).getPropertyValue( property.deCamelize() );
    }
  };
}


MEDIO.rollover = function() {
  this.initialize.apply(this, arguments);
};


MEDIO.rollover.prototype.initialize = function() {
  this.loadedImages = {};
  var self = this;
  MEDIO.addEvent(window, 'load', function() { self.onWindowLoad('*')});
};


MEDIO.rollover.prototype.onWindowLoad = function(tagname) {
  var elms = document.body.getElementsByTagName(tagname);
  var self = this;
    
  for (var i = 0, j = elms.length; i < j; i ++) {
    if (elms[i].className.match(new RegExp("(^|\\s)medio_rollover(\\s|$)"))) {
      this.preLoadImage(elms[i].src);
      MEDIO.addEvent(elms[i], 'mouseover', function(event) { self.imageOn(event) });
      MEDIO.addEvent(elms[i], 'mouseout', function(event) { self.imageOff(event) });
    } else if (elms[i].className.match(new RegExp("(^|\\s)medio_rollover_o(\\s|$)"))) {
      MEDIO.addEvent(elms[i], 'mouseover', function(event) { self.opacityOn(event)});
      MEDIO.addEvent(elms[i], 'mouseout', function(event) { self.opacityOff(event)});
    } else if (elms[i].className.match(new RegExp("(^|\\s)medio_rollover_b(\\s|$)"))) {
      this.preLoadImage(this.getBackgroundImage(elms[i]));
      MEDIO.addEvent(elms[i], 'mouseover', function(event) { self.bgImageOn(event)});
      MEDIO.addEvent(elms[i], 'mouseout', function(event) { self.bgImageOff(event)});
    }
  }
  
}


MEDIO.rollover.prototype.preLoadImage = function(src) {
  if (src && src.match(/^(.+)\.(jpg|gif|png)$/)) {
    var basename = RegExp.$1;
    var ext = RegExp.$2;
    if (!basename.match(/(_h|_a)$/)) {
      var imgObject = new Image;
      var self = this;
      imgObject.onload = function() {
        self.setLoaded(basename);
      }
      imgObject.src = basename + '_h.' + ext;
    }
  }
};

MEDIO.rollover.prototype.setLoaded = function(basename) {
  this.loadedImages[basename] = 1;
};

MEDIO.rollover.prototype.isLoaded = function(basename) {
  return this.loadedImages[basename];
};

MEDIO.rollover.prototype.imageOn = function(event) {
  var elm = event.target || event.srcElement;

  if (elm.src.match(/^(.+)\.(jpg|gif|png)$/)) {
    var basename = RegExp.$1;
    var ext = RegExp.$2;
    if (!basename.match(/(_h|_a)$/) && this.isLoaded(basename)) {
      elm.src = basename + '_h.' + ext;
    }
  }
};

MEDIO.rollover.prototype.imageOff = function(event) {
  var elm = event.target || event.srcElement;
  if (elm.src.match(/^(.+)_h\.(jpg|gif|png)$/)) {
    var basename = RegExp.$1;
    var ext = RegExp.$2;
    if (this.isLoaded(basename)) {
      elm.src = basename + '.' + ext;
    }
  }
};

MEDIO.rollover.prototype.bgImageOn = function(event) {
  var elm = event.target || event.srcElement;
  var bgimage = this.getBackgroundImage(elm);
  if (bgimage && bgimage.match(/^(.+)\.(jpg|gif|png)$/)) {
    var basename = RegExp.$1;
    var ext = RegExp.$2;
    if (!basename.match(/(_h|_a)$/) && this.isLoaded(basename)) {
      elm.style.backgroundImage = 'url(' + basename + '_h.' + ext + ')';
    }
  }
};

MEDIO.rollover.prototype.bgImageOff = function(event) {
  var elm = event.target || event.srcElement;
  var bgimage = this.getBackgroundImage(elm);
  if (bgimage && bgimage.match(/^(.+)_h\.(jpg|gif|png)$/)) {
    var basename = RegExp.$1;
    var ext = RegExp.$2;
    if (this.isLoaded(basename)) {
      elm.style.backgroundImage = 'url(' + basename + '.' + ext + ')';
    }
  }
};

MEDIO.rollover.prototype.opacityOn = function(event) {
  var elm = event.target || event.srcElement;
  this.setOpacity(elm, 0.75);
};

MEDIO.rollover.prototype.opacityOff = function(event) {
  var elm = event.target || event.srcElement;
  this.setOpacity(elm, 1);
};


MEDIO.rollover.prototype.setOpacity = function(element, opacity) {
  var ua = navigator.userAgent;
  if (opacity > 1) {
      opacity = opacity / 100;
  }
  // safari
  if (ua.indexOf('AppleWebKit/') > -1) {
    element.style.opacity = opacity;
  // opera
  } else if (window.opera) {
    element.style.opacity = opacity;
  // Gecko
  } else if (ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') == -1) {
    element.style.MozOpacity = opacity;
  // win ie
  } else if (window.attachEvent && ua.indexOf('Mac_PowerPC') == -1) {
    element.style.filter="alpha(opacity=0)"
    element.filters.alpha.opacity  = (opacity * 100)
  }
};
MEDIO.rollover.prototype.getBackgroundImage = function(element) {
  var imgsrc = MEDIO.getStyle(element, 'backgroundImage');
  if (imgsrc && imgsrc.match(/url\((.+)\)/)) {
    return RegExp.$1;
  }
};



new MEDIO.rollover();
