Hello,

I am trying to get a feature accomplished and Recursion seems to me
like the most obvious solution. I have written some functions designed
for the same. These functions call each other and themselves at
depending on the situation. Here are they:

Search.method (
        'process_search_node',
        function (context, string, status) {

            var me=this;

            alert('preocess_search_node called!');

            var lstring = string;
            if(status != 'break') {
            /***** Process Child *****/
            /***** Child does not exist *****/
            if(!me.process_child_for_search_node(context, string)) {

                lstring += ' ( Q )';
                me.process_sibling_for_search_node(context, lstring);
            }
            /***** Child Exists *****/
            else {

                lstring += ' (';
                me.process_search_node(context, lstring, '');
            }
        }
        else {
            alert(lstring); /*************** I need all the calls to
stop the first time it reaches here and return the value of lstring to
the "test" variable (See below where the function
'process_search_node' is triggered) ***************/
            return false;
        }
     }
);

Search.method (
        'process_child_for_search_node',
        function (context, string) {

            var me=this;

            alert('process_child_for_search_node called!');

            /***** If it has an immediate Child Search Panel *****/
            var immediate_child = context.children(':nth-
child(2)').children(':nth-child(1)').children(':nth-child(1)');
            if(immediate_child.hasClass('query_stage_wrapper')) {

                var lstring = string + ' (';
                me.process_search_node(immediate_child, lstring, '');
            }
            else
                return false;
        }
);

Search.method (
        'process_sibling_for_search_node',
        function (context, string) {

        var me=this;

        alert('process_sibling_for_search_node called!');

        /***** If it has a Sibling Search Panel *****/
        var sibling = context.next(':first');
        if(sibling.hasClass('query_stage_wrapper')) {

            var lstring = string;
            me.process_search_node(sibling, lstring, '');
        }
        else {

            if(me.get_parent_search_panel(context)) {

                var lstring = string + ' )';
 
me.process_sibling_for_search_node(me.get_parent_search_panel(context),
lstring);
            }
            else {

                var lstring = string;
                if(!me.process_search_node(context, lstring,
'break'));
                    alert('returned false');
            }
        }
    }
);


The call the triggers the above set of functions is:

var test = me.process_search_node($('div.query_stage_wrapper:first'),
string, '');

I would be very grateful to you if you could point me out the place
where I am going wrong.

Thanks for reading my post.

Reply via email to