var _POPUP_FEATURES = ''; function raw_popup(url, target, features) { if (isUndefined(features)) features = _POPUP_FEATURES; if (isUndefined(target )) target = '_blank'; var theWindow = window.open(url, target, features); theWindow.focus(); return theWindow;}
function link_popup(src, features) { return raw_popup(src.getAttribute('href'), src.getAttribute('target') || '_blank', features);}
function event_popup(e) { link_popup(e.currentTarget); e.preventDefault();}
function event_popup_features(features) {return function(e) { link_popup(e.currentTarget, features); e.preventDefault() }
}
if (!Array.prototype.push) Array.prototype.push = function() { for (var i=0; i<arguments.length; i++) this[this.length] = arguments[i]; return this.length;}
Array.prototype.find = function(value, start) { start = start || 0; for (var i=start; i<this.length; i++)
if (this[i]==value)
return i; return -1;}
Array.prototype.has = function(value) { return this.find(value)!==-1;}
function map(list, func) { var result = []; func = func || function(v) {return v}; for (var i=0; i < list.length; i++) result.push(func(list[i], i, list)); return result;}
function filter(list, func) { var result = []; func = func || function(v) {return v}; map(list, function(v) { if (func(v)) result.push(v) } ); return result;}
function getElem(elem) { if (document.getElementById) { if (typeof elem == "string") { elem = document.getElementById(elem); if (elem===null) throw 'cannot get element: element does not exist';} else if (typeof elem != "object") { throw 'cannot get element: invalid datatype';}
} else throw 'cannot get element: unsupported DOM'; return elem;}
function hasClass(elem, className) { return getElem(elem).className.split(' ').has(className);}
function getElementsByClass(className, tagName, parentNode) { parentNode = !isUndefined(parentNode)? getElem(parentNode) : document; if (isUndefined(tagName)) tagName = '*'; return filter(parentNode.getElementsByTagName(tagName), function(elem) { return hasClass(elem, className) });}
function listen(event, elem, func) { elem = getElem(elem); if (elem.addEventListener)
elem.addEventListener(event,func,false); else if (elem.attachEvent)
elem.attachEvent('on'+event, function(){ func(new W3CDOM_Event(elem)) } ); else throw 'cannot add event listener';}
function mlisten(event, elem_list, func) { map(elem_list, function(elem) { listen(event, elem, func) } );}
function W3CDOM_Event(currentTarget) { this.currentTarget = currentTarget; this.preventDefault = function() { window.event.returnValue = false }
return this;}
function isUndefined(v) { var undef; return v===undef;}