Cinza
Autor: Bliss | Publicado: 2011-02-05T16:22:00-08:00

mais um dia, cinza
mais uma vida, indo embora
tão distante, que eu nem sei pra onde

e o céu derrama lágrimas
talvez, a hora estivesse errada
talvez, era pra ter sido em outra circunstância

a ausênsia é tão certa
quanto esse vazio imenso
todos os rostos que eu conheço
reunidos numa só sala
é a hora de se despedir
pela ultima vez

meus pensamentos, perdidos
eu me lembro bem daquele dia
como se tivesse sido ontem

vocês foram incríveis
queria ter tido mais tempo
mas só tenho a chuva, batendo no vidro do carro

a ausênsia é tão certa
quanto esse vazio imenso
todos os rostos que eu conheço
reunidos numa só sala
é a hora de se despedir
uma&nbsp;ultima vez
﻿// used to save the current hostname
var gAvgHostName = "";
var gAvgDataElement = null;

function avg_ls_does_url_contain(url, contain)
{
 if ((url == null) || (url.length < 1))
 {
  return false;
 }

 var strUrl = new String(url);

 // breakup the url to check
 var parts = strUrl.split("/");
 if (parts.length < 3)
 {
  return false;
 }

 var domain= parts[2].toLowerCase();

 if (domain.indexOf(contain) > -1)
 {
  return true;
 }

 return false;
}

function avg_ls_valid_gmail_search(url)
{
  if ((url == null) || (url.length < 1))
  return false;

 var hostMatch = false;

 // split the url based on '/'
 var strUrl = new String(url);
 var parts = strUrl.split("/");

 // need domain and path
 if ((parts == null) || (parts.length < 4))
  return false;

 var domain= parts[2];
 var path  = parts[3];

 if ((domain.indexOf("mail.google.") != -1) || 
  (domain.indexOf("gmail.") != -1))
 {
        // save the hostname to use getting links
        gAvgHostName = "google.com";
        return true;
 }

 return false;
}

function avg_ls_get_parent_div(element)
{
 if ((element == null) || (element.parentNode == null))
  return null;

 while (element != null)
 {
  if ((element.tagName == "DIV") && element.className && 
   (element.className.length > 0))
   return element;

  element = element.parentNode;
 }

 // no div
 return null;
}

function avg_ls_parse_ads(href)
{
 if (!href)
  return href;

 // check for google ad
 var regex = "^http(s)?\:\/\/([a-zA-Z0-9]+)\.googlesyndication\.com.+\&adurl\=(.+)";
 var re = new RegExp(regex);
 var matches = href.match(re);
 if (matches && (matches.length >= 4))
 {
  // else we want the fourth value
  var match = matches[3];
  if (match && (match.length > 0))
   return match
 }

 return href;
}

function avg_ls_get_gmail_links(doc, processFrames)
{
 if (doc == null)
  return;

 var links = new Array();
 var anchors = avg_ls_get_anchors(doc);
 var element = null;
 var outHref = "";
 var elemClass = "";

 // loop through all 
 for (var i = 0; (i < anchors.length) && anchors; i++)
 {
  element = anchors[i];
        
  // already processed this element
  if (element.getAttribute("avglschecked"))
   continue;

  // mark that we have seen it
  element.setAttribute("avglschecked", "1");

  // initial checks
  if ((element.href == null) || (element.href.length < 1))
   continue;

  if (avg_ls_does_url_contain(element.href, gAvgHostName))
      continue;

  // don't mark anything but http://
  if (element.href.indexOf("mailto") == 0)
   continue;

  if (element.parentNode)
  {
   var parentDiv = avg_ls_get_parent_div(element);
   if ((parentDiv.tagName == "DIV") && 
    ((parentDiv.className == "ii gt") || // mail message body
     (parentDiv.className == "mv") ||    // top sponsored links
     (parentDiv.className == "vb") ||  // right sponsored links
     (parentDiv.className == "im") ||  // inside quotes
     (parentDiv.className == "gmail_quote") // quote
     ))   // right ads
   {
    // parse for any ads
    var newHref = avg_ls_parse_ads(element.href);

    // add the image
    avg_ls_check_url(doc, element, newHref);
   }
  }
 }

 // recursively process all frames
 if (processFrames && doc.frames && (doc.frames.length > 0))
 {
  for (var j = 0; j < doc.frames.length; j++)
  {
   // 'editable' frame it's probably a reply
   if (doc.frames[j].frameElement.className && 
    (doc.frames[j].frameElement.className.indexOf("editable") != -1))
   {
    continue;
   }
  
   avg_ls_get_gmail_links(doc.frames[j].document, processFrames);
  }
 }

 return links;
}

function avg_ls_has_image(element)
{
 if ((element == null) || (element.firstChild == null))
  return false;
 
 var nextElem = element.firstChild;
 while (nextElem)
 {
  if (nextElem.id && (nextElem.id.indexOf("avg_ls_image") != -1))
   return true;

  nextElem = nextElem.nextSibling;
 }

 return false;
}

