// ==UserScript==
// @name          Flickr - Teleport to SLurl
// @namespace     http://www.ts0.com
// @description	  Teleport to a machine tagged SLurl
// @include       http://*flickr.com/photos/*/*
// @exclude       http://*flickr.com/photos/tags/*
// ==/UserScript==

//


( function () {

picid=unsafeWindow.page_photo_id;
if (!picid) 
  return;

//check for tags
foundpeople = [];
if(!unsafeWindow.global_photos[picid])
  return;
  region='';
  xco='';
  yco='';
  zco='';
for (i in unsafeWindow.global_photos[picid].tags_rawA) {

  if (unsafeWindow.global_photos[picid].tags_rawA[i].match(/secondlife\:region=/i)) {
    region=unsafeWindow.global_photos[picid].tags_rawA[i].split(/secondlife\:region=/i)[1];
  }
  if (unsafeWindow.global_photos[picid].tags_rawA[i].match(/secondlife\:x=/i)) {
    xco=unsafeWindow.global_photos[picid].tags_rawA[i].split(/secondlife\:x=/i)[1];
  }
  if (unsafeWindow.global_photos[picid].tags_rawA[i].match(/secondlife\:y=/i)) {
    yco=unsafeWindow.global_photos[picid].tags_rawA[i].split(/secondlife\:y=/i)[1];
  }
  if (unsafeWindow.global_photos[picid].tags_rawA[i].match(/secondlife\:z=/i)) {
    zco=unsafeWindow.global_photos[picid].tags_rawA[i].split(/secondlife\:z=/i)[1];
  }
}

if (region+xco+yco+zco == '')
{
    for (i in unsafeWindow.global_photos[picid].tags_rawA) {

      if (unsafeWindow.global_photos[picid].tags_rawA[i].match(/region:/i)) {
        region=unsafeWindow.global_photos[picid].tags_rawA[i].split(/region:/i)[1];
      }
      if (unsafeWindow.global_photos[picid].tags_rawA[i].match(/x:/i)) {
        xco=unsafeWindow.global_photos[picid].tags_rawA[i].split(/x:/i)[1];
      }
      if (unsafeWindow.global_photos[picid].tags_rawA[i].match(/y:/i)) {
        yco=unsafeWindow.global_photos[picid].tags_rawA[i].split(/y:/i)[1];
      }
      if (unsafeWindow.global_photos[picid].tags_rawA[i].match(/z:/i)) {
        zco=unsafeWindow.global_photos[picid].tags_rawA[i].split(/z:/i)[1];
      }
    }
}

if (region+xco+yco+zco == '')
    return;

var xQuery, pPriv;
xQuery = document.evaluate(
    "//p[@class='Privacy']",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);
if (xQuery.snapshotLength > 0)
{
    pPriv = xQuery.snapshotItem(0);
}
else
    return;

teleurl = "http://slurl.com/secondlife/"+escape(region)+"/"
if (xco!=''&&yco!='')
{
    teleurl+=xco+'/'+yco+'/';
    if(zco!='')
    {
        teleurl+=zco;
    }
}

var link = document.createElement("div");
link.innerHTML = "<br /><a href=\""+teleurl+"\"><img src=\"data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAEtLSwtDQ0MoQUFBXj8/P9U1NTXWNzk25Dg6N+U1NzXkOjo630BAQIYAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAFGRkYTPT09RUBBPeKDil34tLdw/93ac//l33H/yMNs/6OiZP1DRTnoPj4+yAAAAAAAAAAAAAAAAAAAAABfX18ERUVFIUhKQt/AzHP+tL91+oCIZtlXW0zMSExC41dZSeqsr3H3z9Bz/0BDOeNAQECyAAAAAAAAAAAAAAAAVVVVBjw8PMKxw3n8madt9kNEQcA7PDu0iZFi9cbOfP+Vm2X8PT8846CpcPeMl2P3Pz8/uEFBQW8AAAAAAAAAAE5OTglCREHErcl6/0hORNs/Pz/HVl5N5cjZev/L2nn/ytl4/1xjTfNIS0X5orV6/T09Pa9BQUFgQ0NDKgAAAABLS0sLRkpFy7DThP9qeWbwYnBX8E1SSfrJ5on/x+GI/3WCa/dLUEj8jaJz+oKVbfVBQUGVQUFBVkNDQygAAAAATExMCkhNR8644pX/WWVb4LbbnPrC66T/yPOk/8jyo/+x1Jn+ttyd/q7SlfxFSUbSQEBAkkFBQVdCQkIrAAAAAE9PTwhMUkvQv+qj/z0+PepKUkrTSk9K93uScu9WX1L7iqN/90dMRvhSWE77PDw870BAQKVBQUFlQkJCNAAAAABZWVkFUlpR1bvjqvk+Pj70yeqj/kdMQuCTpnr2TFJD6azBivpDRUD0qL+I+VNbSOhAQEC0QUFBdEFBQUAAAAAAX19fBIOajVtFR0bIREdD4s/2qf9ARD7fzOec/l9pUO2uxIz6aXRX8XWEZ++NpHr4Pj4+vEBAQINBQUFIAAAAAAAAAABZWVkFPz8/sYGafNTJ8LT+PUE/2s/xpv9eaVPrl7CE9oigefdOV07hrtWg/zU2NsJAQECGQUFBQQAAAAAAAAAAampqAz4+Pre32rL1p8ag+D9DQdXN+7z/WWRW5nqTd+6jy538PUA/0a7eqP5ETETGQUFBY0JCQi4AAAAAAAAAAGpqagM8PT3D0vrN/nyQeuhITknLz/7K/01XTd9ofGrguOq0/js9PL2QsZXbVGFXi0JCQixFRUUXAAAAAAAAAABqamoDS1JMpNT91f9da17BVmJYt9D+z/9GTUbPW2tex7rzuf86PTurQUFBVUNDQyZJSUkNVVVVBgAAAAAAAAAAf39/Ak9UUX211rrCWWlc12uAcKjM/M//QklDq05YU3yt3LLnWWhc2UNDQyRHR0cRQEBAAwAAAAAAAAAAAAAAAAAAAABfX18EX19fBE9PTwhsfnVTrtC0w1lpXNRDQ0MiRkZGE05OTglVVVUGX19fBAAAAAAAAAAAwA8AAIAHAACAAwAAgAEAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAA///AAf//4AP//w==\" alt=\"Take in Second Life\" align=\"left\" /></a>Taken at <a href=\""+teleurl+"\" class=\"Plain\">"+region+"</a>";

pPriv.insertBefore(link,pPriv.childNodes[pPriv.childNodes.length-1])

}) ();


