﻿//-------------  AddThis Class  -----------
//:: Purpose :: replaces permalink with social bookmarking 'add this' button :://

// ADDTHIS.COM variables
addthis_pub = 'rbanning';
addthis_brand = 'Digital Crosswalks';
addthis_logo_background = 'F0F0F0';
addthis_logo = 'http://www.ibanning.com/digiwalks/images/art/addthis_logo.gif';
addthis_logo_color = '666666';
addthis_options = 'delicious,favorites,twitter,technorati,google,digg,live,facebook,myweb,furl,stumbleupon,more';

var AddThis = new Class ({    

    initialize: function (element, options) {
		this.element = element;
        this.init(options);
    },	
    		
	init: function (options) {
		this.options = Object.extend({
			addthisCss: 'addthis',
		    href: 'http://www.addthis.com/bookmark.php',
			imgSrc: 'http://www.ibanning.com/digiwalks/images/art/addthis_button.gif',
			imgWidth: '125',
			imgHeight: '16',
			widgetSrc: 'http://s7.addthis.com/js/152/addthis_widget.js'
		}, options || {});	
	},
	
	replaceLink: function() {
		if (this.element && !this.element.hasClass(this.options.addthisCss)) {
			var parent = this.element.getParent();
			if (parent) {
				var title = this.element.innerHTML.trim();
				var href = this.element.getProperty('href');
				this.element.remove();
				this.element = this._getCtrl(title,href);
				this.element.injectTop(parent);				
			}
		}
	},
	
	_getCtrl: function(title, url) {
		var ret = new Element('a');
		ret.setProperty('href', this.options.href);
		ret.addEvent('mouseover', this._mouseover.pass([ret,url,title],ret));
		ret.addEvent('mouseout', this._mouseout.bind(ret));
		ret.addEvent('click', this._click.bind(ret));		
		ret.addClass(this.options.addthisCss);
		
		var img = new Element('img');				
		img.setProperty('src',this.options.imgSrc);
		img.setProperty('alt','add this');
		img.setStyles({	'width': this.options.imgWidth + 'px',
					  	'height': this.options.imgHeight + 'px',
						'border': 'none'
					  });
		img.injectInside(ret);
		
		return ret;
	},
	
	_mouseover: function(ctrl, url, title) {
		if ($defined(addthis_open)) {
			return addthis_open(ctrl,'',url,title);
		} else {
			console.log('missing addthis_open');
			return false;
		}					
	},
	
	_mouseout: function() {
		if ($defined(addthis_close)) {
			return addthis_close();
		} else {
			console.log('missing addthis_close');
		}					
	},
	
	_click: function() {
		if ($defined(addthis_sendto)) {
			return addthis_sendto();
		} else {
			console.log('missing addthis_sendto');
		}					
	},
	
	writeIncludeWidgetScript: function(ctrl) {
		var script = new Element('script');
		script.setProperty('type','text/javascript');
		script.setProperty('src',this.options.widgetSrc);
		if (ctrl) {
			script.injectInside(ctrl);
		} else {
			script.injectInside(document.body);
		}
	}
}); //end class AddThis

var FauxConsole = new Class ({    

    initialize: function () {

	},	
	log: function(msg) { alert(msg); }
});
    	

var console = (console) ? console : new FauxConsole();

var helper = {			
	init: function () {
	    //addto social web sharing
		var addthis = null;
		var parent = null;
		$$('div.social-web a').each( function(el) {
			if (el.hasClass('share')) {
				addthis = new AddThis(el);
				addthis.replaceLink();				
			}
			if (!parent) { parent = el.getParent(); }
	   	});
		
		if (addthis) {			
			addthis.writeIncludeWidgetScript(parent);
		}
	}			
	
	

}; //end helper def
	
// call helper.init when the DOM is ready
window.addEvent('domready', helper.init.bind(helper));


