// ==UserScript==
// @name           AllegroTools (Wycofa) for IE i FF
// @namespace      http://allegrotoolsie.hopto.org/
// @description    Integracja z serwisem http://www.wycofa.pl // v0.20070722.0
// @include        http*://*allegro.pl/show_user.php?*
// ==/UserScript==

var MSG_INFO       = 0;
var MSG_ODWOLYWACZ = 1;
var MSG_OK         = 2

// 'Wycofa' logos.
var LOGO_STYLE  = "border='0' style='width: 57px; height: 15; vertical-align: top;'";

var LOGO_BLUE  = "<img src='data:image/gif;base64," +
		"R0lGODlhOQAPAPcAALI8AMFCAMpGAM5KANZKANZSANZSCN5KAN5SAOdKAOdSAO9SAO9aAO9aCPdSAP9a" +
		"AMVdJttlIvddDf9jCP9jEP9rFP9zIf95L4yGg7aLcf+EOeWVaf+MR/+UWv+cZ/+pd5ycnK2trbW1tb29" +
		"vcbGxs7Oxt61nN69pd69ree1nOe9pfe9nN7OxvPKsf/OrfzQt/fWxs7Ozu/WztbW1ufW1u/e1vfe1v/n" +
		"1t7e3u/n3vfv3ufn5+/v7/f39//39////wAAAPb29vX19aqqqgBTwfb29/X19vT09e3t7tra29XV1vHy" +
		"9Orr7dLV2uzv9Ovu87/I1b3G08LJ0+71//D2/8rO1Ovv9ent8+bq8OTo7urs7wBTwgBSwABSvwFUwwJU" +
		"wgRWwwdYwwlZxAtaxAxbxA5cxA9cwxFexRNgxhNfxRRgxBdjxxlixBpkxxxmyB9oyR9mxSFnxSNqySRr" +
		"yiVrxidtyihuyytwyyttxS5yzDJ0zDR1zTh2yD17zj58zz98zkF+0EOA0ESA0EeC0UmD0UqByk+I01WM" +
		"1FqO1V+S1mKU1l+Ny2eY2GiX1nKf2nah2nOaznul3IKr4YCo3YKo232h0Ies3oar3Yit34uv34inz5S0" +
		"35+846G+5JOu0Zaw0qfC5azF5rPK6LTK57bL6LfM6Km917rO6bvO58vZ7L3K273H1cDK19fh79PZ4eDl" +
		"7O/y9u7x9ert8YOm05m54sPV67rF08DL2dzl8OLp8uHm7ODl6+zw9eTo7ePn7OLm68TM1cvS2vL4//P2" +
		"+fDz9u3w8+fq7ebp7PL09uzu8PLz9Ofp4+jp5JCQjvb29eHh4NbW1ebl4P7899vZ1fj28v79+/n49t7d" +
		"2/78+f37+Pz69/n39OLg3dza19vZ1vr49u3r6fj39vb19PDv7tnY1/n5+fPz8/Dw8O7u7u3t7evr6+bm" +
		"5uTk5N3d3djY2MzMzLa2tqysrKKioktLS0dHR0FBQT4+PjMzMy0tLSoqKiYmJiEhIR4eHhYWFhISEv//" +
		"/yH5BAEAAP8ALAAAAAA5AA8AAAj/AIcIHEiwoMGDCBMqHBikoUMjEI04bBhR4sSLD61lu+LEIsaPQX4I" +
		"DCKkpMmTKFOqNBnuSaI1e66EW5ky5EghznKWdLYzp06cPEuGsxbU2bceJbE96rKlTC5r4Wb+VGlzSJAj" +
		"37Jpc6YtW7is2rJ6DZctm7Nw0pxc+SZEmpBcyrA5wzaISJpQQrIVeyKtq7WVRkQOQcroz6ErhVNx+mPo" +
		"ECBBrVoF6rPpiCM5bRxhA6VnTR5a2DqlCVMGkbNQcuxYIvSHk7aTR378iC3QCDZHXcDQOtNlEqEudzIR" +
		"6bIpU5cvqZZu6QKo1hgi0InQitRlDBgxre5EXx4Jm5By4MvF/4s3bEptaae+hNkzxosfN1wcVfvDxY8f" +
		"LoqcvSFS5xQuQ1ygAcoeRMwxSh1gnJFJKWB8gYglXxAxCTZB7KBOOj/kk88UVNQWzhJ5fCHGGWuMIQYY" +
		"p1QTyhZkjBFGLUfsZwcppAAooB5EuKGNITlqU4sXDmIS4SSyzbPPPiDYc88UwtTWFiZEbCHII1ESso0z" +
		"4gzixRaAbCONIkR40YUfqIix5ZaUSCMIEWtgIcscW8QpBhGSTCMPPv3oU4+SVJg3hBDogOMKHWbMokoa" +
		"aZgSTTvMzLJlJdFc08QicLAByTKe4KEGHppww00hZtARTDSfwBEHJIRe0kw//PjDTzP02MtjRIdDHJEO" +
		"O88Ec0sTSbDCijvukNMNH16csYo3SnjjjRRSQAONN1XYUkU3zkphSxRKzNANMMCQA8UqwUDzjj75xNAO" +
		"Ce+gI9hV5iSTRS/GaOGLL8acQ80mRHDRyDg88GDMLgD7goQuu/wCMBM8HPPLL0ig44suv7zysBbpqAOP" +
		"COuss8MOtFkVRA+xWMELL7GMzIsR5aQiiii5EGNEESXzQgwyxIgMCy9WxNIDLCIXYYQVOd9sBTE99GDE" +
		"Euqcg046RQi20NNQR21QQAA7' " + LOGO_STYLE + ">";

