var Defaults={paginationContainer:"page-contents",defaultField:"price",itemsPerRow:1,itemsPerPage:99,hasRowDivider:false,rowDividerHTML:'<img src="/lib/yhst-43111655429911/dots.jpg" border="0" />'};var PropertyFilter=$H();PropertyFilter.set("price-bold","[\\$\\.,]");Array.prototype._sortPrep=function(field){if(!this.maximum){this.maximum=this[0][field];var i=this.length;while(i--){if(this.maximum<this[i][field]){this.maximum=this[i][field]}}}if(this.maximum){var fill=new Array();var length=this.maximum.toString().length;var i=length;var zs="";while(i--){fill.push(zs);zs+="0"}for(var i=0;i<this.length;i++){this[i][field]=(this[i][field].toString().length<length?fill[length-this[i][field].toString().length]:"")+this[i][field]}}};Array.prototype._sortIntAsc=function(field){this._sortPrep(field);var saveO=Object.prototype.toString;var saveA=Array.prototype.toString;Object.prototype.toString=function(){return this[field]};Array.prototype.toString=function(){return this[field]};this.sort();Array.prototype.toString=saveA;Object.prototype.toString=saveO};Array.prototype._sortIntDesc=function(field){this._sortPrep(field);var saveO=Object.prototype.toString;var saveA=Array.prototype.toString;Object.prototype.toString=function(){return this[field]};Array.prototype.toString=function(){return this[field]};this.sort();this.reverse();Array.prototype.toString=saveA;Object.prototype.toString=saveO};Array.prototype.sortAsc=function(field){var saveO=Object.prototype.toString;var saveA=Array.prototype.toString;Object.prototype.toString=function(){return this[field]};Array.prototype.toString=function(){return this[field]};this.sort();Array.prototype.toString=saveA;Object.prototype.toString=saveO};Array.prototype.sortDesc=function(field){var saveO=Object.prototype.toString;var saveA=Array.prototype.toString;Object.prototype.toString=function(){return this[field]};Array.prototype.toString=function(){return this[field]};this.sort();this.reverse();Array.prototype.toString=saveA;Object.prototype.toString=saveO};Array.prototype._parseInt=function(field){for(var i=0;i<this.length;i++){this[i][field]=this[i][field]*1}};Array.prototype.sortIntAsc=function(field){this._sortIntAsc(field);this._parseInt(field)};Array.prototype.sortIntDesc=function(field){this._sortIntDesc(field);this._parseInt(field)};Element.addMethods({collectText:function(element){if(element.empty()){return null}return element.innerHTML.strip().stripTags()}});function oc(a){var o={};for(var i=0;i<a.length;i++){o[a[i]]=""}return o}var PropertyFactory={getSortableProperties:function(e){props=e.immediateDescendants();var obj={};props.each(function(e){var name=e.readAttribute("class");var val=e.collectText();if(name!=""&&val!=""){if(filter=PropertyFilter.get(name)){val=val.gsub(filter,"")}this.setProperty(obj,name,val)}},this);return obj},setProperty:function(obj,name,val){if(name==null){return}console.log(name+":"+val);name=name.gsub("-","");eval("obj."+name+'="'+val+'";')}};var Items=Class.create({items:[],initialize:function(){var uniqs=[];items=$$(".section-item");items.each(function(e){var item=PropertyFactory.getSortableProperties(e);item.element=e;if(item.id){if(!(item.id in oc(uniqs))){this.items.push(item);uniqs.push(item.id)}}else{this.items.push(item)}},this);this.items.uniq()},getItems:function(){return this.items},register:function(item){this.items.push(item)}});var Sorter=Class.create({initialize:function(items,paginator){this.items=items;this.paginator=paginator;this.options=arguments[2]||{}},sort:function(field){if(field!=null){var options=arguments[1]||{};if(!options.type){options.type=this.options.defaultType||"string"}if(!options.orderby){options.orderby=this.options.defaultOrder||"asc"}if(options.type=="string"){this.sortBy(field,options.orderby)}if(options.type=="int"){this.sortIntBy(field,options.orderby)}}this.paginator.paginate(this.items)},sortBy:function(field,orderby){if(orderby=="desc"){this.items.getItems().sortDesc(field)}else{this.items.getItems().sortAsc(field)}},sortIntBy:function(field,orderby){if(orderby=="desc"){this.items.getItems().sortIntDesc(field)}else{this.items.getItems().sortIntAsc(field)}}});var Page=Class.create({element:null,items:null,initialize:function(items){this.element=new Element("div",{"class":"paginated-content"});items.eachSlice(Defaults.itemsPerRow,function(row){var e=new Element("div");row.each(function(item,i){item.element.removeClassName("last");if(i==(Defaults.itemsPerRow-1)){item.element.addClassName("last")}e.appendChild(item.element)});e.appendChild(new Element("div",{"class":"clear"}));if(Defaults.hasRowDivider){e.appendChild(new Element("div",{"class":"page-row-divider"}).update(Defaults.rowDividerHTML))}this.appendChild(e)},this)},appendChild:function(c){this.element.appendChild(c)}});var PageCollection=Class.create();Object.extend(PageCollection.prototype,{pages:[],index:0,initialize:function(pages){if(pages){this.pages=$A(page)}else{this.pages=$A()}},nextPage:function(){if(++this.index>=this.pages.length){this.index=0}return this.pages[this.index]},previousPage:function(){this.index-=1;if(this.index<0){this.index=this.pages.length-1}return this.pages[this.index]},currentPage:function(){return this.pages[this.index]},addPage:function(page){if(page){this.pages.push(page)}},getPage:function(i){this.index=i;return this.pages[i]},reset:function(){this.index=0},getPages:function(){return this.pages},currentIndex:function(){return this.index}});var Paginator=Class.create({pages:[],container:null,items:null,initialize:function(){this.container=$(Defaults.paginationContainer)},setItemsPerRow:function(i){if(i<=0){return}this.itemsPerRow=i},setItemsPerPage:function(){if(i<=0){return}this.itemsPerPage=i},paginate:function(ItemsCollection){this.pages=new PageCollection();if(!ItemsCollection){return}this.items=ItemsCollection;ItemsCollection.getItems().eachSlice(Defaults.itemsPerPage,function(itemsForPage){this.pages.addPage(new Page(itemsForPage))},this);this.container.update("");this.pages.getPages().each(function(page,i){if(i!=0){page.element.hide()}this.container.appendChild(page.element)},this);this.writePageNumbers();this.writePageDetails()},writePageNumbers:function(){containers=$$(".page-number-container");if(!containers){return}currentIndex=this.currentPageIndex();containers.each(function(container){container.update("");container.appendChild(new Element("a",{href:"javascript: paginator.prevPage()"}).update("<"));this.pages.getPages().each(function(page,index){element=new Element("a",{href:"javascript: paginator.showPage("+index+")"}).update(index+1);if(index==currentIndex){element.addClassName("current-page")}container.appendChild(element)});container.appendChild(new Element("a",{href:"javascript: paginator.nextPage()"}).update(">"));container.appendChild(new Element("a",{href:"javascript: paginator.showAll();"}).update("Show All"))},this)},writePageDetails:function(){containers=$$(".page-numbers");if(!containers){return}items=this.items;var numItems=items.getItems().length;var page=this.currentPageIndex()+1;var itemsPerPage=Defaults.itemsPerPage;var firstItem=(itemsPerPage*page-itemsPerPage)+1;var lastItem=itemsPerPage*page;if(numItems<lastItem){lastItem=numItems}containers.invoke("update",("Showing "+firstItem+" - "+lastItem+" of <b>"+numItems+"</b>"))},showPage:function(page){this.pages.getPages().each(function(page){page.element.hide()});this.pages.getPage(page).element.show();this.writePageNumbers();this.writePageDetails()},showAll:function(){this.pages.getPages().each(function(page){page.element.show()})},nextPage:function(){this.pages.currentPage().element.hide();this.pages.nextPage().element.show();this.writePageNumbers();this.writePageDetails()},prevPage:function(){this.pages.currentPage().element.hide();this.pages.previousPage().element.show();this.writePageNumbers();this.writePageDetails()},currentPageIndex:function(){return this.pages.currentIndex()}});var paginator=null;var sorter=null;document.observe("dom:loaded",function(){paginator=new Paginator();sorter=new Sorter(new Items(),paginator);sorter.sort()});