YAHOO.util.DataSource=function(H,F){if(!H){return }this.liveData=H;this._oQueue={interval:null,conn:null,requests:[]};if(H.nodeType&&H.nodeType==9){this.dataType=YAHOO.util.DataSource.TYPE_XML}else{if(YAHOO.lang.isArray(H)){this.dataType=YAHOO.util.DataSource.TYPE_JSARRAY}else{if(YAHOO.lang.isString(H)){this.dataType=YAHOO.util.DataSource.TYPE_XHR}else{if(YAHOO.lang.isFunction(H)){this.dataType=YAHOO.util.DataSource.TYPE_JSFUNCTION}else{if(H.nodeName&&(H.nodeName.toLowerCase()=="table")){this.dataType=YAHOO.util.DataSource.TYPE_HTMLTABLE;this.liveData=H.cloneNode(true)}else{if(YAHOO.lang.isObject(H)){this.dataType=YAHOO.util.DataSource.TYPE_JSON}else{this.dataType=YAHOO.util.DataSource.TYPE_UNKNOWN}}}}}}if(F&&(F.constructor==Object)){for(var G in F){if(G){this[G]=F[G]}}}var E=this.maxCacheEntries;if(!YAHOO.lang.isNumber(E)||(E<0)){E=0}this._aIntervals=[];this._sName="DataSource instance"+YAHOO.util.DataSource._nIndex;YAHOO.util.DataSource._nIndex++;this.createEvent("cacheRequestEvent");this.createEvent("cacheResponseEvent");this.createEvent("requestEvent");this.createEvent("responseEvent");this.createEvent("responseParseEvent");this.createEvent("responseCacheEvent");this.createEvent("dataErrorEvent");this.createEvent("cacheFlushEvent")};YAHOO.augment(YAHOO.util.DataSource,YAHOO.util.EventProvider);YAHOO.util.DataSource.TYPE_UNKNOWN=-1;YAHOO.util.DataSource.TYPE_JSARRAY=0;YAHOO.util.DataSource.TYPE_JSFUNCTION=1;YAHOO.util.DataSource.TYPE_XHR=2;YAHOO.util.DataSource.TYPE_JSON=3;YAHOO.util.DataSource.TYPE_XML=4;YAHOO.util.DataSource.TYPE_TEXT=5;YAHOO.util.DataSource.TYPE_HTMLTABLE=6;YAHOO.util.DataSource.ERROR_DATAINVALID="Invalid data";YAHOO.util.DataSource.ERROR_DATANULL="Null data";YAHOO.util.DataSource._nIndex=0;YAHOO.util.DataSource._nTransactionId=0;YAHOO.util.DataSource.prototype._sName=null;YAHOO.util.DataSource.prototype._aCache=null;YAHOO.util.DataSource.prototype._oQueue=null;YAHOO.util.DataSource.prototype._aIntervals=null;YAHOO.util.DataSource.prototype.maxCacheEntries=0;YAHOO.util.DataSource.prototype.liveData=null;YAHOO.util.DataSource.prototype.dataType=YAHOO.util.DataSource.TYPE_UNKNOWN;YAHOO.util.DataSource.prototype.responseType=YAHOO.util.DataSource.TYPE_UNKNOWN;YAHOO.util.DataSource.prototype.responseSchema=null;YAHOO.util.DataSource.prototype.connMgr=null;YAHOO.util.DataSource.prototype.connXhrMode="allowAll";YAHOO.util.DataSource.prototype.connMethodPost=false;YAHOO.util.DataSource.prototype.connTimeout=0;YAHOO.util.DataSource.parseString=function(D){if(!YAHOO.lang.isValue(D)){return null}var C=D+"";if(YAHOO.lang.isString(C)){return C}else{return null}};YAHOO.util.DataSource.parseNumber=function(D){var C=D*1;if(YAHOO.lang.isNumber(C)){return C}else{return null}};YAHOO.util.DataSource.convertNumber=function(B){return YAHOO.util.DataSource.parseNumber(B)};YAHOO.util.DataSource.parseDate=function(D){var C=null;if(!(D instanceof Date)){C=new Date(D)}else{return D}if(C instanceof Date){return C}else{return null}};YAHOO.util.DataSource.convertDate=function(B){return YAHOO.util.DataSource.parseDate(B)};YAHOO.util.DataSource.prototype.toString=function(){return this._sName};YAHOO.util.DataSource.prototype.getCachedResponse=function(J,P,K){var I=this._aCache;if(this.maxCacheEntries>0){if(!I){this._aCache=[]}else{var N=I.length;if(N>0){var L=null;this.fireEvent("cacheRequestEvent",{request:J,callback:P,caller:K});for(var M=N-1;M>=0;M--){var O=I[M];if(this.isCacheHit(J,O.request)){L=O.response;this.fireEvent("cacheResponseEvent",{request:J,response:L,callback:P,caller:K});if(M<N-1){I.splice(M,1);this.addToCache(J,L)}break}}return L}}}else{if(I){this._aCache=null}}return null};YAHOO.util.DataSource.prototype.isCacheHit=function(C,D){return(C===D)};YAHOO.util.DataSource.prototype.addToCache=function(F,G){var E=this._aCache;if(!E){return }while(E.length>=this.maxCacheEntries){E.shift()}var H={request:F,response:G};E[E.length]=H;this.fireEvent("responseCacheEvent",{request:F,response:G})};YAHOO.util.DataSource.prototype.flushCache=function(){if(this._aCache){this._aCache=[];this.fireEvent("cacheFlushEvent")}};YAHOO.util.DataSource.prototype.setInterval=function(J,H,L,I){if(YAHOO.lang.isNumber(J)&&(J>=0)){var K=this;var G=setInterval(function(){K.makeConnection(H,L,I)},J);this._aIntervals.push(G);return G}else{}};YAHOO.util.DataSource.prototype.clearInterval=function(D){var E=this._aIntervals||[];for(var F=E.length-1;F>-1;F--){if(E[F]===D){E.splice(F,1);clearInterval(D)}}};YAHOO.util.DataSource.prototype.clearAllIntervals=function(D){var E=this._aIntervals||[];for(var F=E.length-1;F>-1;F--){E.splice(F,1);clearInterval(D)}};YAHOO.util.DataSource.issueCallback=function(G,H,J,I){if(YAHOO.lang.isFunction(G)){G.apply(I,H)}else{if(YAHOO.lang.isObject(G)){I=G.scope||I||window;var F=G.success;if(J){F=G.failure}if(F){F.apply(I,H.concat([G.argument]))}}}};YAHOO.util.DataSource.prototype.sendRequest=function(F,E,G){var H=this.getCachedResponse(F,E,G);if(H){YAHOO.util.DataSource.issueCallback(E,[F,H],false,G);return null}return this.makeConnection(F,E,G)};YAHOO.util.DataSource.prototype.makeConnection=function(T,U,Z){this.fireEvent("requestEvent",{request:T,callback:U,caller:Z});var Q=null;var Y=YAHOO.util.DataSource._nTransactionId++;switch(this.dataType){case YAHOO.util.DataSource.TYPE_JSFUNCTION:Q=this.liveData(T);this.handleResponse(T,Q,U,Z,Y);break;case YAHOO.util.DataSource.TYPE_XHR:var W=this;var R=this.connMgr||YAHOO.util.Connect;var d=this._oQueue;var a=function(A){if(A&&(this.connXhrMode=="ignoreStaleResponses")&&(A.tId!=d.conn.tId)){return null}else{if(!A){this.fireEvent("dataErrorEvent",{request:T,callback:U,caller:Z,message:YAHOO.util.DataSource.ERROR_DATANULL});YAHOO.util.DataSource.issueCallback(U,[T,{error:true}],true,Z);return null}else{this.handleResponse(T,A,U,Z,Y)}}};var V=function(A){this.fireEvent("dataErrorEvent",{request:T,callback:U,caller:Z,message:YAHOO.util.DataSource.ERROR_DATAINVALID});if((this.liveData.lastIndexOf("?")!==this.liveData.length-1)&&(T.indexOf("?")!==0)){}A=A||{};A.error=true;YAHOO.util.DataSource.issueCallback(U,[T,A],true,Z);return null};var b={success:a,failure:V,scope:this};if(YAHOO.lang.isNumber(this.connTimeout)){b.timeout=this.connTimeout}if(this.connXhrMode=="cancelStaleRequests"){if(d.conn){if(R.abort){R.abort(d.conn);d.conn=null}else{}}}if(R&&R.asyncRequest){var S=this.liveData;var c=this.connMethodPost;var X=(c)?"POST":"GET";var f=(c)?S:S+T;var e=(c)?T:null;if(this.connXhrMode!="queueRequests"){d.conn=R.asyncRequest(X,f,b,e)}else{if(d.conn){d.requests.push({request:T,callback:b});if(!d.interval){d.interval=setInterval(function(){if(R.isCallInProgress(d.conn)){return }else{if(d.requests.length>0){f=(c)?S:S+d.requests[0].request;e=(c)?d.requests[0].request:null;d.conn=R.asyncRequest(X,f,d.requests[0].callback,e);d.requests.shift()}else{clearInterval(d.interval);d.interval=null}}},50)}}else{d.conn=R.asyncRequest(X,f,b,e)}}}else{YAHOO.util.DataSource.issueCallback(U,[T,{error:true}],true,Z)}break;default:Q=this.liveData;this.handleResponse(T,Q,U,Z,Y);break}return Y};YAHOO.util.DataSource.prototype.handleResponse=function(oRequest,oRawResponse,oCallback,oCaller,tId){this.fireEvent("responseEvent",{request:oRequest,response:oRawResponse,callback:oCallback,caller:oCaller,tId:tId});var xhr=(this.dataType==YAHOO.util.DataSource.TYPE_XHR)?true:false;var oParsedResponse=null;var oFullResponse=oRawResponse;switch(this.responseType){case YAHOO.util.DataSource.TYPE_JSARRAY:if(xhr&&oRawResponse.responseText){oFullResponse=oRawResponse.responseText}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse);oParsedResponse=this.parseArrayData(oRequest,oFullResponse);break;case YAHOO.util.DataSource.TYPE_JSON:if(xhr&&oRawResponse.responseText){oFullResponse=oRawResponse.responseText}try{if(YAHOO.lang.isString(oFullResponse)){if(YAHOO.lang.JSON){oFullResponse=YAHOO.lang.JSON.parse(oFullResponse)}else{if(window.JSON&&JSON.parse){oFullResponse=JSON.parse(oFullResponse)}else{if(oFullResponse.parseJSON){oFullResponse=oFullResponse.parseJSON()}else{while(oFullResponse.length>0&&(oFullResponse.charAt(0)!="{")&&(oFullResponse.charAt(0)!="[")){oFullResponse=oFullResponse.substring(1,oFullResponse.length)}if(oFullResponse.length>0){var objEnd=Math.max(oFullResponse.lastIndexOf("]"),oFullResponse.lastIndexOf("}"));oFullResponse=oFullResponse.substring(0,objEnd+1);oFullResponse=eval("("+oFullResponse+")")}}}}}}catch(e){}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse);oParsedResponse=this.parseJSONData(oRequest,oFullResponse);break;case YAHOO.util.DataSource.TYPE_HTMLTABLE:if(xhr&&oRawResponse.responseText){oFullResponse=oRawResponse.responseText}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse);oParsedResponse=this.parseHTMLTableData(oRequest,oFullResponse);break;case YAHOO.util.DataSource.TYPE_XML:if(xhr&&oRawResponse.responseXML){oFullResponse=oRawResponse.responseXML}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse);oParsedResponse=this.parseXMLData(oRequest,oFullResponse);break;case YAHOO.util.DataSource.TYPE_TEXT:if(xhr&&oRawResponse.responseText){oFullResponse=oRawResponse.responseText}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse);oParsedResponse=this.parseTextData(oRequest,oFullResponse);break;default:oFullResponse=this.doBeforeParseData(oRequest,oFullResponse);oParsedResponse=this.doBeforeParseData(oRequest,oFullResponse);break}if(oParsedResponse&&!oParsedResponse.error){oParsedResponse=this.doBeforeCallback(oRequest,oFullResponse,oParsedResponse);this.fireEvent("responseParseEvent",{request:oRequest,response:oParsedResponse,callback:oCallback,caller:oCaller});this.addToCache(oRequest,oParsedResponse)}else{this.fireEvent("dataErrorEvent",{request:oRequest,response:oRawResponse,callback:oCallback,caller:oCaller,message:YAHOO.util.DataSource.ERROR_DATANULL});oParsedResponse=oParsedResponse||{};oParsedResponse.error=true}oParsedResponse.tId=tId;YAHOO.util.DataSource.issueCallback(oCallback,[oRequest,oParsedResponse],oParsedResponse.error,oCaller)};YAHOO.util.DataSource.prototype.doBeforeParseData=function(D,C){return C};YAHOO.util.DataSource.prototype.doBeforeCallback=function(F,D,E){return E};YAHOO.util.DataSource.prototype.parseArrayData=function(Q,U){if(YAHOO.lang.isArray(U)){if(YAHOO.lang.isArray(this.responseSchema.fields)){var a=[],X=this.responseSchema.fields,Z;for(Z=X.length-1;Z>=0;--Z){if(typeof X[Z]!=="object"){X[Z]={key:X[Z]}}}var T={};for(Z=X.length-1;Z>=0;--Z){var R=X[Z].parser||X[Z].converter;if(R){T[X[Z].key]=R}}var W=YAHOO.lang.isArray(U[0]);for(Z=U.length-1;Z>-1;Z--){var Y={};var P=U[Z];if(typeof P==="object"){for(var O=X.length-1;O>-1;O--){var V=X[O];var b=W?P[O]:P[V.key];if(T[V.key]){b=T[V.key].call(this,b)}if(b===undefined){b=null}Y[V.key]=b}}a[Z]=Y}var S={results:a};return S}}return null};YAHOO.util.DataSource.prototype.parseTextData=function(d,X){if(YAHOO.lang.isString(X)){if(YAHOO.lang.isArray(this.responseSchema.fields)&&YAHOO.lang.isString(this.responseSchema.recordDelim)&&YAHOO.lang.isString(this.responseSchema.fieldDelim)){var Y={results:[]};var e=this.responseSchema.recordDelim;var g=this.responseSchema.fieldDelim;var f=this.responseSchema.fields;if(X.length>0){var j=X.length-e.length;if(X.substr(j)==e){X=X.substr(0,j)}var i=X.split(e);for(var b=0,a=i.length,V=0;b<a;++b){var k={};var W=false;if(YAHOO.lang.isString(i[b])){var h=i[b].split(g);for(var c=f.length-1;c>-1;c--){try{var U=h[c];if(YAHOO.lang.isString(U)){if(U.charAt(0)=='"'){U=U.substr(1)}if(U.charAt(U.length-1)=='"'){U=U.substr(0,U.length-1)}var l=f[c];var T=(YAHOO.lang.isValue(l.key))?l.key:l;if(!l.parser&&l.converter){l.parser=l.converter}if(l.parser){U=l.parser.call(this,U)}if(U===undefined){U=null}k[T]=U}else{W=true}}catch(Z){W=true}}if(!W){Y.results[V++]=k}}}}return Y}}return null};YAHOO.util.DataSource.prototype.parseXMLData=function(e,Z){var Y=false,g=this.responseSchema,a={meta:{}},l=null,j=g.metaNode,r=g.metaFields||{},n=g.totalRecords,c,d,k,h;if(n&&!r.totalRecords){r.totalRecords=n}try{l=(g.resultNode)?Z.getElementsByTagName(g.resultNode):null;j=j?Z.getElementsByTagName(j)[0]:Z;if(j){for(d in r){if(YAHOO.lang.hasOwnProperty(r,d)){k=r[d];h=j.getElementsByTagName(k)[0];if(h){h=h.firstChild.nodeValue}else{h=j.attributes.getNamedItem(k);if(h){h=h.value}}if(YAHOO.lang.isValue(h)){a.meta[d]=h}}}}}catch(b){}if(!l||!YAHOO.lang.isArray(g.fields)){Y=true}else{a.results=[];for(c=l.length-1;c>=0;--c){var i=l.item(c);var m={};for(var f=g.fields.length-1;f>=0;f--){var q=g.fields[f];var W=(YAHOO.lang.isValue(q.key))?q.key:q;var X=null;var o=i.attributes.getNamedItem(W);if(o){X=o.value}else{var p=i.getElementsByTagName(W);if(p&&p.item(0)&&p.item(0).firstChild){X=p.item(0).firstChild.nodeValue}else{X=""}}if(!q.parser&&q.converter){q.parser=q.converter}if(q.parser){X=q.parser.call(this,X)}if(X===undefined){X=null}m[W]=X}a.results[c]=m}}if(Y){a.error=true}else{}return a};YAHOO.util.DataSource.prototype.parseJSONData=function(f,a){var b={results:[],meta:{}},i=this.responseSchema;if(YAHOO.lang.isObject(a)){if(YAHOO.lang.isArray(i.fields)){var h=i.fields,t=a,g=[],n=i.metaFields||{},r=[],o=[],p=[],Z=false,d,c,e,m,Y,u,j;var v=function(A){var B=null,C=[],D=0;if(A){A=A.replace(/\[(['"])(.*?)\1\]/g,function(F,G,E){C[D]=E;return".@"+(D++)}).replace(/\[(\d+)\]/g,function(E,F){C[D]=parseInt(F,10)|0;return".@"+(D++)}).replace(/^\./,"");if(!/[^\w\.\$@]/.test(A)){B=A.split(".");for(D=B.length-1;D>=0;--D){if(B[D].charAt(0)==="@"){B[D]=C[parseInt(B[D].substr(1),10)]}}}}return B};var s=function(E,B){var C=B,A=0,D=E.length;for(;A<D&&C;++A){C=C[E[A]]}return C};for(d=h.length-1;d>=0;--d){Y=h[d].key||h[d];u=h[d].parser||h[d].converter;j=v(Y);if(u){r[r.length]={key:Y,parser:u}}if(j){if(j.length>1){o[o.length]={key:Y,path:j}}else{p[p.length]=Y}}else{}}if(i.resultsList){j=v(i.resultsList);if(j){t=s(j,a);if(t===undefined){Z=true}}else{Z=true}}if(!t){t=[]}if(!YAHOO.lang.isArray(t)){t=[t]}if(!Z){for(d=t.length-1;d>=0;--d){var l=t[d],q={};for(e=p.length-1;e>=0;--e){q[p[e]]=l[p[e]]}for(e=o.length-1;e>=0;--e){q[o[e].key]=s(o[e].path,l)}for(e=r.length-1;e>=0;--e){var k=r[e].key;q[k]=r[e].parser(q[k]);if(q[k]===undefined){q[k]=null}}g[d]=q}if(i.totalRecords&&!n.totalRecords){n.totalRecords=i.totalRecords}for(Y in n){if(YAHOO.lang.hasOwnProperty(n,Y)){j=v(n[Y]);if(j){m=s(j,a);b.meta[Y]=m}}}}else{b.error=true}b.results=g}}else{b.error=true}return b};YAHOO.util.DataSource.prototype.parseHTMLTableData=function(R,V){var Y=false;var X=V;var Z=this.responseSchema.fields;var T={results:[]};for(var b=0;b<X.tBodies.length;b++){var Q=X.tBodies[b];for(var d=Q.rows.length-1;d>-1;d--){var S=Q.rows[d];var a={};for(var P=Z.length-1;P>-1;P--){var W=Z[P];var U=(YAHOO.lang.isValue(W.key))?W.key:W;var c=S.cells[P].innerHTML;if(!W.parser&&W.converter){W.parser=W.converter}if(W.parser){c=W.parser.call(this,c)}if(c===undefined){c=null}a[U]=c}T.results[d]=a}}if(Y){T.error=true}else{}return T};YAHOO.util.Number={format:function(N,V){V=V||{};if(!YAHOO.lang.isNumber(N)){N*=1}if(YAHOO.lang.isNumber(N)){var R=N+"";var U=(V.decimalSeparator)?V.decimalSeparator:".";var T;if(YAHOO.lang.isNumber(V.decimalPlaces)){var S=V.decimalPlaces;var M=Math.pow(10,S);R=Math.round(N*M)/M+"";T=R.lastIndexOf(".");if(S>0){if(T<0){R+=U;T=R.length-1}else{if(U!=="."){R=R.replace(".",U)}}while((R.length-1-T)<S){R+="0"}}}if(V.thousandsSeparator){var P=V.thousandsSeparator;T=R.lastIndexOf(U);T=(T>-1)?T:R.length;var Q=R.substring(T);var O=-1;for(var L=T;L>0;L--){O++;if((O%3===0)&&(L!==T)){Q=P+Q}Q=R.charAt(L-1)+Q}R=Q}R=(V.prefix)?V.prefix+R:R;R=(V.suffix)?R+V.suffix:R;return R}else{return N}}};YAHOO.util.Date={format:function(K,L){L=L||{};if(K instanceof Date){var J=L.format||"MM/DD/YYYY";var I=K.getMonth()+1;var G=K.getDate();var H=K.getFullYear();switch(J){case"YYYY/MM/DD":return H+"/"+I+"/"+G;case"DD/MM/YYYY":return G+"/"+I+"/"+H;default:return I+"/"+G+"/"+H}}else{return YAHOO.lang.isValue(K)?K:""}}};YAHOO.register("datasource",YAHOO.util.DataSource,{version:"2.5.2",build:"1076"})