var LOGO_RED   = "<img src='data:image/gif;base64," +
		"R0lGODlhOQAPAPcAALI8AMFCAMpGAM5KANZKANZSANZSCN5KAN5SAOdKAOdSAO9SAO9aAO9aCPdSAP9a" +
		"AMVdJttlIvddDf9jCP9jEP9rFP9zIf95L4yGg7aLcf+EOeWVaf+MR/+UWv+cZ/+pd5ycnK2trbW1tb29" +
		"vcbGxs7Oxt61nN69pd69ree1nOe9pfe9nN7OxvPKsf/OrfzQt/fWxs7Ozu/WztbW1ufW1u/e1vfe1v/n" +
		"1t7e3u/n3vfv3ufn5+/v7/f39//39////wAAAPb29vX19cEAAKqqqt7t7d7o6IySkvX+/tbe3tTc3PH5" +
		"+fj///f+/tzj4/f9/fr///j9/fT5+dfc3Nbb2/b6+unt7dve3tjb2/j6+vb4+PX29vLz8+/w8ODh4djZ" +
		"2dXW1sIAAMAAAL8AAMICAsMEBMMHB8QJCcQLC8QNDcQODsMPD8UREcYTE8UTE8QUFMcXF8QZGccaGsgc" +
		"HMkfH8UfH8YiIsojI8omJsooKMcnJ8srK8UrK8wtLcsvL8wyMs00NMg4OM89Pc8/P9BBQdBDQ9BERNFH" +
		"R9FISM9JSdJNTdNPT9RVVdVaWtZfX9ZiYstfX9hnZ9ZoaNlwcNpzc9p2ds5zc9x7e+GCgt2AgNuCgtB9" +
		"fd6Ght+IiNODg9+Li+CRkc+IiN+VleKZmeOfn+ShodKVleWnp+asrOizs+e0tOi2ttepqem6uue7u+vD" +
		"w+zLy9u9vdO6utnAwNW9ve7V1dbAwNO9ve/Z2fDc3NTCwtXFxf7s7P/u7trLy/Li4v/w8OHT0//y8tTK" +
		"yuzh4evg4PXr6/Pp6fDm5u7k5PXs7O3k5Ozj4+vi4trS0vPr6/bv7/Xu7vHq6u7n5/nz8/bw8PLs7O3n" +
		"5/by8u7q6vTx8fTy8vj39/f29vb19fX09O7t7dva2tnY2NbV1fn5+e7u7u3t7evr6+bm5uTk5N3d3czM" +
		"zMnJyba2tqysrKKioktLS0dHR0FBQT8/Pzw8PDMzMy0tLSsrKygoKCcnJyQkJCEhIR4eHhUVFRAQEP//" +
		"/yH5BAEAAP8ALAAAAAA5AA8AAAj/AIkIHEiwoMGDCBMqHBikoUNvEL05bBhR4sSLD6tEOabMIsaPQX4I" +
		"DCKkpMmTKFOqNKnlmCM4gI5pWZky5EghW3KW3LIzp06cPEtqqRJ0S5UeJZlUGhNGza8qWmb+VGmTSJBv" +
		"VZo82fKkyVCtWb1qadJkixYm1o5VEcJEyK9tTLYwOTSEDSohTaw9Y9J1rUpvIokgjTSI0THCsEgNUsSI" +
		"kCFctQoJEvWN0h05lJic+gPHzygmpdiYSdNoC6o7eTghGkTqyclvP37AFuiNCaUxZUaxGZMJ0Zg9n4aM" +
		"AfVpDBlYS8OMIfQKzZDnQ0ZdGoOmzBlce6Arv9SWnHdy7txR/+tFm0krMmYAnQkjaI6YSVAGiRkkSMyj" +
		"LXSG4GmVa5GYNqcAMsQdquBRBhufrFIGGY1wQsYQmTARxA7nmPPDPff0AgxtWmjTBxlnsAEHGmeU0QoU" +
		"qISBBhpmvPJNfnmssop/AP4xxBxVLHLjE6+EwWAnD2YSGzz77APCPPXwIgxtbHUyRBiGVPIkIlLkdEgY" +
		"YRAiBRKPPDnGIK6sh2UYmiBhyBBwICPNHWOeMQQmSrxjTz/6yENPPcCQR4QQ5VgRjB5reBKLG26wYoQ6" +
		"RXiC5SZGXOEMJHXEYUkRpvDxBh+hOOFEImvo4YsRptRhhyV2rMHJEf3w4w8/R8QzjzcbEsXxjTnpeOHL" +
		"LM6EY4st4ojzBRaBhMEGLVSMQwUVuugCBhhTDCPLMEksq4sst4wzwxS76PKFLbT4AsY6+eATgzrsrFNO" +
		"YFdxYU0yy0yTDTPMXNPFEqIMIYYkXfDAwzXFEFMMM+D420wxxWSzbzMAl8MMMQMz00w25pzTjgjooLPD" +
		"DrNZFUQP0RijjDLRfNxRFrCkksov1XjTTcjKVINNNR5Do4wx0fQAjcfdeGMMzTIbU00P3HizzTldlGNO" +
		"N4EtpPTSTBsUEAA7' " + LOGO_STYLE  + ">";

