// ==UserScript==
// @name QuatroPlus LS
// @author NCSR
// @namespace T3
// @version 1.0
// @description  QuatroPlus Label Sniffer
// @source http://tethis.iit.demokritos.gr/uscripts/QSN-LS
// @identifier http://tethis.iit.demokritos.gr/uscripts/QSN-LS.user.js
// @include http://*.google*.*
// @include http://*yahoo.*
// @exclude *.css
// @exclude *.js
// ==/UserScript==

//======================== MAIN FUNCTION CALLED WHEN PAGE IS LOADED =======================

function functionMain(e) {

    var LINKS = [];

    var IMGOK_01 = 'data:image/gif;base64,'+
    'R0lGODlhFwAXAPcAACFaAKnNC3OsAK+0qqm5inGSSFiYANnsprTRaFKTAIO6AEOKAHmYVqvQWdXV'+
    '1VmGKoW9MEGFAJnIU+Txtcfjg6rRSoa8KWSjAHOnKMzSp+/v75/OQFmiHazRQ3CgIIW5JIuafbPA'+
    'fU+FGi9tAdDnlJjHPluOEZPBM8DdgHCoGbrIYavRLOPi52SKPmSlHUqLBpzJAczMzN7vrrjaaEF6'+
    'CMrieWCYEXu0P3ezK568WFKOCZrFLpm+F7+/wIOXbVWUEcrMxbPVWtPonUmMAL7cTGqXKXCoD2Wi'+
    'ETx0Bq+9kKWwl7XZGMDeeHGxIr/dcY2+EyhbAabDK0iEC73bWbbXPaDLSc7mjFybAIS4KYmiZ97f'+
    '3MfVjuXxvG2rI3WxGkuRAIOqP1yaDovCLrDTVLjHZeDwtHymKJHBNnuzAMbLu1OMEGOXG1OTCdfb'+
    'zpG0TJS9AKe4fKDNOo69KrfaBMPeYMHZe8XgaU6aFi5gBJHCR1uPH9PYxG6pF7Gysr7MmbjbX6bO'+
    'UqDKI4S2Hd3upzluBtbrnLrbN9TolcTRamWKO7TFiq7UWpXDJHmvE1WZIaPOADt5BcPHt6TMQo2/'+
    'MWmiHkSDCMfMs5OeicbgckuGELHVMF6bCG6oAH+yM3muN3uSZbrTHIK1F3WuHWilE8fhg7TXZISf'+
    'YsLSmeb3vYa7SMLZYbfYUs7lhZK1LavVSqXNN3qvF2KeECljAaTOSdTojliUFbW1vWqMSb/Lemyl'+
    'FmedILDVKGicGrfXaWytJYy/AJ3MAIK3AmehCK3SYnOvKsjkYJHEMZ7KU5TOOoq7HLrZCL3bYubm'+
    '5l2dGMbee5XEEn+0D73dbY7DN1KFHmuUOZzHQ5TBKs3kezaHDHiwAHq2J7/ZO5SvX9HXvaPNH2al'+
    'Kp3ITKvUQa29iK3VDZrGJJrGPM7VtnWbQn2aWV2HMsHBwoaXdrXCmI6tSoCvLZPEAMPhQr7eJIi6'+
    'PleVCn2zIXOtGpTFOub3tYvAN6XWSujo69bW3lqUD6XWQrS2s////yH5BAEAAP8ALAAAAAAXABcA'+
    'AAj/AP8JHDhQy55ubZgRXMiwjapixWpIdOLkFEOGoAzZuUarkEcSpHotSnNR4BxNdGp0HCRDxoFD'+
    'ISUpujjOGxE7rGgdkDFhgksSTBqcYLcwCrAVq5xYKXRgApenLlGUqnaGxcB9v969SrqU51MuZfC5'+
    'GFZlkryBrRQ8ezUmGoVDg8p8lWTPF7ZZk+jpE5gNzZMdFWY46yqDi6t+YmeUsCCKwD9mFzhBsyYp'+
    'iFsShWTMCldCGxNAZ7DUA/MvRoIrRgTFqfTHyVt7Gzo7W1TNAj0+vP4BiZBgEx88NKQEcUIMC5Ym'+
    'ThpUyysq1pp/+xZEGLIJD/BKtZppDwKoRN56scIUmxE4JEKEF2GsE4JUqVI1e2dsexkVa14WgWrM'+
    'nw8DRdaIER/QI6AXfNAXxjwxCDSAdOa9MA8UAPAhoYSjHBHGgToQJMUCDL7AxoVhxCIiiPPM4w9B'+
    '+wyhYoMv6MBGiTDOo0MiDPmj4o0vtOjii/N8MU1J6izwRQJEFlnkF7eUJJAGnwwxpJEJiGCLkgRp'+
    '0McnLaRzyyUOUOkllQEBADs=';

    var IMGOK_02 = 'data:image/gif;base64,'+
    'R0lGODlhFwASANUAAAasCv///1L4VizSMD/lQ6P/per/6zXbOUzDT3X/eF//YzK7NY3/kBWxGBrA'+
    'Hsr/zCPJJ+j36J7foCm4LRC2FJjdmqThptbx1wmtDbbnt+r46yO2J2HKY+L14vz+/B20IRiyGw+v'+
    'E1jHWy+6MuX25fP78z3EQMrty2TLZu357tzz3Kfiqa3krsfsyN/038rvyorYjITWhl7JYLPmtAAA'+
    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAXABIAAAanwIBw'+
    'aGAIDoMkQVAYOp2FA2BKrZoIj2fAIK16AbDWVOE0QL5eSWBGJQwH6GpMuKqSE3EqYpipUsx5ACAR'+
    'QykYdoEAFUMRIl5dVQgyUyMeQi4bX3BUDRYBHYcsQhoTaJsACyRDKAtCJQtxBJAIhAEXngEceQkF'+
    'VR8nThJ5DkIEVQ0vQioheQxDxpwXAQi7TwIUVBMVcQ5NWg8CDnkQCVrfRgLpCgUG5kEAOw==';

    var IMGOK_03 = 'data:image/gif;base64,'+
    'R0lGODlhIAAhAPcAAAAAAP///93u3QBmIsTCw7m0t9G+ytnD0dTAzdfC0NPBzcm6xMW5wbu4urWy'+
    'tNXBz9jE0tXCz8y8x8+/ysO5wP/W87+4vbu3urq2ub24vNDCzry7vLa1tr67wLOztLO1tpCmm52r'+
    'pJWonoeik3+fjQBqJwBnJgB2KQBtJgBoJQBnJABlJApvLwtwMA1yMg5xMQ5tLxBuMR57PyF1PjKI'+
    'UT2QW0GSXmyWe6CrpABvJQBtJABnIwBmIQBmIwBlIgBjIABaHQBTGwNoJAVsKAxrKxJxMRZ0NRl3'+
    'OSN9QSyDSTmKUzV9TTt/UUuXZXKwh1uNbF6PbmGQcX+4knKXfgBsIgBpIQBnHwBlIABkHwBjHgRm'+
    'Ig9rLBdwMxp2NziHUDuKVD6MVkeRXUmSYEyVYk6WZFObal2fcZbGpXaZgX2bhpuonwBkHQBiGwBi'+
    'HQBhHAVkHw1oJh92OCV6PWKidWWjd2uofW2pfnSuhXawh3qxip3JqrrcxNTm2QBkGwBhGQBhGgBf'+
    'GANiGyNxNyZzOl+Na32zi4y8mZvEpgBgFgBeFwBdFjB+Qjh6R0WMVk6SX1uba1qKZYG0jYi5lJbD'+
    'oZO+nZ3Gp6jOsQBfFABdFQBbFBVqJ1aWZGuRc63RtbHTuMXgy5KkluXz6ABfEgBbEgBZEAFcEwZe'+
    'FgpjHBJlIRtuKzF4Pl2aaVaHX6PJqrnZv9Hn1ayxrQBdDwBcEABYDwBXDpa+nafJrbPVucvjz+Tw'+
    '5gBbDgBbDQBZDABWDLTRuABaCwBZCgBVCglcFMbeyQBZCQBUCQBTCAhRD7fUugBYBwBSBwBRBpe8'+
    'msTdxgBWBABSBQBQBQBKBMDZwdbq19ns2tzu3dvt3ABWAwBVAwBQAwBOAgBVAQBOAQBNAABLAABJ'+
    'AABHANrt2tns2d/w39zt3N/v35ynnN7v3eHx4ODw3+Ly4ePy4ub05OXz4+j15uz36u/57ej15fD6'+
    '7fH67u/56/P78Pr++Pj/9Pf89Pr/9v3/+/3/+P7/+////f///v///yH5BAEAAP8ALAAAAAAgACEA'+
    'AAj/AP8JHEiwoMGDCBGC4sRkCxYfVqoIrADqFBsVCQtqSKMqljNgbHhc8eGjDxcoA2Sl2MEj4z8F'+
    'Hxhh+8WmWDdlwYJp69aGzTU2KQYM6LEiIQQQp5Jl0TbLS6RJeioZohMHkNCrQq0cRCDil6hR3Bw1'+
    'yxeA3759AQKEUYb1qtaCCzwEulSslK0A+cZZEyAgXAAp3doOwGjQwYQZxGiZ+hTg3F6+1vBNI5Vp'+
    'h9AeWHjsOJjgxrZEwfYEEMe39LkANrwFHZCiJqagBS9kICLKm5MA4UpD5ncrGxahKgApO6QEmgmJ'+
    'Aw1MuUbKSD135HQLGBeABjcVA3b8+HYngKtiP1oK/9wgYcmvb3gCUJNezV4nY79ZgysTYB3qbiYG'+
    'FsAAg9cbXPNIJ4A1ATTxTVApQCMHP+9Qw48lwfDwg0AMqMHGM0nck46A9LyiRSLZgYYLP6S5ow4L'+
    'mRBmABq/ZEMGPwJWE4Ah3mCXwje35TbdPV8YM4BAEUSRDDd2+FONgP2MwU0PKigTRz7Q8SXjHIH1'+
    '8M8DTwyZRwACqkOPDLQMwAM3eqinWz91aCPUP0Em482W71hzJF/1NPOHGzsogwQ/6EjXjx1q/jhB'+
    'GruMIgcz0wRwz4AC+CMJN5ZpM0kAj/FFTgB0BPYjBTisMcAo4MCxijRlNWoHNwNk8oI77khXTj5g'+
    'sP/1YwMFxHDJYJh8M0sjyKRlRjc7eENfdLqxw44LpVj5DwcTMJGMCli81kY3z2ySixnaXKFMJTDq'+
    'Rg4/nfTyAxUDRYCGM1e0gEQ3f5SQRTdCFJGFqu3EI2AANXSDQhADXWABDLsIc0YlxSyTQgqJ+JHC'+
    'MkrkU45u1HhXTBs5FISAZ7OgEgAfqXyTBXYDdFNIAHMKQM08+sQBzQlAFETAAjP8Yowmaa3ijSIp'+
    'YDGLJ/mURg08ATTiDQo6HMQALIgg0k0qoQRACTe0rJHFJwFWE04/AWzyDQ8nGDXCNX4ok0gtAbyC'+
    'SjRHsPMOPFgPo8o3V6DgQ0YRkKBLLJh4s4gvehxSI0YA8uDSyiOkaLNS0S4dEIIm27ARDDdFDNGF'+
    'GEnwoEw3QCnrkkAKdMAKIs7IksgVgGTTyx889CDm5gZNAAskglzBQ1visY6QOYQMMsAVP24eEAA7';

    var IMGOK_04 = 'data:image/gif;base64,'+
    'R0lGODlhGQAZAOcqAABmAKnicV/FAdHnxzOZAHm1ZiaMAEudLmGlUVG3APf98rXmg2a2OCyDHxt2'+
    'FpvPfUasAMThthh2EZ/fX3a9TeXy3T2dECaGDY/OYzeOJIXWNG7DKzuhAFWcSRqAAK3Xl16/DJnM'+
    'mTaGMApwAH63boLJTWmzRDSTDtfqz2PBE////4y9g+726RNyDkyyABV7ACCGAD6LOiuRADSMIJnM'+
    'Zo3XRlS6ASJ6HVKlLqvNptDus6fibTmcBxB2AG/BL93xy0KbIUGnAGvOCSGDCEqsCaTWgnu+WEGX'+
    'JFmjRoTGWiuJEbDlfDGDKZbOctXuwDCLF06YQwtuBiF7GbHfjePz2aDLkrfcpGmpXTuJN3LKI4G/'+
    'YvL48OLy11zCADGSC02cOSmLB9vxxp7YcHO1SnPDNzyYGlepLoC7aTyRKJnMZkGfFUCTLev43iWA'+
    'F1O3BRd7BRN3BYLSN2bMALnoijWKKPj89tPwtSmDGWWkXTCHJFabT9XsxTqKMaTdcCmMGSOBEk2r'+
    'EUKUKavgfGyzTUigI/T68t731ofLV3e7UjaIK5nMmYPIUNbm1pXKezGUGajTkHfMKlCgN5fVZf//'+
    '////////////////////////////////////////////////////////////////////////////'+
    '////////////////////////////////////////////////////////////////////////////'+
    '////////////////////////////////////////////////////////////////////////////'+
    '////////////////////////////////////////////////////////////////////////////'+
    '////////////////////////////////////////////////////////////////////////////'+
    '/////////////////////////////////////////////////////yH5BAEUAP8ALAAAAAAZABkA'+
    'AAj+AP8JHDjwAQkEevSQaESwoUNBBbCIwLMixAo8WJgUEOSwYRM+UB7ZGUlSx4cOTLR0FGgkkZYF'+
    'c2LKnNmECYKOiBosmsCzp0+eCwbEuNLwUAMfGpIqXZo0ABsVjLCcGdinASAhWLNqxbpDgYqvOZhI'+
    'EmjmiQA5aNOqlVODxVcVYeI8ISTwDpEuePPq7QKJy9swWbrYuNHnUBs3NhIrXgzix1snKRTfYYDj'+
    'SYLLmDMnmPKWy4bMJ44cOeGitOnTZLyqUFDitAsLM56cCEK7SR0VdZrQfruHtm/aPG7MUMKhuO2v'+
    'LChw+FqHQfHnxb3MOHCHgHUeVt6yePT1g/Xv35WpzDAhBbyFCG+/FlIDHnybSP9ugJFBXwYhFOk/'+
    '1N8vA4wUDP9k0IYBBBIIBH4qbFFGgQwa8EcDAmFwwxAwVFhhJBWoUIWFHMIwhBRjDBSJFB6UaOIX'+
    'SFxg4ooeSIFGQ3lI8cYLNNZoY41vOHCHGA7FCEcPQAYpZA9wSHEDjx2tcYMEIzTppJMSSJEHkisZ'+
    'ccMNDrQQBQBRtCDBDVIMspJDRih55ZV0iNlRQAA7';


    //-------------------------------------------------------------------------------------

    function GetURLData(URL,IMGID,BackParse,Or_URL) {
        var QuaproMsg = "";
	//------------------------------
	GM_xmlhttpRequest({
	    method: "POST",
	    url: "http://143.233.226.33:8080/QuatroPlus/QuaproPlus",
	    headers: {"Content-type": "text/xml"},
	    data: "<soapenv:Envelope xmlns:q0='http://www.quatro-project.org/quapro' xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'> <soapenv:Header></soapenv:Header> <soapenv:Body> <q0:quaproRequest> <q0:url>" + URL + "</q0:url> <q0:ua>qsn</q0:ua> <q0:format>soap</q0:format> </q0:quaproRequest> </soapenv:Body> </soapenv:Envelope>",
	    onload: function(responseDetails) {			
			if (responseDetails.status == 200) { var QuatroDOM = (new DOMParser()).parseFromString(responseDetails.responseText,"text/xml");
							     var labels = QuatroDOM.getElementsByTagName('label');
							     //-------------------------
							     for (var i = 0; i < labels.length; i++) {
								if ( labels[i].getElementsByTagName('la')[0].textContent == "qsn") {
								        QuaproMsg = "";
							     		var QuaproArray = [];   //--- to store (ID, Description, Perc)...
									//----------------------
									var descriptors = labels[i].getElementsByTagName('descriptor');
									//----------------------
							     		for (var j = 0; j < descriptors.length; j++) {
									    var k = descriptors[j].getElementsByTagName('id')[0].textContent.indexOf("perc_",0);
									    if (k == -1) { QuaproArray[QuaproArray.length] = descriptors[j].getElementsByTagName('id')[0].textContent;
											   QuaproArray[QuaproArray.length] = descriptors[j].getElementsByTagName('description')[0].getElementsByTagName('descriptorDescription')[0].textContent;
											   QuaproArray[QuaproArray.length] = "";
									                 }
									}
									//----------------------
							     		for (var j = 0; j < descriptors.length; j++) {
									    var xid = descriptors[j].getElementsByTagName('id')[0].textContent;
									    var k = xid.indexOf("perc_",0);
									    if (k != -1) { xid=xid.substr(k+5);
											   QuaproArray[QuaproArray.indexOf(xid)+2] = descriptors[j].getElementsByTagName('value')[0].textContent;
											 }
									}
									//----------------------
							     		for (var j = 1; j < QuaproArray.length; j=j+3) { QuaproMsg += QuaproArray[j]+";"+QuaproArray[j+1]+";"; }
								}
							     }
							     //-------------------------
							     if (QuaproMsg != "") { var elem = document.getElementById(IMGID);
											elem.src = IMGOK_02;
											elem.border = "0";
											elem.width = '18';
											elem.style.visibility='visible';											
elem.setAttribute("onmouseover","return show_hide_box(this,'" +QuaproMsg +"','"+Or_URL+"','"+URL+"');");
elem.setAttribute("onmouseout", "return show_hide_box(this,'','','');");
							     }
			                                     else { m = URL.lastIndexOf("*");
                                                                    if ((m>0)&&(BackParse==0)) { xURL=URL.substring(0,m);
									                       GetURLData(xURL,IMGID,'0',Or_URL);
                                                                    }
								    else { k = URL.lastIndexOf("/");
                                                                           if (k>7) { xURL=URL.substring(0,k)+"*";
                                                                                      GetURLData(xURL,IMGID,'1',Or_URL);
                                                                           }
                                                                    }
                                                             }
			}
       		    }
	});	
    };

    //-------------------------------------------------------------------------------------

    function CalcURLs() {
	var nText = "";
	var nURL = "";
	//------------------------------
        var SIDX = 0;
	//------------------------------
	var xText = document.body.innerHTML;
	xText= xText.replace(/%3A/g, ":");
	xText= xText.replace(/%2F/g, "/");
	var zText = xText;
	//------------------------------
	var idx = 0;
       	while (xText.length > 0) {
	    var i = xText.indexOf("<a",0);
	    if (i > -1) { j = xText.indexOf("</a>",i);              
			  nText = xText.substring(i, j+4);
			  //-------------------------
			  k = nText.indexOf("http://",0);
			  if (k > -1) { 
				        nURL = nText.substring(k, nText.indexOf("\"",k));
 					//-------------------------
					SIDX++;	
					LINKS[LINKS.length] = nURL+"*";
					LINKS[LINKS.length] = "QPls_"+SIDX;
 					//-------------------------
                                        Msg = "<img id=\"QPls_" +SIDX + "\" src=\"\" style=\"visibility:hidden\" />";
					zText = zText.substring(0,idx+j+4) + Msg + zText.substr(idx+j+4);
					idx +=j + Msg.length + 1; 
				      }
			         else { nURL="";
				      	nTitle = "";	
					idx +=j+1;	
                                      }
			  //-------------------------
			  xText = xText.substr(j+1);					   
	     		}
		   else { xText=""; }
	}
        document.body.innerHTML = zText;
	//---------------- CALL QUAPRO for ALL LINKS
	for (var i = 0; i < LINKS.length; i=i+2) { GetURLData(LINKS[i],LINKS[i+1],'0',LINKS[i]); }
    };	

    //----------------------- MAIN SCRIPT CODE --------------------------------------------

    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'http://tethis.iit.demokritos.gr/uscripts/qpluspopup.js';
    document.getElementsByTagName('head')[0].appendChild(script); 	

    CalcURLs();

};


//======================== Event Listener LOAD/ONLOAD =====================================

   if (window.addEventListener) { window.addEventListener('load', functionMain, false); }
   else { window.attachEvent('onload', functionMain); }