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 " <span " + styleString + "> <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 + " <span>";
}
function allegrotoolsOdwolywacze()
{
addOdwolywaczeButton();
addOdwolywaczeCount();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Start Allegro Tools (Odwolywacze) script
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
allegrotoolsOdwolywacze()