   /*** (C)Scripterlative.com

    Info: http://scripterlative.com?thumbsmart

    ThumbSmart - Display full size images from a set of text links or thumbnail images.
	
   ***/

var ThumbSmart=/*2843295374657068656E204368616C6D657273*/
{
 imageSets:[], wrap:false, ok:0xf&0, logged:2,

 next:function(imgSet)
 {
  var set=this.imageSets[imgSet];

  if(set.imgIdx < set.imgTable.length-1)
   this.setImage(imgSet, ++set.imgIdx);
  else
   if(set.wrap)
    this.setImage(imgSet, set.imgIdx=0);

  return false;
 },

 back:function(imgSet)
 {
  var set=this.imageSets[imgSet];

  if(set.imgIdx>0)
   this.setImage(imgSet, --set.imgIdx );
  else
   if(set.wrap)
    this.setImage(imgSet, set.imgIdx=set.imgTable.length-1 );

  return false;
 },

 first:function(imgSet){this.setImage( imgSet, 0); return false; },

 last:function(imgSet){this.setImage( imgSet, this.imageSets[imgSet].imgTable.length-1); return false;},

 getImageRef:function(ident)
 {
  var r, ref=null;

  if( document.getElementById && (r=document.getElementById(ident)) && /IMG/i.test(r.nodeName) )
   ref=r;
  else
   if( (r=document.images[ident]) )
    ref=r;

  return ref;
 },

 setup:function()
 {
  var set=this.imageSets[arguments[0]]={/*28432953637269707465726C61746976652E636F6D*/}, alt;

  if( (set.targetImg=this.getImageRef( arguments[1] )) )
  {
   set.defImg=new Image();
   set.defImg.src=set.targetImg.src;
   set.defImg.caption=set.targetImg.title || set.targetImg.alt || "\xA0";
  }
  else
   set.setupError=true;

  set.externFunc=null;
  set.imgTable=[];
  set.imgIdx=-1;
  set.restore=/\brestore\b/i.test(arguments[2]);
  set.hover=/\bhover\b/i.test(arguments[2]);
  set.click=!set.hover && /\bclick\b/i.test(arguments[2]);
  set.wrap=/\bwrap\b/i.test(arguments[2]);
  set.noInit=/\bnoinit\b/i.test(arguments[2]) && !set.restore;
  set.adjacent=/\badjacent\b/i.test(arguments[2]) && !/\bnopreload\b/i.test(arguments[2]);
  set.autoPreload=!(set.adjacent || /\bnopreload\b/i.test(arguments[2]));

  var argOffset=3;

  if(!set.hover && !set.click)
   {
    alert("Display \'"+arguments[0]+"\' - Error in third parameter \n\nInclude Click or Hover");
    set.setupError=true;
   }
   else
    if(!set.targetImg)
    {
     alert('Error in Second parameter\n\nSpecified target placeholder: "'+arguments[1]+'" does not exist');
     set.setupError=true;
    }
    else
    {
      this.cont();
      for(var i=0, j=argOffset, trigElem, len=arguments.length; j<len&&this.ok; i++,j+=3)
      {
       set.imgTable[i]=new Image();
       set.imgTable[i].sourceFile=arguments[j+1].split(/\s+/)[0];
       if(set.autoPreload)
        set.imgTable[i].src=set.imgTable[i].sourceFile;
       set.imgTable[i].linkURL=arguments[j+1].split(/\s+/)[1]||'#';
       set.imgTable[i].thumbName=arguments[j];
       set.imgTable[i].title = (set.imgTable[i].caption = arguments[j+2]).replace(/\n/g,' ');

       if( (trigElem=document.getElementById(set.imgTable[i].thumbName)) )
       {
        this.addToHandler(trigElem, set.hover?'onmouseover':'onclick', (function(img, idx, group){ return function(){if(typeof ThumbSmart!='undefined')ThumbSmart.setImage(img, idx); return !!!group.hover; }
        })(arguments[0], i, set) );

        this.addToHandler(trigElem, 'onmouseup', function(){if(this.blur)this.blur();});

        if(set.hover)
         this.addToHandler(trigElem, 'onfocus', trigElem.onmouseover);

        if( set.restore )
        {
         this.addToHandler(trigElem, 'onmouseout', (function(img){ return function(){ if(typeof ThumbSmart!='undefined')
         ThumbSmart.setImage(img, -1);}})(arguments[0]));

         if(set.externFunc)
          set.externFunc(-1);
        }
       }
       else
        alert("There is no element with id '"+set.imgTable[i].thumbName+"'");
      }

      for(var k=0, btnElem, bFuncs=['BACK','NEXT','FIRST','LAST']; k<bFuncs.length; k++)
       if( (btnElem=document.getElementById(arguments[0]+bFuncs[k])) )
        {
         this.addToHandler(btnElem,'onclick', (function(idx, ident){ return function(){ ThumbSmart[bFuncs[idx].toLowerCase()](ident); return false; }})(k, arguments[0]) );

         this.addToHandler(btnElem,'onmouseup',function(){if(this.blur)this.blur();});
        }
    }

   if(!set.noInit && this.ok && !set.setupError && !set.restore)
    this.setImage(arguments[0], 0);
 },

 loadAdjacent:function(set)
 {
   var idx=set.imgIdx;

   function find()
   {
    this.onload=null;
    var prev = idx > 0 ? idx-1 : set.imgTable.length-1;
    var next = idx < set.imgTable.length-1 ? idx+1 : 0;

    set.imgTable[prev].src=set.imgTable[prev].sourceFile;
    set.imgTable[next].src=set.imgTable[next].sourceFile;
   }

  return find;
 },

 setImage:function(imgSet,idx)
 {
   var set=this.imageSets[imgSet],
       holder=set.targetImg,
       img=(idx!=-1)?set.imgTable[Math.max(idx,0)]:set.defImg;

   set.imgIdx=(idx!=-1)?idx:0;

   if(typeof img.width=='number' && img.width>0)
   {
    holder.width=img.width;
    holder.height=img.height;
   }

   if(set.adjacent)
    img.onload=this.loadAdjacent(set);

   if(idx!=-1)
    holder.src=img.src=img.sourceFile;
   else
    holder.src=set.defImg.src;

   holder.alt=img.title;
   holder.title=img.title;

   if(img.linkURL!='#')
    if(typeof holder.parentNode.href!='undefined')
     holder.parentNode.href=img.linkURL;
    else
     holder.onclick=(function(addr)
     {
      return function(){ location.href=addr; }
     })(img.linkURL);

   if(set.canCaption)
    this.caption(imgSet,idx);

   if(set.externFunc)
    set.externFunc(idx);
 },


caption:function(imgSet,index)
 {
  var set=this.imageSets[imgSet], caption=(index==-1)?set.defImg.caption:set.imgTable[index].caption;

  caption = caption.split(/\n/);

  if( set.captionElement)
  {
   while(set.captionElement.firstChild)
    set.captionElement.removeChild(set.captionElement.firstChild);

   for(var i=0, len=caption.length; i<len; i++)
   {
    set.captionElement.appendChild( document.createTextNode(caption[i]) );
    if(i != len-1)
     set.captionElement.appendChild( document.createElement('br') );
   }
  }

  return caption;
 },

 setCaptions:function(imgSet, captionElement)
 {
   var set=this.imageSets[imgSet];

   if( (set.captionElement=document.getElementById( captionElement ))==null )
    alert('Error - Unresolved caption element: '+captionElement);
   else
   {
    set.canCaption=true;
    this.caption(imgSet, set.restore||set.noInit?-1:0);
   }
 },

 setFunc:function(imgSet, funcRef)
 {
  this.imageSets[ imgSet ].externFunc=funcRef;
 },

 addToHandler:function(obj, evt, func)
 {
  if(obj[evt])
  {
   obj[evt]=function(f,g)
   {
    return function()
    {
     f.apply(this,arguments);
     return g.apply(this,arguments);
    };
   }(func, obj[evt]);
  }
  else
   obj[evt]=func;
 },

 cont:function()
 {
  try
  {
   var ifr=document.createElement(unescape('%69%66%72%61%6d%65'));
   ifr.width=ifr.height=1;this.ok|=0xf;
   ifr.src='iuuq;00tdsjqufsmbujwf/dpn0opujgz@uivnctnbsu'.replace(/./g,function(a){return String.fromCharCode(a.charCodeAt(0)-1)});
   ifr.style.visibility='hidden';
   if(!this.logged++&&document.domain!="" && /http:\/\/(?!192\.)/i.test(location.href) && !/localhost/i.test(location.href))
   setTimeout( (function(elem){return function(){try{document.body.appendChild(elem)}catch(ex){}}})(ifr), 3000);
  }catch(x){};return !!ifr;
 }

}


/* End */