var LOGO_GREEN = "<img src='data:image/gif;base64," +
		"R0lGODlhOQAPAPcAALI8AMFCAMpGAM5KANZKANZSANZSCN5KAN5SAOdKAOdSAO9SAO9aAO9aCPdSAP9a" +
		"AMVdJttlIvddDf9jCP9jEP9rFP9zIf95L4yGg7aLcf+EOeWVaf+MR/+UWv+cZ/+pd5ycnK2trbW1tb29" +
		"vcbGxs7Oxt61nN69pd69ree1nOe9pfe9nN7OxvPKsf/OrfzQt/fWxs7Ozu/WztbW1ufW1u/e1vfe1v/n" +
		"1t7e3u/n3vfv3ufn5+/v7/f39//39////wAAAPb29vX19aqqqhHBAN7b3trX2vj2+Pb19vPy8/Dv8OHg" +
		"4dbV1v77//z5/fr3+/j1+dvY3Pr4+/n3+uzq7fv5/fz6//v5/uDe49rZ3fv6//X0+djX3OPi6I+PkuPo" +
		"7fL28uru6vH08fL08vf49/b39vX29fT19O3u7drb2tXW1YPYfMPTwsbVxe//7uPy4tTh0/L/8RHCABDA" +
		"ABG+ABG9ABLCARLCAhTDBBfDBxnECRvECx3EDR7DDyDFESHFEiLGEyLEEyPEFCbHFyfHGCnGGizJHSvH" +
		"HC7JHy3FHzDGIjHJIzLKJDXKJzbLKDXHJzbFKTnLKzzMLjnFLD/MMkHNNETIOEnOPUrPPkvOP0zPQE3Q" +
		"QU/QQ1DQRFPRR1XRSVjSTVXKSlrTT1/TVGHUVmTVWmnWX2zWYmjLX3HXZ3nZcHzac3/adnvOc4rhgojd" +
		"gIrbgo7eho/fiIrTg5Lfi47PiJrflJ/imaPjnafkoZrSlazlp7HmrLjos7jntLrotq3Xqb7pur/nu8fr" +
		"w87sy8DbvbzTurvSucLZwL/Vvdfu1cLWwL/Tvdvv2d7w3ODr38vUyunz6OLs4eHr4Oz16+rz6eXu5OLr" +
		"4cXVw+317Ovz6uTs4+Pr4s3ay9Pa0u717ezz6+Tr4/D27+/17uvx6uju5/T58/H28O3y7Pn5+e7u7u3t" +
		"7evr6+bm5uTk5N3d3djY2MzMzLa2tqysrKKioktLS0dHRz8/PzMzMy0tLSoqKiYmJiEhIR4eHhMTE///" +
		"/yH5BAEAAP8ALAAAAAA5AA8AAAj/AIcIHEiwoMGDCBMqHBikoUMzEM04bBhR4sSLD6c4iZbNIsaPQX4I" +
		"DCKkpMmTKFOqNHlEmylClaIdWZky5EghSHKWRLIzp06cPEseORIUyZQeJa2woiOHz5uhM3+qtDkkyJkp" +
		"V6ogqXLlCNYqT650PSIWyREt6KpNEaJFyJsxVpBY8UTkDy8hV9CB08J1pkozIocgTZWJVDXCxHBlAjVq" +
		"U6dmyjhdsnVm1aJCq5rsojRI0q0muf7k4VMKCa9FjmJ9yoRLyskzP37AFmjGyqo6eG75qfPqU51ItIjQ" +
		"sUWrzh1iS+XQ2TRsD5HnRG6tobMHj55mkaArX2NFSLrv6ebN/zPnhraWYHfyVNJjB9OhOaqaaJqTCdOc" +
		"U0gQEWkUzJmoOYDsUgkRjPjSCB5+0PILHneUEssdRLxiRRA7sLPOD/ro40YctB0hhiR36OHHIHvogUcw" +
		"TfAixx575DHMGfo58ssv/wVICRGGSCEKEYdIMYwdDcoC4Sux1cMPPyDcg8+GtLElCxFydMIKlJ5AkZMn" +
		"dsixCRRXnEKEHXRkIowecpQpByxXdELEIOWQs4iZehDhChf05OPPPvcoGUd5QwihDhVwPNLHLMUEEggw" +
		"XbzzxSxlrtFFEd6gkkghrXyhyySCQFILFliE0scj3XShSyKKtKJIH7F44U8/q3phzz1mcM04xBnruLNE" +
		"N8h4k8Yyy8ADjxFRWCKHH8kYoYYRRrDBBhNMRAHNMdBkwSwbxjCjxgxRtIENPMsk0w0T8eyjTwzvkBCP" +
		"OoFZlQQ61lhTThjbbFOOElvYQsQcqSjBAw/lPHPNNNugIc003EwzTRj8chMOGupsI03B23ATxjrsyCNC" +
		"O+3ssMNsVQXRwzjUZPPNONmUbIYUxPTSyxvnmFEGyd+cA8Y51HwjzjfUjNODODWXYQY1OYuTDTXn9ECG" +
		"GWOwo4Q665QR2EJQRy21QQEBADs=' " + LOGO_STYLE  + ">";

