/* gzipped */

var libJS = {

	thisDomain: window.location.hostname,

	addEvent: function(obj,type,fn,degrade) {

		if (obj.addEventListener) {
			obj.addEventListener(type,fn,false);
			return true;
		} else if (obj.attachEvent) {
			obj['e'+type+fn] = fn;
			obj[type+fn] = function() { obj['e'+type+fn]( window.event );}
			var r = obj.attachEvent('on'+type, obj[type+fn]);
			return r;
		} else {
			if (degrade && degrade == 'degrade') {
				obj['on'+type] = fn;
			}
			return true;
		}

		},

	removeEvent: function(obj,type,fn,degrade) {

		if (obj.removeEventListener) {
			obj.removeEventListener( type, fn, false );
		} else if (obj.detachEvent) {
			obj.detachEvent( 'on'+type, obj[type+fn] );
			obj[type+fn] = null;
		} else {
			if (degrade && degrade == 'degrade') {
				obj.onclick = null;
			}
		}

		},

	addClassName: function(obj,cName) {

		//	Require: libJS.hasClassName

		if (libJS.hasClassName(obj,cName)) return;

		obj.className += (obj.className) ? ' '+cName : cName;

		},

	removeClassName: function(obj,cName) {

		//	Require: libJS.hasClassName

		if (!libJS.hasClassName(obj,cName)) return;

		var newClassNames = [];
		var trgt = 0;
		var classNames = obj.className.split(' ');
		for (var i = 0, tCN; tCN = classNames[i]; i++) {
			if (tCN != cName) {
				newClassNames[trgt] = tCN;
				trgt++;
			}
		}

		obj.className = newClassNames.join(' ');

		},

	hasClassName: function(obj,cName) {

		var cNameRegEx = new RegExp('(^|\\s)' + cName + '(\\s|$)');

		return (obj.className && obj.className.match(cNameRegEx));

		},

	getElementsByClassName: function(cName,trgtTagName,trgtNode) {

		//	Require: libJS.hasClassName

		if (!document.getElementsByTagName) return true;

		var tName = trgtTagName || '*';
		var tNode = trgtNode || document;

		var trgtEls = [];
		var trgt = 0;

		var els = tNode.getElementsByTagName(tName);
		for (var i = 0, tEl; tEl = els[i]; i++) {
			if (libJS.hasClassName(tEl,cName)) {
				trgtEls[trgt] = tEl;
				trgt++;
			}
		}

		return trgtEls;

		},

	stopDefault: function(evt) {

		(evt.preventDefault) ? evt.preventDefault() : (evt.returnValue = false)

		},

	in_array: function(needle,haystack) {

		for (i in haystack) {
			if (needle == haystack[i]) return true; // or return i if finding index		
		}

		return false; // or return -1 if finding index

		},

	createCookie: function(name,value,days) {

		if (days) {
			var date = new Date();
			date.setTime(date.getTime() + (days*24*60*60*1000));
			var expires = '; expires=' + date.toGMTString();
		}
		else var expires = '';
		document.cookie = name + '=' + value + expires + '; path=/';

		},

	readCookie: function(name) {

		var nameEQ = name + '=';
		var ca = document.cookie.split(';');
		for(var i=0, c; c = ca[i];i++) {
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;

		},

	eraseCookie: function(name) {

		libJS.createCookie(name,'',-1);

		},

	cookieExists: function(name) {

		return (libJS.readCookie(name) != null)

		},

	extLinks: [],

	getExternalLinks: function() {

		var trgt = 0;

		var aEls = document.getElementsByTagName('a');
		for (var i = 0, aEl; aEl = aEls[i]; i++) {

			if (aEl.href && aEl.href.indexOf(libJS.thisDomain) == -1) {

				libJS.extLinks[trgt] = aEl;
				trgt++;

			}

		}

		return libJS.extLinks;

		}

}