/**
* phpBB3 forum functions
*/

/**
* Window popup
*/
function popup(url, width, height, name)
{
        if (!name)
        {
                name = '_popup';
        }

        window.open(url.replace(/&amp;/g, '&'), name, 'height=' + height + ',resizable=yes,scrollbars=yes, width=' + width);
        return false;
}

/**
* Jump to page
*/
// www.phpBB-SEO.com SEO TOOLKIT BEGIN
function jumpto() {
        var page = prompt(jump_page, on_page);

        if (page !== null && !isNaN(page) && page == Math.floor(page) && page > 0) {
                var seo_page = (page - 1) * per_page;
                var anchor = '';
                var anchor_parts = base_url.split('#');
                if ( anchor_parts[1] ) {
                        base_url = anchor_parts[0];
                        anchor = '#' + anchor_parts[1];
                }
                if ( base_url.indexOf('?') >= 0 ) {
                        document.location.href = base_url.replace(/&amp;/g, '&') + '&start=' + seo_page + anchor;
                } else if ( seo_page > 0 ) {
                        var seo_type1 = base_url.match(/\.[a-z0-9]+$/i);
                        if (seo_type1 !== null) {
                                document.location.href = base_url.replace(/\.[a-z0-9]+$/i, '') + seo_delim_start + seo_page + seo_type1 + anchor;
                        }
                        var seo_type2 = base_url.match(/\/$/);
                        if (seo_type2 !== null) {
                                document.location.href = base_url + seo_static_pagination + seo_page + seo_ext_pagination + anchor;
                        }
                } else {
                        document.location.href = base_url + anchor;
                }
        }
}
// Open external links in new window in a XHTML 1.x compliant way.
/**
*  phpbb_seo_href()
*  Fixes href="#something" links with virtual directories
*  Optionally open external or marked with a css class links in a new window
*  in a XHTML 1.x compliant way.
*/
function phpbb_seo_href() {
        var current_domain = document.domain.toLowerCase();
        if (!current_domain || !document.getElementsByTagName) return;
        if (seo_external_sub && current_domain.indexOf('.') >= 0) {
                current_domain = current_domain.replace(new RegExp(/^[a-z0-9_-]+\.([a-z0-9_-]+\.([a-z]{2,6}|[a-z]{2,3}\.[a-z]{2,3}))$/i), '$1');
        }
        if (seo_ext_classes) {
                var extclass = new RegExp("(^|\s)(" + seo_ext_classes + ")(\s|$)");
        }
        if (seo_hashfix) {
                var basehref = document.getElementsByTagName('base')[0];
                if (basehref) {
                        basehref = basehref.href;
                        var hashtest = new RegExp("^(" + basehref + "|)#[a-z0-9_-]+$");
                        var current_href = document.location.href.replace(/#[a-z0-9_-]+$/i, "");
                } else {
                        seo_hashfix = false;
                }
        }
        var hrefels = document.getElementsByTagName("a");
        var hrefelslen = hrefels.length;
        for (var i = 0; i < hrefelslen; i++) {
                var el = hrefels[i];
                var hrefinner = el.innerHTML.toLowerCase();
                if (el.onclick || (el.href == '') || (el.href.indexOf('javascript') >=0 ) || (hrefinner.indexOf('<a') >= 0) ) {
                        continue;
                }
                if (seo_hashfix && el.hash && hashtest.test(el.href)) {
                        el.href = current_href + el.hash;
                }
                if (seo_external) {
                        if ((el.href.indexOf(current_domain) >= 0) && !(seo_ext_classes && extclass.test(el.className))) {
                                continue;
                        }
                        el.onclick = function () { window.open(this.href); return false; };
                }
        }
}
if (seo_external || seo_hashfix) {
        onload_functions.push('phpbb_seo_href()');
}
// www.phpBB-SEO.com SEO TOOLKIT END

/**
* Mark/unmark checklist
* id = ID of parent container, name = name prefix, state = state [true/false]
*/
function marklist(id, name, state)
{
        var parent = document.getElementById(id);
        if (!parent)
        {
                eval('parent = document.' + id);
        }

        if (!parent)
        {
                return;
        }

        var rb = parent.getElementsByTagName('input');

        for (var r = 0; r < rb.length; r++)
        {
                if (rb[r].name.substr(0, name.length) == name)
                {
                        rb[r].checked = state;
                }
        }
}

/**
* Resize viewable area for attached image or topic review panel (possibly others to come)
* e = element
*/
function viewableArea(e, itself)
{
        if (!e) return;
        if (!itself)
        {
                e = e.parentNode;
        }

        if (!e.vaHeight)
        {
                // Store viewable area height before changing style to auto
                e.vaHeight = e.offsetHeight;
                e.vaMaxHeight = e.style.maxHeight;
                e.style.height = 'auto';
                e.style.maxHeight = 'none';
                e.style.overflow = 'visible';
        }
        else
        {
                // Restore viewable area height to the default
                e.style.height = e.vaHeight + 'px';
                e.style.overflow = 'auto';
                e.style.maxHeight = e.vaMaxHeight;
                e.vaHeight = false;
        }
}

/**
* Set display of page element
* s[-1,0,1] = hide,toggle display,show
*/
function dE(n, s)
{
        var e = document.getElementById(n);

        if (!s)
        {
                s = (e.style.display == '' || e.style.display == 'block') ? -1 : 1;
        }
        e.style.display = (s == 1) ? 'block' : 'none';
}

/**
* Alternate display of subPanels
*/
function subPanels(p)
{
        var i, e, t;

        if (typeof(p) == 'string')
        {
                show_panel = p;
        }

        for (i = 0; i < panels.length; i++)
        {
                e = document.getElementById(panels[i]);
                t = document.getElementById(panels[i] + '-tab');

                if (e)
                {
                        if (panels[i] == show_panel)
                        {
                                e.style.display = 'block';
                                if (t)
                                {
                                        t.className = 'activetab';
                                }
                        }
                        else
                        {
                                e.style.display = 'none';
                                if (t)
                                {
                                        t.className = '';
                                }
                        }
                }
        }
}

/**
* Call print preview
*/
function printPage()
{
        if (is_ie)
        {
                printPreview();
        }
        else
        {
                window.print();
        }
}

/**
* Show/hide groups of blocks
* c = CSS style name
* e = checkbox element
* t = toggle dispay state (used to show 'grip-show' image in the profile block when hiding the profiles)
*/
function displayBlocks(c, e, t)
{
        var s = (e.checked == true) ?  1 : -1;

        if (t)
        {
                s *= -1;
        }

        var divs = document.getElementsByTagName("DIV");

        for (var d = 0; d < divs.length; d++)
        {
                if (divs[d].className.indexOf(c) == 0)
                {
                        divs[d].style.display = (s == 1) ? 'none' : 'block';
                }
        }
}

function selectCode(a)
{
        // Get ID of code block
        var e = a.parentNode.parentNode.getElementsByTagName('CODE')[0];

        // Not IE
        if (window.getSelection)
        {
                var s = window.getSelection();
                // Safari
                if (s.setBaseAndExtent)
                {
                        s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
                }
                // Firefox and Opera
                else
                {
                        var r = document.createRange();
                        r.selectNodeContents(e);
                        s.removeAllRanges();
                        s.addRange(r);
                }
        }
        // Some older browsers
        else if (document.getSelection)
        {
                var s = document.getSelection();
                var r = document.createRange();
                r.selectNodeContents(e);
                s.removeAllRanges();
                s.addRange(r);
        }
        // IE
        else if (document.selection)
        {
                var r = document.body.createTextRange();
                r.moveToElementText(e);
                r.select();
        }
}

/**
* Play quicktime file by determining it's width/height
* from the displayed rectangle area
*/
function play_qt_file(obj)
{
        var rectangle = obj.GetRectangle();

        if (rectangle)
        {
                rectangle = rectangle.split(',');
                var x1 = parseInt(rectangle[0]);
                var x2 = parseInt(rectangle[2]);
                var y1 = parseInt(rectangle[1]);
                var y2 = parseInt(rectangle[3]);

                var width = (x1 < 0) ? (x1 * -1) + x2 : x2 - x1;
                var height = (y1 < 0) ? (y1 * -1) + y2 : y2 - y1;
        }
        else
        {
                var width = 200;
                var height = 0;
        }

        obj.width = width;
        obj.height = height + 16;

        obj.SetControllerVisible(true);
        obj.Play();
}
