AllegroTools (Odwolywacze) for IE (and FF/Opera) - v0.20070318.1

By Pawelsky Last update Mar 23, 2007 — Installed 199 times.
// ==UserScript==
// @name           AllegroTools (Odwolywacze) for IE i FF
// @namespace      http://allegrotoolsie.hopto.org/
// @description    Integracja z serwisem http://www.odwolywacze.piasta.pl // v0.20070318.1
// @include        http*://*allegro.pl/item*
// @include        http*://*allegro.pl/show_user.php?*
// ==/UserScript==

/////////////////////////////////////////////////////////////////
//// IE/FF compatibility
/////////////////////////////////////////////////////////////////

// Returns the number-th parent node of the element
function getParentNode(element, number)
{
  var parent = element;
  while((number > 0) && (parent))
  {
    parent = parent.parentNode;
    number--;
  }
  
  return parent;
}

// In FF previousSibling returns also #text nodes that represents
// the whitespaces in the HTML source. IE skips these nodes
// For IE and FF use this method instead of previousSibling property
// to return the first non-#text element.
// NOTE: this method skips ALL #text nodes (not only whitespaces)
function getPreviousSibling(element, number)
{
  var sibling = element;
  while((number > 0) && (sibling))
  {
    sibling = sibling.previousSibling;
    if (sibling && (sibling.nodeType == 1))
    {
      number--;
    }
  }
  
  return sibling;
}

// FF uses textContent property while IE uses innerText property
// to return the inner text of an element
function getInnerText(element)
{
  var result = null;
  
  if (element)
  {
    // For IE
    result = element.innerText;
  
    if(result == null)
    {
      // For FireFox
      result = element.textContent;
    }
  }
  
  return result;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function getUnameSpan()
{
  var unameSpan = false;

  var spanTable = document.getElementsByTagName("span");
  if(spanTable)
  {
    for(var i = 0; i < spanTable.length; i++)
    {
      if (spanTable[i].className == "uname")
      {
        unameSpan = spanTable[i];
        break;
      }
    }
  }
  
  return unameSpan;
}

function getUname(unameSpan)
{
  var uname = false;
  if (unameSpan)
  {
    uname = getInnerText(unameSpan);
  }

  return uname;
}

function addOdwolywaczeButton()
{
  if(document.location.href.match(/item(\d+).*?.html/))
  {
    var auctionNumber = RegExp.$1;
    var userName = false;
    var userSpan = false;

    userSpan = getUnameSpan();
    userName = getUname(userSpan);

    if (auctionNumber && userName && userSpan)
    {
      var odwolywaczeForm = document.createElement('div');
      odwolywaczeForm.innerHTML = "<form action='http://www.odwolywacze.piasta.pl/index.php?page=lista/dodany' " +
                                  "method='post' name='form' target='_blank' " +
                                  "onsubmit='return confirm(\"Czy na pewno chcesz zglosic te aukcje do Odwolywaczy?\\n\\nUzytkownik: " + userName + "\\nAukcja nr: " + auctionNumber + "\");'>" +
                                  "<input type='hidden' name='nick' value='" + userName + "'>" +
                                  "<input type='hidden' name='nr_aukcji' value='" + auctionNumber + "'>" +
                                  "<input type='hidden' name='opis' value='Zgloszone poprzez AllegroTools'>" +
                                  "<input type='submit' name='submit' value='Zglos Odwolywacza' style='font-size=8pt' " +
                                  "title='Uzytkownik: " + userName + "\nAukcja nr: " + auctionNumber + "'>" +
                                  "</form>";
      getParentNode(userSpan, 2).insertBefore(odwolywaczeForm, getPreviousSibling(getParentNode(userSpan, 1), 1));
    }
  }
}

function addOdwolywaczeCount()
{
  if(document.location.href.match(/show_user.php/))
  {
    userName = getUname(getUnameSpan());
    if(userName)
    {
      var td = document.getElementsByTagName("td");
      if (td)
      {
        for(var i = 0; i < td.length; i++)
        {
          var node = td[i];
          if(node && (node.className == "formtitle-info"))
          {
            var span = document.createElement("span");
            span.style.fontSize = "8pt";
            span.innerHTML = odwolywaczeMessageHTML(userName, "Pobieranie informacji o odwolanych aukcjach, prosze czekac...");
            node.appendChild(span);
            try
            {
              GM_xmlhttpRequest({method:"GET",
                                 url:"http://www.odwolywacze.piasta.pl/download/baza_danych_allegrotoolsie.php?nick=" +userName,
                                 onload:function(d){processAddOdwolywaczeCountResponse(d, span, userName)},
                                 onerror:function(d){processAddOdwolywaczeCountErrorResponse(span, userName)}});
            }
            catch (e)
            {
              processAddOdwolywaczeCountErrorResponse(span, userName);
            }
            break;
          }
        }
      }
    }
  }
}

function processAddOdwolywaczeCountErrorResponse(span, uname)
{
  span.innerHTML = odwolywaczeMessageHTML(uname, "BLAD: Nie udalo sie pobrac informacji o odwolanych aukcjach");
}

function processAddOdwolywaczeCountResponse(details, span, uname)
{
  var responseText = details.responseText;
  if(responseText)
  {
    var auctions = responseText.match(/<td style="width: 125px; height: 25px;" align="center">\d+?<\/td>/g);
    displayOdwolywaczeCount(auctions, span, uname);
  }
  else
  {
    span.innerHTML = odwolywaczeMessageHTML(uname, "BLAD: Nie udalo sie pobrac informacji o odwolanych aukcjach");
  }
}

function displayOdwolywaczeCount(auctions, span, uname)
{
  if(auctions && (auctions.length > 0))
  {
    span.innerHTML = odwolywaczeMessageHTML(uname, "Odwolanch aukcji: " + auctions.length, "#FF0000", "#FFFFFF");
  }
  else
  {
    span.innerHTML = odwolywaczeMessageHTML(uname, "Nie zarejestrowano zadnych odwolanych aukcji");
  }
}

function odwolywaczeMessageHTML(user, message, background, foreground)
{
  var styleString = "style='" + (background ? ("background-color: " + background + "; ") : "") + (foreground ? ("color: " + foreground + "; ") : "") + "'";
  return "&nbsp;&nbsp;&nbsp;&nbsp;<span " + styleString + ">&nbsp;<a href='http://www.odwolywacze.piasta.pl/index.php?page=search/search&nick=" + user + "' target='_blank' "+
          styleString + "title='ODWOLYWACZE (www.odwolywacze.piasta.pl)'>[ODWOLYWACZE]</a>" + " " + message + "&nbsp;<span>";
}

function allegrotoolsOdwolywacze()
{
  addOdwolywaczeButton();
  addOdwolywaczeCount();
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Start Allegro Tools (Odwolywacze) script
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
allegrotoolsOdwolywacze()