var optionRanks = {}; var optionRanksArray = [ 'Majestic Type', 'Product Type', 'EDDM Service Option', 'In Mailbox Estimate', 'Product Category', 'Product Style', 'Print Method', 'Size', 'Page Count', 'Quantity', 'Paper Type', 'Material Type', 'Coating Type', 'Cover Stock', 'Cover Coating', 'SPOT UV SIDES', 'Lamination', 'Spot UV', 'Colors', 'Thread Color', 'Binding Type', 'Foil Color', 'Foil Side', 'Shape', 'Radius of Corners', 'Folding options', 'Scoring options', 'Drill Hole', // 'Hole Punch', 'Die Cut options', 'Perforation', 'Blank envelopes', 'Blank Second Sheets', 'Bundling Service', 'Foil', 'Easel Backs', 'Window options', 'Hardware', 'Pole Pockets', 'Grommets', 'Hems', 'Wraparound Cover', 'Numbering', 'Pockets', 'BC Slits', 'CD Slits', 'Unwind options', 'Print Turnaround', 'Adjust My Artwork', 'Product Orientation', 'Grommet Strip Position', ]; var valueRanksArray = [ 'Full Service', 'Print Only', 'Business Cards', 'Postcards', 'Sell Sheets', 'Flyers and Brochures', 'Trading Cards', 'Hang Tags', 'Door hangers', 'Stickers', 'Standard magnets', 'Announcements Cards', 'Bottle Neck Hang Tags', 'Regular Hang Tags', 'CD Covers', 'CD Inlays', 'CD Sleeves', 'DVD Covers', 'Regular Door Hangers', 'Tear Off Door Hangers', 'Tear Off Postcards', 'Digital', 'Offset', '16PT', '14PT', '14PTUC', '12PTC2S', '18PT', '100GLB', '100DB', '100GLC', 'No Window', 'Standard Window', 'No Hole Punch', '8 pages *', '12 pages *', '16 pages *', '20 pages *', '24 pages *', '28 pages *', '32 pages *', '36 pages *', '40 pages *', '44 pages *', '48 pages *', '52 pages *', 'No Round Corners', 'Rectangle', 'Square', 'Round Coners', 'Rounded 2 Corners*', 'Rounded 4 Corners*', 'Rounded 1/4', 'Rounded 1/8', 'Circle', 'Oval', 'Leaf', 'Diamond', 'Round', 'Rectangle Roll label', 'Oval Roll Label', 'Circle Roll Label', 'FLAT', 'FLAT *', 'Tri-fold', 'Half-fold', 'Z-Fold', 'Accordion Fold', 'Gatefold', 'French Fold', 'No Blank Envelopes', 'No second blank sheets', 'Yes, 25 *', 'Yes, 50 *', 'Yes, 75 *', 'Yes, 100 *', 'Yes, 250 *', 'Yes, 500 *', 'Yes, 1000 *', 'Yes, 2500 *', 'Yes, 5000 *', 'Yes, 10000 *', 'Yes, 10,000 *', 'Yes 25 *', 'Yes 50 *', 'Yes 75 *', 'Yes 100 *', 'Yes 250 *', 'Yes 500 *', 'Yes 1000 *', 'Yes 2500 *', 'Yes 5000 *', 'Yes 10000 *', 'Yes 10,000 *', 'No Spot UV', 'No Coating', 'Aqueous Coating', 'Satin Aqueous', 'Matte', 'UV Coating Front Only (High Gloss Coating Front Only)', 'High Gloss Coating, Front Only', 'UV Coating Both Sides (High Gloss Both Sides)', 'High Gloss Both Sides', 'Spot UV (Spot High Gloss Coating)', 'Spot High Gloss Coating', 'AQ', 'Satin AQ', 'UVF', 'UV', 'Uncoated', 'Spot UV', 'SPUVFR', 'SPUVBK', 'Lamination', 'Gloss lamination', 'Velvet Lamination', 'SPRUV', 'SPRUVFR', 'No Bundling Services', 'Yes, Bundles of 50 *', 'Yes, Bundles of 100 *', 'X-Small', 'Small', 'Medium', 'Large', 'X-Large', 'No Grommets', 'Grommets - Corners Only', 'Grommets - Every 2 Feet', 'No Pole Pockets', 'No Hems/Pole Pockets', 'Hems - Top & Bottom only', 'Hems - all 4 sides', '2 in. *', '4 in. *', 'Pole Pockets - 2 in. Left and Right', 'Pole Pockets - 2 in. Top and Bottom', 'Pole Pockets - 4 in. Left and Right', 'Pole Pockets - 4 in. Top and Bottom', 'No Drill Hole', 'Standard Drill Hole 1/8*', 'Standard Drill Hole 1/4*', 'Standard Drill Hole 5/16*', 'Standard Drill Hole 7/16*', '4mm *', '10mm *', 'Flute Direction (Vertical)', 'Flute Direction (Horizontal)', '15-*', '15 *', '14-*', '14 *', '13-*', '13 *', '12-*', '12 *', '11-*', '11 *', '10-*', '10 *', '9-*', '9 *', '8-*', '8 *', '7-*', '7 *', '6-*', '6 *', '5-*', '5 *', '4-*', '4 *', '3-*', '3 *', '2-*', '2 *', '1 *', 'Next *', 'Same *', 'No Sleeve', '*Sleeve' ]; function sortQuantities() { var options = $('.option-select[optionName="Quantity"] option'); options.detach().sort(function(a,b) { if ($(a).text()=='') { return -1; } if ($(b).text()=='') { return -1; } var at = parseInt($(a).text()); var bt = parseInt($(b).text()); return (at > bt)?1:((at < bt)?-1:0); }); options.appendTo($('.option-select[optionName="Quantity"]')); $('.option-select[optionName="Quantity"]').val(''); } function sortOptions() { optionRanks = {}; for (var i=0; i0) { $('.custom-trim-row').insertAfter($('.option-select[optionName="Size"]').parents('.option-row')); } if ($('.multi-picker-container').length > 0) { $('.multi-picker-container').insertAfter($('.option-select:last').parents('.option-row')); } } function sortValues() { $('.option-select').each(function() { var optionName = $(this).attr('optionName'); if (optionName=='Quantity' || optionName=='Size') return; // if (optionName=='Print Turnaround') { // console.info('--------------'); // } var options = $(this).find('option'); options.sort(function(a, b) { var labelA = $(a).text(); var labelB = $(b).text(); var wholeLabelA = $(a).text(); var wholeLabelB = $(b).text(); // if (optionName=='Folding Options') { // console.info('labelA', labelA); // console.info('labelB', labelB); // } if ($(a).text()=='') { return -1; } if ($(b).text()=='') { return -1; } // var labelATemp = labelA.split(' '); // var labelBTemp = labelB.split(' '); // if (labelATemp[0]!='No') { // labelA = labelATemp[0];//+' '; // } // if (labelBTemp[0]!='No') { // labelB = labelBTemp[0];//+' '; // } // if (optionName=='Folding Options') { // console.info('labelA', labelA); // console.info('labelB', labelB); // } var rankA = valueRanksArray.findStartsWith(labelA); var rankB = valueRanksArray.findStartsWith(labelB); var rankA2 = wholeLabelA.findStartsWith(valueRanksArray); var rankB2 = wholeLabelB.findStartsWith(valueRanksArray); // if (optionName=='Blank Envelopes') { // console.info('rankA labelA rankA2', rankA, labelA, rankA2); // console.info('rankB labelB rankB2', rankB, labelB, rankB2); // } if (rankA2>-1) { rankA = rankA2; } if (rankB2>-1) { rankB = rankB2; } if (typeof rankA == 'undefined' || rankA==-1) rankA = 99999; if (typeof rankB == 'undefined' || rankB==-1) rankB = 99999; rankA = parseInt(rankA); rankB = parseInt(rankB); // if (optionName=='Folding Options') { // console.info('rankA', rankA); // console.info('rankB', rankB); // } if (rankA==rankB) return 0; return (rankA < rankB) ? -1 : 1; var at = parseInt($(a).text()); var bt = parseInt($(b).text()); return (at > bt)?1:((at < bt)?-1:0); }); options.appendTo($(this)); $(this).val(''); // if (optionName=='Print Turnaround') { // console.info(options); // console.info('--------------'); // options.each(function() { // console.info($(this).text()); // }); // console.info('--------------'); // } }); } Array.prototype.findStartsWith = function(match) { var result = -1; $.each(this, function(index, str) { if (result!=-1) return; if (str.indexOf('*')>-1) return; if(str.toLowerCase().indexOf(match.toLowerCase()) == 0) { result = index; return; } }); return result; }; String.prototype.findStartsWith = function(array) { var match = this; var result = -1; $.each(array, function(index, str) { if (result!=-1) return; if (str.indexOf('*')==-1) return; var str = str.replace('*', ''); if(match.toLowerCase().indexOf(str.toLowerCase()) == 0) { result = index; return; } }); return result; };