// DoubleClick ToolTip
function getSelectedText() {
  var w = window;
  var selectedText = '';
  if (w.getSelection) {
    selectedText = w.getSelection();
  } else if (document.getSelection) {
    selectedText = document.getSelection();
  } else if (document.selection) {
    selectedText = document.selection.createRange().text;
  } else { return; }
  // zmieniamy obiekt na stringa i zwracamy
  String(selectedText);
  selectedText += '';
  return selectedText;
}

var _DCTooltip = function(e){

  var hostname = window.location.hostname;
  var links = [
    { href : "http://dot.wp.pl/redir?SN=doubleclick&par="+urlencode(hostname)+"&url=http%3A%2F%2Fwww.docelu.pl%2F%3Fpl_c%3D", id:"docelu", enc: "utf"},
    { href : "http://dot.wp.pl/redir?SN=doubleclick&par="+urlencode(hostname)+"&url=http%3A%2F%2Ftanio.pl%2Fszukaj.html%3Fnazwa%3D", id : "tanio", enc: "iso"},
    { href : "http://dot.wp.pl/redir?SN=doubleclick&par="+urlencode(hostname)+"&url=http%3A%2F%2Fwikipedia.wp.pl%2Fsearch.html%3Fquery%3D", id : "wiki", enc: "utf"}
  ];
  
  var w = window;
  var d = document;
  var selectedText = getSelectedText();
  
  function urlencode (str) {
    
    if (!str) return;
    
    var regex = /(^[a-zA-Z0-9_.]*)/;
    var output = '';
    var x = 0;

    str = str.toString();

    while (x < str.length) {
      var match = regex.exec(str.substr(x));
      if (match != null && match.length > 1 && match[1] != '') {
        output += match[1];
        x += match[1].length;
      } else {
        if (str[x] == ' ')
          output += '+';
      else {
        var charCode = str.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
      }
    }
    return output;
  }

  // konwersja polskich znaków do utf8
  function urlUtfEncode(str) {

    str = str.replace(/±/g, "%C4%85");
    str = str.replace(/¡/g, "%C4%84");
    str = str.replace(/æ/g, "%C4%87");
    str = str.replace(/Æ/g, "%C4%86");
    str = str.replace(/ê/g, "%C4%99");
    str = str.replace(/Ê/g, "%C4%98");
    str = str.replace(/³/g, "%C5%82");
    str = str.replace(/£/g, "%C5%81");
    str = str.replace(/ó/g, "%C3%B3");
    str = str.replace(/Ó/g, "%C3%93");
    str = str.replace(/¶/g, "%C5%9B");
    str = str.replace(/¦/g, "%C5%9A");
    str = str.replace(/¿/g, "%C5%BC");
    str = str.replace(/¯/g, "%C5%BB");
    str = str.replace(/¼/g, "%C5%BA");
    str = str.replace(/¬/g, "%C5%B9");
    str = str.replace(/ñ/g, "%c5%84");
    str = str.replace(/Ñ/g, "%c5%83");

    return urlencode(str);
  }

  // konwersja polskich znaków do utf8
  function urlIsoEncode(str) {

    str = str.replace(/±/g, "%B1");
    str = str.replace(/¡/g, "%A1");
    str = str.replace(/æ/g, "%E6");
    str = str.replace(/Æ/g, "%C6");
    str = str.replace(/ê/g, "%EA");
    str = str.replace(/Ê/g, "%CA");
    str = str.replace(/³/g, "%B3");
    str = str.replace(/£/g, "%A3");
    str = str.replace(/ó/g, "%F3");
    str = str.replace(/Ó/g, "%D3");
    str = str.replace(/¶/g, "%B6");
    str = str.replace(/¦/g, "%A6");
    str = str.replace(/¿/g, "%BF");
    str = str.replace(/¯/g, "%AF");
    str = str.replace(/¼/g, "%BC");
    str = str.replace(/¬/g, "%AC");
    str = str.replace(/ñ/g, "%F1");
    str = str.replace(/Ñ/g, "%D1");

    return urlencode(str);
  }
  
  var DCThide = function(){
    WP.$(e).fadeOut(!WP.isIE?250:1, function(){WP.$(this).remove()});
    WP.event.unset(window, "onmousedown", DCThide);
  }
  
  //pobieranie pozycji kursora
  var mx, my = 100;
  if (!e) e = window.event;
  if (e) {
    if (e.pageX) { // this doesn't work on IE6!! (works on FF,Moz,Opera7)
       mx = e.pageX;
       my = e.pageY;
    } else if (e.clientX) {
       mx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
       my = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }
    if (my<80) { my=70; mx+=60; }
  }
  
  var e = d.createElement("div");
  this.e = e;
  e.className = "toolTip";
  
  var k;
  
  k = d.createElement("div");
  k.className = "left";
  e.appendChild(k);

  var container = d.createElement("div");
  container.className = "wordSearch";
  e.appendChild(container);
  this.container = container;  

  k = d.createElement('span');
  k.appendChild(d.createTextNode('znajdz to w:'));
  container.appendChild(k);
  
  k = d.createElement('span');
  k.appendChild(d.createTextNode('x'));
  k.className = "btnClose";
  container.appendChild(k);
  
  k = d.createElement("div");
  k.className = "right";
  e.appendChild(k);
  
  e.style.left = mx - 50 + "px";
  e.style.top  = my - 60 + "px";
  document.body.appendChild(e);
  WP.$(e).fadeIn(!WP.isIE?200:1);
  WP.event.set(document, "onmousedown", DCThide);
  
  var a;
  for (var i=0; i<links.length; i++) {
    a = document.createElement("a");
    a.className = links[i]['id'];
    a.target = "_blank";
    a.href = links[i].href + (links[i].enc=='utf'?urlUtfEncode(selectedText):urlIsoEncode(selectedText));
    this.container.appendChild(a);
  }
  return this;  
}

WP.event.set(document, "onmouseup", function(e){
  var selectedText = getSelectedText();
  if ((selectedText.length < 50) && (selectedText.length > 1)) new _DCTooltip(e);
});


