var pathConsultas=""; //Somente deverá ser definido se for utilizar consultas em BDvar gReq=null;var defaultDBQueriesFile='consultas';var defaultDBConnectionFile='db';function loadQuery(query,id,endLoad,pathRel,dataPath,verbose){var file=replaceAll(replaceAll(query,'?',';'),'&',';');var params="";if(file.indexOf(';')>0){params=file.substring(file.indexOf(';'));file=file.substring(0,file.indexOf(';'));}var rootURL="";rootURL=location.href.substring(0,location.href.lastIndexOf('/')+1);rootURL=rootURL.replace("http://","");rootURL=rootURL.replace("https://","");rootURL=rootURL.substring(rootURL.indexOf("/"));var async=false;if(endLoad) async=true;var req=null;if(async||!gReq){try { if(window.XMLHttpRequest) req=new XMLHttpRequest(); } catch (ex) { }if(req==null&&window.ActiveXObject) req=new ActiveXObject("Microsoft.XMLHTTP");if(req==null) return false;if(!async) gReq=req;}if(!async) req=gReq;var sess="";try { eval("sess=getVar('sessionID')") } catch (ex) { }if(sess) params+="&sessionID="+sess;var urlRequest='';if(!pathRel) pathRel='.';if(!dataPath) dataPath='dados/';if(pathConsultas) urlRequest=pathRel+'/common/serverSide/oracleRemoteDataProvider.aspx?rootURL='+rootURL+'&dataPath='+pathConsultas+'&dataFile='+file+replaceAll(params,';','&');else urlRequest=pathRel+'/common/serverSide/remoteDataProvider.aspx?rootURL='+rootURL+'&dataPath='+pathRel+'/'+dataPath+'&dataFile='+file+replaceAll(params, ';', '&');if(verbose) alert(urlRequest);req.open("GET", urlRequest, async);if(async){req.onreadystatechange=function(){if(req.readyState==4){endLoad(makeDataModel(req.responseText,'',urlRequest),id);}}}req.send(null);if(!endLoad&&req.readyState==4&&(req.status==200||req.status==0)){return makeDataModel(req.responseText, '', urlRequest);}return async;}function dbQuery(consulta, id, endLoad){var params="";if(consulta.indexOf('?')>0){params='&'+consulta.substring(consulta.indexOf('?')+1);consulta=consulta.substring(0,consulta.indexOf('?'));}var arqConsultas;var arqCfg;if(params.indexOf('&file=')<0) arqConsultas=defaultDBQueriesFile;if(params.indexOf('&cfg=')<0) arqCfg=defaultDBConnectionFile;var rootURL="";rootURL=location.href.substring(0, location.href.lastIndexOf('/')+1);rootURL=rootURL.replace("http://", "");rootURL=rootURL.replace("https://", "");rootURL=rootURL.substring(rootURL.indexOf("/"));var async=false;if(endLoad) async=true;var req=null;if(async||!gReq){try { if(window.XMLHttpRequest) req=new XMLHttpRequest(); } catch (ex) { }if(req==null&&window.ActiveXObject) req=new ActiveXObject("Microsoft.XMLHTTP");if(req==null) return false;if(!async) gReq=req;}if(!async) req=gReq;var sess="";try { eval("sess=getVar('sessionID')") } catch (ex) { }if(sess) params+="&sessionID="+sess;var urlRequest=rootURL+'common/serverSide/dbQuery.aspx?query='+consulta+(arqConsultas?'&file='+arqConsultas:'')+(arqCfg?'&cfg='+arqCfg:'')+params;if(async){req.onreadystatechange=function(){if(req.readyState==4){endLoad(makeDataModel(req.responseText, '', urlRequest), id);}}}req.open("GET", urlRequest, async);req.send(null);if(!endLoad&&req.readyState==4&&(req.status==200||req.status==0)){return makeDataModel(req.responseText, '', urlRequest);}return async;}function readFile(file, post, endLoad, id){var rootURL="";rootURL=location.href.substring(0, location.href.lastIndexOf('/')+1);rootURL=rootURL.replace("http://", "");rootURL=rootURL.replace("https://", "");rootURL=rootURL.substring(rootURL.indexOf("/"));var req=null;try { if(window.XMLHttpRequest) req=new XMLHttpRequest(); } catch (ex) { }if(req==null&&window.ActiveXObject) req=new ActiveXObject("Microsoft.XMLHTTP");if(req==null) return null;var async=false;if(endLoad) async=true;if(async){req.onreadystatechange=function(){if(req.readyState == 4) endLoad(req.responseText, id);}}var sess="";try { eval("sess=getVar('sessionID')") } catch (ex) { }if(sess){if(file.indexOf("?")>=0) file+="&sessionID="+sess;else file+="?sessionID="+sess;}if((file.indexOf('?')>0||file.indexOf('.aspx')>0)&&file.indexOf('rootURL=')<0) file+='&rootURL='+rootURL;if(post){var data=null;if(file.indexOf("?")>=0){data=file.substring(file.indexOf("?")+1);file=file.substring(0, file.indexOf("?"));}req.open("POST", file, async);req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');req.send(data);}else{req.open("GET", file, async);req.send(null);}if(!endLoad && req.readyState == 4 && (req.status == 200 || req.status == 0)) return req.responseText;return null;}function fileExists(file){var req=null;try { if(window.XMLHttpRequest) req=new XMLHttpRequest(); } catch (ex) { }if(req==null&&window.ActiveXObject) req=new ActiveXObject("Microsoft.XMLHTTP");if(req==null) return null;req.open("HEAD", file, false);req.send(null);return (req.status!=404/*&&!req.responseText*/);}function getServerTimestamp(ymd){var rootURL = "";rootURL = location.href.substring(0, location.href.lastIndexOf('/') + 1);rootURL = rootURL.replace("http://", "");rootURL = rootURL.replace("https://", "");rootURL = rootURL.substring(rootURL.indexOf("/"));var req = null;try { if(window.XMLHttpRequest) req = new XMLHttpRequest(); } catch (ex) { }if(req == null && window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP");if(req == null) return null;var file = rootURL + 'common/serverSide/timestamp.aspx';if(ymd) file += '?ymd=true';else file += '?ymd=false';req.open("GET", file, false);req.send(null);if(req.readyState == 4 && (req.status == 200 || req.status == 0)) return req.responseText;}function makeDataModel2(texto,before){if(!texto) return null;if(before) texto=texto.substring(0,texto.indexOf("\t")+1)+before+"\t"+texto.substring(texto.indexOf("\t")+1);var dados=texto.split("\t");var colunas=dados[0].substring(2,dados[0].length-1).split(":");for(var j=0; j<colunas.length; j++){if(colunas[j].indexOf(';')>0) colunas[j]=colunas[j].substring(0,colunas[j].indexOf(';'));}var colunasRev=new Array();for(var j=0; j<colunas.length; j++) colunasRev[colunas[j]]=j;return new DataModel2(dados,colunasRev,colunas);}function makeDataModel(texto,before,url){if(texto && texto.charAt(0)=='#' && texto.charAt(1)=='[') return makeDataModel2(texto,before);if(texto && texto.charAt(0)!='#'){alert('Erro ao consultar dados. URL:\n'+url+'\n\nDetalhes:\n'+texto);return null;}var colunas=new Array();var valores;var dados=new Array();if(!texto){return null;}var enterWin=false;if(texto.indexOf("\r\n")==texto.indexOf("\n")-1) enterWin=true;if(before){if(texto.indexOf("#")!=0) texto=before+"\n"+texto;else texto=texto.substring(0,texto.indexOf("\n")+1)+before+(enterWin?"\r\n":"\n")+texto.substring(texto.indexOf("\n")+1);}var resposta;if(enterWin) resposta=texto.split("\r\n");else resposta=texto.split("\n");var j=0;var i=0;var pos=0;if(resposta[0].indexOf('#')==0 && resposta[0].substring(1).length>0){colunas=resposta[i].substring(1).split("\t");for(j=0; j<colunas.length; j++){if(colunas[j].indexOf(';')>0) colunas[j]=colunas[j].substring(0,colunas[j].indexOf(';'));if(colunas[j].indexOf('\r')==colunas[j].length-1) colunas[j]=colunas[j].substring(0,colunas[j].length-1);}i++;}var extraInfo="";for(; i<resposta.length; i++){if(!resposta[i]) continue;if(i>=resposta.length-3 && resposta[i].indexOf("$")==0){extraInfo=resposta[i].substring(1).split("\t");continue;}dados[pos++]=resposta[i].split('\t');}var colunasRev=new Array();if(colunas) for(j=0; j<colunas.length; j++){colunasRev[colunas[j]]=j;}return new DataModel(dados,colunasRev,colunas,extraInfo);}function DataModel(data,columns,columnNames,extraInfo){var sortIndex=new Array();var sortIndexR=new Array();var searchIndex=new Array();this.getRowCount = getRowCount;this.addRow = addRow;this.insertRow = insertRow;this.removeRow = removeRow;this.getColCount = getColCount;this.getColName = getColName;this.getColIndex = getColIndex;this.addCol=addCol;this.removeCol=removeCol;this.getValueAt=getValueAt;this.setValueAt = setValueAt;this.getExtraInfo = getExtraInfo;this.data=data;this.columns=columns;this.columnNames=columnNames;this.extraInfo=extraInfo;this.sort=sort;this.searchRow = searchRow;this.toText = toText;function getRowCount(){return data.length;}function addRow(){var pos=data.length;data[pos]=new Array();for(var i=0; i<columnNames.length; i++) data[pos][data[pos].length]="";sortIndex=new Array();sortIndexR=new Array();searchIndex=new Array();}function insertRow(beforeRow){if(beforeRow>data.length) return;if(beforeRow<0) return;var data2=new Array();data2[0]=new Array();for(var i=0; i<columnNames.length; i++) data2[0][data2[0].length]="";data=data.slice(0,beforeRow).concat(data2).concat(data.slice(beforeRow,data.length));sortIndex=new Array();sortIndexR=new Array();searchIndex=new Array();}function removeRow(row){if(row>=data.length) return false;if(row<0) return false;data=data.slice(0,row).concat(data.slice(row+1,data.length));sortIndex=new Array();sortIndexR=new Array();searchIndex=new Array();return true;}function getColCount(){return columnNames.length;}function getColName(index){if(!columnNames || index>=columnNames.length || index<0) return index;return columnNames[index];}function getColIndex(name){for(var i=0; i<columnNames.length; i++){if(columnNames[i]==name) return i;}return -1;}function addCol(name){columnNames[columnNames.length]=name;columns[name]=columnNames.length-1;for(var i=0; i<data.length; i++){data[i][data[i].length]="";}}function removeCol(name){if(!columnNames[columns[name]]) return;columnNames[columns[name]]='';columns[name]= 0;}function getValueAt(row, column){if(sortIndex && sortIndex.length>0) row=sortIndex[row];if(row>=data.length) return "";if(!columnNames[column]) column=columns[column];var result=data[row][column];if(result && result.indexOf('\r')>=0) result=replaceAll(result,'\r','');if(!result) result='';return result;}function setValueAt(row,column,value){if(sortIndex.length>0) row=sortIndex[row];if(row>=data.length) return;if(!columnNames[column]) column=columns[column];data[row][column]=value;}function getExtraInfo(){return extraInfo;}function searchRow(field,value){if(!searchIndex[field]){searchIndex[field]=new Array();for(var i=0; i<getRowCount(); i++) searchIndex[field][getValueAt(i, field)]=i;}var result=searchIndex[field][value];if(!result && result!=0) result= -1;return result;}function sort(cols,asc){var sorted=new Array();var partes=cols.split(';');var iCols=new Array();var rCols=new Array();for(var i=0; i<partes.length; i++){if(partes[i].indexOf('$')==0){rCols[rCols.length]=true;iCols[iCols.length]=getColIndex(partes[i].substring(1));}else{rCols[rCols.length]=false;iCols[iCols.length]=getColIndex(partes[i]);}}sortIndex=new Array();sortIndexR=new Array();searchIndex=new Array();var linha;var tmp;for(var i=0; i<data.length; i++){linha='';for(var j=0; j<iCols.length; j++){tmp=getValueAt(i,iCols[j]);if(rCols[j]) while(tmp.length<50) tmp=' '+tmp;else while(tmp.length<50) tmp=tmp+' ';linha+=tmp;}linha+='\t'+i;sorted[sorted.length]=linha;}sorted.sort();if(asc) for(var i=0; i<sorted.length; i++){var position=parseInt(sorted[i].substring(sorted[i].indexOf('\t')+1));sortIndexR[position]=sortIndex.length;sortIndex[sortIndex.length]=position;}else for(var i=sorted.length-1; i>=0; i--){var position=parseInt(sorted[i].substring(sorted[i].indexOf('\t')+1));sortIndexR[position]=sortIndex.length;sortIndex[sortIndex.length]=position;}}function toText(){var i, j;var tmp = '';for(i = 0; i < getColCount(); i++) tmp += getColName(i) + '\t';tmp += '\n';for(i = 0; i < getRowCount(); i++){for(j = 0; j < getColCount(); j++) tmp += getValueAt(i,j) + '\t';tmp += '\n';if(i > 10) break;}return tmp;}}function DataModel2(data,columns,columnNames){var req=null;this.getRowCount = getRowCount;this.getColCount = getColCount;this.getColName = getColName;this.getColIndex = getColIndex;this.getValueAt = getValueAt;this.setValueAt = setValueAt;this.getExtraInfo = getExtraInfo;this.data=data;this.columns=columns;this.columnNames=columnNames;var rowCount=Math.floor((data.length-1-(data[data.length-1].indexOf('$')==0?1:0))/columnNames.length);function getRowCount(){return rowCount;}/*TODO  function addRow(){}*//*TODO  function removeRow(row){if(row>=data.length) return false;if(row<0) return false;data=data.slice(0,row).concat(data.slice(row+1,data.length));return true;}*/function getColCount(){return columnNames.length;}function getColName(index){if(!columnNames || index>=columnNames.length || index<0) return index;return columnNames[index];}function getColIndex(name){for(var i=0; i<columnNames.length; i++){if(columnNames[i]==name) return i;}return -1;}/*TODO  function addCol(name){columnNames[columnNames.length]=name;columns[name]=columns.length-1;for(var i=0; i<data.length; i++){data[i][data[i].length]="";}}*/function getValueAt(row,column){if(columns[column] || columns[column]==0) column=columns[column];if(!column && column!=0) return "";if(column>=columnNames.length || column<0) return "";return data[row*columnNames.length+column+1];}function setValueAt(row,column,value){if(columns[column] || columns[column]==0) column=columns[column];if(!column && column!=0) return;if(column>=columnNames.length || column<0) return;data[row*columnNames.length+column+1]=value;}function getExtraInfo(){if(data[data.length-1].indexOf('$')==0) return data[data.length-1].substring(1).split(':');return "";}}
