if (typeof AVS === "undefined") {
  AVS = {};
}
if (typeof AVS.Common === "undefined") {
  AVS.Common = {};
}

// получение элементов по их классу
AVS.Common.getElementsByClassName = (function () {
  if (typeof document.getElementsByClassName === "function") {
    return function (o, className) {
      if (typeof o === "string") {
        o = document.getElementById(o);
      }
      if (o && typeof o === "object") {
        return o.getElementsByClassName(className);
      }
      return [];
    };
  }
  return function (o, className) {
    if (typeof o === "string") {
      o = document.getElementById(o);
    }
    if (!o || typeof o !== "object") {
      return [];
    }
    var
      nodes = [],
      elems = o.getElementsByTagName("*"),
      myclass = new RegExp("\\b" + className + "\\b");

    for (var i = 0, n = elems.length; i < n; i++) {
      if (myclass.test(elems[i].className)) {
        nodes.push(elems[i]);
      }
    }
    return nodes;
  };
})();

AVS.Common.callbackPlayerHandler = function (evt) {
  if (!evt || typeof evt !== "object" || !evt.hasOwnProperty("type")) {
    return undefined;
  }
  switch (evt.type.toLowerCase()) {
    case "play" :
      if (evt.hasOwnProperty("target")) {
        var players = AVS.Common.getElementsByClassName(document.body, "track");
        for (var i = 0, n = players.length; i < n; i++) {
          if (players[i].getAttribute("id") != evt.target) {
            try { players[i].PlayerStop() } catch (err) {}
          }
        }
      }
      break;
    case 'stop' :
      break;
    default :
      break;
  }
};

(function () {
  function createPlayer (id, track) {
    var
      playerPath = "/js/audioplayer.swf",
      installPath = "/js/expressInstall.swf";

    if (!id || !track) {
      return undefined;
    }

    swfobject.embedSWF(
      playerPath,                                         // путь к флешке с проигрывателем
      id,                                                 // id блока в который флешка будет вставлена
      "300", "35",                                        // размеры флешки, плеер имеет размеры 300х35
      "9.0.0",                                            // минимальна
      installPath,                                        // флешка для установки плеера, если не установлен
      {
        id        : id,
        callback  : "AVS.Common.callbackPlayerHandler",
        uriTrack  : track                                 // путь к проигрываемогу mp3 файлу
      },
      {
        allowScriptAccess : "always",
        wmode             : "transparent"                 // говорим что фон у шлешки прозрачный
      },
      {
        styleclass  : "track",                            // класс который задать контейнеру с флешкой
        wmode       : "transparent"                       // говорим что фон у шлешки прозрачный
      }
    );
  }

  swfobject.addDomLoadEvent(function () {
    var
      items = [],
      containers = AVS.Common.getElementsByClassName(document.body, "player");
    for (var i = 0, n = containers.length; i < n; i++) {
      items.push({id : containers[i].getAttribute("id"), track : containers[i].getAttribute("track")});
    }

    for (var i = 0, n = items.length; i < n; i++) {
      createPlayer(items[i].id, items[i].track);
    }
  });
})();
