/* Copyright (c) 2007, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt version: 2.4.1 */ YAHOO.util.DataSource=function(B,D){if(D&&(D.constructor==Object)){for(var C in D){if(C){this[C]=D[C];}}}if(!B){return ;}if(B.nodeType&&B.nodeType==9){this.dataType=YAHOO.util.DataSource.TYPE_XML;}else{if(YAHOO.lang.isArray(B)){this.dataType=YAHOO.util.DataSource.TYPE_JSARRAY;}else{if(YAHOO.lang.isString(B)){this.dataType=YAHOO.util.DataSource.TYPE_XHR;}else{if(YAHOO.lang.isFunction(B)){this.dataType=YAHOO.util.DataSource.TYPE_JSFUNCTION;}else{if(B.nodeName&&(B.nodeName.toLowerCase()=="table")){this.dataType=YAHOO.util.DataSource.TYPE_HTMLTABLE;}else{if(YAHOO.lang.isObject(B)){this.dataType=YAHOO.util.DataSource.TYPE_JSON;}else{this.dataType=YAHOO.util.DataSource.TYPE_UNKNOWN;}}}}}}this.liveData=B;this._oQueue={interval:null,conn:null,requests:[]};var A=this.maxCacheEntries;if(!YAHOO.lang.isNumber(A)||(A<0)){A=0;}if(A>0&&!this._aCache){this._aCache=[];}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(B){if(!YAHOO.lang.isValue(B)){return null;}var A=B+"";if(YAHOO.lang.isString(A)){return A;}else{return null;}};YAHOO.util.DataSource.parseNumber=function(B){var A=B*1;if(YAHOO.lang.isNumber(A)){return A;}else{return null;}};YAHOO.util.DataSource.convertNumber=function(A){return YAHOO.util.DataSource.parseNumber(A);};YAHOO.util.DataSource.parseDate=function(B){var A=null;if(!(B instanceof Date)){A=new Date(B);}else{return B;}if(A instanceof Date){return A;}else{return null;}};YAHOO.util.DataSource.convertDate=function(A){return YAHOO.util.DataSource.parseDate(A);};YAHOO.util.DataSource.prototype.toString=function(){return this._sName;};YAHOO.util.DataSource.prototype.getCachedResponse=function(H,B,G){var A=this._aCache;var D=(A)?A.length:0;var F=null;if((this.maxCacheEntries>0)&&A&&(D>0)){this.fireEvent("cacheRequestEvent",{request:H,callback:B,caller:G});for(var E=D-1;E>=0;E--){var C=A[E];if(this.isCacheHit(H,C.request)){F=C.response;A.splice(E,1);this.addToCache(H,F);this.fireEvent("cacheResponseEvent",{request:H,response:F,callback:B,caller:G});break;}}}return F;};YAHOO.util.DataSource.prototype.isCacheHit=function(A,B){return(A===B);};YAHOO.util.DataSource.prototype.addToCache=function(D,C){var A=this._aCache;if(!A){return ;}while(A.length>=this.maxCacheEntries){A.shift();}var B={request:D,response:C};A.push(B);this.fireEvent("responseCacheEvent",{request:D,response:C});};YAHOO.util.DataSource.prototype.flushCache=function(){if(this._aCache){this._aCache=[];this.fireEvent("cacheFlushEvent");}};YAHOO.util.DataSource.prototype.setInterval=function(D,F,B,E){try{var C=this;var A=setInterval(function(){C.makeConnection(F,B,E);},D);this._aIntervals.push(A);return A;}catch(G){}};YAHOO.util.DataSource.prototype.clearInterval=function(A){var C=this._aIntervals||[];for(var B=C.length-1;B>-1;B--){if(C[B]===A){C.splice(B,1);clearInterval(A);}}};YAHOO.util.DataSource.prototype.clearAllIntervals=function(A){var C=this._aIntervals||[];for(var B=C.length-1;B>-1;B--){C.splice(B,1);clearInterval(A);}};YAHOO.util.DataSource.prototype.sendRequest=function(D,A,C){var B=this.getCachedResponse(D,A,C);if(B){A.call(C,D,B);return null;}return this.makeConnection(D,A,C);};YAHOO.util.DataSource.prototype.makeConnection=function(A,P,K){this.fireEvent("requestEvent",{request:A,callback:P,caller:K});var D=null;var L=YAHOO.util.DataSource._nTransactionId++;switch(this.dataType){case YAHOO.util.DataSource.TYPE_JSFUNCTION:D=this.liveData(A);this.handleResponse(A,D,P,K,L);break;case YAHOO.util.DataSource.TYPE_XHR:var N=this;var C=this.connMgr||YAHOO.util.Connect;var G=this._oQueue;var J=function(Q){if(Q&&(this.connXhrMode=="ignoreStaleResponses")&&(Q.tId!=G.conn.tId)){return null;}else{if(!Q){this.fireEvent("dataErrorEvent",{request:A,callback:P,caller:K,message:YAHOO.util.DataSource.ERROR_DATANULL});P.call(K,A,Q,true);return null;}else{this.handleResponse(A,Q,P,K,L);}}};var O=function(Q){this.fireEvent("dataErrorEvent",{request:A,callback:P,caller:K,message:YAHOO.util.DataSource.ERROR_DATAINVALID});if((this.liveData.lastIndexOf("?")!==this.liveData.length-1)&&(A.indexOf("?")!==0)){}P.call(K,A,Q,true);return null;};var I={success:J,failure:O,scope:this};if(YAHOO.lang.isNumber(this.connTimeout)){I.timeout=this.connTimeout;}if(this.connXhrMode=="cancelStaleRequests"){if(G.conn){if(C.abort){C.abort(G.conn);G.conn=null;}else{}}}if(C&&C.asyncRequest){var B=this.liveData;var H=this.connMethodPost;var M=(H)?"POST":"GET";var E=(H)?B:B+A;var F=(H)?A:null; if(this.connXhrMode!="queueRequests"){G.conn=C.asyncRequest(M,E,I,F);}else{if(G.conn){G.requests.push({request:A,callback:I});if(!G.interval){G.interval=setInterval(function(){if(C.isCallInProgress(G.conn)){return ;}else{if(G.requests.length>0){E=(H)?B:B+G.requests[0].request;F=(H)?G.requests[0].request:null;G.conn=C.asyncRequest(M,E,G.requests[0].callback,F);G.requests.shift();}else{clearInterval(G.interval);G.interval=null;}}},50);}}else{G.conn=C.asyncRequest(M,E,I,F);}}}else{P.call(K,A,null,true);}break;default:D=this.liveData;this.handleResponse(A,D,P,K,L);break;}return L;};YAHOO.util.DataSource.prototype.handleResponse=function(E,C,B,D,H){this.fireEvent("responseEvent",{request:E,response:C,callback:B,caller:D,tId:H});var G=(this.dataType==YAHOO.util.DataSource.TYPE_XHR)?true:false;var F=null;var A=false;C=this.doBeforeParseData(E,C);switch(this.responseType){case YAHOO.util.DataSource.TYPE_JSARRAY:if(G&&C.responseText){C=C.responseText;}F=this.parseArrayData(E,C);break;case YAHOO.util.DataSource.TYPE_JSON:if(G&&C.responseText){C=C.responseText;}F=this.parseJSONData(E,C);break;case YAHOO.util.DataSource.TYPE_HTMLTABLE:if(G&&C.responseText){C=C.responseText;}F=this.parseHTMLTableData(E,C);break;case YAHOO.util.DataSource.TYPE_XML:if(G&&C.responseXML){C=C.responseXML;}F=this.parseXMLData(E,C);break;case YAHOO.util.DataSource.TYPE_TEXT:if(G&&C.responseText){C=C.responseText;}F=this.parseTextData(E,C);break;default:break;}if(F){F.tId=H;F=this.doBeforeCallback(E,C,F);this.fireEvent("responseParseEvent",{request:E,response:F,callback:B,caller:D});this.addToCache(E,F);}else{this.fireEvent("dataErrorEvent",{request:E,callback:B,caller:D,message:YAHOO.util.DataSource.ERROR_DATANULL});F={error:true};}B.call(D,E,F);};YAHOO.util.DataSource.prototype.doBeforeParseData=function(B,A){return A;};YAHOO.util.DataSource.prototype.doBeforeCallback=function(B,A,C){return C;};YAHOO.util.DataSource.prototype.parseArrayData=function(A,B){if(YAHOO.lang.isArray(B)&&YAHOO.lang.isArray(this.responseSchema.fields)){var J={results:[]};var G=this.responseSchema.fields;for(var E=B.length-1;E>-1;E--){var F={};for(var C=G.length-1;C>-1;C--){var H=G[C];var I=(YAHOO.lang.isValue(H.key))?H.key:H;var D=(YAHOO.lang.isValue(B[E][C]))?B[E][C]:B[E][I];if(!H.parser&&H.converter){H.parser=H.converter;}if(H.parser){D=H.parser.call(this,D);}if(D===undefined){D=null;}F[I]=D;}J.results.unshift(F);}return J;}else{return null;}};YAHOO.util.DataSource.prototype.parseTextData=function(A,B){var P={};if(YAHOO.lang.isString(B)&&YAHOO.lang.isArray(this.responseSchema.fields)&&YAHOO.lang.isString(this.responseSchema.recordDelim)&&YAHOO.lang.isString(this.responseSchema.fieldDelim)){P.results=[];var M=this.responseSchema.recordDelim;var G=this.responseSchema.fieldDelim;var J=this.responseSchema.fields;if(B.length>0){var C=B.length-M.length;if(B.substr(C)==M){B=B.substr(0,C);}var Q=B.split(M);for(var F=Q.length-1;F>-1;F--){var I={};var K=false;for(var D=J.length-1;D>-1;D--){try{var H=Q[F].split(G);var E=H[D];if(E.charAt(0)=="\""){E=E.substr(1);}if(E.charAt(E.length-1)=="\""){E=E.substr(0,E.length-1);}var N=J[D];var O=(YAHOO.lang.isValue(N.key))?N.key:N;if(!N.parser&&N.converter){N.parser=N.converter;}if(N.parser){E=N.parser.call(this,E);}if(E===undefined){E=null;}I[O]=E;}catch(L){K=true;}}if(!K){P.results.unshift(I);}}}}else{P.error=true;}return P;};YAHOO.util.DataSource.prototype.parseXMLData=function(A,C){var I=false;var N={};var D=null;try{D=(this.responseSchema.resultNode)?C.getElementsByTagName(this.responseSchema.resultNode):null;}catch(J){}if(!D||!YAHOO.lang.isArray(this.responseSchema.fields)){I=true;}else{N.results=[];for(var F=D.length-1;F>=0;F--){var O=D.item(F);var H={};for(var E=this.responseSchema.fields.length-1;E>=0;E--){var K=this.responseSchema.fields[E];var M=(YAHOO.lang.isValue(K.key))?K.key:K;var G=null;var B=O.attributes.getNamedItem(M);if(B){G=B.value;}else{var L=O.getElementsByTagName(M);if(L&&L.item(0)&&L.item(0).firstChild){G=L.item(0).firstChild.nodeValue;}else{G="";}}if(!K.parser&&K.converter){K.parser=K.converter;}if(K.parser){G=K.parser.call(this,G);}if(G===undefined){G=null;}H[M]=G;}N.results.unshift(H);}}if(I){N.error=true;}else{}return N;};YAHOO.util.DataSource.prototype.parseJSONData=function(oRequest,oRawResponse){var oParsedResponse={};if(oRawResponse&&YAHOO.lang.isArray(this.responseSchema.fields)){var fields=this.responseSchema.fields;var bError=false;oParsedResponse.results=[];var jsonObj,jsonList;if(YAHOO.lang.isString(oRawResponse)){var isNotMac=(navigator.userAgent.toLowerCase().indexOf("khtml")==-1);if(oRawResponse.parseJSON&&isNotMac){jsonObj=oRawResponse.parseJSON();if(!jsonObj){bError=true;}}else{if(YAHOO.lang.JSON&&isNotMac){jsonObj=YAHOO.lang.JSON.parse(oRawResponse);if(!jsonObj){bError=true;}}else{if(window.JSON&&JSON.parse&&isNotMac){jsonObj=JSON.parse(oRawResponse);if(!jsonObj){bError=true;}}else{try{while(oRawResponse.length>0&&(oRawResponse.charAt(0)!="{")&&(oRawResponse.charAt(0)!="[")){oRawResponse=oRawResponse.substring(1,oRawResponse.length);}if(oRawResponse.length>0){var objEnd=Math.max(oRawResponse.lastIndexOf("]"),oRawResponse.lastIndexOf("}"));oRawResponse=oRawResponse.substring(0,objEnd+1);jsonObj=eval("("+oRawResponse+")");if(!jsonObj){bError=true;}}else{jsonObj=null;bError=true;}}catch(e){bError=true;}}}}}else{if(oRawResponse.constructor==Object){jsonObj=oRawResponse;}else{bError=true;}}if(jsonObj&&jsonObj.constructor==Object){try{jsonList=eval("jsonObj."+this.responseSchema.resultsList);}catch(e){bError=true;}}if(bError||!jsonList){oParsedResponse.error=true;}if(jsonList&&!YAHOO.lang.isArray(jsonList)){jsonList=[jsonList];}else{if(!jsonList){jsonList=[];}}for(var i=jsonList.length-1;i>=0;i--){var oResult={};var jsonResult=jsonList[i];for(var j=fields.length-1;j>=0;j--){var field=fields[j];var key=(YAHOO.lang.isValue(field.key))?field.key:field;var data=eval("jsonResult."+key);if(!field.parser&&field.converter){field.parser=field.converter;}if(field.parser){data=field.parser.call(this,data); }if(data===undefined){data=null;}oResult[key]=data;}oParsedResponse.results.unshift(oResult);}}else{oParsedResponse.error=true;}return oParsedResponse;};YAHOO.util.DataSource.prototype.parseHTMLTableData=function(B,C){var K=false;var L=C;var J=this.responseSchema.fields;var O={};O.results=[];for(var H=0;H-1;F--){var A=D.rows[F];var I={};for(var E=J.length-1;E>-1;E--){var M=J[E];var N=(YAHOO.lang.isValue(M.key))?M.key:M;var G=A.cells[E].innerHTML;if(!M.parser&&M.converter){M.parser=M.converter;}if(M.parser){G=M.parser.call(this,G);}if(G===undefined){G=null;}I[N]=G;}O.results.unshift(I);}}if(K){O.error=true;}else{}return O;};YAHOO.util.Number={format:function(B,E){E=E||{};if(!YAHOO.lang.isNumber(B)){B*=1;}if(YAHOO.lang.isNumber(B)){var I=B+"";var F=(E.decimalSeparator)?E.decimalSeparator:".";var G;if(YAHOO.lang.isNumber(E.decimalPlaces)){var H=E.decimalPlaces;var C=Math.pow(10,H);I=Math.round(B*C)/C+"";G=I.lastIndexOf(".");if(H>0){if(G<0){I+=F;G=I.length-1;}else{if(F!=="."){I=I.replace(".",F);}}while((I.length-1-G)-1)?G:I.length;var J=I.substring(G);var A=-1;for(var D=G;D>0;D--){A++;if((A%3===0)&&(D!==G)){J=K+J;}J=I.charAt(D-1)+J;}I=J;}I=(E.prefix)?E.prefix+I:I;I=(E.suffix)?I+E.suffix:I;return I;}else{return B;}}};YAHOO.util.Date={format:function(C,B){B=B||{};if(C instanceof Date){var D=B.format||"MM/DD/YYYY";var E=C.getMonth()+1;var A=C.getDate();var F=C.getFullYear();switch(D){case"YYYY/MM/DD":return F+"/"+E+"/"+A;case"DD/MM/YYYY":return A+"/"+E+"/"+F;default:return E+"/"+A+"/"+F;}}else{return YAHOO.lang.isValue(C)?C:"";}}};YAHOO.register("datasource",YAHOO.util.DataSource,{version:"2.4.1",build:"742"});