/**
 * Returns an array of elements which use a particular class
 *
 * Taken from:
 * http://www.anyexample.com/webdev/javascript/javascript_getelementsbyclass_function.xml
 */
function getElementsByClass( searchClass, domNode, tagName)
{
    if (domNode == null)
    {
        domNode = document;
    }
    if (tagName == null)
    {
        tagName = '*';
    }
    var el = new Array();
    var tags = domNode.getElementsByTagName(tagName);
    var tcl = " "+searchClass+" ";
    for(i=0,j=0; i<tags.length; i++)
    {
        var test = " " + tags[i].className + " ";
        if (test.indexOf(tcl) != -1)
        {
            el[j++] = tags[i];
        }
    }
    return el;
}

var _detailsVisible = 0;

/**
 * Toggle Show/Hide Buttons
 */
function toggleButton( _key )
{
    // Set all buttons to 'Show Details'
	var _elements = getElementsByClass( 'detailsButton' );
	for( i = 0; i < _elements.length; i++ )
	{
	    _elements[i].src = '../images/btn_viewdetails.gif';
	}
	
	// Check if details are displayed and change button accordingly	
	if( parseInt( document.getElementById( 'statement' + _key ).style.height ) < 5 )
	{
	    document.getElementById( 'detailsButton' + _key ).src = '../images/btn_hidedetails.gif';
	}
	
}

/**
 * Update balance on payonline page
 */
function updateBalance( _element )
{
    if( document.getElementById( 'bookingBalance' ) )
    {
	    var _bookingId = parseInt( _element.value );
	    
	    document.getElementById( 'bookingBalance' ).innerHTML = _balanceLookup[_bookingId];
    }
}

/**
 * Checks is a form field is filled
 */
function isFilled( _field )
{
    if( _field.value.length > 0 && _field.value != ' ' )
    {
        return true;
    }

    return false;
}

/**
 * Checks for valid Credit Card number
 */
function isValidCreditCard( _cardNumber )
{
    var _sum = 0;
    var _weight;
    
    for( _i = 0; _i < ( _cardNumber.length - 1 ); _i++ )
    {
        _weight = _cardNumber.substr( ( _cardNumber.length - ( _i + 2 ) ), 1 ) * ( 2 - ( _i % 2 ) );
        _sum   += ( ( _weight < 10 ) ? _weight : ( _weight - 9 ) );
    }
    
    if( parseInt( _cardNumber.substr( _cardNumber.length - 1 ) ) == ( ( 10 - _sum % 10 ) % 10 ) )
    {
        return true;
    }
    else
    {
        return false;
    }
}


function isValidEmail( _email )
{
    if(/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,4})$/.test( _email.value ) )
    {
        return true;
    }

    return false;
}

function isValidNumber( _field )
{
    if( /^\d+$/.test( _field.value ) )
    {
        return true;
    }

    return false;
}