if ( !window.$ || !window['$'] )  {
	window.$ = function(element) {
		if (arguments.length > 1) {
			var elements = [];
			for (i=0;i<arguments.length;i++) {
				elements.push($(argumens[i]));
			}
			return elements;
		}
		
		var e = element;
		if (typeof(element) == "string") {
			e = document.getElementById(element);
		}
		return e; 
	}
}

var Cantaloupe;
if (!Cantaloupe) Cantaloupe = {};
if (!Cantaloupe.Events) Cantaloupe.Events = {};

if (!Cantaloupe.Events) {
	Cantaloupe.Events = {};
}

Cantaloupe.Events.addEventListener = function(element, eventType, handler, capture) {
	try {
		if (element.addEventListener)
			element.addEventListener(eventType, handler, capture);
		else if (element.attachEvent)
			element.attachEvent("on" + eventType, handler);
	}
	catch (e) {}
};

Cantaloupe.UI = {};
Cantaloupe.UI.Related = function(ele, opts) {
	this.element = $(ele);

	this.relatedEleTag = opts.relatedEleTag;
	this.rolloverHeaderElement = $(opts.headerEle);
	this.rolloverDescriptionElement = $(opts.descriptionEle);
	
	this.rolloverHeaderRevertText = this.rolloverHeaderElement.innerHTML;
	this.rolloverDescriptionRevertText = this.rolloverDescriptionElement.innerHTML;

	this.relatedItems = [];
	
	this.init();
	this.attachBehaviours(this.relatedItems);
};

Cantaloupe.UI.Related.prototype.init = function() {
	this.relatedItems = this.getRelatedItems();
	
};

Cantaloupe.UI.Related.prototype.getRelatedItems = function() {
	var related = this.element.getElementsByTagName(this.relatedEleTag);
	return related;
};

Cantaloupe.UI.Related.prototype.onMouseOver = function(evt, relatedItem) {
	var anch = relatedItem.childNodes[0];
	var header = relatedItem.childNodes[1].innerHTML;
	var description = relatedItem.childNodes[2].innerHTML;

	if (anch.rel != "active") {
		header = "Video Coming Soon...";
		description = "";
	}
	
	this.rolloverHeaderElement.innerHTML = header;
	this.rolloverDescriptionElement.innerHTML = description;
};

Cantaloupe.UI.Related.prototype.onMouseOut = function(evt, relatedItem) {
	this.rolloverHeaderElement.innerHTML = this.rolloverHeaderRevertText;
	this.rolloverDescriptionElement.innerHTML = this.rolloverDescriptionRevertText;
};

Cantaloupe.UI.Related.prototype.onClick = function(evt, relatedItem) {
	return;
};

Cantaloupe.UI.Related.prototype.attachBehaviours = function(eleToAttach) {
	var self = this;
	var r = this.relatedItems;
	
	for (var i=0;i<r.length;i++) {
		var ce = r[i];
		
		Cantaloupe.Events.addEventListener(ce, "mouseover", function(e){return self.onMouseOver(e, this);}, false);
		Cantaloupe.Events.addEventListener(ce, "mouseout", function(e){return self.onMouseOut(e, this);}, false);
		Cantaloupe.Events.addEventListener(ce, "click", function(e){return self.onClick(e, this);}, false);
	}
};

function cantaHandleMouseOver(ele) {
	return;
}
function cantaHandleMouseOut(ele) {
	return;
}
function cantaHandleOnClick(ele) {
	if (ele.rel == "active") {
		return true;
	}
	return false;
}

var wLoaded = false;
window.onload = function(e){
	wLoaded = true;
}

function wireEvents () {
	//if (wLoaded) {
		var cantaloupeRelated = new Cantaloupe.UI.Related("rcol", {"relatedEleTag" : "li", "headerEle" : "episode_info_heading", "descriptionEle" : "episode_info_description"});
	//} else {
		//
	//}
}
