/**
* container object for all of the known popup options
*
* @param void
* @return void
*/
function popupOptions()
{
    this.height         = screen.availHeight;
    this.width          = screen.availWidth;
    this.top            = 0;
    this.left           = 0;
    this.toolbar        = false;
    this.location       = false;
    this.directories    = false;
    this.status         = false;
    this.menubar        = false;
    this.scrollbars     = false;
    this.resizable      = false;
    this.dependent      = false;

    this.build          = _buildOptions;
}

/**
* facilitator for popupOptions, this puts together a popupOptions object
* with default values already applied
*
* @param void
* @return void
*/
function _buildOptions()
{
    var sTemp = "";

    sTemp += "height=" + this.height + ",";
    sTemp += "width=" + this.width + ",";
    sTemp += "top=" + this.top + ",";
    sTemp += "left=" + this.left + ",";
    sTemp += "toolbar=" + ((this.toolbar) ? "yes" : "no") + ",";
    sTemp += "location=" + ((this.location) ? "yes" : "no") + ",";
    sTemp += "directories=" + ((this.directories) ? "yes" : "no") + ",";
    sTemp += "status=" + ((this.status) ? "yes" : "no") + ",";
    sTemp += "menubar=" + ((this.menubar) ? "yes" : "no") + ",";
    sTemp += "scrollbars=" + ((this.scrollbars) ? "yes" : "no") + ",";
    sTemp += "resizable=" + ((this.resizable) ? "yes" : "no") + ",";
    sTemp += "dependent=" + ((this.dependent) ? "yes" : "no");

    return(sTemp);
}

/**
* open a popup window
*
* @param string url
* @param string window name
* @param string width
* @param string height
* @param boolean (optional) show scroll bar
* @param boolean (optional) show tool bar
* @param boolean (optional) make resizable
* @param boolean (optional) show url field
* @param boolean (optional) show menu bar
* @param boolean (optional) show window status
*/
function popup()
{
    var winlink      = arguments[0];
    var winname      = arguments[1];
    var winwidth     = arguments[2];
    var winheight    = arguments[3];
    var winscroll    = true;
    var wintoolbar   = true;
    var winresize    = true;
    var winlocation  = false;
    var winmenubar   = false;
    var winstatus    = false;

    winscroll = (arguments.length >= 5) ? ((arguments[4] == '1') ? true : false) : winscroll;
    wintoolbar  = (arguments.length >= 6) ? ((arguments[5] == '1') ? true : false) : wintoolbar;
    winresize   = (arguments.length >= 7) ? ((arguments[6] == '1') ? true : false) : winresize;
    winlocation = (arguments.length >= 8) ? ((arguments[7] == '1') ? true : false) : winlocation;
    winmenubar  = (arguments.length >= 9) ? ((arguments[8] == '1') ? true : false) : winmenubar;
    winstatus   = (arguments.length >= 10) ? ((arguments[9] == '1') ? true : false) : winstatus;

    var iLeft   = ((screen.availWidth / 2) - (winwidth / 2));
    var iTop    = ((screen.availHeight / 2) - (winheight / 2));

    var oWin    = null;
    var oOption = new popupOptions();

    oOption.height      = winheight;
    oOption.width       = winwidth;
    oOption.top         = iTop;
    oOption.left        = iLeft;
    oOption.toolbar     = wintoolbar;
    oOption.location    = winlocation;
    oOption.directories = false;
    oOption.status      = winstatus;
    oOption.menubar     = winmenubar;
    oOption.scrollbars  = winscroll;
    oOption.resizable   = winresize;
    oOption.dependent   = false;

    var sOptions = oOption.build();

    oWin = window.open(((typeof(winlink) == "string") ? winlink : winlink.href), winname, sOptions);
    oWin.focus();
    return(false);
}
