(function($){$.fn.extend({vectorGrid:function(vectorGridOptions)
{var options_padrao={cols:[],method:"POST",url:'json_script.php',params:{},classHeader:'',classfoot:'',classLoading:"grid_loading",sort:"ASC",noRecordsText:"Nenhum registro encontrado",noRecordsClass:"grid_sem_linhas",classHeaderSorted:"order_coluna_ordenada",classHeaderSortedDesc:"order_coluna_ordenada_desc",classRowAlt:'grid_linha_impar',paramToSort:null,footPreviousText:"Anterior",footNextText:"Próxima",footFirstText:"Primeira",footLastText:"Última",footPreviousClass:"grid_pagina_anterior",footNextClass:"grid_pagina_proxima",footFirstClass:"grid_pagina_primeira",footLastClass:"grid_pagina_ultima",footJumpersClass:"grid_pagina_jumps",footActualPageClass:"grid_pagina_atual",footNumRegsClass:"grid_qtd_registros",refreshCallbackFunction:null,page:1,rows:20,rowsJump:3,rowsOptions:[10,20,30]};this.each(function(){this.vectorGridOptions=$.extend(options_padrao,vectorGridOptions);this.vectorGridOptions.instancia_id=this.id;var tags_coluna="";var header="<thead><tr class=\""+this.vectorGridOptions.classHeader+"\">";for(i=0;i<this.vectorGridOptions.cols.length;i++)
{html_th="<th";if(this.vectorGridOptions.cols[i].headerId)
html_th+=' id="'+this.vectorGridOptions.cols[i].headerId+'"';if(this.vectorGridOptions.cols[i].headerClass)
html_th+=' class="'+this.vectorGridOptions.cols[i].headerClass+'"';html_th+=">";if(this.vectorGridOptions.cols[i].headerTitle)
{if(this.vectorGridOptions.cols[i].sortable)
html_th+='<a href="javaScript://" onclick="$(\'#'+this.id+'\').vectorGridsort(\''+this.vectorGridOptions.cols[i].valueToSort+'\', this);">'+this.vectorGridOptions.cols[i].headerTitle+'</a>';else
html_th+=this.vectorGridOptions.cols[i].headerTitle;}
tags_coluna+="<colgroup";if(this.vectorGridOptions.cols[i].class_col)
tags_coluna+=' class="'+this.vectorGridOptions.cols[i].class_col+'"';if(this.vectorGridOptions.cols[i].id)
tags_coluna+=' id="'+this.vectorGridOptions.cols[i].id+'"';tags_coluna+=" ></colgroup>";header+=html_th+"</th>";}
header+="</tr></thead>";$(this).html(tags_coluna+header);$(this).refresh('start');});},loadVectorGrid:function()
{this.find('tbody').fadeTo("fast",0.2);this.addClass(this.attr('vectorGridOptions').classLoading);var ParametrosGet=$.extend(this.attr('vectorGridOptions').params,{'vectorGridOptions[rows]':this.attr('vectorGridOptions').rows,'vectorGridOptions[page]':this.attr('vectorGridOptions').page,'vectorGridOptions[sort]':this.attr('vectorGridOptions').sort,'vectorGridOptions[paramToSort]':(this.attr('vectorGridOptions').paramToSort==null)?'':this.attr('vectorGridOptions').paramToSort});$.ajax({url:this.attr('vectorGridOptions').url,data:ParametrosGet,type:this.attr('vectorGridOptions').method,instancia_id:this.attr('vectorGridOptions').instancia_id,async:false,dataType:"json",error:function(XMLHttpRequest,textStatus,errorThrown){},success:function(data,textStatus,XMLHttpRequest)
{if(!data.sucesso&&typeof(URL_RAIZ)!=undefined)
{if(data.autenticacao)
window.location=URL_RAIZ+'login.php?to='+data.to;else if(data.permissao)
jQuery.flash.erro('Permissão negada','Por favor verifique suas permissões ou entre em contato com o administrador.');}
var Grid=$('#'+this.instancia_id);Grid.attr('vectorGridOptions').json=data;Grid.clear();Grid.attr('vectorGridOptions').page=data.page;var TBody=document.createElement('tbody');document.getElementById(this.instancia_id).appendChild(TBody);if(Grid.attr('vectorGridOptions').json.totalRecords>0)
Grid.find("tbody").html(Grid.attr('vectorGridOptions').json.html);else
Grid.find("tbody").html("<tr class=\""+Grid.attr('vectorGridOptions').noRecordsClass+"\"><td colspan=\""+Grid.attr('vectorGridOptions').cols.length+"\">"+Grid.attr('vectorGridOptions').noRecordsText+"</td></tr>");Grid.find('tbody').fadeTo("fast",1.0);Grid.removeClass(Grid.attr('vectorGridOptions').classLoading);}});},jumpToPage:function(page)
{if(page<=this.attr('vectorGridOptions').json.totalPages)
{this.attr('vectorGridOptions').page=page;$(this).refresh('jump',page);}},vectorGridsort:function(valueToSort,elemento)
{if(this.attr('vectorGridOptions').paramToSort==valueToSort)
this.attr('vectorGridOptions').sort=((this.attr('vectorGridOptions').sort=="DESC")?"ASC":"DESC");else
this.attr('vectorGridOptions').sort="ASC";this.attr('vectorGridOptions').paramToSort=valueToSort;$('.'+this.attr('vectorGridOptions').classHeaderSorted).removeClass(this.attr('vectorGridOptions').classHeaderSorted);$('.'+this.attr('vectorGridOptions').classHeaderSortedDesc).removeClass(this.attr('vectorGridOptions').classHeaderSortedDesc);var pos=false;if(this.attr('vectorGridOptions').sort=="ASC")
$(elemento).parent().addClass(this.attr('vectorGridOptions').classHeaderSorted);else
$(elemento).parent().addClass(this.attr('vectorGridOptions').classHeaderSortedDesc);$(this).refresh('sort',valueToSort);},clear:function()
{if(this.find('tbody').length)
{this.find('tbody').remove();this.find('tfoot').remove();}},refresh:function(type,param)
{this.loadVectorGrid();this.mountFoot();if(typeof this.attr('vectorGridOptions').refreshCallbackFunction=='function')
this.attr('vectorGridOptions').refreshCallbackFunction(this,type,param);},mountFoot:function()
{var foot="<tr";if(this.attr('vectorGridOptions').classfoot)
foot+=" class=\""+this.attr('vectorGridOptions').classfoot+"\"";foot+=">";foot+="<th colspan=\""+this.attr('vectorGridOptions').cols.length+"\"><span class=\"datagrid_footer_paginacao\"><p>Paginação: </p>";var previous='<li '+((this.attr('vectorGridOptions').footPreviousClass)?'class="'+this.attr('vectorGridOptions').footPreviousClass+'"':'')+'>';previous+='<button onclick="$(\'#'+this.attr('id')+'\').previous();">'+this.attr('vectorGridOptions').footPreviousText+'</button>';previous+='</li>';var next='<li '+((this.attr('vectorGridOptions').footNextClass)?'class="'+this.attr('vectorGridOptions').footNextClass+'"':'')+'>';next+='<button onclick="$(\'#'+this.attr('id')+'\').nextVectorGrid();">'+this.attr('vectorGridOptions').footNextText+'</button>';next+='</li>';var frist='<li '+((this.attr('vectorGridOptions').footFirstClass)?'class="'+this.attr('vectorGridOptions').footFirstClass+'"':'')+'>';frist+='<button onclick="$(\'#'+this.attr('id')+'\').first();">'+this.attr('vectorGridOptions').footFirstText+'</button>';frist+='</li>';var last='<li '+((this.attr('vectorGridOptions').footLastClass)?'class="'+this.attr('vectorGridOptions').footLastClass+'"':'')+'>';last+='<button onclick="$(\'#'+this.attr('id')+'\').last();">'+this.attr('vectorGridOptions').footLastText+'</button>';last+='</li>';var jumps="";for(var i=-this.attr('vectorGridOptions').rowsJump;i<=this.attr('vectorGridOptions').rowsJump;i++)
{if(parseInt(this.attr('vectorGridOptions').page)+i<=this.attr('vectorGridOptions').json.totalPages&&parseInt(this.attr('vectorGridOptions').page)+i>0)
{if(i==0)
jumps+='<li'+((this.attr('vectorGridOptions').footActualPageClass)?' class="'+this.attr('vectorGridOptions').footActualPageClass+'"':'')+'>'+parseInt(this.attr('vectorGridOptions').page)+'</li>';else
jumps+='<li'+((this.attr('vectorGridOptions').footJumpersClass)?' class="'+this.attr('vectorGridOptions').footJumpersClass+'"':'')+'><button  onclick="$(\'#'+this.attr('id')+'\').jumpToPage('+(parseInt(this.attr('vectorGridOptions').page)+i)+');">'+(parseInt(this.attr('vectorGridOptions').page)+i)+'</button></li>';}}
foot+="<ul>";if(this.attr('vectorGridOptions').page>1)
foot+=frist+previous;foot+=jumps;if(this.attr('vectorGridOptions').page<this.attr('vectorGridOptions').json.totalPages)
foot+=next+last;foot+="</ul>";foot+="<select>";for(var i=0;i<this.attr('vectorGridOptions').rowsOptions.length;i++)
{foot+='<option value="'+this.attr('vectorGridOptions').rowsOptions[i]+'"';foot+=(this.attr('vectorGridOptions').rows==this.attr('vectorGridOptions').rowsOptions[i])?' selected="selected"':'';foot+='>';foot+=this.attr('vectorGridOptions').rowsOptions[i]+' registros por página</option>';}
foot+="</select>";if(this.attr('vectorGridOptions').cols.length>=4)
var total_cols_span=this.attr('vectorGridOptions').cols.length-3;foot+="</span><span class=\"datagrid_footer_total_registros\"><p>Total de registros: ";foot+=this.attr('vectorGridOptions').json.totalRecords+"</p></span>";var domfoot=document.getElementById(this.attr('id')).createTFoot();this.find('tfoot').html(foot);this.find('tfoot select').change(function(){$(this).parents('table').chngPage(this.value);return true;});},chngPage:function(size)
{this.attr('vectorGridOptions').rows=size;this.refresh('change_rows',size);},previous:function()
{this.attr('vectorGridOptions').page=(this.attr('vectorGridOptions').page>1)?this.attr('vectorGridOptions').page-1:1;this.refresh('previous');},first:function()
{this.attr('vectorGridOptions').page=1;this.refresh('first');},last:function()
{this.attr('vectorGridOptions').page=this.attr('vectorGridOptions').json.totalPages;this.refresh('last');},nextVectorGrid:function()
{this.attr('vectorGridOptions').page=(this.attr('vectorGridOptions').page<this.attr('vectorGridOptions').json.totalPages)?this.attr('vectorGridOptions').page+1:this.attr('vectorGridOptions').json.totalPages;this.refresh('nextVectorGrid');}})})(jQuery);
