'use strict'

var mod = new function(){
    var that = this;
    var sq_node = new vus.node('sq');
    var pro_node = new vus.node('pro');
    var curr_sqmod = null;
    var curr_pmod = null;

    that.ready = function(){
        sq_node.url_chg = function(direct,url_upart,url_dpart,param){
            var sqid;

            if(direct == 'in'){
                index.set_menu('方塊');
                index.clear_tabnav();
                
                sqid = url_dpart[0];
                sq_node.child_delayset(sqid);
                    
                com.call_backend('core/square/','get_square_info',function(result){
                    var data = result.data;
                    var sqmodname;

                    if(com.is_callerr(result)){
                        index.add_alert('','警告','開啓方塊發生錯誤');    
                    }else{
                        index.set_title(data.title);

                        sqmodname = escape(data.sqmodname);
                        $.getScript('/toj/sqmod/' + sqmodname + '/js/' + sqmodname + '.js',function(script,status,xhr){
                            var sqid_node;

                            sqid_node = new vus.node(sqid);
                            eval('curr_sqmod = new ' + sqmodname + '(parseInt(sqid),sqid_node);'); 

                            sq_node.child_set(sqid_node);
                        });
                    }
                },parseInt(sqid));
            }else if(direct == 'out'){
                curr_sqmod.unload();
                curr_sqmod = null;
            }

            return 'cont';
        };
        com.vus_root.child_set(sq_node);

        pro_node.url_chg = function(direct,url_upart,url_dpart,param){
            var proid;

            if(direct == 'in'){
                index.set_menu('題目');
                index.clear_tabnav();
                
                proid = url_dpart[0];
                pro_node.child_delayset(proid);
                    
                com.call_backend('core/problem/','get_problem_info',function(result){
                    var data = result.data;
                    var pmodname;

                    if(com.is_callerr(result)){
                        index.add_alert('','警告','開啓題目發生錯誤');    
                    }else{
                        index.set_title(data.title);

                        pmodname = escape(data.pmodname);
                        $.getScript('/toj/pmod/' + pmodname + '/js/' + pmodname + '.js',function(script,status,xhr){
                            var proid_node;

                            proid_node = new vus.node(proid);
                            eval('curr_pmod = new ' + pmodname + '(parseInt(proid),proid_node);'); 

                            pro_node.child_set(proid_node);
                        });
                    }
                },parseInt(proid));

            }else if(direct == 'out'){
                curr_pmod.unload();
                curr_pmod = null;
            }

            return 'cont';
        };
        com.vus_root.child_set(pro_node);
    };
}