var DivLinker = Class.create({
	s_hover_classname: 				'linkable_div_hover',					// default classname to add/remove to a div whenever there is a mouseover/mouseout 
	s_linkable_classname: 		'linkable_div',								// default classname to make linkable. Must be a DIV
	s_hideable_classname:			'hideable',										// default classname to be hidden, this would be the original link

  initialize: function () {
		this.hideLinks();
	},

	setHoverClass: function (s_classname) {
		if (s_classname) this.s_hover_classname = s_classname;
	},

	setLinkableClass: function (s_classname) {
		if (s_classname) this.s_linkable_classname = s_classname;
	},

	setHideableClass: function (s_classname) {
		if (s_classname) this.s_hideable_classname = s_classname;
	},

	testFunction: function (event) {
		//$('debug').innerHTML = event.element() + ': ' + event.type + '<br />' + $('debug').innerHTML;
	},

	addLinkClass: function (event) {
		//this.testFunction(event);
		var el = event.element();
		if (el.hasClassName(this.s_linkable_classname)) {
			el.addClassName(this.s_hover_classname);
			return true;
		}

		var el_div = el.up('div.' + this.s_linkable_classname, 0);
		if (!el_div.hasClassName(this.s_hover_classname)) {
			el_div.addClassName(this.s_hover_classname);
		}
	},

	removeLinkClass: function (event) {
		//this.testFunction(event);
		var el = event.element();
		if (el.hasClassName(this.s_linkable_classname)) {
			el.removeClassName(this.s_hover_classname);
			return true;
		}

		var el_div = el.up('div.' + this.s_linkable_classname, 0);
		if (el_div.hasClassName(this.s_hover_classname)) {
			el_div.removeClassName(this.s_hover_classname);
		}
	},

	visitLink: function (event) {
		var el_div_a = '/';
		var el = event.element();
		if (el.hasClassName(this.s_linkable_classname)) {
			el_div_a = el.down('a', 0);
		}
		else {
			var el_div = el.up('div.'+this.s_linkable_classname, 0);
			el_div_a = el_div.down('a', 0);
		}

		window.location = el_div_a.href;
	},

	hideLinks: function () {
		$$('.'+this.s_hideable_classname).each(function(el) {
			el.hide();
		});

		$$('.' + this.s_linkable_classname).each(function(el) {
			el.observe('mouseover', this.addLinkClass.bindAsEventListener(this));
			el.observe('mouseout', 	this.removeLinkClass.bindAsEventListener(this));
			el.observe('click', 		this.visitLink.bindAsEventListener(this));
		}, this);
	}
});
