(478,'document','text/html','Carpet Source USA - A Certified DustRam® System Dust Free Tile Removal Contractor In New Mexico, Albuquerque, Las Cruces, Rio Rancho, Santa Fe','Carpet Source USA - A Certified DustRam® System Dust Free Tile Removal Contractor In New Mexico, Albuquerque, Las Cruces, Rio Rancho, Santa Fe','Carpet Source USA - A Certified DustRam® System Dust Free Tile Removal Contractor In New Mexico, Albuquerque, Las Cruces, Rio Rancho, Santa Fe','don-lovato-carpet-source-usa','',1,0,0,477,0,'','<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p><a href=\"http://www.carpetsourceusa.com/dust-free-tile-removal-albuquerque-nm/\" target=\"_blank\"><img style=\"float: left; margin: 20px;\" src=\"assets/images/IMG_5715.JPG\" alt=\"\" width=\"300\" height=\"171\" /></a></p>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%;\">For the past 24 years, Carpet Source in Albuquerque, New Mexico has been helping Albuquerque metro area customers make sense of the hundreds of flooring options available to them in the comfort of their own home. &nbsp;Featuring a mobile showroom that comes right to your door, the company has created a painless and efficient way to bring the latest trends and styles of carpeting, wood flooring, laminates and tile to make your home beautiful, comfortable and stylish. Now Carpet Source can provide a total solution for your flooring remodel and remove tile DUST FREE, including other floor coverings with DustRam&reg; System Equipment, a new technology and industry changing system of equipment and processes for the Dust Free removal of floor coverings!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\">By using the Patented DustRam&reg;&nbsp;System Equipment for dust free tile removal in Albuquerque and the surrounding area, NM Carpet Source is able to provide the best, fastest and safest removal for old flooring. As explained by owner Don Lovato, &ldquo;Exposure to crystalline silica dust when removing tile can lead to the development of disabling and sometimes fatal lung diseases, and that could put not only the installer at risk but the homeowners as well.&rdquo; &nbsp;With the Patented DustRam&reg; System Equipment and powerful HEPA filter vacuums that capture the dust at the source in every step of the removal process,&nbsp;Carpet Source&rsquo;s dust free tile removal procedure requires less than half the time, allows customers to stay in their homes during the process, and leaves behind NO DUST or other contaminates thanks to the&nbsp;DustRam&reg; System Equipment for the Dust Free removal of tile and all types of floor coverings.&nbsp;</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\">To make your home a beautiful, comfortable place for you and your family and friends, without Dust contamination, start by visiting the <a title=\"Find out more about dust free tile removal in New Mexico\" href=\"http://www.carpetsourceusa.com/dust-free-tile-removal-albuquerque-nm/\" target=\"_blank\">Carpet Source website</a>, or call&nbsp;<strong>505-315-2700</strong>&nbsp;to schedule an in-home appointment today with a consultant.\"</span></p>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%;\">Don\'t forget to read some of their excellent reviews on <a title=\"Dust free tile removal reviews on GenBook\" href=\"http://www.genbook.com/bookings/slot/reservation/30108739/reviews/\" target=\"_blank\">GenBook</a>,&nbsp;<a title=\"Dust free tile removal reviews on Customer Lobby\" href=\"https://www.customerlobby.com/reviews/6264/carpet-source/\" target=\"_blank\">Customer Lobby</a> and <a title=\"Dust free tile removal reviews on Angie\'s List\" href=\"http://www.angieslist.com/companylist/us/nm/albuquerque/carpet-source-reviews-2348005.htm\" target=\"_blank\">Angie\'s List</a>.</span></p>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%;\"><strong>We would like to share a Video with you created by our fellow Contractor in Phoenix, AZ if you have not witnessed the amazing feats of the DustRam&reg; System.</strong></span></p>\r\n<p><span><strong>&nbsp;</strong></span></p>\r\n<p><span class=\"comment\">{{ page.fields.video_1 }}</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\">\r\n</span></p>\r\n<hr />\r\n<p>&nbsp;</p>\r\n<p><a title=\"Find a map of Certified DustRam System Dust Free Tile Removal Contractors in New Mexico\" href=\"http://www.dustfreetileremoval.com\" target=\"_blank\">Dust Free Tile Removal</a>, Tile Removal, Flooring Removal | New Mexico, Albuquerque, Las Cruces, Rio Rancho, Santa Fe</p>\r\n<div><span><br /></span></div>',1,10,1,1,0,6,1426638004,6,1433108838,0,0,0,1432577253,6,'',0,0,0,0,0,0,1),(486,'document','text/html','Arizona Home Floors - A Certified DustRam® System Dust Free Tile Removal Contractor In Phoenix, Scottsdale, Chandler, Gilbert, Arizona','Arizona Home Floors - A Certified DustRam® System Dust Free Tile Removal Contractor In Phoenix, Scottsdale, Chandler, Gilbert, Arizona','Arizona Home Floors - A Certified DustRam® System Dust Free Tile Removal Contractor In Phoenix, Scottsdale, Chandler, Gilbert, Arizona','jack-king-arizona-home-floors','',1,0,0,36,0,'','<p>&nbsp;</p>\r\n<p class=\"justifyleft\"><span style=\"font-size: 120%;\"><span style=\"line-height: 1.5;\"><span style=\"line-height: 1.5;\"><img style=\"float: left; margin: 10px 20px; border: 1px solid black;\" src=\"assets/images/people/Arizona Home Floors LLC - Pioneer of Dust Free Tile Removal and the Patented DustRam System.jpg\" alt=\"\" width=\"318\" height=\"78\" /><br /><br /></span></span></span></p>\r\n<p><span style=\"font-size: 120%;\">Arizona Home Floors, LLC is a&nbsp;<strong>Certified</strong>&nbsp;DustRam&reg; System Equipment contractor authorized to perform Dust Free Tile Removal in&nbsp;Phoenix, Scottsdale, Chandler, Gilbert, Peoria, Sun City, Glendale and Tucson, including all the surrounding cities in Arizona.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\">Beginning\r\nin 2008, Jack King/Arizona Home Floors, LLC was the first to pioneer and develop the dust free\r\ntile removal market with the amazing patented DustRam&reg; System. &nbsp;Since that\r\ntime, the DustRam&reg; System\r\nhas remained untouched in terms of advanced dust free tile removal technology,\r\nwith patented and patent pending military grade tile removal equipment developed for every\r\nphase of the tile removal process.&nbsp;\r\nOthers promising \"virtually dust free tile removal\" know they\r\ncan not promise what the DustRam System is capable of doing - delivering dust\r\nfree tile removal results each and every time.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\">The\r\nDustRam&reg;\r\nSystem is so successful at capturing dust from every phase of tile removal, including\r\nall other types of flooring, other quality minded contractors have invested in\r\nthe DustRam&reg;\r\nequipment from many other states in the USA.&nbsp; You likely have noticed a map of the USA,\r\nwhich contains links to other successful contractors using the DustRam&reg; System.&nbsp; As the sister company and founder of dust free\r\ntile removal, Arizona Home Floors LLC is proud to serve Phoenix, Scottsdale,\r\nChandler, Gilbert, Peoria, Sun City, Glendale and all the surrounding cities in\r\nArizona, including Tucson.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\">Please call <a href=\"http://www.azhomefloors.com\" target=\"_blank\">Arizona Home Floors</a> at 480-659-3199 for all your dust free tile removal needs.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\">Here is a video for those of you who have not witnessed the amazing feats of the DustRam&reg; System.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span>{{ page.fields.video_1 }}</span></p>\r\n<hr />\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%;\"><a href=\"http://www.bbb.org/central-northern-western-arizona/business-reviews/contractors-flooring/arizona-home-floors-in-phoenix-az-1000006092\" target=\"_blank\">Click here to see all the Arizona Better Business Bureau Customer Reviews for Arizona Home Floors</a></span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p>&nbsp;</p>\r\n<hr />\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%;\"><strong><span style=\"line-height: 1.5;\">Here are some recent Testimonials from satisfied clients about Arizona Home Floors:</span></strong></span></p>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%;\"><strong>5/18/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">INCREDIBLE!!! We just had 3400 sq ft of wood look porcelain tile torn out 100% DUST FREE this past week (5-14-2015 - 5-16-2015). THIS IS REAL AND THEY DELIVER WHAT THEY SAY! We have a brand new home that had 2 different shades that were installed throughout and the only way to remedy this was to have ALL of our floors torn out. I went into a panic dreading the thought of having to tear out all our brand new floors. Thank God I came across Jack King with Arizona Home Floors since I could not imagine what all the dust could do to me health wise not to mention all my new appliances sucking into the motors and components and my new white shaker cabinets throughout and glass crystal fixtures! From the courteous first call back from Rene (she called me back on a Saturday when the office was closed since she said she heard in my voice a sense of urgency and desperation) to Jack personally meeting us at our home to give a quote to the courteous and professional crew that showed up on time and completed the job exactly when they said they would. I also cringed at the thought of the damage that could result around my new cabinets, walls, appliances and fixtures. Jack assured me that this is what they do and to not worry about any damage. Jack was right. NO DAMAGE! NO DUST! And my floors are now smoother and better prepared for the new tile to be installed. My home was cleaner when they finished than when they started the job. I am so impressed with this company and being that I am a Real Estate agent I am going to recommend them to all my clients and anyone else that might need this service. Thank you so much Arizona Home Floors! You are truly a God send.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Maureen S.</strong><span style=\"line-height: 1.5;\">&nbsp;</span></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\">5/11/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">May 2015 Met Jack at Home and Garden Show. I checked out the website. And talked to Rene about their services. Also spoke with several tile people, who told me there was no such thing as dustless tile removal, the only way was the old fashion way. Jackhammering tile up. Since my wife is asthmatic, we never would have taken out the old tile that way. Still Somewhat Skeptical, I contacted AZ Home Floors and set a date. Rene, very pleasant and had all the information, said they\'d be there at 7am. By my watch they arrived at 7:02, but then it\'s an old watch! We had removed all of our precious breakables as Rene instructed. Met with Jack, he went over every step, they moved the heavier furniture and began. Still skeptical, he said the air quality would be no different during the process than it was before they started. And it was! I viewed the whole carpet and tile take up. His crew was efficient, careful, worked quickly, and as promised dust free. After all debris was removed the whole crew, to be sure, wiped down all flat surfaces, baseboards, counters, window ledges and doors, etc. vacuumed all floors now concrete and ready for new flooring. I\'m sure that any dust they got at that time was there prior to starting. Well worth the cost and saved us from any breathing problems. Time for our job start to finish, four and half hours. Carpet, tile removal, floor profiling and debris removal. Crew was courteous, careful and quick. If you\'re having tile removed, call Rene and Jack. Get it done right.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Richard K.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\">5/5/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">This company is fantastic. 1st, they quoted three days for the job and finished in 1-1/2 days. They are truly dust free! We could find no dust. Don\'t worry about this company making dust in fact, the tile install company we chose made more dust than than Arizona Home Floors!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Tim H.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\">4/16/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">What a great experience working with AZ Home Floors. The crew was on time, courteous, and left my house clean and dust free. We had 860 sq. feet of tile removed in just under 4.5 hrs. &nbsp;Rene (manager in the office) was great to work with and made the experience easy and seamless. My wife and I would definitely recommend AZ Home Floors to anybody looking to have tile removed.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Tim S.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>4/3/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">In a word, simply outstanding. Tile removal is a messy and difficult job. These people arrive on time in matching company t-shirts no less, they have the specialized equipment and expertise to do the job right, the crew is 100% professional, and they leave your floors completely clean and your house spotless or,more accurately, dustless. These people are perfectionists which is often difficult to find in the construction trades. I rate them a 10+.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Tom C.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\">4/3/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">This is an excellent company to do business with. Very professional &amp; true to their claim the tile removal was \"dust free\". This is the only way to have tile removed!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Joe S.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">3/25/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Totally credible company - they performed exactly as advertised. Ceramic removal was efficient, dust-free and performed in an exceptional professional manner. We would definitely recommend their services.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Bill &amp; Kathy Biers, Town \'N Country Home Interiors</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">3/25/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I am absolutely impressed with the job that Arizona Home Floors did. They were reasonable and flexible with my schedule. They were able to come out immediately to give me an on-site quote. They are clear about what needs to be done, and they are also realistic. They tell you exactly what to expect. I had to wait a few months to get the money together for the job. Rene (their contact person) was fabulous. She sent me periodic emails of available dates for when I was ready. Finally, their work is very clean. We had approximately 650 square feet to remove and they were done in 2 days. Upon leaving, you couldn\'t tell anything had been done to the house, aside from the old tile was gone. When they guarantee NO DUST, they make good on that guarantee. There wasn\'t a drop of dust ANYWHERE. You have to see it to believe it. My parents are going to have them come out and do a job on their hous. AZ HOME FLOORS and Jack King are FABULOUS!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Sunny Z.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">3/22/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Outstanding job and extremely polite crew. Cleaned up after themselves. Very trustworthy...so much that I left them to lockup my house due to needing to go to work. House was left in perfect shape.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By OJ &amp; Fiore L.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>3/13/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">We are in the grueling process if remodeling. I never knew how difficult, and messy it was to remove tile. We removed about 100 sq feet on our own with the help of a friend.. That was about 2 months ago and I am still removing dust! I knew there was no way we could remove the remaining 400 sq feet without a huge mess. Then, after much googling and research I found Arizona Home Floors! They removed the remaining tile in just a few hours, no dust, very professional and affordable! I would strongly recommend having them remove your flooring. Not only will it save your home and your belongings from that horrible dust, but you can kick back and save your energy for other DIY projects around the house!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Tiffany U.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>3/12/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">We cannot say enough about AZ Home Floors. We had some remodeling done in our home. Friends warned us that the worst part would be the tearing out of about 1100 square feet of ceramic tile, with more dust than we could imagine. As it turned out, the tearing out of the old tile was the least stressful, best experience of the entire remodel. One of the other vendors would not schedule their work when we requested because they did not believe AZ Home Floors crew could finish in the amount of time they promised. Well, AZ Home Floors did EVERYTHING as they had promised and were finished earlier than expected! It was dust-free, and you would not have known that they had been here, except for the fact that we had clean concrete floors. We&rsquo;d also like to say that Rene, from AZ Home Floors office, is extremely knowledgeable and especially patient. Jack measured everything exactly, and he and all of his employees were professional, polite, and efficient.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Dan M.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">3/6/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I couldn\'t be more pleased with their service. The gentlemen that were here were professional and very helpful. I would highly recommend their service to anyone. It\'s so nice to know there are still customer-service companies out there.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By David P.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">3/1/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">It really is dust free ! Start to finish, this company was a dream to deal with. I would have never tackled putting wood floors in the home I\'ve lived in for 13 years without the guarantee that this company offers. They were on time, they were respectful of our home and they finished the job beautifully earlier than expected.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Carole W.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">2/23/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">We are happy to share our very positive experience with Arizona Home Floors. They are very professional, they arrived on time, completed the tile removal as promised and best of all left no dust behind. I can highly recommend them.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Nicki H.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">1/28/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">This service was quick and yes - pretty dust free! They were efficient and I would highly recommend this service to my own real estate clients as well as friends and family.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Jan Kabbani, Coldwell Banker</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>1/23/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Thank you for your stupendous service and help in my remodeling process. &nbsp;Your claim of \"DUSTLESS\" truly is the correct description of your process and the clean-up by the crew was outstanding.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Jo-Ann H.</strong></span></p>\r\n<div><span style=\"font-size: 120%;\"><strong>\r\n<hr />\r\n</strong></span></div>\r\n<div><span style=\"font-size: 120%;\">\r\n1/13/15</span></div>\r\n<p><span style=\"font-size: 120%;\">We found AZ Home Floors by searching for \"dust free\", &ldquo;clean&rdquo; tile removal. After detailed discussions with the company about its process and a few phone calls with past customers, we decided to schedule a job in Tucson. This is a top notch company with an excellent business process and customer service attitude. They are prompt, punctual, and very well organized. The process and equipment are clever. The key is dust and debris containment through a set of powerful vacuums and attachments to the tools. The crew was superb, efficient, courteous and focused on the job. The outcome far exceeded expectations. Well worth the cost and the trip charge to Tucson. I would use them again in a flash.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by JR and Marie, Tucson</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong><strong style=\"line-height: 1.5;\">1/7/15</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I had heard that there was no such thing as dust free tile removal. This company proves that wrong! The quoting process involved full measurement and was very accurate. The office was responsive and helpful. The team showed up 10 minutes early every day they were scheduled. They finished on time. Every person in my home introduced him/her self, was friendly and hard-working. You don\'t want to be there when they\'re working (it\'s loud), but they did an exceptional job. My home is as clean, if not cleaner, than before they started. Hands down, one of the most professional companies we\'ve ever worked with. I honestly don\'t know how their price compares with others, but felt it was worth it to avoid the horror stories we had heard about tile removal. Very highly recommend!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Laura M.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">12/15/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Arizona Home Floors did an amazing job of removing 750 sf of tile WITHOUT ANY DUST!! The team arrived promptly, were professional, and had the work done in less than a day. The foundation was cleaned and polished. The debris was removed and the house was left clean and neat. I was skeptical when AZ Home Floors guaranteed dust free tile removal but when the work was done - they delivered. No dust - it was awesome. This was a very, very happy experience.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Edite E.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>12/3/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Fantastic Company. They did exactly what they said they would do. Remove all the tile keeping a dust free environment. My wife still can\'t believe it. They left the house as clean if not cleaner than when they started.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Richard Y.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>11/16/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I had Arizona Home Floors grind the concrete in two bedrooms. I have to say I wasn\'t sure what to expect, but was pleasantly surprised. Rene was so helpful and gracious on the phone setting the appointment. The workers showed up on time and were very pleasant and did an excellent job. I would definitely recommend this company to friends and family.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Beverly S.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>11/10/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">This is the ONLY way to go for taking tile up. Jack and his crew are extremely courteous, punctual, efficient. When he says Dust Free, it is truly dust free. I had no mess to clean up. These guys are very hard workers and aim to please. Absolutely no problems here. This was worth every penny to have him do this job. The Dust Ram is the ONLY healthy alternative to take tile up!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Pam V.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">11/7/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I just had 900 SF of tile removed by Arizona Home Floors and it had to be seen to be believed. Not a speck of dust anywhere. Their system for removing tile is so innovative and clever. The crew arrived exactly on time and got straight to work. The clean-up was spotless and I couldn\'t have been happier. Thank you Arizona Home Floors!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Lesley F.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>11/4/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Excellent work, worth every penny spent. If you need tiles removed, this is the only way and company you want to do it. No dust, no fuss, prepped perfectly for your new tile. Very nice and courteous as well.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Mike M.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>10/31/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Thank you for a job well done.&nbsp; Your entire staff was very professional and efficient and I would highly recommend your services.&nbsp; As far as dust-free goes, I would have to say that your claims are right on the mark.&nbsp; Thanks again!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by John P.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>10/28/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I could not have been happier with Arizona Home Floors and the job they did removing tile and vinyl from my home. Jack and his crew were very professional and meticulous. The finished job was much better than I had even envisioned. As advertised, there was virtually no dust even though nothing in my home was covered. What little there was they cleaned up, even washing the bathroom floor adjacent to the hall way. I would have no hesitation recommending Arizona Home Floors to anyone needing tile or other flooring removed. A good value for a great job.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Carol H.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">10/20/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I had 450 feet of porcelain tile I wanted to have removed. This included a hallway an entry hall and the family room. In addition I had 5 tiles in an existing dining room floor that I wanted removed without damaging the adjoining tiles. I was not initially considering doing it due to the dust typically generated by this process. I contacted them several weeks ago and was given an estimate over the phone based on the information I supplied. They arrived early Saturday morning. The entire process took about 4 hours. It included removal of the tile and the removal of the thin set from the floor. The concrete floors now look like they never had anything on them. The way they contain the dust, the system they use for power distribution and the equipment they have developed are all part of their process. I have removed small areas of tile and the dust this generates is unbelievable. They were able to remove the tile floors in the center of my home with no dust contaminating anything. They were professional, friendly and through. The final price was very close to the estimate. I am extremely pleased with the service and would recommend them to anyone that is contemplating tile floor removal.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Neil K.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>10/17/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">After watching my neighbor endure a hammer and chisel removal of his Saltillo tile, I decided to go the dust-free route. Arizona Home Floors runs a top-drawer business. Their staff was courteous, meticulous; they completed my home in half the projected time and left the place cleaner than they found it. The things they found behind the refrigerator should be in the Smithsonian. My sincere thanks!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Mary B.</strong><span style=\"line-height: 1.5;\">&nbsp;</span></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>10/6/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">AWESOME EXPERIENCE!! Professional, came out same day for a quote, my house was cleaner when they left (prior to starting the job), and would highly recommend this company! My husband and I got several tile quote jobs (to remove tile), this one was high compared to others. But at the end of the day, we would rather have the job done right and pay a little extra money than to not be satisfied!!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Toni W.</strong><span style=\"line-height: 1.5;\">&nbsp;</span></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>9/26/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">The crew showed up on time much to the delight of my wife. They had the job done within 3 hours. Very pleased with the results. What took them 3 hours to do would have taken me and my wife at least 3 days! Well worth the money.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Matt L.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">9/23/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Arizona Home Floors arrived 10 minutes early for a 7:00 am appointment(which is not the norm). The technicians did a GREAT job! Best off all NO DUST!!!!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Joe V.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">9/17/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Arizona Home Floors delivered as promised. The tile and mortar were removed without dust as advertised. The floor was left clean and debris free. Excellent job.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Mike P.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">9/12/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">We used Arizona Home Floors 2 years ago and were so impressed that when we decided to move we knew the only people that we would trust to remove the tile in our new home would be Jack and his team. They did an amazing job!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Patty M</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>9/3/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">My husband and I used Arizona Home Floors to remove the ceramic tile in our house before the installation of new hardwood floors. We had put this project off for several years after hearing the horror stories of what a dusty mess tile removal can be. But, Arizona Home Floors did an incredible job! They are a professional, well-run company -- from Jack King, the owner, to Rene in the office, to Marty and his crew who performed the actual work and stayed on the job (for 12 hours!) until it was done, while taking care to make sure we were completely satisfied. We couldn\'t be more pleased with the results and our experience.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Debi S.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">8/23/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I am very pleased with the service and work performed. There was virtually no dust during the tile removal, and the job was completed in about 6 hours for approximately 500 sf. The house was left very clean after the job.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Neil M.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong>8/7/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Arizona Home Floors was extremely professional and timely from beginning to end. When I first called and talked to Rene to check pricing, etc., I was impressed by her friendly and helpful approach. When I called again a few weeks later, after making a new flooring decision, Rene confirmed my first impression. We set an appointment for Jack to come out and measure and give me an estimate. They were very professional and kept in excellent communication throughout the process. Jack was thorough, organized, and efficient. Rene, again, was on top of things with telephone reminders and offers of any assistance. The workmen were communicative, extremely friendly and professional! And the service was truly dust-free!! This company was outstanding in every way. I would recommend to everyone with no hesitation.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>By Lady on the plane</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">7/26/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Arizona Home Floors brought a full crew and worked all day at my home pulling the tile in multiple rooms leaving very clean smooth concrete floors. Removing all that tile would have been a back breaking job that would have created an unbelievable mess that would have taken days to complete and clean. Thank you AHF for doing a great job! I was also very impressed with how they took special care to generate as little dust as possible and how effective their DustRam &ldquo;dust free&rdquo; system worked. I would work with AHF again anytime!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Layne P.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">7/14/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Excellent. Left the home dust free as promised.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Ray P.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>5/21/14&nbsp;</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Customer service is a must for me and is so hard to find these days. I friend recommended Arizona Home Floors after we struggled trying to remove the old flooring in my home. I called Arizona Home Floors and they did a wonderful job. The responded promptly and their work was top notch. They went above and beyond when finished even vacuuming areas they didn\'t even work on. One of the best companies I have ever used. I would grade them A++++.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by John O.</strong><strong style=\"line-height: 1.5;\">&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>&nbsp;</strong><strong style=\"line-height: 1.5;\">5/17/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\"><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">My existing flooring was removed in preparation for new tile. We had an area where the latex thin set from previous tile was attached to the concrete slab and grinding was required. I was very concerned about the dust that would result. I called Arizona Home Floors and within a couple days they had technicians in our home who removed the thinset within an hour or two. I can honestly say there was less dust in the home after they left than there was before. I highly recommend Arizona Home Floors and their DustRam system.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Linda S.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>5/15/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">This was an excellent experience and the job done could not have been better. This company saved my day and I would recommend to all. The company and all workers were also very professional.</span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Beverly K.&nbsp;</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>5/15/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I have done tile removal myself and know how much of a dusty mess it can be. The DustRam system used by Arizona Home Floors is a superior method that is efficient and, most importantly, dust free. I was very impressed that we were able to leave clothes hanging in a closet in which tile was removed from the floor and the clothes were not dusty after. Arizona Home Floors removed around 1800 square feet of tile over two days in our home and the end result was that we had a clean home and the floor was very well prepared for new tile installation. Jack King, the DustRam system, and the team of workers from Arizona Home Floors are an outstanding blend of quality workmanship and professionalism. If maintaining a clean, dust free home is important to you, do yourself a big favor and hire Jack King at Arizona Home Floors for all of your tile removal needs.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Joe P.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>5/5/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Amazing what this equipment can do in 15 minutes. It took me 8 hours to do about the same amount of square feet using a chisel and a hammer, that the dust ram did in that 15 minutes. As well, I struggled to remove old vinyl from the kitchen floor. The two combined jobs took me all day and I removed a very small amount of square footage in that time. I can only guess that it may have taken me several weeks to complete this job and it was completed by az home floors in 4 to 5 hours. I would not have been able to complete this job as my back and hands were incredibly sore at the end of my one day of work. Complaining to my wife caused her to feel sorry for me and luckily for me she googled and found this company owned by **** ****. A very pleasant and likeable person to talk to on the phone was he . And so we proceeded to use his company. His employees ***** and **** were also a real joy and they did an excellent job utilizing the equipment invented by **** **** to make our concrete floors look like they were just poured. If you are reading this review prior to making a decision as to whether or not to attempt to remove your tile or vinyl yourself, I would recommend that you immediately shelf the idea of doing so and pay the money it takes to have it done with this advanced equipment. You won\'t be sorry as I was for killing myself for a whole day, wasting that time and getting almost nowhere. I also might mention that I was only able to remove a small amount of tile in that 8 hours and did not even put a dent in the thinset that was holding it down. That was harder to remove then the tile. I took the time to write this review in hopes that it will save others a lot of misery attempting this type of project themselves. It was well worth the money to have this job done by **** **** and his company. A very awesome invention is your equipment, **** and your phone etiquette and personality sold us on the idea of going forward with you. Thanks again and may you and your company prosper in the future!! For those of you who might be wondering, my wife nor I have never met **** personally and we received no gratuity for what we have written. We legitimately appreciate these incredible tools that he has invented to do this incredibly miserable job of removing tile and old vinyl. *** ********</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Joe T.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>4/18/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">We have been wanting to have our outdated ceramic tile flooring removed for some time, but everyone we talked to that had undertaken this project, told us what a nightmare it was. They said that even though the removal area was sealed off with plastic, the dust was everywhere, including in their A/C ductwork. They were cleaning up for weeks and many had to have their ducts professionally cleaned (more $$). While researching floor removal contractors, we came across AZ Home Floors and **** King\'s DustRam System. It gave us the courage to tackle this project. From the first time **** **** came to our home to give us an estimate, to the completion of the project, my husband I were impressed by his professionalism and thoroughness. He arrived when he said he would; went through those areas where tile was to be removed explaining what needed to be removed (everything on the tile floor and kitchen countertops). The pantry and linen closet shelves did not need to be cleared; nor did anything in the family room or living/dining room!!! He measured the area before giving us his price for the job and went over the contract with us. There was no \"hard sell\"...he and his system sold themselves. He arrived on \"Demolition Day\" at 7 a.m. with a crew of 2 men and 2 women. By 2:30 p.m. they had DUSTLESSLY taken our floors to a very smooth concrete. They didn\'t drape anything and we were in our home throughout the entire process and there was NO dust in the air. Our home was spotless when they finished. They were organized, efficient, and totally respectful of our property. I would recommend that anybody considering tile removal use **** **** and AZ Home Floors. When you find a contractor of this caliber, it\'s like finding gold! We refer to this as our \"Tile Removal Miracle\"!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Susan and John Ullinskey</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>4/14/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">After watching the DustRam System video on YouTube, I was pretty convinced I\'d found the contractor for my tile removal. After speaking with **** and getting an estimate, I knew I had. The crew accomplished more tile removal in a day than I could have in weeks. And they showed me how much dust they collected - dust that would have been in my house using any other method! I was amazed at the innovative processes they use and highly recommend this contractor.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Bruce C</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>4/14/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">To us it was a miracle. We contracted **** **** with Arizona Home Floors and his Dust Ram System to remove 1,100 sq ft of tile. **** and his crew of 5 arrived at 7:00AM. Each one knew exactly what to do and when. THERE WAS NO DUST!!! The hoses attached to the chippers and sanders took all the dust out to our back yard and into his equipment. When they finished removing the tile, they cleaned and vacuumed the whole house. Like **** says \"It was cleaner then when he arrived.\" We highly recommend this system to anyone considering having their tile removed. There just is no other way.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Jean and Mel E.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>3/24/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">I hired **** to remove ~500 sq. ft. of saltillo tile in my house. He was thoroughly professional from start to finish and did great work. When he came to my house to give an estimate, I was impressed that was able to generate, on the spot, a contract that specifically listed exactly what would be done, listing all of the measurements summing to my total square footage. I am an attorney and I usually wince at the terrible contracts that most contractors use - not so with ******. ****** contract was complete, handled contingencies, and I could tell from it that he had done this many times before and is the kind of person who prefers to specify details up front and not have misunderstandings later. **** was able to tell me, when we first met for the estimate, the date on which the work would be done. He uses an e-contract service so I e-signed the contract later that evening and paid my deposit via PayPal. **** called the day before our appointment to confirm, and on the scheduled date he showed up early and with a plethora of equipment. He and his crew were extremely well-organized and completed my tile removal in a single day, leaving - as he promised - not a speck of dust to be found. My concrete looks amazing and is ready for the new porcelain tile that will be installed. Equally as important, my home did NOT get dirty at all! The best part about the tile removal is that I have nothing else to say - he took the tile out exactly as promised and that\'s the way it should be. It was very simple. This is my first home and I\'ve dealt with several contractors in the past few months. **** alone stands out as delivering as promised, on time, in a professional manner.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Michael V.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>3/11/14</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Arizona Home Floors was absolutely fantastic, they were on time, finished as they quoted and at the quoted price, no surprises. The job was beyond what I expected, there was NO DUST, they prepared the floor for the flooring to be put in just as they said they would. I would highly recommend **** **** and Arizona Home Floors for tile removal and floor prep. Thanks **** and crew its nice to see there is still a company out there like yours.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Jack and Louise</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>12/1/13</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">We just moved in to our new (to us) 8 year old home that had about 1,000 sq. ft. of ceramic tile that just didn\'t go with our d&eacute;cor. Knowing that it had to go, and knowing from a previous, self inflicted, tile removal job, I knew I had to find someone else to do it for me. I found AZ Home Floors/ **** King on the net. I watched his ******* video (*****************************) &amp; I was, to say the least...intrigued. So I called **** for a quote. At first glance, he seemed a little pricy. But then after remembering back to my previous experience &amp; the mess it made, I decided to go with him. This was the best money I have EVER spent. To say that **** &amp; his WELL QUALIFIED team of professionals, met &amp; exceeded my expectations is the understatement of the century! Where do I start? In no particular order, Fast, Courteous, Conscientious of our home, Professionalism beyond reproach, Organized, &amp; Clean, Clean, Clean!!! ****\'s Dustram system is a work of genius. This system is so refined, it leaves the concrete smoother than the builder left it &amp; it leaves your house cleaner than they found it just by the nature of how it works. Even the guy who is charged with picking up the tiles &amp; carting them out is required to use a dust capturing device that prevents the dust from billowing up out of the crate that he\'s using to haul the tiles out in! And it doesn\'t stop inside the house. When they were out on the back patio emptying the vacuum cans out, they were even using a vacuum hose to capture the dust that would have heavily billowed out when they were transferring the dust into the carry off bags!! The most important thing to note; they did it all without beating my house to death! Absolutely AWESOME!!! So, if you are in need of tile removal, do yourself the biggest favor you can. Do what I did. Call **** King at AZ Home Floors. You WILL NOT regret it!! Sincerely, ***** ****, Queen Creek, AZ</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Chris H.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>11/4/13</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">AZ home floors, came into our home and removed 560 sq ft of tile. it took 3 men, 7 hours to do the job and when they left our home was as clean as when they arrived. we did clean the house the day before, so they did a great job. i would recommend this company to anyone that wants tile removed without the tremendous amount of dust involved.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Jeffrey l.</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>11/4/13</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">**** **** and his crew were extremely professional. Not only did they work hard and fast, they were friendly and fun to be around. Their Ram Dust System truly works as advertised both during the tear off and grinding process. I expected some dust but found none. I would not hesitate to recommend Arizona Home Floors.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Dan P.</strong><strong>&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>10/14/13</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">We had serious health and damage concerns concerning the removal of Saltillo tile from our entrance and dining areas. Arizona Home Floors, Jack King, gave us a detailed cost estimate and assured us that there would be no tile dust anywhere in the house. His crew came on time and did a very professional job as Jack had promised. We were extremely pleased not only with the work but more importantly with the lack of tile dust pollution during the process; and after. Nothing in our house got dirty! It costs more, but it\'s well worth it.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>by Paul J.&nbsp;</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><strong>5/31/13</strong></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong><br /></strong></span></p>\r\n<p><span style=\"font-size: 120%;\">Tile removal, grinding and leveling floors can lead to stress, misery and a dusty mess. &nbsp;Luckily there are choices. &nbsp;CHOOSE WISELY and feel secure. &nbsp;Jack, Marty and crew will relieve the stress and misery of this dusty messy process.&nbsp;Presto! Tile was up and gone before my eyes. I watched, with ear protection, from eight feet away as his powerful dust sucking machines broke up tile. I could see no dust in the air. &nbsp;674 feet of tile and thin set was gone in less than a day. &nbsp;You have to see it to believe it. Before they left for the day the crew cleaned all surface areas, even my shutters. I have yet to find even a chip of tile. &nbsp;Next came the grinding and leveling procedure. &nbsp;Again no dust! Jack&rsquo;s huge investment in exceptional equipment and his expertise in his profession created a perfectly finished product. &nbsp;My floor installer is so excited to lay wood laminate on a truly flat floor. Jack is extremely passionate and proud of his business. &nbsp;I know a good foundation in just about anything is important and my foundation is remarkable. I would like to give Jack, Marty and crew a heartfelt thank you for making this part of our remodeling a truly pleasurable experience.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>Beverly Colletta</strong></span></p>\r\n<p><span style=\"font-size: 120%;\">&nbsp;</span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">{{ page.fields.video_2 }}</span></p>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%;\" dir=\"ltr\"><strong>Andrew Henrich</strong><br /><span dir=\"ltr\"><a href=\"mailto:andyhenrich@msn.com\">andyhenrich@msn.com</a></span>&nbsp;</span></p>\r\n<hr />\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%;\">From the first time we spoke on the phone, until our complicated project was finished, we felt completely at ease that you had everything under control.&nbsp; Your attention to detail, balancing function with aesthetics, and your willingness to take charge of every aspect of the process, made what would have been an overwhelming task a breeze.&nbsp; Although the fact that our job was in Flagstaff must have been a challenge, you and your crew took it in stride.&nbsp; I have never met a more organized, meticulous human being, and the end result reflects your work ethic.&nbsp; You and your crew put a lot of thought and creativity into the visual impact of each phase of our job: Wood, Tile, and Carpeting.&nbsp; The guys were not merely talented; they were personable, conscientious and fun!&nbsp; Every time I approach the stairs in the great room, and marvel at the layout of the wood, I\'m reminded of how hard Edwin worked in designing that area for the perfect impact.&nbsp; Everything you did in our house is actually better than I\'d dared to hope.&nbsp; I hope I get the chance to recommend you to many prospective customers.&nbsp; I consider finding you to be a stroke of luck and an invaluable investment in my peace of mind.&nbsp; Thank you for a job well done!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>Tom &amp; Jean G</strong></span></p>\r\n<hr />\r\n<p><span style=\"line-height: 1.5; font-size: 120%;\">On time, courteous, professional &amp; fun to have here for 2 weeks.&nbsp; In the 10 years we\'ve lived in Phoenix this is the first time we\'ve had a company show up on time everyday-complete the work in the promised time frame, and give such great customer service.&nbsp; Thanks, Jack &amp; Crew!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>Scott H</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">Jack &amp; his Crew were always polite, worked hard to please us, finished earlier than expected, and came back to correct any problems related to other Contractors.&nbsp; We both would highly recommend Jack\'s company to anyone.&nbsp; This is our home #11 to build /remodel, and this was one of our better flooring experiences.&nbsp; Thanks to Jack and your wonderful crew!&nbsp; Nick &amp; Patti K</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>Patti K</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">Jack was great to work with. He was very thorough and professional.&nbsp; He did a quality install and took his time to make the finished product look perfect.&nbsp; The job site was always maintained and the final cleanup was great.&nbsp; He was friendly, experienced, and worth the money!</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>Matt L</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">The guys were great and the job they did was excellent.&nbsp; They were very punctual, they always left the job site as clean as possible, and when they said something would happen it did.&nbsp; If we had an unforeseen problem it was thoroughly explained, options presented, and the problem was solved to everyone\'s satisfaction.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>Chad S</strong></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">Now that the tile work in both my business and home are done, I would like to take this opportunity to let you know just how thrilled I am with the great work and quality customer service that I received.&nbsp; From the estimate right through the creative consultation, planning process and the exquisite craftsmanship, the whole experience went smoothly and quickly.&nbsp; Your customer service was far beyond any expectations that I had, and my floors will be a source of pride for years to come.&nbsp; I would without hesitation, refer anyone I know to Jack King.</span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><strong>Jan E&nbsp;</strong></span></p>\r\n<hr />\r\n<p>&nbsp;</p>\r\n<p style=\"line-height: 1.5;\"><span style=\"font-size: 120%;\"><strong style=\"line-height: 1.5;\">Call 480-659-3199 for&nbsp;DustRam&reg; System Dust Free Tile Removal in&nbsp;Phoenix, Scottsdale, Chandler, Gilbert, Peoria, Sun City, Arizona</strong></span></p>\r\n<p style=\"line-height: 1.5;\">&nbsp;</p>\r\n<p style=\"line-height: 1.5;\"><span style=\"line-height: 1.5;\"><a title=\"Click here for a map of Dust Free Tile Removal Contractors in Phoenix, Arizona\" href=\"http://www.dustfreetileremoval.com\" target=\"_blank\">Dust Free Tile Removal</a>, Tile Removal, Flooring Removal | Jack King Reviews / AZ Home Floors Reviews - Arizona, Ahwatukee, Apache Junction, Casa Grande, Chandler, Central Phoenix, Desert Mountain, East Valley, Gilbert, Gold Canyon, Maricopa, Mesa, Paradise Valley, Peoria, Phoenix, Phx, Queen Creek, Scottsdale,&nbsp;Tempe, Prescott, Prescott Valley, Sedona, Tucson, Cottonwood, Flagstaff and Tucson</span></p>',1,10,0,1,0,6,1433109674,6,1433116796,0,0,0,1433114717,6,'',0,0,0,0,0,0,1),(487,'document','text/html','Floor Removal Projects','','Floor Removal Project Videos','floor-removal-projects','floor-removal-projects',1,0,0,483,0,'','<p>&nbsp;</p>\r\n<p style=\"color: #336600;\">&nbsp;</p>\r\n<p style=\"color: #336600;\"><span style=\"font-size: 140%; color: #009900;\"><span style=\"color: #ff0000;\">Do not show to these videos to the General Public or anyone without a signed NDA/Non-Compete</span></span></p>\r\n<p style=\"color: #336600;\">&nbsp;</p>\r\n<p style=\"color: #336600;\"><span style=\"font-size: 120%; color: #000000;\">For certain memorable projects, I decided to combine all the clips of each project into 1 complete video, with a link to each project. &nbsp;These videos are not edited for time or content, and will show various stages of the removal process and techniques used by Arizona Home Floors. &nbsp;These videos will serve to help instruct and inform you DustRam Contractors as to what is required to accomplish these projects quickly and professionally.</span></p>\r\n<p style=\"color: #336600;\"><span style=\"font-size: 120%; color: #000000;\"><br /></span></p>\r\n<p style=\"color: #336600;\"><span style=\"font-size: 120%; color: #000000;\"><br /></span></p>\r\n<p style=\"text-align: center;\"><span style=\"font-size: 180%;\"><strong>SATILLO REMOVAL</strong></span></p>\r\n<hr />\r\n<p><span style=\"line-height: 1.5; font-size: 120%;\">Bull Residence: &nbsp;Arizona Home Floors removed 2400 sq. ft. of the most technically difficult Saltillo ever, over the course of 3 days. &nbsp;<a href=\"https://vimeo.com/132618505\" target=\"_blank\">https://vimeo.com/132618505</a></span></p>\r\n<p><span style=\"line-height: 1.5; font-size: 120%;\">\r\n</span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%; line-height: 1.5;\">Breaking Saltillo baseboards from walls using a hammer and chisel. &nbsp;</span><a style=\"font-size: 120%; line-height: 1.5;\" href=\"https://vimeo.com/132281749\" target=\"_blank\">https://vimeo.com/132281749</a></p>\r\n<p><span style=\"line-height: 1.5; font-size: 120%;\">\r\n</span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">Another great video for showing method of using free hand to block chips and contain dust. &nbsp;Must use process for dusty floors! &nbsp;<a href=\"https://vimeo.com/132280581\" target=\"_blank\">https://vimeo.com/132280581</a></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%; line-height: 1.5;\">6 crewmember group effort at RakeRaming and ToteRaming on 2400 sq. ft. dusty Saltillo project. &nbsp;</span><a style=\"font-size: 120%; line-height: 1.5;\" href=\"https://vimeo.com/132281747\" target=\"_blank\">https://vimeo.com/132281747</a></p>\r\n<hr />\r\n<p class=\"justifyleft\"><br /><br /></p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p style=\"text-align: center;\"><strong><span style=\"font-size: 180%;\">WOOD REMOVAL</span></strong></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%; line-height: 1.5;\">Samay Residence: &nbsp;Arizona Home Floors removed 557 sq. ft. of Wood Plank over extremely soft concrete. &nbsp;<a href=\"https://vimeo.com/132621654\" target=\"_blank\">https://vimeo.com/132621654</a></span></p>\r\n<hr />',1,28,0,1,0,6,1436052515,6,1436148141,0,0,0,1436052600,6,'',0,0,0,1,0,0,1),(483,'document','text/html','Proprietary Information For DustRam Contractors','','Use the links below to access important information concerning the DustRam System.','proprietary-information-for-dustram-contractors','',1,0,0,273,1,'','<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%;\"><a href=\"assets/files/Sites-Bosch-Site.pdf\">operation manual</a></span></p>\r\n<p><span style=\"font-size: 120%;\"><a href=\"[~484~]\">EQUIPMENT ASSEMBLY</a>&nbsp;<span style=\"color: #ff0000;\">Do not show to General Public or anyone without a signed NDA/Non-Compete</span></span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%; color: #ff0000;\"><a href=\"[~257~]\">HOW-TO</a>&nbsp;Do not show to General Public or anyone without a signed NDA/Non-Compete</span></p>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 120%; color: #ff0000;\"><span><a href=\"[~487~]\">FLOOR REMOVAL PROJECTS</a></span><span>&nbsp;</span><span>Do not show to General Public or anyone without a signed NDA/Non-Compete</span><br /></span></p>\r\n<p><span style=\"font-size: 120%;\"><br /></span></p>\r\n<p><span style=\"font-size: 120%; color: #009900;\"><a href=\"[~485~]\">MARKETING</a>&nbsp;Okay to show to General Public</span></p>',1,28,1,1,0,6,1431307433,6,1436983765,0,0,0,1431307433,6,'',0,0,0,1,0,0,1),(484,'document','text/html','Equipment Assembly Videos','','Videos Demonstrating Proper Assembly Techniques For The DustRam System Equipment','equipment-assembly-videos','',1,0,0,483,0,'','<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size: 140%; color: #ff0000;\">Do not show to these videos to the General Public or anyone without a signed NDA/Non-Compete</span></p>\r\n<p>&nbsp;</p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">Assemblying the DustRam to the 11264EVS chipping hammer. &nbsp;</span><a style=\"font-size: 120%; line-height: 1.5;\" href=\"https://vimeo.com/132288286\" target=\"_blank\">https://vimeo.com/132288286</a></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%; line-height: 1.5;\">Mounting the DustRam to a chipping hammer in 1 minute and 15 seconds. &nbsp;</span><a style=\"font-size: 120%; line-height: 1.5;\" href=\"https://vimeo.com/132618820\" target=\"_blank\">https://vimeo.com/132618820</a></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">Assembling a CDCLarue Vacuum Tank to a CDCLarue Dolly. &nbsp;<a href=\"https://vimeo.com/132498566\" target=\"_blank\">https://vimeo.com/132498566</a></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%; line-height: 1.5;\">Assembling a DustRam Vacuum Tank to a DustRam Dolly. &nbsp;Coming Soon!</span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><span style=\"line-height: 1.5;\">Assembling a Shroud &amp; urethane skirt to a grinder. &nbsp;</span><a style=\"font-size: 120%; line-height: 1.5;\" href=\"http://youtu.be/mvIcKNe9p9o\" target=\"_blank\"></a><a href=\"https://vimeo.com/132168236\" target=\"_blank\">https://vimeo.com/132168236</a></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\"><span style=\"line-height: 1.5;\">Assembling a urethane skirt on a small EdgeRam. &nbsp;The same principle applies to both the Large &amp; Small EdgeRam. &nbsp;<a href=\"https://vimeo.com/132499065\" target=\"_blank\">https://vimeo.com/132499065</a></span><span style=\"font-size: 100%;\">&nbsp;</span></span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">Assembling the spanner nut to the spindle nut when attaching them both to a grinding wheel. &nbsp;<a href=\"https://vimeo.com/132499588\" target=\"_blank\">https://vimeo.com/132499588</a></span></p>\r\n<p><span style=\"font-size: 120%;\">\r\n<hr />\r\n</span></p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p style=\"text-align: center;\"><span style=\"font-size: 180%;\"><strong>MISCELLANEOUS</strong></span></p>\r\n<p><span style=\"font-size: 120%;\">\r\n</span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%;\">Inside view of Arizona Home Floors trailer: &nbsp;<a href=\"https://vimeo.com/133482855\" target=\"_blank\">https://vimeo.com/133482855</a></span></p>\r\n<p>\r\n<hr />\r\n</p>\r\n<p>&nbsp;</p>',1,28,0,1,0,6,1431308063,6,1436901574,0,0,0,1431310790,6,'',0,0,0,1,0,0,1),(485,'document','text/html','Marketing Videos','','Marketing Videos To Be Shown To Your Potential Customers','marketing-videos','',1,0,0,483,0,'','<p>&nbsp;</p>\r\n<p style=\"color: #336600;\">&nbsp;</p>\r\n<p style=\"color: #336600;\"><span style=\"font-size: 140%; color: #009900;\">Okay to show to the General Public</span></p>\r\n<p>&nbsp;</p>\r\n<p>\r\n<hr />\r\n</p>\r\n<p><span style=\"font-size: 120%; line-height: 1.5;\">What can happen to soft concrete during tile removal. &nbsp;</span><a style=\"font-size: 120%; line-height: 1.5;\" href=\"https://vimeo.com/132283077\" target=\"_blank\">https://vimeo.com/132283077</a></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%; line-height: 1.5;\">Removing crack membrane. &nbsp;&nbsp;</span><a style=\"font-size: 120%; line-height: 1.5;\" href=\"https://vimeo.com/132213912\" target=\"_blank\">https://vimeo.com/132213912</a></p>\r\n<p class=\"ecxyt ecxwatch-title-container\"><span style=\"font-size: 120%;\">\r\n</span></p>\r\n<hr />\r\n<p><span style=\"font-size: 120%; line-height: 1.5;\">Micro high and low spots in concrete. &nbsp;</span><a style=\"font-size: 120%; line-height: 1.5;\" href=\"https://vimeo.com/132287792\" target=\"_blank\">https://vimeo.com/132287792</a></p>',1,28,0,1,0,6,1431308144,6,1436063257,0,0,0,1431310797,6,'',0,0,0,1,0,0,1);

--
-- Table structure for table `modx_site_content_metatags`
--

CREATE TABLE `modx_site_content_metatags` (
  `content_id` int(11) NOT NULL DEFAULT '0',
  `metatag_id` int(11) NOT NULL DEFAULT '0',
  KEY `content_id` (`content_id`),
  KEY `metatag_id` (`metatag_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Reference table between meta tags and content';

--
-- Dumping data for table `modx_site_content_metatags`
--


--
-- Table structure for table `modx_site_htmlsnippets`
--

CREATE TABLE `modx_site_htmlsnippets` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `description` varchar(255) NOT NULL DEFAULT 'Chunk',
  `editor_type` int(11) NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor',
  `category` int(11) NOT NULL DEFAULT '0' COMMENT 'category id',
  `cache_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Cache option',
  `snippet` mediumtext,
  `locked` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1 COMMENT='Contains the site chunks.';

--
-- Dumping data for table `modx_site_htmlsnippets`
--

INSERT INTO `modx_site_htmlsnippets` VALUES (1,'FillerText','',0,0,0,'<p>Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.</p>\r\n\r\n<p>A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.</p>\r\n\r\n<p>Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar.</p>\r\n\r\n<p>The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\'t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then </p>',0),(6,'Nav-Active-Link','',0,9,0,'    <li[+wf.id+][+wf.classes+]>\r\n      <span class=\"here_non_link\" title=\"[+wf.title+]\">[+wf.linktext+]</span>\r\n      [+wf.wrapper+]\r\n    </li>',0),(7,'Nav-Default-Wrapper','',0,9,0,'[+wf.wrapper+]',0),(8,'Nav-Inner-Wrapper','',0,9,0,'<ul[+wf.classes+]>[+wf.wrapper+]</ul>',0),(9,'Nav-Row-Tpl','',0,9,0,'<li[+wf.id+] class=\"[+wf.classnames+] doc-[+wf.docid+]\"><a href=\"[+wf.link+]\" title=\"[+wf.title+]\" [+wf.attributes+]><span>[+wf.linktext+]</span></a>[+wf.wrapper+]</li>',0);

--
-- Table structure for table `modx_site_keywords`
--

CREATE TABLE `modx_site_keywords` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `keyword` varchar(40) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `keyword` (`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Site keyword list';

--
-- Dumping data for table `modx_site_keywords`
--


--
-- Table structure for table `modx_site_metatags`
--

CREATE TABLE `modx_site_metatags` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `tag` varchar(50) NOT NULL DEFAULT '' COMMENT 'tag name',
  `tagvalue` varchar(255) NOT NULL DEFAULT '',
  `http_equiv` tinyint(4) NOT NULL DEFAULT '0' COMMENT '1 - use http_equiv tag style, 0 - use name',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Site meta tags';

--
-- Dumping data for table `modx_site_metatags`
--


--
-- Table structure for table `modx_site_module_access`
--

CREATE TABLE `modx_site_module_access` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `module` int(11) NOT NULL DEFAULT '0',
  `usergroup` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='Module users group access permission';

--
-- Dumping data for table `modx_site_module_access`
--

INSERT INTO `modx_site_module_access` VALUES (1,2,1);

--
-- Table structure for table `modx_site_module_depobj`
--

CREATE TABLE `modx_site_module_depobj` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `module` int(11) NOT NULL DEFAULT '0',
  `resource` int(11) NOT NULL DEFAULT '0',
  `type` int(2) NOT NULL DEFAULT '0' COMMENT '10-chunks, 20-docs, 30-plugins, 40-snips, 50-tpls, 60-tvs',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Module Dependencies';

--
-- Dumping data for table `modx_site_module_depobj`
--


--
-- Table structure for table `modx_site_modules`
--

CREATE TABLE `modx_site_modules` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `description` varchar(255) NOT NULL DEFAULT '0',
  `editor_type` int(11) NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor',
  `disabled` tinyint(4) NOT NULL DEFAULT '0',
  `category` int(11) NOT NULL DEFAULT '0' COMMENT 'category id',
  `wrap` tinyint(4) NOT NULL DEFAULT '0',
  `locked` tinyint(4) NOT NULL DEFAULT '0',
  `icon` varchar(255) NOT NULL DEFAULT '' COMMENT 'url to module icon',
  `enable_resource` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'enables the resource file feature',
  `resourcefile` varchar(255) NOT NULL DEFAULT '' COMMENT 'a physical link to a resource file',
  `createdon` int(11) NOT NULL DEFAULT '0',
  `editedon` int(11) NOT NULL DEFAULT '0',
  `guid` varchar(32) NOT NULL DEFAULT '' COMMENT 'globally unique identifier',
  `enable_sharedparams` tinyint(4) NOT NULL DEFAULT '0',
  `properties` text,
  `modulecode` mediumtext COMMENT 'module boot up code',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='Site Modules';

--
-- Dumping data for table `modx_site_modules`
--

INSERT INTO `modx_site_modules` VALUES (1,'Doc Manager','<strong>1.1</strong> Quickly perform bulk updates to the Documents in your site including templates, publishing details, and permissions',0,0,3,0,0,'',0,'',0,0,'',1,'','include_once(MODX_BASE_PATH.\'assets/modules/docmanager/classes/docmanager.class.php\');\ninclude_once(MODX_BASE_PATH.\'assets/modules/docmanager/classes/dm_frontend.class.php\');\ninclude_once(MODX_BASE_PATH.\'assets/modules/docmanager/classes/dm_backend.class.php\');\n\n$dm = new DocManager($modx);\n$dmf = new DocManagerFrontend($dm, $modx);\n$dmb = new DocManagerBackend($dm, $modx);\n\n$dm->ph = $dm->getLang();\n$dm->ph[\'theme\'] = $dm->getTheme();\n$dm->ph[\'ajax.endpoint\'] = MODX_SITE_URL.\'assets/modules/docmanager/tv.ajax.php\';\n$dm->ph[\'datepicker.offset\'] = $modx->config[\'datepicker_offset\'];\n$dm->ph[\'datetime.format\'] = $modx->config[\'datetime_format\'];\n\nif (isset($_POST[\'tabAction\'])) {\n    $dmb->handlePostback();\n} else {\n    $dmf->getViews();\n    echo $dm->parseTemplate(\'main.tpl\', $dm->ph);\n}'),(2,'Skeleton Key','',0,0,0,1,0,'',0,'',0,0,'13fc990609a0f4fc176b1da81c84ba92',0,'','require_once MODX_BASE_PATH . \'_/modules/SkeletonKey/index.php\';');

--
-- Table structure for table `modx_site_plugin_events`
--

CREATE TABLE `modx_site_plugin_events` (
  `pluginid` int(10) NOT NULL DEFAULT '0',
  `evtid` int(10) NOT NULL DEFAULT '0',
  `priority` int(10) NOT NULL DEFAULT '0' COMMENT 'determines plugin run order'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Links to system events';

--
-- Dumping data for table `modx_site_plugin_events`
--

INSERT INTO `modx_site_plugin_events` VALUES (1,80,0),(1,81,0),(1,93,0),(2,29,0),(3,28,0),(4,53,0),(4,35,0),(4,29,0),(4,28,0),(5,31,0),(5,28,0),(5,13,0),(5,3,0),(6,3,0),(7,85,0),(7,87,0),(7,88,0),(8,100,0),(9,1000,1),(9,89,1),(9,90,1),(10,28,1),(11,49,1),(12,92,1),(13,3,1),(14,90,2),(14,3,2),(14,1000,2);

--
-- Table structure for table `modx_site_plugins`
--

CREATE TABLE `modx_site_plugins` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `description` varchar(255) NOT NULL DEFAULT 'Plugin',
  `editor_type` int(11) NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor',
  `category` int(11) NOT NULL DEFAULT '0' COMMENT 'category id',
  `cache_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Cache option',
  `plugincode` mediumtext,
  `locked` tinyint(4) NOT NULL DEFAULT '0',
  `properties` text,
  `disabled` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Disables the plugin',
  `moduleguid` varchar(32) NOT NULL DEFAULT '' COMMENT 'GUID of module from which to import shared parameters',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1 COMMENT='Contains the site plugins.';

--
-- Dumping data for table `modx_site_plugins`
--

INSERT INTO `modx_site_plugins` VALUES (1,'Forgot Manager Login','<strong>1.1.2</strong> Resets your manager login when you forget your password via email confirmation',0,1,0,'if(!class_exists(\'ForgotManagerPassword\')) {\n    class ForgotManagerPassword{\n        function ForgotManagerPassword(){\n            $this->errors = array();\n            $this->checkLang();\n        }\n\n        function getLink() {\n            global $_lang;\n  \n            $link = <<<EOD\n<a id=\"ForgotManagerPassword-show_form\" href=\"index.php?action=show_form\">{$_lang[\'forgot_your_password\']}</a>\nEOD;\n\n            return $link;\n        }\n\n        function getForm() {\n            global $_lang;\n\n            $form = <<<EOD\n<label id=\"FMP-email_label\" for=\"FMP_email\">{$_lang[\'account_email\']}:</label>\n<input id=\"FMP-email\" type=\"text\" />\n<button id=\"FMP-email_button\" type=\"button\" onclick=\"window.location = \'index.php?action=send_email&email=\'+document.getElementById(\'FMP-email\').value;\">{$_lang[\'send\']}</button>\nEOD;\n\n            return $form;\n        }\n\n        /* Get user info including a hash unique to this user, password, and day */\n        function getUser($user_id=false, $username=\'\', $email=\'\', $hash=\'\') {\n            global $modx, $_lang;\n\n            $user_id = $user_id == false ? false : $modx->db->escape($user_id);\n            $username = $modx->db->escape($username);\n            $email = $modx->db->escape($email);\n            $emaail = $modx->db->escape($hash);\n\n			$pre = $modx->db->config[\'table_prefix\'];\n			$site_id = $modx->config[\'site_id\'];\n			$today = date(\'Yz\'); // Year and day of the year\n			$wheres = array();\n			$where = \'\';\n			$user = null;\n  \n            if($user_id !== false) { $wheres[] = \"usr.id = \'{$user_id}\'\"; }\n            if(!empty($username)) { $wheres[] = \"usr.username = \'{$username}\'\"; }\n            if(!empty($email)) { $wheres[] = \"attr.email = \'{$email}\'\"; }\n            if(!empty($hash)) { $wheres[] = \"MD5(CONCAT(usr.username,usr.password,\'{$site_id}\',\'{$today}\')) = \'{$hash}\'\"; } \n\n            if($wheres) {\n                $where = \' WHERE \'.implode(\' AND \',$wheres);\n                $sql = \"SELECT usr.id, usr.username, attr.email, MD5(CONCAT(usr.username,usr.password,\'{$site_id}\',\'{$today}\')) AS hash\n                    FROM `{$pre}manager_users` usr\n                    INNER JOIN `{$pre}user_attributes` attr ON usr.id = attr.internalKey\n                    {$where}      \n                    LIMIT 1;\"; \n\n                if($result = $modx->db->query($sql)){\n                    if($modx->db->getRecordCount($result)==1) {\n                        $user = $modx->db->getRow($result);\n                    }\n                }\n            }\n\n            if($user == null) { $this->errors[] = $_lang[\'could_not_find_user\']; }\n\n            return $user;\n        }\n\n\n\n        /* Send an email with a link to login */\n        function sendEmail($to) {\n            global $modx, $_lang;\n\n            $subject = $_lang[\'password_change_request\'];\n            $headers  = \"MIME-Version: 1.0\\r\\n\".\n                \"Content-type: text/html; charset=\\\"{$modx->config[\'modx_charset\']}\\\"\\r\\n\".\n		\"From: MODx <{$modx->config[\'emailsender\']}>\\r\\n\".\n                \"Reply-To: no-reply@{$_SERVER[\'HTTP_HOST\']}\\r\\n\".\n                \"X-Mailer: PHP/\".phpversion();\n\n            $user = $this->getUser(0, \'\', $to);\n  \n            if($user[\'username\']) {\n                $body = <<<EOD\n<p>{$_lang[\'forgot_password_email_intro\']} <a href=\"{$modx->config[\'site_url\']}manager/processors/login.processor.php?username={$user[\'username\']}&hash={$user[\'hash\']}\">{$_lang[\'forgot_password_email_link\']}</a></p>\n<p>{$_lang[\'forgot_password_email_instructions\']}</p>\n<p><small>{$_lang[\'forgot_password_email_fine_print\']}</small></p>\nEOD;\n\n                $mail = mail($to, $subject, $body, $headers);\n                if(!$mail) { $this->errors[] = $_lang[\'error_sending_email\']; }\n   \n                return $mail;  \n            }\n        }\n\n        function unblockUser($user_id) {\n            global $modx, $_lang;\n\n            $pre = $modx->db->config[\'table_prefix\'];\n            $modx->db->update(array(\'blocked\' => 0, \'blockeduntil\' => 0, \'failedlogincount\' => 0), \"`{$pre}user_attributes`\", \"internalKey = \'{$user_id}\'\");\n\n            if(!$modx->db->getAffectedRows()) { $this->errors[] = $_lang[\'user_doesnt_exist\']; return; }\n\n            return true;\n        }\n\n        function checkLang() {\n            global $_lang;\n\n            $eng = array();\n            $eng[\'forgot_your_password\'] = \'Forgot your password?\';\n            $eng[\'account_email\'] = \'Account email\';\n            $eng[\'send\'] = \'Send\';\n            $eng[\'password_change_request\'] = \'Password change request\';\n            $eng[\'forgot_password_email_intro\'] = \'A request has been made to change the password on your account.\';\n            $eng[\'forgot_password_email_link\'] = \'Click here to complete the process.\';\n            $eng[\'forgot_password_email_instructions\'] = \'From there you will be able to change your password from the My Account menu.\';\n            $eng[\'forgot_password_email_fine_print\'] = \'* The URL above will expire once you change your password or after today.\';\n            $eng[\'error_sending_email\'] = \'Error sending email\';\n            $eng[\'could_not_find_user\'] = \'Could not find user\';\n            $eng[\'user_doesnt_exist\'] = \'User does not exist\';\n            $eng[\'email_sent\'] = \'Email sent\';\n\n            foreach($eng as $key=>$value) {\n                if(empty($_lang[$key])) { $_lang[$key] = $value; }\n            }  \n        }\n\n        function getErrorOutput() {\n            $output = \'\';\n\n            if($this->errors) {\n                $output = \'<span class=\"error\">\'.implode(\'</span><span class=\"errors\">\', $this->errors).\'</span>\';\n            }\n  \n            return $output;\n        }\n    }\n}\n\nglobal $_lang;\n\n$output = \'\';\n$event_name = $modx->Event->name;\n$action = (empty($_GET[\'action\']) ? \'\' : $_GET[\'action\']);\n$username = (empty($_GET[\'username\']) ? false : $_GET[\'username\']);\n$to = (empty($_GET[\'email\']) ? \'\' : $_GET[\'email\']);\n$hash = (empty($_GET[\'hash\']) ? false : $_GET[\'hash\']);\n$forgot = new ForgotManagerPassword();\n\nif($event_name == \'OnManagerLoginFormRender\') {\n    switch($action) {\n        case \'show_form\':\n            $output = $forgot->getForm();\n            break;\n        case \'send_email\':\n            if($forgot->sendEmail($to)) { $output = $_lang[\'email_sent\']; }\n            break;\n        default:\n            $output = $forgot->getLink();\n            break;\n    }\n\n    if($forgot->errors) { $output = $forgot->getErrorOutput() . $forgot->getLink(); }\n}\n\nif($event_name == \'OnBeforeManagerLogin\') {\n    $user = $forgot->getUser(false, $username, \'\', $hash);\n    if($user && is_array($user) && !$forgot->errors) {\n        $forgot->unblockUser($user[\'id\']);\n    }\n}\n\nif($event_name == \'OnManagerAuthentication\' && $hash && $username) {\n    $user = $forgot->getUser(false, $username, \'\', $hash);\n    $output = ($user !== null && count($forgot->errors) == 0) ? true : false;\n}\n\n$modx->Event->output($output);',0,'',0,''),(2,'Show Image TVs','<strong>1.0</strong> Preview images in the Manager from image Template Variables',0,0,0,'//    @author     Brett @ The Man Can!\n//                rewritten by Rachael Black, update by pixelchutes and rthrash\n//                now works with MooTools and finds the image tvs itself\n//\n\n/* ---------------------------------------------------------------\nInstructions:\n     Create a new Plugin and tick Documents > OnDocFormRender event.\n     Make sure it is set to execute after any other plugin that\n     could effect the template, like InheritParentTemplate. To edit\n     the plugin execution order, from the manager go to Resources >\n     Manage Resources > Plugins > Edit Plugin Execution Order by Event\n     link. That\'s it. It should now show images of all image TVs.\n\n     To configure image size, copy the following text (no leading spaces):\n       &w=Max width;int;300 &h=Max height;int;100\n     into the plugin configuration and change values to suit\n     This sets style=\"max-width: ; max-height: \" for the image\n     If you don\'t configure w or h, the image will be fullsize but\n     you can add a css rule rule div.tvimage img {...} to the Manager Theme\n------------------------------------------------------------------- */\n\nglobal $content;\n$template = $content[\'template\'];\n$e = &$modx->Event;\n\nif ($e->name == \'OnDocFormRender\' && ($template > 0)) {\n	$site = $modx->config[\'site_url\'];\n\n	if (isset($w) || isset($h)) {\n		$w = isset($w) ? $w : 300;\n		$h = isset($h) ? $h : 100;\n		$style = \"\'max-width:{$w}px; max-height:{$h}px\'\";\n	}\n	else\n		$style = \'\';\n\n	// get list of all image template vars using TV ids from Evo\n	$table = $modx->getFullTableName(\'site_tmplvars\');\n	$result = $modx->db->select(\'id\', $table, \"type=\'image\'\");\n	$tvs = \'\';\n	while ($row = $modx->db->getRow($result))\n		$tvs .= \",\'\" . $row[\'id\'] . \"\'\";\n	$tvs = substr($tvs, 1);		// remove leading \',\'\n\n	$output = <<< EOT\n<!-- ShowImageTVs Plugin :: Start -->\n\n<script type=\"text/javascript\" charset=\"utf-8\">\n  var imageNames = [$tvs];\n  var pageImages = [];\n\n  function full_url(url)\n  {\n	new_url = (url != \'\' && url.search(/http:\\/\\//i) == -1) ? (\'$site\' + url) : url;\n	return ( ( new_url.search(\'@INHERIT\') == -1 ) ? new_url : new_url.replace( new RegExp(/@INHERIT/ig), \'\' ) ); // Update by pixelchutes\n  }\n\n  function checkImages()\n  {\n    for (var i = 0; i < pageImages.length; i++) {\n    	var elem = pageImages[i];\n      var url = elem.value;\n      if (url != elem.oldUrl) {\n     	  elem.thumbnail.setProperty(\'src\', full_url(url));\n     	  elem.thumbnail.setStyle(\'display\', url==\'\' ? \'none\': \'inline\');\n        elem.oldUrl = url;\n      }\n    }\n  }\n\n  window.onDomReady(function() {\n    for (var i = 0; i < imageNames.length; i++) {\n    	var elem = $(\'tv\' + imageNames[i]);\n		if (elem) {\n		  var url = elem.value;\n\n		  // create div and img to show thumbnail\n		  var div = new Element(\'div\').addClass(\'tvimage\');\n		  var img = new Element(\'img\').setProperty(\'src\', full_url(url)).setStyles($style);\n		  if (url == \'\') img.setStyle(\'display\', \'none\');\n		  elem.getParent().adopt(div.adopt(img));\n\n		  elem.thumbnail = img;    // direct access for when need to update\n		  elem.oldUrl = url;   	   // oldUrl so change HTML only when necessary\n		  pageImages.push(elem);   // save so don\'t have to search each time\n		}\n    }\n    setInterval(checkImages, 1000);\n  })\n</script>\n\n<!-- ShowImageTVs Plugin :: End -->\nEOT;\n\n	$e->output($output);\n}\n\n// ?>\n',0,'',1,''),(3,'Inherit Parent Template','<strong>1.1</strong> Newly created Resources use the same template as their Parent or Sibling Containers',0,1,0,'/*\r\n * Inherit Parent Permissions\r\n * Javier Arraiza // www.marker.es // 24/3/2008\r\n * Based in\r\n * Inherit Template from Parent\r\n * Written By Raymond Irving - 12 Oct 2006\r\n *\r\n * A code to inherit the parent permissions from parent document\r\n *\r\n * Configuration:\r\n * check the OnDocFormSave event\r\n *\r\n * Version 1.1\r\n *\r\n */\r\n\r\nglobal $content;\r\n$e = &$modx->Event;\r\n\r\nswitch($e->name) {\r\n    case \'OnDocFormPrerender\':        \r\n        if ($inheritTemplate == \'From First Sibling\') {\r\n            if ($_REQUEST[\'pid\'] > 0 && $id == 0) {\r\n                if ($sibl = $modx->getDocumentChildren($_REQUEST[\'pid\'], 1, 0, \'template\', \'\', \'menuindex\', \'ASC\', 1)) {\r\n                    $content[\'template\'] = $sibl[0][\'template\'];\r\n                } else if ($sibl = $modx->getDocumentChildren($_REQUEST[\'pid\'], 0, 0, \'template\', \'\', \'menuindex\', \'ASC\', 1)) {\r\n                    $content[\'template\'] = $sibl[0][\'template\'];\r\n                } else if ($parent = $modx->getPageInfo($_REQUEST[\'pid\'], 0, \'template\')) {\r\n                    $content[\'template\'] = $parent[\'template\'];\r\n                }\r\n            }\r\n        } else {\r\n             if ($parent = $modx->getPageInfo($_REQUEST[\'pid\'],0,\'template\')) {\r\n                 $content[\'template\'] = $parent[\'template\'];\r\n             }\r\n        }\r\n        break;\r\n    default:\r\n        break;\r\n}',0,'&inheritTemplate=Inherit Template;list;From Parent,From First Sibling;From Parent',1,' '),(4,'ManagerManager','<strong>0.3.8</strong> Customize the MODx Manager to offer bespoke admin functions for end users.',0,1,0,'// You can put your ManagerManager rules EITHER in a chunk OR in an external file - whichever suits your development style the best\r\n\r\n// To use an external file, put your rules in /assets/plugins/managermanager/mm_rules.inc.php \r\n// (you can rename default.mm_rules.inc.php and use it as an example)\r\n// The chunk SHOULD have php opening tags at the beginning and end\r\n\r\n// If you want to put your rules in a chunk (so you can edit them through the Manager),\r\n// create the chunk, and enter its name in the configuration tab.\r\n// The chunk should NOT have php tags at the beginning or end\r\n\r\n// ManagerManager requires jQuery 1.3+\r\n// The URL to the jQuery library. Choose from the configuration tab whether you want to use \r\n// a local copy (which defaults to the jQuery library distributed with ModX 1.0.1)\r\n// a remote copy (which defaults to the Google Code hosted version)\r\n// or specify a URL to a custom location.\r\n// Here we set some default values, because this is a convenient place to change them if we need to,\r\n// but you should configure your preference via the Configuration tab.\r\n$js_default_url_local = $modx->config[\'site_url\']. \'/assets/js/jquery-1.3.2.min.js\';\r\n$js_default_url_remote = \'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\';\r\n\r\n// You don\'t need to change anything else from here onwards\r\n//-------------------------------------------------------\r\n\r\n// Run the main code\r\n$asset_path = $modx->config[\'base_path\'] . \'assets/plugins/managermanager/mm.inc.php\';\r\ninclude($asset_path);',0,'&config_chunk=Configuration Chunk;text;mm_demo_rules &remove_deprecated_tv_types_pref=Remove deprecated TV types;list;yes,no;yes &which_jquery=jQuery source;list;local (assets/js),remote (google code),manual url (specify below);local (assets/js) &js_src_type=jQuery URL override;text;',1,' '),(5,'Quick Manager+','<strong>1.3.4.1</strong> Enables QuickManager front end content editing support',0,1,0,'$show = TRUE;\r\n\r\nif ($disabled  != \'\') {\r\n    $arr = explode(\",\", $disabled );\r\n    if (in_array($modx->documentIdentifier, $arr)) {\r\n        $show = FALSE;\r\n    }\r\n}\r\n\r\nif ($show) {\r\n    include_once($modx->config[\'base_path\'].\'assets/plugins/qm/qm.inc.php\');\r\n    $qm = new Qm($modx, $jqpath, $loadmanagerjq, $loadfrontendjq, $noconflictjq, $loadtb, $tbwidth, $tbheight, $hidefields, $hidetabs, $hidesections, $addbutton, $tpltype, $tplid, $custombutton, $managerbutton, $logout, $autohide);\r\n}',0,'&jqpath=Path to jQuery;text;assets/js/jquery-1.3.2.min.js &loadmanagerjq=Load jQuery in manager;list;true,false;true &loadfrontendjq=Load jQuery in front-end;list;true,false;true &noconflictjq=jQuery noConflict mode in front-end;list;true,false;true &loadtb=Load modal box in front-end;list;true,false;true &tbwidth=Modal box window width;text;80% &tbheight=Modal box window height;text;90% &hidefields=Hide document fields from front-end editors;text;parent &hidetabs=Hide document tabs from front-end editors;text; &hidesections=Hide document sections from front-end editors;text; &addbutton=Show add document here button;list;true,false;true &tpltype=New document template type;list;parent,id,selected;parent &tplid=New document template id;int;3  &custombutton=Custom buttons;textarea; &managerbutton=Show go to manager button;list;true,false;true &logout=Logout to;list;manager,front-end;manager &disabled=Plugin disabled on documents;text; &autohide=Autohide toolbar;list;true,false;true',1,' '),(6,'Search Highlight','<strong>1.5</strong> Used with AjaxSearch to show search terms highlighted on page linked from search results',0,2,0,'/*\n  ------------------------------------------------------------------------\n  Plugin: Search_Highlight v1.5\n  ------------------------------------------------------------------------\n  Changes:\n  18/03/10 - Remove possibility of XSS attempts being passed in the URL\n           - look-behind assertion improved\n  29/03/09 - Removed urldecode calls;\n           - Added check for magic quotes - if set, remove slashes\n           - Highlights terms searched for when target is a HTML entity\n  18/07/08 - advSearch parameter and pcre modifier added\n  10/02/08 - Strip_tags added to avoid sql injection and XSS. Use of $_REQUEST\n  01/03/07 - Added fies/updates from forum from users mikkelwe/identity\n  (better highlight replacement, additional div around term/removal message)\n  ------------------------------------------------------------------------\n  Description: When a user clicks on the link from the AjaxSearch results\n    the target page will have the terms highlighted.\n  ------------------------------------------------------------------------\n  Created By:  Susan Ottwell (sottwell@sottwell.com)\n               Kyle Jaebker (kjaebker@muddydogpaws.com)\n\n  Refactored by Coroico (www.modx.wangba.fr) and TS\n  ------------------------------------------------------------------------\n  Based off the the code by Susan Ottwell (www.sottwell.com)\n    http://modxcms.com/forums/index.php/topic,1237.0.html\n  ------------------------------------------------------------------------\n  CSS:\n    The classes used for the highlighting are the same as the AjaxSearch\n  ------------------------------------------------------------------------\n  Notes:\n    To add a link to remove the highlighting and to show the searchterms\n    put the following on your page where you would like this to appear:\n\n      <!--search_terms-->\n\n    Example output for this:\n\n      Search Terms: the, template\n      Remove Highlighting\n\n    Set the following variables to change the text:\n\n      $termText - the text before the search terms\n      $removeText - the text for the remove link\n  ------------------------------------------------------------------------\n*/\nglobal $database_connection_charset;\n// Conversion code name between html page character encoding and Mysql character encoding\n// Some others conversions should be added if needed. Otherwise Page charset = Database charset\n$pageCharset = array(\n  \'utf8\' => \'UTF-8\',\n  \'latin1\' => \'ISO-8859-1\',\n  \'latin2\' => \'ISO-8859-2\'\n);\n\nif (isset($_REQUEST[\'searched\']) && isset($_REQUEST[\'highlight\'])) {\n\n  // Set these to customize the text for the highlighting key\n  // --------------------------------------------------------\n     $termText = \'<div class=\"searchTerms\">Search Terms: \';\n     $removeText = \'Remove Highlighting\';\n  // --------------------------------------------------------\n\n  $highlightText = $termText;\n  $advsearch = \'oneword\';\n\n  $dbCharset = $database_connection_charset;\n  $pgCharset = array_key_exists($dbCharset,$pageCharset) ? $pageCharset[$dbCharset] : $dbCharset;\n\n  // magic quotes check\n  if (get_magic_quotes_gpc()){\n    $searched = strip_tags(stripslashes($_REQUEST[\'searched\']));\n    $highlight = strip_tags(stripslashes($_REQUEST[\'highlight\']));\n    if (isset($_REQUEST[\'advsearch\'])) $advsearch = strip_tags(stripslashes($_REQUEST[\'advsearch\']));\n  }\n  else {\n    $searched = strip_tags($_REQUEST[\'searched\']);\n    $highlight = strip_tags($_REQUEST[\'highlight\']);\n    if (isset($_REQUEST[\'advsearch\'])) $advsearch = strip_tags($_REQUEST[\'advsearch\']);\n  }\n\n  if ($advsearch != \'nowords\') {\n\n    $searchArray = array();\n    if ($advsearch == \'exactphrase\') $searchArray[0] = $searched;\n    else $searchArray = explode(\' \', $searched);\n\n    $searchArray = array_unique($searchArray);\n    $nbterms = count($searchArray);\n    $searchTerms = array();\n    for($i=0;$i<$nbterms;$i++){\n      // Consider all possible combinations\n      $word_ents = array();\n      $word_ents[] = $searchArray[$i];\n      $word_ents[] = htmlentities($searchArray[$i], ENT_NOQUOTES, $pgCharset);\n      $word_ents[] = htmlentities($searchArray[$i], ENT_COMPAT, $pgCharset);\n      $word_ents[] = htmlentities($searchArray[$i], ENT_QUOTES, $pgCharset);\n      // Avoid duplication\n      $word_ents = array_unique($word_ents);\n      foreach($word_ents as $word) $searchTerms[]= array(\'term\' => $word, \'class\' => $i+1);\n    }\n\n    $output = $modx->documentOutput; // get the parsed document\n    $body = explode(\"<body\", $output); // break out the head\n\n    $highlightClass = explode(\' \',$highlight); // break out the highlight classes\n    /* remove possibility of XSS attempts being passed in URL */\n    foreach ($highlightClass as $key => $value) {\n       $highlightClass[$key] = preg_match(\'/[^A-Za-z0-9_-]/ms\', $value) == 1 ? \'\' : $value;\n    }\n\n    $pcreModifier = ($pgCharset == \'UTF-8\') ? \'iu\' : \'i\';\n    $lookBehind = \'/(?<!&|&[\\w#]|&[\\w#]\\w|&[\\w#]\\w\\w|&[\\w#]\\w\\w\\w|&[\\w#]\\w\\w\\w\\w|&[\\w#]\\w\\w\\w\\w\\w)\';  // avoid a match with a html entity\n    $lookAhead = \'(?=[^>]*<)/\'; // avoid a match with a html tag\n\n    $nbterms = count($searchTerms);\n    for($i=0;$i<$nbterms;$i++){\n      $word = $searchTerms[$i][\'term\'];\n      $class = $highlightClass[0].\' \'.$highlightClass[$searchTerms[$i][\'class\']];\n\n      $highlightText .= ($i > 0) ? \', \' : \'\';\n      $highlightText .= \'<span class=\"\'.$class.\'\">\'.$word.\'</span>\';\n\n      $pattern = $lookBehind . preg_quote($word, \'/\') . $lookAhead . $pcreModifier;\n      $replacement = \'<span class=\"\' . $class . \'\">${0}</span>\';\n      $body[1] = preg_replace($pattern, $replacement, $body[1]);\n    }\n\n    $output = implode(\"<body\", $body);\n\n    $removeUrl = $modx->makeUrl($modx->documentIdentifier);\n    $highlightText .= \'<br /><a href=\"\'.$removeUrl.\'\" class=\"ajaxSearch_removeHighlight\">\'.$removeText.\'</a></div>\';\n\n    $output = str_replace(\'<!--search_terms-->\',$highlightText,$output);\n    $modx->documentOutput = $output;\n  }\n}',0,'',0,''),(7,'TinyMCE Rich Text Editor','<strong>3.3.5.1</strong> Javascript WYSIWYG Editor',0,1,0,'// Set the name of the plugin folder\n$plugin_dir = \"tinymce\";\n\n// Set path and base setting variables\nif(!isset($mce_path))\n{ \n	$mce_path = MODX_BASE_PATH . \'assets/plugins/\'.$plugin_dir . \'/\'; \n	$mce_url  = MODX_BASE_URL  . \'assets/plugins/\'.$plugin_dir . \'/\'; \n}\n\n$params[\'customparams\']    = $customparams;\n$params[\'blockFormats\']    = $mce_formats;\n$params[\'entity_encoding\'] = $entity_encoding;\n$params[\'entities\']        = $entities;\n$params[\'pathoptions\']     = $mce_path_options;\n$params[\'resizing\']        = $mce_resizing;\n$params[\'disabledButtons\'] = $disabledButtons;\n$params[\'link_list\']       = $link_list;\n$params[\'theme\']           = $webtheme;\n$params[\'custom_plugins\']  = $webPlugins;\n$params[\'custom_buttons1\'] = $webButtons1;\n$params[\'custom_buttons2\'] = $webButtons2;\n$params[\'custom_buttons3\'] = $webButtons3;\n$params[\'custom_buttons4\'] = $webButtons4;\n$params[\'toolbar_align\']   = $webAlign;\n$params[\'width\']           = $width;\n$params[\'height\']          = $height;\n\n$params[\'mce_path\']        = $mce_path;\n$params[\'mce_url\']         = $mce_url;\n\ninclude_once $mce_path . \'lang/tinymce.lang.php\';\ninclude_once $mce_path . \'tinymce.functions.php\';\n\n$mce = new TinyMCE($params);\n\n// Handle event\n$e = &$modx->Event; \nswitch ($e->name)\n{\n	case \"OnRichTextEditorRegister\": // register only for backend\n		$e->output(\"TinyMCE\");\n		break;\n\n	case \"OnRichTextEditorInit\": \n		if($editor!==\"TinyMCE\") return;\n		\n		$params[\'elements\']        = $elements;\n		$params[\'css_selectors\']   = $modx->config[\'tinymce_css_selectors\'];\n		$params[\'use_browser\']     = $modx->config[\'use_browser\'];\n		$params[\'editor_css_path\'] = $modx->config[\'editor_css_path\'];\n		\n		if($modx->isBackend())\n		{\n			$params[\'theme\']           = $modx->config[\'tinymce_editor_theme\'];\n			$params[\'language\']        = getTinyMCELang($modx->config[\'manager_language\']);\n			$params[\'frontend\']        = false;\n			$params[\'custom_plugins\']  = $modx->config[\'tinymce_custom_plugins\'];\n			$params[\'custom_buttons1\'] = $modx->config[\'tinymce_custom_buttons1\'];\n			$params[\'custom_buttons2\'] = $modx->config[\'tinymce_custom_buttons2\'];\n			$params[\'custom_buttons3\'] = $modx->config[\'tinymce_custom_buttons3\'];\n			$params[\'custom_buttons4\'] = $modx->config[\'tinymce_custom_buttons4\'];\n			$params[\'toolbar_align\']   = $modx->config[\'manager_direction\'];\n			$params[\'webuser\']         = null;\n			\n			$html = $mce->get_mce_script($params);\n		}\n		else\n		{\n			$frontend_language = isset($modx->config[\'fe_editor_lang\']) ? $modx->config[\'fe_editor_lang\']:\'\';\n			$webuser = (isset($modx->config[\'rb_webuser\']) ? $modx->config[\'rb_webuser\'] : null);\n			\n			$params[\'webuser\']         = $webuser;\n			$params[\'language\']        = getTinyMCELang($frontend_language);\n			$params[\'frontend\']        = true;\n			\n			$html = $mce->get_mce_script($params);\n		}\n		$e->output($html);\n		break;\n\n	case \"OnInterfaceSettingsRender\":\n		global $usersettings,$settings;\n		$action = $modx->manager->action;\n		switch ($action)\n		{\n			case 11:\n				$mce_settings = \'\';\n				break;\n			case 12:\n				$mce_settings = $usersettings;\n				break;\n			case 17:\n				$mce_settings = $settings;\n				break;\n			default:\n				$mce_settings = $settings;\n				break;\n		}\n		\n		$params[\'use_editor\']       = $modx->config[\'base_url\'].$modx->config[\'use_editor\'];\n        $params[\'editor_css_path\']  = $modx->config[\'editor_css_path\'];\n		$params[\'theme\']            = $mce_settings[\'tinymce_editor_theme\'];\n		$params[\'css_selectors\']    = $mce_settings[\'tinymce_css_selectors\'];\n		$params[\'custom_plugins\']   = $mce_settings[\'tinymce_custom_plugins\'];\n		$params[\'custom_buttons1\']  = $mce_settings[\'tinymce_custom_buttons1\'];\n		$params[\'custom_buttons2\']  = $mce_settings[\'tinymce_custom_buttons2\'];\n		$params[\'custom_buttons3\']  = $mce_settings[\'tinymce_custom_buttons3\'];\n		$params[\'custom_buttons4\']  = $mce_settings[\'tinymce_custom_buttons4\'];\n		\n		$html = $mce->get_mce_settings($params);\n		$e->output($html);\n		break;\n		\n	default :\n		return; // stop here - this is very important. \n		break; \n}\n',0,'&customparams=Custom Parameters;textarea; &mce_formats=Block Formats;text;p,h1,h2,h3,h4,h5,h6,div,blockquote,code,pre &entity_encoding=Entity Encoding;list;named,numeric,raw;named &entities=Entities;text; &mce_path_options=Path Options;list;rootrelative,docrelative,fullpathurl;docrelative &mce_resizing=Advanced Resizing;list;true,false;true &disabledButtons=Disabled Buttons;text; &link_list=Link List;list;enabled,disabled;enabled &webtheme=Web Theme;list;simple,editor,creative,custom;simple &webPlugins=Web Plugins;text;style,advimage,advlink,searchreplace,contextmenu,paste,fullscreen,nonbreaking,xhtmlxtras,visualchars,media &webButtons1=Web Buttons 1;text;undo,redo,selectall,|,pastetext,pasteword,|,search,replace,|,nonbreaking,hr,charmap,|,image,link,unlink,anchor,media,|,cleanup,removeformat,|,fullscreen,code,help &webButtons2=Web Buttons 2;text;bold,italic,underline,strikethrough,sub,sup,|,|,blockquote,bullist,numlist,outdent,indent,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,|,styleprops &webButtons3=Web Buttons 3;text; &webButtons4=Web Buttons 4;text; &webAlign=Web Toolbar Alignment;list;ltr,rtl;ltr &width=Width;text;100% &height=Height;text;400',0,''),(8,'TransAlias','<strong>1.0.1</strong> Human readible URL translation supporting multiple languages and overrides',0,1,0,'/*\n * Initialize parameters\n */\nif (!isset ($alias)) { return ; }\nif (!isset ($plugin_dir) ) { $plugin_dir = \'transalias\'; }\nif (!isset ($plugin_path) ) { $plugin_path = $modx->config[\'base_path\'].\'assets/plugins/\'.$plugin_dir; }\nif (!isset ($table_name)) { $table_name = \'common\'; }\nif (!isset ($char_restrict)) { $char_restrict = \'lowercase alphanumeric\'; }\nif (!isset ($remove_periods)) { $remove_periods = \'No\'; }\nif (!isset ($word_separator)) { $word_separator = \'dash\'; }\nif (!isset ($override_tv)) { $override_tv = \'\'; }\n\nif (!class_exists(\'TransAlias\')) {\n    require_once $plugin_path.\'/transalias.class.php\';\n}\n$trans = new TransAlias($modx);\n\n/*\n * see if TV overrides the table name\n */\nif(!empty($override_tv)) {\n    $tvval = $trans->getTVValue($override_tv);\n    if(!empty($tvval)) {\n        $table_name = $tvval;\n    }\n}\n\n/*\n * Handle events\n */\n$e =& $modx->event;\nswitch ($e->name ) {\n    case \'OnStripAlias\':\n        if ($trans->loadTable($table_name, $remove_periods)) {\n            $output = $trans->stripAlias($alias,$char_restrict,$word_separator);\n            $e->output($output);\n            $e->stopPropagation();\n        }\n        break ;\n    default:\n        return ;\n}',0,'&table_name=Trans table;list;common,russian,utf8,utf8lowercase;utf8lowercase &char_restrict=Restrict alias to;list;lowercase alphanumeric,alphanumeric,legal characters;legal characters &remove_periods=Remove Periods;list;Yes,No;No &word_separator=Word Separator;list;dash,underscore,none;dash &override_tv=Override TV name;string;',0,''),(9,'App Init','',0,0,0,'$file = MODX_BASE_PATH.\'_/modx/plugin._init.php\';\r\ninclude $file;',0,'',0,' '),(10,'DocForm_DocumentObject','',0,0,0,'$file = MODX_BASE_PATH.\'_/modx/plugin.docform_documentobject.php\';\r\ninclude $file;',0,'',0,' '),(11,'Default TVs','',0,0,0,'require MODX_BASE_PATH . \'_/modx/plugin.default_tvs.php\';',0,'&categories=Categories;text;tvs &sort_by=Sort By;text;rank ASC &log_results=Log Events to modx?;list;yes,no;no &on_update=Assign TVs on template update?;list;yes,no;no',0,' '),(12,'PHx','<strong>2.1.3</strong>',0,0,0,'/*####\r\n#\r\n#	Name: PHx (Placeholders Xtended)\r\n#	Version: 2.1.3\r\n#	Author: Armand \"bS\" Pondman (apondman@zerobarrier.nl)\r\n#	Date: July 13, 2007\r\n#\r\n####*/\r\n\r\ninclude_once $modx->config[\'base_path\'] . \'assets/plugins/phx/phx.parser.class.inc.php\';\r\n$e = &$modx->Event;\r\n$PHx = new PHxParser($phxdebug,$phxmaxpass);\r\nswitch($e->name) {\r\n	case \'OnParseDocument\':\r\n		$PHx->OnParseDocument();\r\n		break;\r\n}',0,'&phxdebug=Log events;int;0 &phxmaxpass=Max. Passes;int;50',1,' '),(13,'Custom PreRender','',0,0,0,'require MODX_BASE_PATH.\'_/modx/plugin.custom_prerender.php\';',0,'',0,' '),(14,'Multisite','',0,0,0,'require MODX_BASE_PATH.\'_/modx/plugin.multisite.php\';',0,'',0,' ');

--
-- Table structure for table `modx_site_snippets`
--

CREATE TABLE `modx_site_snippets` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `description` varchar(255) NOT NULL DEFAULT 'Snippet',
  `editor_type` int(11) NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor',
  `category` int(11) NOT NULL DEFAULT '0' COMMENT 'category id',
  `cache_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Cache option',
  `snippet` mediumtext,
  `locked` tinyint(4) NOT NULL DEFAULT '0',
  `properties` text,
  `moduleguid` varchar(32) NOT NULL DEFAULT '' COMMENT 'GUID of module from which to import shared parameters',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=20 DEFAULT CHARSET=latin1 COMMENT='Contains the site snippets.';

--
-- Dumping data for table `modx_site_snippets`
--

INSERT INTO `modx_site_snippets` VALUES (1,'AjaxSearch','<strong>1.9.0</strong> Ajax and non-Ajax search that supports results highlighting',0,2,0,'/**\r\n--------------------------------------------------------------------------------\r\n:: Preamble\r\n--------------------------------------------------------------------------------\r\nThe release 1.9 looks like the previous release, but it is a completely\r\nrefactored development.\r\n\r\nIt is partially based on the previous releases of AjaxSearch written by the\r\nfollowing authors:\r\n\r\n Coroico <coroico@wangba.fr>\r\n Jason Coward <jason@opengeek.com>\r\n Kyle Jaebker <kjaebker@muddydogpaws.com>\r\n Ryan Thrash  <ryan@vertexworks.com>\r\n\r\n--------------------------------------------------------------------------------\r\n:: Description\r\n--------------------------------------------------------------------------------\r\n\r\n        Ajax and non-Ajax search that supports results highlighting.\r\n\r\nThis snippet adds AJAX functionality on top of the robust content searching.\r\n\r\nWhat AjaxSearch do:\r\n- search in fields of the content an TV MODx tables\r\n- several customizable input forms available\r\n- search in a subset of documents\r\n- highlighting of searchword in the results returned\r\n- allow a filtering of search results\r\n- displaying of search results customizable thru templates\r\n- group the search results by categories\r\n- filter features (allow to set up specific search forms)\r\n\r\nIt could works in two modes:\r\n\r\najax mode :\r\n- search results displayed in current page through AJAX request\r\n- multiple search options including live search\r\n- available link to view all results in a new page when only a subset is returned\r\n- customize the number of results returned\r\n- offer two types for paginating the results\r\n- uses the MooTools or JQuery js library for AJAX and visual effects\r\n\r\nnon-ajax mode :\r\n- search results displayed in a new page or below on the same page\r\n- offer two types for paginating the results\r\n- works without JS enabled\r\n\r\nWhat AjaxSearch don\'t :\r\n- search in dynamic content. AjaxSearch could retreive only data stored in\r\ndatabase. It can\'t find something stored in a chunk or generated by a snippet.\r\n\r\nMORE : See the ajaxSearch.readme.txt file for more informations. \r\n\r\n----------------------------------------------------------------------------- */\r\n\r\n// ajaxSearch version being executed\r\ndefine(\'AS_VERSION\', \'1.9.0\');\r\n// Path where ajaxSearch is installed\r\ndefine(\'AS_SPATH\', \'assets/snippets/ajaxSearch/\');\r\n//include snippet file\r\ndefine(\'AS_PATH\', MODX_BASE_PATH . AS_SPATH);\r\n\r\n//------------------------------------------------------------------------------\r\n// Configuration - general AjaxSearch snippet setup options\r\n//------------------------------------------------------------------------------\r\nglobal $modx;\r\n$tstart = $modx->getMicroTime();\r\n\r\n// Load the default configuration $dcfg to get the default values\r\n$default = AS_PATH . \'configs/default.config.php\';\r\nif (file_exists($default)) include $default;\r\nelse return \"<h3>AjaxSearch error: $default not found !<br />Check the existing of this file!</h3>\";\r\nif (!isset($dcfg)) return \"<h3>AjaxSearch error: default configuration array not defined in $default!<br /> Check the content of this file!</h3>\";\r\n$cfg = array(); // current configuration\r\n\r\n// Load a custom configuration file if required\r\n// config_name - Other config installed in the configs folder or in any folder within the MODx base path via @FILE\r\n// Configuration files should be named in the form: <config_name>.config.php\r\n// Default: \'\' - no custom config\r\n$cfg[\'config\'] = isset($config) ? $config : $dcfg[\'config\'];\r\nif ($cfg[\'config\']) {\r\n    $config = $cfg[\'config\'];\r\n    $lconfig = (substr($config, 0, 5) != \"@FILE\") ? AS_PATH . \"configs/$config.config.php\" : $modx->config[\'base_path\'] . trim(substr($config, 5));\r\n    if (file_exists($lconfig)) include $lconfig;\r\n    else return \"<h3>AjaxSearch error: \" . $lconfig . \" not found !<br />Check your config parameter or your config file name!</h3>\";\r\n}\r\n\r\n// &debug = [ 0 | 1 | 2 | 3 ]\r\n// 1,2,3 : File mode - Output logged into a file named ajaxSearch_log.txt in ajaxSearch/debug/ directory.\r\n// this directory should be writable.\r\n// Default: 0 - no logs\r\n$cfg[\'debug\'] = isset($debug) ? $debug : (isset($__debug) ? $__debug : $dcfg[\'debug\']);\r\n\r\n// &timeLimit = [ int | 60 ]\r\n// Max execution time in seconds for the AjaxSearch script\r\n// 0 - If set to zero, no time limit is imposed\r\n// Default: 60 - 1 minute.\r\n$cfg[\'timeLimit\'] = isset($timeLimit) ? $timeLimit : (isset($__timeLimit) ? $__timeLimit : $dcfg[\'timeLimit\']);\r\n\r\n// &language [ language_name | manager_language ] (optional)\r\n// Default: $modx->config[\'manager_language\'] - manager language used\r\n$cfg[\'language\'] = isset($language) ? $language : (isset($__language) ? $__language : $dcfg[\'language\']);\r\n\r\n// &ajaxSearch [1 | 0] (as passed in snippet variable ONLY)\r\n// Use this to display the search results using ajax You must include the Mootools library in your template\r\n// Default: 1 - ajax mode selected\r\n$cfg[\'ajaxSearch\'] = isset($ajaxSearch) ? $ajaxSearch : (isset($__ajaxSearch) ? $__ajaxSearch : $dcfg[\'ajaxSearch\']);\r\n\r\n// &advSearch [ \'exactphrase\' | \'allwords\' | \'nowords\' | \'oneword\' ]\r\n// Advanced search:\r\n// - exactphrase : provides the documents which contain the exact phrase\r\n// - allwords : provides the documents which contain all the words\r\n// - nowords : provides the documents which do not contain the words\r\n// - oneword : provides the document which contain at least one word\r\n// Default: \'oneword\'\r\n$cfg[\'advSearch\'] = isset($advSearch) ? $advSearch : (isset($__advSearch) ? $__advSearch : $dcfg[\'advSearch\']);\r\n\r\n// &asId - Unique id for AjaxSearch instance\r\n// this allows to distinguish several Ajaxsearch instances on the same page\r\n// Any combination of characters a-z, underscores, and numbers 0-9\r\n// This is case sensitive. Default = empty string\r\n// With ajax mode, the first snippet call of the page shouldn\'t use the asId parameter\r\n$cfg[\'asId\'] = isset($asId) ? $asId : (isset($__asId) ? $__asId : $dcfg[\'asId\']);\r\n\r\n// &whereSearch\r\n// Define where should occur the search\r\n// a separated list of keywords describing the tables where to search\r\n// keywords allowed :\r\n// \"content\" for site_content, \"tv\" for site_tmplvar_contentvalues, \"jot\" for jot_content, \"maxigallery\" for maxigallery\r\n// you could add your own keywords. But the keyword should be a user function which describes the tables to use\r\n// all the text fields are searchable but you could specify the fields like this:\r\n// whereSearch=`content:pagetitle,introtext,content|tv:tv_value|maxigallery:gal_title`\r\n// Default: \'content|tv\'\r\n$cfg[\'whereSearch\'] = isset($whereSearch) ? $whereSearch : (isset($__whereSearch) ? $__whereSearch : $dcfg[\'whereSearch\']);\r\n\r\n// &sites : [comma separated list of sites]\r\n// sites allow to define sites where to do the search\r\n$cfg[\'sites\'] = isset($sites) ? $sites : (isset($__sites) ? $__sites : $dcfg[\'sites\']);\r\n\r\n// &subSearch  [comma separated list of subsites]\r\n// subSearch allow to define sub-domains or subsites where to do the search\r\n$cfg[\'subSearch\'] = isset($subSearch) ? $subSearch : (isset($__subSearch) ? $__subSearch : $dcfg[\'subSearch\']);\r\n\r\n// &category  [ tv_name ]\r\n// Any combination of characters a-z, underscores, and numbers 0-9\r\n// This is case sensitive. Default = empty string\r\n// Name of a TV. The category of a MODx document is provided by this TV content\r\n$cfg[\'category\'] = isset($category) ? $category : (isset($__category) ? $__category : $dcfg[\'category\']);\r\n\r\n// &display [ \'mixed\' | \'unmixed\' ]\r\n// When results comes from differents sites, subsites or categories, you could choose to display the results mixed or unmixed.\r\n// Default: unmixed\r\n// Unmixed mode display the results grouped by site, subsite or category. Each group of results could be paginated.\r\n// Mixed mode mixe all the results coming from the differents area.\r\n// With unmixed mode, results are ordered by the field provided by the first field of the order parameter\r\n$cfg[\'display\'] = isset($display) ? $display : (isset($__display) ? $__display : $dcfg[\'display\']);\r\n\r\n// &init  [ \'none\' | \'all\' ]\r\n// init defines if the search display all the results or none when the search term is an empty string\r\n// Default: none\r\n$cfg[\'init\'] = isset($init) ? $init : (isset($__init) ? $__init : $dcfg[\'init\']);\r\n\r\n// &withTvs - Define which Tvs are used for the search in Tvs\r\n// a comma separated list of TV names\r\n// Default: \'\' - all TVs are used (empty list)\r\n$cfg[\'withTvs\'] = isset($withTvs) ? $withTvs : (isset($__withTvs) ? $__withTvs : $dcfg[\'withTvs\']);\r\n\r\n// &order - Define the sort order of results\r\n// Comma separated list of fields defined as searchable in the table definition\r\n// to suppress the sorting, use &order=``\r\n// Default: \'pub_date,pagetitle\'\r\n$cfg[\'order\'] = isset($order) ? $order : (isset($__order) ? $__order : $dcfg[\'order\']);\r\n\r\n// &rank - Define the rank of search results. Results are sorted by rank value\r\n// Comma separated list of fields with optionally user defined weight\r\n// Default: \'pagetitle:100,extract\'\r\n// to suppress the rank sorting, use &rank=``;\r\n// &rank sort occurs after the &order sort\r\n$cfg[\'rank\'] = isset($rank) ? $rank : (isset($__rank) ? $__rank : $dcfg[\'rank\']);\r\n\r\n// &maxWords [ 1 < int < 10 ]\r\n// Maximum number of words for searching\r\n// Default: 5\r\n$cfg[\'maxWords\'] = isset($maxWords) ? intval($maxWords) : (isset($__maxWords) ? intval($__maxWords) : $dcfg[\'maxWords\']);\r\n\r\n// &minChars [  2 < int < 100 ]\r\n// Minimum number of characters to require for a word to be valid for searching.\r\n// length of each word with $advSearch = \'allwords\', \'oneword\' or \'nowords\'\r\n// length of the search string with possible spaces with $advSearch = \'exactphrase\'\r\n// Default: 3\r\n$cfg[\'minChars\'] = isset($minChars) ? intval($minChars) : (isset($__minChars) ? intval($__minChars) : $dcfg[\'minChars\']);\r\n\r\n// &showInputForm [0 | 1]\r\n// If you would like to turn off the search form when showing results you can set this to false.(1=true, 0=false)\r\n// Default: 1\r\n$cfg[\'showInputForm\'] = isset($showInputForm) ? $showInputForm : (isset($__showInputForm) ? $__showInputForm : $dcfg[\'showInputForm\']);\r\n\r\n// &showIntro [0 | 1]\r\n// If you would like to turn off the intro message beyond the input form you can set this to false.(1=true, 0=false)\r\n// Default: 1\r\n$cfg[\'showIntro\'] = isset($showIntro) ? $showIntro : (isset($__showIntro) ? $__showIntro : $dcfg[\'showIntro\']);\r\n\r\n// &grabMax [ int ]\r\n// Set to the max number of records you would like on each page. Set to 0 if unlimited.\r\n// Default: 10\r\n$cfg[\'grabMax\'] = isset($grabMax) ? intval($grabMax) : (isset($__grabMax) ? intval($__grabMax) : $dcfg[\'grabMax\']);\r\n\r\n// &extract [ n:searchable fields list | 1:content,description,introtext,tv_content]\r\n// show the search terms highlighted in a little extract\r\n// n : maximum number of extracts displayed\r\n// ordered searchable fields list : separated list of fields define as searchable in the table definition\r\n// Default: \'1:content,description,introtext,tv_value\' - One extract from content then description,introtext,tv_value\r\n$cfg[\'extract\'] = isset($extract) ? $extract : (isset($__extract) ? $__extract : $dcfg[\'extract\']);\r\n\r\n// &extractLength [ 50 < int < 800]\r\n// Length of extract around the search words found - between 50 and 800 characters\r\n// Default: 200\r\n$cfg[\'extractLength\'] = isset($extractLength) ? intval($extractLength) : (isset($__extractLength) ? intval($__extractLength) : $dcfg[\'extractLength\']);\r\n\r\n// &extractEllips [ string ]\r\n// Ellipside to mark the star and the end of  an extract when the sentence is cutting\r\n// Default: \'...\'\r\n$cfg[\'extractEllips\'] = isset($extractEllips) ? $extractEllips : (isset($__extractEllips) ? $__extractEllips : $dcfg[\'extractEllips\']);\r\n\r\n// &extractSeparator [ string ]\r\n// Any html tag to mark the separation between extracts\r\n// Default: \'<br />\' - but you could also choose for instance \'<hr />\'\r\n$cfg[\'extractSeparator\'] = isset($extractSeparator) ? $extractSeparator : (isset($__extractSeparator) ? $__extractSeparator : $dcfg[\'extractSeparator\']);\r\n\r\n// &formatDate [ string ]\r\n// The format of outputted dates. See http://www.php.net/manual/en/function.date.php\r\n// Default: \'d/m/y : H:i:s\' - e.g: 21/01/08 : 23:09:22\r\n$cfg[\'formatDate\'] = isset($formatDate) ? $formatDate : (isset($__formatDate) ? $__formatDate : $dcfg[\'formatDate\']);\r\n\r\n// &highlightResult [1 | 0]\r\n// create links so that search terms will be highlighted when linked page clicked\r\n// Default: 1 - Results highlighted\r\n$cfg[\'highlightResult\'] = isset($highlightResult) ? $highlightResult : (isset($__highlightResult) ? $__highlightResult : $dcfg[\'highlightResult\']);\r\n\r\n// &pagingType[ 0 | 1 | 2 ]\r\n// Determine the pagination type used - Default 1 : Previous - X-Y/Z - Next\r\n$cfg[\'pagingType\'] = isset($pagingType) ? $pagingType : (isset($__pagingType) ? $__pagingType : $dcfg[\'pagingType\']);\r\n\r\n// &pageLinkSeparator [ string ]\r\n// What you want, if anything, between your page link numbers\r\n// Default: \' | \'\r\n$cfg[\'pageLinkSeparator\'] = isset($pageLinkSeparator) ? $pageLinkSeparator : (isset($__pageLinkSeparator) ? $__pageLinkSeparator : $dcfg[\'pageLinkSeparator\']);\r\n\r\n// &showPagingAlways[1 | 0]\r\n// Determine whether or not to always show paging\r\n$cfg[\'showPagingAlways\'] = isset($showPagingAlways) ? $showPagingAlways : (isset($__showPagingAlways) ? $__showPagingAlways : $dcfg[\'showPagingAlways\']);\r\n\r\n// &landingPage  [int] set the page to show the results page (non Ajax search)\r\n// Default: false\r\n$cfg[\'landingPage\'] = isset($landingPage) ? $landingPage : (isset($__landingPage) ? $__landingPage : $dcfg[\'landingPage\']);\r\n\r\n// &showResults  [1 | 0]  establish whether to show the results or not\r\n// Default: 1\r\n$cfg[\'showResults\'] = isset($showResults) ? $showResults : (isset($__showResults) ? $__showResults : $dcfg[\'showResults\']);\r\n\r\n// &parents [ [ in | not in ] : comma separated list of Ids | \'\' ]\r\n// Ids of documents to retrieve their children to &depth depth  where to do the search in or not in\r\n// Default: \'\' - empty list\r\n$cfg[\'parents\'] = isset($parents) ? $parents : (isset($__parents) ? $__parents : $dcfg[\'parents\']);\r\n\r\n// &documents [ [ in | not in ] : comma separated list of Ids | \'\' ]\r\n// Ids of documents where to do the search in or not in\r\n// Default: \'\' - empty list\r\n$cfg[\'documents\'] = isset($documents) ? $documents : (isset($__documents) ? $__documents : $dcfg[\'documents\']);\r\n\r\n// &depth [ 0 < int ] Number of levels deep to retrieve documents\r\n// Default: 10\r\n$cfg[\'depth\'] = isset($depth) ? intval($depth) : (isset($__depth) ? intval($__depth) : $dcfg[\'depth\']);\r\n\r\n// &hideMenu [0 | 1| 2]  Search in hidden documents from menu.\r\n// 0 - search only in documents visible from menu\r\n// 1 - search only in documents hidden from menu\r\n// 2 - search in hidden or visible documents from menu\r\n// Default: 2\r\n$cfg[\'hideMenu\'] = isset($hideMenu) ? $hideMenu : (isset($__hideMenu) ? $__hideMenu : $dcfg[\'hideMenu\']);\r\n\r\n// &hideLink [0 | 1 ]   Search in content of type reference (link)\r\n// 0 - search in content of type document AND reference\r\n// 1 - search only in content of type document\r\n// Default: 1\r\n$cfg[\'hideLink\'] = isset($hideLink) ? $hideLink : (isset($__hideLink) ? $__hideLink : $dcfg[\'hideLink\']);\r\n\r\n// &filter - Basic filtering : remove unwanted documents that meets the criteria of the filter\r\n// See Ditto 2 Basic filtering and the ajaxSearch demo site for more information\r\n// Default: \'\' - empty list\r\n$cfg[\'filter\'] = isset($filter) ? $filter : (isset($__filter) ? $__filter : $dcfg[\'filter\']);\r\n\r\n// &output [0 | 1 ]Custom layout\r\n// Default: 0 - Results are listed just under the input form\r\n// 1 - custom layout. put [+as.inputForm+] and [+as.results+] where you want to define the layout\r\n$cfg[\'output\'] = isset($output) ? $output : (isset($__output) ? $__output : $dcfg[\'output\']);\r\n\r\n// &tplInput - Chunk to style the ajaxSearch input form\r\n// Default: \'@FILE:\' . AS_SPATH . \'templates/input.tpl.html\'\r\n$cfg[\'tplInput\'] = isset($tplInput) ? $tplInput : (isset($__tplInput) ? $__tplInput : $dcfg[\'tplInput\']);\r\n\r\n// &tplResults - Chunk to style the non-ajax output results outer\r\n// Default: \'@FILE:\' . AS_SPATH . \'templates/results.tpl.html\'\r\n$cfg[\'tplResults\'] = isset($tplResults) ? $tplResults : (isset($__tplResults) ? $__tplResults : $dcfg[\'tplResults\']);\r\n\r\n// &tplGrpResult - Chunk to style the non-ajax output group result outer\r\n// Default: \'@FILE:\' . AS_SPATH . \'templates/grpResult.tpl.html\'\r\n$cfg[\'tplGrpResult\'] = isset($tplGrpResult) ? $tplGrpResult : (isset($__tplGrpResult) ? $__tplGrpResult : $dcfg[\'tplGrpResult\']);\r\n\r\n// &tplResult - Chunk to style each output result\r\n// Default: \"@FILE:\" . AS_SPATH . \'templates/result.tpl.html\'\r\n$cfg[\'tplResult\'] = isset($tplResult) ? $tplResult : (isset($__tplResult) ? $__tplResult : $dcfg[\'tplResult\']);\r\n\r\n// &tplComment - Chunk to style the comment form (Also used with the ajax mode)\r\n// Default: \'@FILE:\' . AS_SPATH . \'templates/comment.tpl.html\'\r\n$cfg[\'tplComment\'] = isset($tplComment) ? $tplComment : (isset($__tplComment) ? $__tplComment : $dcfg[\'tplComment\']);\r\n\r\n// &tplPaging0 - Chunk to style the paging links - type 0\r\n// Default: \'@FILE:\' . AS_SPATH . \'templates/paging0.tpl.html\'\r\n$cfg[\'tplPaging0\'] = isset($tplPaging0) ? $tplPaging0 : (isset($__tplPaging0) ? $__tplPaging0 : $dcfg[\'tplPaging0\']);\r\n\r\n// &tplPaging1 - Chunk to style the paging links - type 1\r\n// Default: \'@FILE:\' . AS_SPATH . \'templates/paging1.tpl.html\'\r\n$cfg[\'tplPaging1\'] = isset($tplPaging1) ? $tplPaging1 : (isset($__tplPaging1) ? $__tplPaging1 : $dcfg[\'tplPaging1\']);\r\n\r\n// &tplPaging2 - Chunk to style the paging links - type 2\r\n// Default: \'@FILE:\' . AS_SPATH . \'templates/paging2.tpl.html\'\r\n$cfg[\'tplPaging2\'] = isset($tplPaging2) ? $tplPaging2 : (isset($__tplPaging2) ? $__tplPaging2 : $dcfg[\'tplPaging2\']);\r\n\r\n// &stripInput - stripInput user function name\r\n// Default: \'defaultStripInput\'\r\n$cfg[\'stripInput\'] = isset($stripInput) ? $stripInput : (isset($__stripInput) ? $__stripInput : $dcfg[\'stripInput\']);\r\n\r\n// &stripOutput - stripOutput user function name\r\n// Default: \'defaultStripOutput\'\r\n$cfg[\'stripOutput\'] = isset($stripOutput) ? $stripOutput : (isset($__stripOutput) ? $__stripOutput : $dcfg[\'stripOutput\']);\r\n\r\n// &breadcrumbs\r\n// 0 : disallow the breadcrumbs link\r\n// Name of the breadcrumbs function : allow the breadcrumbs link\r\n// The function name could be followed by some parameter initialization\r\n// e.g: &breadcrumbs=`Breadcrumbs,showHomeCrumb:0,showCrumbsAtHome:1`\r\n// Default: \'\' - empty string\r\n$cfg[\'breadcrumbs\'] = isset($breadcrumbs) ? $breadcrumbs : (isset($__breadcrumbs) ? $__breadcrumbs : $dcfg[\'breadcrumbs\']);\r\n\r\n// &tvPhx - display and set placeHolders for TV (template variables)\r\n// 0 : disallow the feature\r\n// 1 : allow the display of all Modx TVs of the document found (default)\r\n// \'tb_alias:display_function_name[,[tb_alias:display_function_name]*]\' : set up placeholders for custom joined tables\r\n// Default: 1 - tvPhx allowed for TV only\r\n$cfg[\'tvPhx\'] = isset($tvPhx) ? $tvPhx : (isset($__tvPhx) ? $__tvPhx : $dcfg[\'tvPhx\']);\r\n\r\n// &clearDefault - Clearing default text\r\n// Set this to 1 if you would like to include the clear default js function\r\n// add the class \"cleardefault\" to your input text form and set this parameter\r\n// Default: 0\r\n$cfg[\'clearDefault\'] = isset($clearDefault) ? $clearDefault : (isset($__clearDefault) ? $__clearDefault : $dcfg[\'clearDefault\']);\r\n\r\n// &jsClearDefault - Location of the js library\r\n// Default: AS_SPATH . \'js/clearDefault.js\'\r\n$cfg[\'jsClearDefault\'] = $dcfg[\'jsClearDefault\'];\r\n\r\n// &mbstring - php_mbstring extension available [0 | 1]\r\n// Default: 1 - extension available\r\n$cfg[\'mbstring\'] = isset($mbstring) ? $mbstring : (isset($__mbstring) ? $__mbstring : $dcfg[\'mbstring\']);\r\n\r\n//  &asLog - ajaxSearch log [ level [: comment [: purge]]]\r\n//  level:\r\n//        0 : disallow the ajaxSearch log (Default)\r\n//        1 : failed search requests are logged\r\n//        2 : all ajaxSearch requests are logged\r\n//  comment:\r\n//        0 : user comment not allowed (Default)\r\n//        1 : user comment allowed\r\n//  purge: number of logs allowed before to do an automatic purge of the table\r\n//        Default: 200\r\n$cfg[\'asLog\'] = isset($asLog) ? $asLog : (isset($__asLog) ? $__asLog : $dcfg[\'asLog\']);\r\n\r\n\r\n//------------------------------------------------------------------------------\r\n// Configuration - Simple Ajax mode\r\n//------------------------------------------------------------------------------\r\n\r\nif ($cfg[\'ajaxSearch\']) {\r\n\r\n    // $liveSearch [1 | 0] (as passed in snippet variable ONLY)\r\n    // Set this to 1 if you would like to use the live search (i.e. results as you type)\r\n    // Default: 0 - livesearch mode inactivated\r\n    $cfg[\'liveSearch\'] = isset($liveSearch) ? $liveSearch : (isset($__liveSearch) ? $__liveSearch : $dcfg[\'liveSearch\']);\r\n\r\n    // &ajaxMax [int] - The maximum number of results to show for the ajaxsearch\r\n    // Default: 6\r\n    $cfg[\'ajaxMax\'] = isset($ajaxMax) ? $ajaxMax : (isset($__ajaxMax) ? $__ajaxMax : $dcfg[\'ajaxMax\']);\r\n\r\n    // &moreResultsPage [int]\r\n    // The document id of the page you want the more results link to point to\r\n    // Default: 0\r\n    $cfg[\'moreResultsPage\'] = isset($moreResultsPage) ? $moreResultsPage : (isset($__moreResultsPage) ? $__moreResultsPage : $dcfg[\'moreResultsPage\']);\r\n\r\n    // &opacity - set the opacity of the div ajaxSearch_output\r\n    // Should be a float value: [ 0. < float <= 1. ]\r\n    // Default: 1.\r\n    $cfg[\'opacity\'] = isset($opacity) ? $opacity : (isset($__opacity) ? $__opacity : $dcfg[\'opacity\']);\r\n\r\n    // &tplAjaxResults - Chunk to style the ajax output results outer\r\n    // Default: \'\' - empty string\r\n    $cfg[\'tplAjaxResults\'] = isset($tplAjaxResults) ? $tplAjaxResults : (isset($__tplAjaxResults) ? $__tplAjaxResults : $dcfg[\'tplAjaxResults\']);\r\n\r\n    // &tplAjaxGrpResult - Chunk to style each ajax output group result outer\r\n    // Default: \'\' - empty string\r\n    $cfg[\'tplAjaxGrpResult\'] = isset($tplAjaxGrpResult) ? $tplAjaxGrpResult : (isset($__tplAjaxGrpResult) ? $__tplAjaxGrpResult : $dcfg[\'tplAjaxGrpResult\']);\r\n\r\n    // &tplAjaxResult - Chunk to style each ajax output result\r\n    // Default: \'\' - empty string\r\n    $cfg[\'tplAjaxResult\'] = isset($tplAjaxResult) ? $tplAjaxResult : (isset($__tplAjaxResult) ? $__tplAjaxResult : $dcfg[\'tplAjaxResult\']);\r\n\r\n    // &jscript [\'jquery\'|\'mootools2\'|\'mootools\']\r\n    // Set this to jquery if you would like use the jquery library\r\n    // set mootools2 to use the version 1.2 of mootools (limited to JS functions used by AS)\r\n    // Default: \'mootools\' - use the version 1.11 of mootools provided with MODx\r\n    $cfg[\'jscript\'] = isset($jscript) ? $jscript : (isset($__jscript) ? $__jscript : $dcfg[\'jscript\']);\r\n\r\n    // &addJscript [1 | 0]\r\n    // Set this to 1 if you would like to include or not the mootool/jquery library in the header of your pages automatically\r\n    // Default: 1\r\n    $cfg[\'addJscript\'] = isset($addJscript) ? $addJscript : (isset($__addJscript) ? $__addJscript : $dcfg[\'addJscript\']);\r\n\r\n    // &jsMooTools - Location of the mootools javascript library (current version of MODx)\r\n    // Default: \'manager/media/script/mootools/mootools.js\'\r\n    $cfg[\'jsMooTools\'] = isset($jsMooTools) ? $jsMooTools : (isset($__jsMooTools) ? $__jsMooTools : $dcfg[\'jsMooTools\']);\r\n\r\n    // &jsMooTools2 - Location of an alternative mootools javascript library\r\n    // Default: AS_SPATH . \'js/mootools1.2/mootools.js\' - contains only the required functions for AS\r\n    // to use an another library, use this parameter and change the ajaxSearch/js/ajaxSearch1/ajaxSearch-mootools2.js file\r\n    $cfg[\'jsMooTools2\'] = isset($jsMooTools2) ? $jsMooTools2 : (isset($__jsMooTools2) ? $__jsMooTools2 : $dcfg[\'jsMooTools2\']);\r\n\r\n    // &jsQuery - Location of the jquery javascript library\r\n    // Default: AS_SPATH . \'js/jquery/jquery.js\'\r\n    $cfg[\'jsJquery\'] = isset($jsJquery) ? $jsJquery : (isset($__jsJquery) ? $__jsJquery : $dcfg[\'jsJquery\']);\r\n}\r\n\r\n\r\n// ========================================================== End of config\r\ninclude_once AS_PATH . \"classes/ajaxSearch.class.inc.php\";\r\nif (class_exists(\'AjaxSearch\')) {\r\n    $as = new AjaxSearch();\r\n    $output = $as->run($tstart, $dcfg, $cfg);\r\n} else {\r\n    $output = \"<h3>error: AjaxSearch class not found</h3>\";\r\n}\r\n$elapsedTime = $modx->getMicroTime() - $tstart;\r\n$etime = sprintf(\"%.4fs\",$elapsedTime);\r\n//$f=fopen(\'test.txt\',\'a+\');fwrite($f,\"etime=\".$etime.\"\\n\\n\");\r\nreturn $output;\r\n',0,'',''),(2,'Breadcrumbs','<strong>1.0.2</strong> Configurable breadcrumb page-trail navigation',0,3,0,'/*\r\n * This snippet shows the path through the various levels of site structure. It\r\n * is NOT necessarily the path the user took to arrive at a given page.\r\n * Version: 1.0.2\r\n */\r\n\r\n/* -----------------------------------------------------------------------------\r\n * CONFIGURATION\r\n * -----------------------------------------------------------------------------\r\n * This section contains brief explanations of the available parameters.\r\n */\r\n\r\n/* General setup\r\n * -----------------------------------------------------------------------------\r\n */\r\n\r\n/* $maxCrumbs [ integer ]\r\n * Max number of elemetns to have in a breadcrumb path. The default 100 is an\r\n * arbitrarily high number that will essentially include everything. If you were\r\n * to set it to 2, and you were 5 levels deep, it would appear like:\r\n * HOME > ... > Level 3 > Level 4 > CURRENT PAGE\r\n * It should be noted that the \"home\" link, and the current page do not count as\r\n * they are managed by their own configuration settings.\r\n */\r\n( isset($maxCrumbs) ) ? $maxCrumbs : $maxCrumbs = 100;\r\n\r\n/* $pathThruUnPub [ 1 | 0 ]\r\n * When your path includes an unpublished folder, setting this to 1 (true) will\r\n * show all documents in path EXCEPT the unpublished. When set to 0 (false), the\r\n * path will not go \"through\" that unpublished folder and will stop there.\r\n */\r\n( isset($pathThruUnPub) ) ? $pathThruUnPub : $pathThruUnPub = 1;\r\n\r\n/* $respectHidemenu [ 0 | 1 ]\r\n * Setting this to 1 (true) will respect the hidemenu setting of the document\r\n * and not include it in trail.\r\n */\r\n( isset($respectHidemenu) ) ? (int)$respectHidemenu : $respectHidemenu = 1;\r\n\r\n/* $showCurrentCrumb [ 1 | 0 ]\r\n * Include the current page at the end of the trail. On by default.\r\n */\r\n( isset($showCurrentCrumb) ) ? $showCurrentCrumb : $showCurrentCrumb = 1;\r\n\r\n/* $currentAsLink [ 1 | 0 ]\r\n * If the current page is included, this parameter will show it as a link (1) or\r\n * just plain text (0).\r\n */\r\n( $currentAsLink ) ? $currentAsLink : $currentAsLink = 0;\r\n\r\n/* $linkTextField [ string ]\r\n * Prioritized list of fields to use as link text. Options are: pagetitle,\r\n * longtitle, description, menutitle. The first of these fields that has a value\r\n * will be the title.\r\n */\r\n( isset($linkTextField) ) ? $linkTextField : $linkTextField = \'menutitle,pagetitle,longtitle\';\r\n\r\n/* $linkDescField [ string ]\r\n * Prioritized list of fields to use as link title text. Options are: pagetitle,\r\n * longtitle, description, menutitle. The first of these fields that has a value\r\n * will be the title.\r\n */\r\n( isset($linkDescField) ) ? $linkDescField : $linkDescField = \'description,longtitle,pagetitle,menutitle\';\r\n\r\n/* $showCrumbsAsLinks [ 1 | 0 ]\r\n * If for some reason you want breadcrumbs to be text and not links, set to 0\r\n * (false).\r\n */\r\n( isset($showCrumbsAsLinks) ) ? $showCrumbsAsLinks : $showCrumbsAsLinks = 1;\r\n\r\n/* $templateSet [ string ]\r\n * The set of templates you\'d like to use. (Templates are defined below.) It\r\n * will default to defaultString which replicates the output of previous\r\n * versions.\r\n */\r\n( isset($templateSet) ) ? $templateSet : $templateSet = \'defaultString\';\r\n\r\n/* $crumbGap [ string ]\r\n * String to be shown to represent gap if there are more crumbs in trail than\r\n * can be shown. Note: if you would like to use an image, the entire image tag\r\n * must be provided. When making a snippet call, you cannot use \"=\", so use \"||\"\r\n * instead and it will be converted for you.\r\n */\r\n( isset($crumbGap) ) ? $crumbGap : $crumbGap = \'...\';\r\n\r\n/* $stylePrefix [ string ]\r\n * Breadcrumbs will add style classes to various parts of the trail. To avoid\r\n * class name conflicts, you can determine your own prefix. The following\r\n * classes will be attached:\r\n * crumbBox: Span that surrounds all crumb output\r\n * hideCrumb: Span that surrounds the \"...\" if there are more crumbs than will\r\n * be shown\r\n * currentCrumb: Span or A tag surrounding the current crumb\r\n * firstCrumb: Span that will be applied to first crumb, whether it is \"home\" or\r\n * not\r\n * lastCrumb: Span surrounding last crumb, whether it is the current page or\r\n * not\r\n * crumb: Class given to each A tag surrounding the intermediate crumbs (not\r\n * \"home\", \"current\", or \"hide\")\r\n * homeCrumb: Class given to the home crumb\r\n */\r\n( isset($stylePrefix) ) ? $stylePrefix : $stylePrefix = \'B_\';\r\n\r\n\r\n\r\n/* Home link parameters\r\n * -----------------------------------------------------------------------------\r\n * The home link is unique. It is a link that can be placed at the head of the\r\n * breadcrumb trail, even if it is not truly in the hierarchy.\r\n */\r\n\r\n/* $showHomeCrumb [ 1 | 0 ]\r\n * This toggles the \"home\" crumb to be added to the beginning of your trail.\r\n */\r\n( isset($showHomeCrumb) ) ? $showHomeCrumb : $showHomeCrumb = 1;\r\n\r\n/* $homeId [ integer ]\r\n * Usually the page designated as \"site start\" in MODx configuration is\r\n * considered the home page. But if you would like to use some other document,\r\n * you may explicitly define it.\r\n */\r\n( isset($homeId) ) ? (int)$homeId : $homeId = $modx->config[\'site_start\'];\r\n\r\n/* $homeCrumbTitle [ string ]\r\n * If you\'d like to use something other than the menutitle (or pagetitle) for\r\n * the home link.\r\n */\r\n( isset($homeCrumbTitle) ) ? $homeCrumbTitle : $homeCrumbTitle = \'\';\r\n\r\n/* $homeCrumbDescription [ string ]\r\n * If you\'d like to use a custom description (link title) on the home link. If\r\n * left blank, the title will follow the title order set in $titleField.\r\n */\r\n( isset($homeCrumbDescription) ) ? $homeCrumbDescription : $homeCrumbDescription = \'\';\r\n\r\n\r\n/* Custom behaviors\r\n * -----------------------------------------------------------------------------\r\n * The following parameters will alter the behavior of the Breadcrumbs based on\r\n * the page it is on.\r\n */\r\n\r\n/* $showCrumbsAtHome [ 1 | 0 ]\r\n * You can turn off Breadcrumbs all together on the home page by setting this to\r\n * 1 (true);\r\n */\r\n( isset($showCrumbsAtHome) ) ? $showCrumbsAtHome : $showCrumbsAtHome = 0;\r\n\r\n/* $hideOn [ string ]\r\n * Comma separated list of documents you don\'t want Breadcrumbs on at all. If\r\n * you have a LOT of pages like this, you might try $hideUnder or use another\r\n * template. This parameter is best for those rare odd balls - otherwise it will\r\n * become a pain to manage.\r\n */\r\n( isset($hideOn) ) ? $hideOn : $hideOn = \'\';\r\n\r\n/* $hideUnder [ string ]\r\n * Comma separated list of parent documents, whose CHILDREN you don\'t want\r\n * Breadcrumbs to appear on at all. This enables you to hide Breadcrumbs on a\r\n * whole folders worth of documents by specifying the parent only. The PARENT\r\n * will not have Breadcrumbs hidden however. If you wanted to hide the parent\r\n * and the children, put the parent ID in hideUnder AND hideOn.\r\n */\r\n( isset($hideUnder) ) ? $hideUnder : $hideUnder = \'\';\r\n\r\n/* $stopIds [ string ]\r\n * Comma separated list of document IDs that when reached, stops Breadcrumbs\r\n * from going any further. This is useful in situations like where you have\r\n * language branches, and you don\'t want the Breadcrumbs going past the \"home\"\r\n * of the language you\'re in.\r\n */\r\n( isset($stopIds) ) ? $stopIds : $stopIds = \'\';\r\n\r\n/* $ignoreIds [ string ]\r\n * Comma separated list of document IDs to explicitly ignore.\r\n */\r\n( isset($ignoreIds) ) ? $ignoreids : $ignoreids = \'\';\r\n\r\n/* Templates\r\n * -----------------------------------------------------------------------------\r\n * In an effort to keep the MODx chunks manager from getting mired down in lots\r\n * of templates, Breadcrumbs templates are included here. Two sets are provided\r\n * prefixed with defaultString, and defaultList. You can create as many more as\r\n * you like, each set with it\'s own prefix\r\n */\r\n$templates = array(\r\n    \'defaultString\' => array(\r\n        \'crumb\' => \'[+crumb+]\',\r\n        \'separator\' => \' &raquo; \',\r\n        \'crumbContainer\' => \'<span class=\"[+crumbBoxClass+]\">[+crumbs+]</span>\',\r\n        \'lastCrumbWrapper\' => \'<span class=\"[+lastCrumbClass+]\">[+lastCrumbSpanA+]</span>\',\r\n        \'firstCrumbWrapper\' => \'<span class=\"[+firstCrumbClass+]\">[+firstCrumbSpanA+]</span>\'\r\n    ),\r\n    \'defaultList\' => array(\r\n        \'crumb\' => \'<li>[+crumb+]</li>\',\r\n        \'separator\' => \'\',\r\n        \'crumbContainer\' => \'<ul class=\"[+crumbBoxClass+]\">[+crumbs+]</ul>\',\r\n        \'lastCrumbWrapper\' => \'<span class=\"[+lastCrumbClass+]\">[+lastCrumbSpanA+]</span>\',\r\n        \'firstCrumbWrapper\' => \'<span class=\"[+firstCrumbClass+]\">[+firstCrumbSpanA+]</span>\'\r\n    ),\r\n);\r\n\r\n\r\n/* -----------------------------------------------------------------------------\r\n * END CONFIGURATION\r\n * -----------------------------------------------------------------------------\r\n */\r\n\r\n// Return blank if necessary: on home page\r\nif ( !$showCrumbsAtHome && $homeId == $modx->documentObject[\'id\'] )\r\n{\r\n    return \'\';\r\n}\r\n// Return blank if necessary: specified pages\r\nif ( $hideOn || $hideUnder )\r\n{\r\n    // Create array of hide pages\r\n    $hideOn = str_replace(\' \',\'\',$hideOn);\r\n    $hideOn = explode(\',\',$hideOn);\r\n\r\n    // Get more hide pages based on parents if needed\r\n    if ( $hideUnder )\r\n    {\r\n        $hiddenKids = array();\r\n        // Get child pages to hide\r\n        $hideKidsQuery = $modx->db->select(\'id\',$modx->getFullTableName(\"site_content\"),\"parent IN ($hideUnder)\");\r\n        while ( $hideKid = $modx->db->getRow($hideKidsQuery) )\r\n        {\r\n            $hiddenKids[] = $hideKid[\'id\'];\r\n        }\r\n        // Merge with hideOn pages\r\n        $hideOn = array_merge($hideOn,$hiddenKids);\r\n    }\r\n\r\n    if ( in_array($modx->documentObject[\'id\'],$hideOn) )\r\n    {\r\n        return \'\';\r\n    }\r\n\r\n}\r\n\r\n\r\n// Initialize ------------------------------------------------------------------\r\n\r\n// Put certain parameters in arrays\r\n$stopIds = str_replace(\' \',\'\',$stopIds);\r\n$stopIds = explode(\',\',$stopIds);\r\n$linkTextField = str_replace(\' \',\'\',$linkTextField);\r\n$linkTextField = explode(\',\',$linkTextField);\r\n$linkDescField = str_replace(\' \',\'\',$linkDescField);\r\n$linkDescField = explode(\',\',$linkDescField);\r\n$ignoreIds = str_replace(\' \',\'\',$ignoreIds);\r\n$ignoreIds = explode(\',\',$ignoreIds);\r\n\r\n/* $crumbs\r\n * Crumb elements are: id, parent, pagetitle, longtitle, menutitle, description,\r\n * published, hidemenu\r\n */\r\n$crumbs = array();\r\n$parent = $modx->documentObject[\'parent\'];\r\n$output = \'\';\r\n$maxCrumbs += ($showCurrentCrumb) ? 1 : 0;\r\n\r\n// Replace || in snippet parameters that accept them with =\r\n$crumbGap = str_replace(\'||\',\'=\',$crumbGap);\r\n\r\n// Curent crumb ----------------------------------------------------------------\r\n\r\n// Decide if current page is to be a crumb\r\nif ( $showCurrentCrumb )\r\n{\r\n    $crumbs[] = array(\r\n        \'id\' => $modx->documentObject[\'id\'],\r\n        \'parent\' => $modx->documentObject[\'parent\'],\r\n        \'pagetitle\' => $modx->documentObject[\'pagetitle\'],\r\n        \'longtitle\' => $modx->documentObject[\'longtitle\'],\r\n        \'menutitle\' => $modx->documentObject[\'menutitle\'],\r\n        \'description\' => $modx->documentObject[\'description\']);\r\n}\r\n\r\n// Intermediate crumbs ---------------------------------------------------------\r\n\r\n\r\n// Iterate through parents till we hit root or a reason to stop\r\n$loopSafety = 0;\r\nwhile ( $parent && $loopSafety < 1000 )\r\n{\r\n    // Get next crumb\r\n    $tempCrumb = $modx->getPageInfo($parent,0,\"id,parent,pagetitle,longtitle,menutitle,description,published,hidemenu\");\r\n\r\n    // Check for include conditions & add to crumbs\r\n    if (\r\n        $tempCrumb[\'published\'] &&\r\n        ( !$tempCrumb[\'hidemenu\'] || !$respectHidemenu ) &&\r\n        !in_array($tempCrumb[\'id\'],$ignoreIds)\r\n    )\r\n    {\r\n        // Add crumb\r\n        $crumbs[] = array(\r\n        \'id\' => $tempCrumb[\'id\'],\r\n        \'parent\' => $tempCrumb[\'parent\'],\r\n        \'pagetitle\' => $tempCrumb[\'pagetitle\'],\r\n        \'longtitle\' => $tempCrumb[\'longtitle\'],\r\n        \'menutitle\' => $tempCrumb[\'menutitle\'],\r\n        \'description\' => $tempCrumb[\'description\']);\r\n    }\r\n\r\n    // Check stop conditions\r\n    if (\r\n        in_array($tempCrumb[\'id\'],$stopIds) ||  // Is one of the stop IDs\r\n        !$tempCrumb[\'parent\'] || // At root\r\n        ( !$tempCrumb[\'published\'] && !$pathThruUnPub ) // Unpublished\r\n    )\r\n    {\r\n        // Halt making crumbs\r\n        break;\r\n    }\r\n\r\n    // Reset parent\r\n    $parent = $tempCrumb[\'parent\'];\r\n\r\n    // Increment loop safety\r\n    $loopSafety++;\r\n}\r\n\r\n// Home crumb ------------------------------------------------------------------\r\n\r\nif ( $showHomeCrumb && $homeCrumb = $modx->getPageInfo($homeId,0,\"id,parent,pagetitle,longtitle,menutitle,description,published,hidemenu\") )\r\n{\r\n    $crumbs[] = array(\r\n    \'id\' => $homeCrumb[\'id\'],\r\n    \'parent\' => $homeCrumb[\'parent\'],\r\n    \'pagetitle\' => $homeCrumb[\'pagetitle\'],\r\n    \'longtitle\' => $homeCrumb[\'longtitle\'],\r\n    \'menutitle\' => $homeCrumb[\'menutitle\'],\r\n    \'description\' => $homeCrumb[\'description\']);\r\n}\r\n\r\n\r\n// Process each crumb ----------------------------------------------------------\r\n$pretemplateCrumbs = array();\r\n\r\nforeach ( $crumbs as $c )\r\n{\r\n\r\n    // Skip if we\'ve exceeded our crumb limit but we\'re waiting to get to home\r\n    if ( count($pretemplateCrumbs) > $maxCrumbs && $c[\'id\'] != $homeId )\r\n    {\r\n        continue;\r\n    }\r\n\r\n    $text = \'\';\r\n    $title = \'\';\r\n    $pretemplateCrumb = \'\';\r\n\r\n    // Determine appropriate span/link text: home link specified\r\n    if ( $c[\'id\'] == $homeId && $homeCrumbTitle )\r\n    {\r\n        $text = $homeCrumbTitle;\r\n    }\r\n    else\r\n    // Determine appropriate span/link text: home link not specified\r\n    {\r\n        for ($i = 0; !$text && $i < count($linkTextField); $i++)\r\n        {\r\n            if ( $c[$linkTextField[$i]] )\r\n            {\r\n                $text = $c[$linkTextField[$i]];\r\n            }\r\n        }\r\n    }\r\n\r\n    // Determine link/span class(es)\r\n    if ( $c[\'id\'] == $homeId )\r\n    {\r\n        $crumbClass = $stylePrefix.\'homeCrumb\';\r\n    }\r\n    else if ( $modx->documentObject[\'id\'] == $c[\'id\'] )\r\n    {\r\n        $crumbClass = $stylePrefix.\'currentCrumb\';\r\n    }\r\n    else\r\n    {\r\n        $crumbClass = $stylePrefix.\'crumb\';\r\n    }\r\n\r\n    // Make link\r\n    if (\r\n        ( $c[\'id\'] != $modx->documentObject[\'id\'] && $showCrumbsAsLinks ) ||\r\n        ( $c[\'id\'] == $modx->documentObject[\'id\'] && $currentAsLink )\r\n    )\r\n    {\r\n        // Determine appropriate title for link: home link specified\r\n        if ( $c[\'id\'] == $homeId && $homeCrumbDescription )\r\n        {\r\n            $title = htmlspecialchars($homeCrumbDescription);\r\n        }\r\n        else\r\n        // Determine appropriate title for link: home link not specified\r\n        {\r\n            for ($i = 0; !$title && $i < count($linkDescField); $i++)\r\n            {\r\n                if ( $c[$linkDescField[$i]] )\r\n                {\r\n                    $title = htmlspecialchars($c[$linkDescField[$i]]);\r\n                }\r\n            }\r\n        }\r\n\r\n\r\n        $pretemplateCrumb .= \'<a class=\"\'.$crumbClass.\'\" href=\"\'.$modx->makeUrl($c[\'id\']).\'\" title=\"\'.$title.\'\">\'.$text.\'</a>\';\r\n    }\r\n    else\r\n    // Make a span instead of a link\r\n    {\r\n       $pretemplateCrumb .= \'<span class=\"\'.$crumbClass.\'\">\'.$text.\'</span>\';\r\n    }\r\n\r\n    // Add crumb to pretemplate crumb array\r\n    $pretemplateCrumbs[] = $pretemplateCrumb;\r\n\r\n    // If we have hit the crumb limit\r\n    if ( count($pretemplateCrumbs) == $maxCrumbs )\r\n    {\r\n        if ( count($crumbs) > ($maxCrumbs + (($showHomeCrumb) ? 1 : 0)) )\r\n        {\r\n            // Add gap\r\n            $pretemplateCrumbs[] = \'<span class=\"\'.$stylePrefix.\'hideCrumb\'.\'\">\'.$crumbGap.\'</span>\';\r\n        }\r\n\r\n        // Stop here if we\'re not looking for the home crumb\r\n        if ( !$showHomeCrumb )\r\n        {\r\n            break;\r\n        }\r\n    }\r\n}\r\n\r\n// Put in correct order for output\r\n$pretemplateCrumbs = array_reverse($pretemplateCrumbs);\r\n\r\n// Wrap first/last spans\r\n$pretemplateCrumbs[0] = str_replace(\r\n    array(\'[+firstCrumbClass+]\',\'[+firstCrumbSpanA+]\'),\r\n    array($stylePrefix.\'firstCrumb\',$pretemplateCrumbs[0]),\r\n    $templates[$templateSet][\'firstCrumbWrapper\']\r\n);\r\n$pretemplateCrumbs[(count($pretemplateCrumbs)-1)] = str_replace(\r\n    array(\'[+lastCrumbClass+]\',\'[+lastCrumbSpanA+]\'),\r\n    array($stylePrefix.\'lastCrumb\',$pretemplateCrumbs[(count($pretemplateCrumbs)-1)]),\r\n    $templates[$templateSet][\'lastCrumbWrapper\']\r\n);\r\n\r\n// Insert crumbs into crumb template\r\n$processedCrumbs = array();\r\nforeach ( $pretemplateCrumbs as $pc )\r\n{\r\n    $processedCrumbs[] = str_replace(\'[+crumb+]\',$pc,$templates[$templateSet][\'crumb\']);\r\n}\r\n\r\n// Combine crumbs together into one string with separator\r\n$processedCrumbs = implode($templates[$templateSet][\'separator\'],$processedCrumbs);\r\n\r\n// Put crumbs into crumb container template\r\n$container = str_replace(\r\n    array(\'[+crumbBoxClass+]\',\'[+crumbs+]\'),\r\n    array($stylePrefix.\'crumbBox\',$processedCrumbs),\r\n    $templates[$templateSet][\'crumbContainer\']\r\n    );\r\n\r\n// Return crumbs\r\nreturn $container;',0,'',''),(3,'Ditto','<strong>2.1.0</strong> Summarizes and lists pages to create blogs, catalogs, PR archives, bio listings and more',0,4,0,'/* Description:\n *      Aggregates documents to create blogs, article/news\n *      collections, and more,with full support for templating.\n * \n * Author: \n *      Mark Kaplan for MODx CMF\n*/\n\n//---Core Settings---------------------------------------------------- //\n\n$ditto_version = \"2.1.0\";\n    // Ditto version being executed\n\n$ditto_base = isset($ditto_base) ? $modx->config[\'base_path\'].$ditto_base : $modx->config[\'base_path\'].\"assets/snippets/ditto/\";\n/*\n    Param: ditto_base\n    \n    Purpose:\n    Location of Ditto files\n\n    Options:\n    Any valid folder location containing the Ditto source code with a trailing slash\n\n    Default:\n    [(base_path)]assets/snippets/ditto/\n*/\n$dittoID = (!isset($id)) ? \"\" : $id.\"_\";\n$GLOBALS[\"dittoID\"] = $dittoID;\n/*\n    Param: id\n\n    Purpose:\n    Unique ID for this Ditto instance for connection with other scripts (like Reflect) and unique URL parameters\n\n    Options:\n    Any combination of characters a-z, underscores, and numbers 0-9\n    \n    Note:\n    This is case sensitive\n\n    Default:\n    \"\" - blank\n*/      \n$language = (isset($language))? $language : $modx->config[\'manager_language\'];\nif (!file_exists($ditto_base.\"lang/\".$language.\".inc.php\")) {\n    $language =\"english\";\n}\n/*\n    Param: language\n\n    Purpose:\n    language for defaults, debug, and error messages\n\n    Options:\n    Any language name with a corresponding file in the &ditto_base/lang folder\n\n    Default:\n    \"english\"\n*/\n$format = (isset($format)) ? strtolower($format) : \"html\" ;\n/*\n    Param: format\n\n    Purpose:\n    Output format to use\n\n    Options:\n    - \"html\"\n    - \"json\"\n    - \"xml\"\n    - \"atom\"\n    - \"rss\"\n\n    Default:\n    \"html\"\n*/\n$config = (isset($config)) ? $config : \"default\";\n/*\n    Param: config\n\n    Purpose:\n    Load a custom configuration\n\n    Options:\n    \"default\" - default blank config file\n    CONFIG_NAME - Other configs installed in the configs folder or in any folder within the MODx base path via @FILE\n\n    Default:\n    \"default\"\n    \n    Related:\n    - <extenders>\n*/\n$debug = isset($debug)? $debug : 0;\n/*\n    Param: debug\n\n    Purpose:\n    Output debugging information\n\n    Options:\n    0 - off\n    1 - on\n    \n    Default:\n    0 - off\n    \n    Related:\n    - <debug>\n*/\n$phx = (isset($phx))? $phx : 1;\n/*\n    Param: phx\n\n    Purpose:\n    Use PHx formatting\n\n    Options:\n    0 - off\n    1 - on\n    \n    Default:\n    1 - on\n*/      \n$extenders = isset($extenders) ? explode(\",\",$extenders) : array();\n/*\n    Param: extenders\n\n    Purpose:\n    Load an extender which adds functionality to Ditto\n\n    Options:\n    Any extender in the extenders folder or in any folder within the MODx base path via @FILE\n\n    Default:\n    [NULL]\n\n    Related:\n    - <config>\n*/\n    // Variable: extenders\n    // Array that can be added to by configs or formats to load that extender\n    \n$placeholders = array();\n    // Variable: placeholders\n    // Initialize custom placeholders array for configs or extenders to add to\n\n$filters = array(\"custom\"=>array(),\"parsed\"=>array());\n    // Variable: filters\n    // Holds both the custom filters array for configs or extenders to add to \n    // and the parsed filters array. To add to this array, use the following format\n    // (code)\n    // $filters[\"parsed\"][] = array(\"name\" => array(\"source\"=>$source,\"value\"=>$value,\"mode\"=>$mode));\n    // $filters[\"custom\"][] = array(\"source\",\"callback_function\");\n\n$orderBy = array(\'parsed\'=>array(),\'custom\'=>array(),\'unparsed\'=>$orderBy);\n    // Variable: orderBy\n    // An array that holds all criteria to sort the result set by. \n    // Note that using a custom sort will disable all other sorting.\n    // (code)\n    // $orderBy[\"parsed\"][] = array(\"sortBy\",\"sortDir\");\n    // $orderBy[\"custom\"][] = array(\"sortBy\",\"callback_function\");\n        \n//---Includes-------------------------------------------------------- //\n\n$files = array (\n    \"base_language\" => $ditto_base.\"lang/english.inc.php\",\n    \"language\" => $ditto_base.\"lang/$language.inc.php\",\n    \"main_class\" => $ditto_base.\"classes/ditto.class.inc.php\",\n    \"template_class\" => $ditto_base.\"classes/template.class.inc.php\",\n    \"filter_class\" => $ditto_base.\"classes/filter.class.inc.php\",\n    \"format\" => $ditto_base.\"formats/$format.format.inc.php\",\n    \"config\" => $ditto_base.\"configs/default.config.php\",\n    \"user_config\" => (substr($config, 0, 5) != \"@FILE\") ? $ditto_base.\"configs/$config.config.php\" : $modx->config[\'base_path\'].trim(substr($config, 5))\n);\n\nif ($phx == 1) {\n    $files[\"prePHx_class\"] = $ditto_base.\"classes/phx.pre.class.inc.php\";\n}\nif (isset($randomize)) {\n    $files[\"randomize_class\"] = $ditto_base.\"classes/random.class.inc.php\";\n}\nif ($debug == 1) {\n    $files[\"modx_debug_class\"] = $ditto_base.\"debug/modxDebugConsole.class.php\";\n    $files[\"debug_class\"] = $ditto_base.\"classes/debug.class.inc.php\";\n    $files[\"debug_templates\"] = $ditto_base.\"debug/debug.templates.php\";\n}\n\n$files = array_unique($files);\nforeach ($files as $filename => $filevalue) {\n    if (file_exists($filevalue) && strpos($filename,\"class\")) {\n        include_once($filevalue);\n    } else if (file_exists($filevalue)) {\n        include($filevalue);\n    } else if ($filename == \"language\") {\n        $modx->logEvent(1, 3, \"Language file does not exist Please check: \" . $filevalue, \"Ditto \" . $ditto_version);\n        return \"Language file does not exist Please check: \" . $filevalue;\n    } else {\n        $modx->logEvent(1, 3, $filevalue . \" \" . $_lang[\'file_does_not_exist\'], \"Ditto \" . $ditto_version);\n        return $filevalue . \" \" . $_lang[\'file_does_not_exist\'];\n    }\n}\n\n//---Initiate Class-------------------------------------------------- //\nif (class_exists(\'ditto\')) {\n    $ditto = new ditto($dittoID,$format,$_lang,$dbg_templates);\n        // create a new Ditto instance in the specified format and language with the requested debug level\n} else {\n    $modx->logEvent(1,3,$_lang[\'invalid_class\'],\"Ditto \".$ditto_version);\n    return $_lang[\'invalid_class\'];\n}\n\n//---Initiate Extenders---------------------------------------------- //\nif (isset($tagData)) {\n    $extenders[] = \"tagging\";\n}\nif(count($extenders) > 0) {\n    $extenders = array_unique($extenders);\n    foreach ($extenders as $extender) {\n            if(substr($extender, 0, 5) != \"@FILE\") {\n                $extender_path = $ditto_base.\"extenders/\".$extender.\".extender.inc.php\";                \n            } else {\n                $extender_path = $modx->config[\'base_path\'].trim(substr($extender, 5));\n            }\n            \n            if (file_exists($extender_path)){\n                include($extender_path);\n            } else {\n                $modx->logEvent(1, 3, $extender . \" \" . $_lang[\'extender_does_not_exist\'], \"Ditto \".$ditto_version);\n                return $extender . \" \" . $_lang[\'extender_does_not_exist\'];\n            }       \n    }   \n}\n\n//---Parameters------------------------------------------------------- /*\nif (isset($startID)) {$parents = $startID;}\nif (isset($summarize)) {$display = $summarize;}\nif (isset($limit)) {$queryLimit = $limit;}\nif (isset($sortBy) || isset($sortDir) || is_null($orderBy[\'unparsed\'])) {\n    $sortDir = isset($sortDir) ? strtoupper($sortDir) : \'DESC\';\n    $sortBy = isset($sortBy) ? $sortBy : \"createdon\";\n    $orderBy[\'parsed\'][]=array($sortBy,$sortDir);\n}\n    // Allow backwards compatibility\n\n$idType = isset($documents) ? \"documents\" : \"parents\";\n    // Variable: idType\n    // type of IDs provided; can be either parents or documents\n\n$parents = isset($parents) ? $ditto->cleanIDs($parents) : $modx->documentIdentifier;\n\n/*\n    Param: parents\n\n    Purpose:\n    IDs of containers for Ditto to retrieve their children to &depth depth\n\n    Options:\n    Any valid MODx document marked as a container\n\n    Default:\n    Current MODx Document\n\n    Related:\n    - <documents>\n    - <depth>\n*/\n$documents = isset($documents) ? $ditto->cleanIDs($documents) : false;\n/*\n    Param: documents\n\n    Purpose:\n    IDs of documents for Ditto to retrieve\n\n    Options:\n    Any valid MODx document marked as a container\n\n    Default:\n    None\n\n    Related:\n    - <parents>\n*/\n\n$IDs = ($idType == \"parents\") ? $parents : $documents;\n    // Variable: IDs\n    // Internal variable which holds the set of IDs for Ditto to fetch\n\n$depth = isset($depth) ? $depth : 1;\n/*\n    Param: depth\n\n    Purpose:\n    Number of levels deep to retrieve documents\n\n    Options:\n    Any number greater than or equal to 1\n    0 - infinite depth\n\n    Default:\n    1\n\n    Related:\n    - <seeThruUnpub>\n*/\n$paginate = isset($paginate)? $paginate : 0;\n/*\n    Param: paginate\n\n    Purpose:\n    Paginate the results set into pages of &display length.\n    Use &total to limit the number of documents retreived.\n\n    Options:\n    0 - off\n    1 - on\n    \n    Default:\n    0 - off\n    \n    Related:\n    - <paginateAlwaysShowLinks>\n    - <paginateSplitterCharacter>\n    - <display>\n*/\n$dateSource = isset($dateSource) ? $dateSource : \"createdon\";\n/*\n    Param: dateSource\n\n    Purpose:\n    Source of the [+date+] placeholder\n\n    Options:\n    # - Any UNIX timestamp from MODx fields or TVs such as createdon, pub_date, or editedon\n    \n    Default:\n    \"createdon\"\n    \n    Related:\n    - <dateFormat>\n*/\n$dateFormat = isset($dateFormat)? $dateFormat : $_lang[\"dateFormat\"];\n/*\n    Param: dateFormat\n\n    Purpose:\n    Format the [+date+] placeholder in human readable form\n\n    Options:\n    Any PHP valid strftime option\n\n    Default:\n    [LANG]\n    \n    Related:\n    - <dateSource>\n*/\n$display = isset($display) ? $display : \"all\";\n/*\n    Param: display\n\n    Purpose:\n    Number of documents to display in the results\n\n    Options:\n    # - Any number\n    \"all\" - All documents found\n\n    Default:\n    \"all\"\n    \n    Related:\n    - <queryLimit>\n    - <total>\n*/\n$total = isset($total) ? $total : \"all\";\n/*\n    Param: total\n\n    Purpose:\n    Number of documents to retrieve\n    \n    Options:\n    # - Any number\n    \"all\" - All documents found\n\n    Default:\n    \"all\" - All documents found\n    \n    Related:\n    - <display>\n    - <queryLimit>\n*/\n$showPublishedOnly = isset($showPublishedOnly) ? $showPublishedOnly : 1;\n/*\n    Param: showPublishedOnly\n\n    Purpose:\n    Show only published documents\n\n    Options:\n    0 - show only unpublished documents\n    1 - show both published and unpublished documents\n    \n    Default:\n    1 - show both published and unpublished documents\n    \n    Related:\n    - <seeThruUnpub>\n    - <hideFolders>\n    - <showPublishedOnly>\n    - <where>\n*/\n$showInMenuOnly = isset($showInMenuOnly) ? $showInMenuOnly : 0;\n/*\n    Param: showInMenuOnly\n\n    Purpose:\n    Show only documents visible in the menu\n\n    Options:\n    0 - show all documents\n    1 - show only documents with the show in menu flag checked\n    \n    Default:\n    0 - show all documents\n    \n    Related:\n    - <seeThruUnpub>\n    - <hideFolders>\n    - <where>\n*/\n$hideFolders = isset($hideFolders)? $hideFolders : 0;\n/*\n    Param: hideFolders\n\n    Purpose:\n    Don\'t show folders in the returned results\n\n    Options:\n    0 - keep folders\n    1 - remove folders\n    \n    Default:\n    0 - keep folders\n    \n    Related:\n    - <seeThruUnpub>\n    - <showInMenuOnly>\n    - <where>\n*/\n$hidePrivate = isset($hidePrivate)? $hidePrivate : 1;\n/*\n    Param: hidePrivate\n\n    Purpose:\n    Don\'t show documents the guest or user does not have permission to see\n\n    Options:\n    0 - show private documents\n    1 - hide private documents\n    \n    Default:\n    1 - hide private documents\n    \n    Related:\n    - <seeThruUnpub>\n    - <showInMenuOnly>\n    - <where>\n*/\n$seeThruUnpub = (isset($seeThruUnpub))? $seeThruUnpub : 1 ;\n/*\n    Param: seeThruUnpub\n\n    Purpose:\n    See through unpublished folders to retrive their children\n    Used when depth is greater than 1\n\n    Options:\n    0 - off\n    1 - on\n    \n    Default:\n    0 - off\n    \n    Related:\n    - <hideFolders>\n    - <showInMenuOnly>\n    - <where>\n*/\n$queryLimit = (isset($queryLimit))? $queryLimit : 0;\n/*\n    Param: queryLimit\n\n    Purpose:\n    Number of documents to retrieve from the database, same as MySQL LIMIT\n\n    Options:\n    # - Any number\n    0 - automatic\n\n    Default:\n    0 - automatic\n    \n    Related:\n    - <where>\n*/\n$where = (isset($where))? $where : \"\";\n/*\n    Param: where\n\n    Purpose:\n    Custom MySQL WHERE statement\n\n    Options:\n    A valid MySQL WHERE statement using only document object items (no TVs)\n\n    Default:\n    [NULL]\n    \n    Related:\n    - <queryLimit>\n*/\n$noResults = isset($noResults)? $ditto->getParam($noResults,\"no_documents\") : $_lang[\'no_documents\'];\n/*\n    Param: noResults\n\n    Purpose:\n    Text or chunk to display when there are no results\n\n    Options:\n    Any valid chunk name or text\n\n    Default:\n    [LANG]\n*/\n$removeChunk = isset($removeChunk) ? explode(\",\",$removeChunk) : false;\n/*\n    Param: removeChunk\n\n    Purpose:\n    Name of chunks to be stripped from content separated by commas\n    - Commonly used to remove comments\n\n    Options:\n    Any valid chunkname that appears in the output\n\n    Default:\n    [NULL]\n*/\n$hiddenFields = isset($hiddenFields) ? explode(\",\",$hiddenFields) : false;\n/*\n    Param: hiddenFields\n\n    Purpose:\n    Allow Ditto to retrieve fields its template parser cannot handle such as nested placeholders and [*fields*]\n\n    Options:\n    Any valid MODx fieldnames or TVs comma separated\n\n    Default:\n    [NULL]\n*/\n$offset = isset($start) ? $start : 0;\n$start = (isset($_GET[$dittoID.\'start\'])) ? intval($_GET[$dittoID.\'start\']) : 0;\n/*\n    Param: start\n\n    Purpose:\n    Number of documents to skip in the results\n    \n    Options:\n    Any number\n\n    Default:\n    0\n*/\n$globalFilterDelimiter = isset($globalFilterDelimiter) ? $globalFilterDelimiter : \"|\";\n/*\n    Param: globalFilterDelimiter\n\n    Purpose:\n    Filter delimiter used to separate filters in the filter string\n    \n    Options:\n    Any character not used in the filters\n\n    Default:\n    \"|\"\n    \n    Related:\n    - <localFilterDelimiter>\n    - <filter>\n    - <parseFilters>\n*/\n    \n$localFilterDelimiter = isset($localFilterDelimiter) ? $localFilterDelimiter : \",\";\n/*\n    Param: localFilterDelimiter\n\n    Purpose:\n    Delimiter used to separate individual parameters within each filter string\n    \n    Options:\n    Any character not used in the filter itself\n\n    Default:\n    \",\"\n    \n    Related:\n    - <globalFilterDelimiter>\n    - <filter>\n    - <parseFilters>\n*/\n$filters[\"custom\"] = isset($cFilters) ? array_merge($filters[\"custom\"],$cFilters) : $filters[\"custom\"];\n$filters[\"parsed\"] = isset($parsedFilters) ? array_merge($filters[\"parsed\"],$parsedFilters) : $filters[\"parsed\"];\n    // handle 2.0.0 compatibility\n$filter = (isset($filter) || ($filters[\"custom\"] != false) || ($filters[\"parsed\"] != false)) ? $ditto->parseFilters($filter,$filters[\"custom\"],$filters[\"parsed\"],$globalFilterDelimiter,$localFilterDelimiter) : false;\n/*\n    Param: filter\n\n    Purpose:\n    Removes items not meeting a critera. Thus, if pagetitle == joe then it will be removed.\n    Use in the format field,criteria,mode with the comma being the local delimiter\n\n    *Mode* *Meaning*\n    \n    1 - !=\n    2 - ==\n    3 - <\n    4 - >\n    5 - <=\n    6 - >=\n    7 - Text not in field value\n    8 - Text in field value\n    9 - case insenstive version of #7\n    10 - case insenstive version of #8\n    11 - checks leading character of the field\n    \n    @EVAL:\n        @EVAL in filters works the same as it does in MODx exect it can only be used \n        with basic filtering, not custom filtering (tagging, etc). Make sure that\n        you return the value you wish Ditto to filter by and that the code is valid PHP.\n\n    Default:\n    [NULL]\n    \n    Related:\n    - <localFilterDelimiter>\n    - <globalFilterDelimiter>\n    - <parseFilters>\n*/\n$keywords = (isset($keywords))? $keywords : 0;\n/*  \n    Param: keywords\n    \n    Purpose: \n    Enable fetching of associated keywords for each document\n    Can be used as [+keywords+] or as a tagData source\n    \n    Options:\n    0 - off\n    1 - on\n    \n    Default:\n    0 - off\n*/\n\n$randomize = (isset($randomize))? $randomize : 0;\n/*  \n    Param: randomize\n    \n    Purpose: \n    Randomize the order of the output\n    \n    Options:\n    0 - off\n    1 - on\n    Any MODx field or TV for weighted random\n    \n    Default:\n    0 - off\n*/\n$save = (isset($save))? $save : 0;\n/*\n    Param: save\n\n    Purpose:\n    Saves the ditto object and results set to placeholders\n    for use by other snippets\n\n    Options:\n    0 - off; returns output\n    1 - remaining; returns output\n    2 - all;\n    3 - all; returns ph only\n\n    Default:\n        0 - off; returns output\n*/\n$templates = array(\n    \"default\" => \"@CODE\".$_lang[\'default_template\'],\n    \"base\" => $tpl,\n    \"alt\" => $tplAlt,\n    \"first\" => $tplFirst,\n    \"last\" => $tplLast,\n    \"current\" => $tplCurrentDocument\n);\n/*\n    Param: tpl\n\n    Purpose:\n    User defined chunk to format the documents \n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE\n    - File via @FILE\n\n    Default:\n    [LANG]\n*/\n/*\n    Param: tplAlt\n\n    Purpose:\n    User defined chunk to format every other document\n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE\n    - File via @FILE\n\n    Default:\n    &tpl\n*/\n/*\n    Param: tplFirst\n\n    Purpose:\n    User defined chunk to format the first document \n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE\n    - File via @FILE\n\n    Default:\n    &tpl\n*/\n/*\n    Param: tplLast\n\n    Purpose:\n    User defined chunk to format the last document \n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE\n    - File via @FILE\n\n    Default:\n    &tpl\n*/\n/*\n    Param: tplCurrentDocument\n\n    Purpose:\n    User defined chunk to format the current document\n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE\n    - File via @FILE\n\n    Default:\n    &tpl\n*/\n$orderBy = $ditto->parseOrderBy($orderBy,$randomize);\n/*\n    Param: orderBy\n\n    Purpose:\n    Sort the result set\n\n    Options:\n    Any valid MySQL style orderBy statement\n\n    Default:\n    createdon DESC\n*/\n//-------------------------------------------------------------------- */\n$templates = $ditto->template->process($templates);\n    // parse the templates for TV\'s and store them for later use\n\n$ditto->setDisplayFields($ditto->template->fields,$hiddenFields);\n    // parse hidden fields\n    \n$ditto->parseFields($placeholders,$seeThruUnpub,$dateSource,$randomize);\n    // parse the fields into the field array\n    \n$documentIDs = $ditto->determineIDs($IDs, $idType, $ditto->fields[\"backend\"][\"tv\"], $orderBy, $depth, $showPublishedOnly, $seeThruUnpub, $hideFolders, $hidePrivate, $showInMenuOnly, $where, $keywords, $dateSource, $queryLimit, $display, $filter,$paginate, $randomize);\n    // retrieves a list of document IDs that meet the criteria and populates the $resources array with them\n$count = count($documentIDs);\n    // count the number of documents to be retrieved\n$count = $count-$offset;\n    // handle the offset\n\nif ($count > 0) {\n    // if documents are returned continue with execution\n    \n    $total = ($total == \"all\") ? $count : min($total,$count);\n        // set total equal to count if all documents are to be included\n    \n    $display = ($display == \"all\") ? min($count,$total) : min($display,$total);\n        // allow show to use all option\n\n    $stop = ($save != \"1\") ? min($total-$start,$display) : min($count,$total);\n        // set initial stop count\n\n    if($paginate == 1) {\n        $paginateAlwaysShowLinks = isset($paginateAlwaysShowLinks)? $paginateAlwaysShowLinks : 0;\n        /*\n            Param: paginateAlwaysShowLinks\n\n            Purpose:\n            Determine whether or not to always show previous next links\n\n            Options:\n            0 - off\n            1 - on\n\n            Default:\n            0 - off\n        \n            Related:\n            - <paginate>\n            - <paginateSplitterCharacter>\n        */\n        $paginateSplitterCharacter = isset($paginateSplitterCharacter)? $paginateSplitterCharacter : $_lang[\'button_splitter\'];\n        /*\n            Param: paginateSplitterCharacter\n\n            Purpose:\n            Splitter to use if always show is disabled\n\n            Options:\n            Any valid character\n\n            Default:\n            [LANG]\n        \n            Related:\n            - <paginate>\n            - <paginateSplitterCharacter>\n        */\n        $tplPaginatePrevious = isset($tplPaginatePrevious)? $ditto->template->fetch($tplPaginatePrevious) : \"<a href=\'[+url+]\' class=\'ditto_previous_link\'>[+lang:previous+]</a>\";\n        /*\n            Param: tplPaginatePrevious\n\n            Purpose:\n            Template for the previous link\n\n            Options:\n            - Any valid chunk name\n            - Code via @CODE\n            - File via @FILE\n\n            Placeholders:\n            url - URL for the previous link\n            lang:previous - value of \'prev\' from the language file\n        \n            Related:\n            - <tplPaginateNext>\n            - <paginateSplitterCharacter>\n        */\n        $tplPaginateNext = isset($tplPaginateNext)? $ditto->template->fetch($tplPaginateNext) : \"<a href=\'[+url+]\' class=\'ditto_next_link\'>[+lang:next+]</a>\";\n        /*\n            Param: tplPaginateNext\n\n            Purpose:\n            Template for the next link\n\n            Options:\n            - Any valid chunk name\n            - Code via @CODE\n            - File via @FILE\n\n            Placeholders:\n            url - URL for the next link\n            lang:next - value of \'next\' from the language file\n        \n            Related:\n            - <tplPaginatePrevious>\n            - <paginateSplitterCharacter>\n        */\n        $tplPaginateNextOff = isset($tplPaginateNextOff)? $ditto->template->fetch($tplPaginateNextOff) : \"<span class=\'ditto_next_off ditto_off\'>[+lang:next+]</span>\";\n        /*\n            Param: tplPaginateNextOff\n\n            Purpose:\n            Template for the inside of the next link\n\n            Options:\n            - Any valid chunk name\n            - Code via @CODE\n            - File via @FILE\n\n            Placeholders:\n            lang:next - value of \'next\' from the language file\n        \n            Related:\n            - <tplPaginatePrevious>\n            - <paginateSplitterCharacter>\n        */\n        $tplPaginatePreviousOff = isset($tplPaginatePreviousOff)? $ditto->template->fetch($tplPaginatePreviousOff) : \"<span class=\'ditto_previous_off ditto_off\'>[+lang:previous+]</span>\";\n        /*\n            Param: tplPaginatePreviousOff\n\n            Purpose:\n            Template for the previous link when it is off\n\n            Options:\n            - Any valid chunk name\n            - Code via @CODE\n            - File via @FILE\n\n            Placeholders:\n            lang:previous - value of \'prev\' from the language file\n    \n            Related:\n            - <tplPaginatePrevious>\n            - <paginateSplitterCharacter>\n        */\n        $tplPaginatePage = isset($tplPaginatePage)? $ditto->template->fetch($tplPaginatePage) : \"<a class=\'ditto_page\' href=\'[+url+]\'>[+page+]</a>\";\n        /*\n            Param: tplPaginatePage\n\n            Purpose:\n            Template for the page link\n\n            Options:\n            - Any valid chunk name\n            - Code via @CODE\n            - File via @FILE\n\n            Placeholders:\n            url - url for the page\n            page - number of the page\n    \n            Related:\n            - <tplPaginatePrevious>\n            - <paginateSplitterCharacter>\n        */\n        $tplPaginateCurrentPage = isset($tplPaginateCurrentPage)? $ditto->template->fetch($tplPaginateCurrentPage) : \"<span class=\'ditto_currentpage\'>[+page+]</span>\";\n        /*\n            Param: tplPaginateCurrentPage\n\n            Purpose:\n            Template for the current page link\n\n            Options:\n            - Any valid chunk name\n            - Code via @CODE\n            - File via @FILE\n\n            Placeholders:\n            page - number of the page\n    \n            Related:\n            - <tplPaginatePrevious>\n            - <paginateSplitterCharacter>\n        */\n        \n        $ditto->paginate($start, $stop, $total, $display, $tplPaginateNext, $tplPaginatePrevious, $tplPaginateNextOff, $tplPaginatePreviousOff, $tplPaginatePage, $tplPaginateCurrentPage, $paginateAlwaysShowLinks, $paginateSplitterCharacter);\n            // generate the pagination placeholders\n    }\n\n    $dbFields = $ditto->fields[\"display\"][\"db\"];\n        // get the database fields\n    $TVs = $ditto->fields[\"display\"][\"tv\"];\n        // get the TVs\n    \n    switch($orderBy[\'parsed\'][0][1]) {\n        case \"DESC\":\n            $stop = ($ditto->prefetch === false) ? $stop + $start + $offset : $stop + $offset; \n            $start += $offset;\n        break;\n        case \"ASC\":\n            $start += $offset;\n            $stop += $start;\n        break;\n    }\n\n    if ($ditto->prefetch !== false) {\n        $documentIDs = array_slice($documentIDs,$start,$stop);\n            // set the document IDs equal to the trimmed array\n        $dbFields = array_diff($dbFields,$ditto->prefetch[\"fields\"][\"db\"]);\n            // calculate the difference between the database fields and those already prefetched\n        $dbFields[] = \"id\";\n            // append id to the db fields array\n        $TVs = array_diff($TVs,$ditto->prefetch[\"fields\"][\"tv\"]);\n            // calculate the difference between the tv fields and those already prefetched\n        $start = 0;\n        $stop = min($display,($queryLimit != 0) ? $queryLimit : $display,count($documentIDs));\n    } else {\n        $queryLimit = ($queryLimit == 0) ? \"\" : $queryLimit;\n    }\n    \n    $resource = $ditto->getDocuments($documentIDs, $dbFields, $TVs, $orderBy, $showPublishedOnly, 0, $hidePrivate, $where, $queryLimit, $keywords, $randomize, $dateSource);\n        // retrieves documents\n    $output = $header;\n        // initialize the output variable and send the header\n\n    if ($resource) {\n        if ($randomize != \"0\" && $randomize != \"1\") {\n            $resource = $ditto->weightedRandom($resource,$randomize,$stop);\n                // randomize the documents\n        }\n        \n        $resource = array_values($resource);\n\n        for ($x=$start;$x<$stop;$x++) {\n            $template = $ditto->template->determine($templates,$x,0,$stop,$resource[$x][\"id\"]);\n                // choose the template to use and set the code of that template to the template variable\n            $renderedOutput = $ditto->render($resource[$x], $template, $removeChunk, $dateSource, $dateFormat, $placeholders,$phx,abs($start-$x));\n                // render the output using the correct template, in the correct format and language\n            $modx->setPlaceholder($dittoID.\"item[\".abs($start-$x).\"]\",$renderedOutput);\n            /*\n                Placeholder: item[x]\n\n                Content:\n                Individual items rendered output\n            */\n            $output .= $renderedOutput;\n                // send the rendered output to the buffer\n        }\n    } else {\n        $output .= $ditto->noResults($noResults,$paginate);\n            // if no documents are found return a no documents found string\n    }\n    $output .= $footer;\n        // send the footer\n\n    // ---------------------------------------------------\n    // Save Object\n    // ---------------------------------------------------\n\n    if($save) {\n        $modx->setPlaceholder($dittoID.\"ditto_object\", $ditto);\n        $modx->setPlaceholder($dittoID.\"ditto_resource\", ($save == \"1\") ? array_slice($resource,$display) : $resource);\n    }\n} else {\n    $output = $header.$ditto->noResults($noResults,$paginate).$footer;\n}\n// ---------------------------------------------------\n// Handle Debugging\n// ---------------------------------------------------\n\nif ($debug == 1) {\n    $ditto_params =& $modx->event_params;\n    if (!isset($_GET[\"ditto_\".$dittoID.\"debug\"])) {\n    $_SESSION[\"ditto_debug_$dittoID\"] = $ditto->debug->render_popup($ditto, $ditto_base, $ditto_version, $ditto_params, $documentIDs, array(\"db\"=>$dbFields,\"tv\"=>$TVs), $display, $templates, $orderBy, $start, $stop, $total,$filter,$resource);\n    }\n    if (isset($_GET[\"ditto_\".$dittoID.\"debug\"])) {\n        switch ($_GET[\"ditto_\".$dittoID.\"debug\"]) {\n            case \"open\" :\n                exit($_SESSION[\"ditto_debug_$dittoID\"]);\n            break;\n            case \"save\" :\n                $ditto->debug->save($_SESSION[\"ditto_debug_$dittoID\"],\"ditto\".strtolower($ditto_version).\"_debug_doc\".$modx->documentIdentifier.\".html\");\n            break;\n        }\n    } else {\n        $output = $ditto->debug->render_link($dittoID,$ditto_base).$output;\n    }\n}\n\nreturn ($save != 3) ? $output : \"\";',0,'',''),(4,'eForm','<strong>1.4.4.6</strong> Robust form parser/processor with validation, multiple sending options, chunk/page support for forms and reports, and file uploads',0,5,0,'# eForm 1.4.4.6 - Electronic Form Snippet\n# Original created by Raymond Irving 15-Dec-2004.\n# Version 1.3+ extended by Jelle Jager (TobyL) September 2006\n# -----------------------------------------------------\n# Captcha image support - thanks to Djamoer\n# Multi checkbox, radio, select support - thanks to Djamoer\n# Form Parser and extened validation - by Jelle Jager\n#\n# see eform/docs/eform.htm for history, usage and examples\n#\n\n# Set Snippet Paths\n$snipFolder = isset($snipFolder)?$snipFolder:\'eform\';\n$snipPath = $modx->config[\"base_path\"].\'assets/snippets/\'.$snipFolder.\'/\';\n\n\n# check if inside manager\nif ($modx->isBackend()) {\nreturn \'\'; # don\'t go any further when inside manager\n}\n\n//tidying up some casing errors in parameters\nif(isset($eformOnValidate)) $eFormOnValidate = $eformOnValidate;\nif(isset($eformOnBeforeMailSent)) $eFormOnBeforeMailSent = $eformOnBeforeMailSent;\nif(isset($eformOnMailSent)) $eFormOnMailSent = $eformOnMailSent;\nif(isset($eformOnValidate)) $eFormOnValidate = $eformOnValidate;\nif(isset($eformOnBeforeFormMerge)) $eFormOnBeforeFormMerge = $eformOnBeforeFormMerge;\nif(isset($eformOnBeforeFormParse)) $eFormOnBeforeFormParse = $eformOnBeforeFormParse;\n//for sottwell :)\nif(isset($eFormCSS)) $cssStyle = $eFormCSS;\n\n# Snippet customize settings\n$params = array (\n   // Snippet Path\n   \'snipPath\' => $snipPath, //includes $snipFolder\n	 \'snipFolder\' => $snipFolder,\n\n// eForm Params\n   \'vericode\' => isset($vericode)? $vericode:\"\",\n   \'formid\' => isset($formid)? $formid:\"\",\n   \'from\' => isset($from)? $from:$modx->config[\'emailsender\'],\n   \'fromname\' => isset($fromname)? $fromname:$modx->config[\'site_name\'],\n   \'to\' => isset($to)? $to:$modx->config[\'emailsender\'],\n   \'cc\' => isset($cc)? $cc:\"\",\n   \'bcc\' => isset($bcc)? $bcc:\"\",\n   \'subject\' => isset($subject)? $subject:\"\",\n   \'ccsender\' => isset($ccsender)?$ccsender:0,\n   \'sendirect\' => isset($sendirect)? $sendirect:0,\n   \'mselector\' => isset($mailselector)? $mailselector:0,\n   \'mobile\' => isset($mobile)? $mobile:\'\',\n   \'mobiletext\' => isset($mobiletext)? $mobiletext:\'\',\n   \'autosender\' => isset($autosender)? $autosender:$from,\n   \'autotext\' => isset($automessage)? $automessage:\"\",\n   \'category\' => isset($category)? $category:0,\n   \'keywords\' => isset($keywords)? $keywords:\"\",\n   \'gid\' => isset($gotoid)? $gotoid:$modx->documentIdentifier,\n   \'noemail\' => isset($noemail)? ($noemail):false,\n   \'saveform\' => isset($saveform)? ($saveform? true:false):true,\n   \'tpl\' => isset($tpl)? $tpl:\"\",\n   \'report\' => isset($report)? $report:\"\",\n   \'allowhtml\' => isset($allowhtml)? $allowhtml:0,\n   //Added by JJ\n   \'replyto\' => isset($replyto)? $replyto:\"\",\n   \'language\' => isset($language)? $language:$modx->config[\'manager_language\'],\n   \'thankyou\' => isset($thankyou)? $thankyou:\"\",\n   \'isDebug\' => isset($debug)? $debug:0,\n   \'reportAbuse\' => isset($reportAbuse)? $reportAbuse:false,\n   \'disclaimer\' => isset($disclaimer)?$disclaimer:\'\',\n   \'sendAsHtml\' => isset($sendAsHtml)?$sendAsHtml:false,\n   \'sendAsText\' => isset($sendAsText)?$sendAsText:false,\n   \'sessionVars\' => isset($sessionVars)?$sessionVars:false,\n   \'postOverides\' => isset($postOverides)?$postOverides:0,\n   \'eFormOnBeforeMailSent\' => isset($eFormOnBeforeMailSent)?$eFormOnBeforeMailSent:\'\',\n   \'eFormOnMailSent\' => isset($eFormOnMailSent)?$eFormOnMailSent:\'\',\n   \'eFormOnValidate\' => isset($eFormOnValidate)?$eFormOnValidate:\'\',\n   \'eFormOnBeforeFormMerge\' => isset($eFormOnBeforeFormMerge)?$eFormOnBeforeFormMerge:\'\',\n   \'eFormOnBeforeFormParse\' => isset($eFormOnBeforeFormParse)?$eFormOnBeforeFormParse:\'\',\n   \'cssStyle\' => isset($cssStyle)?$cssStyle:\'\',\n   \'jScript\' => isset($jScript)?$jScript:\'\',\n   \'submitLimit\' => (isset($submitLimit) &&  is_numeric($submitLimit))?$submitLimit*60:0,\n   \'protectSubmit\' => isset($protectSubmit)?$protectSubmit:1,\n   \'requiredClass\' => isset($requiredClass)?$requiredClass:\"required\",\n   \'invalidClass\' => isset($invalidClass)?$invalidClass:\"invalid\",\n   \'runSnippet\' => ( isset($runSnippet) && !is_numeric($runSnippet) )?$runSnippet:\'\',\n   \'autoSenderName\' => isset($autoSenderName)?$autoSenderName:\'\',\n   \'version\' => \'1.4.4\'\n);\n\n// pixelchutes PHx workaround\nforeach( $params as $key=>$val ) $params[ $key ] = str_replace( array(\'((\',\'))\'), array(\'[+\',\'+]\'), $val );\n\n# Start processing\n\ninclude_once ($snipPath.\"eform.inc.php\");\n\n$output = eForm($modx,$params);\n\n# Return\nreturn $output;',0,'',''),(5,'FirstChildRedirect','<strong>1.0</strong> Automatically redirects to the first child of a Container Resource',0,3,0,'/*\n * @name FirstChildRedirect\n * @author Jason Coward <jason@opengeek.com>\n * @modified-by Ryan Thrash <ryan@vertexworks.com>\n * @license Public Domain\n * @version 1.0\n * \n * This snippet redirects to the first child document of a folder in which this\n * snippet is included within the content (e.g. [!FirstChildRedirect!]).  This\n * allows MODx folders to emulate the behavior of real folders since MODx\n * usually treats folders as actual documents with their own content.\n * \n * Modified to make Doc ID a required parameter... now defaults to the current \n * Page/Folder you call the snippet from.\n * \n * &docid=`12` \n * Use the docid parameter to have this snippet redirect to the\n * first child document of the specified document.\n */\n\n$docid = (isset($docid))? $docid: $modx->documentIdentifier;\n\n$children= $modx->getActiveChildren($docid, \'menuindex\', \'ASC\');\nif (!$children === false) {\n    $firstChild= $children[0];\n    $firstChildUrl= $modx->makeUrl($firstChild[\'id\']);\n} else {\n    $firstChildUrl= $modx->makeUrl($modx->config[\'site_start\']);\n}\nreturn $modx->sendRedirect($firstChildUrl);\n',0,'',''),(6,'Jot','<strong>1.1.4</strong> User comments with moderation and email subscription',0,4,0,'/*####\n#\n# Author: Armand \"bS\" Pondman (apondman@zerobarrier.nl)\n#\n# Latest Version: http://modxcms.com/Jot-998.html\n# Jot Demo Site: http://projects.zerobarrier.nl/modx/\n# Documentation: http://wiki.modxcms.com/index.php/Jot (wiki)\n#\n####*/\n\n$jotPath = $modx->config[\'base_path\'] . \'assets/snippets/jot/\';\ninclude_once($jotPath.\'jot.class.inc.php\');\n\n$Jot = new CJot;\n$Jot->VersionCheck(\"1.1.4\");\n$Jot->Set(\"path\",$jotPath);\n$Jot->Set(\"action\", $action);\n$Jot->Set(\"postdelay\", $postdelay);\n$Jot->Set(\"docid\", $docid);\n$Jot->Set(\"tagid\", $tagid);\n$Jot->Set(\"subscribe\", $subscribe);\n$Jot->Set(\"moderated\", $moderated);\n$Jot->Set(\"captcha\", $captcha);\n$Jot->Set(\"badwords\", $badwords);\n$Jot->Set(\"bw\", $bw);\n$Jot->Set(\"sortby\", $sortby);\n$Jot->Set(\"numdir\", $numdir);\n$Jot->Set(\"customfields\", $customfields);\n$Jot->Set(\"guestname\", $guestname);\n$Jot->Set(\"canpost\", $canpost);\n$Jot->Set(\"canview\", $canview);\n$Jot->Set(\"canedit\", $canedit);\n$Jot->Set(\"canmoderate\", $canmoderate);\n$Jot->Set(\"trusted\", $trusted);\n$Jot->Set(\"pagination\", $pagination);\n$Jot->Set(\"placeholders\", $placeholders);\n$Jot->Set(\"subjectSubscribe\", $subjectSubscribe);\n$Jot->Set(\"subjectModerate\", $subjectModerate);\n$Jot->Set(\"subjectAuthor\", $subjectAuthor);\n$Jot->Set(\"notify\", $notify);\n$Jot->Set(\"notifyAuthor\", $notifyAuthor);\n$Jot->Set(\"validate\", $validate);\n$Jot->Set(\"title\", $title);\n$Jot->Set(\"authorid\", $authorid);\n$Jot->Set(\"css\", $css);\n$Jot->Set(\"cssFile\", $cssFile);\n$Jot->Set(\"cssRowAlt\", $cssRowAlt);\n$Jot->Set(\"cssRowMe\", $cssRowMe);\n$Jot->Set(\"cssRowAuthor\", $cssRowAuthor);\n$Jot->Set(\"tplForm\", $tplForm);\n$Jot->Set(\"tplComments\", $tplComments);\n$Jot->Set(\"tplModerate\", $tplModerate);\n$Jot->Set(\"tplNav\", $tplNav);\n$Jot->Set(\"tplNotify\", $tplNotify);\n$Jot->Set(\"tplNotifyModerator\", $tplNotifyModerator);\n$Jot->Set(\"tplNotifyAuthor\", $tplNotifyAuthor);\n$Jot->Set(\"tplSubscribe\", $tplSubscribe);\n$Jot->Set(\"debug\", $debug);\n$Jot->Set(\"output\", $output);\nreturn $Jot->Run();',0,'',''),(7,'ListIndexer','<strong>1.0.1</strong> A flexible way to show the most recent Resources and other Resource lists',0,3,0,'// added in 1.0.1: hidePrivate (hide items from unauthorized users)\n//\n// Derived from ListIndex 0.6j by jaredc@honeydewdesign.com\n// Now supports Show In Menu\n//\n// This snippet was designed to be a VERY flexible way\n// of showing what has been recently added. You can use\n// this snippet to show news from one folder, or what has\n// been recently added site wide. You can even show what\'s\n// new in a \'section\' (everything under a defined folder)!\n\n// Configuration Settings\n\n   // Set the following snippet defaults the way you would normally\n   // use this snippet, then use snippet variables in other situations\n   // to override the default behaviors.\n\n   // GENERAL OPTIONS\n\n   // $rootFolder [ NULL | string (comma separated page id\'s) ]\n   // Decide which folder to pull recent documents from.\n   // If you want to specify a few folders, comma separate them.\n   // The default NULL will set current page as root. Using 0\n   // would search site wide. Can be set with snippet parameter\n   // $LIn_root like:\n   // [[ListIndexer?LIn_root=3,6,88]] \n   $rootFolder = NULL;\n\n   // $descendentDepth [ int ]\n   // How many levels below the root folder(s) do you want to\n   // include? Can be overridden in snippet call with LIn_depth:\n   // [[ListIndexer?LIn_depth=2]]\n   // Uncomment one of these common two or create your own:\n   // $descendentDepth = 1; // just children of root folder(s)\n   $descendentDepth = 0; // all decendents of root folder(s)\n\n   // $seeThruUnpub [ true | false ]\n   // When using descendents, do you want to consider files below\n   // an unpublished (hidden) folder? Usually no. But you decide.\n   // Snippet parameter: LIn_seeThru\n   // [[ListIndexer?LIn_seeThru=1]]\n   $seeThruUnpub = false;\n\n   // $seeShowInMenu [ true | false ]\n   // When using descendents, do you want to consider files flagged\n   // to be hidden from the menus? Usually no. But you decide.\n   // Snippet parameter: LIn_seeShowInMenu\n   // [[ListIndexer?LIn_seeShowInMenu=1]]\n   $seeShowInMenu = false;\n   \n   // $hidePrivate [ true | false ]\n   // Hide items from users that don\'t have appropriate\n   // rights to view. Usually true. But you decide.\n   // Snippet parameter: LIn_hidePrivate\n   // [[ListIndexer?LIn_hidePrivate=0]]\n   $hidePrivate = true;\n\n   // $mode [ \'short\' | \'full\' ]\n   // Defines whether this list should be a full, paged\n   // list of all documents, or a short list of the most\n   // recent few (how many will be defined next). Can be\n   // overridden in snippet call with $LIn_mode:\n   // [[ListIndexer?LIn_mode=full]]\n   $mode = \'short\';\n   \n   // $sortBy [ \'alpha\' | \'date\' | \'menuindex\' ]\n   // The default date will sort by most recent items first, but\n   // by using the \'alpha\' option, and using full mode, you could\n   // use this to create an index, or directory.\n   // Settable with snippet call $LIn_sort:\n   // [[ListIndexer?LIn_sort=alpha]]\n   $sortBy = \'date\';\n   \n   // $sortDir [ \'ASC\' | \'DESC\' ]\n   // Sort direction ascending or descending. Is applied to whatever $sortBy\n   // field you have chosen above. If left blank, menuindex and alpha will sort\n   // ASC and date DESC.\n   // $LIn_dir in snippet call:\n   // [[ListIndexer?LIn_dir=ASC&LIn_sortBy=menuindex]]\n   $sortDir = \'\';\n\n   // WHAT TO DISPLAY\n\n   // $defaultTitle [ string ]\n   // If you want a default title for your list\n   // you can declare it here. Or use an empty\n   // string to leave this off. This can be overridden\n   // in the snippet call with the variable $LIn_title:\n   // [[ListIndexer?LIn_title=Some new title]]\n   $defaultTitle = \'\';\n\n   // $shortDesc [ true | false ]\n   // Show the description on the short list, or not. Snippet\n   // parameter $LIn_sDesc:\n   // [[ListIndexer?LIn_sDesc=0]]\n   $shortDesc = true;\n\n   // $fullDesc [ true | false ]\n   // Show the description on the full list, or not. Snippet\n   // parameter $LIn_fDesc:\n   // [[ListIndexer?LIn_fDesc=0]]\n   $fullDesc = true;\n\n   // $linkToIndex [ int ]\n   // If you have a page set up as an \'index\' for all the \n   // documents in this list, you can link to it by specifying \n   // its id- can also be set in snippet call with LIn_link:\n   // [[ListIndexer?LIn_link=8]]\n   // The default 0 will eliminate this link\n   $linkToIndex = 0;\n\n   // $indexText [ string ]\n   // If you want a link to an index (probably a page running this\n   // snippet in \"full\" mode), you can declare what you want that\n   // link to say here. Or in the snippet call with LIn_indexText:\n   // [[ListIndexer?LIn_indexText=Financial News Index]]\n   $indexText = \'Index\';\n\n   // $showCreationDate [ true | false ]\n   // Decide to include date of creation in output or not. From\n   // snippet call $LIn_showDate use 1 (true) or 0 (false)\n   // [[ListIndexer?LIn_showDate=1]]\n   $showCreationDate = true;\n\n   // $dateFormat [ string ]\n   // Used to define how date will be displayed (if using date)\n   // Y = 4 digit year     y = 2 digit year\n   // M = Jan - Dec        m = 01 - 12\n   // D = Sun - Sat        d = 01 -31\n   // Other standard PHP characters may be used\n   $dateFormat = \'Y.m.d\';\n\n   // $shortQty [ int ]\n   // Number of entries to list in the short list. Can be\n   // overridden in snippet call with $LIn_sQty:\n   //[[ListIndexer?LIn_sQty=3]]\n   $shortQty = 3;\n\n   // PAGING\n\n   // $fullQty [ int ]\n   // Number of entries PER PAGE to list in the full list\n   // Can be overridden in snippet call with $LIn_fQty:\n   // [[ListIndexer?LIn_fQty=20]]\n   // To show all set to 0 here or in snippet call\n   $fullQty = 10;\n   \n   // $pageSeparator [ string ]\n   // What you want your page number links to be separated by.\n   // You NEED to include spaces if you want them. They are NOT\n   // created automatically to facilitate styling ability.\n   // For instance, \" | \" will render links like:\n   // 1 | 2 | 3 | 4\n   $pageSeparator = \" | \";\n   \n   // $pgPosition [ \'top\' | \'bottom\' | \'both\']\n   // Pick where you want your pagination links to appear.\n   $pgPosition = \'both\';\n\n   // PERFORMANCE\n\n   // $useFastUrls [ true | false ]\n   // IMPORTANT- using fast urls will reduce database queries\n   // and improve performance WHEN IN FULL MODE ONLY and \n   // should NOT be used when multiple instances of this snippet\n   // appear on the same page. With snippet call LIn_fast use 1\n   // (true) or 0 (false)\n   // [[ListIndexer?LIn_fast=0]]\n   $useFastUrls = false;\n\n   // $newLinesForLists [ true | false ]\n   // Depending on how you want to style your list, you may\n   // or may not want your <li>s on new lines. Generally, if you\n   // are displaying then inline (horizontal, you do not want new\n   // lines, but standard vertical block styling you do. This is\n   // for IE, real browsers don\'t care.\n   $newLinesForLists = true;\n\n// Styles\n//\n// The following are the styles included in this snippet. It is up\n// to you to include these styles in your stylesheet to get them to\n// look the way you want.\n\n   // div.LIn_title {}          List title div\n   // ul.LIn_fullMode {}        UL class\n   // ul.LIn_shortMode {}       UL class\n   // span.LIn_date {}          Span surrounding pub/created date\n   // span.LIn_desc {}          Span surrounding description\n   // div.LIn_pagination        Div surrounding pagination links\n   // span.LIn_currentPage {}   Span surrounding current page of\n   //                           pagination (which wouldn\'t be css-able\n   //                           by virtue of its <a> tag)\n\n\n// **********************************************************************\n// END CONFIG SETTINGS\n// THE REST SHOULD TAKE CARE OF ITSELF\n// **********************************************************************\n\n// Take care of IE list issue\n$ie = ($newLinesForLists)? \"\\n\" : \'\' ;\n\n// Use snippet call defined variables if set\n$activeTitle = (isset($LIn_title))? $LIn_title : $defaultTitle ;\n$mode = (isset($LIn_mode))? $LIn_mode : $mode ;\n$descendentDepth = (isset($LIn_depth))? $LIn_depth : $descendentDepth ;\n$seeThruUnpub = (isset($LIn_seeThru))? $LIn_seeThru : $seeThruUnpub ;\n$seeShowInMenu = (isset($LIn_seeShowInMenu))? $LIn_seeShowInMenu : $seeShowInMenu ;\n$hidePrivate = (isset($LIn_hidePrivate))? $LIn_hidePrivate : $hidePrivate;\n$linkToIndex = (isset($LIn_link))? $LIn_link : $linkToIndex ;\n$rootFolder = (isset($LIn_root))? $LIn_root : $rootFolder ;\n$shortQty = (isset($LIn_sQty))? $LIn_sQty : $shortQty ;\n$fullQty = (isset($LIn_fQty))? $LIn_fQty : $fullQty ;\n$showCreationDate = (isset($LIn_showDate))? $LIn_showDate : $showCreationDate ;\n$indexText = (isset($LIn_indexText))? $LIn_indexText : $indexText ;\n$useFastUrls = (isset($LIn_fast))? $LIn_fast : $useFastUrls ;\n$sortBy = (isset($LIn_sort))? $LIn_sort : $sortBy;\n$shortDesc = (isset($LIn_sDesc))? $LIn_sDesc : $shortDesc ;\n$fullDesc = (isset($LIn_fDesc))? $LIn_fDesc : $fullDesc ;\n$sortDir = (isset($LIn_dir))? $LIn_dir : $sortDir ;\nif ($sortDir == \'\') $sortDir = ($sortBy == \'date\')? \'DESC\' : \'ASC\' ;\n\n\n// Make useful variable shortcut for the content table\n//$tbl = $modx->dbConfig[\'dbase\'] . \".\" . $modx->dbConfig[\'table_prefix\'] . \"site_content\";\n$tblsc = $modx->getFullTableName(\"site_content\");\n$tbldg = $modx->getFullTableName(\"document_groups\");\n\n// Initialize output\n$output = \'\';\n\n// ---------------------------------------------------\n// ---------------------------------------------------\n// Query db for parent folders, or not. First check to\n// see if a querystring cheat has been provided- this\n// should speed things up considerably when using this\n// in full mode. (a.k.a. fastUrls)\n// ---------------------------------------------------\n// ---------------------------------------------------\n$inFolder= isset($_GET[\'LIn_f\'])? $_GET[\'LIn_f\']: 0;\nif ((!$inFolder && $useFastUrls) || !$useFastUrls ){\n  // Only run all the database queries if we don\'t already\n  // know the folders AND fastUrls are desired.\n\n  // ---------------------------------------------------\n  // Seed list of viable parents\n  // ---------------------------------------------------\n\n  if ($rootFolder == NULL){\n    $rootFolder = $modx->documentIdentifier;\n  }\n  // Set root level parent array\n  $seedArray = explode(\',\',$rootFolder);\n  $parentsArray = array();\n  foreach($seedArray AS $seed){\n    $parentsArray[\'level_0\'][] = $seed;\n  }\n\n  // ---------------------------------------------------\n  // Make array of all allowed parents\n  // ---------------------------------------------------\n\n  // Process valid parents\n  $levelCounter = 1;\n\n  while (((count($parentsArray) < $descendentDepth) || ($descendentDepth == 0)) && ($levelCounter <= count($parentsArray)) && ($levelCounter < 10)){\n\n    // Find all decendant parents for this level\n    $pLevel = \'level_\'.($levelCounter - 1);\n    $tempLevelArray = $parentsArray[$pLevel];\n\n    foreach($tempLevelArray AS $p){\n\n      // Get children who are parents (isfolder = 1)\n      $validParentSql = \"\";\n      $validParentSql .= \"SELECT id FROM $tblsc sc WHERE \";\n      $validParentSql .= \"isfolder = 1 AND parent = $p \";\n      $validParentSql .= \"AND sc.deleted=0 \";\n      $validParentSql .= ($seeThruUnpub)? \";\" : \"AND sc.published = 1;\";\n\n      // Run statement\n      $rsTempParents = $modx->dbQuery($validParentSql);\n      // Get number of results\n      $countTempParents = $modx->recordCount($rsTempParents);\n\n      // If there are results, put them in an array\n      $tempValidArray = false;\n      if ($countTempParents){\n        for ($i=0;$i<$countTempParents;$i++){\n          $tempId = $modx->fetchRow($rsTempParents);\n          $tempValidArray[] = $tempId[\'id\'];\n        } // end while\n      } // end if\n\n	  // populate next level of array \n	  if ($tempValidArray){\n	    foreach($tempValidArray AS $kid){\n	      $kidLevel = \'level_\'.$levelCounter;\n	      $parentsArray[$kidLevel][] = $kid;\n	    } // end foreach\n\n	  } // end if\n    } // end foreach\n\n    // Do next level\n    $levelCounter++;\n\n  } // end while\n\n  // Finalize list of parents\n  $validParents = \'\';\n  foreach ($parentsArray AS $level){\n    foreach ($level AS $validP){\n      $validParents .= $validP . \',\';\n    }\n  }\n\n  // Remove trailing comma\n  $validParents = substr($validParents,0,strlen($validParents)-1);\n\n} else {\n  $validParents = $_GET[\'LIn_f\'];\n}\n\n// ---------------------------------------------------\n// Make appropriate SQL statement to pull recent items\n// ---------------------------------------------------\n\n// get document groups for current user\nif($docgrp = $modx->getUserDocGroups()) $docgrp = implode(\",\",$docgrp);\n\n$access = \" (\".($modx->isFrontend() ? \"sc.privateweb=0\":\"1=\'\".$_SESSION[\'mgrRole\'].\"\' OR sc.privatemgr=0\").\n          (!$docgrp ? \"\":\" OR dg.document_group IN ($docgrp)\").\") AND \";\n\n// Initialize\n$recentSql = \"\";\n$recentSql .= \"SELECT sc.id, pagetitle, description\";\n// Include pub_date or createdon date if date is desired\n$recentSql .= ($showCreationDate)? \", IF(pub_date > 0, pub_date, createdon) AS pubDate \": \" \" ;\n$recentSql .= \"FROM $tblsc sc LEFT JOIN $tbldg dg on dg.document = sc.id \";\n$recentSql .= \"WHERE \";\n$recentSql .= ($hidePrivate)? $access:\"\";\n// Look everywhere, or just under valid parents\n$recentSql .= (($rootFolder == 0) && $seeThruUnpub && ($descendentDepth == 0))? \"\" : \"parent IN ($validParents) AND \" ;\n// Published\n$recentSql .= \"sc.published = 1 \";\n// Show In Menu\n$recentSql .= ($seeShowInMenu)? \" \" : \" AND sc.hidemenu=0 \" ;\n// Not deleted\n$recentSql .= \"AND sc.deleted=0 \";\n// Choose sort method\nswitch ($sortBy){\n  case \'alpha\':\n    $recentSql .= \"ORDER BY pagetitle \";\n    break;\n  case \'menuindex\':\n    $recentSql .= \"ORDER BY menuindex \";\n    break;\n  default:\n    $recentSql .= \"ORDER BY IF(pub_date>0, pub_date, createdon) \";\n    break;\n}\n// Provide a sort direction\n$recentSql .= $sortDir;\n\n// If this is a short list, just pull a limited number\n$recentSql .= ($mode == \'short\')? \" LIMIT $shortQty;\" : \";\" ;\n\n// Run statement\n$rsRecent = $modx->dbQuery($recentSql);\n// Count records\n$recentLimit = $modx->recordCount($rsRecent);\n\n// ---------------------------------------------------\n// Generate pagination string if needed\n// ---------------------------------------------------\n$offsetParam = isset($_GET[\'LIn_o\'])? $_GET[\'LIn_o\']: 0;\n$offset = ($offsetParam && ($mode == \'full\'))? $offsetParam : 0 ;\n$pagination = \'\';\n\n// Don\'t bother unless there are enough records to justify it\nif ( ($mode == \'full\') && ($recentLimit > $fullQty) && ($fullQty) ){\n  $fullUrl = $_SERVER[\'REQUEST_URI\'];\n  $urlPieces = parse_url($fullUrl);\n  $urlPath = $urlPieces[\'path\'];\n  $otherQs = \'\';\n\n  if ($urlPieces[\'query\']){\n    foreach($_GET AS $qsKey=>$qsValue){\n	  if (($qsKey != \'LIn_o\') && ($qsKey != \'LIn_f\')){\n	    $otherQs .= \'&\'.$qsKey.\'=\'.$qsValue;\n	  }\n	}\n  } \n  \n  $fastUrl = $urlPath.\'?LIn_f=\'.$validParents.$otherQs;\n\n  // Determine number of pages needed to show results\n  $totalPages = ceil($recentLimit/$fullQty);\n  \n  // Make links\n  for ($j = 0 ; $j < $totalPages; $j++){\n    // only include links to OTHER pages, not current page\n    if($offset == $j*$fullQty){\n	  $pagination .= \'<span class=\"LIn_currentPage\">\'.($j+1) .\'</span>\';\n	} else {\n      $pagination .= \'<a href=\"\'.$fastUrl.\'&LIn_o=\'.($j*$fullQty).\'\" title=\"\'.($j+1).\'\">\'.($j+1) .\'</a>\';\n	}\n	if ($j < $totalPages-1){\n	  $pagination .= $pageSeparator;\n	}\n  }\n  \n  // Make final pagination link set in it\'s own div\n  $pagination = \'<div class=\"LIn_pagination\">\'.\"\\n\".$pagination.\"\\n</div>\\n\";\n  \n}\n\n\n// ---------------------------------------------------\n// Create title if wanted\n// ---------------------------------------------------\n\nif ($activeTitle){\n  $output .= \'<div class=\"LIn_title\">\'.$activeTitle.\'</div>\'.\"\\n\";\n}\n\n// ---------------------------------------------------\n// Create list of recent items\n// ---------------------------------------------------\n\n// Include pagination\n$output .= ($pgPosition == \'top\' || $pgPosition == \'both\')? $pagination : \'\' ;\n\n$output .= \'<ul class=\"LIn_\'.$mode.\'Mode\">\' . $ie;\n\n$recentCounter = $offset;\nif ($mode == \'short\') {\n  $recentCounterLimit = min($shortQty,$recentLimit);\n} else {\n  $recentCounterLimit = ($fullQty)? min(($fullQty+$offset),$recentLimit) : $recentLimit ;\n}\n\nwhile (($recentCounter < $recentCounterLimit) && $rsRecent && ($recentLimit > 0)){\n  mysql_data_seek($rsRecent,$recentCounter);\n  $recentRecord = $modx->fetchRow($rsRecent);\n  $output .= \'<li>\';\n  // Link to page\n  $output .= \'<a href=\"[~\'.$recentRecord[\'id\'].\'~]\" title=\"\'.strip_tags($recentRecord[\'pagetitle\']).\'\">\'.$recentRecord[\'pagetitle\'].\'</a> \';\n  // Date if desired\n  if ($showCreationDate){\n    $output .= \'<span class=\"LIn_date\">\'.date($dateFormat,$recentRecord[\'pubDate\']).\'</span> \';\n  }\n  // Description if desired\n  if ((($mode == \'short\') && ($shortDesc)) || (($mode == \'full\') && ($fullDesc))){\n   $output .= \'<span class=\"LIn_desc\">\'.$recentRecord[\'description\'].\'</span>\';\n  }\n  // wrap it up\n  $output .= \'</li>\' . $ie;\n  $recentCounter ++;\n}\n\n$output .= \'</ul>\' . $ie;\n\n$output .= ($pgPosition == \'bottom\' || $pgPosition == \'both\')? $pagination : \'\' ;\n\n// ---------------------------------------------------\n// Link to index\n// ---------------------------------------------------\n\nif ($linkToIndex) {\n\n  $output .= \'<div class=\"LIn_index\">\';\n  $output .= \'<a href=\"[~\'.$linkToIndex.\'~]\" title=\"\'.$indexText.\'\">\'.$indexText.\'</a>\';\n  $output .= \'</div>\';\n\n}\n\n// ---------------------------------------------------\n// Send to browser\n// ---------------------------------------------------\n\nreturn $output;',0,'',''),(8,'MemberCheck','<strong>1.1</strong> Show chunks based on a logged in Web User\'s group membership',0,6,0,'#::::::::::::::::::::::::::::::::::::::::\n# Version: 1.0\n# Created By Ryan Thrash (vertexworks.com)\n# Sanitized By Jason Coward (opengeek.com)\n#\n# Date: November 29, 2005\n#\n# Changelog: \n# Nov 29, 05 -- initial release\n# Jul 13, 06 -- adjusted Singleton to work under PHP4, added placeholder code (by: garryn)\n#\n#::::::::::::::::::::::::::::::::::::::::\n# Description: 	\n#	Checks to see if users belong to a certain group and \n#	displays the specified chunk if they do. Performs several\n#	sanity checks and allows to be used multiple times on a page.\n#\n# Params:\n#	&groups [array] (REQUIRED)\n#		array of webuser group-names to check against\n#\n#	&chunk [string] (REQUIRED)\n#		name of the chunk to use if passes the check\n#\n#	&ph [string] (optional)\n#		name of the placeholder to set instead of directly retuning chunk\n#\n#	&debug [boolean] (optional | false) \n#		turn on debug mode for extra troubleshooting\n#\n# Example Usage:\n#\n#	[[MemberCheck? &groups=`siteadmin, registered users` &chunk=`privateSiteNav` &ph=`MemberMenu` &debug=`true`]]\n#\n#	This would place the \'members-only\' navigation store in the chunk \'privateSiteNav\'\n#	into a placeholder (called \'MemberMenu\'). It will only do this as long as the user \n#	is logged in as a webuser and is a member of the \'siteadmin\' or the \'registered users\'\n#	groups. The optional debug parameter can be used to display informative error messages \n#	when configuring this snippet for your site. For example, if the developer had \n#	mistakenly typed \'siteowners\' for the first group, and none existed with debug mode on, \n#	it would have returned the error message: The group siteowners could not be found....\n#\n#::::::::::::::::::::::::::::::::::::::::\n\n# debug parameter\n$debug = isset ($debug) ? $debug : false;\n\n# check if inside manager\nif ($m = $modx->insideManager()) {\n	return \'\'; # don\'t go any further when inside manager\n}\n\nif (!isset ($groups)) {\n	return $debug ? \'<p>Error: No Group Specified</p>\' : \'\';\n}\n\nif (!isset ($chunk)) {\n	return $debug ? \'<p>Error: No Chunk Specified</p>\' : \'\';\n}\n\n# turn comma-delimited list of groups into an array\n$groups = explode(\',\', $groups);\n\nif (!class_exists(\'MemberCheck\')) {\n	class MemberCheck {\n		var $allGroups = NULL;\n		var $debug;\n\n		function getInstance($debug) {\n			static $instance;\n			if (!isset ($instance)) {\n				$instance = new MemberCheck($debug);\n			}\n			return $instance;\n		}\n\n		function MemberCheck($debug = false) {\n			global $modx;\n\n			$this->debug = $debug;\n			if ($debug) {\n				$this->allGroups = array ();\n				$tableName = $modx->getFullTableName(\'webgroup_names\');\n				$sql = \"SELECT name FROM $tableName\";\n				if ($rs = $modx->db->query($sql)) {\n					while ($row = $modx->db->getRow($rs)) {\n						array_push($this->allGroups, stripslashes($row[\'name\']));\n					}\n				}\n			}\n		}\n\n		function isValidGroup($groupName) {\n			$isValid = !(array_search($groupName, $this->allGroups) === false);\n			return $isValid;\n		}\n\n		function getMemberChunk(& $groups, $chunk) {\n			global $modx;\n			$o = \'\';\n			if (is_array($groups)) {\n				for ($i = 0; $i < count($groups); $i++) {\n					$groups[$i] = trim($groups[$i]);\n					if ($this->debug) {\n						if (!$this->isValidGroup($groups[$i])) {\n							return \"<p>The group <strong>\" . $groups[$i] . \"</strong> could not be found...</p>\";\n						}\n					}\n				}\n\n				$check = $modx->isMemberOfWebGroup($groups);\n\n				$chunkcheck = $modx->getChunk($chunk);\n\n				$o .= ($check && $chunkcheck) ? $chunkcheck : \'\';\n				if (!$chunkcheck)\n					$o .= $this->debug ? \"<p>The chunk <strong>$chunk</strong> not found...</p>\" : \'\';\n			} else {\n				$o .= \"<p>No valid group names were specified!</p>\";\n			}\n\n			return $o;\n		}\n	}\n}\n\n$memberCheck = MemberCheck :: getInstance($debug);\n\nif (!isset ($ph)) {\n	return $memberCheck->getMemberChunk($groups, $chunk);\n} else {\n	$modx->setPlaceholder($ph, $memberCheck->getMemberChunk($groups, $chunk));\n	return \'\';\n}',0,'',''),(9,'Personalize','<strong>2.0</strong> Basic personalization for web users',0,6,0,'#::::::::::::::::::::::::::::::::::::::::\n# Created By:Ryan Thrash (modx@vertexworks.com), \n#	and then powered up by kudo (kudo@kudolink.com)\n#\n# Date: Aug 03, 2006\n#\n# Changelog: \n# Dec 01, 05 -- initial release\n# Jun 19, 06 -- updated description\n# Jul 19, 06 -- hacked by kudo to output chunks\n# Aug 03, 06 -- added placeholder for username\n#\n#::::::::::::::::::::::::::::::::::::::::\n# Description: 	\n#	Checks to see if webusers are logged in and displays yesChunk if the user\n#	is logged or noChunk if user is not logged. Insert only the chunk name as\n#	param, without {{}}. Can use a placeholder to output the username.\n#	TESTED: can be used more than once per page.\n#	TESTED: chunks can contain snippets.\n#	\n#	\n# Params:\n#	&yesChunk [string] [REQUIRED]\n#		Output for LOGGED users\n#\n#	&noChunk [string] [REQUIRED] \n#		Output for NOT logged users\n#\n#	&ph [string] (optional) \n#		Placeholder for placing the username\n#		ATTENTION!: place this ph only in yesChunk!\n#	\n#\n# Example Usage:\n#\n#	[[LoggedOrNot? &yesChunk=`Link` &noChunk=`Register` &ph=`name`]]\n#\n#	Having Chunks named {{Link}} and another {{Register}}, the first will be\n#	published to registered user, the second to non-registered users.\n#\n#::::::::::::::::::::::::::::::::::::::::\n\n# prepare params and variables\n$o = \'\';\n$yesChunk = (isset($yesChunk))? $yesChunk : \'\';\n$noChunk = (isset($noChunk))? $noChunk : \'\';\n\n# do the work\n$test = $modx->getLoginUserName();\nif ($test) {\n    $o = $modx->getChunk($yesChunk);\n  } else {\n    $o = $modx->getChunk($noChunk);\n}\n\nif (isset($ph)) {\n	$modx->setPlaceholder($ph,$test);\n	return $o;\n} else {\n	return $o;\n}\n',0,'',''),(10,'Reflect','<strong>2.1.0</strong> Generates date-based archives using Ditto',0,4,0,'/*\n * Author: \n *      Mark Kaplan for MODx CMF\n * \n * Note: \n *      If Reflect is not retrieving its own documents, make sure that the\n *          Ditto call feeding it has all of the fields in it that you plan on\n *       calling in your Reflect template. Furthermore, Reflect will ONLY\n *          show what is currently in the Ditto result set.\n *       Thus, if pagination is on it will ONLY show that page\'s items.\n*/\n \n\n// ---------------------------------------------------\n//  Includes\n// ---------------------------------------------------\n\n$reflect_base = isset($reflect_base) ? $modx->config[\'base_path\'].$reflect_base : $modx->config[\'base_path\'].\"assets/snippets/reflect/\";\n/*\n    Param: ditto_base\n    \n    Purpose:\n    Location of Ditto files\n\n    Options:\n    Any valid folder location containing the Ditto source code with a trailing slash\n\n    Default:\n    [(base_path)]assets/snippets/ditto/\n*/\n\n$config = (isset($config)) ? $config : \"default\";\n/*\n    Param: config\n\n    Purpose:\n    Load a custom configuration\n\n    Options:\n    \"default\" - default blank config file\n    CONFIG_NAME - Other configs installed in the configs folder or in any folder within the MODx base path via @FILE\n\n    Default:\n    \"default\"\n    \n    Related:\n    - <extenders>\n*/\n\nrequire($reflect_base.\"configs/default.config.php\");\nrequire($reflect_base.\"default.templates.php\");\nif ($config != \"default\") {\n    require((substr($config, 0, 5) != \"@FILE\") ? $reflect_base.\"configs/$config.config.php\" : $modx->config[\'base_path\'].trim(substr($config, 5)));\n}\n\n// ---------------------------------------------------\n//  Parameters\n// ---------------------------------------------------\n\n$id = isset($id) ? $id.\"_\" : false;\n/*\n    Param: id\n\n    Purpose:\n    Unique ID for this Ditto instance for connection with other scripts (like Reflect) and unique URL parameters\n\n    Options:\n    Any valid folder location containing the Ditto source code with a trailing slash\n\n    Default:\n    \"\" - blank\n*/\n$getDocuments = isset($getDocuments) ? $getDocuments : 0;\n/*\n    Param: getDocuments\n\n    Purpose:\n    Force Reflect to get documents\n\n    Options:\n    0 - off\n    1 - on\n    \n    Default:\n    0 - off\n*/\n$showItems = isset($showItems) ? $showItems : 1;\n/*\n    Param: showItems\n\n    Purpose:\n    Show individual items in the archive\n\n    Options:\n    0 - off\n    1 - on\n    \n    Default:\n    1 - on\n*/\n$groupByYears = isset($groupByYears)? $groupByYears : 1;\n/*\n    Param: groupByYears\n\n    Purpose:\n    Group the archive by years\n\n    Options:\n    0 - off\n    1 - on\n    \n    Default:\n    1 - on\n*/\n$targetID = isset($targetID) ? $targetID : $modx->documentObject[\'id\'];\n/*\n    Param: targetID\n\n    Purpose:\n    ID for archive links to point to\n\n    Options:\n    Any MODx document with a Ditto call setup with extenders=`dateFilter`\n    \n    Default:\n    Current MODx Document\n*/\n$dateSource = isset($dateSource) ? $dateSource : \"createdon\";\n/*\n    Param: dateSource\n\n    Purpose:\n    Date source to display for archive items\n\n    Options:\n    # - Any UNIX timestamp from MODx fields or TVs such as createdon, pub_date, or editedon\n    \n    Default:\n    \"createdon\"\n    \n    Related:\n    - <dateFormat>\n*/\n$dateFormat = isset($dateFormat) ? $dateFormat : \"%d-%b-%y %H:%M\";  \n/*\n    Param: dateFormat\n\n    Purpose:\n    Format the [+date+] placeholder in human readable form\n\n    Options:\n    Any PHP valid strftime option\n\n    Default:\n    \"%d-%b-%y %H:%M\"\n    \n    Related:\n    - <dateSource>\n*/\n$yearSortDir = isset($yearSortDir) ? $yearSortDir : \"DESC\";\n/*\n    Param: yearSortDir\n\n    Purpose:\n    Direction to sort documents\n\n    Options:\n    ASC - ascending\n    DESC - descending\n\n    Default:\n    \"DESC\"\n    \n    Related:\n    - <monthSortDir>\n*/\n$monthSortDir = isset($monthSortDir) ? $monthSortDir : \"ASC\";\n/*\n    Param: monthSortDir\n\n    Purpose:\n    Direction to sort the months\n\n    Options:\n    ASC - ascending\n    DESC - descending\n\n    Default:\n    \"ASC\"\n    \n    Related:\n    - <yearSortDir>\n*/\n$start = isset($start)? intval($start) : 0;\n/*\n    Param: start\n\n    Purpose:\n    Number of documents to skip in the results\n    \n    Options:\n    Any number\n\n    Default:\n    0\n*/  \n$phx = (isset($phx))? $phx : 1;\n/*\n    Param: phx\n\n    Purpose:\n    Use PHx formatting\n\n    Options:\n    0 - off\n    1 - on\n    \n    Default:\n    1 - on\n*/\n\n// ---------------------------------------------------\n//  Initialize Ditto\n// ---------------------------------------------------\n$placeholder = ($id != false && $getDocuments == 0) ? true : false;\nif ($placeholder === false) {\n    $rID = \"reflect_\".rand(1,1000);\n    $itemTemplate = isset($tplItem) ? $tplItem: \"@CODE:\".$defaultTemplates[\'item\'];\n    $dParams = array(\n        \"id\" => \"$rID\",\n        \"save\" => \"3\",  \n        \"summarize\" => \"all\",\n        \"tpl\" => $itemTemplate,\n    );\n    \n    $source = $dittoSnippetName;\n    $params = $dittoSnippetParameters;\n        // TODO: Remove after 3.0\n        \n    if (isset($params)) {\n        $givenParams = explode(\"|\",$params);\n        foreach ($givenParams as $parameter) {\n            $p = explode(\":\",$parameter);\n            $dParams[$p[0]] = $p[1];\n        }\n    }\n    /*\n        Param: params\n\n        Purpose:\n        Pass parameters to the Ditto instance used to retreive the documents\n\n        Options:\n        Any valid ditto parameters in the format name:value \n        with multiple parameters separated by a pipe (|)\n        \n        Note:\n        This parameter is only needed for config, start, and phx as you can\n        now simply use the parameter as if Reflect was Ditto\n\n        Default:\n        [NULL]\n    */\n    \n    $reflectParameters = array(\'reflect_base\',\'config\',\'id\',\'getDocuments\',\'showItems\',\'groupByYears\',\'targetID\',\'yearSortDir\',\'monthSortDir\',\'start\',\'phx\',\'tplContainer\',\'tplYear\',\'tplMonth\',\'tplMonthInner\',\'tplItem\',\'save\');\n    $params =& $modx->event->params;\n    if(is_array($params)) {\n        foreach ($params as $param=>$value) {\n            if (!in_array($param,$reflectParameters) && substr($param,-3) != \'tpl\') {\n                $dParams[$param] = $value;\n            }\n        }\n    }\n\n    $source = isset($source) ? $source : \"Ditto\";\n    /*\n        Param: source\n\n        Purpose:\n        Name of the Ditto snippet to use\n\n        Options:\n        Any valid snippet name\n\n        Default:\n        \"Ditto\"\n    */\n    $snippetOutput = $modx->runSnippet($source,$dParams);\n    $ditto = $modx->getPlaceholder($rID.\"_ditto_object\");\n    $resource = $modx->getPlaceholder($rID.\"_ditto_resource\");\n} else {\n    $ditto = $modx->getPlaceholder($id.\"ditto_object\");\n    $resource = $modx->getPlaceholder($id.\"ditto_resource\");\n}\nif (!is_object($ditto) || !isset($ditto) || !isset($resource)) {\n    return !empty($snippetOutput) ? $snippetOutput : \"The Ditto object is invalid. Please check it.\";\n}\n\n// ---------------------------------------------------\n//  Templates\n// ---------------------------------------------------\n\n$templates[\'tpl\'] = isset($tplContainer) ? $ditto->template->fetch($tplContainer): $defaultTemplates[\'tpl\'];\n/*\n    Param: tplContainer\n\n    Purpose:\n    Container template for the archive\n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE:\n    - File via @FILE:\n\n    Default:\n    See default.tempates.php\n*/\n$templates[\'year\'] = isset($tplYear) ? $ditto->template->fetch($tplYear): $defaultTemplates[\'year\'];\n/*\n    Param: tplYear\n\n    Purpose:\n    Template for the year item\n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE:\n    - File via @FILE:\n\n    Default:\n    See default.tempates.php\n*/\n$templates[\'year_inner\'] = isset($tplYearInner) ? $ditto->template->fetch($tplYearInner): $defaultTemplates[\'year_inner\'];\n/*\n    Param: tplYearInner\n\n    Purpose:\n    Template for the year item (the ul to hold the year template)\n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE:\n    - File via @FILE:\n\n    Default:\n    See default.tempates.php\n*/\n$templates[\'month\'] = isset($tplMonth) ? $ditto->template->fetch($tplMonth): $defaultTemplates[\'month\'];\n/*\n    Param: tplMonth\n\n    Purpose:\n    Template for the month item\n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE:\n    - File via @FILE:\n\n    Default:\n    See default.tempates.php\n*/\n$templates[\'month_inner\'] = isset($tplMonthInner) ? $ditto->template->fetch($tplMonthInner): $defaultTemplates[\'month_inner\'];\n/*\n    Param: tplMonthInner\n\n    Purpose:\n    Template for the month item  (the ul to hold the month template)\n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE:\n    - File via @FILE:\n\n    Default:\n    See default.tempates.php\n*/\n$templates[\'item\'] = isset($tplItem) ? $ditto->template->fetch($tplItem): $defaultTemplates[\'item\'];\n/*\n    Param: tplItem\n\n    Purpose:\n    Template for the individual item\n\n    Options:\n    - Any valid chunk name\n    - Code via @CODE:\n    - File via @FILE:\n\n    Default:\n    See default.tempates.php\n*/\n\n$ditto->addField(\"date\",\"display\",\"custom\");\n    // force add the date field if receiving data from a Ditto instance\n\n// ---------------------------------------------------\n//  Reflect\n// ---------------------------------------------------\n\nif (function_exists(\"reflect\") === FALSE) {\nfunction reflect($templatesDocumentID, $showItems, $groupByYears, $resource, $templatesDateSource, $dateFormat, $ditto, $templates,$id,$start,$yearSortDir,$monthSortDir) {\n    global $modx;\n    $cal = array();\n    $output = \'\';\n    $ph = array(\'year\'=>\'\',\'month\'=>\'\',\'item\'=>\'\',\'out\'=>\'\');\n    $build = array();\n    $stop = count($resource);\n\n    // loop and fetch all the results\n    for ($i = $start; $i < $stop; $i++) {\n        $date = getdate($resource[$i][$templatesDateSource]);\n        $year = $date[\"year\"];\n        $month = $date[\"mon\"];\n        $cal[$year][$month][] = $resource[$i];\n    }\n    if ($yearSortDir == \"DESC\") {\n        krsort($cal);\n    } else {\n        ksort($cal);\n    }\n    foreach ($cal as $year=>$months) {\n        if ($monthSortDir == \"ASC\") {\n            ksort($months);\n        } else {\n            krsort($months);\n        }\n        $build[$year] = $months;\n    }\n    \n    foreach ($build as $year=>$months) {\n        $r_year = \'\';\n        $r_month = \'\';\n        $r_month_2 = \'\';\n        $year_count = 0;\n        $items = array();\n        \n        foreach ($months as $mon=>$month) {\n            $month_text = strftime(\"%B\", mktime(10, 10, 10, $mon, 10, $year));\n            $month_url = $ditto->buildURL(\"month=\".$mon.\"&year=\".$year.\"&day=false&start=0\",$templatesDocumentID,$id);\n            $month_count = count($month);\n            $year_count += $month_count;\n            $r_month = $ditto->template->replace(array(\"year\"=>$year,\"month\"=>$month_text,\"url\"=>$month_url,\"count\"=>$month_count),$templates[\'month\']);\n            if ($showItems) {\n                foreach ($month as $item) {\n                    $items[$year][$mon][\'items\'][] = $ditto->render($item, $templates[\'item\'], false, $templatesDateSource, $dateFormat, array(),$phx);\n                }\n                $r_month_2 = $ditto->template->replace(array(\'wrapper\' => implode(\'\',$items[$year][$mon][\'items\'])),$templates[\'month_inner\']);\n                $items[$year][$mon] = $ditto->template->replace(array(\'wrapper\' => $r_month_2),$r_month);\n            } else {\n                $items[$year][$mon] = $r_month;\n            }\n        }\n        if ($groupByYears) {\n            $year_url = $ditto->buildURL(\"year=\".$year.\"&month=false&day=false&start=0\",$templatesDocumentID,$id);\n            $r_year =  $ditto->template->replace(array(\"year\"=>$year,\"url\"=>$year_url,\"count\"=>$year_count),$templates[\'year\']);\n            $var = $ditto->template->replace(array(\'wrapper\'=>implode(\'\',$items[$year])),$templates[\'year_inner\']);\n            $output .= $ditto->template->replace(array(\'wrapper\'=>$var),$r_year);\n        } else {\n            $output .= implode(\'\',$items[$year]);\n        }\n    }\n\n    $output = $ditto->template->replace(array(\'wrapper\'=>$output),$templates[\'tpl\']);\n    $modx->setPlaceholder($id.\'reset\',$ditto->buildURL(\'year=false&month=false&day=false\',$templatesDocumentID,$id));\n\nreturn $output;\n    \n}\n}\n\nreturn reflect($targetID, $showItems, $groupByYears, $resource, $dateSource, $dateFormat, $ditto, $templates,$id,$start,$yearSortDir,$monthSortDir);',0,'',''),(11,'UltimateParent','<strong>2.1</strong> Travels up the document tree from a specified document and returns its',0,3,0,'\r\ninclude MODX_BASE_PATH.\'_/modx/snippet.ultimate_parent.php\';\r\n',0,'',' '),(19,'FirstChildForward','',0,8,0,'\r\n/*\r\n * @name FirstChildRedirect\r\n * @author Jason Coward <jason@opengeek.com>\r\n * @modified-by Ryan Thrash <ryan@vertexworks.com>\r\n * @license Public Domain\r\n * @version 1.0\r\n * \r\n * This snippet redirects to the first child document of a folder in which this\r\n * snippet is included within the content (e.g. [!FirstChildRedirect!]).  This\r\n * allows MODx folders to emulate the behavior of real folders since MODx\r\n * usually treats folders as actual documents with their own content.\r\n * \r\n * Modified to make Doc ID a required parameter... now defaults to the current \r\n * Page/Folder you call the snippet from.\r\n * \r\n * &docid=`12` \r\n * Use the docid parameter to have this snippet redirect to the\r\n * first child document of the specified document.\r\n */\r\n\r\n$docid = (isset($docid))? $docid: $modx->documentIdentifier;\r\n\r\n$children= $modx->getActiveChildren($docid, \'menuindex\', \'ASC\');\r\nif (!$children === false) {\r\n    $firstChild= $children[0];\r\n    $firstChildUrl= $modx->makeUrl($firstChild[\'id\']);\r\n} else {\r\n    $firstChildUrl= $modx->makeUrl($modx->config[\'site_start\']);\r\n}\r\nreturn $modx->sendForward($firstChildUrl);\r\n',0,'',' '),(12,'Wayfinder','<strong>2.0</strong> Completely template-driven and highly flexible menu builder',0,3,0,'/*\n::::::::::::::::::::::::::::::::::::::::\n Snippet name: Wayfinder\n Short Desc: builds site navigation\n Version: 2.0\n Authors: \n	Kyle Jaebker (muddydogpaws.com)\n	Ryan Thrash (vertexworks.com)\n Date: February 27, 2006\n::::::::::::::::::::::::::::::::::::::::\nDescription:\n    Totally refactored from original DropMenu nav builder to make it easier to\n    create custom navigation by using chunks as output templates. By using templates,\n    many of the paramaters are no longer needed for flexible output including tables,\n    unordered- or ordered-lists (ULs or OLs), definition lists (DLs) or in any other\n    format you desire.\n::::::::::::::::::::::::::::::::::::::::\nExample Usage:\n    [[Wayfinder? &startId=`0`]]\n::::::::::::::::::::::::::::::::::::::::\n*/\n\n$wayfinder_base = $modx->config[\'base_path\'].\"assets/snippets/wayfinder/\";\n\n//Include a custom config file if specified\n$config = (isset($config)) ? \"{$wayfinder_base}configs/{$config}.config.php\" : \"{$wayfinder_base}configs/default.config.php\";\nif (file_exists($config)) {\n	include_once(\"$config\");\n}\n\ninclude_once(\"{$wayfinder_base}wayfinder.inc.php\");\n\nif (class_exists(\'Wayfinder\')) {\n   $wf = new Wayfinder();\n} else {\n    return \'error: Wayfinder class not found\';\n}\n\n$wf->_config = array(\n	\'id\' => isset($startId) ? $startId : $modx->documentIdentifier,\n	\'level\' => isset($level) ? $level : 0,\n	\'includeDocs\' => isset($includeDocs) ? $includeDocs : 0,\n	\'excludeDocs\' => isset($excludeDocs) ? $excludeDocs : 0,\n	\'ph\' => isset($ph) ? $ph : FALSE,\n	\'debug\' => isset($debug) ? TRUE : FALSE,\n	\'ignoreHidden\' => isset($ignoreHidden) ? $ignoreHidden : FALSE,\n	\'hideSubMenus\' => isset($hideSubMenus) ? $hideSubMenus : FALSE,\n	\'useWeblinkUrl\' => isset($useWeblinkUrl) ? $useWeblinkUrl : TRUE,\n	\'fullLink\' => isset($fullLink) ? $fullLink : FALSE,\n	\'nl\' => isset($removeNewLines) ? \'\' : \"\\n\",\n	\'sortOrder\' => isset($sortOrder) ? strtoupper($sortOrder) : \'ASC\',\n	\'sortBy\' => isset($sortBy) ? $sortBy : \'menuindex\',\n	\'limit\' => isset($limit) ? $limit : 0,\n	\'cssTpl\' => isset($cssTpl) ? $cssTpl : FALSE,\n	\'jsTpl\' => isset($jsTpl) ? $jsTpl : FALSE,\n	\'rowIdPrefix\' => isset($rowIdPrefix) ? $rowIdPrefix : FALSE,\n	\'textOfLinks\' => isset($textOfLinks) ? $textOfLinks : \'menutitle\',\n	\'titleOfLinks\' => isset($titleOfLinks) ? $titleOfLinks : \'pagetitle\',\n	\'displayStart\' => isset($displayStart) ? $displayStart : FALSE,\n);\n\n//get user class definitions\n$wf->_css = array(\n	\'first\' => isset($firstClass) ? $firstClass : \'\',\n	\'last\' => isset($lastClass) ? $lastClass : \'last\',\n	\'here\' => isset($hereClass) ? $hereClass : \'active\',\n	\'parent\' => isset($parentClass) ? $parentClass : \'\',\n	\'row\' => isset($rowClass) ? $rowClass : \'\',\n	\'outer\' => isset($outerClass) ? $outerClass : \'\',\n	\'inner\' => isset($innerClass) ? $innerClass : \'\',\n	\'level\' => isset($levelClass) ? $levelClass: \'\',\n	\'self\' => isset($selfClass) ? $selfClass : \'\',\n	\'weblink\' => isset($webLinkClass) ? $webLinkClass : \'\',\n);\n\n//get user templates\n$wf->_templates = array(\n	\'outerTpl\' => isset($outerTpl) ? $outerTpl : \'\',\n	\'rowTpl\' => isset($rowTpl) ? $rowTpl : \'\',\n	\'parentRowTpl\' => isset($parentRowTpl) ? $parentRowTpl : \'\',\n	\'parentRowHereTpl\' => isset($parentRowHereTpl) ? $parentRowHereTpl : \'\',\n	\'hereTpl\' => isset($hereTpl) ? $hereTpl : \'\',\n	\'innerTpl\' => isset($innerTpl) ? $innerTpl : \'\',\n	\'innerRowTpl\' => isset($innerRowTpl) ? $innerRowTpl : \'\',\n	\'innerHereTpl\' => isset($innerHereTpl) ? $innerHereTpl : \'\',\n	\'activeParentRowTpl\' => isset($activeParentRowTpl) ? $activeParentRowTpl : \'\',\n	\'categoryFoldersTpl\' => isset($categoryFoldersTpl) ? $categoryFoldersTpl : \'\',\n	\'startItemTpl\' => isset($startItemTpl) ? $startItemTpl : \'\',\n);\n\n//Process Wayfinder\n$output = $wf->run();\n\nif ($wf->_config[\'debug\']) {\n	$output .= $wf->renderDebugOutput();\n}\n\n//Ouput Results\nif ($wf->_config[\'ph\']) {\n    $modx->setPlaceholder($wf->_config[\'ph\'],$output);\n} else {\n    return $output;\n}',0,'',''),(13,'WebChangePwd','<strong>1.0</strong> Allows Web User to change their password from the front-end of the website',0,6,0,'# Created By Raymond Irving April, 2005\n#::::::::::::::::::::::::::::::::::::::::\n# Params:	\n#\n#	&tpl			- (Optional)\n#		Chunk name or document id to use as a template\n#				  \n#	Note: Templats design:\n#			section 1: change pwd template\n#			section 2: notification template \n#\n# Examples:\n#\n#	[[WebChangePwd? &tpl=`ChangePwd`]] \n\n# Set Snippet Paths \n$snipPath  = (($modx->insideManager())? \"../\":\"\");\n$snipPath .= \"assets/snippets/\";\n\n# check if inside manager\nif ($m = $modx->insideManager()) {\n	return \'\'; # don\'t go any further when inside manager\n}\n\n\n# Snippet customize settings\n$tpl		= isset($tpl)? $tpl:\"\";\n\n# System settings\n$isPostBack		= count($_POST) && isset($_POST[\'cmdwebchngpwd\']);\n\n# Start processing\ninclude_once $snipPath.\"weblogin/weblogin.common.inc.php\";\ninclude_once $snipPath.\"weblogin/webchangepwd.inc.php\";\n\n# Return\nreturn $output;\n\n\n\n',0,'',''),(14,'WebLogin','<strong>1.1</strong> Allows webusers to login to protected pages in the website, supporting multiple user groups',0,6,0,'# Created By Raymond Irving 2004\n#::::::::::::::::::::::::::::::::::::::::\n# Params:	\n#\n#	&loginhomeid 	- (Optional)\n#		redirects the user to first authorized page in the list.\n#		If no id was specified then the login home page id or \n#		the current document id will be used\n#\n#	&logouthomeid 	- (Optional)\n#		document id to load when user logs out	\n#\n#	&pwdreqid 	- (Optional)\n#		document id to load after the user has submited\n#		a request for a new password\n#\n#	&pwdactid 	- (Optional)\n#		document id to load when the after the user has activated\n#		their new password\n#\n#	&logintext		- (Optional) \n#		Text to be displayed inside login button (for built-in form)\n#\n#	&logouttext 	- (Optional)\n#		Text to be displayed inside logout link (for built-in form)\n#	\n#	&tpl			- (Optional)\n#		Chunk name or document id to as a template\n#				  \n#	Note: Templats design:\n#			section 1: login template\n#			section 2: logout template \n#			section 3: password reminder template \n#\n#			See weblogin.tpl for more information\n#\n# Examples:\n#\n#	[[WebLogin? &loginhomeid=`8` &logouthomeid=`1`]] \n#\n#	[[WebLogin? &loginhomeid=`8,18,7,5` &tpl=`Login`]] \n\n# Set Snippet Paths \n$snipPath = $modx->config[\'base_path\'] . \"assets/snippets/\";\n\n# check if inside manager\nif ($m = $modx->insideManager()) {\n	return \'\'; # don\'t go any further when inside manager\n}\n\n# deprecated params - only for backward compatibility\nif(isset($loginid)) $loginhomeid=$loginid;\nif(isset($logoutid)) $logouthomeid = $logoutid;\nif(isset($template)) $tpl = $template;\n\n# Snippet customize settings\n$liHomeId	= isset($loginhomeid)? explode(\",\",$loginhomeid):array($modx->config[\'login_home\'],$modx->documentIdentifier);\n$loHomeId	= isset($logouthomeid)? $logouthomeid:$modx->documentIdentifier;\n$pwdReqId	= isset($pwdreqid)? $pwdreqid:0;\n$pwdActId	= isset($pwdactid)? $pwdactid:0;\n$loginText	= isset($logintext)? $logintext:\'Login\';\n$logoutText	= isset($logouttext)? $logouttext:\'Logout\';\n$tpl		= isset($tpl)? $tpl:\"\";\n\n# System settings\n$webLoginMode = isset($_REQUEST[\'webloginmode\'])? $_REQUEST[\'webloginmode\']: \'\';\n$isLogOut		= $webLoginMode==\'lo\' ? 1:0;\n$isPWDActivate	= $webLoginMode==\'actp\' ? 1:0;\n$isPostBack		= count($_POST) && (isset($_POST[\'cmdweblogin\']) || isset($_POST[\'cmdweblogin_x\']));\n$txtPwdRem 		= isset($_REQUEST[\'txtpwdrem\'])? $_REQUEST[\'txtpwdrem\']: 0;\n$isPWDReminder	= $isPostBack && $txtPwdRem==\'1\' ? 1:0;\n\n$site_id = isset($site_id)? $site_id: \'\';\n$cookieKey = substr(md5($site_id.\"Web-User\"),0,15);\n\n# Start processing\ninclude_once $snipPath.\"weblogin/weblogin.common.inc.php\";\ninclude_once ($modx->config[\'base_path\'] . \"manager/includes/crypt.class.inc.php\");\n\nif ($isPWDActivate || $isPWDReminder || $isLogOut || $isPostBack) {\n	# include the logger class\n	include_once $modx->config[\'base_path\'] . \"manager/includes/log.class.inc.php\";\n	include_once $snipPath.\"weblogin/weblogin.processor.inc.php\";\n}\n\ninclude_once $snipPath.\"weblogin/weblogin.inc.php\";\n\n# Return\nreturn $output;\n',0,'&loginhomeid=Login Home Id;string; &logouthomeid=Logout Home Id;string; &logintext=Login Button Text;string; &logouttext=Logout Button Text;string; &tpl=Template;string;',''),(15,'WebSignup','<strong>1.1</strong> Basic Web User account creation/signup system',0,6,0,'# Created By Raymond Irving April, 2005\n#::::::::::::::::::::::::::::::::::::::::\n# Usage:     \n#    Allows a web user to signup for a new web account from the website\n#    This snippet provides a basic set of form fields for the signup form\n#    You can customize this snippet to create your own signup form\n#\n# Params:    \n#\n#    &tpl        - (Optional) Chunk name or document id to use as a template\n#    &groups     - Web users groups to be assigned to users\n#    &useCaptcha - (Optional) Determine to use (1) or not to use (0) captcha\n#                  on signup form - if not defined, will default to system\n#                  setting. GD is required for this feature. If GD is not \n#                  available, useCaptcha will automatically be set to false;\n#                  \n#    Note: Templats design:\n#        section 1: signup template\n#        section 2: notification template \n#\n# Examples:\n#\n#    [[WebSignup? &tpl=`SignupForm` &groups=`NewsReaders,WebUsers`]] \n\n# Set Snippet Paths \n$snipPath = $modx->config[\'base_path\'] . \"assets/snippets/\";\n\n# check if inside manager\nif ($m = $modx->insideManager()) {\n    return \'\'; # don\'t go any further when inside manager\n}\n\n\n# Snippet customize settings\n$tpl = isset($tpl)? $tpl:\"\";\n$useCaptcha = isset($useCaptcha)? $useCaptcha : $modx->config[\'use_captcha\'] ;\n// Override captcha if no GD\nif ($useCaptcha && !gd_info()) $useCaptcha = 0;\n\n# setup web groups\n$groups = isset($groups) ? explode(\',\',$groups):array();\nfor($i=0;$i<count($groups);$i++) $groups[$i] = trim($groups[$i]);\n\n# System settings\n$isPostBack        = count($_POST) && isset($_POST[\'cmdwebsignup\']);\n\n$output = \'\';\n\n# Start processing\ninclude_once $snipPath.\"weblogin/weblogin.common.inc.php\";\ninclude_once $snipPath.\"weblogin/websignup.inc.php\";\n\n# Return\nreturn $output;',0,'&tpl=Template;string;',''),(16,'Includes','',0,8,0,'\r\n// &file=`assets/foo/bar.php` indicates the file to include\r\n// &return=`1` return explicit content from return statement in included file\r\n//  default behavior is to use output buffering to capture the content from the include\r\n\r\n$output = \'\';\r\nif (isset($file) && file_exists($modx->config[\'base_path\'] . $file)) {\r\n    if (!isset($return) || $return == false) {\r\n        ob_start();\r\n        include ($modx->config[\'base_path\'] . $file);\r\n        $output = ob_get_contents();\r\n        ob_end_clean();\r\n    } else {\r\n        $output = include ($modx->config[\'base_path\'] . $file);\r\n    }\r\n} else {\r\n   $path_parts = pathinfo($file);\r\n   return sprintf(\'The file: %s was not found\', $path_parts[\'basename\']);\r\n}\r\nreturn $output;\r\n',0,'',' '),(17,'App','',0,8,0,'\r\ninclude MODX_BASE_PATH.\'_/modx/snippet.app.php\';\r\n',0,'',' '),(18,'Template','',0,8,0,'\r\ninclude MODX_BASE_PATH.\'_/modx/snippet.template.php\';\r\n',0,'',' ');

--
-- Table structure for table `modx_site_templates`
--

CREATE TABLE `modx_site_templates` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `templatename` varchar(50) NOT NULL DEFAULT '',
  `description` varchar(255) NOT NULL DEFAULT 'Template',
  `editor_type` int(11) NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor',
  `category` int(11) NOT NULL DEFAULT '0' COMMENT 'category id',
  `icon` varchar(255) NOT NULL DEFAULT '' COMMENT 'url to icon file',
  `template_type` int(11) NOT NULL DEFAULT '0' COMMENT '0-page,1-content',
  `content` mediumtext,
  `locked` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COMMENT='Contains the site templates.';

--
-- Dumping data for table `modx_site_templates`
--

INSERT INTO `modx_site_templates` VALUES (3,'Parked','',0,8,'',0,'[[Template? &file=`_/sites/_default/templates/parked.tpl` ]]',0),(6,'Site Settings','',0,8,'',0,'[[Template? &file=`_/sites/_default/templates/system-settings.tpl` ]]',0),(10,'Inner','',0,11,'',0,'[[Template? &file=`_/sites/dustram.com/templates/inner.tpl` ]]',0),(9,'Home','',0,11,'',0,'[[Template? &file=`_/sites/dustram.com/templates/home.tpl` ]]',0),(12,'Customers','',0,8,'',0,'',0),(13,'Product','',0,11,'',0,'[[Template? &file=`_/sites/dustram.com/templates/product.tpl` ]]',0),(14,'Product Grid','',0,11,'',0,'[[Template? &file=`_/sites/dustram.com/templates/product-grid.tpl` ]]',0),(15,'Sitemap','',0,11,'',0,'[[Template? &file=`_/sites/dustram.com/templates/sitemap.tpl` ]]',0),(16,'Foxycart','',0,11,'',0,'[[Template? &file=`_/sites/dustram.com/templates/foxycart.tpl` ]]',0),(18,'FAQ','',0,11,'',0,'[[Template? &file=`_/sites/dustram.com/templates/inner.tpl` ]]',0),(21,'186.News','',0,12,'',0,'[[Template? &file=`_/sites/slinnconst.com/templates/default.tpl` ]]',0),(20,'186.Default','',0,12,'',0,'[[Template? &file=`_/sites/slinnconst.com/templates/default.tpl` ]]',0),(22,'186.Testimonial','',0,12,'',0,'[[Template? &file=`_/sites/slinnconst.com/templates/default.tpl` ]]',0),(23,'186.People','',0,12,'',0,'[[Template? &file=`_/sites/slinnconst.com/templates/default.tpl` ]]',0),(24,'186.Video Gallery','',0,12,'',0,'[[Template? &file=`_/sites/slinnconst.com/templates/default.tpl` ]]',0),(25,'186.Home','',0,12,'',0,'[[Template? &file=`_/sites/slinnconst.com/templates/default.tpl` ]]',0),(26,'186.FAQ','',0,12,'',0,'[[Template? &file=`_/sites/slinnconst.com/templates/default.tpl` ]]',0),(27,'186.Photo Gallery','',0,12,'',0,'[[Template? &file=`_/sites/slinnconst.com/templates/default.tpl` ]]',0),(28,'Inner No Sidebar','',0,11,'',0,'[[Template? &file=`_/sites/dustram.com/templates/inner-no-sidebar.tpl` ]]',0);

--
-- Table structure for table `modx_site_tmplvar_access`
--

CREATE TABLE `modx_site_tmplvar_access` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `tmplvarid` int(10) NOT NULL DEFAULT '0',
  `documentgroup` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 COMMENT='Contains data used for template variable access permissions.';

--
-- Dumping data for table `modx_site_tmplvar_access`
--


--
-- Table structure for table `modx_site_tmplvar_contentvalues`
--

CREATE TABLE `modx_site_tmplvar_contentvalues` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tmplvarid` int(10) NOT NULL DEFAULT '0' COMMENT 'Template Variable id',
  `contentid` int(10) NOT NULL DEFAULT '0' COMMENT 'Site Content Id',
  `value` text,
  PRIMARY KEY (`id`),
  KEY `idx_tmplvarid` (`tmplvarid`),
  KEY `idx_id` (`contentid`)
) ENGINE=MyISAM AUTO_INCREMENT=756 DEFAULT CHARSET=latin1 COMMENT='Site Template Variables Content Values Link Table';

--
-- Dumping data for table `modx_site_tmplvar_contentvalues`
--

INSERT INTO `modx_site_tmplvar_contentvalues` VALUES (186,7,86,'{\"meta_description\":\"The Platinum package is designed for the contractor looking to create a stand alone business using the DustRam™ System.\",\"meta_keywords\":\"\\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dustram-platinum\\\"\",\"page_layout\":\"\"}'),(121,7,24,'{\"meta_description\":\"See Our Patented DUST FREE Tile Removal Equipment. You won\'t believe these videos!  <==STOP SCROLLING & CLICK HERE.\",\"meta_keywords\":\"\\\"dust free\\\" \\\"dustfree\\\" \\\"dust-free\\\" \\\"tile removal\\\" \\\"flooring removal\\\" \\\"dust commander\\\" \\\"dustcommander\\\" \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\" \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"home\\\"\",\"page_layout\":\"\"}'),(122,8,31,'{\"sku\":\"cdc 103125 Unit By Itself\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-02.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"Request a Quote With Shipping\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"150\",\"price\":\"3995\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"pHiGioka7ak\",\"blurb\":\"\",\"reviews\":[{\"title\":\"These CDCLarue PB-1250 Vacuums Worked Perfectly Inside My Home!\",\"author\":\"Pat Zajac\",\"date\":\"2/23/12\",\"rating\":\"5\",\"description\":\"Jack King and his crew were at my home today to remove my kitchen tile. I have had tile removed before and know what a dusty mess tile removal can be. I found Jack on the internet. He said his method was dustless. I watched his video online and was impressed. I was even more impressed today! My kitchen tile has been removed, and there is no dusty mess left behind. My kitchen is dust free and ready for new flooring. I would highly recommend his method to anyone who wants to avoid dust. I didn\'t sneeze once during the process!\"},{\"title\":\"The DustRam™ System Process And CDCLarue PB-1250 Vacuum Works Exactly Like The Videos Show!\",\"author\":\"Jim Towse\",\"date\":\"03/07/2012\",\"rating\":\"5\",\"description\":\"I had AzHomeFloors.com (Jack King) come out to my house to remove tile and thin set with his patented virtually dust free process. Let me tell you -- It works! We did not cover anything up on the counters, tape off any areas, or even put nic nacs away. Result -- I get more dust with our dogs on a windy day then they produced removing 1500 square feet of tile and thin set – and they did it in a day. It was indeed everything Jack said it would be. I would recommend Jack and his crew to anyone. In fact, I already have to the tile companies that I talked to for replacement of what was taken out. I did make a video of the process if you are interested in seeing it. My concrete slab had some issues that they addressed. http://www.youtube.com/watch?v=WMOWeIQZohQ\"},{\"title\":\"That CDCLarue PB-1250 Industrial Vacuum Is Truly Amazing, \",\"author\":\"Mike Antonetti / First Floors LLC\",\"date\":\"02/29/2012\",\"rating\":\"5+\",\"description\":\"That CDCLarue PB-1250 industrial vacuum is truly amazing, I ground the other day for 8 hours and it took everything I could throw at it.  Having this vacuum has made me realize using inefficient vacuums in the past had been costing me time.  Not only that, but I used to grind floors at the terrible cost of getting my clients personal things covered in dust, just to ensure proper floor prep.  Plus, on fine, expensive furniture it’s not pretty.  The PB-1250 is also awesome on commercial floor prep.  This vacuum is the heart of my business!  I absolutely give it a 5 + rating.\"},{\"title\":\"I Googled \",\"author\":\"Bill Bratt\",\"date\":\"03/24/2012\",\"rating\":\"5\",\"description\":\"I am in the process of renovating an older home for after we retire. I started with the master bath and knew after that, the remaining ~700 SF was going to be more than I wanted to tackle without help. I Googled \\\"tile removal\\\" and Jack\'s website popped up. I watched the video, requested a quote and the rest is history. Jack\'s crew came in, busted it all out, ground the floors and it looks great! Plus, he carted off all the removed tile and the ground thin set powder, \\\"bags of it\\\". I witnessed the entire operation and these guy\'s were efficient and came through on everything they promised. I would highly recommend Jack and his crew for any tile removal project that comes your way!\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(532,7,300,'{\"meta_description\":\"Looking for a quality dust free tile removal contractor in Utah? <==STOP SCROLLING & CLICK HERE\",\"meta_keywords\":\"Tile Removal, tile removal Utah, Utah, Concrete Grinding, Salt Lake City, SLC, Provo, Highland, American Fork, Lehi, Pleasant Grove, Draper, Lindon, Sandy, Riverton, South Jordan, Cottonwood Heights, Orem, Midvale, West Jordan, Holladay, Murray, Idaho, Wyoming\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"utah-tile-removal\\\"\",\"page_layout\":\"\"}'),(529,7,301,'{\"meta_description\":\"\",\"meta_keywords\":\"DustRam, DustRam System, Tile Removal, Ceramic Tile Removal, Salt Lake, Salt Lake City, SLC, Logan, Ogden, Provo, St George, Utah, Idaho, Wyoming. \\n\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"bryan-irving-tileram-of-utah\\\"\",\"page_layout\":\"\"}'),(552,8,301,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"520\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/-gkAuzpz40Y\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(505,8,287,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/dustram/dustram-modified-cdclarue-pb-1250-vacuum-1.jpg\"},{\"src\":\"assets/images/equipment/dustram/dustram-modified-cdclarue-pb-1250-vacuum-2.jpg\"},{\"src\":\"assets/images/equipment/dustram/dustram-modified-cdclarue-pb-1250-vacuum-3.jpg\"},{\"src\":\"assets/images/equipment/dustram/dustram-modified-cdclarue-pb-1250-vacuum-4.jpg\"},{\"src\":\"assets/images/equipment/dustram/dustram-modified-cdclarue-pb-1250-vacuum-5.jpg\"},{\"src\":\"assets/images/equipment/dustram/dustram-modified-cdclarue-pb-1250-vacuum-6.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"150\",\"price\":\"4428 + Shipping\",\"sale_price\":\"\",\"free_ship\":\"1\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(506,7,287,'{\"meta_description\":\"\",\"meta_keywords\":\"\\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"purchase-a-dustram-vacuum\\\"\",\"page_layout\":\"\"}'),(509,7,288,'{\"meta_description\":\"\",\"meta_keywords\":\"\\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"purchase-dustram-vacuum-hose-connection-accessory-package\\\"\",\"page_layout\":\"\"}'),(510,8,288,'{\"sku\":\"\",\"images\":[{\"src\":\"\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"150\",\"price\":\"877 + Shipping\",\"sale_price\":\"\",\"free_ship\":\"1\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(128,7,31,'{\"meta_description\":\"CDCLarue Distributor of PB-1250 & DustRam System Equipment for Dust Free Tile Removal\",\"meta_keywords\":\"cdclarue, cdclarue pb-1250, cdclarue pb1250, pb-1250, pb 1250, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"cdclarue-pb-1250\\\"\",\"page_layout\":\"\"}'),(125,8,32,'{\"sku\":\"cdc 103567-05\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-shroud-7-inch.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-shroud-7-inch-02.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"17\",\"price\":\"164\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(126,8,33,'{\"sku\":\"cdc 103611-02\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/2-inch-by-25-foot-vacuum-ho.gif\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"45\",\"price\":\"120\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(174,7,79,'{\"meta_description\":\"To High Quality Contractors Everywhere: Our Equipment In The DustRam™ System Allows Virtually Dust Free Tile Removal And Speeds The Remodeling Process.\",\"meta_keywords\":\"tile removal, flooring removal, demolition equipment, pb-1250, tile demolition, tile removal equipment, flooring demolition, 11264evs, cdclarue, dust free tile removal, ceramic tile removal equipment, dustless tile removal, dustram, bosch chipping hammer\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"packages\\\"\",\"page_layout\":\"\"}'),(210,7,32,'{\"meta_description\":\"The Dust Grabber dustless shroud collects dust when grinding with your 7\\\" concrete grinders.\",\"meta_keywords\":\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dust-grabber-shroud-kit-7-inch-long-spindle\\\"\",\"page_layout\":\"\"}'),(129,7,28,'{\"meta_description\":\"Professional dust free tile removal tools designed by DustRam LLC delivers the best outcome.\",\"meta_keywords\":\"\",\"in_rss\":\"yes\",\"inherit_template\":\"0\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"mission-statement\\\"\",\"page_layout\":\"\",\"seo_override\":\"0\"}'),(185,7,84,'{\"meta_description\":\"The Gold package for dust free tile removal is for small to medium sized tear outs.\",\"meta_keywords\":\"\\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dustram-gold\\\"\",\"page_layout\":\"\"}'),(182,8,86,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/dustram/_packages/platinum-package.png\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-07.jpg\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-05.jpg\"},{\"src\":\"assets/images/equipment/edco/tg10-dust-free-concrete-grinding-09.jpg\"},{\"src\":\"assets/images/equipment/edco/tg10-dust-free-concrete-grinding-07.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-08.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-07.jpg\"},{\"src\":\"assets/images/equipment/bosch/11264evs-dust-free-tile-demolition-16.jpg\"},{\"src\":\"assets/images/equipment/bosch/11264evs-dust-free-tile-demolition-17.jpg\"},{\"src\":\"assets/images/equipment/4-inch-angle-grinders/makita-9565CV-dust-free-tile-removal-02.jpg\"},{\"src\":\"assets/images/equipment/7-inch-angle-grinders/dewalt-d28499-dustfree-tile-removal-05.jpg\"},{\"src\":\"assets/images/equipment/7-inch-angle-grinders/dewalt-d28499-dustfree-tile-removal-09.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/6-inch-concrete-grinding-wheels-dust-free-tile-removal.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-01.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-02.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-03.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-07.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-06.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-05.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-04.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-03.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-02.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-01.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/pigtails-dustfree-tile-removal-equipment.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/carol-soow-8-3-dustfree-tile-removal-equipment.jpg\"},{\"src\":\"assets/images/equipment/toteram/dust-free-tile-removal-collector-01.jpg\"},{\"src\":\"assets/images/equipment/toteram/dust-free-tile-removal-collector-03.jpg\"},{\"src\":\"assets/images/equipment/rubbermaid/18-gallon-bucket.jpg\"},{\"src\":\"assets/images/equipment/rubbermaid/25-gallon-bucket.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/welding-gloves-01.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/stair-tool.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/duct-tape.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/door-hinge-puller.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/6mil-36-inch-by-48-inch-poly-bags.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/amsoil-lithium-grease.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/torque-wrench.jpg\"}],\"quote_only\":\"1\",\"quote_label\":\"Get More Information\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"\",\"price\":\"76,119\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"The DustRam™ System Process And CDCLarue PB-1250 Vacuum Works Exactly Like The Videos Show!\",\"author\":\"Jim Towse\",\"date\":\"03/07/2012\",\"rating\":\"5\",\"description\":\"I had AzHomeFloors.com (Jack King) come out to my house to remove tile and thin set with his patented virtually dust free process. Let me tell you -- It works! We did not cover anything up on the counters, tape off any areas, or even put nic nacs away. Result -- I get more dust with our dogs on a windy day then they produced removing 1500 square feet of tile and thin set – and they did it in a day. It was indeed everything Jack said it would be. I would recommend Jack and his crew to anyone. In fact, I already have to the tile companies that I talked to for replacement of what was taken out. I did make a video of the process if you are interested in seeing it. My concrete slab had some issues that they addressed. http://www.youtube.com/watch?v=WMOWeIQZohQ\"}]}'),(184,8,87,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/dustram/_packages/sapphire-package.png\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-08.jpg\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-07.jpg\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-05.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-03.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-11.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-07.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-05.jpg\"},{\"src\":\"assets/images/equipment/edco/tg10-dust-free-concrete-grinding-02.jpg\"},{\"src\":\"assets/images/equipment/edco/tg10-dust-free-concrete-grinding-08.jpg\"},{\"src\":\"assets/images/equipment/edco/tg10-dust-free-concrete-grinding-09.jpg\"},{\"src\":\"assets/images/equipment/edco/tg10-dust-free-concrete-grinding-04.jpg\"},{\"src\":\"assets/images/equipment/bosch/11264evs-dust-free-tile-demolition-16.jpg\"},{\"src\":\"assets/images/equipment/bosch/11264evs-dust-free-tile-demolition-17.jpg\"},{\"src\":\"assets/images/equipment/4-inch-angle-grinders/makita-9565CV-dust-free-tile-removal-01.jpg\"},{\"src\":\"assets/images/equipment/4-inch-angle-grinders/makita-9565CV-dust-free-tile-removal-02.jpg\"},{\"src\":\"assets/images/equipment/4-inch-angle-grinders/makita-9565CV-dust-free-tile-removal-03.jpg\"},{\"src\":\"assets/images/equipment/4-inch-angle-grinders/makita-9565CV-dust-free-tile-removal-05.jpg\"},{\"src\":\"assets/images/equipment/4-inch-angle-grinders/makita-9565CV-dust-free-tile-removal-06.jpg\"},{\"src\":\"assets/images/equipment/7-inch-angle-grinders/dewalt-d28499-dustfree-tile-removal-01.jpg\"},{\"src\":\"assets/images/equipment/7-inch-angle-grinders/dewalt-d28499-dustfree-tile-removal-09.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/6-inch-concrete-grinding-wheels-dust-free-tile-removal.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-01.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-02.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-03.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/carol-soow-8-3-dustfree-tile-removal-equipment.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/pigtails-dustfree-tile-removal-equipment.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-01.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-02.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-05.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-06.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-07.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/6mil-36-inch-by-48-inch-poly-bags.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/amsoil-lithium-grease.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/duct-tape.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/stair-tool.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/torque-wrench.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/welding-gloves-01.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/welding-gloves-02.jpg\"},{\"src\":\"assets/images/equipment/rubbermaid/18-gallon-bucket.jpg\"},{\"src\":\"assets/images/equipment/rubbermaid/25-gallon-bucket.jpg\"},{\"src\":\"assets/images/equipment/toteram/dust-free-tile-removal-collector-03.jpg\"}],\"quote_only\":\"1\",\"quote_label\":\"Get More Information\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"\",\"price\":\"98,782\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"The DustRam™ System Process And CDCLarue PB-1250 Vacuum Works Exactly Like The Videos Show!\",\"author\":\"Jim Towse\",\"date\":\"03/07/2012\",\"rating\":\"5\",\"description\":\"I had AzHomeFloors.com (Jack King) come out to my house to remove tile and thin set with his patented virtually dust free process. Let me tell you -- It works! We did not cover anything up on the counters, tape off any areas, or even put nic nacs away. Result -- I get more dust with our dogs on a windy day then they produced removing 1500 square feet of tile and thin set – and they did it in a day. It was indeed everything Jack said it would be. I would recommend Jack and his crew to anyone. In fact, I already have to the tile companies that I talked to for replacement of what was taken out. I did make a video of the process if you are interested in seeing it. My concrete slab had some issues that they addressed. http://www.youtube.com/watch?v=WMOWeIQZohQ\"},{\"title\":\"I Googled \\\"Tile Removal And The Rest Is History.  Those CDCLarue PB-1250 Vacuums Are Amazing!\",\"author\":\"Bill Bratt\",\"date\":\"03/24/2012\",\"rating\":\"5\",\"description\":\"I am in the process of renovating an older home for after we retire. I started with the master bath and knew after that, the remaining ~700 SF was going to be more than I wanted to tackle without help. I Googled \\\"tile removal\\\" and Jack\'s website popped up. I watched the video, requested a quote and the rest is history. Jack\'s crew came in, busted it all out, ground the floors and it looks great! Plus, he carted off all the removed tile and the ground thin set powder, \\\"bags of it\\\". I witnessed the entire operation and these guy\'s were efficient and came through on everything they promised. I would highly recommend Jack and his crew for any tile removal project that comes your way!\"}]}'),(183,7,87,'{\"meta_description\":\"The Sapphire package is the most powerful and versatile of the dust free tile removal packages.\",\"meta_keywords\":\"\\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dustram-sapphire\\\"\",\"page_layout\":\"\"}'),(134,7,41,'{\"meta_description\":\"The CDCLarue Hum-B is the perfect way to get off your knees while concrete grinding and thinset removal.\",\"meta_keywords\":\"hum-b \\\"concrete grinders\\\" \\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\" cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram edco tg-10 \\\"dust free\\\" dustfree 7 inch stand up concrete grinders\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"cdclarue-hum-b-grinder\\\"\",\"page_layout\":\"\"}'),(135,8,41,'{\"sku\":\"cdc 103559-20\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/hum-b-01.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/hum-b-02.jpg\"},{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-grinder-02.jpg\"},{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-grinder-03.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"0\",\"weight\":\"150\",\"price\":\"2695\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"Uep-28NJJng\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(518,8,294,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 01.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 02.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 03.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 04.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 05.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 06.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 07.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 08.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 09.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 10.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 11.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 12.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 13.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 14.jpg\"},{\"src\":\"assets/images/equipment/edgeram small/edgeram-tile-removal-equipment 15.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"\",\"price\":\"1500\",\"sale_price\":\"\",\"free_ship\":\"1\",\"video\":\"rJw2zj-edSk\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(347,7,183,'{\"meta_description\":\"The Dust Grabber dustless shroud for grinding with your 7\\\" concrete grinders.\",\"meta_keywords\":\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dust-grabber-shroud-kit-7-short-spindle\\\"\",\"page_layout\":\"\"}'),(484,8,266,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"//www.youtube.com/embed/grgsormb-pw?rel=0\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(194,7,56,'{\"meta_description\":\"If your concrete grinding is limited to garages, driveways and walkways, a PB-1150 will fit the ticket.\",\"meta_keywords\":\"cdclarue, pb-1150, pb 1150, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"pb-1150-vacuum\\\"\",\"page_layout\":\"\"}'),(167,7,80,'{\"meta_description\":\"The Silver package for virtually dust free tile removal is excellent for smaller sized contractors.\",\"meta_keywords\":\"\\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dustram-silver\\\"\",\"page_layout\":\"\"}'),(166,8,80,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/dustram/_packages/silver-package.png\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-05.jpg\"},{\"src\":\"assets/images/equipment/4-inch-angle-grinders/makita-9565CV-dust-free-tile-removal-02.jpg\"},{\"src\":\"assets/images/equipment/7-inch-angle-grinders/dewalt-d28499-dustfree-tile-removal-09.jpg\"},{\"src\":\"assets/images/equipment/bosch/11264evs-dust-free-tile-demolition-16.jpg\"},{\"src\":\"assets/images/equipment/bosch/11264evs-dust-free-tile-demolition-17.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-06.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/hum-b-01.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-05.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-07.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/welding-gloves-01.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/torque-wrench.jpg\"},{\"src\":\"assets/images/equipment/toteram/dust-free-tile-removal-collector-04.jpg\"},{\"src\":\"assets/images/equipment/rubbermaid/18-gallon-bucket.jpg\"},{\"src\":\"assets/images/equipment/rubbermaid/25-gallon-bucket.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/6mil-36-inch-by-48-inch-poly-bags.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/door-hinge-puller.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/stair-tool.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/amsoil-lithium-grease.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/duct-tape.jpg\"}],\"quote_only\":\"1\",\"quote_label\":\"Get More Information\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"\",\"price\":\"31,063\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(156,7,63,'{\"meta_description\":\"Find Out More About The DustRam® System Dust Free Tile Removal Equipment.\",\"meta_keywords\":\"dustfree, dust free, dust-free, dust free tile removal\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"business-opportunities\\\"\",\"page_layout\":\"\"}'),(157,7,35,'{\"meta_description\":\"Are you looking for dust free tile removal?  See if there is a DustRam\\u00ae System tile removal contractor in your area.\",\"meta_keywords\":\"dustram, \\\"dustram system\\\" \\\"tile removal contractors\\\" \\\"tile removal company\\\" \\\"tile removal companies\\\" \\\"dust free tile removal contractors\\\" \\\"dust free tile removal company\\\" \\\"dust free tile removal companies\\\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dust-free-tile-removal-contractors\\\"\",\"page_layout\":\"\"}'),(548,8,316,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"520\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/-gkAuzpz40Y\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(553,8,318,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"520\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/-gkAuzpz40Y\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(550,7,316,'{\"meta_description\":\"DustHogz is a certified DustRam System Contractor providing dust free tile removal service in Sarasota-Naples-Fort Meyers, Florida and surrounding areas using the patented and technologically advanced DustRam® System Equipment. Find out why you should have us remove your saltillo and ceramic tiles without the dust or worry. <==STOP SCROLLING & CLICK HERE.\",\"meta_keywords\":\"Dust Free Tile Removal, Tile Removal, Flooring Removal | Florida, Sarasota, North Sarasota, Sarasota Springs, Englewood, Fruitville, Bee Ridge, Laurel, Bradenton, South Bradenton, Naples, Venice, Venice Gardens, South Venice, North Port, Port Charlotte, Punta Gorda, Fort Myers, Ft. Myers, North Fort Myers, North Ft. Myers, Cape Coral\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"jim-leclerc-dusthogz\\\"\",\"page_layout\":\"\"}'),(175,7,25,'{\"meta_description\":\"When It Comes To Dust Free Tile Removal Equipment, DustRam™ Has All The Solutions!\",\"meta_keywords\":\"\\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dust-free-tile-removal-equipment\\\"\",\"page_layout\":\"\"}'),(180,8,84,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/dustram/_packages/gold-package.png\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-05.jpg\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-08.jpg\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-07.jpg\"},{\"src\":\"assets/images/equipment/edco/tg10-dust-free-concrete-grinding-08.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-09.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-11.jpg\"},{\"src\":\"assets/images/equipment/bosch/11264evs-dust-free-tile-demolition-16.jpg\"},{\"src\":\"assets/images/equipment/bosch/11264evs-dust-free-tile-demolition-17.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/spindle-and-spanner-nuts.jpg\"},{\"src\":\"assets/images/equipment/4-inch-angle-grinders/makita-9565CV-dust-free-tile-removal-02.jpg\"},{\"src\":\"assets/images/equipment/7-inch-angle-grinders/dewalt-d28499-dustfree-tile-removal-09.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/6-inch-concrete-grinding-wheels-dust-free-tile-removal.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-03.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-02.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-01.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/carol-soow-8-3-dustfree-tile-removal-equipment.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/pigtails-dustfree-tile-removal-equipment.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-01.jpg\"},{\"src\":\"assets/images/equipment/extension-cords/rigid-10-3-dustfree-tile-removal-equipment-07.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/6mil-36-inch-by-48-inch-poly-bags.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/amsoil-lithium-grease.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/door-hinge-puller.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/duct-tape.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/stair-tool.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/welding-gloves-01.jpg\"},{\"src\":\"assets/images/equipment/miscellaneous/torque-wrench.jpg\"},{\"src\":\"assets/images/equipment/rubbermaid/18-gallon-bucket.jpg\"},{\"src\":\"assets/images/equipment/rubbermaid/25-gallon-bucket.jpg\"},{\"src\":\"assets/images/equipment/toteram/dust-free-tile-removal-collector-04.jpg\"}],\"quote_only\":\"1\",\"quote_label\":\"Get More Information\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"\",\"price\":\"52,233\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(187,7,88,'{\"meta_description\":\"This is our privacy policy.  Check it out if you\'re interested\",\"meta_keywords\":\"\",\"in_rss\":\"yes\",\"inherit_template\":\"0\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"\\\"\",\"page_layout\":\"\",\"seo_override\":\"0\"}'),(191,8,56,'{\"sku\":\"cdc 103115 Unit By Itself\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-02.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"0\",\"weight\":\"150\",\"price\":\"3,095\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(192,8,57,'{\"sku\":\"cdc 103105 Unit By Itself\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-02.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"150\",\"price\":\"2,195\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(342,8,181,'{\"images\":[{\"src\":\"assets/images/equipment/concrete-grinding-wheels/6-inch-6grit-10-t-segment-grinding-wheel-01.jpg\"},{\"src\":\"assets/images/equipment/concrete-grinding-wheels/6-inch-6grit-10-t-segment-grinding-wheel-02.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"10\",\"price\":\"175\",\"sale_price\":\"135\",\"free_ship\":\"1\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(193,7,26,'{\"meta_description\":\"\",\"meta_keywords\":\"dustram \\\"dust free\\\" dustfree \\\"tile removal\\\" \\\"floor removal\\\" \\\"flooring removal\\\" \\\"tile floor removal\\\" \\\"removal of ceramic tile\\\" \\\"floor tile removal\\\" \\\"ceramic tile removal\\\" \\\"ceramic tile floor removal\\\" \\\"tile adhesive removal\\\" \\\"tile flooring removal\\\" \\\"tools for tile removal\\\" \\\"tile removal tools\\\" \\\"tile removal tool\\\" \\\"tile removal crew\\\" \\\"edco tg-10\\\" cdclarue pb-1250 pb1250 az phoenix tempe chandler mesa scottsdale tucson prescott flagstaff glendale gilbert peoria \\\"sun city\\\" surprise\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"about-dustram\\\"\",\"page_layout\":\"\"}'),(195,7,57,'{\"meta_description\":\"A PB-1050 vacuum provides dust collection for smaller sized concrete grinding and surface preparation projects.\",\"meta_keywords\":\"cdclarue, pb-1050, pb 1050, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"pb-1050-vacuum\\\"\",\"page_layout\":\"\"}'),(196,7,62,'{\"meta_description\":\"I have coupons for CDC Larue. Don\'t pay retail. <=STOP SCROLLING & CLICK HERE\",\"meta_keywords\":\"cdclarue, pb-1250, pb 1250, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"cdclarue\\\"\",\"page_layout\":\"\"}'),(197,7,58,'{\"meta_description\":\"\",\"meta_keywords\":\"cdclarue, pb-550, pb 550, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"pb-550-vacuum\\\"\",\"page_layout\":\"\"}'),(199,8,115,'{\"sku\":\"cdc 103105H Unit By Itself\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/pb-1250-vacuum-02.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"1\",\"weight\":\"150\",\"price\":\"2395\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(200,8,58,'{\"sku\":\"cdc 103550H PKG\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/pb-550-vacuum-01.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-550-vacuum-02.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/pb-550-vacuum-03.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"3\",\"weight\":\"100\",\"price\":\"1089\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(207,7,42,'{\"meta_description\":\"\",\"meta_keywords\":\"cdclarue, halo, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"halo\\\"\",\"page_layout\":\"\"}'),(201,7,115,'{\"meta_description\":\"A PB-565 is a Hepa rated vacuum, providing dust collection for hand tools that saw, cut and grind.\",\"meta_keywords\":\"cdclarue, pb-565, pb 565, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"pb-1050-hepa-vacuum\\\"\",\"page_layout\":\"\"}'),(202,8,42,'{\"sku\":\"cdc 103776\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/halo.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"25\",\"price\":\"135\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(203,8,90,'{\"sku\":\"cdc 103611SC\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/2-inch-by-25-foot-vacuum-ho.gif\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"45\",\"price\":\"269\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(204,8,91,'{\"sku\":\"cdc 103621\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/air-filters.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"17\",\"price\":\"220\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(205,8,92,'{\"sku\":\"cdc 103625\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/h-13-filter-kit-pb-550.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"12\",\"price\":\"95\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(206,8,93,'{\"sku\":\"cdc 103620\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/certified-hepa-filter-pb-550.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"10\",\"price\":\"96\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(208,7,33,'{\"meta_description\":\"\",\"meta_keywords\":\"cdclarue, commercial vacuum hose, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"commercial-vacuum-hose-2-inch\\\"\",\"page_layout\":\"\"}'),(209,7,90,'{\"meta_description\":\"\",\"meta_keywords\":\"cdclarue, commercial vacuum hose, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"static-conductive-vacuum-hose-2-inch\\\"\",\"page_layout\":\"\"}'),(211,8,55,'{\"sku\":\"cdc 103587-01\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-seal-kit.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"8\",\"price\":\"42\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(223,8,102,'{\"sku\":\"cdc 401829-02\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-06.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"35\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(383,8,205,'{\"sku\":\"cdc 402157-01\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-06.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"35\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(217,8,61,'{\"wrap_sidebar\":\"1\"}'),(218,8,119,'{\"faqs\":[{\"question\":\"I\'ve been hearing a lot about the DustRam™ System.  What exactly is this?\",\"answer\":\"The DustRam™ System is a combination of patented and patent pending tile removal equipment, which when operated by trained professionals, allows an incredibly fast and ultra-clean way to remove tile and thinset in your home or business.  Quite simply, the equipment and process is so advanced, plastic sheeting is not required for any protection against dust.  Indoor air quality can be maintained at incredibly high levels, even while tile and thinset are being removed unbelievably fast.  If you\'ve watched some of our videos, you can be confident you\'re watching an accurate depiction of the DustRam™ System process in action.\"},{\"question\":\"What type of homeowner or individual is the DustRam™ System tile removal & floor preparation services designed to service?\",\"answer\":\"The DustRam™ System is specifically designed for those who are health conscious, particular and quality driven.  The DustRam™ System maintains the cleanliness of your home\'s contents and personal items during the floor remodeling and floor preparation process.  So if you\'re health conscious, have health issues, or suffer from severe allergies, this is a golden opportunity to update and beautify your home in the healthiest and greenest way possible.\"},{\"question\":\"I\'ve never had tile removed before and I\'ve heard it can be a real mess.  Is it really that dusty and can it be avoided with the DustRam™ System?\",\"answer\":\"Ah, you\'ve obviously heard some of the horror stories about the dust created from traditional tile and saltillo removal methods.  Sadly, those stories are true, but not when it comes to the DustRam™ System for tile removal.  The DustRam™ System is ULTRA-CLEAN and there\'s nothing faster at removing tile and thinset while leaving your home spotless.  Maybe you thought you were forever doomed to living with the same dated and ugly tile or saltillo because you feared the mess involved.  There is a choice now!  The DustRam™ System allows your home or business to be remodeled without the fear of toxic, dangerous concrete dust invading and overtaking every square inch of your living space.\"},{\"question\":\"My flooring retailer, designer or installer assures me using plastic and tape will work just fine to contain the mess and the dust.  Is this a professional approach and does this really work?\",\"answer\":\"If you\'re particular about your home or have health issues, the answer is no.  Plastic might help keep some dust contained, such as in a lone bathroom.  However, if you\'re removing tile and thinset, especially saltillo, travertine or slate throughout your home, simply using plastic and tape does little to address your walls, ceilings, furniture, closets, window treatments, electronics, etc.  Even if it could be made to work, removing the plastic is extremely dusty once the plastic is covered in dust.  The key to the DustRam™ System is capturing all the dust the very split second it\'s created, preventing the dust from migrating through the air.\"},{\"question\":\"I have an occupied home or business and I\'m really concerned about my stuff getting covered in dust.  Is it really true you can remove tile and thinset virtually dust free with the DustRam™ System?\",\"answer\":\"Absolutely!  Please watch some of our videos, and please watch them in their entirety.  Many of the longer videos document the full process and are edited only for time.\"},{\"question\":\"I\'m purchasing a home and when I take possession the home will be empty.  Do I still need the DustRam™ System tile removal services?\",\"answer\":\"Yes, the DustRam™ System can prevent very expensive damage to your concrete and damage to your central air handling system.  If traditional low cost or even \\\"free\\\" tile removal services are used, you run the real risk of severe concrete damage from other competitor\'s tile and thinset removal process.  Your air ducts and heating and cooling system can also become covered in fine dust, requiring expensive and professional cleaning.  Your walls and even your ceilings will also be covered with very fine concrete dust.  The DustRam™ System not only preserves the integrity of your concrete, but it also dramatically contributes to the overall flatness of your concrete, all dust free.  You will save money on concrete repair, materials, installations and the cleaning of your home because of the precision of our services.\"},{\"question\":\"I\'m a designer or flooring retailer/contractor and I already have installers doing my tear outs.  Why would I want to change over to using the DustRam™ System?\",\"answer\":\"The DustRam™ System gives you access to a brand new market, which is currently untouchable in your business model.  You are missing out on ALL the particular customers, including those with extreme health and allergy issues.  These types of clients often are unwilling to remodel their homes or change their old flooring because they are EXTREMELY aware of the negative side effects of careless and sloppy tile and saltillo removal services.  Offering this service in conjunction with the traditional method of tile removal opens your business up to endless possibilities.  The time will soon come where if you\'re not offering the DustRam™ System as a service, your competitors who are will be getting those clients.\"}],\"video_1\":\"<iframe width=\\\"420\\\" height=\\\"315\\\" src=\\\"http://www.youtube.com/embed/Y1L8uRApYeQ?rel=0\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(219,8,20,'{\"site_start\":\"24\",\"error_page\":\"22\",\"unauthorized_page\":\"23\",\"default_template\":\"\",\"emailsender\":\"\",\"emailsubject\":\"\",\"signupemail_message\":\"\",\"pwdreminder_message\":\"\"}'),(332,7,177,'{\"meta_description\":\"The EASIEST tile removal service. AND it\'s DUST-FREE. In-Action Video Testimonials. FINALLY you can relax and have us remove your saltillo and ceramic tiles without the dust or worry. <==STOP SCROLLING & CLICK HERE.\",\"meta_keywords\":\"clean tile removal, dustless tile removal, tile removal tools, saltillo removal, dust free tile removal, tile removal, tile removal specialist, removing tile, removing ceramic tile, ceramic tile removal, remove tile, floor tile removal, remove ceramic tile, floor removal, thinset removal, thin set removal, removing thinset, removing thin set\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"phoenix-tile-removal\\\"\",\"page_layout\":\"\"}'),(221,8,104,'{\"sku\":\"cdc 401001\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/2-inch-by-14-inch-floor-sweep.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"6\",\"price\":\"8\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(220,8,30,'{\"wrap_sidebar\":\"0\"}'),(222,8,106,'{\"sku\":\"cdc 401003\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/2-inch-by-18-inch-plastic-wand.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"8\",\"price\":\"8\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(381,8,204,'{\"sku\":\"cdc 401953-01\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-06.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"35\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(379,8,203,'{\"sku\":\"cdc 401849-0\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-06.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"35\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(377,8,202,'{\"sku\":\"cdc 401848-0\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-06.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"35\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(229,8,94,'{\"sku\":\"cdc 401110\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/2-inch-y-conector.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"4\",\"price\":\"40\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(230,8,105,'{\"sku\":\"cdc 401002\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/crevice-tool-01.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"8\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(231,8,95,'{\"sku\":\"cdc 401828\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/spanner-nut.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"2.5\",\"price\":\"18\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(232,8,96,'{\"sku\":\"cdc 401976\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/spindle-nut.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"2.5\",\"price\":\"45\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(274,8,147,'{\"images\":[{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-grinder-01.jpg\"},{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-grinder-02.jpg\"},{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-grinder-03.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"62\",\"price\":\"1795\",\"sale_price\":\"1230\",\"free_ship\":\"1\",\"video\":\"\",\"blurb\":\"This grinder is sold as is.\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(284,8,164,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-6grit-12-segment-turbo-concrete-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"8\",\"price\":\"125\",\"sale_price\":\"75\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(288,8,166,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-6-16-30-50-100-200-400grit-22-segment-turbo-concrete-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"67.5\",\"price\":\"1125\",\"sale_price\":\"500\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(289,7,166,'{\"meta_description\":\"For Sale:  7\\\" Turbo Concrete Grinding Wheels, 22 Segment, 6, 16, 30, 50, 100, 200, 400 grit \",\"meta_keywords\":\"used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"7-inch-30grit-22-segment-turbo-concrete-grinding-wheel\\\"\",\"page_layout\":\"\"}'),(290,7,152,'{\"meta_description\":\"7\\\" Diamond Ring Polishing Rings Resin Pads (12 Pads / Assorted Grits) For Sale\",\"meta_keywords\":\"used concrete grinding equipment, used concrete polishing equipment, diamond ring polishing rings, resin pads\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"7-inch-diamond-ring-polishing-rings-resin-pads\\\"\",\"page_layout\":\"\"}'),(299,7,168,'{\"meta_description\":\"For Sale:  Used 7\\\" Double Row Concrete Grinding Wheels, 30grit\",\"meta_keywords\":\"used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"7-double-row-concrete-grinding-wheels-30grit\\\"\",\"page_layout\":\"\"}'),(300,8,168,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-30grit-double-row-concrete-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"15\",\"price\":\"250\",\"sale_price\":\"130\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(293,7,167,'{\"meta_description\":\"For Sale:  7\\\" Arrow Concrete Grinding Wheels, 6, 30, 50, 100, 200, 400, 600 grit\",\"meta_keywords\":\"used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"7-30-50-100-200-400-600-grit-arrow-concrete-grinding-wheels\\\"\",\"page_layout\":\"\"}'),(294,8,167,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-6-30-50-100-200-400-600-grit-arrow-concrete-grinding-wheels.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"67.5\",\"price\":\"1125\",\"sale_price\":\"500\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(295,7,164,'{\"meta_description\":\"For Sale:  7\\\" Turbo Concrete Grinding Wheel, 12 Segment, 6grit, Extra High Quality Diamonds\",\"meta_keywords\":\"used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"7-turbo-concrete-grinding-wheel-6grit-12-segment-extra-high-quality-diamonds\\\"\",\"page_layout\":\"\"}'),(303,7,169,'{\"meta_description\":\"For Sale:  Used 7\\\" T Segment Concrete Grinding Wheels, 30grit\",\"meta_keywords\":\"used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"7-inch-t-segment-concrete-grinding-wheels-30grit\\\"\",\"page_layout\":\"\"}'),(304,8,169,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-30grit-t-segment-concrete-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"15\",\"price\":\"250\",\"sale_price\":\"130\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(317,7,173,'{\"meta_description\":\"For Sale:  7\\\" PCD Type-B Grinding Wheels\",\"meta_keywords\":\"7\\\", pcd type-b grinding wheel, used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"7-pcd-type-b-grinding-wheels\\\"\",\"page_layout\":\"\"}'),(318,8,173,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-pcd-type-b-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"8\",\"price\":\"200\",\"sale_price\":\"125\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(307,7,170,'{\"meta_description\":\"For Sale:  6\\\" Yellow Turbo Concrete Grinding Wheels, 20 Segment, 6grit\",\"meta_keywords\":\"used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"6-turbo-concrete-grinding-wheels-20-segment-6grit\\\"\",\"page_layout\":\"\"}'),(308,8,170,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/6-inch-6grit-20-segment-yellow-turbo-concrete-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"15\",\"price\":\"200\",\"sale_price\":\"100\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(309,7,171,'{\"meta_description\":\"For Sale:  6\\\" Red Turbo Concrete Grinding Wheels, 20 Segment, 6grit\",\"meta_keywords\":\"used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"6-turbo-concrete-grinding-wheels-20-segment-6grit\\\"\",\"page_layout\":\"\"}'),(310,8,171,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/6-inch-6grit-20-segment-red-turbo-concrete-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"23\",\"price\":\"300\",\"sale_price\":\"150\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(313,7,172,'{\"meta_description\":\"For Sale:  New 6\\\" Green Turbo Concrete Grinding Wheels, 20 Segment, 6grit\",\"meta_keywords\":\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"6-green-turbo-concrete-grinding-wheels-20-segment-6grit\\\"\",\"page_layout\":\"\"}'),(314,8,172,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/6-inch-30grit-20-segment-green-turbo-concrete-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"22.5\",\"price\":\"300\",\"sale_price\":\"150\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(282,7,163,'{\"meta_description\":\"We have a kit of (8) 7\\\" velcro aluminum backing plates, and assortment of 3mm resin pads\",\"meta_keywords\":\"7\\\" concrete polishing pads, concrete polishing pads, used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"7-inch-3-mm-resin-pads-for-concrete-polishing\\\"\",\"page_layout\":\"\"}'),(322,8,174,'{\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-pcd-type-a-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"10\",\"price\":\"200\",\"sale_price\":\"100\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(257,8,135,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/spanner-nut.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"3\",\"price\":\"18\",\"sale_price\":\"17.10\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(335,8,65,'{\"wrap_sidebar\":\"1\"}'),(329,7,176,'{\"meta_description\":\"CDCLarue Hum-B Dewalt Concrete Polishers\",\"meta_keywords\":\"Cdclarue, hum-b, hum-b concrete polisher, hum-b concrete polishers, concrete polishing\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"hum-b-dewalt-concrete-polisher\\\"\",\"page_layout\":\"\"}'),(330,8,176,'{\"sku\":\"cdc 103622-12\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/hum-b-01.jpg\"}],\"quote_only\":\"1\",\"quote_label\":\"Request a Quote With Shipping\",\"too_many_to_ship_quantity\":\"0\",\"weight\":\"150\",\"price\":\"2695\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(331,7,91,'{\"meta_description\":\"For Sale:  H-13 Filter Kit (3/Kit)\",\"meta_keywords\":\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"h-13-replacement-filter-kit\\\"\",\"page_layout\":\"\"}'),(334,7,65,'{\"meta_description\":\"The Logic And Strategy Behind The DustRam\\u2122 System:  The Reasoning Of How Dust Free Tile Removal Equipment Is Combined\",\"meta_keywords\":\"\\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"edco\\\"\",\"page_layout\":\"\"}'),(325,8,175,'{\"sku\":\"6\\\" PCD Type-A Wheel\",\"images\":[{\"src\":\"assets/images/equipment/concrete-grinding-wheels/6-inch-pcd-type-a-wheel.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"10\",\"price\":\"245\",\"sale_price\":\"205\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(326,7,175,'{\"meta_description\":\"For Sale:  6\\\" PCD New Type-A Grinding Wheels\",\"meta_keywords\":\"6\\\", pcd type-a grinding wheel, used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"6-pcd-new-type-a-grinding-wheels\\\"\",\"page_layout\":\"\"}'),(321,7,174,'{\"meta_description\":\"For Sale:  7\\\" PCD Used 1 Hour - Type-A Grinding Wheel\",\"meta_keywords\":\"7\\\", pcd type-a grinding wheel, used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"null\",\"body_style\":\"id=\\\"7-pcd-used-type-a-grinding-wheel\\\"\",\"page_layout\":\"null\"}'),(279,8,163,'{\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-resin-concrete-polishing-pads-01.jpg\"},{\"src\":\"assets/images/equipment/used/7-inch-resin-concrete-polishing-pads-02.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"25\",\"price\":\"800\",\"sale_price\":\"500\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(281,7,120,'{\"meta_description\":\"While supplies last, we have quality used concrete grinders and concrete grinding wheels, resin pads, and pcd type a & b wheels available for purchase.\",\"meta_keywords\":\"concrete grinding wheels, pcd wheels, pcd type a, pcd type b, used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"new-used-concrete-grinding-and-concrete-polishing-equipment-for-sale\\\"\",\"page_layout\":\"\"}'),(273,7,148,'{\"meta_description\":\"We currently have 1 barely used CDCLarue Hum-b Dewalt Polisher for sale.  Approximately 8 hours on the unit.\",\"meta_keywords\":\"cdclarue, hum-b, used concrete polishing equipment, concrete polishing equipment, concrete grinding resin pads, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"used-hum-b-dewalt-concrete-polisher-for-sale\\\"\",\"page_layout\":\"\"}'),(272,8,148,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-polisher-06.jpg\"},{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-polisher-01.jpg\"},{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-polisher-02.jpg\"},{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-polisher-03.jpg\"},{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-polisher-04.jpg\"},{\"src\":\"assets/images/equipment/used/used-hum-b-dewalt-concrete-polisher-05.jpg\"},{\"src\":\"assets/images/equipment/used/7-inch-diamond-ring-polishing-ring-resin-pads.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"\",\"price\":\"1995\",\"sale_price\":\"1630 (Free Shipping)\",\"free_ship\":\"1\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(275,7,147,'{\"meta_description\":\"We currently have a CDCLarue Hum-b Dewalt Grinder for sale.  Approximately 30 hours.\",\"meta_keywords\":\"cdclarue, hum-b, concrete grinding equipment, concrete grinding wheels, used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"used-hum-b-dewalt-concrete-grinder-for-sale\\\"\",\"page_layout\":\"\"}'),(278,8,152,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-diamond-ring-polishing-ring-resin-pads.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"16\",\"price\":\"500\",\"sale_price\":\"250\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(348,8,183,'{\"sku\":\"cdc 103568-05\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-shroud-7-inch.jpg\"},{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-shroud-7-inch-02.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"17\",\"price\":\"164\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(338,8,179,'{\"images\":[{\"src\":\"assets/images/featuredproduct1.png\"}],\"price\":\"95\",\"sale_price\":\"85\",\"video\":\"turPQh-jcaU\",\"blurb\":\"This works exactly like it should.\",\"reviews\":[{\"title\":\"Review this bitchin\' product\",\"author\":\"Jack King\",\"date\":\"09/10/2011\",\"rating\":\"5\",\"description\":\"I wish everyone could have the use of this product!\"}]}'),(339,7,179,'{\"meta_description\":\"There is nothing like the power of a CDCLarue PB-1250 Vacuum.  Here at DustRam LLC, we believe the system is only as good as the vacuum.\",\"meta_keywords\":\"cdclarue \\\"cdclarue pb-1250\\\" \\\"tile removal equipment\\\" \\\"dust free tile removal equipment\\\" \",\"in_rss\":\"yes\",\"inherit_template\":\"0\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"cdclarue-pb-1250\\\"\",\"page_layout\":\"\",\"seo_override\":\"0\"}'),(352,8,184,'{\"sku\":\"cdc 401170-5sec\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/5-5-5-cdclarue-pb-1250-circuit-board.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"3\",\"price\":\"175\",\"sale_price\":\"150\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(351,7,184,'{\"meta_description\":\"This circuit board is unique to the DustRam System.  It allows a full cleaning cycle of all 3 filters to be accomplished in 15 seconds\",\"meta_keywords\":\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"5-5-5-circuit-board\\\"\",\"page_layout\":\"\"}'),(357,7,67,'{\"meta_description\":\"For Sale:  PCD Type-A wheels recommended by the DustRam™ System for the removal of adhesive, glue and paint.\",\"meta_keywords\":\"pcd, pcd type a, pcd type-a, concrete grinding wheels, diamond grinding wheels\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"concrete-grinding-wheels-for-sale-extra-high-quality\\\"\",\"page_layout\":\"\"}'),(360,8,185,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/used/7-inch-pcd-type-a-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"6\",\"price\":\"150\",\"sale_price\":\"75\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(361,7,185,'{\"meta_description\":\"For Sale:  7\\\" Turbo Concrete Grinding Wheel, 12 Segment, 30grit, Extra High Quality Diamonds \",\"meta_keywords\":\"used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"7-pcd-used-type-a-grinding-wheel\\\"\",\"page_layout\":\"\"}'),(365,8,198,'{\"sku\":\"cdc 401831-01\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-06.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"35\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(364,7,198,'{\"meta_description\":\"\",\"meta_keywords\":\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"cdclarue-dust-grabber-adapter-401831-01\\\"\",\"page_layout\":\"\"}'),(368,8,199,'{\"sku\":\"cdc 401833-01\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-06.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"35\",\"sale_price\":\"33.25\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(371,8,200,'{\"sku\":\"cdc 401841-01\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-06.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"35\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(370,7,200,'{\"meta_description\":\"\",\"meta_keywords\":\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"cdclarue-dust-grabber-adapter-401841-01\\\"\",\"page_layout\":\"\"}'),(375,8,201,'{\"sku\":\"cdc 401842-01\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-06.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"35\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(414,7,119,'{\"meta_description\":\"Find out more about the DustRam™ System method for tile removal, including ceramic, porcelain, stone, saltillo and slate.  Compare the DustRam™ System against outdated, messy and damaging tile removal methods and decide which one you\'d choose.\",\"meta_keywords\":\"dustram \\\"dust free\\\" dustfree \\\"tile removal\\\" \\\"floor removal\\\" \\\"flooring removal\\\" \\\"tile floor removal\\\" \\\"removal of ceramic tile\\\" \\\"floor tile removal\\\" \\\"ceramic tile removal\\\" \\\"ceramic tile floor removal\\\" \\\"tile adhesive removal\\\" \\\"tile flooring removal\\\" \\\"tools for tile removal\\\" \\\"tile removal tools\\\" \\\"tile removal tool\\\" \\\"tile removal crew\\\" \\\"edco tg-10\\\" cdclarue pb-1250 pb1250 az phoenix tempe chandler mesa scottsdale tucson prescott flagstaff glendale gilbert peoria \\\"sun city\\\" surprise\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"tile-removal-faqs\\\"\",\"page_layout\":\"\"}'),(387,8,207,'{\"sku\":\"cdc 401146\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/cdclarue-premium-24-segment-7-inch-grinding-wheel.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"8\",\"price\":\"210\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(400,8,213,'{\"sku\":\"cdc 402032\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-02.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"36\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(398,8,212,'{\"sku\":\"cdc 103950\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-shroud-4-inch.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"12\",\"price\":\"113\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(402,8,214,'{\"sku\":\"cdc 40233\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-adapter-02.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"5\",\"price\":\"36\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(415,7,27,'{\"meta_description\":\"Contact us about the DustRam™ System for virtually dust free tile, stone, saltillo, slate and thinset removal.\",\"meta_keywords\":\"dustram \\\"dust free\\\" dustfree \\\"tile removal\\\" \\\"floor removal\\\" \\\"flooring removal\\\" \\\"tile floor removal\\\" \\\"removal of ceramic tile\\\" \\\"floor tile removal\\\" \\\"ceramic tile removal\\\" \\\"ceramic tile floor removal\\\" \\\"tile adhesive removal\\\" \\\"tile flooring removal\\\" \\\"tools for tile removal\\\" \\\"tile removal tools\\\" \\\"tile removal tool\\\" \\\"tile removal crew\\\" \\\"edco tg-10\\\" cdclarue pb-1250 pb1250 az phoenix tempe chandler mesa scottsdale tucson prescott flagstaff glendale gilbert peoria \\\"sun city\\\" surprise\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"contact\\\"\",\"page_layout\":\"\"}'),(426,7,229,'{\"meta_description\":\"For sale:  These concrete grinding wheels are specially designed for the DustRam System for tile and thinset removal.  Ultra-fast removal!\",\"meta_keywords\":\"concrete grinding wheels, concrete grinding, tile removal\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"concrete-grinding-wheels-for-sale-extra-high-quality\\\"\",\"page_layout\":\"\"}'),(417,8,230,'{\"images\":[{\"src\":\"assets/images/featuredproduct1.png\"}],\"price\":\"200\",\"sale_price\":\"\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(418,7,231,'{\"meta_description\":\"For Sale: 6\\\", 6grit, Extra Soft Bond, T-segment, extra high quality concrete grinding wheel.  It\'s perfect for removing very HARD thinset or concrete.\",\"meta_keywords\":\"6\\\" grinding wheels, 6\\\" concrete grinding wheels, t-segment, t-segment concrete grinding wheels, t-segment grinding wheels, concrete grinding wheels\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"6-concrete-grinding-wheel-6grit-t-segment-extra-soft-bond\\\"\",\"page_layout\":\"\"}'),(419,8,231,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/concrete-grinding-wheels/6-inch-6grit-10-t-segment-grinding-wheel-01.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"10\",\"price\":\"125\",\"sale_price\":\"105\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(420,8,233,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-03.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"19.3\",\"price\":\"325\",\"sale_price\":\"250\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(421,7,233,'{\"meta_description\":\"This MPP250-B 10\\\" concrete grinding wheel is perfect for removing very HARD thinset or concrete.\",\"meta_keywords\":\"MPP250-B, MPP250-B concrete grinding wheels, MPP250-B wheels, 10\\\" concrete grinding wheels\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"concrete-grinding-wheel-10-inch-30grit-10-segment-extra-soft-bond\\\"\",\"page_layout\":\"\"}'),(422,7,235,'{\"meta_description\":\"This MPP250-B 10\\\" concrete grinding wheel is perfect for removing very SOFT thinset or concrete.\",\"meta_keywords\":\"MPP250-B, MPP250-B concrete grinding wheels, MPP250-B wheels, 10\\\" concrete grinding wheels\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"mpp250-b-concrete-grinding-wheel-10-inch-30grit-10-segment-hard-bond\\\"\",\"page_layout\":\"\"}'),(423,8,235,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/concrete-grinding-wheels/10-inch-concrete-grinding-wheels-dust-free-tile-removal-03.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"19.3\",\"price\":\"325\",\"sale_price\":\"250\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}]}'),(477,7,267,'{\"meta_description\":\"\",\"meta_keywords\":\"DustRam, DustRam System, Tile Removal, Ceramic Tile Removal, tequesta, florida, Jupiter, Hobe Sound, Palm Beach Gardens, North Palm Beach, Lake Park, Riviera Beach, Palm City, Century Village, Stuart, West Palm Beach, Palm Beach, Royal Palm Beach, Jensen Beach, Wellington, Palm Springs\\r\\n\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"phoenix-tile-removal-steve-linnemeyer\\\"\",\"page_layout\":\"\"}'),(433,8,238,'{\"sku\":\"cdc 103778\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/40-55-gallon-open-head-drum-pre-separator.gif\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"85\",\"price\":\"945\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(434,7,238,'{\"meta_description\":\"CDCLarue 40/55 gallon drum,open head, pre-separator.  Easily fits on 40 and 55 gallon drums to make dust collection easy, fast, and even more effective.\",\"meta_keywords\":\"pre-separator, preseparator, preseparators, pre-separators, cdclarue, cdclarue pb-1250, cdclarue pb1250, pb-1250, pb 1250, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"40-55-gallon-drum-open-head-pre-separator\\\"\",\"page_layout\":\"\"}'),(445,7,243,'{\"meta_description\":\"For Sale: 6\\\", 30grit, Hard Bond, T-segment, extra high quality concrete grinding wheel.  It\'s perfect for removing EXTREMELY SOFT thinset or concrete.\",\"meta_keywords\":\"6\\\" grinding wheels, 6\\\" concrete grinding wheels, t-segment, t-segment concrete grinding wheels, t-segment grinding wheels, concrete grinding wheels\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"6-concrete-grinding-wheel-30grit-6mm-t-segment-hard-bond\\\"\",\"page_layout\":\"\"}'),(448,8,244,'{\"sku\":\"cdc 401977\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/spindle-nut.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"2.5\",\"price\":\"45\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(429,8,237,'{\"sku\":\"cdc 103617\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/20-gallon-pre-separator.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"85\",\"price\":\"845\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(430,7,237,'{\"meta_description\":\"CDCLarue 20 gallon pre-separator makes dust collection easy, fast, and even more effective.\",\"meta_keywords\":\"pre-separator, preseparator, preseparators, pre-separators, cdclarue, cdclarue pb-1250, cdclarue pb1250, pb-1250, pb 1250, dust collection, dust collection systems, dust collection equipment, industrial vacuum, industrial vacuums, dust collector, ruwac, portable dust collector, portable dust collectors, vacuum concrete, pulsebac, pulse bac\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"cdclarue-20-gallon-pre-separator\\\"\",\"page_layout\":\"\"}'),(437,8,239,'{\"sku\":\"cdc hum-b adapter kit\",\"images\":[{\"src\":\"\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"30\",\"price\":\"319\",\"sale_price\":\"303\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(438,7,239,'{\"meta_description\":\"Have a CDCLarue Hum-b Polisher and want to quickly change it over to become a CDCLarue Hum-b Grinder, in as little as 10 minutes? Click Here <--\",\"meta_keywords\":\"cdclarue, cdclarue hum-b, cdclarue hum-b grinder, cdclarue hum-b polisher\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"adapt-a-hum-b-polisher-to-become-a-hum-b-grinder\\\"\",\"page_layout\":\"\"}'),(444,8,242,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/concrete-grinding-wheels/6-inch-6grit-10-t-segment-grinding-wheel-01.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"15\",\"price\":\"150\",\"sale_price\":\"135\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(440,8,111,'{\"wrap_sidebar\":\"0\",\"video_1\":\"<iframe width=\\\"420\\\" height=\\\"315\\\" src=\\\"http://www.youtube.com/embed/HkJj2Cb3PGo?rel=0\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"}'),(443,7,242,'{\"meta_description\":\"For Sale: 6\\\", 30grit, Extra Soft Bond, T-segment, extra high quality concrete grinding wheel.  It\'s perfect for removing very MEDIUM to HARD thinset or concrete.\",\"meta_keywords\":\"6\\\" grinding wheels, 6\\\" concrete grinding wheels, t-segment, t-segment concrete grinding wheels, t-segment grinding wheels, concrete grinding wheels\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"6-concrete-grinding-wheel-30grit-6mm-t-segment-extra-soft-bond\\\"\",\"page_layout\":\"\"}'),(446,8,243,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/concrete-grinding-wheels/6-inch-6grit-10-t-segment-grinding-wheel-01.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"10\",\"price\":\"125\",\"sale_price\":\"105\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(450,8,245,'{\"sku\":\"cdc 103910\",\"images\":[{\"src\":\"assets/images/equipment/cdclarue/dust-grabber-seal-kit.jpg\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"8\",\"price\":\"42\",\"sale_price\":\"\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(452,8,63,'{\"wrap_sidebar\":\"1\",\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(511,7,289,'{\"meta_description\":\"\",\"meta_keywords\":\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dustram-legal\\\"\",\"page_layout\":\"\"}'),(514,8,290,'{\"wrap_sidebar\":\"1\",\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(519,7,294,'{\"meta_description\":\"Do you regularly tear out tile and thinset?  The EdgeRam™ Small is your best choice for removing thinset from around baseboards & toe-kicks.\",\"meta_keywords\":\"\\\"concrete grinder\\\" \\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"purchase-a-edgeram™-small\\\"\",\"page_layout\":\"\"}'),(491,8,280,'{\"sku\":\"\",\"images\":[{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-07.jpg\"},{\"src\":\"assets/images/equipment/dustram/dust-free-tile-removal-equipment-08.jpg\"}],\"quote_only\":\"0\",\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"\",\"price\":\"7,195.00 + shipping\",\"sale_price\":\"\",\"free_ship\":\"1\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(501,8,285,'{\"wrap_sidebar\":\"1\",\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(493,7,280,'{\"meta_description\":\"\",\"meta_keywords\":\"\\\"tile removal\\\" \\\"flooring removal\\\" \\\"demolition equipment\\\" pb-1250 \\\"tile demolition\\\" \\\"tile removal equipment\\\" \\\"flooring demolition\\\", 11264evs cdclarue \\\"dust free tile removal\\\" \\\"ceramic tile removal equipment\\\" \\\"dustless tile removal\\\" dustram \\\"bosch chipping hammer\\\" edco tg-10 \\\"dust free\\\" dustfree\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"single-dustram-purchase-process\\\"\",\"page_layout\":\"\"}'),(459,8,249,'{\"sku\":\"cdc 103580\",\"images\":[{\"src\":\"\"},{\"src\":\"\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"8\",\"price\":\"187\",\"sale_price\":\"178\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(461,8,250,'{\"sku\":\"cdc 401027\",\"images\":[{\"src\":\"\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"1\",\"price\":\"4\",\"sale_price\":\"3.80\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(463,8,251,'{\"sku\":\"cdc 401991\",\"images\":[{\"src\":\"\"}],\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"1\",\"price\":\"4\",\"sale_price\":\"3.80\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(485,8,268,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"520\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/-gkAuzpz40Y\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(481,7,269,'{\"meta_description\":\"Looking for a quality tile removal contractor in Texas? <==STOP SCROLLING & CLICK HERE\",\"meta_keywords\":\"tile removal, dallas, texas, dallas texas tile removal, dallas texas, tx tile removal, tx, paris, paris tile removal\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"tile-removal-texas\\\"\",\"page_layout\":\"\"}'),(482,7,266,'{\"meta_description\":\"Looking for a quality DustRam® System Dust Free Tile Removal Contractor in Florida? <==STOP SCROLLING & CLICK HERE\",\"meta_keywords\":\"florida tile removal, tile removal florida, Dust Free Tile Removal, Tile Removal, Flooring Removal | Florida, Jacksonville, Miami, Tampa, Orlando, St. Petersburg, Hialeah, Tallahassee, Fort Lauderdale, Port St. Lucie, Cape Coral, Pembroke Pines\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"tile-removal-florida\\\"\",\"page_layout\":\"\"}'),(483,7,36,'{\"meta_description\":\"Looking for a quality dust free tile removal contractor in Arizona? <==STOP SCROLLING & CLICK HERE\",\"meta_keywords\":\"Dust Free Tile Removal, Tile Removal, Flooring Removal | Arizona, Ahwatukee, Apache Junction, Casa Grande, Chandler, Central Phoenix, Desert Mountain, East Valley, Gilbert, Gold Canyon, Maricopa, Mesa, Paradise Valley, Peoria, Phoenix, Phx, Queen Creek, Scottsdale, Tempe, Prescott, Prescott Valley, Sedona, Tucson, Cottonwood, Flagstaff and Tucson\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"tile-removal-arizona\\\"\",\"page_layout\":\"\"}'),(478,7,268,'{\"meta_description\":\"First Floors, LLC brings in the elite DustRam System to Iverness, FL to make tile removal cleaner and faster than ever.  <==FIND OUT HERE!\",\"meta_keywords\":\"DustRam, DustRam System, Tile Removal, Ceramic Tile Removal, Florida, Inverness, Citrus County, Orlando, Tampa, Spring Hill, Lady Lake, Ocala, Leesburg, Tavares, Eustis, Clermont, Clairmont, Bayonet Point, Mount Dora, Zephyrhills, Jasmine Estates, New Port Richey, Lutz, Winter Garden, Elfers\\n\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"mike-antonetti-first-floors-llc\\\"\",\"page_layout\":\"\"}'),(475,8,265,'{\"sku\":\"6\\\" PCD Type-B Wheel\",\"quote_only\":\"0\",\"quote_label\":\"Request a Quote\",\"too_many_to_ship_quantity\":\"\",\"weight\":\"15\",\"price\":\"245\",\"sale_price\":\"200\",\"free_ship\":\"0\",\"video\":\"\",\"blurb\":\"\",\"reviews\":[{\"title\":\"\",\"author\":\"\",\"date\":\"\",\"rating\":\"\",\"description\":\"\"}],\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(476,7,265,'{\"meta_description\":\"For Sale:  6\\\" PCD New Type-B Grinding Wheels\",\"meta_keywords\":\"6\\\", pcd type-b grinding wheel, used concrete grinding equipment, used concrete polishing equipment\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"6-pcd-new-type-a-grinding-wheels\\\"\",\"page_layout\":\"\"}'),(494,8,279,'{\"wrap_sidebar\":\"1\",\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(489,7,277,'{\"meta_description\":\"Find out more about licensing requirement for the DustRam™ System of virtually dust free tile removal.\",\"meta_keywords\":\"\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"business-opportunities\\\"\",\"page_layout\":\"\"}'),(748,8,24,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/grgsormb-pw\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/ZheGsbX70Fc\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_3\":\"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/Nnl_Ks6-aXs\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_4\":\"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/lAuXDL6C-dI\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_5\":\"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/57jPCdVwhUc\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_6\":\"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/XZs6WaNC-Og\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_7\":\"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/8ydX7u6DucE\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"}'),(749,7,480,'{\"meta_description\":\"Floor Removal Inc. is a certified DustRam® System Contractor providing dust free tile removal service in Jacksonville, Florida and surrounding areas using the patented and technologically advanced DustRam® System Equipment. Find out why you should have us remove your saltillo and ceramic tiles without the dust or worry. <==STOP SCROLLING & CLICK HERE.\",\"meta_keywords\":\"tile removal florida, florida tile removal, tile removal jacksonville, jacksonville tile removal, dust commander, dustcommander, clean tile removal, dustless tile removal, tile removal tools, saltillo removal, dust free tile removal, tile removal, tile removal specialist, removing tile, removing ceramic tile, ceramic tile removal, remove tile, floor tile removal, remove ceramic tile, floor removal, thinset removal, thin set removal, removing thinset, removing thin set\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"david-bozik-floor-removal-inc\\\"\",\"page_layout\":\"\"}'),(750,7,477,'{\"meta_description\":\"Looking for a quality DustRam® System Dust Free Tile Removal Contractor in New Mexico? <==STOP SCROLLING & CLICK HERE\",\"meta_keywords\":\"tile removal new mexico, new mexico tile removal, Dust Free Tile Removal, Tile Removal, Flooring Removal | New Mexico, Albuquerque, Las Cruces, Rio Rancho, Santa Fe\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"tile-removal-new-mexico\\\"\",\"page_layout\":\"\"}'),(751,8,36,'{\"wrap_sidebar\":\"1\",\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(752,8,477,'{\"wrap_sidebar\":\"1\",\"video_1\":\"\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(753,8,486,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"520\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/-gkAuzpz40Y\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"<iframe width=\\\"520\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/FcebYFjSG4k\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(754,7,486,'{\"meta_description\":\"Arizona Home Floors is a certified DustRam System Contractor providing dust free tile removal service in Phoenix, Scottsdale, Chandler, Peoria, Arizona and surrounding areas using the patented and technologically advanced DustRam® System Equipment. Find out why you should have us remove your saltillo and ceramic tiles without the dust or worry. <==STOP SCROLLING & CLICK HERE.\",\"meta_keywords\":\"Dust Free Tile Removal, Tile Removal, Flooring Removal | Arizona, Phoenix, Scottsdale, Gilbert, Chandler, Sun City, Tempe, Mesa, Glendale, Peoria, Tucson\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"jim-leclerc-dusthogz\\\"\",\"page_layout\":\"\"}'),(755,7,279,'{\"meta_description\":\"Find Out More How The DustRam® System Dust Free Tile Removal Equipment Evolved To Be The Leader.\",\"meta_keywords\":\"dustfree, dust free, dust-free, dust free tile removal\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"dust-free\\\"\",\"page_layout\":\"\"}'),(546,7,318,'{\"meta_description\":\"American Flooring Removal is the ONLY dust free tile removal service in Texas using the patented and technologically advanced DustRam System Equipment. Find out why you should have us remove your saltillo and ceramic tiles without the dust or worry. <==STOP SCROLLING & CLICK HERE.\",\"meta_keywords\":\"tile removal texas, texas tile removal, tile removal dallas, tile removal fort worth, clean tile removal, dustless tile removal, tile removal tools, saltillo removal, dust free tile removal, tile removal, tile removal specialist, removing tile, removing ceramic tile, ceramic tile removal, remove tile, floor tile removal, remove ceramic tile, floor removal, thinset removal, thin set removal, removing thinset, removing thin set\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"american-flooring-removal\\\"\",\"page_layout\":\"\"}'),(741,7,478,'{\"meta_description\":\"\",\"meta_keywords\":\"Tile Removal, Dust Free Tile Removal, Ceramic Tile Removal, DustRam, DustRam System | Albuquerque, New Mexico, Santa Fe, Las Vegas, Gallup, Rio Rancho\\n\",\"js_and_css\":\"\",\"body_style\":\"id=\\\"don-lavato-carpet-source-usa\\\"\",\"page_layout\":\"\"}'),(742,8,478,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/-gkAuzpz40Y\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(745,8,481,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"520\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/-gkAuzpz40Y\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}'),(746,7,481,'{\"meta_description\":\"DustGuard is a certified DustRam System Contractor providing dust free tile removal service in Tampa, Florida and surrounding areas using the patented and technologically advanced DustRam® System Equipment. Find out why you should have us remove your saltillo and ceramic tiles without the dust or worry. <==STOP SCROLLING & CLICK HERE.\",\"meta_keywords\":\"tile removal florida, florida tile removal, tile removal sarasota, tile removal tampa, dust commander, dustcommander, clean tile removal, dustless tile removal, tile removal tools, saltillo removal, dust free tile removal, tile removal, tile removal specialist, removing tile, removing ceramic tile, ceramic tile removal, remove tile, floor tile removal, remove ceramic tile, floor removal, thinset removal, thin set removal, removing thinset, removing thin set\",\"js_and_css\":\"<iframe width=\\\"520\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/-gkAuzpz40Y\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"body_style\":\"id=\\\"tim-frederick-dust-guard\\\"\",\"page_layout\":\"\"}'),(747,8,480,'{\"wrap_sidebar\":\"1\",\"video_1\":\"<iframe width=\\\"520\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/-gkAuzpz40Y\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\"video_2\":\"\",\"video_3\":\"\",\"video_4\":\"\",\"video_5\":\"\",\"video_6\":\"\",\"video_7\":\"\"}');

--
-- Table structure for table `modx_site_tmplvar_templates`
--

CREATE TABLE `modx_site_tmplvar_templates` (
  `tmplvarid` int(10) NOT NULL DEFAULT '0' COMMENT 'Template Variable id',
  `templateid` int(11) NOT NULL DEFAULT '0',
  `rank` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`tmplvarid`,`templateid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Site Template Variables Templates Link Table';

--
-- Dumping data for table `modx_site_tmplvar_templates`
--

INSERT INTO `modx_site_tmplvar_templates` VALUES (8,9,0),(7,9,0),(8,10,0),(7,10,0),(8,6,0),(7,6,0),(7,3,0),(8,3,0),(9,12,0),(8,13,0),(7,13,0),(8,14,0),(7,14,0),(7,15,0),(8,15,0),(9,15,0),(8,16,0),(7,16,0),(7,18,0),(8,18,0),(7,21,0),(8,21,0),(8,20,0),(7,20,0),(7,22,0),(8,22,0),(7,23,0),(8,23,0),(7,24,0),(8,24,0),(8,25,0),(7,25,0),(8,26,0),(7,26,0),(8,27,0),(7,27,0),(7,28,0),(8,28,0),(9,28,0);

--
-- Table structure for table `modx_site_tmplvars`
--

CREATE TABLE `modx_site_tmplvars` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(20) NOT NULL DEFAULT '',
  `name` varchar(50) NOT NULL DEFAULT '',
  `caption` varchar(80) NOT NULL DEFAULT '',
  `description` varchar(255) NOT NULL DEFAULT '',
  `editor_type` int(11) NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor',
  `category` int(11) NOT NULL DEFAULT '0' COMMENT 'category id',
  `locked` tinyint(4) NOT NULL DEFAULT '0',
  `elements` text,
  `rank` int(11) NOT NULL DEFAULT '0',
  `display` varchar(20) NOT NULL DEFAULT '' COMMENT 'Display Control',
  `display_params` text COMMENT 'Display Control Properties',
  `default_text` text,
  PRIMARY KEY (`id`),
  KEY `indx_rank` (`rank`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1 COMMENT='Site Template Variables';

--
-- Dumping data for table `modx_site_tmplvars`
--

INSERT INTO `modx_site_tmplvars` VALUES (7,'custom_tv','global','Global Fields','',0,7,0,'@INCLUDE _/modx/tv.input.json.php',0,'custom_widget','&output=@INCLUDE _/modx/tv.widget.json.php',''),(8,'custom_tv','fields','Page Fields','',0,7,0,'@INCLUDE _/modx/tv.input.json.php',0,'custom_widget','&output=@INCLUDE _/modx/tv.widget.json.php',''),(9,'custom_tv','customer_fields','Customer Fields','',0,7,0,'@INCLUDE _/modx/tv.input.json.customer.php',0,'custom_widget','&output=@INCLUDE _/modx/tv.widget.json.customer.php','');

--
-- Table structure for table `modx_system_eventnames`
--

CREATE TABLE `modx_system_eventnames` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `service` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'System Service number',
  `groupname` varchar(20) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8 COMMENT='System Event Names.';

--
-- Dumping data for table `modx_system_eventnames`
--

INSERT INTO `modx_system_eventnames` VALUES (1,'OnDocPublished',5,''),(2,'OnDocUnPublished',5,''),(3,'OnWebPagePrerender',5,''),(4,'OnWebLogin',3,''),(5,'OnBeforeWebLogout',3,''),(6,'OnWebLogout',3,''),(7,'OnWebSaveUser',3,''),(8,'OnWebDeleteUser',3,''),(9,'OnWebChangePassword',3,''),(10,'OnWebCreateGroup',3,''),(11,'OnManagerLogin',2,''),(12,'OnBeforeManagerLogout',2,''),(13,'OnManagerLogout',2,''),(14,'OnManagerSaveUser',2,''),(15,'OnManagerDeleteUser',2,''),(16,'OnManagerChangePassword',2,''),(17,'OnManagerCreateGroup',2,''),(18,'OnBeforeCacheUpdate',4,''),(19,'OnCacheUpdate',4,''),(20,'OnLoadWebPageCache',4,''),(21,'OnBeforeSaveWebPageCache',4,''),(22,'OnChunkFormPrerender',1,'Chunks'),(23,'OnChunkFormRender',1,'Chunks'),(24,'OnBeforeChunkFormSave',1,'Chunks'),(25,'OnChunkFormSave',1,'Chunks'),(26,'OnBeforeChunkFormDelete',1,'Chunks'),(27,'OnChunkFormDelete',1,'Chunks'),(28,'OnDocFormPrerender',1,'Documents'),(29,'OnDocFormRender',1,'Documents'),(30,'OnBeforeDocFormSave',1,'Documents'),(31,'OnDocFormSave',1,'Documents'),(32,'OnBeforeDocFormDelete',1,'Documents'),(33,'OnDocFormDelete',1,'Documents'),(34,'OnPluginFormPrerender',1,'Plugins'),(35,'OnPluginFormRender',1,'Plugins'),(36,'OnBeforePluginFormSave',1,'Plugins'),(37,'OnPluginFormSave',1,'Plugins'),(38,'OnBeforePluginFormDelete',1,'Plugins'),(39,'OnPluginFormDelete',1,'Plugins'),(40,'OnSnipFormPrerender',1,'Snippets'),(41,'OnSnipFormRender',1,'Snippets'),(42,'OnBeforeSnipFormSave',1,'Snippets'),(43,'OnSnipFormSave',1,'Snippets'),(44,'OnBeforeSnipFormDelete',1,'Snippets'),(45,'OnSnipFormDelete',1,'Snippets'),(46,'OnTempFormPrerender',1,'Templates'),(47,'OnTempFormRender',1,'Templates'),(48,'OnBeforeTempFormSave',1,'Templates'),(49,'OnTempFormSave',1,'Templates'),(50,'OnBeforeTempFormDelete',1,'Templates'),(51,'OnTempFormDelete',1,'Templates'),(52,'OnTVFormPrerender',1,'Template Variables'),(53,'OnTVFormRender',1,'Template Variables'),(54,'OnBeforeTVFormSave',1,'Template Variables'),(55,'OnTVFormSave',1,'Template Variables'),(56,'OnBeforeTVFormDelete',1,'Template Variables'),(57,'OnTVFormDelete',1,'Template Variables'),(58,'OnUserFormPrerender',1,'Users'),(59,'OnUserFormRender',1,'Users'),(60,'OnBeforeUserFormSave',1,'Users'),(61,'OnUserFormSave',1,'Users'),(62,'OnBeforeUserFormDelete',1,'Users'),(63,'OnUserFormDelete',1,'Users'),(64,'OnWUsrFormPrerender',1,'Web Users'),(65,'OnWUsrFormRender',1,'Web Users'),(66,'OnBeforeWUsrFormSave',1,'Web Users'),(67,'OnWUsrFormSave',1,'Web Users'),(68,'OnBeforeWUsrFormDelete',1,'Web Users'),(69,'OnWUsrFormDelete',1,'Web Users'),(70,'OnSiteRefresh',1,''),(71,'OnFileManagerUpload',1,''),(72,'OnModFormPrerender',1,'Modules'),(73,'OnModFormRender',1,'Modules'),(74,'OnBeforeModFormDelete',1,'Modules'),(75,'OnModFormDelete',1,'Modules'),(76,'OnBeforeModFormSave',1,'Modules'),(77,'OnModFormSave',1,'Modules'),(78,'OnBeforeWebLogin',3,''),(79,'OnWebAuthentication',3,''),(80,'OnBeforeManagerLogin',2,''),(81,'OnManagerAuthentication',2,''),(82,'OnSiteSettingsRender',1,'System Settings'),(83,'OnFriendlyURLSettingsRender',1,'System Settings'),(84,'OnUserSettingsRender',1,'System Settings'),(85,'OnInterfaceSettingsRender',1,'System Settings'),(86,'OnMiscSettingsRender',1,'System Settings'),(87,'OnRichTextEditorRegister',1,'RichText Editor'),(88,'OnRichTextEditorInit',1,'RichText Editor'),(89,'OnManagerPageInit',2,''),(90,'OnWebPageInit',5,''),(91,'OnLoadWebDocument',5,''),(92,'OnParseDocument',5,''),(93,'OnManagerLoginFormRender',2,''),(94,'OnWebPageComplete',5,''),(95,'OnLogPageHit',5,''),(96,'OnBeforeManagerPageInit',2,''),(97,'OnBeforeEmptyTrash',1,'Documents'),(98,'OnEmptyTrash',1,'Documents'),(99,'OnManagerLoginFormPrerender',2,''),(100,'OnStripAlias',1,'Documents'),(200,'OnCreateDocGroup',1,'Documents'),(201,'OnManagerWelcomePrerender',2,''),(202,'OnManagerWelcomeHome',2,''),(203,'OnManagerWelcomeRender',2,''),(204,'OnBeforeDocDuplicate',1,'Documents'),(205,'OnDocDuplicate',1,'Documents'),(999,'OnPageUnauthorized',1,''),(1000,'OnPageNotFound',1,'');

--
-- Table structure for table `modx_system_settings`
--

CREATE TABLE `modx_system_settings` (
  `setting_name` varchar(50) NOT NULL DEFAULT '',
  `setting_value` text,
  UNIQUE KEY `setting_name` (`setting_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Contains Content Manager settings.';

--
-- Dumping data for table `modx_system_settings`
--

INSERT INTO `modx_system_settings` VALUES ('manager_theme','MODxCarbon - Custom'),('settings_version','1.0.5'),('show_meta','1'),('server_offset_time','0'),('server_protocol','http'),('manager_language','english'),('modx_charset','UTF-8'),('site_name','Dustram.com'),('site_start','24'),('error_page','22'),('unauthorized_page','23'),('site_status','1'),('site_unavailable_message','The site is currently unavailable'),('track_visitors','0'),('resolve_hostnames','0'),('top_howmany','10'),('default_template','3'),('old_template','3'),('publish_default','1'),('cache_default','0'),('search_default','1'),('friendly_urls','1'),('friendly_url_prefix',''),('friendly_url_suffix','/'),('friendly_alias_urls','1'),('use_alias_path','1'),('use_udperms','1'),('udperms_allowroot','0'),('failed_login_attempts','3'),('blocked_minutes','60'),('use_captcha','0'),('captcha_words','MODx,Access,Better,BitCode,Cache,Desc,Design,Excell,Enjoy,URLs,TechView,Gerald,Griff,Humphrey,Holiday,Intel,Integration,Joystick,Join(),Tattoo,Genetic,Light,Likeness,Marit,Maaike,Niche,Netherlands,Ordinance,Oscillo,Parser,Phusion,Query,Question,Regalia,Righteous,Snippet,Sentinel,Template,Thespian,Unity,Enterprise,Verily,Veri,Website,WideWeb,Yap,Yellow,Zebra,Zygote'),('emailsender','jack@dustram.com'),('emailsubject','Your login details'),('number_of_logs','100'),('number_of_messages','30'),('number_of_results','20'),('use_editor','1'),('use_browser','1'),('rb_base_dir','/home/dustram/public_html/beta/assets/'),('rb_base_url','assets/'),('which_editor','TinyMCE'),('fe_editor_lang','english'),('fck_editor_toolbar','standard'),('fck_editor_autolang','0'),('editor_css_path',''),('editor_css_selectors',''),('strip_image_paths','1'),('upload_images','bmp,ico,gif,jpeg,jpg,png,psd,tif,tiff,au,avi,mp3,mp4,mpeg,mpg,wav,wmv,swf,fla,swf,fla,mov'),('upload_media','bmp,ico,gif,jpeg,jpg,png,psd,tif,tiff,au,avi,mp3,mp4,mpeg,mpg,wav,wmv,swf,fla,swf,fla,mov'),('upload_flash','bmp,ico,gif,jpeg,jpg,png,psd,tif,tiff,au,avi,mp3,mp4,mpeg,mpg,wav,wmv,swf,fla,swf,fla,mov'),('upload_files','aac,au,avi,css,cache,doc,docx,gz,gzip,htaccess,htm,html,js,mp3,mp4,mpeg,mpg,ods,odp,odt,pdf,ppt,pptx,rar,tar,tgz,txt,wav,wmv,xls,xlsx,xml,z,zip,bmp,ico,gif,jpeg,jpg,png,psd,tif,tiff,au,avi,mp3,mp4,mpeg,mpg,wav,wmv,swf,fla,swf,fla,mov'),('upload_maxsize','1048576'),('new_file_permissions','0644'),('new_folder_permissions','0755'),('filemanager_path','/home/dustram/public_html/'),('theme_refresher',''),('manager_layout','4'),('custom_contenttype','application/rss+xml,application/pdf,application/vnd.ms-word,application/vnd.ms-excel,text/html,text/css,text/xml,text/javascript,text/plain'),('auto_menuindex','1'),('session.cookie.lifetime','604800'),('mail_check_timeperiod','60'),('manager_direction','ltr'),('tinymce_editor_theme','editor'),('tinymce_custom_plugins','style,advimage,advlink,searchreplace,print,contextmenu,paste,fullscreen,nonbreaking,xhtmlxtras,visualchars,media'),('tinymce_custom_buttons1','undo,redo,selectall,separator,pastetext,pasteword,separator,search,replace,separator,nonbreaking,hr,charmap,separator,image,link,unlink,anchor,media,separator,cleanup,removeformat,separator,fullscreen,print,code,help'),('tinymce_custom_buttons2','bold,italic,underline,strikethrough,sub,sup,separator,bullist,numlist,outdent,indent,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect,separator,styleprops'),('tree_show_protected','1'),('rss_url_news','http://feeds.feedburner.com/modx-announce'),('rss_url_security','http://feeds.feedburner.com/modxsecurity'),('validate_referer','0'),('datepicker_offset','-10'),('xhtml_urls','0'),('allow_duplicate_alias','1'),('automatic_alias','1'),('datetime_format','dd-mm-YYYY'),('warning_visibility','0'),('remember_last_tab','1'),('site_id','4c656ab120611'),('site_unavailable_page',''),('reload_site_unavailable',''),('siteunavailable_message_default','The site is currently unavailable.'),('reload_captcha_words',''),('captcha_words_default','MODx,Access,Better,BitCode,Chunk,Cache,Desc,Design,Excell,Enjoy,URLs,TechView,Gerald,Griff,Humphrey,Holiday,Intel,Integration,Joystick,Join(),Oscope,Genetic,Light,Likeness,Marit,Maaike,Niche,Netherlands,Ordinance,Oscillo,Parser,Phusion,Query,Question,Regalia,Righteous,Snippet,Sentinel,Template,Thespian,Unity,Enterprise,Verily,Tattoo,Veri,Website,WideWeb,Yap,Yellow,Zebra,Zygote'),('reload_emailsubject',''),('emailsubject_default','Your login details'),('reload_signupemail_message',''),('signupemail_message','Hello [+uid+] \r\n\r\nHere are your login details for [+sname+] Content Manager:\r\n\r\nUsername: [+uid+]\r\nPassword: [+pwd+]\r\n\r\nOnce you log into the Content Manager ([+surl+]), you can change your password.\r\n\r\nRegards,\r\nSite Administrator'),('system_email_signup_default','Hello [+uid+] \r\n\r\nHere are your login details for [+sname+] Content Manager:\r\n\r\nUsername: [+uid+]\r\nPassword: [+pwd+]\r\n\r\nOnce you log into the Content Manager ([+surl+]), you can change your password.\r\n\r\nRegards,\r\nSite Administrator'),('reload_websignupemail_message',''),('websignupemail_message','Hello [+uid+]\r\n\r\nHere are your login details for [+sname+]:\r\n\r\nUsername: [+uid+]\r\nPassword: [+pwd+]\r\n\r\nOnce you log into [+sname+] ([+surl+]), you can change your password.\r\n\r\nRegards,\r\nSite Administrator'),('system_email_websignup_default','Hello [+uid+]\r\n\r\nHere are your login details for [+sname+]:\r\n\r\nUsername: [+uid+]\r\nPassword: [+pwd+]\r\n\r\nOnce you log into [+sname+] ([+surl+]), you can change your password.\r\n\r\nRegards,\r\nSite Administrator'),('reload_system_email_webreminder_message',''),('webpwdreminder_message','Hello [+uid+]\r\n\r\nTo activate your new password click the following link:\r\n\r\n[+surl+]\r\n\r\nIf successful you can use the following password to login:\r\n\r\nPassword:[+pwd+]\r\n\r\nIf you did not request this email then please ignore it.\r\n\r\nRegards,\r\nSite Administrator'),('system_email_webreminder_default','Hello [+uid+]\r\n\r\nTo activate your new password click the following link:\r\n\r\n[+surl+]\r\n\r\nIf successful you can use the following password to login:\r\n\r\nPassword:[+pwd+]\r\n\r\nIf you did not request this email then please ignore it.\r\n\r\nRegards,\r\nSite Administrator'),('tree_page_click','27'),('rb_webuser','0'),('tinymce_custom_buttons3',''),('tinymce_custom_buttons4',''),('tinymce_css_selectors',''),('auto_template_logic','sibling'),('clean_uploaded_filename','0'),('_hide_configcheck_validate_referer','1');

--
-- Table structure for table `modx_user_attributes`
--

CREATE TABLE `modx_user_attributes` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `internalKey` int(10) NOT NULL DEFAULT '0',
  `fullname` varchar(100) NOT NULL DEFAULT '',
  `role` int(10) NOT NULL DEFAULT '0',
  `email` varchar(100) NOT NULL DEFAULT '',
  `phone` varchar(100) NOT NULL DEFAULT '',
  `mobilephone` varchar(100) NOT NULL DEFAULT '',
  `blocked` int(1) NOT NULL DEFAULT '0',
  `blockeduntil` int(11) NOT NULL DEFAULT '0',
  `blockedafter` int(11) NOT NULL DEFAULT '0',
  `logincount` int(11) NOT NULL DEFAULT '0',
  `lastlogin` int(11) NOT NULL DEFAULT '0',
  `thislogin` int(11) NOT NULL DEFAULT '0',
  `failedlogincount` int(10) NOT NULL DEFAULT '0',
  `sessionid` varchar(100) NOT NULL DEFAULT '',
  `dob` int(10) NOT NULL DEFAULT '0',
  `gender` int(1) NOT NULL DEFAULT '0' COMMENT '0 - unknown, 1 - Male 2 - female',
  `country` varchar(5) NOT NULL DEFAULT '',
  `state` varchar(25) NOT NULL DEFAULT '',
  `zip` varchar(25) NOT NULL DEFAULT '',
  `fax` varchar(100) NOT NULL DEFAULT '',
  `photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'link to photo',
  `comment` varchar(255) NOT NULL DEFAULT '' COMMENT 'short comment',
  PRIMARY KEY (`id`),
  KEY `userid` (`internalKey`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='Contains information about the backend users.';

--
-- Dumping data for table `modx_user_attributes`
--

INSERT INTO `modx_user_attributes` VALUES (3,6,'Jack King',1,'jack@dustram.com','480-659-5700','602-510-9137',0,0,0,495,1436980965,1437060661,0,'e18a9a9e6a52217e772b4276a5eda264',-285120000,1,'223','Arizona','85281','480-365-0103','','');

--
-- Table structure for table `modx_user_messages`
--

CREATE TABLE `modx_user_messages` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `type` varchar(15) NOT NULL DEFAULT '',
  `subject` varchar(60) NOT NULL DEFAULT '',
  `message` text,
  `sender` int(10) NOT NULL DEFAULT '0',
  `recipient` int(10) NOT NULL DEFAULT '0',
  `private` tinyint(4) NOT NULL DEFAULT '0',
  `postdate` int(20) NOT NULL DEFAULT '0',
  `messageread` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Contains messages for the Content Manager messaging system.';

--
-- Dumping data for table `modx_user_messages`
--


--
-- Table structure for table `modx_user_roles`
--

CREATE TABLE `modx_user_roles` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `description` varchar(255) NOT NULL DEFAULT '',
  `frames` int(1) NOT NULL DEFAULT '0',
  `home` int(1) NOT NULL DEFAULT '0',
  `view_document` int(1) NOT NULL DEFAULT '0',
  `new_document` int(1) NOT NULL DEFAULT '0',
  `save_document` int(1) NOT NULL DEFAULT '0',
  `publish_document` int(1) NOT NULL DEFAULT '0',
  `delete_document` int(1) NOT NULL DEFAULT '0',
  `empty_trash` int(1) NOT NULL DEFAULT '0',
  `action_ok` int(1) NOT NULL DEFAULT '0',
  `logout` int(1) NOT NULL DEFAULT '0',
  `help` int(1) NOT NULL DEFAULT '0',
  `messages` int(1) NOT NULL DEFAULT '0',
  `new_user` int(1) NOT NULL DEFAULT '0',
  `edit_user` int(1) NOT NULL DEFAULT '0',
  `logs` int(1) NOT NULL DEFAULT '0',
  `edit_parser` int(1) NOT NULL DEFAULT '0',
  `save_parser` int(1) NOT NULL DEFAULT '0',
  `edit_template` int(1) NOT NULL DEFAULT '0',
  `settings` int(1) NOT NULL DEFAULT '0',
  `credits` int(1) NOT NULL DEFAULT '0',
  `new_template` int(1) NOT NULL DEFAULT '0',
  `save_template` int(1) NOT NULL DEFAULT '0',
  `delete_template` int(1) NOT NULL DEFAULT '0',
  `edit_snippet` int(1) NOT NULL DEFAULT '0',
  `new_snippet` int(1) NOT NULL DEFAULT '0',
  `save_snippet` int(1) NOT NULL DEFAULT '0',
  `delete_snippet` int(1) NOT NULL DEFAULT '0',
  `edit_chunk` int(1) NOT NULL DEFAULT '0',
  `new_chunk` int(1) NOT NULL DEFAULT '0',
  `save_chunk` int(1) NOT NULL DEFAULT '0',
  `delete_chunk` int(1) NOT NULL DEFAULT '0',
  `empty_cache` int(1) NOT NULL DEFAULT '0',
  `edit_document` int(1) NOT NULL DEFAULT '0',
  `change_password` int(1) NOT NULL DEFAULT '0',
  `error_dialog` int(1) NOT NULL DEFAULT '0',
  `about` int(1) NOT NULL DEFAULT '0',
  `file_manager` int(1) NOT NULL DEFAULT '0',
  `save_user` int(1) NOT NULL DEFAULT '0',
  `delete_user` int(1) NOT NULL DEFAULT '0',
  `save_password` int(11) NOT NULL DEFAULT '0',
  `edit_role` int(1) NOT NULL DEFAULT '0',
  `save_role` int(1) NOT NULL DEFAULT '0',
  `delete_role` int(1) NOT NULL DEFAULT '0',
  `new_role` int(1) NOT NULL DEFAULT '0',
  `access_permissions` int(1) NOT NULL DEFAULT '0',
  `bk_manager` int(1) NOT NULL DEFAULT '0',
  `new_plugin` int(1) NOT NULL DEFAULT '0',
  `edit_plugin` int(1) NOT NULL DEFAULT '0',
  `save_plugin` int(1) NOT NULL DEFAULT '0',
  `delete_plugin` int(1) NOT NULL DEFAULT '0',
  `new_module` int(1) NOT NULL DEFAULT '0',
  `edit_module` int(1) NOT NULL DEFAULT '0',
  `save_module` int(1) NOT NULL DEFAULT '0',
  `delete_module` int(1) NOT NULL DEFAULT '0',
  `exec_module` int(1) NOT NULL DEFAULT '0',
  `view_eventlog` int(1) NOT NULL DEFAULT '0',
  `delete_eventlog` int(1) NOT NULL DEFAULT '0',
  `manage_metatags` int(1) NOT NULL DEFAULT '0' COMMENT 'manage site meta tags and keywords',
  `edit_doc_metatags` int(1) NOT NULL DEFAULT '0' COMMENT 'edit document meta tags and keywords',
  `new_web_user` int(1) NOT NULL DEFAULT '0',
  `edit_web_user` int(1) NOT NULL DEFAULT '0',
  `save_web_user` int(1) NOT NULL DEFAULT '0',
  `delete_web_user` int(1) NOT NULL DEFAULT '0',
  `web_access_permissions` int(1) NOT NULL DEFAULT '0',
  `view_unpublished` int(1) NOT NULL DEFAULT '0',
  `import_static` int(1) NOT NULL DEFAULT '0',
  `export_static` int(1) NOT NULL DEFAULT '0',
  `remove_locks` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='Contains information describing the user roles.';

--
-- Dumping data for table `modx_user_roles`
--

INSERT INTO `modx_user_roles` VALUES (2,'Editor','Limited to managing content',1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1),(3,'Publisher','Editor with expanded permissions including manage users, update Elements and site settings',1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,1,0,0,1),(1,'Administrator','Site administrators have full access to all functions',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);

--
-- Table structure for table `modx_user_settings`
--

CREATE TABLE `modx_user_settings` (
  `user` int(11) NOT NULL DEFAULT '0',
  `setting_name` varchar(50) NOT NULL DEFAULT '',
  `setting_value` text,
  KEY `setting_name` (`setting_name`),
  KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Contains backend user settings.';

--
-- Dumping data for table `modx_user_settings`
--

INSERT INTO `modx_user_settings` VALUES (6,'allowed_days','1,2,3,4,5,6,7'),(6,'allow_manager_access','1'),(6,'manager_language','english');

--
-- Table structure for table `modx_web_groups`
--

CREATE TABLE `modx_web_groups` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `webgroup` int(10) NOT NULL DEFAULT '0',
  `webuser` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 COMMENT='Contains data used for web access permissions.';

--
-- Dumping data for table `modx_web_groups`
--

INSERT INTO `modx_web_groups` VALUES (14,4,1),(11,4,2),(19,4,3),(20,4,4),(16,4,5),(21,4,6),(18,4,7),(22,4,8);

--
-- Table structure for table `modx_web_user_attributes`
--

CREATE TABLE `modx_web_user_attributes` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `internalKey` int(10) NOT NULL DEFAULT '0',
  `fullname` varchar(100) NOT NULL DEFAULT '',
  `role` int(10) NOT NULL DEFAULT '0',
  `email` varchar(100) NOT NULL DEFAULT '',
  `phone` varchar(100) NOT NULL DEFAULT '',
  `mobilephone` varchar(100) NOT NULL DEFAULT '',
  `blocked` int(1) NOT NULL DEFAULT '0',
  `blockeduntil` int(11) NOT NULL DEFAULT '0',
  `blockedafter` int(11) NOT NULL DEFAULT '0',
  `logincount` int(11) NOT NULL DEFAULT '0',
  `lastlogin` int(11) NOT NULL DEFAULT '0',
  `thislogin` int(11) NOT NULL DEFAULT '0',
  `failedlogincount` int(10) NOT NULL DEFAULT '0',
  `sessionid` varchar(100) NOT NULL DEFAULT '',
  `dob` int(10) NOT NULL DEFAULT '0',
  `gender` int(1) NOT NULL DEFAULT '0' COMMENT '0 - unknown, 1 - Male 2 - female',
  `country` varchar(5) NOT NULL DEFAULT '',
  `state` varchar(25) NOT NULL DEFAULT '',
  `zip` varchar(25) NOT NULL DEFAULT '',
  `fax` varchar(100) NOT NULL DEFAULT '',
  `photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'link to photo',
  `comment` varchar(255) NOT NULL DEFAULT '' COMMENT 'short comment',
  PRIMARY KEY (`id`),
  KEY `userid` (`internalKey`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='Contains information for web users.';

--
-- Dumping data for table `modx_web_user_attributes`
--

INSERT INTO `modx_web_user_attributes` VALUES (1,1,'Ken Powell',0,'powell.ken@verizon.net','','469-556-3936',0,0,0,14,1436981309,1436983782,0,'b9841ced83dc9623381e7f543facd7bf',0,0,'223','Texas','76244','','',''),(2,2,'MaryAnne McDonald',0,'mmcdonald@azhomefloors.com','','',0,0,0,32,1436061688,1436145056,0,'9b427755a7d4795eed1cb9c68414f0da',0,0,'','','','','',''),(3,3,'Jim Leclerc',0,'dusthogz@gmail.com','','941-468-7235',0,0,0,0,0,0,0,'',0,1,'223','Florida','34223','','',''),(4,4,'Mike Antonetti',0,'mikeantonetti@yahoo.com','','352-476-7220',0,0,0,0,0,0,0,'',0,0,'223','Florida','34465','','',''),(5,5,'Tim Frederick',0,'tim@dustguardusa.com','','941-779-7721',0,0,0,0,0,0,0,'',0,0,'','Florida','','','',''),(6,6,'David Bozik',0,'david@floorremovalinc.com','','904-237-8399',0,0,0,0,0,0,0,'',0,0,'223','Florida','32259','','',''),(7,7,'Don Lovato',0,'don@carpetsourceusa.com','505-315-2700','505-604-3440',0,0,0,0,0,0,0,'',0,0,'223','New Mexico','87107','','',''),(8,8,'Bryan Irving',0,'irvingemail@gmail.com','','801-652-3499',0,0,0,0,0,0,0,'',0,0,'223','Utah','84004','','','');

--
-- Table structure for table `modx_web_user_settings`
--

CREATE TABLE `modx_web_user_settings` (
  `webuser` int(11) NOT NULL DEFAULT '0',
  `setting_name` varchar(50) NOT NULL DEFAULT '',
  `setting_value` text,
  KEY `setting_name` (`setting_name`),
  KEY `webuserid` (`webuser`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Contains web user settings.';

--
-- Dumping data for table `modx_web_user_settings`
--

INSERT INTO `modx_web_user_settings` VALUES (1,'allowed_days','1,2,3,4,5,6,7'),(1,'login_home','483'),(2,'allowed_days','1,2,3,4,5,6,7'),(2,'login_home','483'),(3,'login_home','483'),(4,'login_home','483'),(5,'login_home','483'),(5,'allowed_days','1,2,3,4,5,6,7'),(6,'login_home','483'),(7,'login_home','483'),(7,'allowed_days','1,2,3,4,5,6,7'),(3,'allowed_days','1,2,3,4,5,6,7'),(4,'allowed_days','1,2,3,4,5,6,7'),(6,'allowed_days','1,2,3,4,5,6,7'),(8,'login_home','483'),(8,'allowed_days','1,2,3,4,5,6,7');

--
-- Table structure for table `modx_web_users`
--



--
-- Dumping data for table `modx_web_users`
--

INSERT INTO `modx_web_users` VALUES (1,'AFR','9fa267f1732723081c4a9eddae4fb6af',''),(2,'azgimpy','08486623a1110a122d9980dc6462f7f9','vsHT2m5v|ppNtrqbW'),(3,'DustHogz','6bdb4831c037e74943672efcdb56b5bc',''),(4,'FirstFloors','fa210aa1fe0cf7127901f0f86613dcec',''),(5,'DustGuard','65177a67ded0f07b68df01fd7ce2206c',''),(6,'FRI','37d324b637754b8cd8ca359bafb864a4',''),(7,'CSUSA','e4b10bd076d693a9069d9b26f75547e7',''),(8,'TileRam','5b32def704a3442d5a0526e10dc2624e','');

--
-- Table structure for table `modx_webgroup_access`
--

CREATE TABLE `modx_webgroup_access` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `webgroup` int(10) NOT NULL DEFAULT '0',
  `documentgroup` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='Contains data used for web access permissions.';

--
-- Dumping data for table `modx_webgroup_access`
--

INSERT INTO `modx_webgroup_access` VALUES (3,2,2),(2,2,1),(4,3,2),(5,4,5);

--
-- Table structure for table `modx_webgroup_names`
--

CREATE TABLE `modx_webgroup_names` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='Contains data used for web access permissions.';

--
-- Dumping data for table `modx_webgroup_names`
--

INSERT INTO `modx_webgroup_names` VALUES (1,'Registered'),(2,'Administrator'),(3,'Manager'),(4,'Dustram Protected Pages');


