Hello,

I am not sure if my previous post was really posted.I couldn't see it
here even after about an half an hour since I posted.

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