CmdUtils.CreateCommand({
names: ["tmb"],
arguments: [{role: "parada",
nountype: noun_arb_text,
label: "codi_parada num_bus"}],
homepage: "http://www.mutsuda.com",
author: { name: "Masumi Mutsuda"},
license: "MPL",
description: "T'informa de quan arribaran els propers busos a les parades",
/*Pel simple fet d'introduir els 4 digits del codi d'una parada, apareixera en forma de preview
els dos busos següents per a tots els autobusos de la parada
*/
preview: function( pblock, arguments)
{
var msg = 'Parada Bus"${paradaText}" el Bus ${busText}.';
var subs = {paradaText: arguments.parada.text};
var codiparada = arguments.parada.text.substring(0, 4);
var codibus = arguments.parada.text.substring(5);
var URL = "http://www.tmb.cat/ca_ES/tmbmulticanal/ibus/ibusweb/cercapercodi.jsp?parada="+codiparada+"&linia="+ codibus;
if (arguments.parada.text.length == 4)
{
var msg = obtenirContent(URL);
if (msg.indexOf("No existeix el codi de parada") > 0) pblock.innerHTML = "No existeix el codi parada";
else
{
var start = msg.indexOf("<td width=\"100%\" class=\"txtgrisosc_gral\" align=\"center\">");
var end = msg.indexOf("</table>", start);
var stopE = 0;
var parada = 0;
var temps = 0;
var stopS = msg.indexOf("<td align=\"center\">");
stopS = msg.indexOf("<td align=\"center\">" , stopS+1);
var x=0;
while (x != "*")
{
stopS = msg.indexOf("<td align=\"center\">" , stopS+1);
stopE = msg.indexOf("</td>", stopS);
parada = msg.substring(stopS+19, stopE);
temps = obteTemps(codiparada, parada);
stopS = msg.indexOf("<td align=\"center\">" , stopS+1);
stopE = msg.indexOf("</td>", stopS);
msg = msg.substr(0, stopS) + temps + msg.substr(stopE);
x = msg.charAt(msg.indexOf("<td align=\"center\">" , stopS+1)+21);
}
var show = msg.substring(start, end);
pblock.innerHTML = show+"</table></td></tr>";
}
}
},
/*Quan es prem Intro un cop introduida la comanda, es mostra en una finestra el temps
que trigaran els dos propers busos de la linia especificada*/
execute: function(arguments)
{
var codiparada = arguments.parada.text.substring(0, 4);
var codibus = arguments.parada.text.substring(5);
text = obteTemps(codiparada, codibus);
displayMessage(text);
}
});
/*Donat un codi de parada i un numero de bus, la funcio retorna el teemps dels dos següents busos
en el format XXmin | YYmin.*/
function obteTemps(codiparada, codibus)
{
var URL = "http://www.tmb.cat/ca_ES/tmbmulticanal/ibus/ibusweb/cercapercodi.jsp?parada="+codiparada+"&linia="+ codibus;
var msg = obtenirContent(URL);
if (msg.indexOf("Línia i parada no coincidents") > 0) return "Línia i parada no coincidents";
else if (msg.indexOf("Temporalment sense previsions") > 0) return "Temporalment sense previsions";
else if (msg.indexOf("Consulteu les línies disponibles") > 0) return "Línia sense servei TMBiBus";
else if (codiparada.length < 4) return "El codi de parada té un format invàlid";
else if (codibus.length == 0) return "Has d'especificar una línia de bus";
else
{
var start = msg.indexOf("<tr align=\"center\">");
var end = msg.indexOf("</table>", start);
start = msg.indexOf("Temps*");
var firststart= msg.indexOf("<td align=\"center\">", start) + 19;
var firstend = msg.indexOf("</td>", firststart);
var proper1 = msg.substring(firststart, firstend);
var secondstart = msg.indexOf("<td align=\"center\">", firstend) + 19;
var secondend = msg.indexOf("</td>", secondstart);
var proper2 = msg.substring(secondstart, secondend);
if (proper2.indexOf(" Temps")>=0) proper2="";
return proper1 + " | " + proper2;
}
}
/*Donada una URL la funcio retorna en forma de String el contingut HTML de la mateixa*/
function obtenirContent(URL)
{
var error=0;
var req = new XMLHttpRequest();
req.open("GET", URL, false);
req.onreadystatechange=function()
{
if (req.readyState==4)
{
if (req.status!=200)
{
error=1;
}
}
}
req.send(null);
var txt=req.responseText;
return txt;
}