//===========================================================================
// JavaScript to munge form fields before return to the server
// Simon Kershaw, 29 Dec 2005
//===========================================================================

//===========================================================================

function PassageDefaultString()
{
    return 'Enter passage, e.g. Mark 1.1-11';
}

//===========================================================================

function PassagesDefaultString()
{
    return 'Enter one or more passages, e.g. Mark 1.1-11, one per line';
}

//===========================================================================

function SearchDefaultString()
{
    return 'Enter search text, e.g. in the beginning';
}

//===========================================================================

function PassageReset( obj )
{
    if ( obj.passage.value != '' && obj.passage.value != PassageDefaultString() )
    {
        obj.passage.value = PassageDefaultString();
    }
    return false;
}

//===========================================================================

function PassageBlur( obj )
{
    if ( obj.value == '' )
    {
        obj.value = PassageDefaultString();
    }
}

//===========================================================================

function PassageFocus( obj )
{
    if ( obj.value == PassageDefaultString())
    {
        obj.value = '';
    }
}

//===========================================================================

function PassageSubmit( obj )
{
    if ( ( document.forms[0].passage.value  == PassageDefaultString() || document.forms[0].passage.value == '' )
         && ( document.forms[0].passages.value  == PassagesDefaultString() || document.forms[0].passages.value == '' ) )
    {
        //obj.passage.value = '';
        alert( "No Bible references entered.\n\nPlease enter a passage to display, in the form, e.g. Mark 1.1-11\n" );
        return( false );
    }
    if ( document.forms[0].passage.value  == PassageDefaultString() )
    {
        document.forms[0].passage.value = '';
    }
    if ( document.forms[0].passages.value  == PassagesDefaultString() )
    {
        document.forms[0].passages.value = '';
    }

    return ( true );
}

//===========================================================================

function PassageClick( obj )
{
    if ( obj.passage.value  == PassageDefaultString() || obj.passage.value == '' )
    {
        //obj.passage.value = '';
        alert( "No Bible reference entered.\n\nPlease enter a passage to display, in the form, e.g. Mark 1.1-11\n" );
        return( false );
    }
    if ( obj.passages.value  == PassagesDefaultString() )
    {
        obj.passages.value = '';
    }
    return ( true );
}

//===========================================================================

function PassagesReset( obj )
{
    if ( obj.passages.value != '' && obj.passages.value != PassagesDefaultString() )
    {
        obj.passages.value = PassagesDefaultString();
    }
    return false;
}

//===========================================================================

function PassagesBlur( obj )
{
    if ( obj.value == '' )
    {
        obj.value = PassagesDefaultString();
    }
}

//===========================================================================

function PassagesFocus( obj )
{
    if ( obj.value == PassagesDefaultString())
    {
        obj.value = '';
    }
}

//===========================================================================

function PassagesClick( obj )
{
    if ( obj.passages.value  == PassagesDefaultString() || obj.passages.value == '' )
    {
        //obj.passage.value = '';
        alert( "No Bible references entered.\n\nPlease enter one or more passages to display,\none per line,\nin the form, e.g. Mark 1.1-11\n" );
        return( false );
    }
    if ( obj.passage.value  == PassageDefaultString() )
    {
        obj.passage.value = '';
    }
    return ( true );
}


//===========================================================================

function SearchReset( obj )
{
    if ( obj.search.value != '' && obj.search.value != SearchDefaultString() )
    {
        obj.search.value = SearchDefaultString();
    }
    return false;
}

//===========================================================================

function SearchBlur( obj )
{
    if ( obj.value == '' )
    {
        obj.value = SearchDefaultString();
    }
}

//===========================================================================

function SearchFocus( obj )
{
    if ( obj.value == SearchDefaultString())
    {
        obj.value = '';
    }
}

//===========================================================================

function SearchClick( obj )
{
    if ( obj.search.value  == SearchDefaultString() || obj.search.value == '' )
    {
        //obj.search.value = '';
        alert( "No search text entered.\n\nPlease enter some text to search for, e.g. in the beginning\n" );
        return( false );
    }
    return ( true );
}



