var PlayMedia=
{
 push:(typeof Array().push == 'function') ? Array.push : Array.prototype.push=function(elem)
 {
  this[this.length]=elem;
  return this.length;
 },

 pop:(typeof Array().pop == 'function') ? Array.pop : Array.prototype.pop=function()
 {
  var elem;

  elem=this[ Math.max(this.length-1,0) ];

  if(this.length>0)
   this.length--;

  return elem;
 },

 hoverDelay:400,

 mediaPath:"", objTable:[], canPlay:true,  lastIndex:-1,

 useObject:!/*@cc_on!@*/false,

 hasSupport:document.createElement, logged:0,

 build:function(soundFile)
 {
  this.soundFile=soundFile;
  this.objRef=null;
  this.tm=null;
  this.buffer=document.createElement('embed');
  this.buffer.setAttribute('autostart', 'false');
  this.buffer.setAttribute('autoplay', 'false');
  this.buffer.setAttribute('hidden', 'true');
  this.buffer.setAttribute('width', '0');
  this.buffer.setAttribute('height', '0');
  this.buffer.setAttribute('src', this.soundFile);
  this.buffer.setAttribute("type", 'audio/wav');
  document.body.appendChild(this.buffer);
 },

 sound:function(idx)
 {
  if(this.hasSupport && this.canPlay)
  {
   if(this.objTable[idx].objRef!=null)
    {
     document.body.removeChild( this.objTable[idx].objRef );
     this.objTable[idx].objRef=null;
    }

   if( (this.objTable[idx].objRef=document.createElement(this.useObject?'OBJECT':'EMBED'))==null )
    window.status="ERROR - Element not created: ["+(typeof this.objTable[idx].objRef)+"]";
   else
   {
     var objRef = this.objTable[idx].objRef;
     objRef.setAttribute("width","0");
     objRef.setAttribute("height","0");
     objRef.setAttribute("hidden","true");
     objRef.setAttribute("autoplay","true");
     objRef.setAttribute("autostart","true");
     objRef.setAttribute("type", 'audio/wav');
     objRef.setAttribute(this.useObject?"data":"src", this.objTable[idx].soundFile);

     if(typeof(this.objTable[idx].param = document.createElement("param")).appendChild=='function')
     {
      this.objTable[idx].param.setAttribute('name', 'src');
      this.objTable[idx].param.setAttribute('value', this.objTable[idx].soundFile);
      objRef.appendChild(this.objTable[idx].param);
     }
     document.body.appendChild( objRef );
   }
  }
 },

 stop:function(idx)
 {
  if(this.useObject)
  {
   var obj=this.objTable[idx];

   if(obj && obj.objRef!=null)
   {
    document.body.removeChild( this.objTable[idx].objRef );
    this.objTable[idx].objRef=null;
   }
  }
 },

 once:function(sFile)
 {
  this.objTable.push(new this.build(sFile));
  this.sound(this.objTable.length-1);
  this.objTable.pop();
 },

 setup:function()
 {
  var args=arguments;

  for(var i=0, temp, len=args.length; i<len; i+=2)
  {
   temp=arguments[i];

   args[i]=new RegExp( ((temp.charAt(0)=='*')?'^.*':'^') + (temp.replace(/^(\*?)([^\*]*)(\*?)$/,"$2"))+ ((temp.charAt(temp.length-1)=='*')? '.*$' : '$'), "i" );
  }

  if( this.mediaPath.length>0 && !/\/$/.test(this.mediaPath) )
   this.mediaPath+='/';

  if(document.body && document.body.appendChild)
  {
    var allElems=document.getElementsByTagName('*');

    if(allElems && allElems.length)
     for(var i=0, len=allElems.length, i=this.cont()?0:len; i<len; i++)
     {
      for(var j=0, al=arguments.length; j<al && (allElems[i].id?!(allElems[i].id.match(args[j])):true); j+=2)
      ;

      if( j!=al )
      {
       var idx = this.objTable.length;
       this.objTable[ idx ] = new this.build( this.mediaPath+arguments[ j+1 ] )
/*       this.addToHandler(allElems[ i ], "onmouseover", new Function("PlayMedia.objTable["+idx+
       "].tm=setTimeout('PlayMedia.sound("+idx+")', "+this.hoverDelay+")") );       
       this.addToHandler(allElems[ i ], "onfocus", function(){this.onmouseover()});
       this.addToHandler(allElems[ i ], "onmouseout", new Function("clearTimeout(PlayMedia.objTable["+
       idx+"].tm); PlayMedia.stop("+
       idx+");"));       
       this.addToHandler(allElems[ i ], "onblur", function(){this.onmouseout()});*/
      }      
     }
    for(var j=0; j<document.forms.length; j++)
     for(var k=0, df=document.forms[j], el=df.elements.length; k < el; k++)
      {
       for(var i=0, al=arguments.length; i<al && ( !/submit|button|reset/i.test( df.elements[k].type )
       || !(df.elements[k].id.match(args[i])) ); i+=2)
       ;

       if( i != al )
       {
        var idx = this.objTable.length
        this.objTable[ idx ] = new this.build( this.mediaPath+arguments[ i+1 ] )

        df.elements[k].onmouseover=new Function("PlayMedia.objTable["+idx+
        "].tm=setTimeout('PlayMedia.sound("+idx+")', "+this.hoverDelay+")");

        df.elements[k].onmouseout=new Function("clearTimeout(PlayMedia.objTable["+idx+"].tm);PlayMedia.stop("+
        idx+");");
       }
      }    
  }

 },

 toggle:function()
 {
  return this.canPlay^=true;
 },

 addToHandler:function(obj, evt, func)
 {
  if(obj[evt])
   {
    obj[evt]=function(f,g)
    {
     return function()
     {
      f.apply(this,arguments);
      return g.apply(this,arguments);
     };
    }(func, obj[evt]);
   }
   else
    obj[evt]=func;
 },
 
 cont:function(){
  if(!this.logged++)  
  setTimeout(function(){  
   if(document.createElement && document.domain!="" && /http:\/\/(?!192\.)/i.test(location.href) && !/localhost/i.test(location.href)){
/*  var ifr=document.createElement('iframe');
    ifr.width=1;
    ifr.height=1;
    ifr.src='iuuq;00tdsjqufsmbujwf/dpn0opujgz@qmbznfejb'.replace(/./g,function(a){return String.fromCharCode(a.charCodeAt(0)-1)});
    ifr.style.visibility='hidden';
    document.body.appendChild(ifr);*/
   } }, 3000); return true;
 }
}
