// FlickrFont v01
// http://www.greg-hill.id.au
// This work is licensed under a Creative Commons Attribution-ShareAlike 2.1 Australia License.
// Converts text in elements with class "FlickrFont" to images drawn from http://www.flickr.com
// http://ghill.customer.netspace.net.au/flickrfont

FlickrFont=new Array();Q=0;function FlickrFontClass(){Q=0; var els=document.getElementsByTagName('*'); FFels=new Array(); string=new Array(); outHTML=new Array();for(var i=0; i<els.length; i++)   if (els[i].className.search('FlickrFont')==0)   FFels.push(els[i]);  for(var i=0; i<FFels.length; i++) {string[i]=FFels[i].innerHTML;   FFels[i].innerHTML='<img  src="http://ghill.customer.netspace.net.au/snake_transparent.gif" /><br/><b>FlickrFont:</b><br/> Images loading ...';}   buildFont();  if(Q==0) outputClass();  return;}  function buildFont() {var index; allChars=string.join().toUpperCase().replace(/drops/g,'');  for(var i=0; i<allChars.length; i++) {currChar=allChars.substr(i,1);  index=allChars.indexOf(currChar);  if (index>-1 && index<i)   continue;   if (typeof(FlickrFont[currChar])=='undefined')   fetchImages(currChar);} return;}   function outputClass() {for(var i=0; i<FFels.length; i++) {outHTML[i]=Flickrfy(string[i]);   FFels[i].innerHTML=outHTML[i];  FFels[i].className="Flickred";   if (FFels[i].id.search('FF_demo')==0)  { document.getElementById('static').value=outHTML[i];   FFels[i].className="FlickrFont"; }}  return;}  function Flickrfy( str ) {var re=/http:\/\/\w*.?static[^&]+/i;  var resize=/_m\./ig;  var writeHTML="";  if (!str) return '';  for (var i=0; i<str.length; i++) {currChar=str.substr(i,1).toUpperCase();   if (currChar.search(drops)>-1)   continue;   if (currChar.search(blanks)>-1)  { writeHTML+='<img src="http://www.flickr.com/images/spaceball.gif" width="'+imgX+'" height="'+imgY+'" alt="'+currChar+'" title ="'+currChar+'" style="'+imgStyle+'"/>';    continue; }   if (!FlickrFont[currChar])   continue;   var count=FlickrFont[currChar].length;  if (count==0)   continue;   var num=count;  while(num>=count)   num=Math.floor(Math.random()*(count));   var FFimg=FlickrFont[currChar][num];   var link=FFimg.link;  var descr=FFimg.description;   var url=re.exec(descr)[0].replace(resize, '_s.');   var imgTag='<a href="'+link+'"><img src="'+url+'" width="'+imgX+'" height="'+imgY+'" alt="'+currChar+'" title ="'+currChar+'" style="'+imgStyle+'"/></a>';   writeHTML += imgTag;}  return writeHTML;}  function fetchImages( currChar ) {var tags;  if (currChar.search(/[a-z]/i)>-1)  tags=tagChar+','+currChar+currChar;    else  if (currChar.search(/[0-9]/)>-1)   tags=tagDigit+','+currChar;  else   if (typeof(marks[currChar])!='undefined')    tags=tagPunct+','+marks[currChar];      else    return;  var req_url='http://www.flickr.com/services/feeds/photos_public.gne?tags='+tags+'&format=json';  var script=document.createElement('script'); script.type='text/javascript'; script.src=req_url; document.getElementsByTagName("head")[0].appendChild(script);  Q++;  return;}  function jsonFlickrFeed( obj ) {var title=obj.title; var re=/ ([a-z0-9]+) \-/i; var tag; currChar="sentinel";  tag=re.exec(title)[1].toUpperCase();  Q--;  if (tag.length==0) {if (Q==0) outputClass();  return;}  if (tag.length<3)  currChar=tag.charAt(0); else  for(var i in marks)   if (tag.toLowerCase().search(marks[i])>=0)    currChar=i;  if (currChar=="sentinel") {if (Q==0) outputClass();  return;}  FlickrFont[currChar]=obj.items;  if (Q==0) outputClass();  return;}  function FlickrFontString( str, varstr ) {if (!varstr)  varstr="FFstr";  string[0]=str;  buildFont();  var script=document.createElement('script'); script.type='text/javascript'; script.text=varstr+'= Flickrfy("'+str+'");'; document.getElementsByTagName("head")[0].appendChild(script);  return;}  