/*
	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dojox.help._base"]){
dojo._hasResource["dojox.help._base"]=true;
dojo.provide("dojox.help._base");
dojo.require("dojox.rpc.Service");
dojo.require("dojo.io.script");
dojo.experimental("dojox.help");
console.warn("Script causes side effects (on numbers, strings, and booleans). Call dojox.help.noConflict() if you plan on executing code.");
dojox.help={locate:function(_1,_2,_3){
_3=_3||20;
var _4=[];
var _5={};
var _6;
if(_2){
if(!dojo.isArray(_2)){
_2=[_2];
}
for(var i=0,_7;_7=_2[i];i++){
_6=_7;
if(dojo.isString(_7)){
_7=dojo.getObject(_7);
if(!_7){
continue;
}
}else{
if(dojo.isObject(_7)){
_6=_7.__name__;
}else{
continue;
}
}
_4.push(_7);
if(_6){
_6=_6.split(".")[0];
if(!_5[_6]&&dojo.indexOf(dojox.help._namespaces,_6)==-1){
dojox.help.refresh(_6);
}
_5[_6]=true;
}
}
}
if(!_4.length){
_4.push({__name__:"window"});
dojo.forEach(dojox.help._namespaces,function(_8){
_5[_8]=true;
});
}
var _9=_1.toLowerCase();
var _a=[];
out:
for(var i=0,_7;_7=_4[i];i++){
var _b=_7.__name__||"";
var _c=dojo.some(_4,function(_d){
_d=_d.__name__||"";
return (_b.indexOf(_d+".")==0);
});
if(_b&&!_c){
_6=_b.split(".")[0];
var _e=[];
if(_b=="window"){
for(_6 in dojox.help._names){
if(dojo.isArray(dojox.help._names[_6])){
_e=_e.concat(dojox.help._names[_6]);
}
}
}else{
_e=dojox.help._names[_6];
}
for(var j=0,_f;_f=_e[j];j++){
if((_b=="window"||_f.indexOf(_b+".")==0)&&_f.toLowerCase().indexOf(_9)!=-1){
if(_f.slice(-10)==".prototype"){
continue;
}
var obj=dojo.getObject(_f);
if(obj){
_a.push([_f,obj]);
if(_a.length==_3){
break out;
}
}
}
}
}
}
dojox.help._displayLocated(_a);
if(!dojo.isMoz){
return "";
}
},refresh:function(_10,_11){
if(arguments.length<2){
_11=true;
}
dojox.help._recurse(_10,_11);
},noConflict:function(_12){
if(arguments.length){
return dojox.help._noConflict(_12);
}else{
while(dojox.help._overrides.length){
var _13=dojox.help._overrides.pop();
var _14=_13[0];
var key=_13[1];
var _15=_14[key];
_14[key]=dojox.help._noConflict(_15);
}
}
},init:function(_16,_17){
if(_16){
dojox.help._namespaces.concat(_16);
}
dojo.addOnLoad(function(){
dojo.require=(function(_18){
return function(){
dojox.help.noConflict();
_18.apply(dojo,arguments);
if(dojox.help._timer){
clearTimeout(dojox.help._timer);
}
dojox.help._timer=setTimeout(function(){
dojo.addOnLoad(function(){
dojox.help.refresh();
dojox.help._timer=false;
});
},500);
};
})(dojo.require);
dojox.help._recurse();
});
},_noConflict:function(_19){
if(_19 instanceof String){
return _19.toString();
}else{
if(_19 instanceof Number){
return +_19;
}else{
if(_19 instanceof Boolean){
return (_19==true);
}else{
if(dojo.isObject(_19)){
delete _19.__name__;
delete _19.help;
}
}
}
}
return _19;
},_namespaces:["dojo","dojox","dijit","djConfig"],_rpc:new dojox.rpc.Service(dojo.moduleUrl("dojox.rpc.SMDLibrary","dojo-api.smd")),_attributes:["summary","type","returns","parameters"],_clean:function(_1a){
var obj={};
for(var i=0,_1b;_1b=dojox.help._attributes[i];i++){
var _1c=_1a["__"+_1b+"__"];
if(_1c){
obj[_1b]=_1c;
}
}
return obj;
},_displayLocated:function(_1d){
throw new Error("_displayLocated should be overridden in one of the dojox.help packages");
},_displayHelp:function(_1e,obj){
throw new Error("_displayHelp should be overridden in one of the dojox.help packages");
},_addVersion:function(obj){
if(obj.name){
obj.version=[dojo.version.major,dojo.version.minor,dojo.version.patch].join(".");
var _1f=obj.name.split(".");
if(_1f[0]=="dojo"||_1f[0]=="dijit"||_1f[0]=="dojox"){
obj.project=_1f[0];
}
}
return obj;
},_stripPrototype:function(_20){
var _21=_20.replace(/\.prototype(\.|$)/g,".");
var _22=_21;
if(_21.slice(-1)=="."){
_22=_21=_21.slice(0,-1);
}else{
_21=_20;
}
return [_22,_21];
},_help:function(){
var _23=this.__name__;
var _24=dojox.help._stripPrototype(_23)[0];
var _25=[];
for(var i=0,_26;_26=dojox.help._attributes[i];i++){
if(!this["__"+_26+"__"]){
_25.push(_26);
}
}
dojox.help._displayHelp(true,{name:this.__name__});
if(!_25.length||this.__searched__){
dojox.help._displayHelp(false,dojox.help._clean(this));
}else{
this.__searched__=true;
dojox.help._rpc.get(dojox.help._addVersion({name:_24,exact:true,attributes:_25})).addCallback(this,function(_27){
if(this.toString===dojox.help._toString){
this.toString(_27);
}
if(_27&&_27.length){
_27=_27[0];
for(var i=0,_26;_26=dojox.help._attributes[i];i++){
if(_27[_26]){
this["__"+_26+"__"]=_27[_26];
}
}
dojox.help._displayHelp(false,dojox.help._clean(this));
}else{
dojox.help._displayHelp(false,false);
}
});
}
if(!dojo.isMoz){
return "";
}
},_parse:function(_28){
delete this.__searching__;
if(_28&&_28.length){
var _29=_28[0].parameters;
if(_29){
var _2a=["function ",this.__name__,"("];
this.__parameters__=_29;
for(var i=0,_2b;_2b=_29[i];i++){
if(i){
_2a.push(", ");
}
_2a.push(_2b.name);
if(_2b.types){
var _2c=[];
for(var j=0,_2d;_2d=_2b.types[j];j++){
_2c.push(_2d.title);
}
if(_2c.length){
_2a.push(": ");
_2a.push(_2c.join("|"));
}
}
if(_2b.repeating){
_2a.push("...");
}
if(_2b.optional){
_2a.push("?");
}
}
_2a.push(")");
this.__source__=this.__source__.replace(/function[^\(]*\([^\)]*\)/,_2a.join(""));
}
if(this.__output__){
delete this.__output__;
}
}else{
dojox.help._displayHelp(false,false);
}
},_toStrings:{},_toString:function(_2e){
if(!this.__source__){
return this.__name__;
}
var _2f=(!this.__parameters__);
this.__parameters__=[];
if(_2e){
dojox.help._parse.call(this,_2e);
}else{
if(_2f){
this.__searching__=true;
dojox.help._toStrings[dojox.help._stripPrototype(this.__name__)[0]]=this;
if(dojox.help._toStringTimer){
clearTimeout(dojox.help._toStringTimer);
}
dojox.help._toStringTimer=setTimeout(function(){
dojox.help.__toString();
},50);
}
}
if(!_2f||!this.__searching__){
return this.__source__;
}
var _30="function Loading info for "+this.__name__+"... (watch console for result) {}";
if(!dojo.isMoz){
this.__output__=true;
return _30;
}
return {toString:dojo.hitch(this,function(){
this.__output__=true;
return _30;
})};
},__toString:function(){
if(dojox.help._toStringTimer){
clearTimeout(dojox.help._toStringTimer);
}
var _31=[];
dojox.help.noConflict(dojox.help._toStrings);
for(var _32 in dojox.help._toStrings){
_31.push(_32);
}
while(_31.length){
dojox.help._rpc.batch(dojox.help._addVersion({names:_31.splice(-50,50),exact:true,attributes:["parameters"]})).addCallback(this,function(_33){
for(var i=0,_34;_34=_33[i];i++){
var fn=dojox.help._toStrings[_34.name];
if(fn){
dojox.help._parse.call(fn,[_34]);
delete dojox.help._toStrings[_34.name];
}
}
});
}
},_overrides:[],_recursions:[],_names:{},_recurse:function(_35,_36){
if(arguments.length<2){
_36=true;
}
var _37=[];
if(_35&&dojo.isString(_35)){
dojox.help.__recurse(dojo.getObject(_35),_35,_35,_37,_36);
}else{
for(var i=0,ns;ns=dojox.help._namespaces[i];i++){
if(window[ns]){
dojox.help._recursions.push([window[ns],ns,ns]);
window[ns].__name__=ns;
if(!window[ns].help){
window[ns].help=dojox.help._help;
}
}
}
}
while(dojox.help._recursions.length){
var _38=dojox.help._recursions.shift();
dojox.help.__recurse(_38[0],_38[1],_38[2],_37,_36);
}
for(var i=0,_39;_39=_37[i];i++){
delete _39.__seen__;
}
},__recurse:function(_3a,_3b,_3c,_3d,_3e){
for(var key in _3a){
if(key.match(/([^\w_.$]|__[\w_.$]+__)/)){
continue;
}
var _3f=_3a[key];
if(typeof _3f=="undefined"||_3f===document||_3f===window||_3f===dojox.help._toString||_3f===dojox.help._help||_3f===null||(+dojo.isIE&&_3f.tagName)||_3f.__seen__){
continue;
}
var _40=dojo.isFunction(_3f);
var _41=dojo.isObject(_3f)&&!dojo.isArray(_3f)&&!_3f.nodeType;
var _42=(_3c)?(_3c+"."+key):key;
if(_42=="dojo._blockAsync"){
continue;
}
if(!_3f.__name__){
var _43=null;
if(dojo.isString(_3f)){
_43=String;
}else{
if(typeof _3f=="number"){
_43=Number;
}else{
if(typeof _3f=="boolean"){
_43=Boolean;
}
}
}
if(_43){
_3f=_3a[key]=new _43(_3f);
}
}
_3f.__seen__=true;
_3f.__name__=_42;
(dojox.help._names[_3b]=dojox.help._names[_3b]||[]).push(_42);
_3d.push(_3f);
if(!_40){
dojox.help._overrides.push([_3a,key]);
}
if((_40||_41)&&_3e){
dojox.help._recursions.push([_3f,_3b,_42]);
}
if(_40){
if(!_3f.__source__){
_3f.__source__=_3f.toString().replace(/^function\b ?/,"function "+_42);
}
if(_3f.toString===Function.prototype.toString){
_3f.toString=dojox.help._toString;
}
}
if(!_3f.help){
_3f.help=dojox.help._help;
}
}
}};
}