//===========================================================================

function FormLoad( vnum, fnote, sect )
{
    eval( 'setVis()' );

    eval( 'FormLoad2()' );
}

function FormLoad2()
{
    if ( document.forms[0].passage.value == '' )
    {
        document.forms[0].passage.value = PassageDefaultString();
    }

    if ( document.forms[0].passages && document.forms[0].passages.value == '' )
    {
        document.forms[0].passages.value = PassagesDefaultString();
    }

    if ( document.forms.length > 0 && document.forms[1].search && document.forms[1].search.value == '' )
    {
        document.forms[1].search.value = SearchDefaultString();
    }
}

//===========================================================================

function changeElementVisibility( what )
{
    // set bible elements of type 'what' to be visible or invisible
    // 'what' can be: vnum, fnote, sect

    if ( what == 'sect' )
    {
	//findElements( 'h2', /(?!(passageref))/ );
	findElements( 'h2', /\bplus-B|plus-C|plus-S|FT\b/ );
    }
    else if ( what == 'vnum' )
    {
        var pattern = /\bcnum|vnum|cc|rr|cp|ii|hh|oo|plus-M|plus-V|uu|vv|ww\b/;
	findElements( 'span', pattern );
	findElements( 'sup', pattern );
    }
    else if ( what == 'fnote' )
    {
	findElements( 'sup', /\bfnote\b/ );
    }
    else if ( what == 'adj' )
    {
	findElements( 'div', /\badj\b/ );
    }
    else if ( what == 'passageref' )
    {
	findElements( 'h2', /\bpassageref\b/ );
    }
}

//===========================================================================

function toggleVisButton( what )
{
    var button = document.getElementById( what + "toggle" );
    var newButtonVal;
    //    var regexp = /^show)(.*)/;
    if ( /^show/i.test( button.value ) )
    {
	newButtonVal = button.value.replace( /^Show/ , 'Omit' );
    }
    else
    {
	newButtonVal = button.value.replace( /^Omit/ , 'Show' );
    }
    button.value = newButtonVal;
}

//===========================================================================

function findElements( tag, pattern )
{
    var what_list = document.getElementsByTagName( tag );

    for ( var ix = 0; ix < what_list.length; ix++ )
    {
	if ( pattern.test( what_list[ix].className) )
	{
	    toggleVisibility( what_list[ix], tag );
	}
    }
}

//===========================================================================

function toggleVisibility( an_el, tag )
{

    if ( an_el.style.display == 'none' )
    {
        an_el.style.display = tag == 'h2' ? 'block' : 'inline';
    }
    else
    {
        an_el.style.display = 'none';
    }
}

//===========================================================================

function removeHidden()
// remove all elements with display:none settings from the DOM
{
    var what_list = document.getElementsByTagName( 'div' );

    // find any <div class="bibletext"> elements
    for ( var ix = 0; ix < what_list.length; ix++ )
    {
	if ( what_list[ix].className == 'bibletext' )
	{
	    // do whatever we want to do
	    removeHiddenHelper( what_list[ix], 'h2' );
	    removeHiddenHelper( what_list[ix], 'span' );
	    removeHiddenHelper( what_list[ix], 'sup' );
	}
    }
    return false;
}

//===========================================================================

function removeHiddenHelper( bibletext_el, tag )
// remove all elements with display:none settings from the DOM
{
    var what_list = bibletext_el.getElementsByTagName( tag );

    // loop over els in reverse order removing hidden els from the list
    for ( var ix = what_list.length-1 ; ix >= 0 ; ix-- )
    {
	if ( what_list[ix].style.display == 'none' )
	{
	    //what_list[ix].innerHTML = '';
	    var el = what_list[ix];
	    el.parentNode.removeChild( el );
	}
    }
}

//===========================================================================
// end of file
//===========================================================================
