/*@cc_on @*/
/*@if (@_win32)
    document.write('<script id="_decoy_" defer src="javascript:void 0"></script>');
    document.getElementById("_decoy_").onreadystatechange = function(){
     if(this.readyState=='complete'){
      js_helper.main();
     }
    };
/*@end @*/

var ConfigCtrl = {
    'components':{},
    'page': {},
    'flag': 0,
    'thispage': null
};
function components(comp){
    var r = ConfigCtrl.components;
    r[comp.name] = comp;
    if(arguments.length>1){
        var a = [];
        a.push.apply(a, arguments);
        arguments.callee.apply(null, a.slice(1));
    }
}
ConfigCtrl.getComponents = function(name){
    return ConfigCtrl.components[name];
}
function pageConfig(conf){
    var r = ConfigCtrl.page;
    for(var i in conf){
        r[i] = conf[i];
    }
}
ConfigCtrl.uninit = function(){
    var s = ConfigCtrl.thispage;
    if(typeof s.uninit=="function"){
        s.uninit();
    }
};
function comInit(name){
    --ConfigCtrl.flag;
    //console.log(name, ConfigCtrl.flag);
    if(ConfigCtrl.flag==0){
        ConfigCtrl.thispage.init.apply(ConfigCtrl.thispage, []);
    }
};
ConfigCtrl.init = function(path){
    if(ConfigCtrl.page[path]!=undefined){
        var s = ConfigCtrl.page[path];
        ConfigCtrl.thispage = s;
        if(s["ready"]!=undefined){
            s["ready"].apply(s,[]);
        }
        if(s["components"]!=undefined && s["components"].length > 0){
            var components = s.components;
            ConfigCtrl.flag = components.length;
            for(var i=0,l=components.length;i<l;++i){
                this.load(components[i]);
            }
        }else{
            ConfigCtrl.flag == 0;
            s.init.apply(ConfigCtrl.thispage, []);
        }
        if(s["thumnails"]!=undefined){
            for(var j in s["thumnails"]){
                var p = s["thumnails"][j];
                RSV.registerThum(j, p[0], p[1]);
            }
        }
    }
};
ConfigCtrl.relocation = function(com_from){
    var s = ConfigCtrl.thispage;
    if(s==null)return;
    var names = s.components;
    ConfigCtrl.flag = names.length;
    for(var i=0,l=names.length;i<l;++i){
        var com = ConfigCtrl.components[names[i]];
        if(typeof com.location == "function" && com.name!=com_from){
            com.location.apply(com,[true]);
        }
    }
};
ConfigCtrl.load = function(component){
    var c = this.components[component];
    c.embd.apply(c,[c.init.bind(c)]);
};
