YAHOO.namespace("plugin");
(function(){var i=YAHOO.util.Connect,d=YAHOO.lang,f=YAHOO.util.Event,h=YAHOO.util.Dom,e=YAHOO.util.Dom.get;
var n={LOADING:1,DISPATCHED:2,ERROR:3,EMPTY:4,proxy:"/dispatcher.php?uri=",CSSNODE:1,JSNODE:2};
var l=/<script([^>]*)>([\s\S]*?)<\/script>/igm,a=/src=(['"]?)([^"']*)\1/i,m=/rel=(['"]?)([^"']*)\1/i,c=/<link([^>]*)(>[\s]*<\/link>|>)/igm,k=/href=(['"]?)([^"']*)\1/i,o=/<style([^>]*)>([\s\S]*?)<\/style>/igm,b=new RegExp("([\\w-.]+)\\s*=\\s*(\".*?\"|'.*?'|\\w+)*","im");
var j=new RegExp("url\\s*\\(([^\\)]*)","igm");
var g=new RegExp("^((?:http|https)://)((?:\\w+[.|-]?)*\\w+)(/.*)$","i");
YAHOO.plugin.Dispatcher=function(){var w={},s={},J=[],p={relative:false,baseURI:document.location.toString()},B="loading",C="yui-dispatchable",t={key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}},A=/^\s+|\s+$/g;
function H(Q,N){var P=t,L=P.parser[N?"strict":"loose"].exec(Q),O={},M=14;
while(M--){O[P.key[M]]=L[M]||""
}O[P.q.name]={};
O[P.key[12]].replace(P.q.parser,function(S,R,T){if(R){O[P.q.name][R]=T
}});
return O
}function E(L){var N=document.getElementsByTagName("head")[0]||document.documentElement,M=document.createElement("script");
L=L.replace(A,"");
if(L){M.type="text/javascript";
if(YAHOO.env.ua.ie){M.text=L
}else{M.appendChild(document.createTextNode(L))
}N.insertBefore(M,N.firstChild);
N.removeChild(M)
}}function y(L){if(d.isString(L)){L=L.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1");
L=L.replace(/^(['|"])*(\S*(?:\s+\S+)*)\1$/,"$2")
}return L
}function q(O,L){var N=null,M={};
L=L||{};
if(d.isString(O)){while(N=b.exec(O)){N[2]=(L.hasOwnProperty(N[1])?L[N[1]]:N[2]);
if(N[2]){M[N[1]]=y(N[2])
}O=O.replace(b,"")
}}return M
}function u(L){L=((d.isString(L)&&(L.indexOf("/")>-1))?L:p.baseURI)+"";
return L.substr(0,L.lastIndexOf("/")+1)
}function K(M,L){if(L&&!g.test(L)&&(L.indexOf("/")!==0)){L=M+L
}return L
}function r(L){if(L.element&&L.element.setAttribute){L.element.setAttribute("aria-live","polite");
L.element.setAttribute("aria-atomic","true");
L.element.setAttribute("aria-relevant","all");
L.element.setAttribute("aria-busy","true")
}L.onStart=L.before||L.onStart;
if(d.isFunction(L.onStart)){L.onStart.apply(L,[L.element]);
L.onStart=null
}if(!L.underground&&YAHOO.Bubbling){YAHOO.Bubbling.fire("onAsyncRequestStart",{element:L.element})
}}function G(L,M){if(d.isFunction(L.onChange)){M=M||L.element;
L.onChange.apply(L,[M])
}}function v(L){L.onLoad=L.after||L.onLoad;
if(d.isFunction(L.onLoad)){L.onLoad.apply(L,[L.element])
}if(!L.underground&&YAHOO.Bubbling){YAHOO.Bubbling.fire("onAsyncRequestEnd",{element:L.element})
}if(L.element&&L.element.setAttribute){L.element.setAttribute("aria-busy","false")
}}function I(Q,M){var R=null,L=true,P=null,O="",N=0;
M=M||{};
if(w.isAlive(Q)){P=s[Q].chunks.shift();
if(d.isObject(P)&&P.src){M.hash=J.length;
for(N=0;
N<J.length;
N++){if(J[N].uri==P.src){if((J[N].status==n.DISPATCHED)&&!M.override){L=false
}else{}M.hash=N;
break
}}if(L){O=w.firewall(P.src,M,true);
if(d.isString(O)&&(O!=="")){J[M.hash]={uri:P.src,proxy:O,status:n.LOADING};
if(P.type===n.JSNODE){w.area=Q;
w.destroyer=s[Q].destroyer;
M.handle=YAHOO.util.Get.script(O,{onSuccess:function(){J[M.hash].status=n.DISPATCHED;
if(M.rel&&YAHOO.Bubbling){YAHOO.Bubbling.fire("onScriptReady",{module:P.rel,src:P.src,uri:O,hash:M.hash})
}M.hash=null;
I(Q,M)
},onFailure:function(){I(Q,M)
},scope:w,data:M})
}else{if(P.type===n.CSSNODE){YAHOO.util.Get.css(O,{});
J[M.hash].status=n.DISPATCHED;
I(Q,M)
}}}}else{I(Q,M)
}}else{M.hash=null;
z(Q,P.content,M)
}}else{w.kill(Q);
v(M)
}}function z(O,P,M){var L=n.EMPTY;
if(P&&(P!=="")){try{L=n.DISPATCHED;
if(!M.hash||(J[M.hash].status!=n.DISPATCHED)){w.area=O;
w.destroyer=s[O].destroyer;
if(d.isFunction(M.evalRoutine)){M.evalRoutine(P,M)
}else{E(P)
}}}catch(N){L=n.ERROR;
if(d.isFunction(M.error)){M.error.apply(M,[O,P,J,N])
}else{throw new Error("Dispacher: Script Execution Error ("+N+")")
}}}if(d.isNumber(M.hash)){J[M.hash].status=L;
M.hash=null
}I(O,M)
}function D(M,Q,L){L.action=(L.action?L.action:"replace");
switch(L.action){case"tabview":F(M.get("contentEl"),L);
try{M.set("content",Q)
}catch(P){return false
}G(L,M.get("contentEl"));
break;
case"update":Q=M.innerHTML+Q;
try{M.innerHTML=Q
}catch(O){return false
}G(L,M);
break;
case"replace":case"layout":default:F(M,L);
try{M.innerHTML=Q
}catch(N){return false
}G(L,M);
break
}return true
}function F(N,L){var O=L.guid,M=0;
if(d.isObject(s[O].destroyer)){s[O].destroyer.fire(N,L)
}if(h.inDocument(N)){for(M=0;
M<N.childNodes.length;
M++){f.purgeElement(N.childNodes[M],true)
}h.addClass(N,C)
}s[O].destroyer=new YAHOO.util.CustomEvent("destroyer");
if(d.isFunction(L.onDestroy)){s[O].destroyer.subscribe(L.onDestroy)
}}function x(Q,O,N){N=N||{};
N.uri=N.uri||null;
N.relative=N.relative||p.relative;
var M=true,L=false,P=u(N.uri);
O=O.replace(o,function(V,U,S,T,R){if(S){w.applyCSS(S,q(U),N)
}return""
});
O=O.replace(c,function(V,U,S,T,R){if(U){L=U.match(k);
if(L){if(N.relative){L[2]=K(P,L[2])
}s[Q].chunks.push({src:L[2],content:"",type:n.CSSNODE,params:q(U)})
}}return""
});
O=O.replace(l,function(W,V,T,U,S){if(V){L=V.match(a);
if(L){var R=V.match(m);
R=(R?R[2]:null);
if(N.relative){L[2]=K(P,L[2])
}s[Q].chunks.push({src:L[2],content:"",type:n.JSNODE,rel:R,params:q(V)})
}}if(T){s[Q].chunks.push({src:null,content:T,type:n.JSNODE,params:q(V)})
}return""
});
return O
}if(YAHOO.Bubbling){YAHOO.Bubbling.on("onScriptReady",function(){if(this.src&&!this.hash){J[this.hash].status=n.DISPATCHED
}})
}w.area=null;
w.strictMode=true;
w.destroyer=null;
w.fetch=function(N,O,M){M=M||{};
M.uri=O;
var Q=null,L=null,P={success:function(R){if(R.responseText!="undefined"){w.process(N,R.responseText,M,true)
}h.removeClass(N,B)
},failure:function(R){if(d.isFunction(M.onError)){M.onError.apply(M,[M.element,R])
}h.removeClass(N,B)
}};
if((d.isObject(N)||(N=e(N)))&&O){L=w.firewall(O,M);
h.addClass(N,B);
M.handle=i.asyncRequest("GET",L,P);
M.element=N;
r(M);
if(YAHOO.Bubbling){Q=M.guid||f.generateId(N);
YAHOO.Bubbling.fire("onNavigate",{state:Q+escape(O),control:"dispatcher",element:N,uri:O,config:M,restore:function(){w.fetch(N,O,M)
}})
}return M.handle
}return null
};
w.process=function(N,O,M,L){var P=null;
M=M||{};
if(d.isObject(N)||(N=e(N))){P=M.guid||f.generateId(N);
this.kill(P);
M.element=N;
M.content=O;
M.guid=P;
if(!L){r(M)
}if(D(N,x(P,O,M),M)){I(P,M)
}}return P
};
w.delegate=function(M,N,L){L=L||{};
L.action="tabview";
L.uri=M.get("dataSrc")||null;
L.tab=M;
M.loadHandler.success=function(P){var O=M.get("contentEl");
L.tab=O;
L.underground=true;
w.process(M,P.responseText,L);
if(YAHOO.Bubbling){YAHOO.Bubbling.fire("onAsyncRequestEnd",{element:O})
}};
M.on("activeChange",function(){if(YAHOO.Bubbling&&this.get("active")&&M.get("dataSrc")&&!this.get("cacheData")){YAHOO.Bubbling.fire("onAsyncRequestStart",{element:this.get("contentEl")})
}});
if(d.isObject(N)){N.addTab(M)
}};
w.addUnit=function(O,N,L){var P=L||{},M;
P.action="layout";
if(!O||!N){return false
}if(d.isString(O)){O=N.getUnitByPosition(O)
}else{if(O.position&&!N.getUnitByPosition(O.position)){O=N.addUnit(O)
}}if(P.uri){O.set("dataSrc",P.uri)
}if((P.unit=O)&&(P.uri=P.unit.get("dataSrc"))&&(M=P.unit.body)){P.underground=true;
P._dispatcherConfig=P;
P.unit.loadHandler.success=function(Q){w.process(this.body,Q.responseText,this._dispatcherConfig);
if(YAHOO.Bubbling){YAHOO.Bubbling.fire("onAsyncRequestEnd",{element:this.body})
}};
if(P.unit.loadContent()&&YAHOO.Bubbling){YAHOO.Bubbling.fire("onAsyncRequestStart",{element:M})
}}return P.unit
};
w.applyCSS=function(M,R,N){R=R||{};
var L=document.createElement("style"),P=R.href||"";
N=N||{};
var O=N.uri||p.baseURI;
N.relative=N.relative||p.relative;
if(N.relative){O=w.firewall(O,N,true);
P=u(O);
P=K(P,R.href)
}P=u(P);
M=M.replace(j,function(V,U,T,S){U=y(U);
U="url("+K(P,U);
return U
});
L.type="text/css";
if(d.isObject(L.styleSheet)){L.styleSheet.cssText=M
}else{L.appendChild(document.createTextNode(M))
}try{document.getElementsByTagName("head")[0].appendChild(L)
}catch(Q){throw new Error("Dispacher: CSS Processing Error ("+Q+")");
return false
}return true
};
w.jsLoader=function(M,L){if(d.isString(M)&&(M!=="")){L=L||{};
f.generateId(L);
w.kill(L.id);
s[L.id].chunks=[{src:M,content:"",type:n.JSNODE,params:{href:M}}];
L.underground=true;
r(L);
I(L.id,L);
return L.id
}return null
};
w.cssLoader=function(M,L){if(d.isString(M)&&(M!=="")){L=L||{};
f.generateId(L);
w.kill(L.id);
s[L.id].chunks=[{src:M,content:"",type:n.CSSNODE,params:{href:M}}];
L.underground=true;
r(L);
I(L.id,L);
return L.id
}return null
};
w.isAlive=function(L){return(L&&d.isObject(s[L])&&(s[L].chunks.length>0))
};
w.kill=function(L){if(L&&!d.isObject(s[L])){s[L]={chunks:[],destroyer:null}
}else{if(this.isAlive(L)){s[L].chunks=[]
}}};
w.destroy=function(L){this.kill(L);
if(L&&!d.isObject(s[L])){s[L].destroyer.fire(e(L),{})
}};
w.onDestroy=function(N,L,M){var O=(M?[L,M,true]:[L]);
if(d.isObject(s[N])&&d.isObject(s[N].destroyer)){if(d.isObject(M)){s[N].destroyer.subscribe(L,M,true)
}else{s[N].destroyer.subscribe(L)
}return true
}return false
};
w.init=function(L){L=L||{};
L.relative=L.relative||false;
p=L
};
w.firewall=function(O,N,Q){var M=null,P=null,L=null;
while(O.indexOf("&amp;")>-1){O=O.replace("&amp;","&")
}N.proxy=N.proxy||n.proxy;
if(d.isFunction(N.firewall)){O=N.firewall.apply(N,[O])
}else{if(!N.monolithic&&!Q&&N.proxy){L=O.match(g);
if(L&&(L[2]!==document.domain)){O=N.proxy+escape(O)
}}}return O
};
w.obj2query=function(N){var L="",M;
if(d.isObject(N)){for(key in N){if(N.hasOwnProperty(key)){L+=(L==""?"":"&");
L+=key+"="+N[key]
}}}return L
};
w.augmentURI=function(N,L){L=L||{};
var O=H(N,this.strictMode),M="";
O.queryKey=O.queryKey||{};
d.augmentObject(O.queryKey,L,true);
if(O.protocol){M+=O.protocol+":"
}if(this.strictMode){if(/^(?:[^:\/?#]+:)?\/\//.test(O.source)){M+="//"
}}else{if(/^(?:(?![^:@]+:[^:@\/]*@)[^:\/?#.]+:)?\/\//.test(O.source)){M+="//"
}}if(O.authority){if(O.userInfo){if(O.user){M+=O.user
}if(O.userInfo.indexOf(":")>-1){M+=":"
}if(O.password){M+=O.password
}M+="@"
}if(O.host){M+=O.host
}if(O.port){M+=":"+O.port
}}if(O.relative){if(O.path){if(O.directory){M+=O.directory
}if(O.file){M+=O.file
}}M+="?";
for(sName in O.queryKey){if(O.queryKey.hasOwnProperty(sName)){M+=sName+"="+O.queryKey[sName]+"&"
}}if(O.anchor){M+="#"+O.anchor
}}return M
};
w.toString=function(){return("YUI Dispatcher Plugin")
};
return w
}()
})();
YAHOO.util.Dispatcher=YAHOO.plugin.Dispatcher;
YAHOO.register("dispatcher",YAHOO.plugin.Dispatcher,{version:"2.1",build:"237"});
