// ==UserScript==
// @name        Download audio from http://vkontakte.ru/
// @version     1.02
// @date        2008-06-27
// @author      Mike Samokhvalov <mikivanch@gmail.com>
// @download    http://www.puzzleclub.ru/files/vkontakte_ru_audio.js
// @include     http://vkontakte.ru/*
// @include     http://*.vkontakte.ru/*
// ==/UserScript==

(function(){
  function isOpera9()
  {
    if(typeof(window.opera.version) == 'function' && window.opera.version() >= 9)
    {
      return true;
    }
    return false;
  }
  
  window.opera.addEventListener('BeforeScript', function(e){
    if(e.element.text && !e.element.getAttribute('src', false))
    {
      if(e.element.text.search(/getpagecontent/i) != -1)
      {
        e.element.text = e.element.text.replace(/(\.innerhtml\s*=\s*responsetext\s*;)/i, '$1 ujs_vkontakte_ru_audio_cdl();');
      }
    }
  }, false);
  
  function createDownloadLinks()
  {
    var img = document.getElementsByTagName('img');
    for(var i = 0; i < img.length; i++)
    {
      if(img[i].className && img[i].className == 'playimg')
      {
        var a = img[i].getAttribute('onclick', false);
        if(a && a.search(/(operate|operatewall)/i) >= 0)
        {
          var r = a.match(/(?:operate|operatewall)\s*\x28\s*\d+\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*[\x22\x27](\w+)[\x22\x27]/i);          
          if(r && r.length > 3)
          {
            var link = document.createElement('a');
            link.href = 'http://cs' + r[1] + '.vkontakte.ru/u' + r[2] + '/audio/' + r[3] + '.mp3';
            link.innerHTML = '\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u00bb';
            link.setAttribute('target', '_blank', false);
            link.setAttribute('style', 'display: block !important; float: none !important; font-weight: bold !important; margin: 15px 0 0 0 !important; padding: 0 !important; text-align: left !important;', false);
            
            var p = img[i].parentNode;
            if(p.nextSibling)
              p.nextSibling.appendChild(link);
            else
              p.appendChild(link);
          }
        }
      }
    }
  }
  
  window.ujs_vkontakte_ru_audio_cdl = createDownloadLinks;
  
  function onLoad()
  {
    createDownloadLinks();
  }
  
  if(isOpera9())
    document.addEventListener('DOMContentLoaded', onLoad, false);  
  else
    document.addEventListener('load', onLoad, false);
})();
