Commit 0e77fa23a5d079de94ebae618da1b7189b5b2ec0
1 parent
e114bd6c
Exists in
master
and in
7 other branches
Correção na verificação de erros de timeout
Showing
7 changed files
with
2947 additions
and
238 deletions
Show diff stats
ferramentas/buscafotos/funcoes.php
| ... | ... | @@ -4,6 +4,7 @@ require_once("../../classesphp/pega_variaveis.php"); |
| 4 | 4 | require_once("../../pacotes/cpaint/cpaint2.inc.php"); |
| 5 | 5 | require_once("../../ms_configura.php"); |
| 6 | 6 | require_once("../../pacotes/phpflickr/phpFlickr.php"); |
| 7 | +error_reporting(0); | |
| 7 | 8 | $cp = new cpaint(); |
| 8 | 9 | if($funcao == "listafotosflickr") |
| 9 | 10 | {$cp->register('listafotosflickr');} |
| ... | ... | @@ -33,6 +34,8 @@ function listafotospanoramio() |
| 33 | 34 | global $ret, $cp,$ai,$af; |
| 34 | 35 | $ret = explode(" ",$ret); |
| 35 | 36 | $resultado = ""; |
| 37 | + //echo "http://www.panoramio.com/map/get_panoramas.php?order=upload_date&set=public&from=".$ai."&to=".$af."&minx=".$ret[0]."&miny=".$ret[1]."&maxx=".$ret[2]."&maxy=".$ret[3]."&size=thumbnail"; | |
| 38 | + //return; | |
| 36 | 39 | $recent = file_get_contents("http://www.panoramio.com/map/get_panoramas.php?order=upload_date&set=public&from=".$ai."&to=".$af."&minx=".$ret[0]."&miny=".$ret[1]."&maxx=".$ret[2]."&maxy=".$ret[3]."&size=thumbnail"); |
| 37 | 40 | $recent = str_replace("\n","",$recent); |
| 38 | 41 | $recent = str_replace("'","",$recent); | ... | ... |
ferramentas/buscafotos/index.htm
| ... | ... | @@ -21,17 +21,17 @@ |
| 21 | 21 | De qualquer forma, são mostrados no máximo 250 registros. |
| 22 | 22 | O ano diz respeito a inclusão da foto no Flickr |
| 23 | 23 | <p>Texto: <input style='cursor:text' class=digitar type=text size=30 value="" id='texto' /> |
| 24 | - <p>Ano inicial: <input style='cursor:text' class=digitar type=text size=10 value="2008" id='ai' /> | |
| 25 | - Ano final: <input style='cursor:text' class=digitar type=text size=10 value="2008" id='af' /> | |
| 24 | + <p>Ano inicial: <input style='cursor:text' class=digitar type=text size=10 value="2009" id='ai' /> | |
| 25 | + Ano final: <input style='cursor:text' class=digitar type=text size=10 value="2009" id='af' /> | |
| 26 | 26 | </div> |
| 27 | 27 | <div style=width:350px > |
| 28 | 28 | <span style=width:30px onclick='busca("1")' ><input id=botao2 size=20 type=button value='Procurar fotos' /></span> |
| 29 | 29 | <input type=radio onclick="esconde(this)" name=buscador value=flickr id=buscaflickr /><a href="http://www.flickr.com" target="_blank" >Flickr</a> |
| 30 | - <input type=radio onclick="esconde(this)" name=buscador value=panoramio id=buscapanoramio checked /><a href="http://www.panoramio.com" target="_blank" >Panoramio</a> | |
| 30 | + <input type=radio onclick="esconde(this)" name=buscador value=panoramio id=buscapanoramio /><a href="http://www.panoramio.com" target="_blank" >Panoramio</a> | |
| 31 | 31 | <input type=radio onclick="esconde(this)" name=buscador value=panoramio id=buscalocr /><a href="http://www.locr.com" target="_blank" >Locr</a> |
| 32 | 32 | </div> |
| 33 | 33 | <div id="paginas" style="top:10px;"></div><br> |
| 34 | - <div style="top:0px;left:5px;display:block;width:90%;height:150px;overflow:auto" id="resultadofotos" >Aguarde...</div> | |
| 34 | + <div style="top:0px;left:5px;display:block;width:90%;height:150px;overflow:auto" id="resultadofotos" ></div> | |
| 35 | 35 | </div> |
| 36 | 36 | <script type="text/javascript"> |
| 37 | 37 | //chave de acesso ao flicker | ... | ... |
ferramentas/buscafotos/index.js
| ... | ... | @@ -38,7 +38,7 @@ function mostramenu() |
| 38 | 38 | { |
| 39 | 39 | $i("mensagem").style.display="none" |
| 40 | 40 | $i("busca").style.display="block" |
| 41 | - busca(1) | |
| 41 | + //busca(1) | |
| 42 | 42 | } |
| 43 | 43 | function busca(pagina) |
| 44 | 44 | { |
| ... | ... | @@ -98,6 +98,8 @@ function busca(pagina) |
| 98 | 98 | function listafotospanoramio(retorno) |
| 99 | 99 | { |
| 100 | 100 | aguarde("none") |
| 101 | + if (retorno.data==undefined ) | |
| 102 | + {$i("resultadofotos").innerHTML = "Erro. A operação demorou muito.";return;} | |
| 101 | 103 | $i("resultadofotos").style.height = "335px" |
| 102 | 104 | eval("var data = "+retorno.data) |
| 103 | 105 | if(!retorno.data) |
| ... | ... | @@ -137,6 +139,8 @@ function listafotospanoramio(retorno) |
| 137 | 139 | function listafotosflickr(retorno) |
| 138 | 140 | { |
| 139 | 141 | aguarde("none") |
| 142 | + if (retorno.data==undefined ) | |
| 143 | + {$i("resultadofotos").innerHTML = "Erro. A operação demorou muito.";return;} | |
| 140 | 144 | $i("resultadofotos").style.height = "150px" |
| 141 | 145 | if((!retorno.data) || (retorno.data == "")) |
| 142 | 146 | {ins = "<br><span style=color:red>Problemas no acesso aos dados!</span><br><br>";$i("resultadofotos").innerHTML = ins;return;} |
| ... | ... | @@ -172,6 +176,8 @@ function listafotosflickr(retorno) |
| 172 | 176 | function listafotoslocr(retorno) |
| 173 | 177 | { |
| 174 | 178 | aguarde("none") |
| 179 | + if (retorno.data==undefined ) | |
| 180 | + {$i("resultadofotos").innerHTML = "Erro. A operação demorou muito.";return;} | |
| 175 | 181 | $i("resultadofotos").style.height = "340px" |
| 176 | 182 | eval("var data = "+retorno.data) |
| 177 | 183 | if(!retorno.data) | ... | ... |
ferramentas/i3geo_tudo_compacto.js
| ... | ... | @@ -5180,119 +5180,1468 @@ YAHOO.util.Event.purgeElement(D,true);D.innerHTML="";for(var C in this){if(YAHOO |
| 5180 | 5180 | this._toggleContainer(false);};YAHOO.widget.AutoComplete.prototype._jumpSelection=function(){if(this._oCurItem){this._selectItem(this._oCurItem);}else{this._toggleContainer(false);}};YAHOO.widget.AutoComplete.prototype._moveSelection=function(G){if(this._bContainerOpen){var E=this._oCurItem;var F=-1;if(E){F=E._nItemIndex;}var D=(G==40)?(F+1):(F-1);if(D<-2||D>=this._nDisplayedItems){return ;}if(E){this._toggleHighlight(E,"from");this.itemArrowFromEvent.fire(this,E);}if(D==-1){if(this.delimChar&&this._sSavedQuery){if(!this._textMatchesOption()){this._elTextbox.value=this._sSavedQuery;}else{this._elTextbox.value=this._sSavedQuery+this._sCurQuery;}}else{this._elTextbox.value=this._sCurQuery;}this._oCurItem=null;return ;}if(D==-2){this._toggleContainer(false);return ;}var C=this._aListItems[D];var A=this._elContent;var B=((YAHOO.util.Dom.getStyle(A,"overflow")=="auto")||(YAHOO.util.Dom.getStyle(A,"overflowY")=="auto"));if(B&&(D>-1)&&(D<this._nDisplayedItems)){if(G==40){if((C.offsetTop+C.offsetHeight)>(A.scrollTop+A.offsetHeight)){A.scrollTop=(C.offsetTop+C.offsetHeight)-A.offsetHeight;}else{if((C.offsetTop+C.offsetHeight)<A.scrollTop){A.scrollTop=C.offsetTop;}}}else{if(C.offsetTop<A.scrollTop){this._elContent.scrollTop=C.offsetTop;}else{if(C.offsetTop>(A.scrollTop+A.offsetHeight)){this._elContent.scrollTop=(C.offsetTop+C.offsetHeight)-A.offsetHeight;}}}}this._toggleHighlight(C,"to");this.itemArrowToEvent.fire(this,C);if(this.typeAhead){this._updateValue(C);}}};YAHOO.widget.AutoComplete.prototype._onItemMouseover=function(A,B){if(B.prehighlightClassName){B._togglePrehighlight(this,"mouseover");}else{B._toggleHighlight(this,"to");}B.itemMouseOverEvent.fire(B,this);};YAHOO.widget.AutoComplete.prototype._onItemMouseout=function(A,B){if(B.prehighlightClassName){B._togglePrehighlight(this,"mouseout");}else{B._toggleHighlight(this,"from");}B.itemMouseOutEvent.fire(B,this);};YAHOO.widget.AutoComplete.prototype._onItemMouseclick=function(A,B){B._toggleHighlight(this,"to");B._selectItem(this);};YAHOO.widget.AutoComplete.prototype._onContainerMouseover=function(A,B){B._bOverContainer=true;};YAHOO.widget.AutoComplete.prototype._onContainerMouseout=function(A,B){B._bOverContainer=false;if(B._oCurItem){B._toggleHighlight(B._oCurItem,"to");}};YAHOO.widget.AutoComplete.prototype._onContainerScroll=function(A,B){B._elTextbox.focus();};YAHOO.widget.AutoComplete.prototype._onContainerResize=function(A,B){B._toggleContainerHelpers(B._bContainerOpen);};YAHOO.widget.AutoComplete.prototype._onTextboxKeyDown=function(A,B){var C=A.keyCode;switch(C){case 9:if((navigator.userAgent.toLowerCase().indexOf("mac")==-1)){if(B._oCurItem){if(B.delimChar&&(B._nKeyCode!=C)){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._oCurItem);}else{B._toggleContainer(false);}}break;case 13:if((navigator.userAgent.toLowerCase().indexOf("mac")==-1)){if(B._oCurItem){if(B._nKeyCode!=C){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._oCurItem);}else{B._toggleContainer(false);}}break;case 27:B._toggleContainer(false);return ;case 39:B._jumpSelection();break;case 38:YAHOO.util.Event.stopEvent(A);B._moveSelection(C);break;case 40:YAHOO.util.Event.stopEvent(A);B._moveSelection(C);break;default:break;}};YAHOO.widget.AutoComplete.prototype._onTextboxKeyPress=function(A,B){var C=A.keyCode;if((navigator.userAgent.toLowerCase().indexOf("mac")!=-1)){switch(C){case 9:if(B._oCurItem){if(B.delimChar&&(B._nKeyCode!=C)){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._oCurItem);}else{B._toggleContainer(false);}break;case 13:if(B._oCurItem){if(B._nKeyCode!=C){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._oCurItem);}else{B._toggleContainer(false);}break;default:break;}}else{if(C==229){B._queryInterval=setInterval(function(){B._onIMEDetected(B);},500);}}};YAHOO.widget.AutoComplete.prototype._onTextboxKeyUp=function(B,D){D._initProps();var E=B.keyCode;D._nKeyCode=E;var C=this.value;if(D._isIgnoreKey(E)||(C.toLowerCase()==D._sCurQuery)){return ;}else{D._bItemSelected=false;YAHOO.util.Dom.removeClass(D._oCurItem,D.highlightClassName);D._oCurItem=null;D.textboxKeyEvent.fire(D,E);}if(D.queryDelay>0){var A=setTimeout(function(){D._sendQuery(C);},(D.queryDelay*1000));if(D._nDelayID!=-1){clearTimeout(D._nDelayID);}D._nDelayID=A;}else{D._sendQuery(C);}};YAHOO.widget.AutoComplete.prototype._onTextboxFocus=function(A,B){B._elTextbox.setAttribute("autocomplete","off");B._bFocused=true;if(!B._bItemSelected){B.textboxFocusEvent.fire(B);}};YAHOO.widget.AutoComplete.prototype._onTextboxBlur=function(A,B){if(!B._bOverContainer||(B._nKeyCode==9)){if(!B._bItemSelected){var C=B._textMatchesOption();if(!B._bContainerOpen||(B._bContainerOpen&&(C===null))){if(B.forceSelection){B._clearSelection();}else{B.unmatchedItemSelectEvent.fire(B);}}else{if(B.forceSelection){B._selectItem(C);}}}if(B._bContainerOpen){B._toggleContainer(false);}B._cancelIntervalDetection(B);B._bFocused=false;B.textboxBlurEvent.fire(B);}};YAHOO.widget.AutoComplete.prototype._onWindowUnload=function(A,B){if(B&&B._elTextbox&&B.allowBrowserAutocomplete){B._elTextbox.setAttribute("autocomplete","on");}};YAHOO.widget.DataSource=function(){};YAHOO.widget.DataSource.ERROR_DATANULL="Response data was null";YAHOO.widget.DataSource.ERROR_DATAPARSE="Response data could not be parsed";YAHOO.widget.DataSource.prototype.maxCacheEntries=15;YAHOO.widget.DataSource.prototype.queryMatchContains=false;YAHOO.widget.DataSource.prototype.queryMatchSubset=false;YAHOO.widget.DataSource.prototype.queryMatchCase=false;YAHOO.widget.DataSource.prototype.toString=function(){return"DataSource "+this._sName;};YAHOO.widget.DataSource.prototype.getResults=function(A,D,B){var C=this._doQueryCache(A,D,B);if(C.length===0){this.queryEvent.fire(this,B,D);this.doQuery(A,D,B);}};YAHOO.widget.DataSource.prototype.doQuery=function(A,C,B){};YAHOO.widget.DataSource.prototype.flushCache=function(){if(this._aCache){this._aCache=[];}if(this._aCacheHelper){this._aCacheHelper=[]; |
| 5181 | 5181 | }this.cacheFlushEvent.fire(this);};YAHOO.widget.DataSource.prototype.queryEvent=null;YAHOO.widget.DataSource.prototype.cacheQueryEvent=null;YAHOO.widget.DataSource.prototype.getResultsEvent=null;YAHOO.widget.DataSource.prototype.getCachedResultsEvent=null;YAHOO.widget.DataSource.prototype.dataErrorEvent=null;YAHOO.widget.DataSource.prototype.cacheFlushEvent=null;YAHOO.widget.DataSource._nIndex=0;YAHOO.widget.DataSource.prototype._sName=null;YAHOO.widget.DataSource.prototype._aCache=null;YAHOO.widget.DataSource.prototype._init=function(){var A=this.maxCacheEntries;if(!YAHOO.lang.isNumber(A)||(A<0)){A=0;}if(A>0&&!this._aCache){this._aCache=[];}this._sName="instance"+YAHOO.widget.DataSource._nIndex;YAHOO.widget.DataSource._nIndex++;this.queryEvent=new YAHOO.util.CustomEvent("query",this);this.cacheQueryEvent=new YAHOO.util.CustomEvent("cacheQuery",this);this.getResultsEvent=new YAHOO.util.CustomEvent("getResults",this);this.getCachedResultsEvent=new YAHOO.util.CustomEvent("getCachedResults",this);this.dataErrorEvent=new YAHOO.util.CustomEvent("dataError",this);this.cacheFlushEvent=new YAHOO.util.CustomEvent("cacheFlush",this);};YAHOO.widget.DataSource.prototype._addCacheElem=function(B){var A=this._aCache;if(!A||!B||!B.query||!B.results){return ;}if(A.length>=this.maxCacheEntries){A.shift();}A.push(B);};YAHOO.widget.DataSource.prototype._doQueryCache=function(A,I,N){var H=[];var G=false;var J=this._aCache;var F=(J)?J.length:0;var K=this.queryMatchContains;var D;if((this.maxCacheEntries>0)&&J&&(F>0)){this.cacheQueryEvent.fire(this,N,I);if(!this.queryMatchCase){D=I;I=I.toLowerCase();}for(var P=F-1;P>=0;P--){var E=J[P];var B=E.results;var C=(!this.queryMatchCase)?encodeURIComponent(E.query).toLowerCase():encodeURIComponent(E.query);if(C==I){G=true;H=B;if(P!=F-1){J.splice(P,1);this._addCacheElem(E);}break;}else{if(this.queryMatchSubset){for(var O=I.length-1;O>=0;O--){var R=I.substr(0,O);if(C==R){G=true;for(var M=B.length-1;M>=0;M--){var Q=B[M];var L=(this.queryMatchCase)?encodeURIComponent(Q[0]).indexOf(I):encodeURIComponent(Q[0]).toLowerCase().indexOf(I);if((!K&&(L===0))||(K&&(L>-1))){H.unshift(Q);}}E={};E.query=I;E.results=H;this._addCacheElem(E);break;}}if(G){break;}}}}if(G){this.getCachedResultsEvent.fire(this,N,D,H);A(D,H,N);}}return H;};YAHOO.widget.DS_XHR=function(C,A,D){if(D&&(D.constructor==Object)){for(var B in D){this[B]=D[B];}}if(!YAHOO.lang.isArray(A)||!YAHOO.lang.isString(C)){return ;}this.schema=A;this.scriptURI=C;this._init();};YAHOO.widget.DS_XHR.prototype=new YAHOO.widget.DataSource();YAHOO.widget.DS_XHR.TYPE_JSON=0;YAHOO.widget.DS_XHR.TYPE_XML=1;YAHOO.widget.DS_XHR.TYPE_FLAT=2;YAHOO.widget.DS_XHR.ERROR_DATAXHR="XHR response failed";YAHOO.widget.DS_XHR.prototype.connMgr=YAHOO.util.Connect;YAHOO.widget.DS_XHR.prototype.connTimeout=0;YAHOO.widget.DS_XHR.prototype.scriptURI=null;YAHOO.widget.DS_XHR.prototype.scriptQueryParam="query";YAHOO.widget.DS_XHR.prototype.scriptQueryAppend="";YAHOO.widget.DS_XHR.prototype.responseType=YAHOO.widget.DS_XHR.TYPE_JSON;YAHOO.widget.DS_XHR.prototype.responseStripAfter="\n<!-";YAHOO.widget.DS_XHR.prototype.doQuery=function(E,G,B){var J=(this.responseType==YAHOO.widget.DS_XHR.TYPE_XML);var D=this.scriptURI+"?"+this.scriptQueryParam+"="+G;if(this.scriptQueryAppend.length>0){D+="&"+this.scriptQueryAppend;}var C=null;var F=this;var I=function(K){if(!F._oConn||(K.tId!=F._oConn.tId)){F.dataErrorEvent.fire(F,B,G,YAHOO.widget.DataSource.ERROR_DATANULL);return ;}for(var N in K){}if(!J){K=K.responseText;}else{K=K.responseXML;}if(K===null){F.dataErrorEvent.fire(F,B,G,YAHOO.widget.DataSource.ERROR_DATANULL);return ;}var M=F.parseResponse(G,K,B);var L={};L.query=decodeURIComponent(G);L.results=M;if(M===null){F.dataErrorEvent.fire(F,B,G,YAHOO.widget.DataSource.ERROR_DATAPARSE);M=[];}else{F.getResultsEvent.fire(F,B,G,M);F._addCacheElem(L);}E(G,M,B);};var A=function(K){F.dataErrorEvent.fire(F,B,G,YAHOO.widget.DS_XHR.ERROR_DATAXHR);return ;};var H={success:I,failure:A};if(YAHOO.lang.isNumber(this.connTimeout)&&(this.connTimeout>0)){H.timeout=this.connTimeout;}if(this._oConn){this.connMgr.abort(this._oConn);}F._oConn=this.connMgr.asyncRequest("GET",D,H,null);};YAHOO.widget.DS_XHR.prototype.parseResponse=function(sQuery,oResponse,oParent){var aSchema=this.schema;var aResults=[];var bError=false;var nEnd=((this.responseStripAfter!=="")&&(oResponse.indexOf))?oResponse.indexOf(this.responseStripAfter):-1;if(nEnd!=-1){oResponse=oResponse.substring(0,nEnd);}switch(this.responseType){case YAHOO.widget.DS_XHR.TYPE_JSON:var jsonList,jsonObjParsed;if(YAHOO.lang.JSON){jsonObjParsed=YAHOO.lang.JSON.parse(oResponse);if(!jsonObjParsed){bError=true;break;}else{try{jsonList=eval("jsonObjParsed."+aSchema[0]);}catch(e){bError=true;break;}}}else{if(oResponse.parseJSON){jsonObjParsed=oResponse.parseJSON();if(!jsonObjParsed){bError=true;}else{try{jsonList=eval("jsonObjParsed."+aSchema[0]);}catch(e){bError=true;break;}}}else{if(window.JSON){jsonObjParsed=JSON.parse(oResponse);if(!jsonObjParsed){bError=true;break;}else{try{jsonList=eval("jsonObjParsed."+aSchema[0]);}catch(e){bError=true;break;}}}else{try{while(oResponse.substring(0,1)==" "){oResponse=oResponse.substring(1,oResponse.length);}if(oResponse.indexOf("{")<0){bError=true;break;}if(oResponse.indexOf("{}")===0){break;}var jsonObjRaw=eval("("+oResponse+")");if(!jsonObjRaw){bError=true;break;}jsonList=eval("(jsonObjRaw."+aSchema[0]+")");}catch(e){bError=true;break;}}}}if(!jsonList){bError=true;break;}if(!YAHOO.lang.isArray(jsonList)){jsonList=[jsonList];}for(var i=jsonList.length-1;i>=0;i--){var aResultItem=[];var jsonResult=jsonList[i];for(var j=aSchema.length-1;j>=1;j--){var dataFieldValue=jsonResult[aSchema[j]];if(!dataFieldValue){dataFieldValue="";}aResultItem.unshift(dataFieldValue);}if(aResultItem.length==1){aResultItem.push(jsonResult);}aResults.unshift(aResultItem);}break;case YAHOO.widget.DS_XHR.TYPE_XML:var xmlList=oResponse.getElementsByTagName(aSchema[0]);if(!xmlList){bError=true;break;}for(var k=xmlList.length-1;k>=0;k--){var result=xmlList.item(k); |
| 5182 | 5182 | var aFieldSet=[];for(var m=aSchema.length-1;m>=1;m--){var sValue=null;var xmlAttr=result.attributes.getNamedItem(aSchema[m]);if(xmlAttr){sValue=xmlAttr.value;}else{var xmlNode=result.getElementsByTagName(aSchema[m]);if(xmlNode&&xmlNode.item(0)&&xmlNode.item(0).firstChild){sValue=xmlNode.item(0).firstChild.nodeValue;}else{sValue="";}}aFieldSet.unshift(sValue);}aResults.unshift(aFieldSet);}break;case YAHOO.widget.DS_XHR.TYPE_FLAT:if(oResponse.length>0){var newLength=oResponse.length-aSchema[0].length;if(oResponse.substr(newLength)==aSchema[0]){oResponse=oResponse.substr(0,newLength);}if(oResponse.length>0){var aRecords=oResponse.split(aSchema[0]);for(var n=aRecords.length-1;n>=0;n--){if(aRecords[n].length>0){aResults[n]=aRecords[n].split(aSchema[1]);}}}}break;default:break;}sQuery=null;oResponse=null;oParent=null;if(bError){return null;}else{return aResults;}};YAHOO.widget.DS_XHR.prototype._oConn=null;YAHOO.widget.DS_ScriptNode=function(D,A,C){if(C&&(C.constructor==Object)){for(var B in C){this[B]=C[B];}}if(!YAHOO.lang.isArray(A)||!YAHOO.lang.isString(D)){return ;}this.schema=A;this.scriptURI=D;this._init();};YAHOO.widget.DS_ScriptNode.prototype=new YAHOO.widget.DataSource();YAHOO.widget.DS_ScriptNode.prototype.getUtility=YAHOO.util.Get;YAHOO.widget.DS_ScriptNode.prototype.scriptURI=null;YAHOO.widget.DS_ScriptNode.prototype.scriptQueryParam="query";YAHOO.widget.DS_ScriptNode.prototype.asyncMode="allowAll";YAHOO.widget.DS_ScriptNode.prototype.scriptCallbackParam="callback";YAHOO.widget.DS_ScriptNode.callbacks=[];YAHOO.widget.DS_ScriptNode._nId=0;YAHOO.widget.DS_ScriptNode._nPending=0;YAHOO.widget.DS_ScriptNode.prototype.doQuery=function(A,F,C){var B=this;if(YAHOO.widget.DS_ScriptNode._nPending===0){YAHOO.widget.DS_ScriptNode.callbacks=[];YAHOO.widget.DS_ScriptNode._nId=0;}var E=YAHOO.widget.DS_ScriptNode._nId;YAHOO.widget.DS_ScriptNode._nId++;YAHOO.widget.DS_ScriptNode.callbacks[E]=function(G){if((B.asyncMode!=="ignoreStaleResponses")||(E===YAHOO.widget.DS_ScriptNode.callbacks.length-1)){B.handleResponse(G,A,F,C);}else{}delete YAHOO.widget.DS_ScriptNode.callbacks[E];};YAHOO.widget.DS_ScriptNode._nPending++;var D=this.scriptURI+"&"+this.scriptQueryParam+"="+F+"&"+this.scriptCallbackParam+"=YAHOO.widget.DS_ScriptNode.callbacks["+E+"]";this.getUtility.script(D,{autopurge:true,onsuccess:YAHOO.widget.DS_ScriptNode._bumpPendingDown,onfail:YAHOO.widget.DS_ScriptNode._bumpPendingDown});};YAHOO.widget.DS_ScriptNode.prototype.handleResponse=function(oResponse,oCallbackFn,sQuery,oParent){var aSchema=this.schema;var aResults=[];var bError=false;var jsonList,jsonObjParsed;try{jsonList=eval("(oResponse."+aSchema[0]+")");}catch(e){bError=true;}if(!jsonList){bError=true;jsonList=[];}else{if(!YAHOO.lang.isArray(jsonList)){jsonList=[jsonList];}}for(var i=jsonList.length-1;i>=0;i--){var aResultItem=[];var jsonResult=jsonList[i];for(var j=aSchema.length-1;j>=1;j--){var dataFieldValue=jsonResult[aSchema[j]];if(!dataFieldValue){dataFieldValue="";}aResultItem.unshift(dataFieldValue);}if(aResultItem.length==1){aResultItem.push(jsonResult);}aResults.unshift(aResultItem);}if(bError){aResults=null;}if(aResults===null){this.dataErrorEvent.fire(this,oParent,sQuery,YAHOO.widget.DataSource.ERROR_DATAPARSE);aResults=[];}else{var resultObj={};resultObj.query=decodeURIComponent(sQuery);resultObj.results=aResults;this._addCacheElem(resultObj);this.getResultsEvent.fire(this,oParent,sQuery,aResults);}oCallbackFn(sQuery,aResults,oParent);};YAHOO.widget.DS_ScriptNode._bumpPendingDown=function(){YAHOO.widget.DS_ScriptNode._nPending--;};YAHOO.widget.DS_JSFunction=function(A,C){if(C&&(C.constructor==Object)){for(var B in C){this[B]=C[B];}}if(!YAHOO.lang.isFunction(A)){return ;}else{this.dataFunction=A;this._init();}};YAHOO.widget.DS_JSFunction.prototype=new YAHOO.widget.DataSource();YAHOO.widget.DS_JSFunction.prototype.dataFunction=null;YAHOO.widget.DS_JSFunction.prototype.doQuery=function(C,F,D){var B=this.dataFunction;var E=[];E=B(F);if(E===null){this.dataErrorEvent.fire(this,D,F,YAHOO.widget.DataSource.ERROR_DATANULL);return ;}var A={};A.query=decodeURIComponent(F);A.results=E;this._addCacheElem(A);this.getResultsEvent.fire(this,D,F,E);C(F,E,D);return ;};YAHOO.widget.DS_JSArray=function(A,C){if(C&&(C.constructor==Object)){for(var B in C){this[B]=C[B];}}if(!YAHOO.lang.isArray(A)){return ;}else{this.data=A;this._init();}};YAHOO.widget.DS_JSArray.prototype=new YAHOO.widget.DataSource();YAHOO.widget.DS_JSArray.prototype.data=null;YAHOO.widget.DS_JSArray.prototype.doQuery=function(E,I,A){var F;var C=this.data;var J=[];var D=false;var B=this.queryMatchContains;if(I){if(!this.queryMatchCase){I=I.toLowerCase();}for(F=C.length-1;F>=0;F--){var H=[];if(YAHOO.lang.isString(C[F])){H[0]=C[F];}else{if(YAHOO.lang.isArray(C[F])){H=C[F];}}if(YAHOO.lang.isString(H[0])){var G=(this.queryMatchCase)?encodeURIComponent(H[0]).indexOf(I):encodeURIComponent(H[0]).toLowerCase().indexOf(I);if((!B&&(G===0))||(B&&(G>-1))){J.unshift(H);}}}}else{for(F=C.length-1;F>=0;F--){if(YAHOO.lang.isString(C[F])){J.unshift([C[F]]);}else{if(YAHOO.lang.isArray(C[F])){J.unshift(C[F]);}}}}this.getResultsEvent.fire(this,A,I,J);E(I,J,A);};YAHOO.register("autocomplete",YAHOO.widget.AutoComplete,{version:"2.5.2",build:"1076"}); |
| 5183 | -function cpaint(){this.version='2.0.3';var config=new Array();config['debugging']=-1;config['proxy_url']='';config['transfer_mode']='GET';config['async']=true;config['response_type']='OBJECT';config['persistent_connection']=false;config['use_cpaint_api']=true;var stack_count=0;this.capable=test_ajax_capability();this.set_debug=function(){if(typeof arguments[0]=='boolean'){if(arguments[0]===true){config['debugging']=1;}else{config['debugging']=0;}}else if(typeof arguments[0]=='number'){config['debugging']=Math.round(arguments[0]);}} | |
| 5184 | -this.set_proxy_url=function(){if(typeof arguments[0]=='string'){config['proxy_url']=arguments[0];}} | |
| 5185 | -this.set_transfer_mode=function(){if(arguments[0].toUpperCase()=='GET'||arguments[0].toUpperCase()=='POST'){config['transfer_mode']=arguments[0].toUpperCase();}} | |
| 5186 | -this.set_async=function(){if(typeof arguments[0]=='boolean'){config['async']=arguments[0];}} | |
| 5187 | -this.set_response_type=function(){if(arguments[0].toUpperCase()=='TEXT'||arguments[0].toUpperCase()=='XML'||arguments[0].toUpperCase()=='OBJECT'||arguments[0].toUpperCase()=='E4X'||arguments[0].toUpperCase()=='JSON'){config['response_type']=arguments[0].toUpperCase();}} | |
| 5188 | -this.set_persistent_connection=function(){if(typeof arguments[0]=='boolean'){config['persistent_connection']=arguments[0];}} | |
| 5189 | -this.set_use_cpaint_api=function(){if(typeof arguments[0]=='boolean'){config['use_cpaint_api']=arguments[0];}} | |
| 5190 | -function test_ajax_capability(){var cpc=new cpaint_call(0,config,this.version);return cpc.test_ajax_capability();} | |
| 5191 | -this.call=function(){var use_stack=-1;if(config['persistent_connection']==true&&__cpaint_stack[0]!=null){switch(__cpaint_stack[0].get_http_state()){case-1:use_stack=0;debug('no XMLHttpObject object to re-use for persistence, creating new one later',2);break;case 4:use_stack=0 | |
| 5192 | -debug('re-using the persistent connection',2);break;default:debug('the persistent connection is in use - skipping this request',2);}}else if(config['persistent_connection']==true){use_stack=0;__cpaint_stack[use_stack]=new cpaint_call(use_stack,config,this.version);debug('no cpaint_call object available for re-use, created new one',2);}else{use_stack=stack_count;__cpaint_stack[use_stack]=new cpaint_call(use_stack,config,this.version);debug('no cpaint_call object created new one',2);} | |
| 5193 | -if(use_stack!=-1){__cpaint_stack[use_stack].set_client_callback(arguments[2]);if(config['proxy_url']!=''){__cpaint_stack[use_stack].call_proxy(arguments);}else{__cpaint_stack[use_stack].call_direct(arguments);} | |
| 5194 | -stack_count++;debug('stack size: '+__cpaint_stack.length,2);}} | |
| 5195 | -var debug=function(message,debug_level){var prefix='[CPAINT Debug] ';if(debug_level<1){prefix='[CPAINT Error] ';} | |
| 5196 | -if(config['debugging']>=debug_level){alert(prefix+message);}if (message.search("error") > 1){client_callback("", message);}}} | |
| 5197 | -var __cpaint_stack=new Array();var __cpaint_transformer=new cpaint_transformer();function cpaint_call(){var version=arguments[2];var config=new Array();config['debugging']=arguments[1]['debugging'];config['proxy_url']=arguments[1]['proxy_url'];config['transfer_mode']=arguments[1]['transfer_mode'];config['async']=arguments[1]['async'];config['response_type']=arguments[1]['response_type'];config['persistent_connection']=arguments[1]['persistent_connection'];config['use_cpaint_api']=arguments[1]['use_cpaint_api'];var httpobj=false;var client_callback;var stack_id=arguments[0];this.set_client_callback=function(){if(typeof arguments[0]=='function'){client_callback=arguments[0];}} | |
| 5198 | -this.get_http_state=function(){var return_value=-1;if(typeof httpobj=='object'){return_value=httpobj.readyState;} | |
| 5199 | -return return_value;} | |
| 5200 | -this.call_direct=function(call_arguments){var url=call_arguments[0];var remote_method=call_arguments[1];var querystring='';var i=0;if(url=='SELF'){url=document.location.href;} | |
| 5201 | -if(config['use_cpaint_api']==true){for(i=3;i<call_arguments.length;i++){if((typeof call_arguments[i]=='string'&&call_arguments[i]!=''&&call_arguments[i].search(/^\s+$/g)==-1)&&!isNaN(call_arguments[i])&&isFinite(call_arguments[i])){querystring+='&cpaint_argument[]='+encodeURIComponent(JSON.stringify(Number(call_arguments[i])));}else{querystring+='&cpaint_argument[]='+encodeURIComponent(JSON.stringify(call_arguments[i]));}} | |
| 5202 | -querystring+='&cpaint_response_type='+config['response_type'];if(config['transfer_mode']=='GET'){if(url.indexOf('?')!=-1){url=url+'&cpaint_function='+remote_method+querystring;}else{url=url+'?cpaint_function='+remote_method+querystring;}}else{querystring='cpaint_function='+remote_method+querystring;}}else{for(i=3;i<call_arguments.length;i++){if(i==3){querystring+=encodeURIComponent(call_arguments[i]);}else{querystring+='&'+encodeURIComponent(call_arguments[i]);}} | |
| 5203 | -if(config['transfer_mode']=='GET'){url=url+querystring;}} | |
| 5204 | -get_connection_object();debug('opening connection to "'+url+'"',1);httpobj.open(config['transfer_mode'],url,config['async']);if(config['transfer_mode']=='POST'){try{httpobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}catch(cp_err){debug('POST cannot be completed due to incompatible browser. Use GET as your request method.',0);}} | |
| 5205 | -httpobj.setRequestHeader('X-Powered-By','CPAINT v'+version+' :: http://sf.net/projects/cpaint');httpobj.onreadystatechange=callback;if(config['transfer_mode']=='GET'){httpobj.send(null);}else{debug('sending query: '+querystring,1);httpobj.send(querystring);} | |
| 5206 | -if(config['async']==true){callback();}} | |
| 5207 | -this.call_proxy=function(call_arguments){var proxyscript=config['proxy_url'];var url=call_arguments[0];var remote_method=call_arguments[1];var querystring='';var i=0;var querystring_argument_prefix='cpaint_argument[]=';if(config['use_cpaint_api']==false){querystring_argument_prefix='';} | |
| 5208 | -for(i=3;i<call_arguments.length;i++){if(config['use_cpaint_api']==true){if((typeof call_arguments[i]=='string'&&call_arguments[i]!=''&&call_arguments[i].search(/^\s+$/g)==-1)&&!isNaN(call_arguments[i])&&isFinite(call_arguments[i])){querystring+=encodeURIComponent(querystring_argument_prefix+JSON.stringify(Number(call_arguments[i]))+'&');}else{querystring+=encodeURIComponent(querystring_argument_prefix+JSON.stringify(call_arguments[i])+'&');}}else{querystring+=encodeURIComponent(querystring_argument_prefix+call_arguments[i]+'&');}} | |
| 5209 | -if(config['use_cpaint_api']==true){querystring+=encodeURIComponent('&cpaint_function='+remote_method);querystring+=encodeURIComponent('&cpaint_responsetype='+config['response_type']);} | |
| 5210 | -if(config['transfer_mode']=='GET'){proxyscript+='?cpaint_remote_url='+encodeURIComponent(url) | |
| 5211 | -+'&cpaint_remote_query='+querystring | |
| 5212 | -+'&cpaint_remote_method='+config['transfer_mode'] | |
| 5213 | -+'&cpaint_response_type='+config['response_type'];}else{querystring='cpaint_remote_url='+encodeURIComponent(url) | |
| 5214 | -+'&cpaint_remote_query='+querystring | |
| 5215 | -+'&cpaint_remote_method='+config['transfer_mode'] | |
| 5216 | -+'&cpaint_response_type='+config['response_type'];} | |
| 5217 | -get_connection_object();debug('opening connection to proxy "'+proxyscript+'"',1);httpobj.open(config['transfer_mode'],proxyscript,config['async']);if(config['transfer_mode']=='POST'){try{httpobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}catch(cp_err){debug('POST cannot be completed due to incompatible browser. Use GET as your request method.',0);}} | |
| 5218 | -httpobj.setRequestHeader('X-Powered-By','CPAINT v'+version);httpobj.onreadystatechange=callback;if(config['transfer_mode']=='GET'){httpobj.send(null);}else{debug('sending query: '+querystring,1);httpobj.send(querystring);} | |
| 5219 | -if(config['async']==false){callback();}} | |
| 5220 | -this.test_ajax_capability=function(){return get_connection_object();} | |
| 5221 | -var get_connection_object=function(){var return_value=false;var new_connection=false;if(config['persistent_connection']==false){debug('Using new connection object',1);new_connection=true;}else{debug('Using shared connection object.',1);if(typeof httpobj!='object'){debug('Getting new persistent connection object.',1);new_connection=true;}} | |
| 5222 | -if(new_connection==true){try{httpobj=new XMLHttpRequest();}catch(e1){try{httpobj=new ActiveXObject('Msxml2.XMLHTTP');}catch(e){try{httpobj=new ActiveXObject('Microsoft.XMLHTTP');}catch(oc){httpobj=null;}}} | |
| 5223 | -if(!httpobj){debug('Could not create connection object',0);}else{return_value=true;}} | |
| 5224 | -if(httpobj.readyState!=4){httpobj.abort();} | |
| 5225 | -return return_value;} | |
| 5226 | -var callback=function(){var response=null;if(httpobj.readyState==4&&httpobj.status==200){debug(httpobj.responseText,1);debug('using response type '+config['response_type'],2);switch(config['response_type']){case'XML':debug(httpobj.responseXML,2);response=__cpaint_transformer.xml_conversion(httpobj.responseXML);break;case'OBJECT':response=__cpaint_transformer.object_conversion(httpobj.responseXML);break;case'TEXT':response=__cpaint_transformer.text_conversion(httpobj.responseText);break;case'E4X':response=__cpaint_transformer.e4x_conversion(httpobj.responseText);break;case'JSON':response=__cpaint_transformer.json_conversion(httpobj.responseText);break;default:debug('invalid response type \''+response_type+'\'',0);} | |
| 5227 | -if(response!=null&&typeof client_callback=='function'){client_callback(response,httpobj.responseText);} | |
| 5228 | -remove_from_stack();}else if(httpobj.readyState==4&&httpobj.status!=200){debug('invalid HTTP response code \''+Number(httpobj.status)+'\'',0);client_callback("", "erro");}} | |
| 5229 | -var remove_from_stack=function(){if(typeof stack_id=='number'&&__cpaint_stack[stack_id]&&config['persistent_connection']==false){__cpaint_stack[stack_id]=null;}} | |
| 5230 | -var debug=function(message,debug_level){var prefix='[CPAINT Debug] ';if(config['debugging']<1){prefix='[CPAINT Error] ';if (message.search(" error") > 1){client_callback("", message);}} | |
| 5231 | -if(config['debugging']>=debug_level){alert(prefix+message);}}} | |
| 5232 | -function cpaint_transformer(){this.object_conversion=function(xml_document){var return_value=new cpaint_result_object();var i=0;var firstNodeName='';if(typeof xml_document=='object'&&xml_document!=null){for(i=0;i<xml_document.childNodes.length;i++){if(xml_document.childNodes[i].nodeType==1){firstNodeName=xml_document.childNodes[i].nodeName;break;}} | |
| 5233 | -var ajax_response=xml_document.getElementsByTagName(firstNodeName);return_value[firstNodeName]=new Array();for(i=0;i<ajax_response.length;i++){var tmp_node=create_object_structure(ajax_response[i]);tmp_node.id=ajax_response[i].getAttribute('id') | |
| 5234 | -return_value[firstNodeName].push(tmp_node);}}else{debug('received invalid XML response',0);} | |
| 5235 | -return return_value;} | |
| 5236 | -this.xml_conversion=function(xml_document){return xml_document;} | |
| 5237 | -this.text_conversion=function(text){return decode(text);} | |
| 5238 | -this.e4x_conversion=function(text){text=text.replace(/^\<\?xml[^>]+\>/,'');return new XML(text);} | |
| 5239 | -this.json_conversion=function(text){return JSON.parse(text);} | |
| 5240 | -var create_object_structure=function(stream){var return_value=new cpaint_result_object();var node_name='';var i=0;var attrib=0;if(stream.hasChildNodes()==true){for(i=0;i<stream.childNodes.length;i++){node_name=stream.childNodes[i].nodeName;node_name=node_name.replace(/[^a-zA-Z0-9_]*/g,'');if(typeof return_value[node_name]!='object'){return_value[node_name]=new Array();} | |
| 5241 | -if(stream.childNodes[i].nodeType==1){var tmp_node=create_object_structure(stream.childNodes[i]);for(attrib=0;attrib<stream.childNodes[i].attributes.length;attrib++){tmp_node.set_attribute(stream.childNodes[i].attributes[attrib].nodeName,stream.childNodes[i].attributes[attrib].nodeValue);} | |
| 5242 | -return_value[node_name].push(tmp_node);}else if(stream.childNodes[i].nodeType==3){return_value.data=decode(String(stream.firstChild.data));}}} | |
| 5243 | -return return_value;} | |
| 5244 | -var decode=function(rawtext){var plaintext='';var i=0;var c1=0;var c2=0;var c3=0;var u=0;var t=0;while(i<rawtext.length){if(rawtext.charAt(i)=='\\'&&rawtext.charAt(i+1)=='u'){u=0;for(j=2;j<6;j+=1){t=parseInt(rawtext.charAt(i+j),16);if(!isFinite(t)){break;} | |
| 5245 | -u=u*16+t;} | |
| 5246 | -plaintext+=String.fromCharCode(u);i+=6;}else{plaintext+=rawtext.charAt(i);i++;}} | |
| 5247 | -if(plaintext!=''&&plaintext.search(/^\s+$/g)==-1&&!isNaN(plaintext)&&isFinite(plaintext)){plaintext=Number(plaintext);} | |
| 5248 | -return plaintext;}} | |
| 5249 | -function cpaint_result_object(){this.id=0;this.data='';var __attributes=new Array();this.find_item_by_id=function(){var return_value=null;var type=arguments[0];var id=arguments[1];var i=0;if(this[type]){for(i=0;i<this[type].length;i++){if(this[type][i].get_attribute('id')==id){return_value=this[type][i];break;}}} | |
| 5250 | -return return_value;} | |
| 5251 | -this.get_attribute=function(){var return_value=null;var id=arguments[0];if(typeof __attributes[id]!='undefined'){return_value=__attributes[id];} | |
| 5252 | -return return_value;} | |
| 5253 | -this.set_attribute=function(){__attributes[arguments[0]]=arguments[1];}} | |
| 5254 | -Array.prototype.______array='______array';var JSON={org:'http://www.JSON.org',copyright:'(c)2005 JSON.org',license:'http://www.crockford.com/JSON/license.html',stringify:function(arg){var c,i,l,s='',v;var numeric=true;switch(typeof arg){case'object':if(arg){if(arg.______array=='______array'){for(i in arg){if(i!='______array'&&(isNaN(i)||!isFinite(i))){numeric=false;break;}} | |
| 5255 | -if(numeric==true){for(i=0;i<arg.length;++i){if(typeof arg[i]!='undefined'){v=this.stringify(arg[i]);if(s){s+=',';} | |
| 5256 | -s+=v;}else{s+=',null';}} | |
| 5257 | -return'['+s+']';}else{for(i in arg){if(i!='______array'){v=arg[i];if(typeof v!='undefined'&&typeof v!='function'){v=this.stringify(v);if(s){s+=',';} | |
| 5258 | -s+=this.stringify(i)+':'+v;}}} | |
| 5259 | -return'{'+s+'}';}}else if(typeof arg.toString!='undefined'){for(i in arg){v=arg[i];if(typeof v!='undefined'&&typeof v!='function'){v=this.stringify(v);if(s){s+=',';} | |
| 5260 | -s+=this.stringify(i)+':'+v;}} | |
| 5261 | -return'{'+s+'}';}} | |
| 5262 | -return'null';case'number':return isFinite(arg)?String(arg):'null';case'string':l=arg.length;s='"';for(i=0;i<l;i+=1){c=arg.charAt(i);if(c>=' '){if(c=='\\'||c=='"'){s+='\\';} | |
| 5263 | -s+=c;}else{switch(c){case'\b':s+='\\b';break;case'\f':s+='\\f';break;case'\n':s+='\\n';break;case'\r':s+='\\r';break;case'\t':s+='\\t';break;default:c=c.charCodeAt();s+='\\u00'+Math.floor(c/16).toString(16)+ | |
| 5264 | -(c%16).toString(16);}}} | |
| 5265 | -return s+'"';case'boolean':return String(arg);default:return'null';}},parse:function(text){var at=0;var ch=' ';function error(m){throw{name:'JSONError',message:m,at:at-1,text:text};} | |
| 5266 | -function next(){ch=text.charAt(at);at+=1;return ch;} | |
| 5267 | -function white(){while(ch!=''&&ch<=' '){next();}} | |
| 5268 | -function str(){var i,s='',t,u;if(ch=='"'){outer:while(next()){if(ch=='"'){next();return s;}else if(ch=='\\'){switch(next()){case'b':s+='\b';break;case'f':s+='\f';break;case'n':s+='\n';break;case'r':s+='\r';break;case't':s+='\t';break;case'u':u=0;for(i=0;i<4;i+=1){t=parseInt(next(),16);if(!isFinite(t)){break outer;} | |
| 5269 | -u=u*16+t;} | |
| 5270 | -s+=String.fromCharCode(u);break;default:s+=ch;}}else{s+=ch;}}} | |
| 5271 | -error("Bad string");} | |
| 5272 | -function arr(){var a=[];if(ch=='['){next();white();if(ch==']'){next();return a;} | |
| 5273 | -while(ch){a.push(val());white();if(ch==']'){next();return a;}else if(ch!=','){break;} | |
| 5274 | -next();white();}} | |
| 5275 | -error("Bad array");} | |
| 5276 | -function obj(){var k,o={};if(ch=='{'){next();white();if(ch=='}'){next();return o;} | |
| 5277 | -while(ch){k=str();white();if(ch!=':'){break;} | |
| 5278 | -next();o[k]=val();white();if(ch=='}'){next();return o;}else if(ch!=','){break;} | |
| 5279 | -next();white();}} | |
| 5280 | -error("Bad object");} | |
| 5281 | -function assoc(){var k,a=[];if(ch=='<'){next();white();if(ch=='>'){next();return a;} | |
| 5282 | -while(ch){k=str();white();if(ch!=':'){break;} | |
| 5283 | -next();a[k]=val();white();if(ch=='>'){next();return a;}else if(ch!=','){break;} | |
| 5284 | -next();white();}} | |
| 5285 | -error("Bad associative array");} | |
| 5286 | -function num(){var n='',v;if(ch=='-'){n='-';next();} | |
| 5287 | -while(ch>='0'&&ch<='9'){n+=ch;next();} | |
| 5288 | -if(ch=='.'){n+='.';while(next()&&ch>='0'&&ch<='9'){n+=ch;}} | |
| 5289 | -if(ch=='e'||ch=='E'){n+='e';next();if(ch=='-'||ch=='+'){n+=ch;next();} | |
| 5290 | -while(ch>='0'&&ch<='9'){n+=ch;next();}} | |
| 5291 | -v=+n;if(!isFinite(v)){error("Bad number");}else{return v;}} | |
| 5292 | -function word(){switch(ch){case't':if(next()=='r'&&next()=='u'&&next()=='e'){next();return true;} | |
| 5293 | -break;case'f':if(next()=='a'&&next()=='l'&&next()=='s'&&next()=='e'){next();return false;} | |
| 5294 | -break;case'n':if(next()=='u'&&next()=='l'&&next()=='l'){next();return null;} | |
| 5295 | -break;} | |
| 5296 | -error("Syntax error");} | |
| 5297 | -function val(){white();switch(ch){case'{':return obj();case'[':return arr();case'<':return assoc();case'"':return str();case'-':return num();default:return ch>='0'&&ch<='9'?num():word();}} | |
| 5298 | -return val();}}; | |
| 5183 | +/** | |
| 5184 | +* CPAINT - Cross-Platform Asynchronous INterface Toolkit | |
| 5185 | +* | |
| 5186 | +* http://sf.net/projects/cpaint | |
| 5187 | +* | |
| 5188 | +* released under the terms of the LGPL | |
| 5189 | +* see http://www.fsf.org/licensing/licenses/lgpl.txt for details | |
| 5190 | +* | |
| 5191 | +* @package CPAINT | |
| 5192 | +* @access public | |
| 5193 | +* @copyright Copyright (c) 2005-2006 Paul Sullivan, Dominique Stender - http://sf.net/projects/cpaint | |
| 5194 | +* @author Paul Sullivan <wiley14@gmail.com> | |
| 5195 | +* @author Dominique Stender <dstender@st-webdevelopment.de> | |
| 5196 | +* @author Stephan Tijink <stijink@googlemail.com> | |
| 5197 | +* @version 2.0.3 | |
| 5198 | +*/ | |
| 5199 | +function cpaint() { | |
| 5200 | + /** | |
| 5201 | + * CPAINT version | |
| 5202 | + * | |
| 5203 | + * @access protected | |
| 5204 | + * @var string version | |
| 5205 | + */ | |
| 5206 | + this.version = '2.0.3'; | |
| 5207 | + | |
| 5208 | + /** | |
| 5209 | + * configuration options both for this class but also for the cpaint_call() objects. | |
| 5210 | + * | |
| 5211 | + * @access protected | |
| 5212 | + * @var array config | |
| 5213 | + */ | |
| 5214 | + var config = new Array(); | |
| 5215 | + config['debugging'] = -1; | |
| 5216 | + config['proxy_url'] = ''; | |
| 5217 | + config['transfer_mode'] = 'GET'; | |
| 5218 | + config['async'] = true; | |
| 5219 | + config['response_type'] = 'OBJECT'; | |
| 5220 | + config['persistent_connection'] = false; | |
| 5221 | + config['use_cpaint_api'] = true; | |
| 5222 | + | |
| 5223 | + /** | |
| 5224 | + * maintains the next free index in the stack | |
| 5225 | + * | |
| 5226 | + * @access protected | |
| 5227 | + * @var integer stack_count | |
| 5228 | + */ | |
| 5229 | + var stack_count = 0; | |
| 5230 | + | |
| 5231 | + /** | |
| 5232 | + * property returns whether or not the browser is AJAX capable | |
| 5233 | + * | |
| 5234 | + * @access public | |
| 5235 | + * @return boolean | |
| 5236 | + */ | |
| 5237 | + this.capable = test_ajax_capability(); | |
| 5238 | + | |
| 5239 | + /** | |
| 5240 | + * switches debug mode on/off. | |
| 5241 | + * | |
| 5242 | + * @access public | |
| 5243 | + * @param boolean debug debug flag | |
| 5244 | + * @return void | |
| 5245 | + */ | |
| 5246 | + this.set_debug = function() { | |
| 5247 | + | |
| 5248 | + if (typeof arguments[0] == 'boolean') { | |
| 5249 | + if (arguments[0] === true) { | |
| 5250 | + config['debugging'] = 1; | |
| 5251 | + | |
| 5252 | + } else { | |
| 5253 | + config['debugging'] = 0; | |
| 5254 | + } | |
| 5255 | + | |
| 5256 | + } else if (typeof arguments[0] == 'number') { | |
| 5257 | + config['debugging'] = Math.round(arguments[0]); | |
| 5258 | + } | |
| 5259 | + } | |
| 5260 | + | |
| 5261 | + /** | |
| 5262 | + * defines the URL of the proxy script. | |
| 5263 | + * | |
| 5264 | + * @access public | |
| 5265 | + * @param string proxy_url URL of the proxyscript to connect | |
| 5266 | + * @return void | |
| 5267 | + */ | |
| 5268 | + this.set_proxy_url = function() { | |
| 5269 | + | |
| 5270 | + if (typeof arguments[0] == 'string') { | |
| 5271 | + | |
| 5272 | + config['proxy_url'] = arguments[0]; | |
| 5273 | + } | |
| 5274 | + } | |
| 5275 | + | |
| 5276 | + /** | |
| 5277 | + * sets the transfer_mode (GET|POST). | |
| 5278 | + * | |
| 5279 | + * @access public | |
| 5280 | + * @param string transfer_mode transfer_mode | |
| 5281 | + * @return void | |
| 5282 | + */ | |
| 5283 | + this.set_transfer_mode = function() { | |
| 5284 | + | |
| 5285 | + if (arguments[0].toUpperCase() == 'GET' | |
| 5286 | + || arguments[0].toUpperCase() == 'POST') { | |
| 5287 | + | |
| 5288 | + config['transfer_mode'] = arguments[0].toUpperCase(); | |
| 5289 | + } | |
| 5290 | + } | |
| 5291 | + | |
| 5292 | + /** | |
| 5293 | + * sets the flag whether or not to use asynchronous calls. | |
| 5294 | + * | |
| 5295 | + * @access public | |
| 5296 | + * @param boolean async syncronization flag | |
| 5297 | + * @return void | |
| 5298 | + */ | |
| 5299 | + this.set_async = function() { | |
| 5300 | + | |
| 5301 | + if (typeof arguments[0] == 'boolean') { | |
| 5302 | + config['async'] = arguments[0]; | |
| 5303 | + } | |
| 5304 | + } | |
| 5305 | + | |
| 5306 | + /** | |
| 5307 | + * defines the response type. | |
| 5308 | + * | |
| 5309 | + * allowed values are: | |
| 5310 | + * TEXT = raw text response | |
| 5311 | + * XML = raw XMLHttpObject | |
| 5312 | + * OBJECT = parsed JavaScript object structure from XMLHttpObject | |
| 5313 | + * | |
| 5314 | + * the default is OBJECT. | |
| 5315 | + * | |
| 5316 | + * @access public | |
| 5317 | + * @param string response_type response type | |
| 5318 | + * @return void | |
| 5319 | + */ | |
| 5320 | + this.set_response_type = function() { | |
| 5321 | + | |
| 5322 | + if (arguments[0].toUpperCase() == 'TEXT' | |
| 5323 | + || arguments[0].toUpperCase() == 'XML' | |
| 5324 | + || arguments[0].toUpperCase() == 'OBJECT' | |
| 5325 | + || arguments[0].toUpperCase() == 'E4X' | |
| 5326 | + || arguments[0].toUpperCase() == 'JSON') { | |
| 5327 | + | |
| 5328 | + config['response_type'] = arguments[0].toUpperCase(); | |
| 5329 | + } | |
| 5330 | + } | |
| 5331 | + | |
| 5332 | + /** | |
| 5333 | + * sets the flag whether or not to use a persistent connection. | |
| 5334 | + * | |
| 5335 | + * @access public | |
| 5336 | + * @param boolean persistent_connection persistance flag | |
| 5337 | + * @return void | |
| 5338 | + */ | |
| 5339 | + this.set_persistent_connection = function() { | |
| 5340 | + | |
| 5341 | + if (typeof arguments[0] == 'boolean') { | |
| 5342 | + config['persistent_connection'] = arguments[0]; | |
| 5343 | + } | |
| 5344 | + } | |
| 5345 | + | |
| 5346 | + | |
| 5347 | + /** | |
| 5348 | + * sets the flag whether or not to use the cpaint api on the backend. | |
| 5349 | + * | |
| 5350 | + * @access public | |
| 5351 | + * @param boolean cpaint_api api_flag | |
| 5352 | + * @return void | |
| 5353 | + */ | |
| 5354 | + this.set_use_cpaint_api = function() { | |
| 5355 | + if (typeof arguments[0] == 'boolean') { | |
| 5356 | + config['use_cpaint_api'] = arguments[0]; | |
| 5357 | + } | |
| 5358 | + } | |
| 5359 | + | |
| 5360 | + /** | |
| 5361 | + * tests whether one of the necessary implementations | |
| 5362 | + * of the XMLHttpRequest class are available | |
| 5363 | + * | |
| 5364 | + * @access protected | |
| 5365 | + * @return boolean | |
| 5366 | + */ | |
| 5367 | + function test_ajax_capability() { | |
| 5368 | + var cpc = new cpaint_call(0, config, this.version); | |
| 5369 | + return cpc.test_ajax_capability(); | |
| 5370 | + } | |
| 5371 | + | |
| 5372 | + /** | |
| 5373 | + * takes the arguments supplied and triggers a call to the CPAINT backend | |
| 5374 | + * based on the settings. | |
| 5375 | + * | |
| 5376 | + * upon response cpaint_call.callback() will automatically be called | |
| 5377 | + * to perform post-processing operations. | |
| 5378 | + * | |
| 5379 | + * @access public | |
| 5380 | + * @param string url remote URL to call | |
| 5381 | + * @param string remote_method remote method to call | |
| 5382 | + * @param object client_callback client side callback method to deliver the remote response to. do NOT supply a string! | |
| 5383 | + * @param mixed argN remote parameters from now on | |
| 5384 | + * @return void | |
| 5385 | + */ | |
| 5386 | + this.call = function() { | |
| 5387 | + //incluido por edmar | |
| 5388 | + var sUrl = escape(arguments[0]); | |
| 5389 | + var re = new RegExp("%3F", "g"); | |
| 5390 | + var sUrl = sUrl.replace(re,'?'); | |
| 5391 | + var re = new RegExp("%3D", "g"); | |
| 5392 | + var sUrl = sUrl.replace(re,'='); | |
| 5393 | + var re = new RegExp("%26", "g"); | |
| 5394 | + var sUrl = sUrl.replace(re,'&'); | |
| 5395 | + var re = new RegExp("%3A", "g"); | |
| 5396 | + var sUrl = sUrl.replace(re,':'); | |
| 5397 | + //alert(sUrl) | |
| 5398 | + arguments[0] = sUrl; | |
| 5399 | + // | |
| 5400 | + var use_stack = -1; | |
| 5401 | + | |
| 5402 | + if (config['persistent_connection'] == true | |
| 5403 | + && __cpaint_stack[0] != null) { | |
| 5404 | + | |
| 5405 | + switch (__cpaint_stack[0].get_http_state()) { | |
| 5406 | + case -1: | |
| 5407 | + // no XMLHttpObject object has already been instanciated | |
| 5408 | + // create new object and configure it | |
| 5409 | + use_stack = 0; | |
| 5410 | + debug('no XMLHttpObject object to re-use for persistence, creating new one later', 2); | |
| 5411 | + break; | |
| 5412 | + | |
| 5413 | + case 4: | |
| 5414 | + // object is ready for a new request, no need to do anything | |
| 5415 | + use_stack = 0 | |
| 5416 | + debug('re-using the persistent connection', 2); | |
| 5417 | + break; | |
| 5418 | + | |
| 5419 | + default: | |
| 5420 | + // connection is currently in use, don't do anything | |
| 5421 | + debug('the persistent connection is in use - skipping this request', 2); | |
| 5422 | + } | |
| 5423 | + | |
| 5424 | + } else if (config['persistent_connection'] == true) { | |
| 5425 | + // persistent connection is active, but no object has been instanciated | |
| 5426 | + use_stack = 0; | |
| 5427 | + __cpaint_stack[use_stack] = new cpaint_call(use_stack, config, this.version); | |
| 5428 | + debug('no cpaint_call object available for re-use, created new one', 2); | |
| 5429 | + | |
| 5430 | + } else { | |
| 5431 | + // no connection persistance | |
| 5432 | + use_stack = stack_count; | |
| 5433 | + __cpaint_stack[use_stack] = new cpaint_call(use_stack, config, this.version); | |
| 5434 | + debug('no cpaint_call object created new one', 2); | |
| 5435 | + } | |
| 5436 | + | |
| 5437 | + // configure cpaint_call if allowed to | |
| 5438 | + if (use_stack != -1) { | |
| 5439 | + __cpaint_stack[use_stack].set_client_callback(arguments[2]); | |
| 5440 | + | |
| 5441 | + // distribute according to proxy use | |
| 5442 | + if (config['proxy_url'] != '') { | |
| 5443 | + __cpaint_stack[use_stack].call_proxy(arguments); | |
| 5444 | + | |
| 5445 | + } else { | |
| 5446 | + __cpaint_stack[use_stack].call_direct(arguments); | |
| 5447 | + } | |
| 5448 | + | |
| 5449 | + // increase stack counter | |
| 5450 | + stack_count++; | |
| 5451 | + debug('stack size: ' + __cpaint_stack.length, 2); | |
| 5452 | + } | |
| 5453 | + } | |
| 5454 | + | |
| 5455 | + /** | |
| 5456 | + * debug method | |
| 5457 | + * | |
| 5458 | + * @access protected | |
| 5459 | + * @param string message the message to debug | |
| 5460 | + * @param integer debug_level debug level at which the message appears | |
| 5461 | + * @return void | |
| 5462 | + */ | |
| 5463 | + var debug = function(message, debug_level) { | |
| 5464 | + var prefix = '[CPAINT Debug] '; | |
| 5465 | + | |
| 5466 | + if (debug_level < 1) { | |
| 5467 | + prefix = '[CPAINT Error] '; | |
| 5468 | + } | |
| 5469 | + | |
| 5470 | + if (config['debugging'] >= debug_level) { | |
| 5471 | + alert(prefix + message); | |
| 5472 | + } | |
| 5473 | + } | |
| 5474 | +} | |
| 5475 | + | |
| 5476 | +/** | |
| 5477 | +* internal FIFO stack of cpaint_call() objects. | |
| 5478 | +* | |
| 5479 | +* @access protected | |
| 5480 | +* @var array __cpaint_stack | |
| 5481 | +*/ | |
| 5482 | +var __cpaint_stack = new Array(); | |
| 5483 | + | |
| 5484 | +/** | |
| 5485 | +* local instance of cpaint_transformer | |
| 5486 | +* MSIE is unable to handle static classes... sheesh. | |
| 5487 | +* | |
| 5488 | +* @access public | |
| 5489 | +* @var object __cpaint_transformer | |
| 5490 | +*/ | |
| 5491 | +var __cpaint_transformer = new cpaint_transformer(); | |
| 5492 | + | |
| 5493 | +/** | |
| 5494 | +* transport agent class | |
| 5495 | +* | |
| 5496 | +* creates the request object, takes care of the response, handles the | |
| 5497 | +* client callback. Is configured by the cpaint() object. | |
| 5498 | +* | |
| 5499 | +* @package CPAINT | |
| 5500 | +* @access public | |
| 5501 | +* @copyright Copyright (c) 2005-2006 Paul Sullivan, Dominique Stender - http://sf.net/projects/cpaint | |
| 5502 | +* @author Dominique Stender <dstender@st-webdevelopment.de> | |
| 5503 | +* @author Paul Sullivan <wiley14@gmail.com> | |
| 5504 | +* @param integer stack_id stack Id in cpaint | |
| 5505 | +* @param array config configuration array for this call | |
| 5506 | +* @param string version CPAINT API version | |
| 5507 | +*/ | |
| 5508 | +function cpaint_call() { | |
| 5509 | + /** | |
| 5510 | + * CPAINT version | |
| 5511 | + * | |
| 5512 | + * @access protected | |
| 5513 | + * @var string version | |
| 5514 | + */ | |
| 5515 | + var version = arguments[2]; | |
| 5516 | + | |
| 5517 | + /** | |
| 5518 | + * configuration options both for this class objects. | |
| 5519 | + * | |
| 5520 | + * @access protected | |
| 5521 | + * @var array config | |
| 5522 | + */ | |
| 5523 | + var config = new Array(); | |
| 5524 | + config['debugging'] = arguments[1]['debugging']; | |
| 5525 | + config['proxy_url'] = arguments[1]['proxy_url']; | |
| 5526 | + config['transfer_mode'] = arguments[1]['transfer_mode']; | |
| 5527 | + config['async'] = arguments[1]['async']; | |
| 5528 | + config['response_type'] = arguments[1]['response_type']; | |
| 5529 | + config['persistent_connection'] = arguments[1]['persistent_connection']; | |
| 5530 | + config['use_cpaint_api'] = arguments[1]['use_cpaint_api']; | |
| 5531 | + | |
| 5532 | + /** | |
| 5533 | + * XMLHttpObject used for this request. | |
| 5534 | + * | |
| 5535 | + * @access protected | |
| 5536 | + * @var object httpobj | |
| 5537 | + */ | |
| 5538 | + var httpobj = false; | |
| 5539 | + | |
| 5540 | + /** | |
| 5541 | + * client callback function. | |
| 5542 | + * | |
| 5543 | + * @access public | |
| 5544 | + * @var function client_callback | |
| 5545 | + */ | |
| 5546 | + var client_callback; | |
| 5547 | + | |
| 5548 | + /** | |
| 5549 | + * stores the stack Id within the cpaint object | |
| 5550 | + * | |
| 5551 | + * @access protected | |
| 5552 | + * @var stack_id | |
| 5553 | + */ | |
| 5554 | + var stack_id = arguments[0]; | |
| 5555 | + | |
| 5556 | + /** | |
| 5557 | + * sets the client callback function. | |
| 5558 | + * | |
| 5559 | + * @access public | |
| 5560 | + * @param function client_callback the client callback function | |
| 5561 | + * @return void | |
| 5562 | + */ | |
| 5563 | + this.set_client_callback = function() { | |
| 5564 | + | |
| 5565 | + if (typeof arguments[0] == 'function') { | |
| 5566 | + client_callback = arguments[0]; | |
| 5567 | + } | |
| 5568 | + } | |
| 5569 | + | |
| 5570 | + /** | |
| 5571 | + * returns the ready state of the internal XMLHttpObject | |
| 5572 | + * | |
| 5573 | + * if no such object was set up already, -1 is returned | |
| 5574 | + * | |
| 5575 | + * @access public | |
| 5576 | + * @return integer | |
| 5577 | + */ | |
| 5578 | + this.get_http_state = function() { | |
| 5579 | + var return_value = -1; | |
| 5580 | + | |
| 5581 | + if (typeof httpobj == 'object') { | |
| 5582 | + return_value = httpobj.readyState; | |
| 5583 | + } | |
| 5584 | + | |
| 5585 | + return return_value; | |
| 5586 | + } | |
| 5587 | + | |
| 5588 | + /** | |
| 5589 | + * internal method for remote calls to the local server without use of the proxy script. | |
| 5590 | + * | |
| 5591 | + * @access public | |
| 5592 | + * @param array call_arguments array of arguments initially passed to cpaint.call() | |
| 5593 | + * @return void | |
| 5594 | + */ | |
| 5595 | + this.call_direct = function(call_arguments) { | |
| 5596 | + var url = call_arguments[0]; | |
| 5597 | + var remote_method = call_arguments[1]; | |
| 5598 | + var querystring = ''; | |
| 5599 | + var i = 0; | |
| 5600 | + | |
| 5601 | + // correct link to self | |
| 5602 | + if (url == 'SELF') { | |
| 5603 | + url = document.location.href; | |
| 5604 | + } | |
| 5605 | + | |
| 5606 | + if (config['use_cpaint_api'] == true) { | |
| 5607 | + // backend uses cpaint api | |
| 5608 | + // pass parameters to remote method | |
| 5609 | + for (i = 3; i < call_arguments.length; i++) { | |
| 5610 | + | |
| 5611 | + if ((typeof call_arguments[i] == 'string' | |
| 5612 | + && call_arguments[i] != '' | |
| 5613 | + && call_arguments[i].search(/^\s+$/g) == -1) | |
| 5614 | + && !isNaN(call_arguments[i]) | |
| 5615 | + && isFinite(call_arguments[i])) { | |
| 5616 | + // numerical value, convert it first | |
| 5617 | + querystring += '&cpaint_argument[]=' + encodeURIComponent(JSON.stringify(Number(call_arguments[i]))); | |
| 5618 | + | |
| 5619 | + } else { | |
| 5620 | + querystring += '&cpaint_argument[]=' + encodeURIComponent(JSON.stringify(call_arguments[i])); | |
| 5621 | + } | |
| 5622 | + } | |
| 5623 | + | |
| 5624 | + // add response type to querystring | |
| 5625 | + querystring += '&cpaint_response_type=' + config['response_type']; | |
| 5626 | + | |
| 5627 | + // build header | |
| 5628 | + if (config['transfer_mode'] == 'GET') { | |
| 5629 | + | |
| 5630 | + if(url.indexOf('?') != -1) { | |
| 5631 | + url = url + '&cpaint_function=' + remote_method + querystring; | |
| 5632 | + | |
| 5633 | + } else { | |
| 5634 | + url = url + '?cpaint_function=' + remote_method + querystring; | |
| 5635 | + } | |
| 5636 | + | |
| 5637 | + } else { | |
| 5638 | + querystring = 'cpaint_function=' + remote_method + querystring; | |
| 5639 | + } | |
| 5640 | + | |
| 5641 | + } else { | |
| 5642 | + // backend does not use cpaint api | |
| 5643 | + // pass parameters to remote method | |
| 5644 | + for (i = 3; i < call_arguments.length; i++) { | |
| 5645 | + | |
| 5646 | + if (i == 3) { | |
| 5647 | + querystring += encodeURIComponent(call_arguments[i]); | |
| 5648 | + | |
| 5649 | + } else { | |
| 5650 | + querystring += '&' + encodeURIComponent(call_arguments[i]); | |
| 5651 | + } | |
| 5652 | + } | |
| 5653 | + | |
| 5654 | + // build header | |
| 5655 | + if (config['transfer_mode'] == 'GET') { | |
| 5656 | + url = url + querystring; | |
| 5657 | + } | |
| 5658 | + } | |
| 5659 | + | |
| 5660 | + // open connection | |
| 5661 | + get_connection_object(); | |
| 5662 | + | |
| 5663 | + // open connection to remote target | |
| 5664 | + debug('opening connection to "' + url + '"', 1); | |
| 5665 | + httpobj.open(config['transfer_mode'], url, config['async']); | |
| 5666 | + | |
| 5667 | + // send "urlencoded" header if necessary (if POST) | |
| 5668 | + if (config['transfer_mode'] == 'POST') { | |
| 5669 | + | |
| 5670 | + try { | |
| 5671 | + httpobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); | |
| 5672 | + | |
| 5673 | + } catch (cp_err) { | |
| 5674 | + debug('POST cannot be completed due to incompatible browser. Use GET as your request method.', 0); | |
| 5675 | + } | |
| 5676 | + } | |
| 5677 | + | |
| 5678 | + // make ourselves known | |
| 5679 | + httpobj.setRequestHeader('X-Powered-By', 'CPAINT v' + version + ' :: http://sf.net/projects/cpaint'); | |
| 5680 | + | |
| 5681 | + // callback handling for asynchronous calls | |
| 5682 | + httpobj.onreadystatechange = callback; | |
| 5683 | + | |
| 5684 | + // send content | |
| 5685 | + if (config['transfer_mode'] == 'GET') { | |
| 5686 | + httpobj.send(null); | |
| 5687 | + | |
| 5688 | + } else { | |
| 5689 | + debug('sending query: ' + querystring, 1); | |
| 5690 | + httpobj.send(querystring); | |
| 5691 | + } | |
| 5692 | + | |
| 5693 | + if (config['async'] == true) { | |
| 5694 | + // manual callback handling for synchronized calls | |
| 5695 | + callback(); | |
| 5696 | + } | |
| 5697 | + } | |
| 5698 | + | |
| 5699 | + /** | |
| 5700 | + * internal method for calls to remote servers through the proxy script. | |
| 5701 | + * | |
| 5702 | + * @access public | |
| 5703 | + * @param array call_arguments array of arguments passed to cpaint.call() | |
| 5704 | + * @return void | |
| 5705 | + */ | |
| 5706 | + this.call_proxy = function(call_arguments) { | |
| 5707 | + var proxyscript = config['proxy_url']; | |
| 5708 | + var url = call_arguments[0]; | |
| 5709 | + var remote_method = call_arguments[1]; | |
| 5710 | + var querystring = ''; | |
| 5711 | + var i = 0; | |
| 5712 | + | |
| 5713 | + var querystring_argument_prefix = 'cpaint_argument[]='; | |
| 5714 | + | |
| 5715 | + // pass parameters to remote method | |
| 5716 | + if (config['use_cpaint_api'] == false) { | |
| 5717 | + // when not talking to a CPAINT backend, don't prefix arguments | |
| 5718 | + querystring_argument_prefix = ''; | |
| 5719 | + } | |
| 5720 | + | |
| 5721 | + for (i = 3; i < call_arguments.length; i++) { | |
| 5722 | + | |
| 5723 | + if (config['use_cpaint_api'] == true) { | |
| 5724 | + | |
| 5725 | + if ((typeof call_arguments[i] == 'string' | |
| 5726 | + && call_arguments[i] != '' | |
| 5727 | + && call_arguments[i].search(/^\s+$/g) == -1) | |
| 5728 | + && !isNaN(call_arguments[i]) | |
| 5729 | + && isFinite(call_arguments[i])) { | |
| 5730 | + // numerical value, convert it first | |
| 5731 | + querystring += encodeURIComponent(querystring_argument_prefix + JSON.stringify(Number(call_arguments[i])) + '&'); | |
| 5732 | + | |
| 5733 | + } else { | |
| 5734 | + querystring += encodeURIComponent(querystring_argument_prefix + JSON.stringify(call_arguments[i]) + '&'); | |
| 5735 | + } | |
| 5736 | + | |
| 5737 | + } else { | |
| 5738 | + // no CPAINT in the backend | |
| 5739 | + querystring += encodeURIComponent(querystring_argument_prefix + call_arguments[i] + '&'); | |
| 5740 | + } | |
| 5741 | + } | |
| 5742 | + | |
| 5743 | + if (config['use_cpaint_api'] == true) { | |
| 5744 | + // add remote function name to querystring | |
| 5745 | + querystring += encodeURIComponent('&cpaint_function=' + remote_method); | |
| 5746 | + | |
| 5747 | + // add response type to querystring | |
| 5748 | + querystring += encodeURIComponent('&cpaint_responsetype=' + config['response_type']); | |
| 5749 | + } | |
| 5750 | + | |
| 5751 | + // build header | |
| 5752 | + if (config['transfer_mode'] == 'GET') { | |
| 5753 | + proxyscript += '?cpaint_remote_url=' + encodeURIComponent(url) | |
| 5754 | + + '&cpaint_remote_query=' + querystring | |
| 5755 | + + '&cpaint_remote_method=' + config['transfer_mode'] | |
| 5756 | + + '&cpaint_response_type=' + config['response_type']; | |
| 5757 | + | |
| 5758 | + } else { | |
| 5759 | + querystring = 'cpaint_remote_url=' + encodeURIComponent(url) | |
| 5760 | + + '&cpaint_remote_query=' + querystring | |
| 5761 | + + '&cpaint_remote_method=' + config['transfer_mode'] | |
| 5762 | + + '&cpaint_response_type=' + config['response_type']; | |
| 5763 | + } | |
| 5764 | + | |
| 5765 | + // open connection | |
| 5766 | + get_connection_object(); | |
| 5767 | + | |
| 5768 | + // open connection to remote target | |
| 5769 | + debug('opening connection to proxy "' + proxyscript + '"', 1); | |
| 5770 | + httpobj.open(config['transfer_mode'], proxyscript, config['async']); | |
| 5771 | + | |
| 5772 | + // send "urlencoded" header if necessary (if POST) | |
| 5773 | + if (config['transfer_mode'] == 'POST') { | |
| 5774 | + | |
| 5775 | + try { | |
| 5776 | + httpobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); | |
| 5777 | + | |
| 5778 | + } catch (cp_err) { | |
| 5779 | + debug('POST cannot be completed due to incompatible browser. Use GET as your request method.', 0); | |
| 5780 | + } | |
| 5781 | + } | |
| 5782 | + | |
| 5783 | + httpobj.setRequestHeader('X-Powered-By', 'CPAINT v' + version); | |
| 5784 | + | |
| 5785 | + // callback handling for asynchronous calls | |
| 5786 | + httpobj.onreadystatechange = callback; | |
| 5787 | + | |
| 5788 | + // send content | |
| 5789 | + if (config['transfer_mode'] == 'GET') { | |
| 5790 | + httpobj.send(null); | |
| 5791 | + | |
| 5792 | + } else { | |
| 5793 | + debug('sending query: ' + querystring, 1); | |
| 5794 | + httpobj.send(querystring); | |
| 5795 | + } | |
| 5796 | + | |
| 5797 | + if (config['async'] == false) { | |
| 5798 | + // manual callback handling for synchronized calls | |
| 5799 | + callback(); | |
| 5800 | + } | |
| 5801 | + } | |
| 5802 | + | |
| 5803 | + this.test_ajax_capability = function() { | |
| 5804 | + return get_connection_object(); | |
| 5805 | + } | |
| 5806 | + | |
| 5807 | + /** | |
| 5808 | + * creates a new connection object. | |
| 5809 | + * | |
| 5810 | + * @access protected | |
| 5811 | + * @return boolean | |
| 5812 | + */ | |
| 5813 | + var get_connection_object = function() { | |
| 5814 | + var return_value = false; | |
| 5815 | + var new_connection = false; | |
| 5816 | + | |
| 5817 | + // open new connection only if necessary | |
| 5818 | + if (config['persistent_connection'] == false) { | |
| 5819 | + // no persistance, create a new object every time | |
| 5820 | + debug('Using new connection object', 1); | |
| 5821 | + new_connection = true; | |
| 5822 | + | |
| 5823 | + } else { | |
| 5824 | + // persistent connection object, only open one if no object exists | |
| 5825 | + debug('Using shared connection object.', 1); | |
| 5826 | + | |
| 5827 | + if (typeof httpobj != 'object') { | |
| 5828 | + debug('Getting new persistent connection object.', 1); | |
| 5829 | + new_connection = true; | |
| 5830 | + } | |
| 5831 | + } | |
| 5832 | + | |
| 5833 | + if (new_connection == true) { | |
| 5834 | + | |
| 5835 | + try { | |
| 5836 | + httpobj = new XMLHttpRequest(); | |
| 5837 | + } catch (e1) { | |
| 5838 | + | |
| 5839 | + try { | |
| 5840 | + httpobj = new ActiveXObject('Msxml2.XMLHTTP'); | |
| 5841 | + | |
| 5842 | + } catch (e) { | |
| 5843 | + | |
| 5844 | + try { | |
| 5845 | + httpobj = new ActiveXObject('Microsoft.XMLHTTP'); | |
| 5846 | + | |
| 5847 | + } catch (oc) { | |
| 5848 | + httpobj = null; | |
| 5849 | + } | |
| 5850 | + } | |
| 5851 | + } | |
| 5852 | + | |
| 5853 | + | |
| 5854 | + if (!httpobj) { | |
| 5855 | + debug('Could not create connection object', 0); | |
| 5856 | + | |
| 5857 | + } else { | |
| 5858 | + return_value = true; | |
| 5859 | + } | |
| 5860 | + } | |
| 5861 | + | |
| 5862 | + if (httpobj.readyState != 4) { | |
| 5863 | + httpobj.abort(); | |
| 5864 | + } | |
| 5865 | + | |
| 5866 | + return return_value; | |
| 5867 | + } | |
| 5868 | + | |
| 5869 | + /** | |
| 5870 | + * internal callback function. | |
| 5871 | + * | |
| 5872 | + * will perform some consistency checks (response code, NULL value testing) | |
| 5873 | + * and if response_type = 'OBJECT' it will automatically call | |
| 5874 | + * cpaint_call.parse_ajax_xml() to have a JavaScript object structure generated. | |
| 5875 | + * | |
| 5876 | + * after all that is done the client side callback function will be called | |
| 5877 | + * with the generated response as single value. | |
| 5878 | + * | |
| 5879 | + * @access protected | |
| 5880 | + * @return void | |
| 5881 | + */ | |
| 5882 | + var callback = function() { | |
| 5883 | + var response = null; | |
| 5884 | + if (httpobj.readyState == 4 | |
| 5885 | + && httpobj.status == 200) { | |
| 5886 | + if(httpobj.responseText == ""){ | |
| 5887 | + alert("O servidor demorou muito - timeout"); | |
| 5888 | + client_callback("", "erro"); | |
| 5889 | + return; | |
| 5890 | + } | |
| 5891 | + debug(httpobj.responseText, 1); | |
| 5892 | + debug('using response type ' + config['response_type'], 2); | |
| 5893 | + | |
| 5894 | + // fetch correct response | |
| 5895 | + switch (config['response_type']) { | |
| 5896 | + case 'XML': | |
| 5897 | + debug(httpobj.responseXML, 2); | |
| 5898 | + response = __cpaint_transformer.xml_conversion(httpobj.responseXML); | |
| 5899 | + break; | |
| 5900 | + | |
| 5901 | + case 'OBJECT': | |
| 5902 | + response = __cpaint_transformer.object_conversion(httpobj.responseXML); | |
| 5903 | + break; | |
| 5904 | + | |
| 5905 | + case 'TEXT': | |
| 5906 | + response = __cpaint_transformer.text_conversion(httpobj.responseText); | |
| 5907 | + break; | |
| 5908 | + | |
| 5909 | + case 'E4X': | |
| 5910 | + response = __cpaint_transformer.e4x_conversion(httpobj.responseText); | |
| 5911 | + break; | |
| 5912 | + | |
| 5913 | + case 'JSON': | |
| 5914 | + response = __cpaint_transformer.json_conversion(httpobj.responseText); | |
| 5915 | + break; | |
| 5916 | + | |
| 5917 | + default: | |
| 5918 | + debug('invalid response type \'' + response_type + '\'', 0); | |
| 5919 | + } | |
| 5920 | + | |
| 5921 | + // call client side callback | |
| 5922 | + if (response != null | |
| 5923 | + && typeof client_callback == 'function') { | |
| 5924 | + try{ | |
| 5925 | + if(response.data) | |
| 5926 | + client_callback(response, httpobj.responseText); | |
| 5927 | + else | |
| 5928 | + client_callback("", "erro"); | |
| 5929 | + } | |
| 5930 | + catch(e){ | |
| 5931 | + client_callback("", "erro"); | |
| 5932 | + } | |
| 5933 | + } | |
| 5934 | + // remove ourselves from the stack | |
| 5935 | + remove_from_stack(); | |
| 5936 | + | |
| 5937 | + } else | |
| 5938 | + { | |
| 5939 | + if(httpobj.readyState==4&&httpobj.status!=200) | |
| 5940 | + { | |
| 5941 | + debug('invalid HTTP response code \''+Number(httpobj.status)+'\'',0); | |
| 5942 | + if(httpobj.status==500){ | |
| 5943 | + alert("O servidor demorou muito - timeout"); | |
| 5944 | + client_callback("", "erro"); | |
| 5945 | + } | |
| 5946 | + else{ | |
| 5947 | + client_callback("", "erro"); | |
| 5948 | + } | |
| 5949 | + } | |
| 5950 | + | |
| 5951 | + } | |
| 5952 | + } | |
| 5953 | + | |
| 5954 | + /** | |
| 5955 | + * removes an entry from the stack | |
| 5956 | + * | |
| 5957 | + * @access protected | |
| 5958 | + * @return void | |
| 5959 | + */ | |
| 5960 | + var remove_from_stack = function() { | |
| 5961 | + // remove only if everything is okay and we're not configured as persistent connection | |
| 5962 | + if (typeof stack_id == 'number' | |
| 5963 | + && __cpaint_stack[stack_id] | |
| 5964 | + && config['persistent_connection'] == false) { | |
| 5965 | + | |
| 5966 | + __cpaint_stack[stack_id] = null; | |
| 5967 | + } | |
| 5968 | + } | |
| 5969 | + | |
| 5970 | + /** | |
| 5971 | + * debug method | |
| 5972 | + * | |
| 5973 | + * @access protected | |
| 5974 | + * @param string message the message to debug | |
| 5975 | + * @param integer debug_level debug level at which the message appears | |
| 5976 | + * @return void | |
| 5977 | + */ | |
| 5978 | + var debug = function(message, debug_level) { | |
| 5979 | + var prefix = '[CPAINT Debug] '; | |
| 5980 | + | |
| 5981 | + if (config['debugging'] < 1) { | |
| 5982 | + prefix = '[CPAINT Error] '; | |
| 5983 | + } | |
| 5984 | + | |
| 5985 | + if (config['debugging'] >= debug_level) { | |
| 5986 | + alert(prefix + message); | |
| 5987 | + } | |
| 5988 | + if (message.search(" error") > 1){client_callback("", message);} | |
| 5989 | + } | |
| 5990 | +} | |
| 5991 | + | |
| 5992 | +/** | |
| 5993 | +* CPAINT transformation object | |
| 5994 | +* | |
| 5995 | +* @package CPAINT | |
| 5996 | +* @access public | |
| 5997 | +* @copyright Copyright (c) 2005-2006 Paul Sullivan, Dominique Stender - http://sf.net/projects/cpaint | |
| 5998 | +* @author Paul Sullivan <wiley14@gmail.com> | |
| 5999 | +* @author Dominique Stender <dstender@st-webdevelopment.de> | |
| 6000 | +*/ | |
| 6001 | +function cpaint_transformer() { | |
| 6002 | + | |
| 6003 | + /** | |
| 6004 | + * will take a XMLHttpObject and generate a JavaScript | |
| 6005 | + * object structure from it. | |
| 6006 | + * | |
| 6007 | + * is internally called by cpaint_call.callback() if necessary. | |
| 6008 | + * will call cpaint_call.create_object_structure() to create nested object structures. | |
| 6009 | + * | |
| 6010 | + * @access public | |
| 6011 | + * @param object xml_document a XMLHttpObject | |
| 6012 | + * @return object | |
| 6013 | + */ | |
| 6014 | + this.object_conversion = function(xml_document) { | |
| 6015 | + var return_value = new cpaint_result_object(); | |
| 6016 | + var i = 0; | |
| 6017 | + var firstNodeName = ''; | |
| 6018 | + | |
| 6019 | + if (typeof xml_document == 'object' | |
| 6020 | + && xml_document != null) { | |
| 6021 | + | |
| 6022 | + // find the first element node - for MSIE the <?xml?> node is the very first... | |
| 6023 | + for (i = 0; i < xml_document.childNodes.length; i++) { | |
| 6024 | + | |
| 6025 | + if (xml_document.childNodes[i].nodeType == 1) { | |
| 6026 | + firstNodeName = xml_document.childNodes[i].nodeName; | |
| 6027 | + break; | |
| 6028 | + } | |
| 6029 | + } | |
| 6030 | + | |
| 6031 | + var ajax_response = xml_document.getElementsByTagName(firstNodeName); | |
| 6032 | + | |
| 6033 | + return_value[firstNodeName] = new Array(); | |
| 6034 | + | |
| 6035 | + for (i = 0; i < ajax_response.length; i++) { | |
| 6036 | + var tmp_node = create_object_structure(ajax_response[i]); | |
| 6037 | + tmp_node.id = ajax_response[i].getAttribute('id') | |
| 6038 | + return_value[firstNodeName].push(tmp_node); | |
| 6039 | + } | |
| 6040 | + | |
| 6041 | + } else { | |
| 6042 | + debug('received invalid XML response', 0); | |
| 6043 | + } | |
| 6044 | + | |
| 6045 | + return return_value; | |
| 6046 | + } | |
| 6047 | + | |
| 6048 | + /** | |
| 6049 | + * performs the necessary conversions for the XML response type | |
| 6050 | + * | |
| 6051 | + * @access public | |
| 6052 | + * @param object xml_document a XMLHttpObject | |
| 6053 | + * @return object | |
| 6054 | + */ | |
| 6055 | + this.xml_conversion = function(xml_document) { | |
| 6056 | + return xml_document; | |
| 6057 | + } | |
| 6058 | + | |
| 6059 | + /** | |
| 6060 | + * performs the necessary conversions for the TEXT response type | |
| 6061 | + * | |
| 6062 | + * @access public | |
| 6063 | + * @param string text the response text | |
| 6064 | + * @return string | |
| 6065 | + */ | |
| 6066 | + this.text_conversion = function(text) { | |
| 6067 | + return decode(text); | |
| 6068 | + } | |
| 6069 | + | |
| 6070 | + /** | |
| 6071 | + * performs the necessary conversions for the E4X response type | |
| 6072 | + * | |
| 6073 | + * @access public | |
| 6074 | + * @param string text the response text | |
| 6075 | + * @return string | |
| 6076 | + */ | |
| 6077 | + this.e4x_conversion = function(text) { | |
| 6078 | + // remove <?xml ?>tag | |
| 6079 | + text = text.replace(/^\<\?xml[^>]+\>/, ''); | |
| 6080 | + return new XML(text); | |
| 6081 | + } | |
| 6082 | + | |
| 6083 | + /** | |
| 6084 | + * performs the necessary conversions for the JSON response type | |
| 6085 | + * | |
| 6086 | + * @access public | |
| 6087 | + * @param string text the response text | |
| 6088 | + * @return string | |
| 6089 | + */ | |
| 6090 | + this.json_conversion = function(text) { | |
| 6091 | + return JSON.parse(text); | |
| 6092 | + } | |
| 6093 | + | |
| 6094 | + /** | |
| 6095 | + * this method takes a HTML / XML node object and creates a | |
| 6096 | + * JavaScript object structure from it. | |
| 6097 | + * | |
| 6098 | + * @access public | |
| 6099 | + * @param object stream a node in the XML structure | |
| 6100 | + * @return object | |
| 6101 | + */ | |
| 6102 | + var create_object_structure = function(stream) { | |
| 6103 | + var return_value = new cpaint_result_object(); | |
| 6104 | + var node_name = ''; | |
| 6105 | + var i = 0; | |
| 6106 | + var attrib = 0; | |
| 6107 | + | |
| 6108 | + if (stream.hasChildNodes() == true) { | |
| 6109 | + for (i = 0; i < stream.childNodes.length; i++) { | |
| 6110 | + | |
| 6111 | + node_name = stream.childNodes[i].nodeName; | |
| 6112 | + node_name = node_name.replace(/[^a-zA-Z0-9_]*/g, ''); | |
| 6113 | + | |
| 6114 | + // reset / create subnode | |
| 6115 | + if (typeof return_value[node_name] != 'object') { | |
| 6116 | + return_value[node_name] = new Array(); | |
| 6117 | + } | |
| 6118 | + | |
| 6119 | + if (stream.childNodes[i].nodeType == 1) { | |
| 6120 | + var tmp_node = create_object_structure(stream.childNodes[i]); | |
| 6121 | + | |
| 6122 | + for (attrib = 0; attrib < stream.childNodes[i].attributes.length; attrib++) { | |
| 6123 | + tmp_node.set_attribute(stream.childNodes[i].attributes[attrib].nodeName, stream.childNodes[i].attributes[attrib].nodeValue); | |
| 6124 | + } | |
| 6125 | + | |
| 6126 | + return_value[node_name].push(tmp_node); | |
| 6127 | + | |
| 6128 | + } else if (stream.childNodes[i].nodeType == 3) { | |
| 6129 | + return_value.data = decode(String(stream.firstChild.data)); | |
| 6130 | + } | |
| 6131 | + } | |
| 6132 | + } | |
| 6133 | + | |
| 6134 | + return return_value; | |
| 6135 | + } | |
| 6136 | + | |
| 6137 | + /** | |
| 6138 | + * converts an encoded text back to viewable characters. | |
| 6139 | + * | |
| 6140 | + * @access public | |
| 6141 | + * @param string rawtext raw text as provided by the backend | |
| 6142 | + * @return mixed | |
| 6143 | + */ | |
| 6144 | + var decode = function(rawtext) { | |
| 6145 | + var plaintext = ''; | |
| 6146 | + var i = 0; | |
| 6147 | + var c1 = 0; | |
| 6148 | + var c2 = 0; | |
| 6149 | + var c3 = 0; | |
| 6150 | + var u = 0; | |
| 6151 | + var t = 0; | |
| 6152 | + | |
| 6153 | + // remove special JavaScript encoded non-printable characters | |
| 6154 | + while (i < rawtext.length) { | |
| 6155 | + if (rawtext.charAt(i) == '\\' | |
| 6156 | + && rawtext.charAt(i + 1) == 'u') { | |
| 6157 | + | |
| 6158 | + u = 0; | |
| 6159 | + | |
| 6160 | + for (j = 2; j < 6; j += 1) { | |
| 6161 | + t = parseInt(rawtext.charAt(i + j), 16); | |
| 6162 | + | |
| 6163 | + if (!isFinite(t)) { | |
| 6164 | + break; | |
| 6165 | + } | |
| 6166 | + u = u * 16 + t; | |
| 6167 | + } | |
| 6168 | + | |
| 6169 | + plaintext += String.fromCharCode(u); | |
| 6170 | + i += 6; | |
| 6171 | + | |
| 6172 | + } else { | |
| 6173 | + plaintext += rawtext.charAt(i); | |
| 6174 | + i++; | |
| 6175 | + } | |
| 6176 | + } | |
| 6177 | + | |
| 6178 | + // convert numeric data to number type | |
| 6179 | + if (plaintext != '' | |
| 6180 | + && plaintext.search(/^\s+$/g) == -1 | |
| 6181 | + && !isNaN(plaintext) | |
| 6182 | + && isFinite(plaintext)) { | |
| 6183 | + | |
| 6184 | + plaintext = Number(plaintext); | |
| 6185 | + } | |
| 6186 | + | |
| 6187 | + return plaintext; | |
| 6188 | + } | |
| 6189 | +} | |
| 6190 | + | |
| 6191 | +/** | |
| 6192 | +* this is the basic prototype for a cpaint node object | |
| 6193 | +* as used in cpaint_call.parse_ajax_xml() | |
| 6194 | +* | |
| 6195 | +* @package CPAINT | |
| 6196 | +* @access public | |
| 6197 | +* @copyright Copyright (c) 2005-2006 Paul Sullivan, Dominique Stender - http://sf.net/projects/cpaint | |
| 6198 | +* @author Paul Sullivan <wiley14@gmail.com> | |
| 6199 | +* @author Dominique Stender <dstender@st-webdevelopment.de> | |
| 6200 | +*/ | |
| 6201 | +function cpaint_result_object() { | |
| 6202 | + this.id = 0; | |
| 6203 | + this.data = ''; | |
| 6204 | + var __attributes = new Array(); | |
| 6205 | + | |
| 6206 | + /** | |
| 6207 | + * Returns a subnode with the given type and id. | |
| 6208 | + * | |
| 6209 | + * @access public | |
| 6210 | + * @param string type The type of the subnode. Equivalent to the XML tag name. | |
| 6211 | + * @param string id The id of the subnode. Equivalent to the XML tag names id attribute. | |
| 6212 | + * @return object | |
| 6213 | + */ | |
| 6214 | + this.find_item_by_id = function() { | |
| 6215 | + var return_value = null; | |
| 6216 | + var type = arguments[0]; | |
| 6217 | + var id = arguments[1]; | |
| 6218 | + var i = 0; | |
| 6219 | + | |
| 6220 | + if (this[type]) { | |
| 6221 | + | |
| 6222 | + for (i = 0; i < this[type].length; i++) { | |
| 6223 | + | |
| 6224 | + if (this[type][i].get_attribute('id') == id) { | |
| 6225 | + return_value = this[type][i]; | |
| 6226 | + break; | |
| 6227 | + } | |
| 6228 | + } | |
| 6229 | + } | |
| 6230 | + | |
| 6231 | + return return_value; | |
| 6232 | + } | |
| 6233 | + | |
| 6234 | + /** | |
| 6235 | + * retrieves the value of an attribute. | |
| 6236 | + * | |
| 6237 | + * @access public | |
| 6238 | + * @param string name name of the attribute | |
| 6239 | + * @return mixed | |
| 6240 | + */ | |
| 6241 | + this.get_attribute = function() { | |
| 6242 | + var return_value = null; | |
| 6243 | + var id = arguments[0]; | |
| 6244 | + | |
| 6245 | + if (typeof __attributes[id] != 'undefined') { | |
| 6246 | + return_value = __attributes[id]; | |
| 6247 | + } | |
| 6248 | + | |
| 6249 | + return return_value; | |
| 6250 | + } | |
| 6251 | + | |
| 6252 | + /** | |
| 6253 | + * assigns a value to an attribute. | |
| 6254 | + * | |
| 6255 | + * if that attribute does not exist it will be created. | |
| 6256 | + * | |
| 6257 | + * @access public | |
| 6258 | + * @param string name name of the attribute | |
| 6259 | + * @param string value value of the attribute | |
| 6260 | + * @return void | |
| 6261 | + */ | |
| 6262 | + this.set_attribute = function() { | |
| 6263 | + __attributes[arguments[0]] = arguments[1]; | |
| 6264 | + } | |
| 6265 | +} | |
| 6266 | + | |
| 6267 | + | |
| 6268 | +/* | |
| 6269 | +Copyright (c) 2005 JSON.org | |
| 6270 | + | |
| 6271 | +Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6272 | +of this software and associated documentation files (the "Software"), to deal | |
| 6273 | +in the Software without restriction, including without limitation the rights | |
| 6274 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 6275 | +copies of the Software, and to permit persons to whom the Software is | |
| 6276 | +furnished to do so, subject to the following conditions: | |
| 6277 | + | |
| 6278 | +The Software shall be used for Good, not Evil. | |
| 6279 | + | |
| 6280 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 6281 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 6282 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 6283 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 6284 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 6285 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 6286 | +SOFTWARE. | |
| 6287 | +*/ | |
| 6288 | + | |
| 6289 | + | |
| 6290 | +Array.prototype.______array = '______array'; | |
| 6291 | + | |
| 6292 | +var JSON = { | |
| 6293 | + org: 'http://www.JSON.org', | |
| 6294 | + copyright: '(c)2005 JSON.org', | |
| 6295 | + license: 'http://www.crockford.com/JSON/license.html', | |
| 6296 | + | |
| 6297 | + stringify: function (arg) { | |
| 6298 | + var c, i, l, s = '', v; | |
| 6299 | + var numeric = true; | |
| 6300 | + | |
| 6301 | + switch (typeof arg) { | |
| 6302 | + case 'object': | |
| 6303 | + if (arg) { | |
| 6304 | + if (arg.______array == '______array') { | |
| 6305 | + // do a test whether all array keys are numeric | |
| 6306 | + for (i in arg) { | |
| 6307 | + if (i != '______array' | |
| 6308 | + && (isNaN(i) | |
| 6309 | + || !isFinite(i))) { | |
| 6310 | + numeric = false; | |
| 6311 | + break; | |
| 6312 | + } | |
| 6313 | + } | |
| 6314 | + | |
| 6315 | + if (numeric == true) { | |
| 6316 | + for (i = 0; i < arg.length; ++i) { | |
| 6317 | + if (typeof arg[i] != 'undefined') { | |
| 6318 | + v = this.stringify(arg[i]); | |
| 6319 | + if (s) { | |
| 6320 | + s += ','; | |
| 6321 | + } | |
| 6322 | + s += v; | |
| 6323 | + } else { | |
| 6324 | + s += ',null'; | |
| 6325 | + } | |
| 6326 | + } | |
| 6327 | + return '[' + s + ']'; | |
| 6328 | + } else { | |
| 6329 | + for (i in arg) { | |
| 6330 | + if (i != '______array') { | |
| 6331 | + v = arg[i]; | |
| 6332 | + if (typeof v != 'undefined' && typeof v != 'function') { | |
| 6333 | + v = this.stringify(v); | |
| 6334 | + if (s) { | |
| 6335 | + s += ','; | |
| 6336 | + } | |
| 6337 | + s += this.stringify(i) + ':' + v; | |
| 6338 | + } | |
| 6339 | + } | |
| 6340 | + } | |
| 6341 | + // return as object | |
| 6342 | + return '{' + s + '}'; | |
| 6343 | + } | |
| 6344 | + } else if (typeof arg.toString != 'undefined') { | |
| 6345 | + for (i in arg) { | |
| 6346 | + v = arg[i]; | |
| 6347 | + if (typeof v != 'undefined' && typeof v != 'function') { | |
| 6348 | + v = this.stringify(v); | |
| 6349 | + if (s) { | |
| 6350 | + s += ','; | |
| 6351 | + } | |
| 6352 | + s += this.stringify(i) + ':' + v; | |
| 6353 | + } | |
| 6354 | + } | |
| 6355 | + return '{' + s + '}'; | |
| 6356 | + } | |
| 6357 | + } | |
| 6358 | + return 'null'; | |
| 6359 | + case 'number': | |
| 6360 | + return isFinite(arg) ? String(arg) : 'null'; | |
| 6361 | + case 'string': | |
| 6362 | + l = arg.length; | |
| 6363 | + s = '"'; | |
| 6364 | + for (i = 0; i < l; i += 1) { | |
| 6365 | + c = arg.charAt(i); | |
| 6366 | + if (c >= ' ') { | |
| 6367 | + if (c == '\\' || c == '"') { | |
| 6368 | + s += '\\'; | |
| 6369 | + } | |
| 6370 | + s += c; | |
| 6371 | + } else { | |
| 6372 | + switch (c) { | |
| 6373 | + case '\b': | |
| 6374 | + s += '\\b'; | |
| 6375 | + break; | |
| 6376 | + case '\f': | |
| 6377 | + s += '\\f'; | |
| 6378 | + break; | |
| 6379 | + case '\n': | |
| 6380 | + s += '\\n'; | |
| 6381 | + break; | |
| 6382 | + case '\r': | |
| 6383 | + s += '\\r'; | |
| 6384 | + break; | |
| 6385 | + case '\t': | |
| 6386 | + s += '\\t'; | |
| 6387 | + break; | |
| 6388 | + default: | |
| 6389 | + c = c.charCodeAt(); | |
| 6390 | + s += '\\u00' + Math.floor(c / 16).toString(16) + | |
| 6391 | + (c % 16).toString(16); | |
| 6392 | + } | |
| 6393 | + } | |
| 6394 | + } | |
| 6395 | + return s + '"'; | |
| 6396 | + case 'boolean': | |
| 6397 | + return String(arg); | |
| 6398 | + default: | |
| 6399 | + return 'null'; | |
| 6400 | + } | |
| 6401 | + }, | |
| 6402 | + parse: function (text) { | |
| 6403 | + var at = 0; | |
| 6404 | + var ch = ' '; | |
| 6405 | + | |
| 6406 | + function error(m) { | |
| 6407 | + throw { | |
| 6408 | + name: 'JSONError', | |
| 6409 | + message: m, | |
| 6410 | + at: at - 1, | |
| 6411 | + text: text | |
| 6412 | + }; | |
| 6413 | + } | |
| 6414 | + | |
| 6415 | + function next() { | |
| 6416 | + ch = text.charAt(at); | |
| 6417 | + at += 1; | |
| 6418 | + return ch; | |
| 6419 | + } | |
| 6420 | + | |
| 6421 | + function white() { | |
| 6422 | + while (ch != '' && ch <= ' ') { | |
| 6423 | + next(); | |
| 6424 | + } | |
| 6425 | + } | |
| 6426 | + | |
| 6427 | + function str() { | |
| 6428 | + var i, s = '', t, u; | |
| 6429 | + | |
| 6430 | + if (ch == '"') { | |
| 6431 | +outer: while (next()) { | |
| 6432 | + if (ch == '"') { | |
| 6433 | + next(); | |
| 6434 | + return s; | |
| 6435 | + } else if (ch == '\\') { | |
| 6436 | + switch (next()) { | |
| 6437 | + case 'b': | |
| 6438 | + s += '\b'; | |
| 6439 | + break; | |
| 6440 | + case 'f': | |
| 6441 | + s += '\f'; | |
| 6442 | + break; | |
| 6443 | + case 'n': | |
| 6444 | + s += '\n'; | |
| 6445 | + break; | |
| 6446 | + case 'r': | |
| 6447 | + s += '\r'; | |
| 6448 | + break; | |
| 6449 | + case 't': | |
| 6450 | + s += '\t'; | |
| 6451 | + break; | |
| 6452 | + case 'u': | |
| 6453 | + u = 0; | |
| 6454 | + for (i = 0; i < 4; i += 1) { | |
| 6455 | + t = parseInt(next(), 16); | |
| 6456 | + if (!isFinite(t)) { | |
| 6457 | + break outer; | |
| 6458 | + } | |
| 6459 | + u = u * 16 + t; | |
| 6460 | + } | |
| 6461 | + s += String.fromCharCode(u); | |
| 6462 | + break; | |
| 6463 | + default: | |
| 6464 | + s += ch; | |
| 6465 | + } | |
| 6466 | + } else { | |
| 6467 | + s += ch; | |
| 6468 | + } | |
| 6469 | + } | |
| 6470 | + } | |
| 6471 | + error("Bad string"); | |
| 6472 | + } | |
| 6473 | + | |
| 6474 | + function arr() { | |
| 6475 | + var a = []; | |
| 6476 | + | |
| 6477 | + if (ch == '[') { | |
| 6478 | + next(); | |
| 6479 | + white(); | |
| 6480 | + if (ch == ']') { | |
| 6481 | + next(); | |
| 6482 | + return a; | |
| 6483 | + } | |
| 6484 | + while (ch) { | |
| 6485 | + a.push(val()); | |
| 6486 | + white(); | |
| 6487 | + if (ch == ']') { | |
| 6488 | + next(); | |
| 6489 | + return a; | |
| 6490 | + } else if (ch != ',') { | |
| 6491 | + break; | |
| 6492 | + } | |
| 6493 | + next(); | |
| 6494 | + white(); | |
| 6495 | + } | |
| 6496 | + } | |
| 6497 | + error("Bad array"); | |
| 6498 | + } | |
| 6499 | + | |
| 6500 | + function obj() { | |
| 6501 | + var k, o = {}; | |
| 6502 | + | |
| 6503 | + if (ch == '{') { | |
| 6504 | + next(); | |
| 6505 | + white(); | |
| 6506 | + if (ch == '}') { | |
| 6507 | + next(); | |
| 6508 | + return o; | |
| 6509 | + } | |
| 6510 | + while (ch) { | |
| 6511 | + k = str(); | |
| 6512 | + white(); | |
| 6513 | + if (ch != ':') { | |
| 6514 | + break; | |
| 6515 | + } | |
| 6516 | + next(); | |
| 6517 | + o[k] = val(); | |
| 6518 | + white(); | |
| 6519 | + if (ch == '}') { | |
| 6520 | + next(); | |
| 6521 | + return o; | |
| 6522 | + } else if (ch != ',') { | |
| 6523 | + break; | |
| 6524 | + } | |
| 6525 | + next(); | |
| 6526 | + white(); | |
| 6527 | + } | |
| 6528 | + } | |
| 6529 | + error("Bad object"); | |
| 6530 | + } | |
| 6531 | + | |
| 6532 | + function assoc() { | |
| 6533 | + var k, a = []; | |
| 6534 | + | |
| 6535 | + if (ch == '<') { | |
| 6536 | + next(); | |
| 6537 | + white(); | |
| 6538 | + if (ch == '>') { | |
| 6539 | + next(); | |
| 6540 | + return a; | |
| 6541 | + } | |
| 6542 | + while (ch) { | |
| 6543 | + k = str(); | |
| 6544 | + white(); | |
| 6545 | + if (ch != ':') { | |
| 6546 | + break; | |
| 6547 | + } | |
| 6548 | + next(); | |
| 6549 | + a[k] = val(); | |
| 6550 | + white(); | |
| 6551 | + if (ch == '>') { | |
| 6552 | + next(); | |
| 6553 | + return a; | |
| 6554 | + } else if (ch != ',') { | |
| 6555 | + break; | |
| 6556 | + } | |
| 6557 | + next(); | |
| 6558 | + white(); | |
| 6559 | + } | |
| 6560 | + } | |
| 6561 | + error("Bad associative array"); | |
| 6562 | + } | |
| 6563 | + | |
| 6564 | + function num() { | |
| 6565 | + var n = '', v; | |
| 6566 | + if (ch == '-') { | |
| 6567 | + n = '-'; | |
| 6568 | + next(); | |
| 6569 | + } | |
| 6570 | + while (ch >= '0' && ch <= '9') { | |
| 6571 | + n += ch; | |
| 6572 | + next(); | |
| 6573 | + } | |
| 6574 | + if (ch == '.') { | |
| 6575 | + n += '.'; | |
| 6576 | + while (next() && ch >= '0' && ch <= '9') { | |
| 6577 | + n += ch; | |
| 6578 | + } | |
| 6579 | + } | |
| 6580 | + if (ch == 'e' || ch == 'E') { | |
| 6581 | + n += 'e'; | |
| 6582 | + next(); | |
| 6583 | + if (ch == '-' || ch == '+') { | |
| 6584 | + n += ch; | |
| 6585 | + next(); | |
| 6586 | + } | |
| 6587 | + while (ch >= '0' && ch <= '9') { | |
| 6588 | + n += ch; | |
| 6589 | + next(); | |
| 6590 | + } | |
| 6591 | + } | |
| 6592 | + v = +n; | |
| 6593 | + if (!isFinite(v)) { | |
| 6594 | + error("Bad number"); | |
| 6595 | + } else { | |
| 6596 | + return v; | |
| 6597 | + } | |
| 6598 | + } | |
| 6599 | + | |
| 6600 | + function word() { | |
| 6601 | + switch (ch) { | |
| 6602 | + case 't': | |
| 6603 | + if (next() == 'r' && next() == 'u' && next() == 'e') { | |
| 6604 | + next(); | |
| 6605 | + return true; | |
| 6606 | + } | |
| 6607 | + break; | |
| 6608 | + case 'f': | |
| 6609 | + if (next() == 'a' && next() == 'l' && next() == 's' && | |
| 6610 | + next() == 'e') { | |
| 6611 | + next(); | |
| 6612 | + return false; | |
| 6613 | + } | |
| 6614 | + break; | |
| 6615 | + case 'n': | |
| 6616 | + if (next() == 'u' && next() == 'l' && next() == 'l') { | |
| 6617 | + next(); | |
| 6618 | + return null; | |
| 6619 | + } | |
| 6620 | + break; | |
| 6621 | + } | |
| 6622 | + error("Syntax error"); | |
| 6623 | + } | |
| 6624 | + | |
| 6625 | + function val() { | |
| 6626 | + white(); | |
| 6627 | + switch (ch) { | |
| 6628 | + case '{': | |
| 6629 | + return obj(); | |
| 6630 | + case '[': | |
| 6631 | + return arr(); | |
| 6632 | + case '<': | |
| 6633 | + return assoc(); | |
| 6634 | + case '"': | |
| 6635 | + return str(); | |
| 6636 | + case '-': | |
| 6637 | + return num(); | |
| 6638 | + default: | |
| 6639 | + return ch >= '0' && ch <= '9' ? num() : word(); | |
| 6640 | + } | |
| 6641 | + } | |
| 6642 | + | |
| 6643 | + return val(); | |
| 6644 | + } | |
| 6645 | +}; | |
| 6646 | + | |
| 6647 | + | ... | ... |
ferramentas/i3geo_tudo_compacto.js.php
| ... | ... | @@ -5180,121 +5180,1470 @@ YAHOO.util.Event.purgeElement(D,true);D.innerHTML="";for(var C in this){if(YAHOO |
| 5180 | 5180 | this._toggleContainer(false);};YAHOO.widget.AutoComplete.prototype._jumpSelection=function(){if(this._oCurItem){this._selectItem(this._oCurItem);}else{this._toggleContainer(false);}};YAHOO.widget.AutoComplete.prototype._moveSelection=function(G){if(this._bContainerOpen){var E=this._oCurItem;var F=-1;if(E){F=E._nItemIndex;}var D=(G==40)?(F+1):(F-1);if(D<-2||D>=this._nDisplayedItems){return ;}if(E){this._toggleHighlight(E,"from");this.itemArrowFromEvent.fire(this,E);}if(D==-1){if(this.delimChar&&this._sSavedQuery){if(!this._textMatchesOption()){this._elTextbox.value=this._sSavedQuery;}else{this._elTextbox.value=this._sSavedQuery+this._sCurQuery;}}else{this._elTextbox.value=this._sCurQuery;}this._oCurItem=null;return ;}if(D==-2){this._toggleContainer(false);return ;}var C=this._aListItems[D];var A=this._elContent;var B=((YAHOO.util.Dom.getStyle(A,"overflow")=="auto")||(YAHOO.util.Dom.getStyle(A,"overflowY")=="auto"));if(B&&(D>-1)&&(D<this._nDisplayedItems)){if(G==40){if((C.offsetTop+C.offsetHeight)>(A.scrollTop+A.offsetHeight)){A.scrollTop=(C.offsetTop+C.offsetHeight)-A.offsetHeight;}else{if((C.offsetTop+C.offsetHeight)<A.scrollTop){A.scrollTop=C.offsetTop;}}}else{if(C.offsetTop<A.scrollTop){this._elContent.scrollTop=C.offsetTop;}else{if(C.offsetTop>(A.scrollTop+A.offsetHeight)){this._elContent.scrollTop=(C.offsetTop+C.offsetHeight)-A.offsetHeight;}}}}this._toggleHighlight(C,"to");this.itemArrowToEvent.fire(this,C);if(this.typeAhead){this._updateValue(C);}}};YAHOO.widget.AutoComplete.prototype._onItemMouseover=function(A,B){if(B.prehighlightClassName){B._togglePrehighlight(this,"mouseover");}else{B._toggleHighlight(this,"to");}B.itemMouseOverEvent.fire(B,this);};YAHOO.widget.AutoComplete.prototype._onItemMouseout=function(A,B){if(B.prehighlightClassName){B._togglePrehighlight(this,"mouseout");}else{B._toggleHighlight(this,"from");}B.itemMouseOutEvent.fire(B,this);};YAHOO.widget.AutoComplete.prototype._onItemMouseclick=function(A,B){B._toggleHighlight(this,"to");B._selectItem(this);};YAHOO.widget.AutoComplete.prototype._onContainerMouseover=function(A,B){B._bOverContainer=true;};YAHOO.widget.AutoComplete.prototype._onContainerMouseout=function(A,B){B._bOverContainer=false;if(B._oCurItem){B._toggleHighlight(B._oCurItem,"to");}};YAHOO.widget.AutoComplete.prototype._onContainerScroll=function(A,B){B._elTextbox.focus();};YAHOO.widget.AutoComplete.prototype._onContainerResize=function(A,B){B._toggleContainerHelpers(B._bContainerOpen);};YAHOO.widget.AutoComplete.prototype._onTextboxKeyDown=function(A,B){var C=A.keyCode;switch(C){case 9:if((navigator.userAgent.toLowerCase().indexOf("mac")==-1)){if(B._oCurItem){if(B.delimChar&&(B._nKeyCode!=C)){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._oCurItem);}else{B._toggleContainer(false);}}break;case 13:if((navigator.userAgent.toLowerCase().indexOf("mac")==-1)){if(B._oCurItem){if(B._nKeyCode!=C){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._oCurItem);}else{B._toggleContainer(false);}}break;case 27:B._toggleContainer(false);return ;case 39:B._jumpSelection();break;case 38:YAHOO.util.Event.stopEvent(A);B._moveSelection(C);break;case 40:YAHOO.util.Event.stopEvent(A);B._moveSelection(C);break;default:break;}};YAHOO.widget.AutoComplete.prototype._onTextboxKeyPress=function(A,B){var C=A.keyCode;if((navigator.userAgent.toLowerCase().indexOf("mac")!=-1)){switch(C){case 9:if(B._oCurItem){if(B.delimChar&&(B._nKeyCode!=C)){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._oCurItem);}else{B._toggleContainer(false);}break;case 13:if(B._oCurItem){if(B._nKeyCode!=C){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._oCurItem);}else{B._toggleContainer(false);}break;default:break;}}else{if(C==229){B._queryInterval=setInterval(function(){B._onIMEDetected(B);},500);}}};YAHOO.widget.AutoComplete.prototype._onTextboxKeyUp=function(B,D){D._initProps();var E=B.keyCode;D._nKeyCode=E;var C=this.value;if(D._isIgnoreKey(E)||(C.toLowerCase()==D._sCurQuery)){return ;}else{D._bItemSelected=false;YAHOO.util.Dom.removeClass(D._oCurItem,D.highlightClassName);D._oCurItem=null;D.textboxKeyEvent.fire(D,E);}if(D.queryDelay>0){var A=setTimeout(function(){D._sendQuery(C);},(D.queryDelay*1000));if(D._nDelayID!=-1){clearTimeout(D._nDelayID);}D._nDelayID=A;}else{D._sendQuery(C);}};YAHOO.widget.AutoComplete.prototype._onTextboxFocus=function(A,B){B._elTextbox.setAttribute("autocomplete","off");B._bFocused=true;if(!B._bItemSelected){B.textboxFocusEvent.fire(B);}};YAHOO.widget.AutoComplete.prototype._onTextboxBlur=function(A,B){if(!B._bOverContainer||(B._nKeyCode==9)){if(!B._bItemSelected){var C=B._textMatchesOption();if(!B._bContainerOpen||(B._bContainerOpen&&(C===null))){if(B.forceSelection){B._clearSelection();}else{B.unmatchedItemSelectEvent.fire(B);}}else{if(B.forceSelection){B._selectItem(C);}}}if(B._bContainerOpen){B._toggleContainer(false);}B._cancelIntervalDetection(B);B._bFocused=false;B.textboxBlurEvent.fire(B);}};YAHOO.widget.AutoComplete.prototype._onWindowUnload=function(A,B){if(B&&B._elTextbox&&B.allowBrowserAutocomplete){B._elTextbox.setAttribute("autocomplete","on");}};YAHOO.widget.DataSource=function(){};YAHOO.widget.DataSource.ERROR_DATANULL="Response data was null";YAHOO.widget.DataSource.ERROR_DATAPARSE="Response data could not be parsed";YAHOO.widget.DataSource.prototype.maxCacheEntries=15;YAHOO.widget.DataSource.prototype.queryMatchContains=false;YAHOO.widget.DataSource.prototype.queryMatchSubset=false;YAHOO.widget.DataSource.prototype.queryMatchCase=false;YAHOO.widget.DataSource.prototype.toString=function(){return"DataSource "+this._sName;};YAHOO.widget.DataSource.prototype.getResults=function(A,D,B){var C=this._doQueryCache(A,D,B);if(C.length===0){this.queryEvent.fire(this,B,D);this.doQuery(A,D,B);}};YAHOO.widget.DataSource.prototype.doQuery=function(A,C,B){};YAHOO.widget.DataSource.prototype.flushCache=function(){if(this._aCache){this._aCache=[];}if(this._aCacheHelper){this._aCacheHelper=[]; |
| 5181 | 5181 | }this.cacheFlushEvent.fire(this);};YAHOO.widget.DataSource.prototype.queryEvent=null;YAHOO.widget.DataSource.prototype.cacheQueryEvent=null;YAHOO.widget.DataSource.prototype.getResultsEvent=null;YAHOO.widget.DataSource.prototype.getCachedResultsEvent=null;YAHOO.widget.DataSource.prototype.dataErrorEvent=null;YAHOO.widget.DataSource.prototype.cacheFlushEvent=null;YAHOO.widget.DataSource._nIndex=0;YAHOO.widget.DataSource.prototype._sName=null;YAHOO.widget.DataSource.prototype._aCache=null;YAHOO.widget.DataSource.prototype._init=function(){var A=this.maxCacheEntries;if(!YAHOO.lang.isNumber(A)||(A<0)){A=0;}if(A>0&&!this._aCache){this._aCache=[];}this._sName="instance"+YAHOO.widget.DataSource._nIndex;YAHOO.widget.DataSource._nIndex++;this.queryEvent=new YAHOO.util.CustomEvent("query",this);this.cacheQueryEvent=new YAHOO.util.CustomEvent("cacheQuery",this);this.getResultsEvent=new YAHOO.util.CustomEvent("getResults",this);this.getCachedResultsEvent=new YAHOO.util.CustomEvent("getCachedResults",this);this.dataErrorEvent=new YAHOO.util.CustomEvent("dataError",this);this.cacheFlushEvent=new YAHOO.util.CustomEvent("cacheFlush",this);};YAHOO.widget.DataSource.prototype._addCacheElem=function(B){var A=this._aCache;if(!A||!B||!B.query||!B.results){return ;}if(A.length>=this.maxCacheEntries){A.shift();}A.push(B);};YAHOO.widget.DataSource.prototype._doQueryCache=function(A,I,N){var H=[];var G=false;var J=this._aCache;var F=(J)?J.length:0;var K=this.queryMatchContains;var D;if((this.maxCacheEntries>0)&&J&&(F>0)){this.cacheQueryEvent.fire(this,N,I);if(!this.queryMatchCase){D=I;I=I.toLowerCase();}for(var P=F-1;P>=0;P--){var E=J[P];var B=E.results;var C=(!this.queryMatchCase)?encodeURIComponent(E.query).toLowerCase():encodeURIComponent(E.query);if(C==I){G=true;H=B;if(P!=F-1){J.splice(P,1);this._addCacheElem(E);}break;}else{if(this.queryMatchSubset){for(var O=I.length-1;O>=0;O--){var R=I.substr(0,O);if(C==R){G=true;for(var M=B.length-1;M>=0;M--){var Q=B[M];var L=(this.queryMatchCase)?encodeURIComponent(Q[0]).indexOf(I):encodeURIComponent(Q[0]).toLowerCase().indexOf(I);if((!K&&(L===0))||(K&&(L>-1))){H.unshift(Q);}}E={};E.query=I;E.results=H;this._addCacheElem(E);break;}}if(G){break;}}}}if(G){this.getCachedResultsEvent.fire(this,N,D,H);A(D,H,N);}}return H;};YAHOO.widget.DS_XHR=function(C,A,D){if(D&&(D.constructor==Object)){for(var B in D){this[B]=D[B];}}if(!YAHOO.lang.isArray(A)||!YAHOO.lang.isString(C)){return ;}this.schema=A;this.scriptURI=C;this._init();};YAHOO.widget.DS_XHR.prototype=new YAHOO.widget.DataSource();YAHOO.widget.DS_XHR.TYPE_JSON=0;YAHOO.widget.DS_XHR.TYPE_XML=1;YAHOO.widget.DS_XHR.TYPE_FLAT=2;YAHOO.widget.DS_XHR.ERROR_DATAXHR="XHR response failed";YAHOO.widget.DS_XHR.prototype.connMgr=YAHOO.util.Connect;YAHOO.widget.DS_XHR.prototype.connTimeout=0;YAHOO.widget.DS_XHR.prototype.scriptURI=null;YAHOO.widget.DS_XHR.prototype.scriptQueryParam="query";YAHOO.widget.DS_XHR.prototype.scriptQueryAppend="";YAHOO.widget.DS_XHR.prototype.responseType=YAHOO.widget.DS_XHR.TYPE_JSON;YAHOO.widget.DS_XHR.prototype.responseStripAfter="\n<!-";YAHOO.widget.DS_XHR.prototype.doQuery=function(E,G,B){var J=(this.responseType==YAHOO.widget.DS_XHR.TYPE_XML);var D=this.scriptURI+"?"+this.scriptQueryParam+"="+G;if(this.scriptQueryAppend.length>0){D+="&"+this.scriptQueryAppend;}var C=null;var F=this;var I=function(K){if(!F._oConn||(K.tId!=F._oConn.tId)){F.dataErrorEvent.fire(F,B,G,YAHOO.widget.DataSource.ERROR_DATANULL);return ;}for(var N in K){}if(!J){K=K.responseText;}else{K=K.responseXML;}if(K===null){F.dataErrorEvent.fire(F,B,G,YAHOO.widget.DataSource.ERROR_DATANULL);return ;}var M=F.parseResponse(G,K,B);var L={};L.query=decodeURIComponent(G);L.results=M;if(M===null){F.dataErrorEvent.fire(F,B,G,YAHOO.widget.DataSource.ERROR_DATAPARSE);M=[];}else{F.getResultsEvent.fire(F,B,G,M);F._addCacheElem(L);}E(G,M,B);};var A=function(K){F.dataErrorEvent.fire(F,B,G,YAHOO.widget.DS_XHR.ERROR_DATAXHR);return ;};var H={success:I,failure:A};if(YAHOO.lang.isNumber(this.connTimeout)&&(this.connTimeout>0)){H.timeout=this.connTimeout;}if(this._oConn){this.connMgr.abort(this._oConn);}F._oConn=this.connMgr.asyncRequest("GET",D,H,null);};YAHOO.widget.DS_XHR.prototype.parseResponse=function(sQuery,oResponse,oParent){var aSchema=this.schema;var aResults=[];var bError=false;var nEnd=((this.responseStripAfter!=="")&&(oResponse.indexOf))?oResponse.indexOf(this.responseStripAfter):-1;if(nEnd!=-1){oResponse=oResponse.substring(0,nEnd);}switch(this.responseType){case YAHOO.widget.DS_XHR.TYPE_JSON:var jsonList,jsonObjParsed;if(YAHOO.lang.JSON){jsonObjParsed=YAHOO.lang.JSON.parse(oResponse);if(!jsonObjParsed){bError=true;break;}else{try{jsonList=eval("jsonObjParsed."+aSchema[0]);}catch(e){bError=true;break;}}}else{if(oResponse.parseJSON){jsonObjParsed=oResponse.parseJSON();if(!jsonObjParsed){bError=true;}else{try{jsonList=eval("jsonObjParsed."+aSchema[0]);}catch(e){bError=true;break;}}}else{if(window.JSON){jsonObjParsed=JSON.parse(oResponse);if(!jsonObjParsed){bError=true;break;}else{try{jsonList=eval("jsonObjParsed."+aSchema[0]);}catch(e){bError=true;break;}}}else{try{while(oResponse.substring(0,1)==" "){oResponse=oResponse.substring(1,oResponse.length);}if(oResponse.indexOf("{")<0){bError=true;break;}if(oResponse.indexOf("{}")===0){break;}var jsonObjRaw=eval("("+oResponse+")");if(!jsonObjRaw){bError=true;break;}jsonList=eval("(jsonObjRaw."+aSchema[0]+")");}catch(e){bError=true;break;}}}}if(!jsonList){bError=true;break;}if(!YAHOO.lang.isArray(jsonList)){jsonList=[jsonList];}for(var i=jsonList.length-1;i>=0;i--){var aResultItem=[];var jsonResult=jsonList[i];for(var j=aSchema.length-1;j>=1;j--){var dataFieldValue=jsonResult[aSchema[j]];if(!dataFieldValue){dataFieldValue="";}aResultItem.unshift(dataFieldValue);}if(aResultItem.length==1){aResultItem.push(jsonResult);}aResults.unshift(aResultItem);}break;case YAHOO.widget.DS_XHR.TYPE_XML:var xmlList=oResponse.getElementsByTagName(aSchema[0]);if(!xmlList){bError=true;break;}for(var k=xmlList.length-1;k>=0;k--){var result=xmlList.item(k); |
| 5182 | 5182 | var aFieldSet=[];for(var m=aSchema.length-1;m>=1;m--){var sValue=null;var xmlAttr=result.attributes.getNamedItem(aSchema[m]);if(xmlAttr){sValue=xmlAttr.value;}else{var xmlNode=result.getElementsByTagName(aSchema[m]);if(xmlNode&&xmlNode.item(0)&&xmlNode.item(0).firstChild){sValue=xmlNode.item(0).firstChild.nodeValue;}else{sValue="";}}aFieldSet.unshift(sValue);}aResults.unshift(aFieldSet);}break;case YAHOO.widget.DS_XHR.TYPE_FLAT:if(oResponse.length>0){var newLength=oResponse.length-aSchema[0].length;if(oResponse.substr(newLength)==aSchema[0]){oResponse=oResponse.substr(0,newLength);}if(oResponse.length>0){var aRecords=oResponse.split(aSchema[0]);for(var n=aRecords.length-1;n>=0;n--){if(aRecords[n].length>0){aResults[n]=aRecords[n].split(aSchema[1]);}}}}break;default:break;}sQuery=null;oResponse=null;oParent=null;if(bError){return null;}else{return aResults;}};YAHOO.widget.DS_XHR.prototype._oConn=null;YAHOO.widget.DS_ScriptNode=function(D,A,C){if(C&&(C.constructor==Object)){for(var B in C){this[B]=C[B];}}if(!YAHOO.lang.isArray(A)||!YAHOO.lang.isString(D)){return ;}this.schema=A;this.scriptURI=D;this._init();};YAHOO.widget.DS_ScriptNode.prototype=new YAHOO.widget.DataSource();YAHOO.widget.DS_ScriptNode.prototype.getUtility=YAHOO.util.Get;YAHOO.widget.DS_ScriptNode.prototype.scriptURI=null;YAHOO.widget.DS_ScriptNode.prototype.scriptQueryParam="query";YAHOO.widget.DS_ScriptNode.prototype.asyncMode="allowAll";YAHOO.widget.DS_ScriptNode.prototype.scriptCallbackParam="callback";YAHOO.widget.DS_ScriptNode.callbacks=[];YAHOO.widget.DS_ScriptNode._nId=0;YAHOO.widget.DS_ScriptNode._nPending=0;YAHOO.widget.DS_ScriptNode.prototype.doQuery=function(A,F,C){var B=this;if(YAHOO.widget.DS_ScriptNode._nPending===0){YAHOO.widget.DS_ScriptNode.callbacks=[];YAHOO.widget.DS_ScriptNode._nId=0;}var E=YAHOO.widget.DS_ScriptNode._nId;YAHOO.widget.DS_ScriptNode._nId++;YAHOO.widget.DS_ScriptNode.callbacks[E]=function(G){if((B.asyncMode!=="ignoreStaleResponses")||(E===YAHOO.widget.DS_ScriptNode.callbacks.length-1)){B.handleResponse(G,A,F,C);}else{}delete YAHOO.widget.DS_ScriptNode.callbacks[E];};YAHOO.widget.DS_ScriptNode._nPending++;var D=this.scriptURI+"&"+this.scriptQueryParam+"="+F+"&"+this.scriptCallbackParam+"=YAHOO.widget.DS_ScriptNode.callbacks["+E+"]";this.getUtility.script(D,{autopurge:true,onsuccess:YAHOO.widget.DS_ScriptNode._bumpPendingDown,onfail:YAHOO.widget.DS_ScriptNode._bumpPendingDown});};YAHOO.widget.DS_ScriptNode.prototype.handleResponse=function(oResponse,oCallbackFn,sQuery,oParent){var aSchema=this.schema;var aResults=[];var bError=false;var jsonList,jsonObjParsed;try{jsonList=eval("(oResponse."+aSchema[0]+")");}catch(e){bError=true;}if(!jsonList){bError=true;jsonList=[];}else{if(!YAHOO.lang.isArray(jsonList)){jsonList=[jsonList];}}for(var i=jsonList.length-1;i>=0;i--){var aResultItem=[];var jsonResult=jsonList[i];for(var j=aSchema.length-1;j>=1;j--){var dataFieldValue=jsonResult[aSchema[j]];if(!dataFieldValue){dataFieldValue="";}aResultItem.unshift(dataFieldValue);}if(aResultItem.length==1){aResultItem.push(jsonResult);}aResults.unshift(aResultItem);}if(bError){aResults=null;}if(aResults===null){this.dataErrorEvent.fire(this,oParent,sQuery,YAHOO.widget.DataSource.ERROR_DATAPARSE);aResults=[];}else{var resultObj={};resultObj.query=decodeURIComponent(sQuery);resultObj.results=aResults;this._addCacheElem(resultObj);this.getResultsEvent.fire(this,oParent,sQuery,aResults);}oCallbackFn(sQuery,aResults,oParent);};YAHOO.widget.DS_ScriptNode._bumpPendingDown=function(){YAHOO.widget.DS_ScriptNode._nPending--;};YAHOO.widget.DS_JSFunction=function(A,C){if(C&&(C.constructor==Object)){for(var B in C){this[B]=C[B];}}if(!YAHOO.lang.isFunction(A)){return ;}else{this.dataFunction=A;this._init();}};YAHOO.widget.DS_JSFunction.prototype=new YAHOO.widget.DataSource();YAHOO.widget.DS_JSFunction.prototype.dataFunction=null;YAHOO.widget.DS_JSFunction.prototype.doQuery=function(C,F,D){var B=this.dataFunction;var E=[];E=B(F);if(E===null){this.dataErrorEvent.fire(this,D,F,YAHOO.widget.DataSource.ERROR_DATANULL);return ;}var A={};A.query=decodeURIComponent(F);A.results=E;this._addCacheElem(A);this.getResultsEvent.fire(this,D,F,E);C(F,E,D);return ;};YAHOO.widget.DS_JSArray=function(A,C){if(C&&(C.constructor==Object)){for(var B in C){this[B]=C[B];}}if(!YAHOO.lang.isArray(A)){return ;}else{this.data=A;this._init();}};YAHOO.widget.DS_JSArray.prototype=new YAHOO.widget.DataSource();YAHOO.widget.DS_JSArray.prototype.data=null;YAHOO.widget.DS_JSArray.prototype.doQuery=function(E,I,A){var F;var C=this.data;var J=[];var D=false;var B=this.queryMatchContains;if(I){if(!this.queryMatchCase){I=I.toLowerCase();}for(F=C.length-1;F>=0;F--){var H=[];if(YAHOO.lang.isString(C[F])){H[0]=C[F];}else{if(YAHOO.lang.isArray(C[F])){H=C[F];}}if(YAHOO.lang.isString(H[0])){var G=(this.queryMatchCase)?encodeURIComponent(H[0]).indexOf(I):encodeURIComponent(H[0]).toLowerCase().indexOf(I);if((!B&&(G===0))||(B&&(G>-1))){J.unshift(H);}}}}else{for(F=C.length-1;F>=0;F--){if(YAHOO.lang.isString(C[F])){J.unshift([C[F]]);}else{if(YAHOO.lang.isArray(C[F])){J.unshift(C[F]);}}}}this.getResultsEvent.fire(this,A,I,J);E(I,J,A);};YAHOO.register("autocomplete",YAHOO.widget.AutoComplete,{version:"2.5.2",build:"1076"}); |
| 5183 | -function cpaint(){this.version='2.0.3';var config=new Array();config['debugging']=-1;config['proxy_url']='';config['transfer_mode']='GET';config['async']=true;config['response_type']='OBJECT';config['persistent_connection']=false;config['use_cpaint_api']=true;var stack_count=0;this.capable=test_ajax_capability();this.set_debug=function(){if(typeof arguments[0]=='boolean'){if(arguments[0]===true){config['debugging']=1;}else{config['debugging']=0;}}else if(typeof arguments[0]=='number'){config['debugging']=Math.round(arguments[0]);}} | |
| 5184 | -this.set_proxy_url=function(){if(typeof arguments[0]=='string'){config['proxy_url']=arguments[0];}} | |
| 5185 | -this.set_transfer_mode=function(){if(arguments[0].toUpperCase()=='GET'||arguments[0].toUpperCase()=='POST'){config['transfer_mode']=arguments[0].toUpperCase();}} | |
| 5186 | -this.set_async=function(){if(typeof arguments[0]=='boolean'){config['async']=arguments[0];}} | |
| 5187 | -this.set_response_type=function(){if(arguments[0].toUpperCase()=='TEXT'||arguments[0].toUpperCase()=='XML'||arguments[0].toUpperCase()=='OBJECT'||arguments[0].toUpperCase()=='E4X'||arguments[0].toUpperCase()=='JSON'){config['response_type']=arguments[0].toUpperCase();}} | |
| 5188 | -this.set_persistent_connection=function(){if(typeof arguments[0]=='boolean'){config['persistent_connection']=arguments[0];}} | |
| 5189 | -this.set_use_cpaint_api=function(){if(typeof arguments[0]=='boolean'){config['use_cpaint_api']=arguments[0];}} | |
| 5190 | -function test_ajax_capability(){var cpc=new cpaint_call(0,config,this.version);return cpc.test_ajax_capability();} | |
| 5191 | -this.call=function(){var use_stack=-1;if(config['persistent_connection']==true&&__cpaint_stack[0]!=null){switch(__cpaint_stack[0].get_http_state()){case-1:use_stack=0;debug('no XMLHttpObject object to re-use for persistence, creating new one later',2);break;case 4:use_stack=0 | |
| 5192 | -debug('re-using the persistent connection',2);break;default:debug('the persistent connection is in use - skipping this request',2);}}else if(config['persistent_connection']==true){use_stack=0;__cpaint_stack[use_stack]=new cpaint_call(use_stack,config,this.version);debug('no cpaint_call object available for re-use, created new one',2);}else{use_stack=stack_count;__cpaint_stack[use_stack]=new cpaint_call(use_stack,config,this.version);debug('no cpaint_call object created new one',2);} | |
| 5193 | -if(use_stack!=-1){__cpaint_stack[use_stack].set_client_callback(arguments[2]);if(config['proxy_url']!=''){__cpaint_stack[use_stack].call_proxy(arguments);}else{__cpaint_stack[use_stack].call_direct(arguments);} | |
| 5194 | -stack_count++;debug('stack size: '+__cpaint_stack.length,2);}} | |
| 5195 | -var debug=function(message,debug_level){var prefix='[CPAINT Debug] ';if(debug_level<1){prefix='[CPAINT Error] ';} | |
| 5196 | -if(config['debugging']>=debug_level){alert(prefix+message);}if (message.search("error") > 1){client_callback("", message);}}} | |
| 5197 | -var __cpaint_stack=new Array();var __cpaint_transformer=new cpaint_transformer();function cpaint_call(){var version=arguments[2];var config=new Array();config['debugging']=arguments[1]['debugging'];config['proxy_url']=arguments[1]['proxy_url'];config['transfer_mode']=arguments[1]['transfer_mode'];config['async']=arguments[1]['async'];config['response_type']=arguments[1]['response_type'];config['persistent_connection']=arguments[1]['persistent_connection'];config['use_cpaint_api']=arguments[1]['use_cpaint_api'];var httpobj=false;var client_callback;var stack_id=arguments[0];this.set_client_callback=function(){if(typeof arguments[0]=='function'){client_callback=arguments[0];}} | |
| 5198 | -this.get_http_state=function(){var return_value=-1;if(typeof httpobj=='object'){return_value=httpobj.readyState;} | |
| 5199 | -return return_value;} | |
| 5200 | -this.call_direct=function(call_arguments){var url=call_arguments[0];var remote_method=call_arguments[1];var querystring='';var i=0;if(url=='SELF'){url=document.location.href;} | |
| 5201 | -if(config['use_cpaint_api']==true){for(i=3;i<call_arguments.length;i++){if((typeof call_arguments[i]=='string'&&call_arguments[i]!=''&&call_arguments[i].search(/^\s+$/g)==-1)&&!isNaN(call_arguments[i])&&isFinite(call_arguments[i])){querystring+='&cpaint_argument[]='+encodeURIComponent(JSON.stringify(Number(call_arguments[i])));}else{querystring+='&cpaint_argument[]='+encodeURIComponent(JSON.stringify(call_arguments[i]));}} | |
| 5202 | -querystring+='&cpaint_response_type='+config['response_type'];if(config['transfer_mode']=='GET'){if(url.indexOf('?')!=-1){url=url+'&cpaint_function='+remote_method+querystring;}else{url=url+'?cpaint_function='+remote_method+querystring;}}else{querystring='cpaint_function='+remote_method+querystring;}}else{for(i=3;i<call_arguments.length;i++){if(i==3){querystring+=encodeURIComponent(call_arguments[i]);}else{querystring+='&'+encodeURIComponent(call_arguments[i]);}} | |
| 5203 | -if(config['transfer_mode']=='GET'){url=url+querystring;}} | |
| 5204 | -get_connection_object();debug('opening connection to "'+url+'"',1);httpobj.open(config['transfer_mode'],url,config['async']);if(config['transfer_mode']=='POST'){try{httpobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}catch(cp_err){debug('POST cannot be completed due to incompatible browser. Use GET as your request method.',0);}} | |
| 5205 | -httpobj.setRequestHeader('X-Powered-By','CPAINT v'+version+' :: http://sf.net/projects/cpaint');httpobj.onreadystatechange=callback;if(config['transfer_mode']=='GET'){httpobj.send(null);}else{debug('sending query: '+querystring,1);httpobj.send(querystring);} | |
| 5206 | -if(config['async']==true){callback();}} | |
| 5207 | -this.call_proxy=function(call_arguments){var proxyscript=config['proxy_url'];var url=call_arguments[0];var remote_method=call_arguments[1];var querystring='';var i=0;var querystring_argument_prefix='cpaint_argument[]=';if(config['use_cpaint_api']==false){querystring_argument_prefix='';} | |
| 5208 | -for(i=3;i<call_arguments.length;i++){if(config['use_cpaint_api']==true){if((typeof call_arguments[i]=='string'&&call_arguments[i]!=''&&call_arguments[i].search(/^\s+$/g)==-1)&&!isNaN(call_arguments[i])&&isFinite(call_arguments[i])){querystring+=encodeURIComponent(querystring_argument_prefix+JSON.stringify(Number(call_arguments[i]))+'&');}else{querystring+=encodeURIComponent(querystring_argument_prefix+JSON.stringify(call_arguments[i])+'&');}}else{querystring+=encodeURIComponent(querystring_argument_prefix+call_arguments[i]+'&');}} | |
| 5209 | -if(config['use_cpaint_api']==true){querystring+=encodeURIComponent('&cpaint_function='+remote_method);querystring+=encodeURIComponent('&cpaint_responsetype='+config['response_type']);} | |
| 5210 | -if(config['transfer_mode']=='GET'){proxyscript+='?cpaint_remote_url='+encodeURIComponent(url) | |
| 5211 | -+'&cpaint_remote_query='+querystring | |
| 5212 | -+'&cpaint_remote_method='+config['transfer_mode'] | |
| 5213 | -+'&cpaint_response_type='+config['response_type'];}else{querystring='cpaint_remote_url='+encodeURIComponent(url) | |
| 5214 | -+'&cpaint_remote_query='+querystring | |
| 5215 | -+'&cpaint_remote_method='+config['transfer_mode'] | |
| 5216 | -+'&cpaint_response_type='+config['response_type'];} | |
| 5217 | -get_connection_object();debug('opening connection to proxy "'+proxyscript+'"',1);httpobj.open(config['transfer_mode'],proxyscript,config['async']);if(config['transfer_mode']=='POST'){try{httpobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}catch(cp_err){debug('POST cannot be completed due to incompatible browser. Use GET as your request method.',0);}} | |
| 5218 | -httpobj.setRequestHeader('X-Powered-By','CPAINT v'+version);httpobj.onreadystatechange=callback;if(config['transfer_mode']=='GET'){httpobj.send(null);}else{debug('sending query: '+querystring,1);httpobj.send(querystring);} | |
| 5219 | -if(config['async']==false){callback();}} | |
| 5220 | -this.test_ajax_capability=function(){return get_connection_object();} | |
| 5221 | -var get_connection_object=function(){var return_value=false;var new_connection=false;if(config['persistent_connection']==false){debug('Using new connection object',1);new_connection=true;}else{debug('Using shared connection object.',1);if(typeof httpobj!='object'){debug('Getting new persistent connection object.',1);new_connection=true;}} | |
| 5222 | -if(new_connection==true){try{httpobj=new XMLHttpRequest();}catch(e1){try{httpobj=new ActiveXObject('Msxml2.XMLHTTP');}catch(e){try{httpobj=new ActiveXObject('Microsoft.XMLHTTP');}catch(oc){httpobj=null;}}} | |
| 5223 | -if(!httpobj){debug('Could not create connection object',0);}else{return_value=true;}} | |
| 5224 | -if(httpobj.readyState!=4){httpobj.abort();} | |
| 5225 | -return return_value;} | |
| 5226 | -var callback=function(){var response=null;if(httpobj.readyState==4&&httpobj.status==200){debug(httpobj.responseText,1);debug('using response type '+config['response_type'],2);switch(config['response_type']){case'XML':debug(httpobj.responseXML,2);response=__cpaint_transformer.xml_conversion(httpobj.responseXML);break;case'OBJECT':response=__cpaint_transformer.object_conversion(httpobj.responseXML);break;case'TEXT':response=__cpaint_transformer.text_conversion(httpobj.responseText);break;case'E4X':response=__cpaint_transformer.e4x_conversion(httpobj.responseText);break;case'JSON':response=__cpaint_transformer.json_conversion(httpobj.responseText);break;default:debug('invalid response type \''+response_type+'\'',0);} | |
| 5227 | -if(response!=null&&typeof client_callback=='function'){client_callback(response,httpobj.responseText);} | |
| 5228 | -remove_from_stack();}else if(httpobj.readyState==4&&httpobj.status!=200){debug('invalid HTTP response code \''+Number(httpobj.status)+'\'',0);client_callback("", "erro");}} | |
| 5229 | -var remove_from_stack=function(){if(typeof stack_id=='number'&&__cpaint_stack[stack_id]&&config['persistent_connection']==false){__cpaint_stack[stack_id]=null;}} | |
| 5230 | -var debug=function(message,debug_level){var prefix='[CPAINT Debug] ';if(config['debugging']<1){prefix='[CPAINT Error] ';if (message.search(" error") > 1){client_callback("", message);}} | |
| 5231 | -if(config['debugging']>=debug_level){alert(prefix+message);}}} | |
| 5232 | -function cpaint_transformer(){this.object_conversion=function(xml_document){var return_value=new cpaint_result_object();var i=0;var firstNodeName='';if(typeof xml_document=='object'&&xml_document!=null){for(i=0;i<xml_document.childNodes.length;i++){if(xml_document.childNodes[i].nodeType==1){firstNodeName=xml_document.childNodes[i].nodeName;break;}} | |
| 5233 | -var ajax_response=xml_document.getElementsByTagName(firstNodeName);return_value[firstNodeName]=new Array();for(i=0;i<ajax_response.length;i++){var tmp_node=create_object_structure(ajax_response[i]);tmp_node.id=ajax_response[i].getAttribute('id') | |
| 5234 | -return_value[firstNodeName].push(tmp_node);}}else{debug('received invalid XML response',0);} | |
| 5235 | -return return_value;} | |
| 5236 | -this.xml_conversion=function(xml_document){return xml_document;} | |
| 5237 | -this.text_conversion=function(text){return decode(text);} | |
| 5238 | -this.e4x_conversion=function(text){text=text.replace(/^\<\?xml[^>]+\>/,'');return new XML(text);} | |
| 5239 | -this.json_conversion=function(text){return JSON.parse(text);} | |
| 5240 | -var create_object_structure=function(stream){var return_value=new cpaint_result_object();var node_name='';var i=0;var attrib=0;if(stream.hasChildNodes()==true){for(i=0;i<stream.childNodes.length;i++){node_name=stream.childNodes[i].nodeName;node_name=node_name.replace(/[^a-zA-Z0-9_]*/g,'');if(typeof return_value[node_name]!='object'){return_value[node_name]=new Array();} | |
| 5241 | -if(stream.childNodes[i].nodeType==1){var tmp_node=create_object_structure(stream.childNodes[i]);for(attrib=0;attrib<stream.childNodes[i].attributes.length;attrib++){tmp_node.set_attribute(stream.childNodes[i].attributes[attrib].nodeName,stream.childNodes[i].attributes[attrib].nodeValue);} | |
| 5242 | -return_value[node_name].push(tmp_node);}else if(stream.childNodes[i].nodeType==3){return_value.data=decode(String(stream.firstChild.data));}}} | |
| 5243 | -return return_value;} | |
| 5244 | -var decode=function(rawtext){var plaintext='';var i=0;var c1=0;var c2=0;var c3=0;var u=0;var t=0;while(i<rawtext.length){if(rawtext.charAt(i)=='\\'&&rawtext.charAt(i+1)=='u'){u=0;for(j=2;j<6;j+=1){t=parseInt(rawtext.charAt(i+j),16);if(!isFinite(t)){break;} | |
| 5245 | -u=u*16+t;} | |
| 5246 | -plaintext+=String.fromCharCode(u);i+=6;}else{plaintext+=rawtext.charAt(i);i++;}} | |
| 5247 | -if(plaintext!=''&&plaintext.search(/^\s+$/g)==-1&&!isNaN(plaintext)&&isFinite(plaintext)){plaintext=Number(plaintext);} | |
| 5248 | -return plaintext;}} | |
| 5249 | -function cpaint_result_object(){this.id=0;this.data='';var __attributes=new Array();this.find_item_by_id=function(){var return_value=null;var type=arguments[0];var id=arguments[1];var i=0;if(this[type]){for(i=0;i<this[type].length;i++){if(this[type][i].get_attribute('id')==id){return_value=this[type][i];break;}}} | |
| 5250 | -return return_value;} | |
| 5251 | -this.get_attribute=function(){var return_value=null;var id=arguments[0];if(typeof __attributes[id]!='undefined'){return_value=__attributes[id];} | |
| 5252 | -return return_value;} | |
| 5253 | -this.set_attribute=function(){__attributes[arguments[0]]=arguments[1];}} | |
| 5254 | -Array.prototype.______array='______array';var JSON={org:'http://www.JSON.org',copyright:'(c)2005 JSON.org',license:'http://www.crockford.com/JSON/license.html',stringify:function(arg){var c,i,l,s='',v;var numeric=true;switch(typeof arg){case'object':if(arg){if(arg.______array=='______array'){for(i in arg){if(i!='______array'&&(isNaN(i)||!isFinite(i))){numeric=false;break;}} | |
| 5255 | -if(numeric==true){for(i=0;i<arg.length;++i){if(typeof arg[i]!='undefined'){v=this.stringify(arg[i]);if(s){s+=',';} | |
| 5256 | -s+=v;}else{s+=',null';}} | |
| 5257 | -return'['+s+']';}else{for(i in arg){if(i!='______array'){v=arg[i];if(typeof v!='undefined'&&typeof v!='function'){v=this.stringify(v);if(s){s+=',';} | |
| 5258 | -s+=this.stringify(i)+':'+v;}}} | |
| 5259 | -return'{'+s+'}';}}else if(typeof arg.toString!='undefined'){for(i in arg){v=arg[i];if(typeof v!='undefined'&&typeof v!='function'){v=this.stringify(v);if(s){s+=',';} | |
| 5260 | -s+=this.stringify(i)+':'+v;}} | |
| 5261 | -return'{'+s+'}';}} | |
| 5262 | -return'null';case'number':return isFinite(arg)?String(arg):'null';case'string':l=arg.length;s='"';for(i=0;i<l;i+=1){c=arg.charAt(i);if(c>=' '){if(c=='\\'||c=='"'){s+='\\';} | |
| 5263 | -s+=c;}else{switch(c){case'\b':s+='\\b';break;case'\f':s+='\\f';break;case'\n':s+='\\n';break;case'\r':s+='\\r';break;case'\t':s+='\\t';break;default:c=c.charCodeAt();s+='\\u00'+Math.floor(c/16).toString(16)+ | |
| 5264 | -(c%16).toString(16);}}} | |
| 5265 | -return s+'"';case'boolean':return String(arg);default:return'null';}},parse:function(text){var at=0;var ch=' ';function error(m){throw{name:'JSONError',message:m,at:at-1,text:text};} | |
| 5266 | -function next(){ch=text.charAt(at);at+=1;return ch;} | |
| 5267 | -function white(){while(ch!=''&&ch<=' '){next();}} | |
| 5268 | -function str(){var i,s='',t,u;if(ch=='"'){outer:while(next()){if(ch=='"'){next();return s;}else if(ch=='\\'){switch(next()){case'b':s+='\b';break;case'f':s+='\f';break;case'n':s+='\n';break;case'r':s+='\r';break;case't':s+='\t';break;case'u':u=0;for(i=0;i<4;i+=1){t=parseInt(next(),16);if(!isFinite(t)){break outer;} | |
| 5269 | -u=u*16+t;} | |
| 5270 | -s+=String.fromCharCode(u);break;default:s+=ch;}}else{s+=ch;}}} | |
| 5271 | -error("Bad string");} | |
| 5272 | -function arr(){var a=[];if(ch=='['){next();white();if(ch==']'){next();return a;} | |
| 5273 | -while(ch){a.push(val());white();if(ch==']'){next();return a;}else if(ch!=','){break;} | |
| 5274 | -next();white();}} | |
| 5275 | -error("Bad array");} | |
| 5276 | -function obj(){var k,o={};if(ch=='{'){next();white();if(ch=='}'){next();return o;} | |
| 5277 | -while(ch){k=str();white();if(ch!=':'){break;} | |
| 5278 | -next();o[k]=val();white();if(ch=='}'){next();return o;}else if(ch!=','){break;} | |
| 5279 | -next();white();}} | |
| 5280 | -error("Bad object");} | |
| 5281 | -function assoc(){var k,a=[];if(ch=='<'){next();white();if(ch=='>'){next();return a;} | |
| 5282 | -while(ch){k=str();white();if(ch!=':'){break;} | |
| 5283 | -next();a[k]=val();white();if(ch=='>'){next();return a;}else if(ch!=','){break;} | |
| 5284 | -next();white();}} | |
| 5285 | -error("Bad associative array");} | |
| 5286 | -function num(){var n='',v;if(ch=='-'){n='-';next();} | |
| 5287 | -while(ch>='0'&&ch<='9'){n+=ch;next();} | |
| 5288 | -if(ch=='.'){n+='.';while(next()&&ch>='0'&&ch<='9'){n+=ch;}} | |
| 5289 | -if(ch=='e'||ch=='E'){n+='e';next();if(ch=='-'||ch=='+'){n+=ch;next();} | |
| 5290 | -while(ch>='0'&&ch<='9'){n+=ch;next();}} | |
| 5291 | -v=+n;if(!isFinite(v)){error("Bad number");}else{return v;}} | |
| 5292 | -function word(){switch(ch){case't':if(next()=='r'&&next()=='u'&&next()=='e'){next();return true;} | |
| 5293 | -break;case'f':if(next()=='a'&&next()=='l'&&next()=='s'&&next()=='e'){next();return false;} | |
| 5294 | -break;case'n':if(next()=='u'&&next()=='l'&&next()=='l'){next();return null;} | |
| 5295 | -break;} | |
| 5296 | -error("Syntax error");} | |
| 5297 | -function val(){white();switch(ch){case'{':return obj();case'[':return arr();case'<':return assoc();case'"':return str();case'-':return num();default:return ch>='0'&&ch<='9'?num():word();}} | |
| 5298 | -return val();}}; | |
| 5183 | +/** | |
| 5184 | +* CPAINT - Cross-Platform Asynchronous INterface Toolkit | |
| 5185 | +* | |
| 5186 | +* http://sf.net/projects/cpaint | |
| 5187 | +* | |
| 5188 | +* released under the terms of the LGPL | |
| 5189 | +* see http://www.fsf.org/licensing/licenses/lgpl.txt for details | |
| 5190 | +* | |
| 5191 | +* @package CPAINT | |
| 5192 | +* @access public | |
| 5193 | +* @copyright Copyright (c) 2005-2006 Paul Sullivan, Dominique Stender - http://sf.net/projects/cpaint | |
| 5194 | +* @author Paul Sullivan <wiley14@gmail.com> | |
| 5195 | +* @author Dominique Stender <dstender@st-webdevelopment.de> | |
| 5196 | +* @author Stephan Tijink <stijink@googlemail.com> | |
| 5197 | +* @version 2.0.3 | |
| 5198 | +*/ | |
| 5199 | +function cpaint() { | |
| 5200 | + /** | |
| 5201 | + * CPAINT version | |
| 5202 | + * | |
| 5203 | + * @access protected | |
| 5204 | + * @var string version | |
| 5205 | + */ | |
| 5206 | + this.version = '2.0.3'; | |
| 5207 | + | |
| 5208 | + /** | |
| 5209 | + * configuration options both for this class but also for the cpaint_call() objects. | |
| 5210 | + * | |
| 5211 | + * @access protected | |
| 5212 | + * @var array config | |
| 5213 | + */ | |
| 5214 | + var config = new Array(); | |
| 5215 | + config['debugging'] = -1; | |
| 5216 | + config['proxy_url'] = ''; | |
| 5217 | + config['transfer_mode'] = 'GET'; | |
| 5218 | + config['async'] = true; | |
| 5219 | + config['response_type'] = 'OBJECT'; | |
| 5220 | + config['persistent_connection'] = false; | |
| 5221 | + config['use_cpaint_api'] = true; | |
| 5222 | + | |
| 5223 | + /** | |
| 5224 | + * maintains the next free index in the stack | |
| 5225 | + * | |
| 5226 | + * @access protected | |
| 5227 | + * @var integer stack_count | |
| 5228 | + */ | |
| 5229 | + var stack_count = 0; | |
| 5230 | + | |
| 5231 | + /** | |
| 5232 | + * property returns whether or not the browser is AJAX capable | |
| 5233 | + * | |
| 5234 | + * @access public | |
| 5235 | + * @return boolean | |
| 5236 | + */ | |
| 5237 | + this.capable = test_ajax_capability(); | |
| 5238 | + | |
| 5239 | + /** | |
| 5240 | + * switches debug mode on/off. | |
| 5241 | + * | |
| 5242 | + * @access public | |
| 5243 | + * @param boolean debug debug flag | |
| 5244 | + * @return void | |
| 5245 | + */ | |
| 5246 | + this.set_debug = function() { | |
| 5247 | + | |
| 5248 | + if (typeof arguments[0] == 'boolean') { | |
| 5249 | + if (arguments[0] === true) { | |
| 5250 | + config['debugging'] = 1; | |
| 5251 | + | |
| 5252 | + } else { | |
| 5253 | + config['debugging'] = 0; | |
| 5254 | + } | |
| 5255 | + | |
| 5256 | + } else if (typeof arguments[0] == 'number') { | |
| 5257 | + config['debugging'] = Math.round(arguments[0]); | |
| 5258 | + } | |
| 5259 | + } | |
| 5260 | + | |
| 5261 | + /** | |
| 5262 | + * defines the URL of the proxy script. | |
| 5263 | + * | |
| 5264 | + * @access public | |
| 5265 | + * @param string proxy_url URL of the proxyscript to connect | |
| 5266 | + * @return void | |
| 5267 | + */ | |
| 5268 | + this.set_proxy_url = function() { | |
| 5269 | + | |
| 5270 | + if (typeof arguments[0] == 'string') { | |
| 5271 | + | |
| 5272 | + config['proxy_url'] = arguments[0]; | |
| 5273 | + } | |
| 5274 | + } | |
| 5275 | + | |
| 5276 | + /** | |
| 5277 | + * sets the transfer_mode (GET|POST). | |
| 5278 | + * | |
| 5279 | + * @access public | |
| 5280 | + * @param string transfer_mode transfer_mode | |
| 5281 | + * @return void | |
| 5282 | + */ | |
| 5283 | + this.set_transfer_mode = function() { | |
| 5284 | + | |
| 5285 | + if (arguments[0].toUpperCase() == 'GET' | |
| 5286 | + || arguments[0].toUpperCase() == 'POST') { | |
| 5287 | + | |
| 5288 | + config['transfer_mode'] = arguments[0].toUpperCase(); | |
| 5289 | + } | |
| 5290 | + } | |
| 5291 | + | |
| 5292 | + /** | |
| 5293 | + * sets the flag whether or not to use asynchronous calls. | |
| 5294 | + * | |
| 5295 | + * @access public | |
| 5296 | + * @param boolean async syncronization flag | |
| 5297 | + * @return void | |
| 5298 | + */ | |
| 5299 | + this.set_async = function() { | |
| 5300 | + | |
| 5301 | + if (typeof arguments[0] == 'boolean') { | |
| 5302 | + config['async'] = arguments[0]; | |
| 5303 | + } | |
| 5304 | + } | |
| 5305 | + | |
| 5306 | + /** | |
| 5307 | + * defines the response type. | |
| 5308 | + * | |
| 5309 | + * allowed values are: | |
| 5310 | + * TEXT = raw text response | |
| 5311 | + * XML = raw XMLHttpObject | |
| 5312 | + * OBJECT = parsed JavaScript object structure from XMLHttpObject | |
| 5313 | + * | |
| 5314 | + * the default is OBJECT. | |
| 5315 | + * | |
| 5316 | + * @access public | |
| 5317 | + * @param string response_type response type | |
| 5318 | + * @return void | |
| 5319 | + */ | |
| 5320 | + this.set_response_type = function() { | |
| 5321 | + | |
| 5322 | + if (arguments[0].toUpperCase() == 'TEXT' | |
| 5323 | + || arguments[0].toUpperCase() == 'XML' | |
| 5324 | + || arguments[0].toUpperCase() == 'OBJECT' | |
| 5325 | + || arguments[0].toUpperCase() == 'E4X' | |
| 5326 | + || arguments[0].toUpperCase() == 'JSON') { | |
| 5327 | + | |
| 5328 | + config['response_type'] = arguments[0].toUpperCase(); | |
| 5329 | + } | |
| 5330 | + } | |
| 5331 | + | |
| 5332 | + /** | |
| 5333 | + * sets the flag whether or not to use a persistent connection. | |
| 5334 | + * | |
| 5335 | + * @access public | |
| 5336 | + * @param boolean persistent_connection persistance flag | |
| 5337 | + * @return void | |
| 5338 | + */ | |
| 5339 | + this.set_persistent_connection = function() { | |
| 5340 | + | |
| 5341 | + if (typeof arguments[0] == 'boolean') { | |
| 5342 | + config['persistent_connection'] = arguments[0]; | |
| 5343 | + } | |
| 5344 | + } | |
| 5345 | + | |
| 5346 | + | |
| 5347 | + /** | |
| 5348 | + * sets the flag whether or not to use the cpaint api on the backend. | |
| 5349 | + * | |
| 5350 | + * @access public | |
| 5351 | + * @param boolean cpaint_api api_flag | |
| 5352 | + * @return void | |
| 5353 | + */ | |
| 5354 | + this.set_use_cpaint_api = function() { | |
| 5355 | + if (typeof arguments[0] == 'boolean') { | |
| 5356 | + config['use_cpaint_api'] = arguments[0]; | |
| 5357 | + } | |
| 5358 | + } | |
| 5359 | + | |
| 5360 | + /** | |
| 5361 | + * tests whether one of the necessary implementations | |
| 5362 | + * of the XMLHttpRequest class are available | |
| 5363 | + * | |
| 5364 | + * @access protected | |
| 5365 | + * @return boolean | |
| 5366 | + */ | |
| 5367 | + function test_ajax_capability() { | |
| 5368 | + var cpc = new cpaint_call(0, config, this.version); | |
| 5369 | + return cpc.test_ajax_capability(); | |
| 5370 | + } | |
| 5371 | + | |
| 5372 | + /** | |
| 5373 | + * takes the arguments supplied and triggers a call to the CPAINT backend | |
| 5374 | + * based on the settings. | |
| 5375 | + * | |
| 5376 | + * upon response cpaint_call.callback() will automatically be called | |
| 5377 | + * to perform post-processing operations. | |
| 5378 | + * | |
| 5379 | + * @access public | |
| 5380 | + * @param string url remote URL to call | |
| 5381 | + * @param string remote_method remote method to call | |
| 5382 | + * @param object client_callback client side callback method to deliver the remote response to. do NOT supply a string! | |
| 5383 | + * @param mixed argN remote parameters from now on | |
| 5384 | + * @return void | |
| 5385 | + */ | |
| 5386 | + this.call = function() { | |
| 5387 | + //incluido por edmar | |
| 5388 | + var sUrl = escape(arguments[0]); | |
| 5389 | + var re = new RegExp("%3F", "g"); | |
| 5390 | + var sUrl = sUrl.replace(re,'?'); | |
| 5391 | + var re = new RegExp("%3D", "g"); | |
| 5392 | + var sUrl = sUrl.replace(re,'='); | |
| 5393 | + var re = new RegExp("%26", "g"); | |
| 5394 | + var sUrl = sUrl.replace(re,'&'); | |
| 5395 | + var re = new RegExp("%3A", "g"); | |
| 5396 | + var sUrl = sUrl.replace(re,':'); | |
| 5397 | + //alert(sUrl) | |
| 5398 | + arguments[0] = sUrl; | |
| 5399 | + // | |
| 5400 | + var use_stack = -1; | |
| 5401 | + | |
| 5402 | + if (config['persistent_connection'] == true | |
| 5403 | + && __cpaint_stack[0] != null) { | |
| 5404 | + | |
| 5405 | + switch (__cpaint_stack[0].get_http_state()) { | |
| 5406 | + case -1: | |
| 5407 | + // no XMLHttpObject object has already been instanciated | |
| 5408 | + // create new object and configure it | |
| 5409 | + use_stack = 0; | |
| 5410 | + debug('no XMLHttpObject object to re-use for persistence, creating new one later', 2); | |
| 5411 | + break; | |
| 5412 | + | |
| 5413 | + case 4: | |
| 5414 | + // object is ready for a new request, no need to do anything | |
| 5415 | + use_stack = 0 | |
| 5416 | + debug('re-using the persistent connection', 2); | |
| 5417 | + break; | |
| 5418 | + | |
| 5419 | + default: | |
| 5420 | + // connection is currently in use, don't do anything | |
| 5421 | + debug('the persistent connection is in use - skipping this request', 2); | |
| 5422 | + } | |
| 5423 | + | |
| 5424 | + } else if (config['persistent_connection'] == true) { | |
| 5425 | + // persistent connection is active, but no object has been instanciated | |
| 5426 | + use_stack = 0; | |
| 5427 | + __cpaint_stack[use_stack] = new cpaint_call(use_stack, config, this.version); | |
| 5428 | + debug('no cpaint_call object available for re-use, created new one', 2); | |
| 5429 | + | |
| 5430 | + } else { | |
| 5431 | + // no connection persistance | |
| 5432 | + use_stack = stack_count; | |
| 5433 | + __cpaint_stack[use_stack] = new cpaint_call(use_stack, config, this.version); | |
| 5434 | + debug('no cpaint_call object created new one', 2); | |
| 5435 | + } | |
| 5436 | + | |
| 5437 | + // configure cpaint_call if allowed to | |
| 5438 | + if (use_stack != -1) { | |
| 5439 | + __cpaint_stack[use_stack].set_client_callback(arguments[2]); | |
| 5440 | + | |
| 5441 | + // distribute according to proxy use | |
| 5442 | + if (config['proxy_url'] != '') { | |
| 5443 | + __cpaint_stack[use_stack].call_proxy(arguments); | |
| 5444 | + | |
| 5445 | + } else { | |
| 5446 | + __cpaint_stack[use_stack].call_direct(arguments); | |
| 5447 | + } | |
| 5448 | + | |
| 5449 | + // increase stack counter | |
| 5450 | + stack_count++; | |
| 5451 | + debug('stack size: ' + __cpaint_stack.length, 2); | |
| 5452 | + } | |
| 5453 | + } | |
| 5454 | + | |
| 5455 | + /** | |
| 5456 | + * debug method | |
| 5457 | + * | |
| 5458 | + * @access protected | |
| 5459 | + * @param string message the message to debug | |
| 5460 | + * @param integer debug_level debug level at which the message appears | |
| 5461 | + * @return void | |
| 5462 | + */ | |
| 5463 | + var debug = function(message, debug_level) { | |
| 5464 | + var prefix = '[CPAINT Debug] '; | |
| 5465 | + | |
| 5466 | + if (debug_level < 1) { | |
| 5467 | + prefix = '[CPAINT Error] '; | |
| 5468 | + } | |
| 5469 | + | |
| 5470 | + if (config['debugging'] >= debug_level) { | |
| 5471 | + alert(prefix + message); | |
| 5472 | + } | |
| 5473 | + } | |
| 5474 | +} | |
| 5475 | + | |
| 5476 | +/** | |
| 5477 | +* internal FIFO stack of cpaint_call() objects. | |
| 5478 | +* | |
| 5479 | +* @access protected | |
| 5480 | +* @var array __cpaint_stack | |
| 5481 | +*/ | |
| 5482 | +var __cpaint_stack = new Array(); | |
| 5483 | + | |
| 5484 | +/** | |
| 5485 | +* local instance of cpaint_transformer | |
| 5486 | +* MSIE is unable to handle static classes... sheesh. | |
| 5487 | +* | |
| 5488 | +* @access public | |
| 5489 | +* @var object __cpaint_transformer | |
| 5490 | +*/ | |
| 5491 | +var __cpaint_transformer = new cpaint_transformer(); | |
| 5492 | + | |
| 5493 | +/** | |
| 5494 | +* transport agent class | |
| 5495 | +* | |
| 5496 | +* creates the request object, takes care of the response, handles the | |
| 5497 | +* client callback. Is configured by the cpaint() object. | |
| 5498 | +* | |
| 5499 | +* @package CPAINT | |
| 5500 | +* @access public | |
| 5501 | +* @copyright Copyright (c) 2005-2006 Paul Sullivan, Dominique Stender - http://sf.net/projects/cpaint | |
| 5502 | +* @author Dominique Stender <dstender@st-webdevelopment.de> | |
| 5503 | +* @author Paul Sullivan <wiley14@gmail.com> | |
| 5504 | +* @param integer stack_id stack Id in cpaint | |
| 5505 | +* @param array config configuration array for this call | |
| 5506 | +* @param string version CPAINT API version | |
| 5507 | +*/ | |
| 5508 | +function cpaint_call() { | |
| 5509 | + /** | |
| 5510 | + * CPAINT version | |
| 5511 | + * | |
| 5512 | + * @access protected | |
| 5513 | + * @var string version | |
| 5514 | + */ | |
| 5515 | + var version = arguments[2]; | |
| 5516 | + | |
| 5517 | + /** | |
| 5518 | + * configuration options both for this class objects. | |
| 5519 | + * | |
| 5520 | + * @access protected | |
| 5521 | + * @var array config | |
| 5522 | + */ | |
| 5523 | + var config = new Array(); | |
| 5524 | + config['debugging'] = arguments[1]['debugging']; | |
| 5525 | + config['proxy_url'] = arguments[1]['proxy_url']; | |
| 5526 | + config['transfer_mode'] = arguments[1]['transfer_mode']; | |
| 5527 | + config['async'] = arguments[1]['async']; | |
| 5528 | + config['response_type'] = arguments[1]['response_type']; | |
| 5529 | + config['persistent_connection'] = arguments[1]['persistent_connection']; | |
| 5530 | + config['use_cpaint_api'] = arguments[1]['use_cpaint_api']; | |
| 5531 | + | |
| 5532 | + /** | |
| 5533 | + * XMLHttpObject used for this request. | |
| 5534 | + * | |
| 5535 | + * @access protected | |
| 5536 | + * @var object httpobj | |
| 5537 | + */ | |
| 5538 | + var httpobj = false; | |
| 5539 | + | |
| 5540 | + /** | |
| 5541 | + * client callback function. | |
| 5542 | + * | |
| 5543 | + * @access public | |
| 5544 | + * @var function client_callback | |
| 5545 | + */ | |
| 5546 | + var client_callback; | |
| 5547 | + | |
| 5548 | + /** | |
| 5549 | + * stores the stack Id within the cpaint object | |
| 5550 | + * | |
| 5551 | + * @access protected | |
| 5552 | + * @var stack_id | |
| 5553 | + */ | |
| 5554 | + var stack_id = arguments[0]; | |
| 5555 | + | |
| 5556 | + /** | |
| 5557 | + * sets the client callback function. | |
| 5558 | + * | |
| 5559 | + * @access public | |
| 5560 | + * @param function client_callback the client callback function | |
| 5561 | + * @return void | |
| 5562 | + */ | |
| 5563 | + this.set_client_callback = function() { | |
| 5564 | + | |
| 5565 | + if (typeof arguments[0] == 'function') { | |
| 5566 | + client_callback = arguments[0]; | |
| 5567 | + } | |
| 5568 | + } | |
| 5569 | + | |
| 5570 | + /** | |
| 5571 | + * returns the ready state of the internal XMLHttpObject | |
| 5572 | + * | |
| 5573 | + * if no such object was set up already, -1 is returned | |
| 5574 | + * | |
| 5575 | + * @access public | |
| 5576 | + * @return integer | |
| 5577 | + */ | |
| 5578 | + this.get_http_state = function() { | |
| 5579 | + var return_value = -1; | |
| 5580 | + | |
| 5581 | + if (typeof httpobj == 'object') { | |
| 5582 | + return_value = httpobj.readyState; | |
| 5583 | + } | |
| 5584 | + | |
| 5585 | + return return_value; | |
| 5586 | + } | |
| 5587 | + | |
| 5588 | + /** | |
| 5589 | + * internal method for remote calls to the local server without use of the proxy script. | |
| 5590 | + * | |
| 5591 | + * @access public | |
| 5592 | + * @param array call_arguments array of arguments initially passed to cpaint.call() | |
| 5593 | + * @return void | |
| 5594 | + */ | |
| 5595 | + this.call_direct = function(call_arguments) { | |
| 5596 | + var url = call_arguments[0]; | |
| 5597 | + var remote_method = call_arguments[1]; | |
| 5598 | + var querystring = ''; | |
| 5599 | + var i = 0; | |
| 5600 | + | |
| 5601 | + // correct link to self | |
| 5602 | + if (url == 'SELF') { | |
| 5603 | + url = document.location.href; | |
| 5604 | + } | |
| 5605 | + | |
| 5606 | + if (config['use_cpaint_api'] == true) { | |
| 5607 | + // backend uses cpaint api | |
| 5608 | + // pass parameters to remote method | |
| 5609 | + for (i = 3; i < call_arguments.length; i++) { | |
| 5610 | + | |
| 5611 | + if ((typeof call_arguments[i] == 'string' | |
| 5612 | + && call_arguments[i] != '' | |
| 5613 | + && call_arguments[i].search(/^\s+$/g) == -1) | |
| 5614 | + && !isNaN(call_arguments[i]) | |
| 5615 | + && isFinite(call_arguments[i])) { | |
| 5616 | + // numerical value, convert it first | |
| 5617 | + querystring += '&cpaint_argument[]=' + encodeURIComponent(JSON.stringify(Number(call_arguments[i]))); | |
| 5618 | + | |
| 5619 | + } else { | |
| 5620 | + querystring += '&cpaint_argument[]=' + encodeURIComponent(JSON.stringify(call_arguments[i])); | |
| 5621 | + } | |
| 5622 | + } | |
| 5623 | + | |
| 5624 | + // add response type to querystring | |
| 5625 | + querystring += '&cpaint_response_type=' + config['response_type']; | |
| 5626 | + | |
| 5627 | + // build header | |
| 5628 | + if (config['transfer_mode'] == 'GET') { | |
| 5629 | + | |
| 5630 | + if(url.indexOf('?') != -1) { | |
| 5631 | + url = url + '&cpaint_function=' + remote_method + querystring; | |
| 5632 | + | |
| 5633 | + } else { | |
| 5634 | + url = url + '?cpaint_function=' + remote_method + querystring; | |
| 5635 | + } | |
| 5636 | + | |
| 5637 | + } else { | |
| 5638 | + querystring = 'cpaint_function=' + remote_method + querystring; | |
| 5639 | + } | |
| 5640 | + | |
| 5641 | + } else { | |
| 5642 | + // backend does not use cpaint api | |
| 5643 | + // pass parameters to remote method | |
| 5644 | + for (i = 3; i < call_arguments.length; i++) { | |
| 5645 | + | |
| 5646 | + if (i == 3) { | |
| 5647 | + querystring += encodeURIComponent(call_arguments[i]); | |
| 5648 | + | |
| 5649 | + } else { | |
| 5650 | + querystring += '&' + encodeURIComponent(call_arguments[i]); | |
| 5651 | + } | |
| 5652 | + } | |
| 5653 | + | |
| 5654 | + // build header | |
| 5655 | + if (config['transfer_mode'] == 'GET') { | |
| 5656 | + url = url + querystring; | |
| 5657 | + } | |
| 5658 | + } | |
| 5659 | + | |
| 5660 | + // open connection | |
| 5661 | + get_connection_object(); | |
| 5662 | + | |
| 5663 | + // open connection to remote target | |
| 5664 | + debug('opening connection to "' + url + '"', 1); | |
| 5665 | + httpobj.open(config['transfer_mode'], url, config['async']); | |
| 5666 | + | |
| 5667 | + // send "urlencoded" header if necessary (if POST) | |
| 5668 | + if (config['transfer_mode'] == 'POST') { | |
| 5669 | + | |
| 5670 | + try { | |
| 5671 | + httpobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); | |
| 5672 | + | |
| 5673 | + } catch (cp_err) { | |
| 5674 | + debug('POST cannot be completed due to incompatible browser. Use GET as your request method.', 0); | |
| 5675 | + } | |
| 5676 | + } | |
| 5677 | + | |
| 5678 | + // make ourselves known | |
| 5679 | + httpobj.setRequestHeader('X-Powered-By', 'CPAINT v' + version + ' :: http://sf.net/projects/cpaint'); | |
| 5680 | + | |
| 5681 | + // callback handling for asynchronous calls | |
| 5682 | + httpobj.onreadystatechange = callback; | |
| 5683 | + | |
| 5684 | + // send content | |
| 5685 | + if (config['transfer_mode'] == 'GET') { | |
| 5686 | + httpobj.send(null); | |
| 5687 | + | |
| 5688 | + } else { | |
| 5689 | + debug('sending query: ' + querystring, 1); | |
| 5690 | + httpobj.send(querystring); | |
| 5691 | + } | |
| 5692 | + | |
| 5693 | + if (config['async'] == true) { | |
| 5694 | + // manual callback handling for synchronized calls | |
| 5695 | + callback(); | |
| 5696 | + } | |
| 5697 | + } | |
| 5698 | + | |
| 5699 | + /** | |
| 5700 | + * internal method for calls to remote servers through the proxy script. | |
| 5701 | + * | |
| 5702 | + * @access public | |
| 5703 | + * @param array call_arguments array of arguments passed to cpaint.call() | |
| 5704 | + * @return void | |
| 5705 | + */ | |
| 5706 | + this.call_proxy = function(call_arguments) { | |
| 5707 | + var proxyscript = config['proxy_url']; | |
| 5708 | + var url = call_arguments[0]; | |
| 5709 | + var remote_method = call_arguments[1]; | |
| 5710 | + var querystring = ''; | |
| 5711 | + var i = 0; | |
| 5712 | + | |
| 5713 | + var querystring_argument_prefix = 'cpaint_argument[]='; | |
| 5714 | + | |
| 5715 | + // pass parameters to remote method | |
| 5716 | + if (config['use_cpaint_api'] == false) { | |
| 5717 | + // when not talking to a CPAINT backend, don't prefix arguments | |
| 5718 | + querystring_argument_prefix = ''; | |
| 5719 | + } | |
| 5720 | + | |
| 5721 | + for (i = 3; i < call_arguments.length; i++) { | |
| 5722 | + | |
| 5723 | + if (config['use_cpaint_api'] == true) { | |
| 5724 | + | |
| 5725 | + if ((typeof call_arguments[i] == 'string' | |
| 5726 | + && call_arguments[i] != '' | |
| 5727 | + && call_arguments[i].search(/^\s+$/g) == -1) | |
| 5728 | + && !isNaN(call_arguments[i]) | |
| 5729 | + && isFinite(call_arguments[i])) { | |
| 5730 | + // numerical value, convert it first | |
| 5731 | + querystring += encodeURIComponent(querystring_argument_prefix + JSON.stringify(Number(call_arguments[i])) + '&'); | |
| 5732 | + | |
| 5733 | + } else { | |
| 5734 | + querystring += encodeURIComponent(querystring_argument_prefix + JSON.stringify(call_arguments[i]) + '&'); | |
| 5735 | + } | |
| 5736 | + | |
| 5737 | + } else { | |
| 5738 | + // no CPAINT in the backend | |
| 5739 | + querystring += encodeURIComponent(querystring_argument_prefix + call_arguments[i] + '&'); | |
| 5740 | + } | |
| 5741 | + } | |
| 5742 | + | |
| 5743 | + if (config['use_cpaint_api'] == true) { | |
| 5744 | + // add remote function name to querystring | |
| 5745 | + querystring += encodeURIComponent('&cpaint_function=' + remote_method); | |
| 5746 | + | |
| 5747 | + // add response type to querystring | |
| 5748 | + querystring += encodeURIComponent('&cpaint_responsetype=' + config['response_type']); | |
| 5749 | + } | |
| 5750 | + | |
| 5751 | + // build header | |
| 5752 | + if (config['transfer_mode'] == 'GET') { | |
| 5753 | + proxyscript += '?cpaint_remote_url=' + encodeURIComponent(url) | |
| 5754 | + + '&cpaint_remote_query=' + querystring | |
| 5755 | + + '&cpaint_remote_method=' + config['transfer_mode'] | |
| 5756 | + + '&cpaint_response_type=' + config['response_type']; | |
| 5757 | + | |
| 5758 | + } else { | |
| 5759 | + querystring = 'cpaint_remote_url=' + encodeURIComponent(url) | |
| 5760 | + + '&cpaint_remote_query=' + querystring | |
| 5761 | + + '&cpaint_remote_method=' + config['transfer_mode'] | |
| 5762 | + + '&cpaint_response_type=' + config['response_type']; | |
| 5763 | + } | |
| 5764 | + | |
| 5765 | + // open connection | |
| 5766 | + get_connection_object(); | |
| 5767 | + | |
| 5768 | + // open connection to remote target | |
| 5769 | + debug('opening connection to proxy "' + proxyscript + '"', 1); | |
| 5770 | + httpobj.open(config['transfer_mode'], proxyscript, config['async']); | |
| 5771 | + | |
| 5772 | + // send "urlencoded" header if necessary (if POST) | |
| 5773 | + if (config['transfer_mode'] == 'POST') { | |
| 5774 | + | |
| 5775 | + try { | |
| 5776 | + httpobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); | |
| 5777 | + | |
| 5778 | + } catch (cp_err) { | |
| 5779 | + debug('POST cannot be completed due to incompatible browser. Use GET as your request method.', 0); | |
| 5780 | + } | |
| 5781 | + } | |
| 5782 | + | |
| 5783 | + httpobj.setRequestHeader('X-Powered-By', 'CPAINT v' + version); | |
| 5784 | + | |
| 5785 | + // callback handling for asynchronous calls | |
| 5786 | + httpobj.onreadystatechange = callback; | |
| 5787 | + | |
| 5788 | + // send content | |
| 5789 | + if (config['transfer_mode'] == 'GET') { | |
| 5790 | + httpobj.send(null); | |
| 5791 | + | |
| 5792 | + } else { | |
| 5793 | + debug('sending query: ' + querystring, 1); | |
| 5794 | + httpobj.send(querystring); | |
| 5795 | + } | |
| 5796 | + | |
| 5797 | + if (config['async'] == false) { | |
| 5798 | + // manual callback handling for synchronized calls | |
| 5799 | + callback(); | |
| 5800 | + } | |
| 5801 | + } | |
| 5802 | + | |
| 5803 | + this.test_ajax_capability = function() { | |
| 5804 | + return get_connection_object(); | |
| 5805 | + } | |
| 5806 | + | |
| 5807 | + /** | |
| 5808 | + * creates a new connection object. | |
| 5809 | + * | |
| 5810 | + * @access protected | |
| 5811 | + * @return boolean | |
| 5812 | + */ | |
| 5813 | + var get_connection_object = function() { | |
| 5814 | + var return_value = false; | |
| 5815 | + var new_connection = false; | |
| 5816 | + | |
| 5817 | + // open new connection only if necessary | |
| 5818 | + if (config['persistent_connection'] == false) { | |
| 5819 | + // no persistance, create a new object every time | |
| 5820 | + debug('Using new connection object', 1); | |
| 5821 | + new_connection = true; | |
| 5822 | + | |
| 5823 | + } else { | |
| 5824 | + // persistent connection object, only open one if no object exists | |
| 5825 | + debug('Using shared connection object.', 1); | |
| 5826 | + | |
| 5827 | + if (typeof httpobj != 'object') { | |
| 5828 | + debug('Getting new persistent connection object.', 1); | |
| 5829 | + new_connection = true; | |
| 5830 | + } | |
| 5831 | + } | |
| 5832 | + | |
| 5833 | + if (new_connection == true) { | |
| 5834 | + | |
| 5835 | + try { | |
| 5836 | + httpobj = new XMLHttpRequest(); | |
| 5837 | + } catch (e1) { | |
| 5838 | + | |
| 5839 | + try { | |
| 5840 | + httpobj = new ActiveXObject('Msxml2.XMLHTTP'); | |
| 5841 | + | |
| 5842 | + } catch (e) { | |
| 5843 | + | |
| 5844 | + try { | |
| 5845 | + httpobj = new ActiveXObject('Microsoft.XMLHTTP'); | |
| 5846 | + | |
| 5847 | + } catch (oc) { | |
| 5848 | + httpobj = null; | |
| 5849 | + } | |
| 5850 | + } | |
| 5851 | + } | |
| 5852 | + | |
| 5853 | + | |
| 5854 | + if (!httpobj) { | |
| 5855 | + debug('Could not create connection object', 0); | |
| 5856 | + | |
| 5857 | + } else { | |
| 5858 | + return_value = true; | |
| 5859 | + } | |
| 5860 | + } | |
| 5861 | + | |
| 5862 | + if (httpobj.readyState != 4) { | |
| 5863 | + httpobj.abort(); | |
| 5864 | + } | |
| 5865 | + | |
| 5866 | + return return_value; | |
| 5867 | + } | |
| 5868 | + | |
| 5869 | + /** | |
| 5870 | + * internal callback function. | |
| 5871 | + * | |
| 5872 | + * will perform some consistency checks (response code, NULL value testing) | |
| 5873 | + * and if response_type = 'OBJECT' it will automatically call | |
| 5874 | + * cpaint_call.parse_ajax_xml() to have a JavaScript object structure generated. | |
| 5875 | + * | |
| 5876 | + * after all that is done the client side callback function will be called | |
| 5877 | + * with the generated response as single value. | |
| 5878 | + * | |
| 5879 | + * @access protected | |
| 5880 | + * @return void | |
| 5881 | + */ | |
| 5882 | + var callback = function() { | |
| 5883 | + var response = null; | |
| 5884 | + if (httpobj.readyState == 4 | |
| 5885 | + && httpobj.status == 200) { | |
| 5886 | + if(httpobj.responseText == ""){ | |
| 5887 | + alert("O servidor demorou muito - timeout"); | |
| 5888 | + client_callback("", "erro"); | |
| 5889 | + return; | |
| 5890 | + } | |
| 5891 | + debug(httpobj.responseText, 1); | |
| 5892 | + debug('using response type ' + config['response_type'], 2); | |
| 5893 | + | |
| 5894 | + // fetch correct response | |
| 5895 | + switch (config['response_type']) { | |
| 5896 | + case 'XML': | |
| 5897 | + debug(httpobj.responseXML, 2); | |
| 5898 | + response = __cpaint_transformer.xml_conversion(httpobj.responseXML); | |
| 5899 | + break; | |
| 5900 | + | |
| 5901 | + case 'OBJECT': | |
| 5902 | + response = __cpaint_transformer.object_conversion(httpobj.responseXML); | |
| 5903 | + break; | |
| 5904 | + | |
| 5905 | + case 'TEXT': | |
| 5906 | + response = __cpaint_transformer.text_conversion(httpobj.responseText); | |
| 5907 | + break; | |
| 5908 | + | |
| 5909 | + case 'E4X': | |
| 5910 | + response = __cpaint_transformer.e4x_conversion(httpobj.responseText); | |
| 5911 | + break; | |
| 5912 | + | |
| 5913 | + case 'JSON': | |
| 5914 | + response = __cpaint_transformer.json_conversion(httpobj.responseText); | |
| 5915 | + break; | |
| 5916 | + | |
| 5917 | + default: | |
| 5918 | + debug('invalid response type \'' + response_type + '\'', 0); | |
| 5919 | + } | |
| 5920 | + | |
| 5921 | + // call client side callback | |
| 5922 | + if (response != null | |
| 5923 | + && typeof client_callback == 'function') { | |
| 5924 | + try{ | |
| 5925 | + if(response.data) | |
| 5926 | + client_callback(response, httpobj.responseText); | |
| 5927 | + else | |
| 5928 | + client_callback("", "erro"); | |
| 5929 | + } | |
| 5930 | + catch(e){ | |
| 5931 | + client_callback("", "erro"); | |
| 5932 | + } | |
| 5933 | + } | |
| 5934 | + // remove ourselves from the stack | |
| 5935 | + remove_from_stack(); | |
| 5936 | + | |
| 5937 | + } else | |
| 5938 | + { | |
| 5939 | + if(httpobj.readyState==4&&httpobj.status!=200) | |
| 5940 | + { | |
| 5941 | + debug('invalid HTTP response code \''+Number(httpobj.status)+'\'',0); | |
| 5942 | + if(httpobj.status==500){ | |
| 5943 | + alert("O servidor demorou muito - timeout"); | |
| 5944 | + client_callback("", "erro"); | |
| 5945 | + } | |
| 5946 | + else{ | |
| 5947 | + client_callback("", "erro"); | |
| 5948 | + } | |
| 5949 | + } | |
| 5950 | + | |
| 5951 | + } | |
| 5952 | + } | |
| 5953 | + | |
| 5954 | + /** | |
| 5955 | + * removes an entry from the stack | |
| 5956 | + * | |
| 5957 | + * @access protected | |
| 5958 | + * @return void | |
| 5959 | + */ | |
| 5960 | + var remove_from_stack = function() { | |
| 5961 | + // remove only if everything is okay and we're not configured as persistent connection | |
| 5962 | + if (typeof stack_id == 'number' | |
| 5963 | + && __cpaint_stack[stack_id] | |
| 5964 | + && config['persistent_connection'] == false) { | |
| 5965 | + | |
| 5966 | + __cpaint_stack[stack_id] = null; | |
| 5967 | + } | |
| 5968 | + } | |
| 5969 | + | |
| 5970 | + /** | |
| 5971 | + * debug method | |
| 5972 | + * | |
| 5973 | + * @access protected | |
| 5974 | + * @param string message the message to debug | |
| 5975 | + * @param integer debug_level debug level at which the message appears | |
| 5976 | + * @return void | |
| 5977 | + */ | |
| 5978 | + var debug = function(message, debug_level) { | |
| 5979 | + var prefix = '[CPAINT Debug] '; | |
| 5980 | + | |
| 5981 | + if (config['debugging'] < 1) { | |
| 5982 | + prefix = '[CPAINT Error] '; | |
| 5983 | + } | |
| 5984 | + | |
| 5985 | + if (config['debugging'] >= debug_level) { | |
| 5986 | + alert(prefix + message); | |
| 5987 | + } | |
| 5988 | + if (message.search(" error") > 1){client_callback("", message);} | |
| 5989 | + } | |
| 5990 | +} | |
| 5991 | + | |
| 5992 | +/** | |
| 5993 | +* CPAINT transformation object | |
| 5994 | +* | |
| 5995 | +* @package CPAINT | |
| 5996 | +* @access public | |
| 5997 | +* @copyright Copyright (c) 2005-2006 Paul Sullivan, Dominique Stender - http://sf.net/projects/cpaint | |
| 5998 | +* @author Paul Sullivan <wiley14@gmail.com> | |
| 5999 | +* @author Dominique Stender <dstender@st-webdevelopment.de> | |
| 6000 | +*/ | |
| 6001 | +function cpaint_transformer() { | |
| 6002 | + | |
| 6003 | + /** | |
| 6004 | + * will take a XMLHttpObject and generate a JavaScript | |
| 6005 | + * object structure from it. | |
| 6006 | + * | |
| 6007 | + * is internally called by cpaint_call.callback() if necessary. | |
| 6008 | + * will call cpaint_call.create_object_structure() to create nested object structures. | |
| 6009 | + * | |
| 6010 | + * @access public | |
| 6011 | + * @param object xml_document a XMLHttpObject | |
| 6012 | + * @return object | |
| 6013 | + */ | |
| 6014 | + this.object_conversion = function(xml_document) { | |
| 6015 | + var return_value = new cpaint_result_object(); | |
| 6016 | + var i = 0; | |
| 6017 | + var firstNodeName = ''; | |
| 6018 | + | |
| 6019 | + if (typeof xml_document == 'object' | |
| 6020 | + && xml_document != null) { | |
| 6021 | + | |
| 6022 | + // find the first element node - for MSIE the <?xml?> node is the very first... | |
| 6023 | + for (i = 0; i < xml_document.childNodes.length; i++) { | |
| 6024 | + | |
| 6025 | + if (xml_document.childNodes[i].nodeType == 1) { | |
| 6026 | + firstNodeName = xml_document.childNodes[i].nodeName; | |
| 6027 | + break; | |
| 6028 | + } | |
| 6029 | + } | |
| 6030 | + | |
| 6031 | + var ajax_response = xml_document.getElementsByTagName(firstNodeName); | |
| 6032 | + | |
| 6033 | + return_value[firstNodeName] = new Array(); | |
| 6034 | + | |
| 6035 | + for (i = 0; i < ajax_response.length; i++) { | |
| 6036 | + var tmp_node = create_object_structure(ajax_response[i]); | |
| 6037 | + tmp_node.id = ajax_response[i].getAttribute('id') | |
| 6038 | + return_value[firstNodeName].push(tmp_node); | |
| 6039 | + } | |
| 6040 | + | |
| 6041 | + } else { | |
| 6042 | + debug('received invalid XML response', 0); | |
| 6043 | + } | |
| 6044 | + | |
| 6045 | + return return_value; | |
| 6046 | + } | |
| 6047 | + | |
| 6048 | + /** | |
| 6049 | + * performs the necessary conversions for the XML response type | |
| 6050 | + * | |
| 6051 | + * @access public | |
| 6052 | + * @param object xml_document a XMLHttpObject | |
| 6053 | + * @return object | |
| 6054 | + */ | |
| 6055 | + this.xml_conversion = function(xml_document) { | |
| 6056 | + return xml_document; | |
| 6057 | + } | |
| 6058 | + | |
| 6059 | + /** | |
| 6060 | + * performs the necessary conversions for the TEXT response type | |
| 6061 | + * | |
| 6062 | + * @access public | |
| 6063 | + * @param string text the response text | |
| 6064 | + * @return string | |
| 6065 | + */ | |
| 6066 | + this.text_conversion = function(text) { | |
| 6067 | + return decode(text); | |
| 6068 | + } | |
| 6069 | + | |
| 6070 | + /** | |
| 6071 | + * performs the necessary conversions for the E4X response type | |
| 6072 | + * | |
| 6073 | + * @access public | |
| 6074 | + * @param string text the response text | |
| 6075 | + * @return string | |
| 6076 | + */ | |
| 6077 | + this.e4x_conversion = function(text) { | |
| 6078 | + // remove <?xml ?>tag | |
| 6079 | + text = text.replace(/^\<\?xml[^>]+\>/, ''); | |
| 6080 | + return new XML(text); | |
| 6081 | + } | |
| 6082 | + | |
| 6083 | + /** | |
| 6084 | + * performs the necessary conversions for the JSON response type | |
| 6085 | + * | |
| 6086 | + * @access public | |
| 6087 | + * @param string text the response text | |
| 6088 | + * @return string | |
| 6089 | + */ | |
| 6090 | + this.json_conversion = function(text) { | |
| 6091 | + return JSON.parse(text); | |
| 6092 | + } | |
| 6093 | + | |
| 6094 | + /** | |
| 6095 | + * this method takes a HTML / XML node object and creates a | |
| 6096 | + * JavaScript object structure from it. | |
| 6097 | + * | |
| 6098 | + * @access public | |
| 6099 | + * @param object stream a node in the XML structure | |
| 6100 | + * @return object | |
| 6101 | + */ | |
| 6102 | + var create_object_structure = function(stream) { | |
| 6103 | + var return_value = new cpaint_result_object(); | |
| 6104 | + var node_name = ''; | |
| 6105 | + var i = 0; | |
| 6106 | + var attrib = 0; | |
| 6107 | + | |
| 6108 | + if (stream.hasChildNodes() == true) { | |
| 6109 | + for (i = 0; i < stream.childNodes.length; i++) { | |
| 6110 | + | |
| 6111 | + node_name = stream.childNodes[i].nodeName; | |
| 6112 | + node_name = node_name.replace(/[^a-zA-Z0-9_]*/g, ''); | |
| 6113 | + | |
| 6114 | + // reset / create subnode | |
| 6115 | + if (typeof return_value[node_name] != 'object') { | |
| 6116 | + return_value[node_name] = new Array(); | |
| 6117 | + } | |
| 6118 | + | |
| 6119 | + if (stream.childNodes[i].nodeType == 1) { | |
| 6120 | + var tmp_node = create_object_structure(stream.childNodes[i]); | |
| 6121 | + | |
| 6122 | + for (attrib = 0; attrib < stream.childNodes[i].attributes.length; attrib++) { | |
| 6123 | + tmp_node.set_attribute(stream.childNodes[i].attributes[attrib].nodeName, stream.childNodes[i].attributes[attrib].nodeValue); | |
| 6124 | + } | |
| 6125 | + | |
| 6126 | + return_value[node_name].push(tmp_node); | |
| 6127 | + | |
| 6128 | + } else if (stream.childNodes[i].nodeType == 3) { | |
| 6129 | + return_value.data = decode(String(stream.firstChild.data)); | |
| 6130 | + } | |
| 6131 | + } | |
| 6132 | + } | |
| 6133 | + | |
| 6134 | + return return_value; | |
| 6135 | + } | |
| 6136 | + | |
| 6137 | + /** | |
| 6138 | + * converts an encoded text back to viewable characters. | |
| 6139 | + * | |
| 6140 | + * @access public | |
| 6141 | + * @param string rawtext raw text as provided by the backend | |
| 6142 | + * @return mixed | |
| 6143 | + */ | |
| 6144 | + var decode = function(rawtext) { | |
| 6145 | + var plaintext = ''; | |
| 6146 | + var i = 0; | |
| 6147 | + var c1 = 0; | |
| 6148 | + var c2 = 0; | |
| 6149 | + var c3 = 0; | |
| 6150 | + var u = 0; | |
| 6151 | + var t = 0; | |
| 6152 | + | |
| 6153 | + // remove special JavaScript encoded non-printable characters | |
| 6154 | + while (i < rawtext.length) { | |
| 6155 | + if (rawtext.charAt(i) == '\\' | |
| 6156 | + && rawtext.charAt(i + 1) == 'u') { | |
| 6157 | + | |
| 6158 | + u = 0; | |
| 6159 | + | |
| 6160 | + for (j = 2; j < 6; j += 1) { | |
| 6161 | + t = parseInt(rawtext.charAt(i + j), 16); | |
| 6162 | + | |
| 6163 | + if (!isFinite(t)) { | |
| 6164 | + break; | |
| 6165 | + } | |
| 6166 | + u = u * 16 + t; | |
| 6167 | + } | |
| 6168 | + | |
| 6169 | + plaintext += String.fromCharCode(u); | |
| 6170 | + i += 6; | |
| 6171 | + | |
| 6172 | + } else { | |
| 6173 | + plaintext += rawtext.charAt(i); | |
| 6174 | + i++; | |
| 6175 | + } | |
| 6176 | + } | |
| 6177 | + | |
| 6178 | + // convert numeric data to number type | |
| 6179 | + if (plaintext != '' | |
| 6180 | + && plaintext.search(/^\s+$/g) == -1 | |
| 6181 | + && !isNaN(plaintext) | |
| 6182 | + && isFinite(plaintext)) { | |
| 6183 | + | |
| 6184 | + plaintext = Number(plaintext); | |
| 6185 | + } | |
| 6186 | + | |
| 6187 | + return plaintext; | |
| 6188 | + } | |
| 6189 | +} | |
| 6190 | + | |
| 6191 | +/** | |
| 6192 | +* this is the basic prototype for a cpaint node object | |
| 6193 | +* as used in cpaint_call.parse_ajax_xml() | |
| 6194 | +* | |
| 6195 | +* @package CPAINT | |
| 6196 | +* @access public | |
| 6197 | +* @copyright Copyright (c) 2005-2006 Paul Sullivan, Dominique Stender - http://sf.net/projects/cpaint | |
| 6198 | +* @author Paul Sullivan <wiley14@gmail.com> | |
| 6199 | +* @author Dominique Stender <dstender@st-webdevelopment.de> | |
| 6200 | +*/ | |
| 6201 | +function cpaint_result_object() { | |
| 6202 | + this.id = 0; | |
| 6203 | + this.data = ''; | |
| 6204 | + var __attributes = new Array(); | |
| 6205 | + | |
| 6206 | + /** | |
| 6207 | + * Returns a subnode with the given type and id. | |
| 6208 | + * | |
| 6209 | + * @access public | |
| 6210 | + * @param string type The type of the subnode. Equivalent to the XML tag name. | |
| 6211 | + * @param string id The id of the subnode. Equivalent to the XML tag names id attribute. | |
| 6212 | + * @return object | |
| 6213 | + */ | |
| 6214 | + this.find_item_by_id = function() { | |
| 6215 | + var return_value = null; | |
| 6216 | + var type = arguments[0]; | |
| 6217 | + var id = arguments[1]; | |
| 6218 | + var i = 0; | |
| 6219 | + | |
| 6220 | + if (this[type]) { | |
| 6221 | + | |
| 6222 | + for (i = 0; i < this[type].length; i++) { | |
| 6223 | + | |
| 6224 | + if (this[type][i].get_attribute('id') == id) { | |
| 6225 | + return_value = this[type][i]; | |
| 6226 | + break; | |
| 6227 | + } | |
| 6228 | + } | |
| 6229 | + } | |
| 6230 | + | |
| 6231 | + return return_value; | |
| 6232 | + } | |
| 6233 | + | |
| 6234 | + /** | |
| 6235 | + * retrieves the value of an attribute. | |
| 6236 | + * | |
| 6237 | + * @access public | |
| 6238 | + * @param string name name of the attribute | |
| 6239 | + * @return mixed | |
| 6240 | + */ | |
| 6241 | + this.get_attribute = function() { | |
| 6242 | + var return_value = null; | |
| 6243 | + var id = arguments[0]; | |
| 6244 | + | |
| 6245 | + if (typeof __attributes[id] != 'undefined') { | |
| 6246 | + return_value = __attributes[id]; | |
| 6247 | + } | |
| 6248 | + | |
| 6249 | + return return_value; | |
| 6250 | + } | |
| 6251 | + | |
| 6252 | + /** | |
| 6253 | + * assigns a value to an attribute. | |
| 6254 | + * | |
| 6255 | + * if that attribute does not exist it will be created. | |
| 6256 | + * | |
| 6257 | + * @access public | |
| 6258 | + * @param string name name of the attribute | |
| 6259 | + * @param string value value of the attribute | |
| 6260 | + * @return void | |
| 6261 | + */ | |
| 6262 | + this.set_attribute = function() { | |
| 6263 | + __attributes[arguments[0]] = arguments[1]; | |
| 6264 | + } | |
| 6265 | +} | |
| 6266 | + | |
| 6267 | + | |
| 6268 | +/* | |
| 6269 | +Copyright (c) 2005 JSON.org | |
| 6270 | + | |
| 6271 | +Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6272 | +of this software and associated documentation files (the "Software"), to deal | |
| 6273 | +in the Software without restriction, including without limitation the rights | |
| 6274 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 6275 | +copies of the Software, and to permit persons to whom the Software is | |
| 6276 | +furnished to do so, subject to the following conditions: | |
| 6277 | + | |
| 6278 | +The Software shall be used for Good, not Evil. | |
| 6279 | + | |
| 6280 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 6281 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 6282 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 6283 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 6284 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 6285 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 6286 | +SOFTWARE. | |
| 6287 | +*/ | |
| 6288 | + | |
| 6289 | + | |
| 6290 | +Array.prototype.______array = '______array'; | |
| 6291 | + | |
| 6292 | +var JSON = { | |
| 6293 | + org: 'http://www.JSON.org', | |
| 6294 | + copyright: '(c)2005 JSON.org', | |
| 6295 | + license: 'http://www.crockford.com/JSON/license.html', | |
| 6296 | + | |
| 6297 | + stringify: function (arg) { | |
| 6298 | + var c, i, l, s = '', v; | |
| 6299 | + var numeric = true; | |
| 6300 | + | |
| 6301 | + switch (typeof arg) { | |
| 6302 | + case 'object': | |
| 6303 | + if (arg) { | |
| 6304 | + if (arg.______array == '______array') { | |
| 6305 | + // do a test whether all array keys are numeric | |
| 6306 | + for (i in arg) { | |
| 6307 | + if (i != '______array' | |
| 6308 | + && (isNaN(i) | |
| 6309 | + || !isFinite(i))) { | |
| 6310 | + numeric = false; | |
| 6311 | + break; | |
| 6312 | + } | |
| 6313 | + } | |
| 6314 | + | |
| 6315 | + if (numeric == true) { | |
| 6316 | + for (i = 0; i < arg.length; ++i) { | |
| 6317 | + if (typeof arg[i] != 'undefined') { | |
| 6318 | + v = this.stringify(arg[i]); | |
| 6319 | + if (s) { | |
| 6320 | + s += ','; | |
| 6321 | + } | |
| 6322 | + s += v; | |
| 6323 | + } else { | |
| 6324 | + s += ',null'; | |
| 6325 | + } | |
| 6326 | + } | |
| 6327 | + return '[' + s + ']'; | |
| 6328 | + } else { | |
| 6329 | + for (i in arg) { | |
| 6330 | + if (i != '______array') { | |
| 6331 | + v = arg[i]; | |
| 6332 | + if (typeof v != 'undefined' && typeof v != 'function') { | |
| 6333 | + v = this.stringify(v); | |
| 6334 | + if (s) { | |
| 6335 | + s += ','; | |
| 6336 | + } | |
| 6337 | + s += this.stringify(i) + ':' + v; | |
| 6338 | + } | |
| 6339 | + } | |
| 6340 | + } | |
| 6341 | + // return as object | |
| 6342 | + return '{' + s + '}'; | |
| 6343 | + } | |
| 6344 | + } else if (typeof arg.toString != 'undefined') { | |
| 6345 | + for (i in arg) { | |
| 6346 | + v = arg[i]; | |
| 6347 | + if (typeof v != 'undefined' && typeof v != 'function') { | |
| 6348 | + v = this.stringify(v); | |
| 6349 | + if (s) { | |
| 6350 | + s += ','; | |
| 6351 | + } | |
| 6352 | + s += this.stringify(i) + ':' + v; | |
| 6353 | + } | |
| 6354 | + } | |
| 6355 | + return '{' + s + '}'; | |
| 6356 | + } | |
| 6357 | + } | |
| 6358 | + return 'null'; | |
| 6359 | + case 'number': | |
| 6360 | + return isFinite(arg) ? String(arg) : 'null'; | |
| 6361 | + case 'string': | |
| 6362 | + l = arg.length; | |
| 6363 | + s = '"'; | |
| 6364 | + for (i = 0; i < l; i += 1) { | |
| 6365 | + c = arg.charAt(i); | |
| 6366 | + if (c >= ' ') { | |
| 6367 | + if (c == '\\' || c == '"') { | |
| 6368 | + s += '\\'; | |
| 6369 | + } | |
| 6370 | + s += c; | |
| 6371 | + } else { | |
| 6372 | + switch (c) { | |
| 6373 | + case '\b': | |
| 6374 | + s += '\\b'; | |
| 6375 | + break; | |
| 6376 | + case '\f': | |
| 6377 | + s += '\\f'; | |
| 6378 | + break; | |
| 6379 | + case '\n': | |
| 6380 | + s += '\\n'; | |
| 6381 | + break; | |
| 6382 | + case '\r': | |
| 6383 | + s += '\\r'; | |
| 6384 | + break; | |
| 6385 | + case '\t': | |
| 6386 | + s += '\\t'; | |
| 6387 | + break; | |
| 6388 | + default: | |
| 6389 | + c = c.charCodeAt(); | |
| 6390 | + s += '\\u00' + Math.floor(c / 16).toString(16) + | |
| 6391 | + (c % 16).toString(16); | |
| 6392 | + } | |
| 6393 | + } | |
| 6394 | + } | |
| 6395 | + return s + '"'; | |
| 6396 | + case 'boolean': | |
| 6397 | + return String(arg); | |
| 6398 | + default: | |
| 6399 | + return 'null'; | |
| 6400 | + } | |
| 6401 | + }, | |
| 6402 | + parse: function (text) { | |
| 6403 | + var at = 0; | |
| 6404 | + var ch = ' '; | |
| 6405 | + | |
| 6406 | + function error(m) { | |
| 6407 | + throw { | |
| 6408 | + name: 'JSONError', | |
| 6409 | + message: m, | |
| 6410 | + at: at - 1, | |
| 6411 | + text: text | |
| 6412 | + }; | |
| 6413 | + } | |
| 6414 | + | |
| 6415 | + function next() { | |
| 6416 | + ch = text.charAt(at); | |
| 6417 | + at += 1; | |
| 6418 | + return ch; | |
| 6419 | + } | |
| 6420 | + | |
| 6421 | + function white() { | |
| 6422 | + while (ch != '' && ch <= ' ') { | |
| 6423 | + next(); | |
| 6424 | + } | |
| 6425 | + } | |
| 6426 | + | |
| 6427 | + function str() { | |
| 6428 | + var i, s = '', t, u; | |
| 6429 | + | |
| 6430 | + if (ch == '"') { | |
| 6431 | +outer: while (next()) { | |
| 6432 | + if (ch == '"') { | |
| 6433 | + next(); | |
| 6434 | + return s; | |
| 6435 | + } else if (ch == '\\') { | |
| 6436 | + switch (next()) { | |
| 6437 | + case 'b': | |
| 6438 | + s += '\b'; | |
| 6439 | + break; | |
| 6440 | + case 'f': | |
| 6441 | + s += '\f'; | |
| 6442 | + break; | |
| 6443 | + case 'n': | |
| 6444 | + s += '\n'; | |
| 6445 | + break; | |
| 6446 | + case 'r': | |
| 6447 | + s += '\r'; | |
| 6448 | + break; | |
| 6449 | + case 't': | |
| 6450 | + s += '\t'; | |
| 6451 | + break; | |
| 6452 | + case 'u': | |
| 6453 | + u = 0; | |
| 6454 | + for (i = 0; i < 4; i += 1) { | |
| 6455 | + t = parseInt(next(), 16); | |
| 6456 | + if (!isFinite(t)) { | |
| 6457 | + break outer; | |
| 6458 | + } | |
| 6459 | + u = u * 16 + t; | |
| 6460 | + } | |
| 6461 | + s += String.fromCharCode(u); | |
| 6462 | + break; | |
| 6463 | + default: | |
| 6464 | + s += ch; | |
| 6465 | + } | |
| 6466 | + } else { | |
| 6467 | + s += ch; | |
| 6468 | + } | |
| 6469 | + } | |
| 6470 | + } | |
| 6471 | + error("Bad string"); | |
| 6472 | + } | |
| 6473 | + | |
| 6474 | + function arr() { | |
| 6475 | + var a = []; | |
| 6476 | + | |
| 6477 | + if (ch == '[') { | |
| 6478 | + next(); | |
| 6479 | + white(); | |
| 6480 | + if (ch == ']') { | |
| 6481 | + next(); | |
| 6482 | + return a; | |
| 6483 | + } | |
| 6484 | + while (ch) { | |
| 6485 | + a.push(val()); | |
| 6486 | + white(); | |
| 6487 | + if (ch == ']') { | |
| 6488 | + next(); | |
| 6489 | + return a; | |
| 6490 | + } else if (ch != ',') { | |
| 6491 | + break; | |
| 6492 | + } | |
| 6493 | + next(); | |
| 6494 | + white(); | |
| 6495 | + } | |
| 6496 | + } | |
| 6497 | + error("Bad array"); | |
| 6498 | + } | |
| 6499 | + | |
| 6500 | + function obj() { | |
| 6501 | + var k, o = {}; | |
| 6502 | + | |
| 6503 | + if (ch == '{') { | |
| 6504 | + next(); | |
| 6505 | + white(); | |
| 6506 | + if (ch == '}') { | |
| 6507 | + next(); | |
| 6508 | + return o; | |
| 6509 | + } | |
| 6510 | + while (ch) { | |
| 6511 | + k = str(); | |
| 6512 | + white(); | |
| 6513 | + if (ch != ':') { | |
| 6514 | + break; | |
| 6515 | + } | |
| 6516 | + next(); | |
| 6517 | + o[k] = val(); | |
| 6518 | + white(); | |
| 6519 | + if (ch == '}') { | |
| 6520 | + next(); | |
| 6521 | + return o; | |
| 6522 | + } else if (ch != ',') { | |
| 6523 | + break; | |
| 6524 | + } | |
| 6525 | + next(); | |
| 6526 | + white(); | |
| 6527 | + } | |
| 6528 | + } | |
| 6529 | + error("Bad object"); | |
| 6530 | + } | |
| 6531 | + | |
| 6532 | + function assoc() { | |
| 6533 | + var k, a = []; | |
| 6534 | + | |
| 6535 | + if (ch == '<') { | |
| 6536 | + next(); | |
| 6537 | + white(); | |
| 6538 | + if (ch == '>') { | |
| 6539 | + next(); | |
| 6540 | + return a; | |
| 6541 | + } | |
| 6542 | + while (ch) { | |
| 6543 | + k = str(); | |
| 6544 | + white(); | |
| 6545 | + if (ch != ':') { | |
| 6546 | + break; | |
| 6547 | + } | |
| 6548 | + next(); | |
| 6549 | + a[k] = val(); | |
| 6550 | + white(); | |
| 6551 | + if (ch == '>') { | |
| 6552 | + next(); | |
| 6553 | + return a; | |
| 6554 | + } else if (ch != ',') { | |
| 6555 | + break; | |
| 6556 | + } | |
| 6557 | + next(); | |
| 6558 | + white(); | |
| 6559 | + } | |
| 6560 | + } | |
| 6561 | + error("Bad associative array"); | |
| 6562 | + } | |
| 6563 | + | |
| 6564 | + function num() { | |
| 6565 | + var n = '', v; | |
| 6566 | + if (ch == '-') { | |
| 6567 | + n = '-'; | |
| 6568 | + next(); | |
| 6569 | + } | |
| 6570 | + while (ch >= '0' && ch <= '9') { | |
| 6571 | + n += ch; | |
| 6572 | + next(); | |
| 6573 | + } | |
| 6574 | + if (ch == '.') { | |
| 6575 | + n += '.'; | |
| 6576 | + while (next() && ch >= '0' && ch <= '9') { | |
| 6577 | + n += ch; | |
| 6578 | + } | |
| 6579 | + } | |
| 6580 | + if (ch == 'e' || ch == 'E') { | |
| 6581 | + n += 'e'; | |
| 6582 | + next(); | |
| 6583 | + if (ch == '-' || ch == '+') { | |
| 6584 | + n += ch; | |
| 6585 | + next(); | |
| 6586 | + } | |
| 6587 | + while (ch >= '0' && ch <= '9') { | |
| 6588 | + n += ch; | |
| 6589 | + next(); | |
| 6590 | + } | |
| 6591 | + } | |
| 6592 | + v = +n; | |
| 6593 | + if (!isFinite(v)) { | |
| 6594 | + error("Bad number"); | |
| 6595 | + } else { | |
| 6596 | + return v; | |
| 6597 | + } | |
| 6598 | + } | |
| 6599 | + | |
| 6600 | + function word() { | |
| 6601 | + switch (ch) { | |
| 6602 | + case 't': | |
| 6603 | + if (next() == 'r' && next() == 'u' && next() == 'e') { | |
| 6604 | + next(); | |
| 6605 | + return true; | |
| 6606 | + } | |
| 6607 | + break; | |
| 6608 | + case 'f': | |
| 6609 | + if (next() == 'a' && next() == 'l' && next() == 's' && | |
| 6610 | + next() == 'e') { | |
| 6611 | + next(); | |
| 6612 | + return false; | |
| 6613 | + } | |
| 6614 | + break; | |
| 6615 | + case 'n': | |
| 6616 | + if (next() == 'u' && next() == 'l' && next() == 'l') { | |
| 6617 | + next(); | |
| 6618 | + return null; | |
| 6619 | + } | |
| 6620 | + break; | |
| 6621 | + } | |
| 6622 | + error("Syntax error"); | |
| 6623 | + } | |
| 6624 | + | |
| 6625 | + function val() { | |
| 6626 | + white(); | |
| 6627 | + switch (ch) { | |
| 6628 | + case '{': | |
| 6629 | + return obj(); | |
| 6630 | + case '[': | |
| 6631 | + return arr(); | |
| 6632 | + case '<': | |
| 6633 | + return assoc(); | |
| 6634 | + case '"': | |
| 6635 | + return str(); | |
| 6636 | + case '-': | |
| 6637 | + return num(); | |
| 6638 | + default: | |
| 6639 | + return ch >= '0' && ch <= '9' ? num() : word(); | |
| 6640 | + } | |
| 6641 | + } | |
| 6642 | + | |
| 6643 | + return val(); | |
| 6644 | + } | |
| 6645 | +}; | |
| 6646 | + | |
| 6647 | + | |
| 5299 | 6648 | |
| 5300 | 6649 | <?php if(extension_loaded('zlib')){ob_end_flush();}?> |
| 5301 | 6650 | \ No newline at end of file | ... | ... |
ferramentas/wiki/funcoes.php
| 1 | 1 | <?php |
| 2 | -error_reporting(0); | |
| 3 | 2 | //set_time_limit(600); |
| 4 | 3 | require_once("../../pacotes/cpaint/cpaint2.inc.php"); |
| 5 | 4 | require_once("../../classesphp/pega_variaveis.php"); |
| 6 | 5 | require_once("../../classesphp/carrega_ext.php"); |
| 6 | +error_reporting(0); | |
| 7 | 7 | $cp = new cpaint(); |
| 8 | 8 | $cp->register('listaartigos'); |
| 9 | 9 | $cp->start(); | ... | ... |
ferramentas/wiki/index.js
| ... | ... | @@ -48,6 +48,8 @@ function buscawiki() |
| 48 | 48 | } |
| 49 | 49 | function listaartigos(retorno) |
| 50 | 50 | { |
| 51 | + if (retorno.data==undefined ) | |
| 52 | + {$i("resultadowiki").innerHTML = "Erro. A operação demorou muito.";return;} | |
| 51 | 53 | var ins = "<p>A busca no Mediawiki traz apenas os 20 primeiros resultados" |
| 52 | 54 | ins += "<p>Se a abrangência geográfica de busca for muito grande, pode ocorrer erro devido ao tempo de processamento." |
| 53 | 55 | ins += '<p>Mais detalhes sobre a busca, veja <a href="http://www.geonames.org" >Geonames</a>' | ... | ... |