{"id":6558,"date":"2023-07-26T16:11:01","date_gmt":"2023-07-26T16:11:01","guid":{"rendered":"https:\/\/www.goodguyssigns.com\/blog\/?p=6558"},"modified":"2023-08-01T20:06:36","modified_gmt":"2023-08-01T20:06:36","slug":"wholesale-dtf-direct-to-film-calculator","status":"publish","type":"post","link":"https:\/\/www.goodguyssigns.com\/blog\/wholesale-dtf-direct-to-film-calculator\/","title":{"rendered":"Wholesale DTF (Direct To Film) Calculator"},"content":{"rendered":"\n<p class=\"has-text-align-center\"><\/p>\n\n\n\n<style>\n\n    #calc *, #results * {\n        border:0;\n        margin:0;\n        padding:1px;\n        border-spacing: 2px;\n        box-sizing: border-box;\n        vertical-align: baseline;\n        line-height:1;\n    }\n\n    #calc *,#calc ::after,#calc ::before,\n    #results *,#results ::after, #results ::before {\n        box-sizing: border-box;\n    }\n\n\n    #calc table, #results table {\n        display: table;\n        border-collapse: separate;\n        box-sizing: border-box;\n        text-indent: initial;\n        border-spacing: 2px;\n        border-color: gray;\n        font-family: \"Times New Roman\";\n        text-align:center;\n    }\n\n\n    #calc td, #results td {\n        display: table-cell;\n        vertical-align: middle;\n    }\n   #dtfcalc input[type=\"checkbox\" ] {\n        background-color: initial;\n        cursor: default;\n        appearance: auto;\n        box-sizing: border-box;\n        margin: 3px 3px 3px 4px!important;\n        padding: initial;\n        border: initial;\n    }\n    #dtfcalc input:invalid {\n        border: 2px dashed red;\n    }\n    .red{\n        color:red;\n    }\n    .green{\n        color:green;\n    }\n    #ss,  #dtf{\n        width:50%;\n    }\n    #dtfcalc input[type=text] ,  input[type=text]:visited,  input[type=text]:active,  input[type=text]:focus, input[type=text]:focus-visible {\n        width: 45px;\n        text-align: right;\n        padding:5px!important;\n        border: 1px solid #C5C7C9!important;\n        background-color: #fff;\n        border-radius:0;\n        line-height:1;\n    }\n    #dtfcalc input[type=text]:visited,  input[type=text]:active,  input[type=text]:focus, input[type=text]:focus-visible {\n        box-shadow:0 0 0 2px #C5C7C9;\n    }\n\n    #dtfcalc button, button:hover, button:focus{\n        cursor:pointer;\n    }\n    #dtfcalc select{\n        padding:2px;\n    }\n    #dtfcalc button{\n        flex: 1 1 auto;\n        margin-right:10px;\n    }\n    #dtfcalc .btn {\n        display: inline-block;\n        font-weight: 400;\n        color: #212529;\n        text-align: center;\n        vertical-align: middle;\n        user-select: none;\n        background-color: transparent;\n        border: 1px solid transparent;\n        padding: .375rem .75rem!important;\n        font-size: 1rem!important;\n        line-height: 1.3!important;\n        border-radius: .25rem!important;\n        transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n    }\n    #dtfcalc .btn-primary {\n        color: #fff;\n        background-color: #1080e5;\n        border-color: #1080e5;\n    }\n    #dtfcalc .btn-danger {\n        color: #fff;\n        background-color: #cf3a2b;\n        border-color: #cf3a2b;\n    }\n    #dtfcalc .btn-success {\n        color: #fff;\n        background-color: #00843d;\n        border-color: #00843d;\n    }\n\n    #dtfcalc .disabled .btn-success, .disabled .btn-danger,  .disabled .btn-primary, .disabled div.pricing {\n        color: #adb5bd;\n        background-color: #FFFFFF;\n        border-color: #adb5bd;\n    }\n    #dtfcalc .pricing{\n        margin-bottom:5px!important;\n    }\n    #dtfcalc form.default input[type='text']{\n        background-color: #C5C7C9;\n    }\n    #results.editing #grayout:after {\n        content: '\\A';\n        position: absolute;\n        width: 100%;\n        height:calc(100% + 5px);\n        top:-5px;\n        left:0;\n        background:#adb5bd;\n        opacity: .5;\n        transition: all 1s;\n        -webkit-transition: all 1s;\n    }\n\n    #results {\n        position: relative;\n\n        transform: translateX(-100%);\n        -webkit-transform: translateX(-100%);\n        z-index:-1;\n    }\n\n    #dtfcalc .slide-in {\n        animation: slide-in 0.5s forwards;\n        -webkit-animation: slide-in 0.5s forwards;\n        z-index:1!important;\n    }\n\n    #dtfcalc .slide-out {\n        animation: slide-out 0.5s forwards;\n        -webkit-animation: slide-out 0.5s forwards;\n\n    }\n\n    @keyframes slide-in {\n        100% {\n            transform: translateX(0%);\n        }\n    }\n\n    @-webkit-keyframes slide-in {\n        100% {\n            -webkit-transform: translateX(0%);\n        }\n    }\n\n    @keyframes slide-out {\n        0% {\n            transform: translateX(0%);\n        }\n        100% {\n            transform: translateX(-100%);\n        }\n    }\n\n    @-webkit-keyframes slide-out {\n        0% {\n            -webkit-transform: translateX(0%);\n        }\n        100% {\n            -webkit-transform: translateX(-100%);\n        }\n    }\n\n    \/* Extra small devices (phones, 600px and down) *\/\n    @media only screen and (max-width: 600px) {\n        #results {\n            position: absolute;\n\n            transform: translateY(0%);\n            -webkit-transform: translateY(0%);\n            z-index:-1;\n        }\n\n        .slide-in {\n            animation: slide-in 0.5s forwards;\n            -webkit-animation: slide-in 0.5s forwards;\n            z-index:1!important;\n        }\n\n        .slide-out {\n            animation: slide-out 0.5s forwards;\n            -webkit-animation: slide-out 0.5s forwards;\n        }\n\n        @keyframes slide-in {\n            100% {\n                transform: translateY(100%);\n            }\n        }\n\n        @-webkit-keyframes slide-in {\n            100% {\n                -webkit-transform: translateY(100%);\n            }\n        }\n\n        @keyframes slide-out {\n            0% {\n                transform: translateY(0%);\n            }\n            100% {\n                transform: translateY(-100%);\n            }\n        }\n\n        @-webkit-keyframes slide-out {\n            0% {\n                -webkit-transform: translateY(0%);\n            }\n            100% {\n                -webkit-transform: translateY(-100%);\n            }\n        }\n\n\n    }\n\n    \/* Small devices (portrait tablets and large phones, 600px and up) *\/\n    @media only screen and (min-width: 600px) {\n\n    }\n<\/style>\n<div id=\"dtfcalc\" style=\"display:flex;align-items:flex-start;position:relative;max-width:760px;margin:0 auto\">\n    <div  id=\"calc\"  class=\"default\"  style=\"width:350px;padding:3px;background-color:white;z-index:10\">\n        <table width=\"100%\">\n            <tr>\n                <td>\n                    <table width=\"100%\" style=\"background-color: #0b3e81;color:white;font-size:.9em;padding:3px;\">\n                        <tr>\n                            <th width=\"70\" align=\"center\">Side<\/th>\n                            <th width=\"70\" align=\"center\">Qty<\/th>\n                            <th width=\"70\" align=\"center\">Colors<\/th>\n                            <th width=\"70\" align=\"center\">Width<\/th>\n                            <th width=\"70\" align=\"center\">Height<\/th>\n                        <\/tr><\/table>\n                <\/td>\n            <\/tr>\n            <tr>\n                <td >\n                    <form name=\"front\"  class=\"default\"   onsubmit=\"return false\">\n                        <table width=\"100%\">\n                            <tr>\n                                <td width=\"70\" align=\"center\"><div style=\"float:left\">Front<\/div>\n                                    <input  style=\"float:right;\" type=\"checkbox\" name=\"sidecheck\" value=\"front\"  required><\/td>\n                                <td width=\"70\" align=\"center\"><input disabled type=\"text\" name=\"qty\" value=\"\" placeholder=\"0\" required pattern=\"(?!0)[0-9]{2,5}\" data-errmsg=\"Please enter a quantity between 12 and 99,999\"><\/td>\n                                <td width=\"70\" align=\"center\"><input disabled type=\"text\" name=\"colors\" value=\"\" placeholder=\"0\" required pattern=\"[1-8]{1}\" data-errmsg=\"Please enter number of colors between 1 and 8\"><\/td>\n                                <td width=\"70\" align=\"center\"><input disabled type=\"text\" name=\"width\" value=\"\" placeholder=\"0\" maxlength=\"3\" required pattern=\"^((?:[1-9]|1[0-9]|2[0-2])(?:\\.\\d{1,2})?|22(?:\\.00?)?)$\" data-errmsg=\"Please enter a size between 1 and 22&#038;#34\"><\/td>\n                                <td width=\"70\" align=\"center\"><input disabled type=\"text\" name=\"length\" value=\"\"  placeholder=\"0\"  maxlength=\"3\" required pattern=\"^((?:[1-9]|1[0-9]|2[0-2])(?:\\.\\d{1,2})?|22(?:\\.00?)?)$\" data-errmsg=\"Please enter a size between 1 and 22&#038;#34\"><\/td>\n                            <\/tr>\n                        <\/table>\n                    <\/form>\n                <\/td>\n            <\/tr>\n            <tr>\n                <td >\n                    <form name=\"back\"  class=\"default\"   onsubmit=\"return false\">\n                        <table width=\"100%\">\n                            <tr>\n                                <td width=\"70\" align=\"center\"><div style=\"float:left\">Back<\/div>\n                                    <input  style=\"float:right;\" type=\"checkbox\" name=\"sidecheck\" value=\"back\" required ><\/td>\n                                <td width=\"70\" align=\"center\"><input disabled type=\"text\" name=\"qty\" value=\"\" placeholder=\"0\" required pattern=\"(?!0)[0-9]{2,5}\" data-errmsg=\"Please enter a quantity between 12 and 99,999\"><\/td>\n                                <td width=\"70\" align=\"center\"><input disabled type=\"text\" name=\"colors\" value=\"\" placeholder=\"0\" required pattern=\"[1-8]{1}\" data-errmsg=\"Please enter number of colors between 1 and 8\"><\/td>\n                                <td width=\"70\" align=\"center\"><input disabled type=\"text\" name=\"width\" value=\"\" placeholder=\"0\" maxlength=\"3\" required pattern=\"^((?:[1-9]|1[0-9]|2[0-2])(?:\\.\\d{1,2})?|22(?:\\.00?)?)$\" data-errmsg=\"Please enter a size between 1 and 22&#038;#34\"><\/td>\n                                <td width=\"70\" align=\"center\"><input disabled type=\"text\" name=\"length\" value=\"\"  placeholder=\"0\"  maxlength=\"3\" required pattern=\"^((?:[1-9]|1[0-9]|2[0-2])(?:\\.\\d{1,2})?|22(?:\\.00?)?)$\" data-errmsg=\"Please enter a size between 1 and 22&#038;#34\"><\/td>\n                            <\/tr>\n                        <\/table>\n                    <\/form>\n                <\/td>\n            <\/tr>\n            <tr>\n                <td>\n                    <table width=\"100%\"><tr>\n                            <td align=\"center\">\n                                <div style=\"display:flex;  align-items: center; justify-content: center;\">\n                                    <button name=\"calc\"  class=\"btn btn-primary\" style=\"margin-right:5px;width:75%\">Calculate<\/button>\n                                    <button name=\"reset\" class=\"btn btn-danger\" style=\";width:25%\">Reset<\/button>\n                                <\/div>\n                            <\/td>\n                        <\/tr>\n                    <\/table>\n                <\/td>\n            <\/tr>\n        <\/table>\n    <\/div>\n\n\n    <div  id=\"results\" class=\"disabled\" style=\"width:350px;padding:3px;\">\n        <table width=\"100%\">\n            <tr>\n                <td >\n                    <table width=\"100%\" style=\"background-color: #0b3e81;color:white;font-size:.9em;padding:3px;\">\n                        <tr>\n                            <th align=\"center\">Results<\/th>\n                        <\/tr>\n                    <\/table>\n                <\/td>\n            <\/tr>\n            <tr>\n                <td width=\"100%\">\n                    <table id=\"grayout\" width=\"100%\" style=\"position:relative\">\n                        <tr>\n                            <td align=\"center\" id=\"ss\" >\n                                <div id=\"ssbutton\" class=\"btn\" style=\"width:75%;margin-bottom:5px;\">Silk Screen<\/div>\n                                <div class=\"pricing\"> $<span id=\"ssprice\">0.00<\/span> Total <\/div>\n                                <div class=\"pricing\"> $<span id=\"sspriceeach\">0.00<\/span> \/ Unit <\/div>\n                            <\/td>\n                            <td align=\"center\" id=\"dtf\">\n                                <div id=\"dtfbutton\" class=\"btn\"  style=\"width:75%;margin-bottom:5px;\">DTF<\/div>\n                                <div class=\"pricing\">$<span id=\"dtfprice\">0.00<\/span> Total<\/div>\n                                <div class=\"pricing\"> $<span id=\"dtfpriceeach\">0.00<\/span> \/ Unit <\/div>\n                            <\/td>\n                        <\/tr>\n                        <tr><td colspan=\"2\" align=\"center\"><small>Imprint Price Only &#8211; Does Not Include Garment Cost<\/small><\/td><\/tr>\n                    <\/table>\n                <\/td>\n            <\/tr>\n\n        <\/table>\n    <\/div>\n\n<\/div>\n<div><small>*The above DTF Pricing includes heat pressing on your garment.<\/small><\/div>\n<script>\n    const dq = document.querySelector.bind(document);\n    const dqa = document.querySelectorAll.bind(document);\n    const btnCalc = dq(\"button[name='calc']\");\n    const btnReset = dq(\"button[name='reset']\");\n    const sdsw = dq(\"select[name='sides']\");\n    const fcalc = dq(\"div#calc\");\n    const res = dq(\"div#results\");\n    const inp = dqa(\"input[type='text']\");\n    const inc = dqa(\"input[type='checkbox']\");\n    \/* OUTPUT *\/\n    const ssprice = dq(\"#ssprice\");\n    const sspriceeach = dq(\"#sspriceeach\");\n    \/\/ const dtfprice = dq(\"input[name='dtfprice']\");\n    const dtfprice = dq(\"#dtfprice\");\n    const dtfpriceeach = dq(\"#dtfpriceeach\");\n    \/*data *\/\n    \/* used keyed json convert from cvs @ www.convertcsv.com\/csv-to-json.htm *\/\n    const dtf = {\"0\": {\"cost\": \"6.00\"}, \"4\": {\"cost\": \"5.00\"}, \"8\": {\"cost\": \"4.00\"}, \"12\": {\"cost\": \"3.75\"}, \"15\": {\"cost\": \"3.50\"}, \"20\": {\"cost\": \"3.35\"}, \"25\": {\"cost\": \"3.25\"}, \"30\": {\"cost\": \"3.00\"}, \"40\": {\"cost\": \"2.75\"}, \"50\": {\"cost\": \"2.50\"}, \"75\": {\"cost\": \"2.35\"}, \"100\": {\"cost\": \"2.25\"}, \"150\": {\"cost\": \"2.15\"}, \"250\": {\"cost\": \"2.00\"}, \"350\": {\"cost\": \"1.85\"}, \"500\": {\"cost\": \"1.65\"}, \"750\": {\"cost\": \"1.50\"}};\n    const ss = {\"0\": {\"c1\": 4.61, \"c2\": 8, \"c3\": 10.99, \"c4\": 14.45, \"c5\": 17.88, \"c6\": 22.42, \"c7\": 24.3, \"c8\": 26.8}, \"12\": {\"c1\": 4.61, \"c2\": 8, \"c3\": 10.99, \"c4\": 14.45, \"c5\": 17.88, \"c6\": 22.42, \"c7\": 24.3, \"c8\": 26.8}, \"24\": {\"c1\": 3.01, \"c2\": 4.31, \"c3\": 6.16, \"c4\": 7.9, \"c5\": 9.51, \"c6\": 11.96, \"c7\": 12.94, \"c8\": 14.32}, \"36\": {\"c1\": 2.45, \"c2\": 3.4, \"c3\": 4.28, \"c4\": 6.9, \"c5\": 7.49, \"c6\": 8.84, \"c7\": 9.61, \"c8\": 10.71}, \"48\": {\"c1\": 1.89, \"c2\": 2.75, \"c3\": 3.47, \"c4\": 4.36, \"c5\": 5.14, \"c6\": 6.5, \"c7\": 6.93, \"c8\": 7.66}, \"72\": {\"c1\": 1.47, \"c2\": 2.02, \"c3\": 2.55, \"c4\": 3.18, \"c5\": 3.81, \"c6\": 4.39, \"c7\": 4.99, \"c8\": 5.52}, \"100\": {\"c1\": 1.24, \"c2\": 1.67, \"c3\": 2.13, \"c4\": 2.56, \"c5\": 3.03, \"c6\": 3.6, \"c7\": 4.04, \"c8\": 4.39}, \"144\": {\"c1\": 1.05, \"c2\": 1.4, \"c3\": 1.71, \"c4\": 2.05, \"c5\": 2.39, \"c6\": 2.72, \"c7\": 3.12, \"c8\": 3.41}, \"288\": {\"c1\": 0.88, \"c2\": 1.11, \"c3\": 1.36, \"c4\": 1.61, \"c5\": 1.79, \"c6\": 2.03, \"c7\": 2.29, \"c8\": 2.49}, \"500\": {\"c1\": 0.75, \"c2\": 0.91, \"c3\": 1.1, \"c4\": 1.28, \"c5\": 1.45, \"c6\": 1.59, \"c7\": 1.8, \"c8\": 1.94}, \"1000\": {\"c1\": 0.68, \"c2\": 0.8, \"c3\": 0.95, \"c4\": 1.09, \"c5\": 1.21, \"c6\": 1.35, \"c7\": 1.5, \"c8\": 1.63}, \"2000\": {\"c1\": 0.64, \"c2\": 0.74, \"c3\": 0.87, \"c4\": 0.99, \"c5\": 1.09, \"c6\": 1.22, \"c7\": 1.34, \"c8\": 1.46}};\n    const pc = {\"0\": {\"cost\": 2.5}, \"1\": {\"cost\": 2.5}, \"12\": {\"cost\": 2}, \"50\": {\"cost\": 1.85}, \"100\": {\"cost\": 1.75}, \"250\": {\"cost\": 1.65}};\n    var preventValidationFront = true;\n    var preventValidationBack = true;\n\n    function checkValidation(sn) {\n        if (sn === 'front') {\n            if (preventValidationFront === false) {\n                return true;\n            }\n        }\n        if (sn === 'back') {\n            if (preventValidationBack === false) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n\n    function main(e) {\n        var sdw = dqa(\"input[name='sidecheck']:checked\");\n        var waf = 0, dtfpricef = 0, dtfpriceeachf = 0, sspricef = 0, sspriceeachf = 0, prices;\n        var totalQuantity = 0;\n        var totalSQFT = 0;\n        var formErrors = false;\n        if (sdw.length === 0) {\n            return false;\n        }\n\n        for (i = 0; i < sdw.length; i++) {\n            var sn = sdw[i].value;\n            if (checkValidation(sn)) {\n                var form = dq(\"form[name='\" + sn + \"']\");\n                var nbrinputs = form.getElementsByTagName('input');\n                var errmsg = '';\n                if (form.checkValidity() === false) {\n                    var list = form.querySelectorAll(':invalid');\n                    for (var item of list) {\n                        var validityState = item.validity;\n                        \/\/console.log(item.reportValidity());\n                        errmsg = item.getAttribute('data-errmsg');\n                        if (validityState.valueMissing) {\n                            item.setCustomValidity(errmsg);\n                        } else if (validityState.patternMismatch) {\n                            item.setCustomValidity(errmsg);\n                        } else {\n                            errmsg = '';\n                            item.setCustomValidity('');\n                        }\n                        \/\/   item.focus();\n                    }\n                    form.reportValidity();\n                    formErrors = true;\n                } else {\n                    formErrors = false;\n                }\n                if (formErrors === true) {\n                    return false;\n                }\n            }\n        }\n\n\n        for (i = 0; i < sdw.length; i++) {\n            var sn = sdw[i].value;\n            totalQuantity += addTQ(e, sn);\n            totalSQFT += addSQFT(e, sn);\n        }\n\n        for (i = 0; i < sdw.length; i++) {\n            var sn = sdw[i].value;\n            var form = dq(\"form[name='\" + sn + \"']\");\n            console.log(form);\n            prices = calc(e, sn, totalQuantity, totalSQFT);\n            console.log(prices);\n            waf += parseFloat(prices.wa);\n            dtfpricef += parseFloat(prices.dtfprice);\n            dtfpriceeachf += parseFloat(prices.dtfpriceeach);\n            sspricef += parseFloat(prices.ssprice);\n            sspriceeachf += parseFloat(prices.sspriceeach);\n        }\n        dtfprice.innerHTML = dtfpricef.toFixed(2);\n        dtfpriceeach.innerHTML = dtfpriceeachf.toFixed(2);\n        ssprice.innerHTML = sspricef.toFixed(2);\n        sspriceeach.innerHTML = sspriceeachf.toFixed(2);\n\n        if (dtfpricef > sspricef) {\n            \/* ss lower *\/\n            removeClass(dq('#ss'), 'red');\n            addClass(dq('#ss'), 'green');\n            removeClass(dq('#ssbutton'), 'btn-danger');\n            addClass(dq('#ssbutton'), 'btn-success');\n            removeClass(dq('#dtf'), 'green');\n            addClass(dq('#dtf'), 'red');\n            removeClass(dq('#dtfbutton'), 'btn-success');\n            addClass(dq('#dtfbutton'), 'btn-danger');\n        } else {\n            \/* dtf lower *\/\n            removeClass(dq('#dtf'), 'red');\n            addClass(dq('#dtf'), 'green');\n            removeClass(dq('#dtfbutton'), 'btn-danger');\n            addClass(dq('#dtfbutton'), 'btn-success');\n            removeClass(dq('#ss'), 'green');\n            addClass(dq('#ss'), 'red');\n            removeClass(dq('#ssbutton'), 'btn-success');\n            addClass(dq('#ssbutton'), 'btn-danger');\n        }\n        var sl = document.getElementById('results');\n        sl.setAttribute('class', 'slide-in');\n    }\n\n    function addTQ(e, side) {\n        var q = parseInt(dq(\"form[name='\" + side + \"'] input[name='qty']\").value);\n        return q;\n    }\n\n    function addSQFT(e, side) {\n        var f = side;\n        var w = parseFloat(dq(\"form[name='\" + f + \"'] input[name='width']\").value);\n        var l = parseFloat(dq(\"form[name='\" + f + \"'] input[name='length']\").value);\n        var q = parseInt(dq(\"form[name='\" + f + \"'] input[name='qty']\").value);\n        var sqft = ((w * l) * q) \/ 144;\n        return sqft;\n    }\n\n    function calc(e, side, totalQuantity, totalSQFT) {\n        removeClass(res, 'editing');\n        removeClass(res, 'disabled');\n        var w = parseFloat(dq(\"form[name='\" + side + \"'] input[name='width']\").value);\n        var l = parseFloat(dq(\"form[name='\" + side + \"'] input[name='length']\").value);\n        var c = parseInt(dq(\"form[name='\" + side + \"'] input[name='colors']\").value);\n        var q = parseInt(dq(\"form[name='\" + side + \"'] input[name='qty']\").value);\n        var sqft = ((w * l) * q) \/ 144;\n        if (c > 8 || c === 0) {\n            c = 4;\n        }\n        var sskeys = Object.keys(ss).reverse();\n        var result = sskeys.filter(function (el) {\n            return parseInt(el) <= parseInt(q);\n        }, q);\n        var ss1 = eval('ss[result[0]].c' + c);\n        var dtfkeys = Object.keys(dtf).reverse();\n        var result1 = dtfkeys.filter(function (el) {\n            return parseInt(el) <= parseInt(totalSQFT);\n        }, totalSQFT);\n        var pckeys = Object.keys(pc).reverse();\n        var result2 = pckeys.filter(function (el) {\n            return parseInt(el) <= parseInt(totalQuantity);\n        }, totalQuantity);\n        dtf1 = dtf[result1[0]].cost;\n        pc1 = pc[result2[0]].cost;\n        var dtfW = 22.25, gapBetween = .125, waste = calcDtfWaste(dtfW, w, l, gapBetween, sqft, q),\n                press = (pc1 * q);\n        qu = ({'pcc': pc1, 'wa': waste, 'dtfprice': ((dtf1 * sqft) + press + waste), 'dtfpriceeach': (((dtf1 * sqft) + press + waste) \/ (q)), 'ssprice': (((ss1 * q))), 'sspriceeach': ((((ss1 * q))) \/ (q))});\n        return qu;\n    }\n\n    function calcDtfWaste(pw, w, l, gb, sqft, q) {\n        pw = parseFloat(pw);\n        w = parseFloat(w);\n        l = parseFloat(l);\n        gb = parseFloat(gb);\n        ul = parseInt(pw \/ (l + gb));\n        uw = parseInt(pw \/ (w + gb));\n        var wc = .37, tw, musf;\n        \/* get height to calc total substrate used*\/\n        if ((ul * l) > (uw * w)) {\n            rows = Math.ceil(q \/ ul);\n            musf = (pw * ((w + gb) * rows) \/ 144);\n        } else {\n            rows = Math.ceil(q \/ uw);\n            musf = (pw * ((l + gb) * rows) \/ 144);\n        }\n        return ((musf - sqft) * wc * 1.35);\n    }\n    function switchsides(side) {\n        if (this.value > 1) {\n            dq('#side2').style.display = 'block';\n        } else {\n            dq('#side2').style.display = 'none';\n        }\n    }\n\n    function reset() {\n        var cbox, name;\n        removeClass(res, 'editing');\n        addClass(res, 'disabled');\n        dqa(\"form\").forEach(form => {\n            form.reset();\n            addClass(form, 'default');\n            name = form.getAttribute(\"name\");\n            cbox = dq(\"form[name='\" + name + \"'] input[type='checkbox'] \");\n            if (cbox) {\n                cbox.checked = false;\n            }\n        });\n    }\n\n    function showForm(element) {\n        var form = window.event.target.form;\n        removeClass(form, 'default');\n        var name = form.getAttribute(\"name\");\n        var cbox = dq(\"form[name='\" + name + \"'] input[type='checkbox'] \");\n        if (cbox) {\n            cbox.checked = true;\n        }\n    }\n\n    function addClass(element, className) {\n        element.classList.add(className);\n    }\n\n    function removeClass(element, className) {\n        element.classList.remove(className);\n    }\n\n    function  handleCheckBox() {\n        var form = window.event.target.form;\n        var name = form.getAttribute(\"name\");\n        var cbox = dq(\"form[name='\" + name + \"'] input[type='checkbox'] \");\n        console.log(cbox.checked);\n        if (cbox.checked) {\n            removeClass(form, 'default');\n            for (i = 0; i < inp.length; i++) {\n                inp[i].disabled = false;\n            }\n            \/\/   cbox.checked = false;\n        } else {\n            addClass(form, 'default');\n            \/\/   cbox.checked = true;\n            for (i = 0; i < inp.length; i++) {\n                inp[i].disabled = true;\n            }\n        }\n    }\n\n    function handleInputEdit() {\n        addClass(res, 'editing');\n    }\n\n    function handleInputEditShow() {\n        removeClass(res, 'editing');\n    }\n\n\n    function init() {\n        var sdw = dqa(\"input[name='sidecheck']:checked\");\n        for (i = 0; i < sdw.length; i++) {\n            var sn = sdw[i].value;\n            if (sn == 'front') {\n                preventValidationFront = false\n            }\n            if (sn == 'back') {\n                preventValidationBack = false;\n            }\n        }\n        main();\n        for (i = 0; i < inp.length; i++) {\n            inp[i].addEventListener(\"change\", main);\n        }\n\n\n    }\n\n    btnCalc.addEventListener(\"click\", init);\n    btnReset.addEventListener(\"click\", reset);\n\n    for (i = 0; i < inp.length; i++) {\n        inp[i].addEventListener(\"click\", showForm);\n        inp[i].addEventListener(\"focus\", handleInputEdit);\n        inp[i].addEventListener(\"blur\", handleInputEditShow);\n        \/\/  inp[i].addEventListener(\"change\", main);\n    }\n\n    for (i = 0; i < inc.length; i++) {\n        inc[i].addEventListener(\"change\", handleCheckBox);\n    }\n    \/\/    sdsw.addEventListener(\"change\", switchsides);\n<\/script>\n\n\n\n<p class=\"has-white-color has-luminous-vivid-orange-background-color has-text-color has-background\">This Wholesale Pricing is for resellers with a State Resale Certificate.<\/p>\n\n\n\n<p><strong>Silk Screen Printing<\/strong><\/p>\n\n\n\n<p>Don\u2019t forget to add 1 color for a white under-base of ink for dark garments\/items. Silk screen printing is complete 3 days from shirt arrival. Silk screen printing is best for large runs of 100 + items, and 1 color mid sized orders and up, &nbsp;and PMS matched colors.<\/p>\n\n\n\n<p><strong>DTF Printing<\/strong><\/p>\n\n\n\n<p>DTF printing includes a white base, thus can be used on any color of garment.<\/p>\n\n\n\n<p>Is best for short runs, medium run sizes, multi-colored graphics, and shirt by shirt customization, such as names on the back of uniforms. Small, full color front chest prints are often cheaper using DTF<\/p>\n\n\n\n<p>DTF stands for <strong>d<\/strong>irect <strong>t<\/strong>o <strong>f<\/strong>ilm. It is a <strong>heat transfer decal<\/strong>.<\/p>\n\n\n\n<p>Pro\u2019s<\/p>\n\n\n\n<ul>\n<li>Full color, CMYK printing + a white under base included (any color shirt\/fabric works)<\/li>\n\n\n\n<li>Can be used on 100% cotton, Synthetics, and Cotton-Poly blends<\/li>\n\n\n\n<li>Soft hand feel<\/li>\n\n\n\n<li>Stretchable<\/li>\n\n\n\n<li>Long lasting - 50+ washes (superior to DTG)<\/li>\n\n\n\n<li>Faster turn-around times<\/li>\n\n\n\n<li>No Pre-treatment required; you don\u2019t have to wash the shirt before wearing it<\/li>\n<\/ul>\n\n\n\n<p>Con\u2019s<\/p>\n\n\n\n<ul>\n<li>22\u201d max on one side, print to 100\u2019 plus<\/li>\n\n\n\n<li>PMS approximations only<\/li>\n\n\n\n<li>PNG\u2019s and\/or Vectors required<\/li>\n<\/ul>\n\n\n\n<p><strong>Pricing is about the graphics\u2019 size; Price is calculated with square inches\/square feet, not the number of colors-<u> this is a new way to think in the decoration world<\/u><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This Wholesale Pricing is for resellers with a State Resale Certificate. Silk Screen Printing Don\u2019t forget to add 1 color for a white under-base of ink for dark garments\/items. Silk screen printing is complete 3 days from shirt arrival. Silk screen printing is best for large runs of 100 + items, and 1 color mid [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6650,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[942],"tags":[941,938,940,939,943],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/posts\/6558"}],"collection":[{"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/comments?post=6558"}],"version-history":[{"count":52,"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/posts\/6558\/revisions"}],"predecessor-version":[{"id":6649,"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/posts\/6558\/revisions\/6649"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/media\/6650"}],"wp:attachment":[{"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/media?parent=6558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/categories?post=6558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.goodguyssigns.com\/blog\/wp-json\/wp\/v2\/tags?post=6558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}