function avg_ls_add_image(doc, element, image)
{
 if ((doc == null) || (element == null))
  return ;

 // if no image, nothing to add
 if (image == null) 
  return;

 // create a new image
 var img = doc.createElement('img');
 img.src = image;
 img.border=0;
 img.id = "avg_ls_image";

 // append the image to the link
 element.appendChild(img);
}

var timeoutId = null;
var stopGmail = false;
function avg_ls_monitor_gmail(doc, processFrames)
{
 // clear the timer if set
 if (timeoutId)
 {
  clearTimeout(timeoutId);
  timeoutId = null;
 }

 // get the links
 avg_ls_get_gmail_links(doc, processFrames);

 // reset the 
 if (!stopGmail)
  timeoutId = setTimeout(function() {avg_ls_monitor_gmail(doc, processFrames);}, 1000);
}

function avg_ls_process_links(doc, processFrames)
{
 if (avg_ls_valid_gmail_search(doc.location.href))
 {
  // process the gmail links
  stopGmail = false;
  avg_ls_monitor_gmail(doc, processFrames);
 }
}

function avg_ls_reload(e)
{
 avg_ls_process_links(document, true); 
}

function avg_ls_onload(e)
{
 if (timeoutId)
 {
  clearTimeout(timeoutId);
  timeoutId = null;
 }

 var doc = document;

 // set the event handler for the data element to listen for load/reloads
 var data_element = doc.getElementById("avglsdata");
 if (data_element)
 {
  // save data element for use in later iframes
  gAvgDataElement = data_element;

  // rowexit event used to notify javascript of a page data load
  avg_ls_remove_event(data_element, "rowexit", avg_ls_reload);
  avg_ls_add_event(data_element, "rowexit", avg_ls_reload);

  // process links for the document
  avg_ls_process_links(doc, true);
 }
}

function avg_ls_get_anchors(doc)
{
 return doc.getElementsByTagName("a");
}

function avg_ls_call_func(doc, name, param1, param2, param3, param4, param5)
{
 var avg_ls_data = null;

 // get the data element
 if (gAvgDataElement == null)
 {
  avg_ls_data = doc.getElementById("avglsdata");
  if ((avg_ls_data == null) || (name == null))
  {
   // data element does not exist
   return;
  }
  gAvgDataElement = avg_ls_data;
 }
 else
 {
  avg_ls_data = gAvgDataElement;
 }

 // for some reason you can't fire and event on an element with no parent node
 if ((avg_ls_data == null) || (avg_ls_data.parentNode == null))
 {
  return;
 }

 // set the attributes
 avg_ls_data.setAttribute("function", name);
 
 if (param1)
  avg_ls_data.setAttribute("param1", param1);
 if (param2)
  avg_ls_data.setAttribute("param2", param2);
 if (param3)
  avg_ls_data.setAttribute("param3", param3);
 if (param4)
  avg_ls_data.setAttribute("param4", param4);
 if (param5)
  avg_ls_data.setAttribute("param5", param5);

 avg_ls_data.fireEvent("onrowenter");

 // get the result
 return avg_ls_data.getAttribute("result"); 
}

function avg_ls_get_image(result)
{
 if ((result == null) || (result.length < 1))
  return null;

 var strResult = new String(result);
 var parts = strResult.split("::");

 var image = null;
 switch(parseInt(parts[0]))
 {
  case 0:
   // don't show greens inline
   //image = "linkscanner:safe12.png";
   break;
  case 1:
   image = "linkscanner:caution12.png";
   break;
  case 2:
   image = "linkscanner:warning12.png";
   break;
  case 3:
   image = "linkscanner:blocked12.png";
   break;
  default:
   image = "linkscanner:unknown12.gif";
   break;
 }
 return image;
}

// do the url check
function avg_ls_check_url(doc, element)
{
 if (avg_ls_has_image(element))
  return;

 var result = avg_ls_call_func(doc, "MalsiteCheck", element.href);
 if (result == null)
  return;

 // mark as processed
 element.setAttribute("avglschecked", "1");

 // get the image from the result
 var image = avg_ls_get_image(result);
 if (image == null)
  return;

 // add the image
 avg_ls_add_image(doc, element, image);
}

function avg_ls_add_event(obj, name, func)
{
 if (obj.addEventListener)
 {
  obj.addEventListener(name, func, false);
  return true;
 }
 else if (obj.attachEvent)
 {
  return obj.attachEvent("on"+name, func);
 }
 else
 {
  return false;
 }
}

function avg_ls_remove_event(obj, name, func)
{
 if (obj.removeEventListener)
 {
  obj.removeEventListener(name, func, false);
  return true;
 }
 else if (obj.detachEvent)
 {
  return obj.detachEvent("on"+name, func); 
 }
 else
 {
  return false;
 }
}

avg_ls_add_event(window, "load", avg_ls_onload);