var DataMiscJS =
{


    // **** ENTRY DISPLAYER GETTERS ********************************************************


    getDisplayFormEntryStandard: function( holderID , title , id )
    {
        return function()
        {
            $( "#" + holderID ).append(
                "<p>" + title + "<br/>" +
                "<input type ='text' id='" + id + "' /></p>"
            );
        }
    } ,

    getDisplayTextAreaStandard: function( holderID , title , id )
    {
        return function()
        {
            $( "#" + holderID ).append(
                "<p>" + title + "<br/>" +
                "<textarea cols='36' rows='2' id='" + id + "' ></textarea></p>"
            );
        }
    } ,



    getDisplayFormEntryTwoLines: function( holderID , title , id )
    {
        return function()
        {
            $( "#" + holderID ).append(
                "<p>" + title + "<br/>" +
                "<input type ='text' id='" + id + "1' /><br/>" +
                "<input type ='text' id='" + id + "2' /></p>"
            );
        }
    } ,

     getDisplayFormEntry2For1: function( holderID , title , id , title2 , id2 )
     {
         return function()
        {
            $( "#" + holderID ).append(
                '<table border="0" cellpadding="0" cellspacing="0"><tr>' +
                "<td>" + title + "<br/>" +
                "<input type ='text' class='childAge' id='" + id + "' /></td>" +
                "<td>" + title2 + "<br/>" +
                "<input type ='text' class='childAge' id='" + id2 + "' /></td>" +
                "</tr></table>"
            );
        }
     } ,

    // **** ENTRY REPORTER GETTERS ********************************************************

    getReportVal: function( jsonKey , divID )
    {
        return function()
        {
            SubmitJS.submittedData[ jsonKey ] = $( "#" + divID ).val();
        };
    } ,

    getReportTrimmed: function( jsonKey , divID )
    {
        return function()
        {
            SubmitJS.submittedData[ jsonKey ] = $.trim( $( "#" + divID ).val() );
        };
    } ,

    getReportTwoLines: function( jsonKey , divIDPrefix )
    {
        return function()
        {
            var second = $.trim( $( "#" + divIDPrefix + '2' ).val() );
            SubmitJS.submittedData[ jsonKey ] =
                $.trim( $( "#" + divIDPrefix + '1' ).val() ) +
                ( second != "" ? " ; " + second : "" );
        };
    } ,


    getReportDigits: function( jsonKey , divID )
    {
        return function()
        {
            SubmitJS.submittedData[ jsonKey ] = $.trim( $( "#" + divID ).val() ).replace( /\D/g, "" );
        };
    } ,



    // **** ENTRY VALIDATOR GETTERS ********************************************************

    getValidateParentName: function( divID )
    {
        return function( parentName )
        {
            var temp = parentName.match( /.+\s+(.+)/gi );

            if ( temp == null || temp.length < 1 )
            {
                $( "#" + divID )[ 0 ].focus();
                alert( "Please enter your first and last names in the space provided." );
                return false;
            }
            return true;
        };
    } ,

    getValidateEmail: function( divID )
    {
        return function( email )
        {
            var toReturn = true;
            if ( email == null || $.trim( email ) == "" )
                toReturn = false;

            var at = email.indexOf( "@" );

            // must contain @ sign internally
            if ( at <= 0 || at >= (email.length - 1) )
                toReturn = false;
            // @ must be followed at some point by a period
            else if ( email.substr( at ).indexOf( "." ) <= 0 )
                toReturn = false;

            if ( !toReturn )
            {
                 $( "#" + divID )[ 0 ].focus();
                 alert( "Please enter your email address in the space provided." );
            }
            return toReturn;
        };
    } ,

    validateThing: function( datum , divID , nameToUser , validate , msg )
    {
        //alert( datum + " " + divID + " " + validate( datum ) );
        if ( validate( datum ) )
            return true;
        $( "#" + divID )[ 0 ].focus();
        if ( msg )
           alert( msg );
        else alert( "Please enter your " + nameToUser + " in the space provided." );
        return false;
    } ,

    getValidatePhone: function( divID )
    {
        return function( phone )
        {
            return DataMiscJS.validateThing( phone , divID , "phone number, including the area code" ,
                                         function( phone ) {return ( ( phone + "" ).length >= 10 );} );
        };
    } ,

    getValidateZip: function( divID )
    {
        return function( zip )
        {
            return DataMiscJS.validateThing( zip , divID , "5-digit zip code" ,
                                         function( zip ) {return ( ( zip + "" ).length >= 5 );} );
        };
    } ,

    // **** DEMO DISPLAYER GETTERS ********************************************************

    getDisplayDemoStandard: function( holderID  )
    {
        return function( i )
        {
            var demo = DataJS.demos[ i ];
            var data = $.extend( {} , demo.data , { name: holderID , type: 'radio' , demoIndex: i  } );

            $( "#" + holderID ).append(
                $( "<div/>" )
                    .append( $( "<input/>" ).attr( data ).addClass( 'btn' ) )
                    .append( "&nbsp;" + demo.textForUser )
            );
        }
    } ,

    // **** DEMO REPORTER GETTERS ********************************************************


    /* standard for radio buttons */
    getReportDemoStandard: function( divID )
    {
        return function()
        {
            try
            {
                var choice = $( "#" + divID + " input[type='radio']:checked" )[ 0 ];
                var index = $( choice ).attr( "demoIndex" );
                SubmitJS.submittedData[ 'datademoindex' ] = index;
                for ( var key in DataJS.demos[ index ].data )
                    SubmitJS.submittedData[ key ] = $( choice ).attr( key );
            }
            catch( e ){}
        }
    } ,

    // **** DEMO VALIDATOR GETTERS ********************************************************

    /* standard for radio buttons */
    getValidateDemoStandard: function( divID , msg )
    {
        return function()
        {
            if ( $( "#" + divID + " input[type='radio']:checked" ).length > 0 )
                return true;
            alert( msg );
            return false;
        }
    }



};