( function () {

var xQuery, tagsDiv, addSlurl;

xQuery = document.evaluate(
    "//div[@class='TagList']",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);
if (xQuery.snapshotLength > 0)
{
    tagsDiv = xQuery.snapshotItem(0);
}
else
    return;

addSlurl = document.createElement("a");

addSlurl.className = "Plain";
addSlurl.href = "#";
addSlurl.innerHTML = "Add a SLurl";

tagsDiv.appendChild(addSlurl);

addSlurlForm = document.createElement("div");
addSlurlTxt = document.createElement("input");
addSlurlBtn = document.createElement("button");
addSlurlLbl = document.createElement("label");

addSlurlForm.style.display = "none";
addSlurlForm.style.marginTop = "3px";

addSlurlLbl.innerHTML = "Second Life SLurl";

addSlurlTxt.style.marginBottom = 0;
addSlurlTxt.style.width = "190px";

addSlurlBtn.className = "SmallButt";
addSlurlBtn.innerHTML = "ADD";

addSlurlBtn.addEventListener('click',function(e)
{
    var regex;
    regex = /http:\/\/slurl\.com\/secondlife\/([^\/]*)\/?(?:([0-9]*)\/([0-9]*)\/?(?:([0-9]*))?)?/g.exec(addSlurlTxt.value);
    
    if(regex)
    {
    region = regex[1];
    xco = regex[2];
    yco = regex[3];
    zco = regex[4];
    
    tags = 'secondlife:region="'+unescape(region)+'" ';
    
    if(xco != undefined && yco != undefined)
    {
        tags+='secondlife:x='+xco+' secondlife:y='+yco+' ';
        if(zco != undefined)
        {
            tags+='secondlife:z='+zco+'';
        }
    }
    
    
    unsafeWindow.tagrs_addTag(picid, tags);
    addSlurlForm.style.display = "none";
    addSlurl.style.display = "block";
    
    }
    else
        alert("Not a valid SLurl")
    e.preventDefault();
    e.stopPropagation();
},true);

addSlurlForm.appendChild(addSlurlLbl);
addSlurlForm.appendChild(document.createElement("br"));
addSlurlForm.appendChild(addSlurlTxt);
addSlurlForm.appendChild(addSlurlBtn);
tagsDiv.appendChild(addSlurlForm);

addSlurl.addEventListener('click',function(e)
{
    addSlurlForm.style.display = "block";
    addSlurl.style.display = "none";
    e.preventDefault();
    e.stopPropagation();
},true);



}) (); // end anonymous function

