var popupOptions = new Array();

popupOptions['poll'] = {
    width:590,
    height:470,
    left: 'center',
    top: 'center',
    scrollbars:'auto',
    location:0,
    resizable:'yes'
}
popupOptions['print'] = {
    width:600,
    height:570,
    left: 'center',
    top: 'center',
    scrollbars:'yes',
    location:0,
    menubar:'yes',
    resizable:'yes'
}
popupOptions['forgotten-password'] = {
    width:590,
    height:250,
    left: 'center',
    top: 'center',
    scrollbars:'yes',
    location:0,
    menubar:'yes',
    resizable:'yes'
}
popupOptions['temp-account-request'] = {
    width:590,
    height:250,
    left: 'center',
    top: 'center',
    scrollbars:'yes',
    location:0,
    menubar:'yes',
    resizable:'yes'
}

//-- functions --
function initializePopups(){
var a,i
for(i=0;a=document.links[i];i++)
if (a.target && a.target.indexOf("popup:") == 0)
a.onclick = popupHandler
}

function parsePopupTarget(t){
var a,s,i,o,p
a=new Array()
s=t.substring(6)
if(s.indexOf(',')>=0){
    s = s.split(',')
    for(i in s){
        p=s[i].split('=')
        a[p[0]]=p[1]
    }
    return a
}
else if(popupOptions[s]){
    o=popupOptions[s]
    if(!o.name)o.name=s
    return o
}
else alert("Unknown popup style: '"+s+"'")
}

function serializePopupOptions(options){
var s,sw,sh,key,v
s=''
sw=screen.availWidth? screen.availWidth : 800;
sh=screen.availHeight? screen.availHeight : 600;
for(key in options) {
v=options[key]
if(key=='left' && v=='center' && options['width'])v=Math.round(sw/2 - options['width']/2)
if(key=='top' && v=='center' && options['height'])v=Math.round(sh/2 - options['height']/2)
if(key!='name')s+=key+'='+v+','
}
return s
}

function popup(url, options){
var n=options['name']
if(!n)n=String(new Date().getTime())
var w=window.open(url,n,serializePopupOptions(options))
if(w.focus)w.focus()
return w
}

function predefinedPopup(url, style){
return popup(url, popupOptions[style])
}

function popupLink(a) {
if (a.target == 'popup:_blank') open(a.href)
else popup(a.href, parsePopupTarget(a.target))
return false
}