/* JAVASCRIPT LIB */

/* Cookie functions */
function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) )
		return null;
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires )	expires = expires * 1000 * 60 * 60 * 24;
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+"="+escape( value ) +
		( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) +
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) 
		document.cookie = name + "=" +
		( ( path ) ? ";path=" + path : "") +
		( ( domain ) ? ";domain=" + domain : "" ) +
		";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

/* getElementsByClass */
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null ) node = document;
	if ( tag == null ) tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

/* Venerable Prototype $ function (getElement(s)ByID()) */
function $() {
	if(!document.getElementById) return null;
	return document.getElementById(arguments[0]);
	/*var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;*/
}

/* Ever present open window */
function openWindow(url, width, height, options, name) {
	if (!width) width = 800;
	if (!height) height = 600;
	if (!options) options = "scrollbars=no,menubar=no,toolbar=no,location=no,status=no,resizable=no";
	if (!name) name = "popup";
	win = window.open(url, name, "width="+width+",height="+height+","+options);
	win.focus();
}

/* Add event listener function */
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	} else {
		elm['on' + evType] = fn;
	}
}

function getEventElement(evt) {
	var elem;
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	if(!evt) return null;
	elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	return elem;
}


function doPopups() {
	if (!document.getElementsByTagName) return false;
	var pops = getElementsByClass('popup', null, 'a');
	for (var i=0; i < pops.length; i++) {
		link = pops[i];
		link.onclick = popper;
		link.onkeypress = popper;
	}
}

var demopop = null;
function popper(e) { 
 var wname = "popup";
 var options = "scrollbars=yes,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes";
 var pattern = new RegExp(" w(\\d+)h(\\d+)(\\w*)");
 var match = pattern.exec(this.className);
 if (match) {
	wname = "demopop";
	var width = parseInt(match[1]);
	var height = parseInt(match[2]);
	var scrollbars = "no";
	if(match[3]=="scroll") {
		 scrollbars = "yes";
	}
	options = "width="+width+",height="+height+",scrollbars="+scrollbars+",menubar=no,toolbar=no,location=no,status=no,resizable=no";
 }
 if(demopop!=null) {
	 demopop.close();
	}
	demopop = window.open(this.href,wname,options);
	demopop.focus();

return false;
}

addEvent(window, 'load', doPopups);
