/* 
*  Author:  David Gailey
*  File name: CloakImage.js
*
*  This will provide some basic level of protection from users downloading images
* Function name: 	cloak()
* Usage:  			Reference this script towards the bottom of the page
*					place rel="protected" attribute on any img tags you want to protect
*                
*/

//don't cloak if within a certain internal domain so customer service can grab images
//ideally this would be staging since it would have images/data closest to live

var uncloakedDomain = 'stage1';
if(!(location.href.match(uncloakedDomain)))
{
	try
	{
		function addEvent(obj, evType, fn)
		{ 
			if (obj.addEventListener)
			{ 
				obj.addEventListener(evType, fn, false); 
				return true; 
			} 
			else if (obj.attachEvent)
			{ 
				var r = obj.attachEvent("on"+evType, fn); 
				return r; 
			} else { 
				return false; 
			} 
		}
		// exclude firefox 1.0.x
		if(!navigator.userAgent.match(/firefox.1\.0\.?[0-9]/i)) addEvent(window, 'load', cloak);
	}catch(e){}
}

function cloak()
{
	var imgs = document.getElementsByTagName('img');
	var i, cloakerTitle;
	
	for(i=0;i<imgs.length;i++)
	{
		if (imgs[i].getAttribute('rel') == 'protected')
		{
			var cloaker  = document.createElement('div');
			imgs[i].parentNode.insertBefore(cloaker,imgs[i]);
			cloaker.className = 'cloak';
			cloaker.style.width = imgs[i].width + 'px';
			
			//cloaker.style.marginTop = imgs[i].offsetTop + 'px';
			//cloaker.style.marginLeft = imgs[i].offsetLeft + 'px';
			
			//console.info(imgs[i].offsetParent);
			
			var computedStyle = '0px';  //random default
			try
			{
				computedStyle = window.getComputedStyle(imgs[i], '').getPropertyValue('margin-top');
			}
			catch(e)
			{
				try
				{
					computedStyle = imgs[i].currentStyle.marginTop;
					if(computedStyle == 'auto') computedStyle = '0px';
				}catch(e){}
			}
			
			cloaker.style.height = imgs[i].height + parseInt(computedStyle.match(/[0-9]*/)) + 'px';
			cloaker.style.position = 'absolute';
			//cloaker.style.border = '1px solid green';
			
			//this adds mouseover tooltip text to cloaker div, clean up bad data in titles too
			cloakerTitle = imgs[i].title;
			//console.info('0 -',cloakerTitle);
			if(cloakerTitle.match(/(&)+(amp;)*reg;/))
			{	cloakerTitle = cloakerTitle.replace(/(&)+(amp;)*reg;/g,'\u00AE');
				//console.info('1 -',cloakerTitle); 
			}
			if(cloakerTitle.match(/(&)+(amp;)*trade;/))
			{	cloakerTitle = cloakerTitle.replace(/(&)+(amp;)*trade;/g,'\u2122');
				//console.info('2 -',cloakerTitle); 
			}
			if(cloakerTitle.match(/(&)+(amp;)*amp;/))
			{	cloakerTitle = cloakerTitle.replace(/(&)+(amp;)*amp;/g,'&');
				//console.info('2 -',cloakerTitle); 
			}
			
			cloaker.title = cloakerTitle; 
			//console.info(cloakerTitle);
			
			//add pointer if img's parentNode is an anchor tag
			if(imgs[i].parentNode.nodeName.match(/a/i))
			{
				cloaker.onmouseover = function(){this.style.cursor = 'pointer';};
			}
		}
	}
}