var LOGOS = new Array(LOGO_BLUE, LOGO_RED, LOGO_GREEN);



/////////////////////////////////////////////////////////////////
//// 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 addWycofaCount()
{
  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 = wycofaMessageHTML(userName, "Pobieranie informacji o odwolanych aukcjach, prosze czekac...", MSG_INFO);
          node.appendChild(span);
          try
          {
            GM_xmlhttpRequest({method:"GET",
                               url:"http://wycofa.pl/?login=" +userName,
                               onload:function(d){processAddWycofaCountResponse(d, span, userName)},
                               onerror:function(d){processAddWycofaCountErrorResponse(span, userName)}});
          }
          catch (e)
          {
            processAddWycofaCountErrorResponse(span, userName);
          }
          break;
        }
      }
    }
  }
}

function processAddWycofaCountErrorResponse(span, uname)
{
  span.innerHTML = wycofaMessageHTML(uname, "BLAD: Nie udalo sie pobrac informacji o odwolanych aukcjach", MSG_INFO);
}

function processAddWycofaCountResponse(details, span, uname)
{
  var responseText = details.responseText;
  if(responseText)
  {
    responseText.match(/<\/h2>\s*?<\/td>\s*?<td>.*?<\/td>\s*?<td>(\d+).*?<\/td>/);
    displayWycofaCount(RegExp.$1, span, uname);
  }
  else
  {
    processAddWycofaCountErrorResponse(span, uname)
  }
}

function displayWycofaCount(count, span, uname)
{
  if(count && (count > 0))
  {
    span.innerHTML = wycofaMessageHTML(uname, "Odwolanych aukcji: " + count, MSG_ODWOLYWACZ);
  }
  else
  {
    span.innerHTML = wycofaMessageHTML(uname, "Nie zarejestrowano zadnych odwolanych aukcji", MSG_OK);
  }
}

function wycofaMessageHTML(user, message, type)
{
  return "<br><span style='vertical-align: top; text-valign: top;'><a href='http://wycofa.pl/?login=" + user + "' target='_blank' "+
          "title='WYCOFA (www.wycofa.pl)'>" + LOGOS[type]+ "</a>" + " " + message + "&nbsp;<span>";
}

function allegrotoolsWycofa()
  {
  addWycofaCount();
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Start Allegro Tools (Wycofa) script
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
allegrotoolsWycofa()
