// all gateway js should live here (onload events fired at bottom of page)


// functions

function popup(url) {
	settings = 'titlebar,resizable,width=600,height=700';
	var win = window.open(url, 'gallery', settings);
	return false;
	
}

/*	
	
	init() by CW

	adds onclick tracking
		tracks links within containers with class="track" via google analytics as:
		'/watch/{body class}/{container id}

		for now, it's just on the homepage, so examples are:

		- '/watch/home/feature'
		- '/watch/home/sprong_left'

		It uses the container id so more than one link within a container (like the big home feature) are tracked as the same.
*/

function init() {
	if (document.getElementById && document.getElementsByTagName) {
		var loc = document.getElementsByTagName('body')[0].className;
		if (loc == 'home') {
		// Home page only for now
			var taggable = getElementsByClassName(document, '*', 'track');
			for(var i = 0; i < taggable.length; i++) {
				var container = taggable[i];
				var spot = 'watch' + '/' + loc + '/' + taggable[i].id;
				var links = container.getElementsByTagName('a');
				for(var j = 0; j < links.length; j++) {	
						links[j].trackingtag = spot;
						addEvent(links[j], 'click', track);
				}
			}
		}
	}
}

function track() {
	urchinTracker(this.trackingtag);
}

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com

	To get all a elements in the document with a “info-links” class.
		getElementsByClassName(document, "a", "info-links");
	To get all div elements within the element named “container”, with a “col” class.
		getElementsByClassName(document.getElementById("container"), "div", "col"); 
	To get all elements within in the document with a “click-me” class.
		getElementsByClassName(document, "*", "click-me"); 

*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

/* 	

	addEvent by Dustin Diaz (http://www.dustindiaz.com/rock-solid-addevent)
	I'd rather be using Yahoo's Event Utility, but our webserver doesn't support gzip, and the utility is 24K unzipped.
	
*/

function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();

// finally, onload events

addEvent(window, 'load', init);
addEvent(window, 'unload', EventCache.flush);

