function setCookies(B,A){$.cookie("SORT_KEY",B,{path:"/",expires:1});$.cookie("SORT_DIR",A,{path:"/",expires:1})}jQuery.fn.ingrid=function(o){var cfg={height:200,savedStateLoad:false,initialLoad:false,colWidths:[120,300,80,80,80,80,80],minColWidth:60,headerHeight:30,headerClass:"grid-header-bg",resizableCols:true,gridClass:"datagrid",rowClasses:[],colClasses:[],rowHoverClass:"grid-row-hover",rowSelection:true,rowSelectedClass:"grid-row-sel",onRowSelect:function(tr,selected){},sorting:true,colSortParams:[],sortAscParam:"asc",sortDescParam:"desc",sortedCol:"col1",sortedColDir:"desc",sortDefaultDir:"desc",sortAscClass:"grid-sort-asc",sortDescClass:"grid-sort-desc",sortNoneClass:"grid-sort-none",paging:true,pageNumber:1,recordsPerPage:0,totalRecords:0,pageToolbarHeight:25,pageToolbarClass:"grid-page-toolbar",pageStartClass:"grid-page-start",pagePrevClass:"grid-page-prev",pageInfoClass:"grid-page-info",pageInputClass:"grid-page-input",pageNextClass:"grid-page-next",pageEndClass:"grid-page-end",pageLoadingClass:"grid-page-loading",pageLoadingDoneClass:"grid-page-loading-done",pageViewingRecordsInfoClass:"grid-page-viewing-records-info",url:"remote.html",type:"POST",dataType:"html",extraParams:{},loadingClass:"grid-loading",loadingHtml:"<div>&nbsp;</div>",resizeHandleHtml:"",resizeHandleClass:"grid-col-resize",scrollbarW:17,columnIDAttr:"_colid",ingridIDPrefix:"_ingrid",cookieExpiresDays:360,cookiePath:"/",minHeight:100,resizableGrid:true,dragDropCols:true,sortType:"server|client|none"};jQuery.extend(cfg,o);var cols=new Array();var h=jQuery('<table cellpadding="0" cellspacing="0"></table>').html(this.find("thead")).addClass(cfg.gridClass).addClass(cfg.headerClass).height(cfg.headerHeight).extend({cols:cols});h.find("th").each(function(i){jQuery(this).width(cfg.colWidths[i]);var col_label=jQuery("<div />").html(jQuery(this).html()).css("float","left").css("display","block").css("-moz-user-select","none").css("-khtml-user-select","none").css("user-select","none").attr("unselectable","on");if(cfg.sorting){var key=cfg.colSortParams[i]?cfg.colSortParams[i]:i;var cls=(key==cfg.sortedCol||i==cfg.sortedCol)?(cfg.sortedColDir==cfg.sortAscParam?cfg.sortAscClass:cfg.sortDescClass):(cfg.sortNoneClass);col_label.addClass(cls).click(function(){var dir=col_label.hasClass(cfg.sortNoneClass)?cfg.sortDefaultDir:(col_label.hasClass(cfg.sortAscClass)?cfg.sortDescParam:cfg.sortAscParam);var params={sort:key,dir:dir};setCookies(key,dir);if(p){jQuery.extend(params,{page:p.getPage()})}g.load(params,function(){var cls=col_label.hasClass(cfg.sortNoneClass)?(cfg.sortDefaultDir==cfg.sortAscParam?cfg.sortAscClass:cfg.sortDescClass):(col_label.hasClass(cfg.sortAscClass)?cfg.sortDescClass:cfg.sortAscClass);g.getHeaders(function(col){col.find("div:first").addClass(cfg.sortNoneClass).removeClass(cfg.sortAscClass).removeClass(cfg.sortDescClass)});col_label.removeClass(cfg.sortAscClass).removeClass(cfg.sortDescClass).addClass(cls).removeClass(cfg.sortNoneClass)})})}jQuery(this).html(col_label);jQuery(this).bind("resizeColumn",{col_num:i},function(e,w){jQuery(this).width(w);g.resize();g.getColumn(e.data.col_num).each(function(){jQuery(this).width(w)})});if(cfg.resizableCols){var handle=jQuery("<div />").html(cfg.resizeHandleHtml==""?"-":cfg.resizeHandleHtml).addClass(cfg.resizeHandleClass);handle.bind("mousedown",function(e){var th=jQuery(this).parent();var left=e.clientX;z.resizeStart(th,left)});jQuery(this).append(handle)}});var row=this.find("tr:first");jQuery(row).find("td").each(function(i){jQuery(this).width(cfg.colWidths[i])});var b=jQuery("<div />").html(jQuery('<table cellpadding="0" cellspacing="0"></table>').html(this.find("tbody")).width(h.width()).addClass(cfg.gridClass)).css("overflow","auto").height(cfg.height);if(cfg.resizableCols){var z_sel="vertical-resize-divider"+new Date().getTime();var z=jQuery('<div id="'+z_sel+'"></div>').css({backgroundColor:"#ababab",height:(cfg.headerHeight+cfg.height),width:"4px",position:"absolute",zIndex:"10",display:"block"}).extend({resizeStart:function(th,eventX){var pos=th.offset();jQuery(this).show().css({top:pos.top,left:eventX});jQuery("body").bind("mousemove",{col:th},function(e){var th=e.data.col;var pos=th.offset();var col_w=e.clientX-pos.left;if(col_w>cfg.minColWidth){jQuery("#"+z_sel).css("left",e.clientX)}});jQuery("body").bind("mouseup",{col:th},function(e){jQuery(this).unbind("mousemove").unbind("mouseup");jQuery("#"+z_sel).hide();var th=e.data.col;var pos=th.offset();var col_w=e.clientX-pos.left;if(col_w>cfg.minColWidth){th.trigger("resizeColumn",[col_w])}else{th.trigger("resizeColumn",[cfg.minColWidth])}})}})}if(cfg.paging){var totr=cfg.recordsPerPage>0?cfg.recordsPerPage:b.find("tr").length;var pv;if(cfg.totalRecords>0){pv=jQuery("<div />").addClass(cfg.pageViewingRecordsInfoClass).extend({updateViewInfo:function(loaded_rows,page){var _start=((loaded_rows*(page-1)+1));var _end=((loaded_rows*page)>cfg.totalRecords?cfg.totalRecords:loaded_rows*page);this.html("Viewing Rows "+_start+" - "+_end+" of "+cfg.totalRecords);return this}});pv.updateViewInfo(totr,cfg.pageNumber)}var p=jQuery("<div />").addClass(cfg.pageToolbarClass).height(cfg.pageToolbarHeight).width(b.width()).extend({setPage:function(p){var input=this.find("input."+cfg.pageInputClass);pload.removeClass(cfg.pageLoadingDoneClass);g.load({page:p},function(){input.val(p);if(cfg.totalRecords>0){var totr=b.find("tr").length;pv.updateViewInfo(totr,p)}pload.addClass(cfg.pageLoadingDoneClass)});return this},getPage:function(){var p=Number(this.find("input."+cfg.pageInputClass).val());return p}});var pb1=jQuery('<a href="#">&laquo;</a>').addClass(cfg.pageStartClass).click(function(){p.setPage(1)});var pb2=jQuery('<a href="#">&lt;</a>').addClass(cfg.pagePrevClass).click(function(){var _p=p.getPage();if(_p>1){_p--;p.setPage(_p)}});if(cfg.totalRecords>0){var totp=Math.ceil(cfg.totalRecords/totr)}var pb3=jQuery('<a href="#">&gt;</a>').addClass(cfg.pageNextClass).click(function(){var _p=p.getPage();_p++;if(totp){if(_p<=totp){p.setPage(_p)}}else{p.setPage(_p)}});var pload=jQuery("<div />").addClass(cfg.pageLoadingClass).addClass(cfg.pageLoadingDoneClass);var pfld=jQuery('<input type="text" value="'+cfg.pageNumber+'"/>').addClass(cfg.pageInputClass);var pinfo=jQuery("<div />").addClass(cfg.pageInfoClass).append(pfld);var pform=jQuery("<form></form>").append(pinfo).submit(function(){var _p=parseInt(p.getPage());if(_p){if(totp){if(_p<=totp){p.setPage(_p)}}else{if(_p>0){p.setPage(_p)}}}else{alert("Please Enter a Valid Page Number.")}return false});var pb4;if(cfg.totalRecords>0){pinfo.html("Page "+pinfo.html()+" of "+totp);pb4=jQuery('<a href="#">&raquo;</a>').addClass(cfg.pageEndClass).click(function(){var _p=p.getPage();_p++;if(totp){if(_p<totp){p.setPage(totp)}}})}else{pinfo.html("Page "+pinfo.html())}p.append(pb1).append(pb2).append(pform).append(pb3).append(pb4).append(pload).append(pv)}var g=jQuery("<div />").append(h).append(b).extend({h:h,b:b});if(cfg.paging){g.append(p).extend({p:p})}if(cfg.resizableCols){g.append(z.hide()).extend({z:z})}var gap=jQuery("<div />").width(cfg.scrollbarW).addClass(cfg.headerClass).height(cfg.headerHeight).css({position:"absolute",zIndex:"0"}).appendTo(g);var modalmask=jQuery("<div />").html(cfg.loadingHtml).addClass(cfg.loadingClass).css({position:"absolute",zIndex:"98"}).appendTo(g).hide();g.extend({load:function(params,cb){var data=jQuery.extend(cfg.extraParams,params);modalmask.width(b.width()).show();g.saveSelectedRows();jQuery.ajax({type:cfg.type.toUpperCase(),url:cfg.url,data:data,success:function(result){if(cfg.dataType=="json"){var rows=eval("("+result+")");alert("json = "+rows)}if(cfg.dataType=="html"){var $tbl=jQuery(result);var row=$tbl.find("tr:first");if(jQuery(row).find("td").length==cfg.colWidths.length){jQuery(row).find("td").each(function(i){jQuery(this).width(g.getHeader(i).css("width"))});b.find("tbody").html($tbl.find("tbody").html());g.initStylesAndWidths();g.saveState(data)}else{if(row.length<1){alert("Error: row.length < 1")}else{alert("Error: Total columns returned ["+$tbl.find("tbody tr:first td").length+"] do not match Ingrid ["+cfg.colWidths.length+"].")}}}if(cb){cb()}},error:function(){alert("Unable to reach Server. Try again or check your internet connection.")},complete:function(){modalmask.hide();$(".invisible").css({color:"black"});clearPSFaceboxLeft();clearPSFacebox();expCollapse();$("#qsbar").show();$.facebox.close()}});return this},getState:function(){var props={url:"nothing"};return props},saveState:function(data){if(jQuery.cookie){var g_id=this.attr("id");var param_str="page="+data.page+",sort="+data.sort+",dir="+data.dir;jQuery.cookie(g_id,param_str,{expires:cfg.cookieExpiresDays,path:cfg.cookiePath})}},saveSelectedRows:function(){if(jQuery.cookie){var row_ids=g.getSelectedRowIds();if(row_ids.length>0){jQuery.cookie(this.attr("id")+"_rows",row_ids.join(","),{expires:cfg.cookieExpiresDays,path:cfg.cookiePath})}}},getHeaders:function(cb){var ths=this.find("th");if(cb){ths.each(function(){cb(jQuery(this))});return this}else{return ths}},getHeader:function(i,cb){var th=this.find("th").slice(i,i+1);if(cb){cb(jQuery(this));return this}else{return th}},getColumn:function(i,cb){var tds=this.find("tbody td[@"+cfg.columnIDAttr+"='"+i+"']");if(cb){tds.each(function(){cb(jQuery(this))});return this}else{return tds}},getRows:function(cb){var trs=this.find("tbody tr");if(cb){trs.each(function(){cb(jQuery(this))});return this}else{return trs}},getSelectedRows:function(){return this.find("tbody tr[@_selected='true']")},getSelectedRowIds:function(){var rows=g.getSelectedRows();var row_ids=[];for(var i=0;i<rows.length;i++){if(jQuery(rows[i]).attr("id")){row_ids.push(jQuery(rows[i]).attr("id"))}}return row_ids},getSavedRowIds:function(){var row_ids=[];if(jQuery.cookie){var str_ids=jQuery.cookie(this.attr("id")+"_rows");if(str_ids){row_ids=str_ids.split(",")}}return row_ids},resize:function(){var outer_w=h.width()+cfg.scrollbarW;b.width(outer_w);if(p){p.width(outer_w)}if(gap){var pos=h.offset();gap.css("left",outer_w-cfg.scrollbarW+pos.left).css("top",pos.top)}},initStylesAndWidths:function(){var colWidths=new Array();this.getHeaders().each(function(i){colWidths[i]=jQuery(this).css("width")});var str_ids="|"+g.getSavedRowIds().join("|")+"|";this.getRows().each(function(r){if(cfg.rowClasses.length>0){var cursor=(r==0?0:r%cfg.rowClasses.length);if(cfg.rowClasses[cursor]!=""){jQuery(this).addClass(cfg.rowClasses[cursor])}if(cfg.rowHoverClass!=""){jQuery(this).hover(function(){if(jQuery(this).attr("_selected")!="true"){jQuery(this).removeClass(cfg.rowClasses[cursor]).addClass(cfg.rowHoverClass)}},function(){if(jQuery(this).attr("_selected")!="true"){jQuery(this).removeClass(cfg.rowHoverClass).addClass(cfg.rowClasses[cursor])}})}if(cfg.rowSelection==true){jQuery(this).click(function(){if(jQuery(this).attr("_selected")){jQuery(this).attr("_selected")=="true"?jQuery(this).attr("_selected","false").removeClass(cfg.rowSelectedClass):jQuery(this).attr("_selected","true").addClass(cfg.rowSelectedClass)}else{jQuery(this).attr("_selected","true").addClass(cfg.rowSelectedClass)}if(cfg.onRowSelect){cfg.onRowSelect(this,(jQuery(this).attr("_selected")=="true"?true:false))}});if(str_ids.indexOf("|"+jQuery(this).attr("id")+"|")!=-1){jQuery(this).attr("_selected","true").addClass(cfg.rowSelectedClass)}}}jQuery(this).find("td").each(function(i){var txt=jQuery(this).html();jQuery(this).attr(cfg.columnIDAttr,i).width(colWidths[i]).html(jQuery("<div />").html(txt).css("overflow","hidden"));if(cfg.colClasses.length>0){if(cfg.colClasses[i]!=""){jQuery(this).addClass(cfg.colClasses[i])}}})})}});return this.each(function(tblIter){var g_id=cfg.ingridIDPrefix+"_"+jQuery(this).attr("id")+"_"+tblIter;g.attr("id",g_id);jQuery(this).replaceWith(g[0]);g.initStylesAndWidths();g.resize();modalmask.width(h.width()+cfg.scrollbarW).height(b.height()).css({top:b.offset().top,left:b.offset().left});if(cfg.savedStateLoad&&jQuery.cookie){var param_str=jQuery.cookie(g_id);if(!param_str){g.load();cfg.initialLoad=false}else{var pairs=param_str.split(",");var params={};var hash=[];for(var i=0;i<pairs.length;i++){var prop=pairs[i].split("=");hash[prop[0]]=prop[1]}if(hash.page.toLowerCase()!="undefined"&&cfg.paging){params.page=hash.page;p.find("input."+cfg.pageInputClass).val(params.page)}if(hash.sort.toLowerCase()!="undefined"&&hash.dir.toLowerCase()!="undefined"){params.sort=hash.sort;params.dir=hash.dir;var colid=params.sort;if(cfg.colSortParams.length>0){for(i=0;i<cfg.colSortParams;i++){if(cfg.colSortParams[i]==params.sort){colid=i;break}}}g.getHeaders(function(th){th.find("div:first").addClass(cfg.sortNoneClass).removeClass(cfg.sortAscClass).removeClass(cfg.sortDescClass)});g.getHeader(parseInt(colid)).find("div:first").addClass(cfg.sortNoneClass).removeClass(cfg.sortAscClass).removeClass(cfg.sortDescClass).addClass(params.dir==cfg.sortAscParam?cfg.sortAscClass:cfg.sortDescClass).removeClass(cfg.sortNoneClass)}if(params.page||params.sort||params.dir){g.load(params);cfg.initialLoad=false}}}if(cfg.initialLoad){g.load()}}).extend({g:g})};
