{"id":1034,"date":"2017-08-18T10:20:44","date_gmt":"2017-08-18T07:20:44","guid":{"rendered":"http:\/\/www.brandner.ee\/?page_id=1034\/"},"modified":"2020-06-25T11:05:27","modified_gmt":"2020-06-25T08:05:27","slug":"kysy-hintatarjousta","status":"publish","type":"page","link":"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/","title":{"rendered":"Kysy Hintatarjousta"},"content":{"rendered":"<p><strong>NB! <\/strong><\/p>\n<p><strong>IF YOUR DESIGN CONTAINS BLIND\/BURIED VIAS, PLATED EDGE, BLIND MILLING, SET\/PANEL FROM DIFFERENT BOARDS, HALF-CUT HOLES, OTHER SPECIAL FEATURES OR THE ASPECTS YOU DO NOT FIND FROM THIS FORM, PLEASE SEND YOUR <\/strong><strong>REQUEST VIA E-MAIL to sales@brandner.ee.<\/strong><\/p>\n<p>&nbsp;<\/p>\n\n\n<div class=\"container-fluid\">\n  <div class=\"row\">\n    <div id=\"orderform_col\" class=\"col-md-5\">\n      <!-- <form id=\"orderform\" class=\"form-horizontal\" method=\"POST\" enctype=\"multipart\/form-data\"> -->\n      <form id=\"orderform\" class=\"form-horizontal\" method=\"POST\" enctype=\"multipart\/form-data\">\n        <input type=\"hidden\" id=\"_protoshop_nonce\" name=\"_protoshop_nonce\" value=\"4b0a211839\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/fi\/wp-json\/wp\/v2\/pages\/1034\" \/>        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"BoardName\">Piirilevy nimi<\/label>\n          <div class=\"col-md-7\">\n            <input id=\"BoardName\" class=\"form-control\" type=\"text\" name=\"order[BoardName]\" value=\"\" maxlength=\"40\" isreq=\"\">\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\">Yksitt&auml;isen levyn mittaus (mm)<\/label>\n          <div class=\"col-md-7\">\n\n            <div class=\"input-group\">\n              <span class=\"input-group-addon\">X<\/span>\n              <input lang=\"en-150\" id=\"PlatX\" class=\"form-control calc_panel_dimensions quantity_and_size_validation\" type=\"number\" step=\"0.01\" min=\"20\" max=\"460\" name=\"order[PlatX]\" value=20 isreq=\"\">\n              <span class=\"input-group-addon\">mm<\/span>\n            <\/div>\n\n            <div class=\"input-group\">\n              <span class=\"input-group-addon\">Y<\/span>\n              <input lang=\"en-150\" id=\"PlatY\" class=\"form-control calc_panel_dimensions quantity_and_size_validation\" type=\"number\" step=\"0.01\" min=\"20\" max=\"460\" name=\"order[PlatY]\" value=20 isreq=\"\">\n              <span class=\"input-group-addon\">mm<\/span>\n            <\/div>\n\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label for=\"Leib\" class=\"col-md-5\">Haluatteko paneelissa?<\/label>\n          <div class=\"col-md-7\">\n            <div class=\"input-group\">\n              <select id=\"Leib\" class=\"calc_panel_dimensions form-control\" name=\"order[Leib]\">\n                <option value=\"0\" selected=\"\">Ei<\/option>\n                <option value=\"-1\">Kyll&auml;<\/option>\n              <\/select>\n              <span class=\"input-group-addon icon-addon white-bg\">\n                <div class=\"selicon\">\n                  <img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_panel.png\">\n                <\/div>\n              <\/span>\n              <!-- <div class=\"selicon\">\n                                <img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_panel.png\">\n                            <\/div> -->\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div id=\"panelcreate\" style=\"display:none\">\n\n          <span id=\"help-similar-panels\" class=\"help-block\"><img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_notice.jpg\">Aihiossa voi olla vaan samanlaiset levyt. Jos gerberit sis&auml;lt&auml;&auml; kuitenkin erilaisia levyj&auml; ota yhteytt&auml; myyntiin.<\/span>\n\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"panelcraft\">Paneelin koostaminen<\/label>\n            <div class=\"col-md-7\">\n              <select id=\"panelcraft\" class=\"calc_panel_dimensions form-control check_delivery_restrictions\" name=\"panelcraft\">\n                <option value=\"0\" selected=\"\">On lis&auml;tty liittees&auml;<\/option>\n                <option value=\"1\">Kokoa<\/option>\n              <\/select>\n            <\/div>\n          <\/div>\n\n\n          <div id=\"panelcrafting\" style=\"display:none\">\n\n            <!-- <div class=\"frow clear\">\n                        <label>{lang}Mitu plaati X suunas (tk){\/lang}<\/label>\n                        <div>\n                            <input class=\"fbig calc_panel_dimensions\" type=\"number\" min=\"0\" name=\"order[CntOnPanelX]\" value=\"\" \/>\n                        <\/div>\n                    <\/div>\n                    <div class=\"frow clear\">\n                        <label>{lang}Mitu plaati Y suunas (tk){\/lang}<\/label>\n                        <div>\n                            <input class=\"fbig calc_panel_dimensions\" type=\"number\" min=\"0\" name=\"order[CntOnPanelY]\" value=\"\" \/>\n                        <\/div>\n                    <\/div> -->\n\n            <div class=\"form-group\">\n              <label class=\"col-md-5\">Montako levy&auml; kussakin suunnassa<\/label>\n              <div class=\"col-md-7\">\n\n                <div class=\"input-group\">\n                  <span class=\"input-group-addon\">X<\/span>\n                  <input id=\"CntOnPanelX\" class=\"form-control calc_panel_dimensions \" type=\"number\" min=\"0\" name=\"order[CntOnPanelX]\" value=1 isreq=\"\" lang=\"en-150\">\n                  <span class=\"input-group-addon\">kpl<\/span>\n                <\/div>\n\n                <div class=\"input-group\">\n                  <span class=\"input-group-addon\">Y<\/span>\n                  <input id=\"CntOnPanelY\" class=\"form-control calc_panel_dimensions\" type=\"number\" min=\"0\" name=\"order[CntOnPanelY]\" value=1 isreq=\"\" lang=\"en-150\">\n                  <span class=\"input-group-addon\">kpl<\/span>\n                <\/div>\n\n              <\/div>\n            <\/div>\n\n            <span id=\"help-fiducials\" class=\"help-block\"><img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_notice.jpg\">Lis&auml;mme kohdistusmerkit paneelin kolmeen kulman<\/span>\n\n            <div class=\"form-group\">\n              <label class=\"col-md-5\" for=\"PlanOfPanel\">Paneelin suunnitelma<\/label>\n              <div class=\"col-md-7\">\n                <div class=\"input-group\">\n                  <select id=\"PlanOfPanel\" class=\"calc_panel_dimensions form-control\" name=\"order[PlanOfPanel]\">\n                    <option value=\"0\" selected=\"\">Ilman kehyst&auml;<\/option>\n                    <option value=\"x\">Runko X kyljill&auml;<\/option>\n                    <option value=\"y\">Runko Y kyljill&auml;<\/option>\n                    <option value=\"xy\">Runko XY kyljill&auml;<\/option>\n                  <\/select>\n                  <span class=\"input-group-addon icon-addon white-bg\">\n                    <div id=\"selplan\" class=\"selicon\">\n                      <img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_plan.png\">\n                    <\/div>\n                  <\/span>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <div id=\"framewidth\" class=\"\" style=\"display: none;\">\n              <div class=\"form-group\">\n                <label class=\"col-md-5\" for=\"FrameWidth\">Kehyksen pituus<\/label>\n                <div class=\"col-md-7\">\n                  <select id=\"FrameWidth\" class=\"calc_panel_dimensions form-control\" name=\"order[FrameWidth]\">\n                    <option value=\"5\">5<\/option>\n                    <option value=\"10\">10<\/option>\n                  <\/select>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"panelCut\">Leikkaus<\/label>\n            <div class=\"col-md-7\">\n              <select id=\"panelCut\" class=\"calc_panel_dimensions form-control\" name=\"order[panelCut]\">\n                <option value=\"frees\">Reititys<\/option>\n                <option value=\"vcut\">V-ura<\/option>\n\n              <\/select>\n            <\/div>\n          <\/div>\n          <div id=\"freesid\">\n            <div class=\"form-group\">\n              <label class=\"col-md-5\" for=\"FreesiD\">Reititys (mm)<\/label>\n              <div class=\"col-md-7\">\n                <select id=\"FreesiD\" class=\"calc_panel_dimensions form-control\" name=\"order[FreesiD]\">\n                  <option value=\"2\">2<\/option>\n                  <option value=\"2.4\">2.4<\/option>\n                <\/select>\n              <\/div>\n            <\/div>\n          <\/div>\n          <!--\n                    <div id=\"framewidth\" class=\"hidden\">\n                        <div class=\"frow clear\">\n                            <label>{lang}Raami laius (mm){\/lang}<\/label>\n                            <div>\n                                <select class=\"calc_panel_dimensions\" name=\"order[FrameWidth]\">\n                                    {foreach $var.FrameWidth as $FrameWidth}\n                                        <option value=\"{$FrameWidth}\">{$FrameWidth}<\/option>\n                                    {\/foreach}\n                                <\/select>\n                            <\/div>\n                        <\/div>\n                    <\/div> -->\n          <!-- <\/div> -->\n\n          <span id=\"help-file-reminder\" class=\"help-block\"><img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_notice.jpg\">Varmista, ett&auml; paneeli piirustus on liitetty mukaan<\/span>\n\n          <span id=\"help-combined-panel\" class=\"help-block\"><img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_notice.jpg\">Tarvitaanko yhdistetty paneeli? Ota yhteytt&auml;!<\/span>\n\n          <div class=\"form-group\">\n            <label class=\"col-md-5\">Paneelin mittaus (mm)<\/label>\n            <div class=\"col-md-5\">\n              <div class=\"input-group\">\n                <span class=\"input-group-addon\">X<\/span>\n                <input lang=\"en-150\" id=\"PlatXPanel\" class=\"form-control quantity_and_size_validation\" type=\"number\" step=\"0.01\" name=\"order[PlatXPanel]\" value=60 min=60 max=460 isreq=\"\">\n              <\/div>\n\n              <div class=\"input-group\">\n                <span class=\"input-group-addon\">Y<\/span>\n                <input lang=\"en-150\" id=\"PlatYPanel\" class=\"form-control quantity_and_size_validation\" type=\"number\" step=\"0.01\" name=\"order[PlatYPanel]\" value=60 min=60 max=460 isreq=\"\">\n              <\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"CntLeib\">Montako levy&auml; paneelissa? (kpl)<\/label>\n            <div class=\"col-md-7\">\n              <input id=\"CntLeib\" class=\"form-control quantity_and_size_validation\" type=\"number\" min=1 name=\"order[CntLeib]\" value=1 step=\"1\" isreq=\"\">\n            <\/div>\n          <\/div>\n\n        <\/div>\n        <!--panelcreate-->\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"Cnt\">Montako levy&auml; yhteens&auml;? (kpl)<\/label>\n          <div class=\"col-md-7\">\n            <input lang=\"en-150\" id=\"Cnt\" class=\"form-control check_number_of_holes quantity_and_size_validation check_delivery_restrictions\" type=\"number\" min=1 name=\"order[Cnt]\" value=1 step=\"1\" isreq=\"\">\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"CntLayers\">Valitse kerrosten m&auml;&auml;r&auml;<\/label>\n          <div class=\"col-md-7\">\n            <select name=\"order[CntLayers]\" id=\"CntLayers\" class=\"form-control\">\n              <option value=\"2\">2<\/option>\n              <option value=\"4\" selected=\"\">4<\/option>\n              <option value=\"6\">6<\/option>\n              <option value=\"8\">8<\/option>\n              <option value=\"10\">10<\/option>\n              <option value=\"12\">12<\/option>\n                              <option value=\"14\">14<\/option>\n                <option value=\"16\">16<\/option>\n                <option value=\"18\">18<\/option>\n                <option value=\"20\">20<\/option>\n                <option value=\"22\">22<\/option>\n                <option value=\"24\">24<\/option>\n                          <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"IsBuildUp\">Rakenne<\/label>\n          <div class=\"col-md-7\">\n            <select id=\"IsBuildUp\" class=\"fbig form-control\" name=\"order[IsBuildUp]\">\n              <option value=\"0\">Brandnerin standardoitu paketti<\/option>\n              <option value=\"1\">Koostan verkossa<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div id=\"ReBuildUp\" class=\"form-group\" style=\"display: none;\">\n          <div class=\"col-md-7 col-md-offset-5\">\n            <button id=\"ReBuildUpButton\" type=\"button\">Kokoa uusi paketti<\/button>\n          <\/div>\n        <\/div>\n\n        <!-- <div class=\"form-group\">\n                    <label class=\"col-md-5\" for=\"calc_imp_check\">Laske impedanssi<\/label>\n                    <div class=\"col-md-7\">\n                        <input id=\"calc_imp_check\" type=\"checkbox\" value=\"1\" \/>\n                    <\/div>\n                <\/div> -->\n\n\n\n        <input id=\"buildUp\" name=\"buildUp\" type=\"hidden\" value=\"\" \/>\n\n        <span id=\"help-compose-own\" class=\"help-block\"><img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_notice.jpg\">Jos haluat Brandnerin vakiotuotteesta poikkeavan paketin, valitse &quot;kokoan internetiss&auml;&quot;<\/span>\n\n        <div id=\"cu_inlayers\">\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"order_Cu_thickness_inside\">Kuparin paksuus sis&auml;kerroksissa (&micro;)<\/label>\n            <div class=\"col-md-7\">\n              <input class=\"fsmall form-control\" type=\"text\" id=\"order_Cu_thickness_inside\" name=\"order[Cu_thickness_inside]\" value=\"35\" readonly>\n            <\/div>\n          <\/div>\n\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"Cu_thickness_inside\">Minimaalinen johdin ja eriste v&auml;li (&micro;)<\/label>\n            <div class=\"col-md-7\">\n              <input class=\"fsmall form-control\" id=\"Cu_thickness_inside\" type=\"text\" value=\"125\" readonly>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <span id=\"help-compose-own\" class=\"help-block\"><img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_notice.jpg\">Tarkista, ovatko liitteess&auml;si n&auml;m&auml; ehdot t&auml;ytetyt<\/span>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"order_Cu_thickness_outside\">Lopullinen kuparin vahvuus<\/label>\n          <div class=\"col-md-7\">\n            <input class=\"fsmall form-control\" type=\"text\" id=\"order_Cu_thickness_outside\" name=\"order[Cu_thickness_outside]\" value=\"53\" readonly>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"Cu_thickness_outside\">Minimaalinen johdin ja eriste v&auml;li (&micro;)<\/label>\n          <div class=\"col-md-7\">\n            <input class=\"fsmall form-control\" id=\"Cu_thickness_outside\" type=\"text\" value=\"75\" readonly>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"order_FullPaksus\">Levyn lopullinen paksuus (mm)<\/label>\n          <div class=\"col-md-7\">\n            <input class=\"fsmall form-control\" type=\"text\" id=\"order_FullPaksus\" name=\"order[FullPaksus]\" value=\"1.616\" readonly> Toleranssi 10%          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"Minava\">Minimaalinen reik&auml; (mm)<\/label>\n          <div class=\"col-md-7\">\n            <select id=\"Minava\" class=\"form-control\" name=\"order[Minava]\">\n              <option value=\"0.1\" selected>0.1<\/option>\n              <option value=\"0.15\">0.15<\/option>\n              <option value=\"0.2\">0.2<\/option>\n              <option value=\"0.3\">0.3<\/option>\n              <option value=\"0.4\">0.4<\/option>\n              <option value=\"0.5\">0.5<\/option>\n              <option value=\"0.6\">0.6<\/option>\n              <option value=\"0.7\">0.7<\/option>\n              <option value=\"0.8\">0.8<\/option>\n              <option value=\"0.9\">0.9<\/option>\n              <option value=\"1\">1<\/option>\n              <option value=\"1.1\">1.1<\/option>\n              <option value=\"1.2\">1.2<\/option>\n              <option value=\"1.3\">1.3<\/option>\n              <option value=\"1.4\">1.4<\/option>\n              <option value=\"1.5\">1.5<\/option>\n              <option value=\"1.6\">1.6<\/option>\n              <option value=\"1.7\">1.7<\/option>\n              <option value=\"1.8\">1.8<\/option>\n              <option value=\"1.9\">1.9<\/option>\n              <option value=\"2\">2<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"AvadeArv\">Reikien m&auml;&auml;r&auml; levyll&auml;<\/label>\n          <div class=\"col-md-7\">\n            <input name=\"order[AvadeArv]\" class=\"form-control check_delivery_restrictions\" type=\"number\" min=\"1\" value=\"1\" isreq=\"\" step=\"1\" lang=\"en-150\">\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"SolderResist\">Juotosmaski<\/label>\n          <div class=\"col-md-7\">\n            <select id=\"SolderResist\" class=\"form-control\" name=\"order[SolderResist]\">\n              <option value=\"0\">Ei<\/option>\n              <option value=\"1\">Yl&auml;puolella<\/option>\n              <option value=\"2\">Alapuolella<\/option>\n              <option value=\"3\" selected=\"selected\">Molemmilla puolilla<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"SolderResistColor\">Joutosmaskin v&auml;ri<\/label>\n          <div class=\"col-md-7\">\n            <div class=\"input-group\">\n              <select id=\"SolderResistColor\" class=\"form-control\" name=\"order[SolderResistColor]\">\n                <option value=\"0\">Vihre&auml;<\/option>\n                <option value=\"1\">Musta<\/option>\n                <option value=\"2\">Valkoinen<\/option>\n                <option value=\"3\">Sininen<\/option>\n                <option value=\"4\">Punainen<\/option>\n              <\/select>\n              <span class=\"input-group-addon icon-addon\">\n                <div id=\"selsold\">\n                  <img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_green.png\">\n                <\/div>\n              <\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"Marking\">Merkint&auml;<\/label>\n          <div class=\"col-md-7\">\n            <select id=\"Marking\" class=\"form-control\" name=\"order[Marking]\">\n              <option value=\"0\">Ei<\/option>\n              <option value=\"1\">Yl&auml;puolella<\/option>\n              <option value=\"2\">Alapuolella<\/option>\n              <option value=\"3\" selected=\"selected\">Molemmilla puolilla<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"MarkingColor\">Merkinn&auml;n v&auml;ri<\/label>\n          <div class=\"col-md-7\">\n            <div class=\"input-group\">\n              <select id=\"MarkingColor\" class=\"form-control\" name=\"order[MarkingColor]\">\n                <!-- <option value=\"0\">Vihre&auml;<\/option> -->\n                <option value=\"1\">Musta<\/option>\n                <option value=\"2\" selected=\"selected\">Valkoinen<\/option>\n                <!-- <option value=\"3\">Sininen<\/option> -->\n                <!-- <option value=\"4\">Punainen<\/option> -->\n              <\/select>\n              <span class=\"input-group-addon icon-addon\">\n                <div id=\"selmark\" class=\"selicon\">\n                  <img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_white.png\">\n                <\/div>\n              <\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"Coating\">Pinnoite joutosasemailla<\/label>\n          <div class=\"col-md-7\">\n            <div class=\"input-group\">\n              <select id=\"Coating\" class=\"form-control\" name=\"order[Coating]\">\n                <option value=\"1\">Lyijyvapaa kastotinaus (Hal)<\/option>\n                <option value=\"2\">Kemiallinen kulta<\/option>\n              <\/select>\n              <span class=\"input-group-addon icon-addon\">\n                <div id=\"selicon\" class=\"selicon\">\n                  <img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_sn.png\">\n                <\/div>\n              <\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-group\">\n          <label class=\"col-md-5\" for=\"DeliveryDays\">Toimitusaika tehtaalta<\/label>\n          <div class=\"col-md-7\">\n            <select id=\"DeliveryDays\" class=\"form-control\" name=\"order[DeliveryDays]\">\n              <option value=\"1\">24 h<\/option>\n              <option value=\"2\">2 ty&ouml;p&auml;iv&auml;&auml;<\/option>\n              <option value=\"3\">3 ty&ouml;p&auml;iv&auml;&auml;<\/option>\n              <option value=\"4\" selected=\"selected\">4 ty&ouml;p&auml;iv&auml;&auml;<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <span id=\"help-processing-time\" class=\"help-block\"><img decoding=\"async\" src=\"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_notice.jpg\">Toimitusaika tehtaalta tarkoittaa piirilevyjen valmistusaikaa, kuljetusaikaa ei ole huomioitu. Tilaukset k&auml;sitell&auml;&auml;n arkip&auml;ivin&auml; klo 8.00 - 16.00<\/span>\n\n        \n        <div id=\"insidemyfiles\">\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"fileToUpload\">Liit&auml; tiedosto<\/label>\n            <div class=\"col-md-7\">\n              <div class=\"input-group\">\n                <!-- <input type=\"file\" name=\"fileToUpload\" id=\"fileToUpload\" accept=\"application\/zip,application\/gzip,application\/x-rar-compressed,application\/octet-stream\" > -->\n                <input type=\"file\" name=\"fileToUpload\" id=\"fileToUpload\">\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n\n                  <h3 class=\"help-block\">Yhteystiedot<\/h3>\n\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"pr_req_con_per\">Yhteyshenkil&ouml;<\/label>\n            <div class=\"col-md-7\">\n              <input type=\"text\" id=\"pr_req_con_per\" class=\"form-control\" name=\"contact[contact_person]\">\n            <\/div>\n          <\/div>\n\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"pr_req_com_nam\">Yrityksen nimi<\/label>\n            <div class=\"col-md-7\">\n              <input type=\"text\" id=\"pr_req_com_nam\" class=\"form-control\" name=\"contact[company_name]\">\n            <\/div>\n          <\/div>\n\n\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"pr_req_con_email\">S&auml;hk&ouml;posti<\/label>\n            <div class=\"col-md-7\">\n              <input type=\"text\" id=\"pr_req_con_email\" class=\"form-control\" name=\"contact[contact_email]\" isreq=\"\">\n            <\/div>\n          <\/div>\n\n          <div class=\"form-group\">\n            <label class=\"col-md-5\" for=\"pr_req_con_phone\">Puhelin<\/label>\n            <div class=\"col-md-7\">\n              <input type=\"text\" id=\"pr_req_con_phone\" class=\"form-control\" name=\"contact[contact_phone]\" isreq=\"\">\n            <\/div>\n          <\/div>\n\n          <div class=\"form-group\">\n            <button id=\"SubmitFrom\" type=\"submit\" class=\"btn btn-default\">L&auml;het&auml;<\/button>\n          <\/div>\n          <input id=\"price_request\" type=\"hidden\" name=\"price_request\" value=\"1\">\n                <input id=\"buildImage\" type=\"hidden\" name=\"buildImage\" value=\"\">\n        <input id=\"buildTable\" type=\"hidden\" name=\"buildTable\" value=\"\">\n      <\/form>\n    <\/div>\n    <!--col-->\n    <div id=\"buildform_col\" class=\"col-md-5\" style=\"display: none\">\n      <div id=\"view_pakform\">\n\n        <form id=\"pakform\">\n          <h2>\n            Paketin kokoaminen          <\/h2>\n          <div class=\"frow clear\">\n            <input class=\"submit_button\" type=\"submit\" value=\"Tallenna ja palaa\">\n          <\/div>\n\n          <div id=\"pak\"><\/div>\n\n          <div class=\"frow clear\">\n            <input id=\"paksubmit\" style=\"float:left;\" class=\"submit_button\" type=\"submit\" value=\"Tallenna ja palaa\">\n          <\/div>\n\n          <div class=\"clear\"><\/div>\n        <\/form>\n      <\/div>\n    <\/div>\n    <!--col-->\n    <div id=\"table_col\" class=\"col-md-7\">\n      <div id=\"view_table\"><\/div>\n      <div id=\"impedance-disclaimer\" style=\"display:none;\">Impedanssi lasketaan IPC2141-A standardin mukaan!<\/div>\n    <\/div>\n    <!--col-->\n    <!-- <\/form>end orderform -->\n  <\/div>\n  <!--row-->\n<\/div>\n<!--container-->\n<style>\n  .protoshop .container-fluid {\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .orange {\n    background-color: #fc7e00;\n  }\n\n  .yellow {\n    background-color: #fcec00;\n  }\n\n  .gray {\n    background-color: #d4d4d4;\n  }\n\n  #view_table table th.b {\n    border: 1px solid darkgrey;\n    \/*padding: 2px;*\/\n  }\n\n  table td {\n    text-align: center;\n  }\n\n  #view_table table td.b {\n    border: 1px solid darkgrey;\n    \/* padding: 2px;*\/\n  }\n\n  .align-right {\n    text-align: right;\n  }\n\n  .top-mar {\n    margin-top: 15px;\n  }\n\n  .input-cell,\n  .result-cell {\n    min-width: 50px;\n    \/*max-width: 75px;*\/\n  }\n\n  table td input {\n    max-width: 60px;\n  }\n\n  .selicon img {\n    \/*float: left;\n    display: block;*\/\n    border: 1px solid #d0d0d0;\n    padding: 1px;\n    \/*max-height: 17px;*\/\n    \/*height: 18px;\n    margin-top: 3px;*\/\n  }\n\n  .icon-addon {\n    width: 45px;\n    padding: 0;\n  }\n\n  .icon-addon.white-bg {\n    background-color: white;\n  }\n<\/style>\n<script>\n  rest_base = 'https:\/\/www.brandner.ee\/wp-json\/brandner\/v1\/'\n<\/script>\n<script>\n\n  \/**\n   * VALIDATION\n   *\n   *  this is where all the validation and checks happen\n   *\/\n\n  function validateOrder() {\n    \/\/Disable submit button at start of validation\n    \/\/jQuery('#SubmitFrom').prop('disabled', true);\n\n    \/\/Trigger checks\n\n    jQuery(\"#orderform\").trigger(\"mandatory_field_check\");\n    jQuery(\"#orderform\").trigger(\"check_pcb_name\");\n    jQuery(\"#orderform\").trigger(\"quantity_and_size_validation\");\n    jQuery(\"#orderform\").trigger(\"size_of_order\");\n    jQuery(\"#orderform\").trigger(\"check_minimum_opening\");\n    jQuery(\"#orderform\").trigger(\"check_delivery_restrictions\");\n\n    fields = jQuery(\"#orderform input:visible, #orderform select:visible\")\n\n    fields.each(function(index, item) {\n      var trigger = \"validate_\" + jQuery(item).attr('id')\n      \/\/ console.log(trigger)\n      jQuery(\"#orderform\").trigger(trigger);\n    })\n\n    \/\/ return \"errors\"; \/\/ DEBUG REMOVE\n    \/\/i check for visible errors\n    console.log(\"Checking for errors\")\n\n    if (jQuery('.error:visible').length == 0) {\n      console.log(\"No errors found\")\n      \/\/jQuery('#SubmitFrom').prop('disabled', false);\n      return \"no errors\";\n    } else {\n      \/\/jQuery('#SubmitFrom').prop('disabled', true);\n      console.log(\"Errors found \" + jQuery('.error').length + 'in total.');\n      return \"errors\";\n    }\n\n  }\n\n  var notice = function(e, t) {\n    \/\/console.log('notice') \/\/Delete this\n    \/\/ e.prepend('<div class=\"notice\">'+t+'<\/div>');\n    e.prepend('<div class=\"notice alert alert-info\" role=\"alert\">' + t + '<\/div>');\n  };\n\n  var error = function(e, t) {\n    \/\/console.log('error message') \/\/Delete this\n    \/\/ e.prepend('<div class=\"error\">'+t+'<\/div>');\n    e.prepend('<div class=\"error alert alert-danger\" role=\"alert\">' + t + '<\/div>');\n  };\n\n  var error2 = function(e, t, c) {\n    \/\/console.log('error message') \/\/Delete this\n    \/\/ e.prepend('<div class=\"error\">'+t+'<\/div>');\n    e.prepend('<div class=\"error alert alert-danger ' + c + '\" role=\"alert\">' + t + '<\/div>');\n  };\n\n  var checkNextVk = function(thei) {\n    \/\/console.log('checkNextVk') \/\/Delete this\n    if (jQuery('#inp_' + thei).is(':checked')) {\n      if (!jQuery('#inp_' + (1 + thei)).is(':checked')) {\n        jQuery('#inp_' + (1 + thei)).click();\n      }\n    }\n  }\n\n  var pakform_init = false;\n  var view_pakform = function() {\n    \/\/console.log('view_pakform') \/\/Delete this\n    var sumthick;\n    var innercuthickarr;\n    var layersarr;\n    var firstlayer;\n\n    var i = 0;\n    var oneMid = function(num, tot) {\n      \/\/console.log('oneMid') \/\/Delete this\n      var r = '';\n\n      r += getVahekiht(false);\n      r += getSoovSisekiht(true);\n      r += getVahekiht(true);\n\n\n\n\n      if (num !== tot) {\n        r += getSisekiht();\n      }\n      return r;\n    };\n\n    var getValisFool = function(top) {\n      \/\/console.log('getValisFool') \/\/Delete this\n      var r = '';\n\n      r += '<div class=\"frow clear\">';\n      r += '<label for=\"' + (top ? 'topfool' : 'bottomfool') + '\">Ulkofolio<\/label>';\n      r += '<select id=\"' + (top ? 'topfool' : 'bottomfool') + '\" class=\"pak_vf\" name=\"pak[Layers][]\">';\n\n      for (var key in layers) {\n        if (layers[key].categorie === 1) {\n          if (key != 71)\n            r += '<option value=\"' + key + '\">' + layers[key].name + '<\/option>';\n        }\n      };\n\n      r += '<\/select>';\n      r += '<\/div>';\n\n      return r;\n    };\n\n    var getSisekiht = function() {\n      \/\/console.log('getSisekiht') \/\/Delete this\n      var r = '';\n\n      r += '<div class=\"frow clear\">';\n      r += '<label for=\"pak_sk\">Sis&auml;kerros<\/label>';\n      r += '<select id=\"pak_sk\" class=\"pak_sk\" name=\"pak[Layers][]\">';\n\n      for (var key in layers) {\n        if (layers[key].categorie === 4) {\n          r += '<option value=\"' + key + '\">' + layers[key].name + '<\/option>';\n        }\n      };\n\n      r += '<\/select>';\n      r += '<\/div>';\n\n      return r;\n    };\n\n    var getVahekiht = function(c) {\n      \/\/console.log('getVahekiht') \/\/Delete this\n      i++;\n      var r = '';\n\n      r += '<div class=\"frow clear\">';\n      r += '<label for=\"inp_' + i + '\">';\n      r += 'V&auml;likerros';\n      r += '<\/label>';\n      r += (c ? '<div class=\"checkbox_dropdown_combo\">' : '');\n      r += (c ? '<input type=\"checkbox\" id=\"inp_' + i + '\" onclick=\"jQuery(\\'#vk_' + i + '\\').toggle();\">' : '');\n      \/\/ r += (c?'<span class=\"hidden\" id=\"vk_'+i+'\">':'');\n      r += (c ? '<span class=\"invis\" style=\"display:none\" id=\"vk_' + i + '\">' : '');\n      r += '<select class=\"pak_vk\" name=\"pak[Layers][]\">';\n\n      for (var key in layers) {\n        if (layers[key].categorie === 2) {\n          r += '<option value=\"' + key + '\">' + layers[key].name + '<\/option>';\n        }\n      };\n\n      r += '<\/select>';\n      r += (c ? '<\/span>' : '');\n      r += (c ? '<\/div>' : '');\n      r += '<\/div>';\n\n      return r;\n    };\n\n    var getVahekiht2 = function(c) {\n      \/\/console.log('getVahekiht2') \/\/Delete this\n      i++;\n      var r = '';\n\n      r += '<div class=\"frow clear\">';\n      r += '<label for=\"inp_' + i + '\">';\n      r += 'V&auml;likerros';\n      r += '<\/label>';\n      r += (c ? '<div class=\"checkbox_dropdown_combo\">' : '');\n      r += (c ? '<input type=\"checkbox\" id=\"inp_' + i + '\" onclick=\"jQuery(\\'#vk_' + i + '\\').toggle();\">' : '');\n      \/\/ r += (c?'<span class=\"hidden\" id=\"vk_'+i+'\">':'');\n      r += (c ? '<span class=\"invis\" style=\"display:none\" id=\"vk_' + i + '\">' : '');\n      r += '<select class=\"pak_vk\" name=\"pak[Layers][]\">';\n\n      for (var key in layers) {\n        if (layers[key].categorie === 9) {\n          r += '<option value=\"' + key + '\">' + layers[key].name + '<\/option>';\n        }\n      };\n\n      r += '<\/select>';\n      r += (c ? '<\/span>' : '');\n      r += (c ? '<\/div>' : '');\n      r += '<\/div>';\n\n      return r;\n    };\n\n    var getSoovSisekiht = function(c) {\n      \/\/console.log('getSoovSisekiht') \/\/Delete this\n      i++;\n      var r = '';\n\n      r += '<div class=\"frow clear\">';\n      r += '<label for=\"inp_' + i + '\">';\n      r += 'Sy&ouml;vytetty sis&auml;kerros';\n      r += '<\/label>';\n      r += (c ? '<div class=\"checkbox_dropdown_combo\">' : '');\n      r += (c ? '<input type=\"checkbox\" id=\"inp_' + i + '\" onclick=\"jQuery(\\'#vk_' + i + '\\').toggle();checkNextVk(' + i + ');\">' : '');\n\n      \/\/ r += (c?'<span class=\"hidden\" id=\"vk_'+i+'\">':'');\n      r += (c ? '<span style=\"display:none\" class=\"invis\" id=\"vk_' + i + '\">' : '');\n      r += '<select name=\"pak[Layers][]\">';\n\n      for (var key in layers) {\n        if (layers[key].categorie === 3) {\n          r += '<option value=\"' + key + '\">' + layers[key].name + '<\/option>';\n        }\n      };\n\n      r += '<\/select>';\n      r += (c ? '<\/span>' : '');\n      r += (c ? '<\/div>' : '');\n      r += '<\/div>';\n      return r;\n    };\n\n    var getImpCheck = function(c) {\n      \/\/console.log('getImpCheck') \/\/Delete this\n      var r = '';\n\n      r += '<div class=\"frow clear\">';\n      r += '<label for=\"calc_imp_check\">';\n      r += 'Laske impedanssi';\n      r += '<\/label>';\n      r += '<input id=\"calc_imp_check\" type=\"checkbox\" value=\"1\" \/>';\n      r += '<\/div>';\n\n      return r;\n    }\n\n\n    prepost = {\n      layer_81: 'in_18',\n    layer_1: 'in_18',\n    layer_2: 'in_35',\n    layer_4: 'in_18',\n    layer_5: 'in_35',\n    layer_7: 'in_18',\n    layer_8: 'in_35',\n    layer_10: 'in_18',\n    layer_11: 'in_35',\n    layer_13: 'in_18',\n    layer_14: 'in_35',\n    layer_15: 'in_70',\n    layer_17: 'in_18',\n    layer_18: 'in_35',\n    layer_22: 'in_18',\n    layer_23: 'in_35',\n    layer_25: 'in_18',\n    layer_26: 'in_35',\n    layer_27: 'in_70',\n    layer_29: 'in_18',\n    layer_30: 'in_35',\n    layer_31: 'in_70',\n    layer_34: 'in_35',\n    layer_37: 'layer_82',\n    layer_40: 'layer_82',\n    layer_43: 'layer_82',\n    layer_45: 'layer_80',\n    layer_46: 'layer_82',\n    layer_47: 'layer_83',\n    layer_48: 'layer_84',\n    layer_50: 'layer_82',\n    layer_53: 'layer_82',\n    layer_54: 'layer_83',\n        };\n    layers = {\n      layer_81: {\n        categorie: 0,\n        name: '18\u00b5m + GalvCu 35\u00b5m',\n        thick: '0.018',\n        cuthick: 18      },\n    layer_80: {\n        categorie: 1,\n        name: '12\u00b5m + GalvCu 35\u00b5m',\n        thick: '0.047',\n        cuthick: 47      },\n    layer_82: {\n        categorie: 1,\n        name: '35\u00b5m + GalvCu 35\u00b5m',\n        thick: '0.07',\n        cuthick: 70      },\n    layer_83: {\n        categorie: 1,\n        name: '70\u00b5m + GalvCu 35\u00b5m',\n        thick: '0.105',\n        cuthick: 105      },\n    layer_84: {\n        categorie: 1,\n        name: '105\u00b5m + GalvCu 35\u00b5m',\n        thick: '0.14',\n        cuthick: 140      },\n    layer_90: {\n        categorie: 2,\n        name: '1080 (0.063mm)',\n        thick: '0.063',\n        cuthick: 0      },\n    layer_91: {\n        categorie: 2,\n        name: '2116 (0,11mm)',\n        thick: '0.11',\n        cuthick: 0      },\n    layer_92: {\n        categorie: 2,\n        name: '7628-45 (0,18mm)',\n        thick: '0.18',\n        cuthick: 0      },\n    layer_1: {\n        categorie: 4,\n        name: 'High Tg 0.1mm 18\u00b5m\/18\u00b5m',\n        thick: '0.1',\n        cuthick: 18      },\n    layer_2: {\n        categorie: 4,\n        name: 'High Tg 0.1mm 35\u00b5m\/35\u00b5m',\n        thick: '0.1',\n        cuthick: 35      },\n    layer_4: {\n        categorie: 4,\n        name: 'High Tg 0.15mm 18\u00b5m\/18\u00b5m',\n        thick: '0.15',\n        cuthick: 18      },\n    layer_5: {\n        categorie: 4,\n        name: 'High Tg 0.15mm 35\u00b5m\/35\u00b5m',\n        thick: '0.15',\n        cuthick: 35      },\n    layer_7: {\n        categorie: 4,\n        name: 'High Tg 0.2mm 18\u00b5m\/18\u00b5m',\n        thick: '0.2',\n        cuthick: 18      },\n    layer_8: {\n        categorie: 4,\n        name: 'High Tg 0.2mm 35\u00b5m\/35\u00b5m',\n        thick: '0.2',\n        cuthick: 35      },\n    layer_10: {\n        categorie: 4,\n        name: 'High Tg 0.3mm 18\u00b5m\/18\u00b5m',\n        thick: '0.3',\n        cuthick: 18      },\n    layer_11: {\n        categorie: 4,\n        name: 'High Tg 0.3mm 35\u00b5m\/35\u00b5m',\n        thick: '0.3',\n        cuthick: 35      },\n    layer_13: {\n        categorie: 4,\n        name: 'High Tg 0.36mm 18\u00b5m\/18\u00b5m',\n        thick: '0.36',\n        cuthick: 18      },\n    layer_14: {\n        categorie: 4,\n        name: 'High Tg 0.36mm 35\u00b5m\/35\u00b5m',\n        thick: '0.36',\n        cuthick: 35      },\n    layer_15: {\n        categorie: 4,\n        name: 'High Tg 0.36mm 70\u00b5m\/70\u00b5m',\n        thick: '0.36',\n        cuthick: 70      },\n    layer_17: {\n        categorie: 4,\n        name: 'High Tg 0.46mm 18\u00b5m\/18\u00b5m',\n        thick: '0.46',\n        cuthick: 18      },\n    layer_18: {\n        categorie: 4,\n        name: 'High Tg 0.46mm 35\u00b5m\/35\u00b5m',\n        thick: '0.46',\n        cuthick: 35      },\n    layer_22: {\n        categorie: 4,\n        name: 'High Tg 0.51mm 18\u00b5m\/18\u00b5m',\n        thick: '0.51',\n        cuthick: 18      },\n    layer_23: {\n        categorie: 4,\n        name: 'High Tg 0.51mm 35\u00b5m\/35\u00b5m',\n        thick: '0.51',\n        cuthick: 35      },\n    layer_25: {\n        categorie: 4,\n        name: 'High Tg 0.71mm 18\u00b5m\/18\u00b5m',\n        thick: '0.71',\n        cuthick: 18      },\n    layer_26: {\n        categorie: 4,\n        name: 'High Tg 0.71mm 35\u00b5m\/35\u00b5m',\n        thick: '0.71',\n        cuthick: 35      },\n    layer_27: {\n        categorie: 4,\n        name: 'High Tg 0.71mm 70\u00b5m\/70\u00b5m',\n        thick: '0.71',\n        cuthick: 70      },\n    layer_29: {\n        categorie: 4,\n        name: 'High Tg 1.08mm 18\u00b5m\/18\u00b5m',\n        thick: '1.08',\n        cuthick: 18      },\n    layer_30: {\n        categorie: 4,\n        name: 'High Tg 1.08mm 35\u00b5m\/35\u00b5m',\n        thick: '1.08',\n        cuthick: 35      },\n    layer_31: {\n        categorie: 4,\n        name: 'High Tg 1.08mm 70\u00b5m\/70\u00b5m',\n        thick: '1.08',\n        cuthick: 70      },\n    layer_34: {\n        categorie: 4,\n        name: 'High Tg 1.2mm 35\u00b5m\/35\u00b5m',\n        thick: '1.2',\n        cuthick: 35      },\n    layer_37: {\n        categorie: 9,\n        name: 'Low Tg 0.8mm 35\u00b5m\/35\u00b5m',\n        thick: '0.73',\n        cuthick: 35      },\n    layer_40: {\n        categorie: 9,\n        name: 'Low Tg 1.00mm 35\u00b5m\/35\u00b5m',\n        thick: '0.93',\n        cuthick: 35      },\n    layer_43: {\n        categorie: 9,\n        name: 'Low Tg 1.2mm 35\u00b5m\/35\u00b5m',\n        thick: '1.13',\n        cuthick: 35      },\n    layer_45: {\n        categorie: 9,\n        name: 'Low Tg 1.6mm 18\u00b5m\/18\u00b5m',\n        thick: '1.564',\n        cuthick: 12      },\n    layer_46: {\n        categorie: 9,\n        name: 'Low Tg 1.6mm 35\u00b5m\/35\u00b5m',\n        thick: '1.53',\n        cuthick: 35      },\n    layer_47: {\n        categorie: 9,\n        name: 'Low Tg 1.6mm 70\u00b5m\/70\u00b5m',\n        thick: '1.46',\n        cuthick: 70      },\n    layer_48: {\n        categorie: 9,\n        name: 'Low Tg 1.6mm 105\u00b5m\/105\u00b5m',\n        thick: '1.39',\n        cuthick: 105      },\n    layer_50: {\n        categorie: 9,\n        name: 'Low Tg 2.0mm 35\u00b5m\/35\u00b5m',\n        thick: '1.93',\n        cuthick: 35      },\n    layer_53: {\n        categorie: 9,\n        name: 'Low Tg 2.4mm 35\u00b5m\/35\u00b5m',\n        thick: '2.33',\n        cuthick: 35      },\n    layer_54: {\n        categorie: 9,\n        name: 'Low Tg 2.4mm 70\u00b5m\/70\u00b5m',\n        thick: '2.26',\n        cuthick: 70      },\n    layer_93: {\n        categorie: 3,\n        name: 'FR4 VK 0.1 (0.1mm)',\n        thick: '0.1',\n        cuthick: 0      },\n    layer_94: {\n        categorie: 3,\n        name: 'FR4 VK 0.15 (0.15mm)',\n        thick: '0.15',\n        cuthick: 0      },\n    layer_95: {\n        categorie: 3,\n        name: 'FR4 VK 0.2 (0.2mm)',\n        thick: '0.2',\n        cuthick: 0      },\n    layer_96: {\n        categorie: 3,\n        name: 'FR4 VK 0.3 (0.3mm)',\n        thick: '0.3',\n        cuthick: 0      },\n    layer_97: {\n        categorie: 3,\n        name: 'FR4 VK 0.36 (0.36mm)',\n        thick: '0.36',\n        cuthick: 0      },\n    layer_98: {\n        categorie: 3,\n        name: 'FR4 VK 0.46 (0.46mm)',\n        thick: '0.46',\n        cuthick: 0      },\n    layer_99: {\n        categorie: 3,\n        name: 'FR4 VK0.51 (0.51mm)',\n        thick: '0.51',\n        cuthick: 0      },\n    layer_100: {\n        categorie: 3,\n        name: 'FR4 VK 0.71 (0.71mm)',\n        thick: '0.71',\n        cuthick: 0      },\n    layer_101: {\n        categorie: 3,\n        name: 'FR4 VK 1.08 (1.08mm)',\n        thick: '1.08',\n        cuthick: 0      },\n    layer_102: {\n        categorie: 3,\n        name: 'FR4 VK 1.2 (1.2mm)',\n        thick: '1.2',\n        cuthick: 0      },\n    in_18: {\n        categorie: 5,\n        name: '18\u00b5m',\n        thick: '0.018',\n        cuthick: 18      },\n    in_35: {\n        categorie: 5,\n        name: '35\u00b5m',\n        thick: '0.035',\n        cuthick: 35      },\n    in_70: {\n        categorie: 5,\n        name: '70\u00b5m',\n        thick: '0.07',\n        cuthick: 70      },\n        };\n    var layercategories = {\n      1: {\n        name: 'Ulkofolio',\n        color: 'orange'\n      },\n      2: {\n        name: 'V&auml;likerros',\n        color: 'yellow'\n      },\n      3: {\n        name: 'Sy&ouml;vytetty sis&auml;kerros',\n        color: 'yellow'\n      },\n      4: {\n        name: 'Sis&auml;kerros',\n        color: 'gray'\n      },\n      5: {\n        name: 'Sis&auml;folio',\n        color: 'orange'\n      },\n      6: {\n        name: 'Sis&auml;kerros',\n        color: 'gray'\n      },\n      8: {\n        name: 'Sis&auml;folio',\n        color: 'orange'\n      },\n      9: {\n        name: 'V&auml;likerros',\n        color: 'yellow'\n      },\n    };\n\n    var linenum = 0;\n    \/\/Counter for impedance layer number (needs to count every layer)\n    var imp_c = 0;\n\n    var addLayer = function(iLayerKey) {\n      \/\/console.log('addLayer') \/\/Delete this\n      var r = '';\n      var l = layers[iLayerKey];\n      var ln = (l.categorie == 1 || l.categorie == 5 ? ++linenum : '');\n\n      \/\/Counter for impedance layer number (needs to count every layer)\n      c = imp_c++;\n\n      r = '<tr class=\"' + layercategories[l.categorie].color + ' pcb-layer\" data-index=\"' + c + '\" data-layer=\"' + iLayerKey + '\">';\n      r += '<td class=\"b\">' + ln + '<\/td>';\n      r += '<td class=\"b\">' + layercategories[l.categorie].name + '<\/td>';\n      \/\/ r += '<td class=\"b\">'+(l.categorie == 9 ? l.name.substr(0,l.name.indexOf(' ')) : l.name)+'<\/td>';\n      r += '<td class=\"b\">' + (l.categorie == 9 ? l.name : l.name) + '<\/td>';\n      r += '<td class=\"b align-right\">' + l.thick + '<\/td>';\n\n      calc_imp = jQuery(\"#calc_imp_check\")[0].checked\n\n      if (calc_imp) {\n        r += '<td class=\"b align-right input-cell\">';\n        r += '<input type=\"hidden\" name=\"impedance[layers][' + c + '][id]\" value=\"' + c + '\" class=\"impedance-input\" \/>'\n        r += '<input type=\"hidden\" name=\"impedance[layers][' + c + '][mat]\" value=\"' + iLayerKey + '\" class=\"impedance-input\" \/>'\n\n        if ([1, 5, 8].includes(l.categorie)) {\n          r += '<select name=\"impedance[layers][' + c + '][type]\" class=\"impedance-input manual-input layer-type\" data-index=\"' + c + '\">';\n          r += '<option value=\"-1\"><\/option>';\n          r += '<option value=\"1\">Signaali<\/option>';\n          r += '<option value=\"2\">Taso<\/option>';\n          r += '<\/select>';\n        } else {\n          r += '<input type=\"hidden\" name=\"impedance[layers][' + c + '][type]\" value=\"0\" class=\"impedance-input\" \/>'\n        }\n        r += '<\/td>';\n        r += '<td class=\"b align-right input-cell\">';\n        if ([1, 5, 8].includes(l.categorie)) {\n          r += '<input style=\"display:none\" type=\"number\" min=\"0\" step=\"0.01\" name=\"impedance[layers][' + c + '][clear]\" size=\"5\" class=\"impedance-input manual-input\" lang=\"en-150\" \/>';\n        }\n        r += '<\/td>';\n        r += '<td class=\"b align-right input-cell\">';\n        if ([1, 5, 8].includes(l.categorie)) {\n          r += '<input style=\"display:none\" type=\"number\" min=\"0\" step=\"0.01\" name=\"impedance[layers][' + c + '][width]\" size=\"5\" class=\"impedance-input manual-input\" lang=\"en-150\" \/>';\n        }\n        r += '<\/td>';\n        r += '<td class=\"b align-right result-cell z0\"><\/td>';\n        r += '<td class=\"b align-right result-cell zdiff\"><\/td>';\n        r += '<td class=\"b align-right result-cell zdbs\"><\/td>';\n      }\n      r += '<\/tr>';\n\n      return r;\n    };\n\n    \/\/ remove old content\n    jQuery('#pak').empty();\n\n    \/\/ generate form\n    if (jQuery('#CntLayers').val() > 0) {\n      if (jQuery('#CntLayers').val() == 2) {\n        jQuery(\"#pak\").append(getVahekiht2(false))\n      } else {\n        jQuery(\"#pak\").append(getValisFool(true));\n\n        var mid = jQuery('#CntLayers').val() \/ 2;\n        for (var num = 1; num <= mid; num++) {\n          jQuery(\"#pak\").append(oneMid(num, mid));\n        }\n        jQuery(\"#pak\").append(getValisFool());\n      }\n    }\n\n\n\n\n\n    jQuery(\"#pak\").append(getImpCheck());\n\n    \/\/ select brandner def\n    if (jQuery('#CntLayers').val() == 2) {\n      jQuery(\"#pakform select.pak_vk\").val('layer_45');\n    } else if (jQuery('#CntLayers').val() == 4) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_92');\n      jQuery(\"#pakform select.pak_sk\").val('layer_30');\n    } else if (jQuery('#CntLayers').val() == 6) {\n            \/\/ jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_92');\n      jQuery(\"#pakform select.pak_sk\").val('layer_18');\n    } else if (jQuery('#CntLayers').val() == 8) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_91');\n      jQuery(\"#pakform select.pak_sk\").val('layer_11');\n    } else if (jQuery('#CntLayers').val() == 10) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_91');\n      jQuery(\"#pakform select.pak_sk\").val('layer_5');\n    } else if (jQuery('#CntLayers').val() == 12) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_91');\n      jQuery(\"#pakform select.pak_sk\").val('layer_2');\n    } else if (jQuery('#CntLayers').val() == 14) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_91');\n      jQuery(\"#pakform select.pak_sk\").val('layer_1');\n    } else if (jQuery('#CntLayers').val() == 16) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_91');\n      jQuery(\"#pakform select.pak_sk\").val('layer_1');\n    } else if (jQuery('#CntLayers').val() == 18) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_91');\n      jQuery(\"#pakform select.pak_sk\").val('layer_1');\n    } else if (jQuery('#CntLayers').val() == 20) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_90');\n      jQuery(\"#pakform select.pak_sk\").val('layer_1');\n    } else if (jQuery('#CntLayers').val() == 22) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_90');\n      jQuery(\"#pakform select.pak_sk\").val('layer_1');\n    } else if (jQuery('#CntLayers').val() == 24) {\n            jQuery(\"#pakform select.pak_vf\").val('layer_80');\n      jQuery(\"#pakform select.pak_vk\").val('layer_90');\n      jQuery(\"#pakform select.pak_sk\").val('layer_1');\n    }\n\n    \/\/ link first and last foolium selectbox\n    jQuery('#topfool').change(function() {\n      \/\/console.log('topfool.change') \/\/Delete this\n      jQuery('#bottomfool').val(jQuery(this).val());\n    });\n    jQuery('#bottomfool').change(function() {\n      \/\/console.log('bottomfool.change') \/\/Delete this\n      jQuery('#topfool').val(jQuery(this).val());\n    });\n\n    \/\/ attach event triggers \/\/move this function\n    jQuery(\"#pakform select\").change(function() {\n      \/\/console.log('pakform select.change') \/\/Delete this\n      jQuery(\"#pakform\").trigger(\"generate_view\");\n      \/\/alert(\"trigger generate_view from SELECT\");\n    });\n\n    \/*jQuery(\"#pakform input\").click(function(){\n    \talert(\"trigger generate_view from INPUT\");\n        jQuery(\"#pakform\").trigger(\"generate_view\");\n    });\n    \t*\/\n\n    jQuery(\"#pakform input[type=checkbox]\").click(function() {\n      \/\/console.log('pakform input[type=checkbox].change') \/\/Delete this\n      \/\/alert(\"trigger generate_view from INPUT[type=checkbox] \");\n      jQuery(\"#pakform\").trigger(\"generate_view\");\n\n    });\n\n    \/\/ regenerate view\n    jQuery(\"#pakform\").trigger(\"generate_view\");\n    \/\/alert(\"trigger generate_view from ON LOAD\");\n\n    if (pakform_init === false) {\n      pakform_init = true;\n\n      jQuery(\"#pakform\").on(\"validate\", function(event) {\n        \/\/console.log('\"#pakform\").on(\"validate\"') \/\/Delete this\n        \/\/ remove all old errors and notices under pakform\n        jQuery(\"#pakform .error, #pakform .notice\").remove();\n\n        check_prepreg_thickness()\n        \/\/Superceded by check in protoshop-form.js -Patrik\n        \/*\n         * if inner layer 70\u00b5m before and after we must have ( 1x7 or 2x6 )\n         *\/\n        \/*\n        var vkorder = '';\n        var vklastorder = false;\n        var last, last_sk;\n        \/\/ var a = [24,31,34]; \/\/ 70\u00b5m elements\n        var a = ['layer_24','layer_31','layer_34']; \/\/ 70\u00b5m elements\n        \/\/var a2 = [8,9,10,11,12,13]; \/\/ etched elements\n        var a2 = ['layer_8','layer_9','layer_10','layer_11','layer_12','layer_13']; \/\/ etched elements\n        var count6 = 0; \/\/ 2116 element\n        var count7 = 0; \/\/ 7628 element\n        jQuery(\"#pakform select[name='pak[Layers][]']:visible\").each(function( index ){\n            if(jQuery(this).hasClass('pak_vk'))\n            {\n                vkorder = vkorder +''+ jQuery(this).val();\n                \/\/ if(parseInt(jQuery(this).val(),10) == 6)\n                if(jQuery(this).val() == 'layer_91') \/\/Changed to correspond to new element ids\n                    count6++;\n                \/\/ else if(parseInt(jQuery(this).val(),10) == 7)\n                else if(jQuery(this).val() == 'layer_92') \/\/Changed to correspond to new element ids\n                    count7++;\n            }\n            else if(jQuery(this).hasClass('pak_sk'))\n            {\n                \/\/ console.log(\"Should be number only\", jQuery(this).val())\n                \/\/ if(jQuery.inArray(jQuery(this).val(),a) !== -1) \/\/ this is 70 inner layer\n                if(layers[jQuery(this).val()].categorie == 4 && layers[jQuery(this).val()].cuthick == 70) \/\/ this is 70 inner layer - Changed to check cuthick from layers data -Patrik\n                {\n                    if(count6 < 2 && count7 < 1 )\n                    {\n                        console.log('error')\n                        error(jQuery(this).closest('.frow'),'V&auml;likerros on liian ohut! Valitse 7628 tai 2x2116');\n                    }\n                    last_sk = jQuery(this);\n                }\n                \/\/ else if(jQuery.inArray(jQuery(last_sk).val(),a) !== -1) \/\/ last was 70 inner layer\n                else {\n                    if(last_sk){\n                        if(layers[jQuery(last_sk).val()].categorie == 4 && layers[jQuery(this).val()].cuthick == 70) \/\/ last was 70 inner layer- Changed to check cuthick from layers data -Patrik\n                        {\n                            if(count6 < 2 && count7 < 1 )\n                            {\n                                console.log('error')\n                                error(jQuery(last_sk).closest('.frow'),'V&auml;likerros on liian ohut! Valitse 7628 tai 2x2116');\n                            }\n                        }\n                    }\n                }\n\n                if(vklastorder)\n                {\n                    if(vklastorder != vkorder)\n                    {\n                        \/\/Superceded by check in protoshop-form.js -Patrik\n                        \/\/ notice(jQuery(this).closest('.form-group'),'Ep&auml;symmetrinen rakenne, levyn kaartumisvaara');\n                    }\n                }\n                vklastorder = vkorder;\n                vkorder = '';\n\n                count6 = count7 = 0;\n            }\n            else if(jQuery(this).prop(\"id\") == 'bottomfool')\n            {\n                if(last_sk)\n                {\n                    if(count6 < 2 && count7 < 1 )\n                    {\n                        console.log('error')\n                        error(jQuery(last_sk).closest('.frow'),'V&auml;likerros on liian ohut! Valitse 7628 tai 2x2116');\n                    }\n                }\n                if(vklastorder)\n                {\n                    if(vklastorder != vkorder)\n                    {\n                        \/\/Superceded by check in protoshop-form.js -Patrik\n                        \/\/ notice(jQuery(this).closest('.frow'),'Ep&auml;symmetrinen rakenne, levyn kaartumisvaara');\n                    }\n                }\n                vklastorder = vkorder;\n                vkorder = '';\n            }\n\n            \/\/ console.log(a2);\n            \/\/ console.log(jQuery(last).val());\n            \/\/ if last was etched\n            \/\/ if(jQuery.inArray(parseInt(jQuery(last).val(),10),a2) !== -1)\n            if(jQuery(last).val() && layers[jQuery(last).val()]['categorie'] == 3)\n            \/\/ if(jQuery.inArray(jQuery(last).val(),a2) !== -1)\n            {\n                console.log('Etched');\n                if(!jQuery(this).hasClass('pak_vk'))\n                {\n                    error(last.closest('.frow'),'Sy&ouml;vytetyn sis&auml;kerroksen tulee olla kahden v&auml;likerroksen v&auml;liss&auml;');\n                }\n            }\n\n            last = jQuery(this);\n        });\n        *\/\n\n        \/\/ if(sumthick < 0.36 || sumthick > 2.4)\n        if (sumthick < 0.36 || sumthick > 2.47) {\n          error(jQuery(\"#paksubmit\").closest('.frow'), 'Tarkista levyn paksuus - mahdollinen PCB-paksuus 0,36 - 2,47 mm');\n          jQuery(\"#sumthi\").addClass('red');\n        } else {\n          jQuery(\"#sumthi\").removeClass('red');\n        }\n\n        check_buildup_symmetry();\n\n      });\n\n      jQuery(\"#pakform\").on(\"generate_view\", function(event) {\n        \/\/console.log('\"#pakform\").on(\"generate_view\"') \/\/Delete this\n        \/\/alert(\"generate view\");\n        jQuery('#view_table').empty();\n        var view_table = '<table class=\"table buildup-table\">';\n\n        calc_imp = jQuery(\"#calc_imp_check\")[0].checked\n\n        if (calc_imp) {\n          jQuery(\"#impedance-disclaimer\").show()\n        } else {\n          jQuery(\"#impedance-disclaimer\").hide()\n        }\n\n        \/\/ table header\n        view_table += '<tr>';\n        view_table += '<th class=\"b\">Kerros<\/th>';\n        view_table += '<th class=\"b\">Kerroksen nimi<\/th>';\n        view_table += '<th class=\"b\">Tyyppi<\/th>';\n        view_table += '<th class=\"b align-right\">Kerroksen paksuus (mm)<\/th>';\n        if (calc_imp) {\n          view_table += '<th class=\"b align-right\">Kerrostyyppi<\/th>';\n          view_table += '<th class=\"b align-right\">Cl1 (mm)<\/th>';\n          view_table += '<th class=\"b align-right\">W1 (mm)<\/th>';\n          view_table += '<th class=\"b align-right\">Z0<\/th>';\n          view_table += '<th class=\"b align-right\">Zdiff<\/th>';\n          view_table += '<th class=\"b align-right\">Zdbs<\/th>';\n        }\n        view_table += '<\/tr>';\n\n        sumthick = 0;\n        firstlayer = 0;\n        layersarr = [];\n        innercuthickarr = [];\n        linenum = 0;\n        \/\/Impedance calculator layer number\n        imp_c = 0;\n        jQuery(\"#pakform select[name='pak[Layers][]']:visible\").each(function(index) {\n          \/\/console.log(\"#pakform select[name='pak[Layers][]']:visible).each\") \/\/Delete this\n          var v = jQuery(this).val();\n\n          if (!firstlayer)\n            firstlayer = v;\n\n          if (prepost[v]) {\n            view_table += addLayer(prepost[v]);\n            sumthick += parseFloat(layers[prepost[v]].thick);\n            layersarr.push(prepost[v]);\n\n            \/\/ inner cu array\n            innercuthickarr.push(layers[v].cuthick);\n          };\n\n          view_table += addLayer(v);\n          sumthick += parseFloat(layers[v].thick);\n          layersarr.push(v);\n\n          if (prepost[v]) {\n            view_table += addLayer(prepost[v]);\n            sumthick += parseFloat(layers[prepost[v]].thick);\n            layersarr.push(prepost[v]);\n          }\n        });\n\n        view_table += '<tr id=\"sumthi\"><th><\/th><th><\/th><th class=\"b\">Paksuus (mm)<\/th><th class=\"b align-right\"><b>' + sumthick.toFixed(3) + ' &plusmn; 10%<\/b><\/th><\/tr>';\n        view_table += '<\/table>';\n\n        jQuery('#view_table').append(view_table);\n\n        \/\/Why is this here?\n\n        jQuery(\"#pakform\").trigger(\"validate\");\n\n      });\n\n      \/\/ #paksubmit, .submit_button\n      jQuery(\"#pakform\").submit(function(event) {\n        \/\/console.log('\"#pakform\").submit') \/\/Delete this\n        event.preventDefault();\n        \/\/alert(\"pakform submit\");\n\n\n        if (jQuery(\"#pakform .error\").length) {\n          alert('Please correct mistakes');\n        } else {\n          \/\/ jQuery(\"#view_pakform\").hide();\n          jQuery(\"#buildform_col\").hide();\n          \/\/ jQuery(\"#view_orderform\").show();\n          jQuery(\"#orderform_col\").show();\n\n          \/\/ sync values\n          jQuery(\"#buildUp\").val(layersarr.join(','));\n          jQuery(\"#order_FullPaksus\").val(sumthick.toFixed(3));\n          \/\/ jQuery(\"#order_Cu_thickness_inside\").val(Math.max.apply(Math, innercuthickarr)).change();\n          jQuery(\"#order_Cu_thickness_inside\").val(Math.min.apply(Math, innercuthickarr)).change();\n          \/\/ jQuery(\"#order_Cu_thickness_outside\").val(layers[firstlayer].cuthick).change();\n          set_outlayer_cuthick(firstlayer)\n\n          \/\/ generate nice view - we need this for brandner default selection\n          \/\/ jQuery(\"#pakform\").trigger(\"generate_view\");\n\n\n\n          jQuery(\"select#Coating\").closest('.form-group').children('.notice, .error').remove();\n          if (0.8 > sumthick.toFixed(3)) {\n            \/\/Disable HASL\n            jQuery(\"select#Coating option[value='1']\").prop('disabled', true).hide();\n            jQuery(\"select#Coating\").val(2).change();\n\n            notice(jQuery(\"select#Coating\").closest('.form-group'), 'HASL not available for boards that are thinner than 0,8mm')\n          } else {\n            jQuery(\"select#Coating option[value='1']\").prop('disabled', false).show();\n          }\n\n          add_imp_flag_field();\n          \/\/ jQuery('.buildup-table .impedance-input.manual-input').prop( \"disabled\", true );\n\n        }\n\n        \/\/jQuery(\"#orderform\").trigger(\"check_minimum_opening\");\n\n        \/\/ validateOrder();\n\n\n      });\n\n      \/\/ generate nice view for the first time\n      jQuery(\"#pakform\").trigger(\"generate_view\");\n      set_outlayer_cuthick(firstlayer)\n      \/\/alert(\"trigger generate_view from PAKTFORM INIT\");\n\n      \/\/Add listener \n\n      \/\/Mark signal layer result cells as such\n      jQuery(\"#view_table\").on('change', '.impedance-input.layer-type', function(evt) {\n        \/\/console.log('view_table.change') \/\/Delete this\n        jQuery(this).closest('tr').find('.result-cell').removeClass('signal')\n\n        if (1 == jQuery(this).val()) {\n          jQuery(this).closest('tr').find('.result-cell').addClass('signal')\n\n          jQuery(this).closest('tr').find('input[type=number].impedance-input.manual-input').show();\n          \/\/console.log('Signal') \/\/Delete this\n        } else if (jQuery(this).val() == 2 || jQuery(this).val() == -1) {\n          jQuery(this).closest('tr').find('input[type=number].impedance-input.manual-input').hide();\n\n\n\n          \/\/console.log('Plane') \/\/Delete this\n\n        }\n\n        \/\/add_imp_flag_field(); just for testing\n\n      })\n\n\n\n\n\n\n\n\n    };\n\n  }; \/\/paktform init\n\n  function add_imp_flag_field() {\n    \/\/ console.log(\"Impedances changed\")\n    \/\/ jQuery(\"#pakform\").trigger(\"generate_view\")\n\n    jQuery(\"#imp-flag\").remove();\n\n    var check_values = false;\n\n    jQuery(\"#view_table td.result-cell .result\").each(function(index) {\n\n      if (jQuery(this).html() != '') {\n        console.log(\"result not 0\");\n        check_values = true;\n      }\n    });\n\n    \/*\t\n\n    \tjQuery(\"#view_table input[type=number].impedance-input.manual-input\").each(function( index ) {\n      \t\t\/\/console.log( index + \": \" + jQuery( this ).val() );\n    \t\t\n    \t\tif( jQuery( this ).val() > 0 )\n    \t\t{\n    \t\t\tcheck_values = true; \n    \t\t\tconsole.log(\"value not 0\"); \n    \t\t\n    \t\t}\n    \t\t\n    \t});*\/\n\n    if (1 == jQuery(\"#calc_imp_check:checked\").length && check_values) {\n      jQuery(\"#orderform\").append('<input id=\"imp-flag\" type=\"hidden\" name=\"is_imp\" value=\"1\" \/>')\n    } else {\n\n    }\n  }\n\n  function set_outlayer_cuthick(layer) {\n    \/\/console.log('set_outlayer_cuthick') \/\/Delete this\n    if (0 == layer || \"\" == layer) {\n      return\n    }\n\n    if (9 !== layers[layer].categorie) {\n      jQuery(\"#order_Cu_thickness_outside\").val(layers[layer].cuthick).change();\n    } else {\n      jQuery(\"#order_Cu_thickness_outside\").val(layers[layer].cuthick + 35).change();\n    }\n  }\n\n\n\n\n  \/**\n   * view_orderform\n   *\n   *  generates the form. This is the bread and butter of the form\n   *\/\n\n\n  var view_orderform = function() {\n    \/\/console.log('view_orderform') \/\/Delete this\n\n    \/\/initial setup of values\n\n\n\n\n    \/\/resetts the panel form\n    jQuery(\"#orderform\").trigger(\"show_in_panel\");\n\n\n\n    \/\/disables form button at inital setup\n    \/\/jQuery('#SubmitFrom').prop('disabled', true);\n\n\n    \/\/validate form button (calculate)\n    jQuery(\"#calc_price\").on('click', function(event) {\n      \/\/console.log('calc_price.click') \/\/Delete this\n      event.preventDefault();\n      validateOrder();\n\n    });\n\n    \/\/price request button\n    \/*\t\n\n        jQuery(\"#pr_submit\").on('click', function( event ) {\n            \/\/console.log('pr_submit).on(click') \/\/Delete this\n            event.preventDefault();\n            validateOrder();\n    \t\t\n    \t\tjQuery(this).prop('disabled', true);\n    \t\t\n    \t\tvar btn_text = jQuery(this).text(); \n    \t\t \n    \t\tjQuery(this).html( btn_text + '<i class=\"fa fa-spinner fa-spin fa-fw\"><\/i>' ); \n    \t\t\n    \t\t\n    \tvalidateOrder();\n    \t\t\n            if(jQuery('#orderform .error:visible').length === 0)\n            {\n                jQuery('#orderform').submit();\n            } else {\n                error(jQuery(this).closest('.form-group'), \"Please correct errors\");\n    \t\t\t\n    \t\t\tjQuery(this).prop('disabled', false);\n    \t\t\t\n    \t\t\t\tjQuery(this).html(btn_text);\n            }\n        });\n    \t*\/\n    \/\/Protoshop send button\n\n    jQuery(\"#orderform\").on('submit', submit_form);\n\n    function submit_form(event) {\n\n      if (!table_saved && \"\" == jQuery('#buildTable').val()) {\n        save_buildup_table(event);\n      }\n\n      console.log(jQuery('#buildTable').val())\n\n      jQuery(\"#orderform\").trigger('submit_validation')\n\n      jQuery(\"#orderform\").off(\"submit\", submit_form);\n\n      \/\/console.log('#SubmitFrom).on(click') \/\/Delete this\n      event.preventDefault();\n\n      var btn_text = jQuery(\"#SubmitFrom\").text();\n\n      jQuery(\"#SubmitFrom\").html(btn_text + '<i class=\"fa fa-spinner fa-spin fa-fw\"><\/i>');\n\n      jQuery(\"#SubmitFrom\").prop('disabled', true);\n\n\n      var validate_results = validateOrder();\n      var file_validity_results = file_validity_check();\n      jQuery('#errors-alert').remove()\n\n      if (validate_results === 'no errors' && file_validity_results) {\n\n\n        \/\/alert(\"no errors\");\n        \/\/ console.log(jQuery('#imp-flag'))\n        jQuery('#orderform').submit();\n\n      } else {\n\n\n        \/\/alert(\"ERRORS\");\n\n\n        jQuery(\"#SubmitFrom\").closest('.form-group').prepend('<div id=\"errors-alert\" class=\"error alert alert-danger alert-dismissable\" role=\"alert\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\" aria-label=\"close\">&times;<\/a>Please correct errors<\/div>');\n\n\n\n        jQuery(\"#SubmitFrom\").prop('disabled', false);\n\n        jQuery(\"#SubmitFrom\").html(btn_text);\n\n        jQuery(\"#orderform\").on('submit', submit_form);\n\n        \/\/ Init errors listener to clear Submit error message\n        jQuery('#orderform').on('change', 'input, select', check_submit_errors);\n\n      }\n\n\n\n    }\n\n\n\n\n\n\n\n    \/**\n     *  color_check\n     *\n     *  check that solder mask and silkscreen arn't the same color\n     *\/\n\n    jQuery(\"#orderform\").on(\"color_check\", function(event) {\n      \/\/console.log('#orderform.on(color_check)') \/\/Delete this\n\n      \/\/ Color of the solder mask vs. Marking color\n      e = jQuery(\"#orderform select[name='order[SolderResistColor]']\");\n      e2 = jQuery(\"#orderform select[name='order[MarkingColor]']\");\n      if (e.is(\":visible\")) {\n        if (e2.is(\":visible\")) {\n          if (e.val() == e2.val()) {\n            error(e2.closest('.form-group'), 'Juotosmaskin ja merkinn&auml;n v&auml;ri ei voi olla samanlainen');\n          }\n        }\n      }\n\n      jQuery(\"#orderform select[name='order[MarkingColor]']\").change();\n\n    });\n\n\n    \/**\n     *  calc_panel_dimensions\n     *\n     *\n     *\/\n\n\n    jQuery(\"#orderform\").on(\"calc_panel_dimensions\", function(event) {\n      \/\/console.log('orderform.on.calc_panel_dimensions') \/\/Delete this\n\n\n\n      \/\/ get order[PlatX] and order[PlatY]\n      var PlatX = jQuery(\"#orderform input[name='order[PlatX]']\").val();\n      var PlatY = jQuery(\"#orderform input[name='order[PlatY]']\").val();\n\n      if (jQuery.isNumeric(PlatX) && jQuery.isNumeric(PlatY)) {\n        \/\/ if not in panel\n        if (jQuery(\"#orderform select[name='order[Leib]']\").val() == '0') return;\n\n        \/\/ if in attached file\n        if (jQuery(\"#orderform select[name='panelcraft']\").val() == '0') return;\n\n        \/\/ get order[CntOnPanelX] and order[CntOnPanelY]\n        var CntOnPanelX = parseInt(jQuery(\"#orderform input[name='order[CntOnPanelX]']\").val(), 10);\n        var CntOnPanelY = parseInt(jQuery(\"#orderform input[name='order[CntOnPanelY]']\").val(), 10);\n\n        if (jQuery.isNumeric(CntOnPanelX) && jQuery.isNumeric(CntOnPanelY)) {\n          \/\/ get order[PlanOfPanel] (0|x|y|xy)\n          var PlanOfPanel = jQuery(\"#orderform select[name='order[PlanOfPanel]']\").val();\n\n          \/\/ get order[FrameWidth] (5|10)\n          var FrameWidth = parseInt(jQuery(\"#orderform select[name='order[FrameWidth]']\").val(), 10);\n\n          \/\/ get order[panelCut] (vcut|frees)\n          var panelCut = jQuery(\"#orderform select[name='order[panelCut]']\").val();\n\n          \/\/ get order[FreesiD] (2.0|2.4)\n          var FreesiD = jQuery(\"#orderform select[name='order[FreesiD]']\").val();\n\n          var PlatXPanel = (PlatX * CntOnPanelX);\n          PlatXPanel += ((PlanOfPanel == 'y' || PlanOfPanel == 'xy') ? (2 * FrameWidth) : 0);\n          if (panelCut == 'frees') PlatXPanel += (1 + CntOnPanelX) * FreesiD;\n          jQuery(\"#orderform input[name='order[PlatXPanel]']\").val(PlatXPanel);\n\n          var PlatYPanel = (PlatY * CntOnPanelY);\n          PlatYPanel += ((PlanOfPanel == 'x' || PlanOfPanel == 'xy') ? (2 * FrameWidth) : 0);\n          if (panelCut == 'frees') PlatYPanel += (1 + CntOnPanelY) * FreesiD;\n          jQuery(\"#orderform input[name='order[PlatYPanel]']\").val(PlatYPanel);\n          jQuery(\"#orderform input[name='order[CntLeib]']\").val(CntOnPanelX * CntOnPanelY);\n\n        }\n\n\n        \/\/this ned to happen after calc_panel_dimensions & platX and Y must not be empty\n        jQuery(\"#orderform\").trigger(\"quantity_and_size_validation\");\n      }\n\n\n\n\n    });\n\n\n    \/**\n     *  quantity_and_size_validation\n     *\n     *\n     *\/\n\n\n    \/\/ on the fly validations\n    jQuery(\"#orderform\").on(\"quantity_and_size_validation\", function(event) {\n      \/\/console.log('orderform.on.quantity_and_size_validation') \/\/Delete this\n\n      \/\/\/order[PlatX] & order[PlatY]\n      var px = jQuery(\"#orderform input[name='order[PlatX]']\");\n      var py = jQuery(\"#orderform input[name='order[PlatY]']\");\n\n\n      \/\/ restricts value to two decimals\n      var px_val = parseFloat(px.val());\n      px.val(px_val.toFixed(2));\n\n\n      var py_val = parseFloat(py.val());\n      py.val(py_val.toFixed(2));\n\n\n      \/\/\/order[PlatX] & order[PlatY]\n      var px_ = parseFloat(px.val());\n      var py_ = parseFloat(py.val());\n\n\n\n\n      \/\/gets rid of error caused by empty vales\n\n      \/\/seems redundant?\n      if (px.val().length != 0) {\n        px.closest('.form-group').children('.error').remove();\n        px.parents('.input-group').removeClass('has-error'); \/\/get the container\n        px.parentsUntil('.form-group').removeClass('has-error'); \/\/get the container\n      }\n      if (py.val().length != 0) {\n        py.closest('.form-group').children('.error').remove();\n        py.parentsUntil('.form-group').removeClass('has-error'); \/\/get the container\n        py.parents('.input-group').removeClass('has-error'); \/\/get the container\n      }\n\n\n\n      var switched = false;\n      \/\/ if first is bigger lets swap the variables\n      if (px_ > py_) {\n        py_ = [px_, px_ = py_][0];\n        \/\/py_ = [px_, px_ = py_][0];\n        switched = true;\n      }\n\n      \/\/ py is always bigger\n      if (px_ < 20.00 || px_ > 360.00) {\n        error(px.closest('.form-group'), 'Lyhimm&auml;n sivun pituus tulee olla 20mm - 360mm');\n        if (switched) {\n          py.parents('.input-group').addClass('has-error');\n        } else {\n          px.parents('.input-group').addClass('has-error');\n        }\n\n      }\n\n      if (py_ < 20.00 || py_ > 460.00) {\n        error(py.closest('.form-group'), 'Pitemm&auml;n sivun pituuden tulee olla 20mm - 460mm');\n        if (switched) {\n          px.parents('.input-group').addClass('has-error');\n        } else {\n          py.parents('.input-group').addClass('has-error');\n        }\n      }\n\n      \/\/ ***** After size check reset X and Y sizes\n      var px_ = parseFloat(px.val());\n      var py_ = parseFloat(py.val());\n\n      \/\/\/\/ order[PlatXPanel] & order[PlatYPanel]\n      var pnx = jQuery(\"#orderform input[name='order[PlatXPanel]']\");\n      var pny = jQuery(\"#orderform input[name='order[PlatYPanel]']\");\n      var pnx_ = parseFloat(pnx.val());\n      var pny_ = parseFloat(pny.val());\n\n      var isfr = (jQuery(\"#orderform select[name='order[panelCut]']\").val() == 'frees' ? true : false);\n      var frv_ = jQuery(\"#orderform select[name='order[FreesiD]']\").val();\n\n      if (pnx.val().length != 0) {\n        pnx.closest('.form-group').children('.error').remove();\n        pnx.parent('.input-group').removeClass('has-error'); \/\/get the container\n        pnx.parentsUntil('.form-group').removeClass('has-error'); \/\/get the container\n      }\n      if (pny.val().length != 0) {\n        pny.closest('.form-group').children('.error').remove();\n        pny.parent('.input-group').removeClass('has-error'); \/\/get the container\n        pny.parentsUntil('.form-group').removeClass('has-error'); \/\/get the container\n      }\n      \/\/if(pnx.val().length != 0 && pny.val().length != 0 ) {\t\n\n      \/\/}\n\n      if (pnx.is(\":visible\")) {\n\n\n        if (pnx_ < (px_ + (isfr ? (2 * frv_) : 0))) {\n          error(pnx.closest('.form-group'), 'Paneelin X mitta t&auml;ytyy olla isompi kuin yksitt&auml;isen levyn X mitta');\n          pnx.parent('.input-group').addClass('has-error');\n        }\n\n        console.log(pny_, py_, isfr, frv_)\n\n        if (pny_ < (py_ + (isfr ? (2 * frv_) : 0))) {\n          console.log(pny_, py_);\n          error(pny.closest('.form-group'), 'Paneelin Y mitta t&auml;ytyy olla isompi kuin yksitt&auml;isen levyn Y mitta');\n          pny.parent('.input-group').addClass('has-error');\n        }\n\n\n\n\n\n        var switched_panel = false;\n        \/\/ if first is bigger lets swap the variables\n        if (pnx_ > pny_) {\n          pny_ = [pnx_, pnx_ = pny_][0];\n          \/\/py_ = [px_, px_ = py_][0];\n          switched_panel = true;\n        }\n\n\n        if (pnx_ < 60.00 || pnx_ > 360.00) {\n          error(pnx.closest('.form-group'), 'Lyhyen sivun pituuden on oltava 60 mm - 360 mm');\n          if (switched_panel) {\n            pny.parents('.input-group').addClass('has-error');\n          } else {\n            pnx.parents('.input-group').addClass('has-error');\n          }\n\n        }\n\n        if (pny_ < 60.00 || pny_ > 460.00) {\n          error(pny.closest('.form-group'), 'Pitempien sivujen tulee olla 60 - 460 mm');\n          if (switched_panel) {\n            pnx.parents('.input-group').addClass('has-error');\n          } else {\n            pny.parents('.input-group').addClass('has-error');\n          }\n        }\n\n\n\n        \/*            \n        if(pnx_ <60.00 || pnx_ >360.00 || pnx_.toString()==\"NaN\") {\n                        error(pnx.closest('.form-group'),'Sallittu X koko, min: 60 mm, max: 360 mm');\n        \t\t\t\tpnx.parent('.input-group').addClass('has-error');\n        \t\t\t}\n\n        \t\t\tif(pny_ <60.00 || pny_ >460.00 || pny_.toString()==\"NaN\") {\n                        error(pny.closest('.form-group'),'Sallittu Y koko, min: 60 mm, max: 460 mm');\n        \t\t\t\tpny.parent('.input-group').addClass('has-error');\n        \t\t\t}\n        *\/\n      }\n\n\n      \/\/\/\/ order[Cnt]\n      var cn = jQuery(\"#orderform input[name='order[Cnt]']\");\n      var cl = jQuery(\"#orderform input[name='order[CntLeib]']\");\n\n\n      \/\/replaces all commas\n      \/\/var cn_val = cn.val().replace(',', '.');\n      \/\/console.log(\"cn_val: \"+cn_val);\n\n      var cn_ = parseInt(cn.val(), 10);\n      var cl_ = parseInt(cl.val(), 10);\n\n      if (cn.val().length != 0) {\n\n        cn.parentsUntil('.form-group').removeClass('has-error');\n        cn.closest('.form-group').children('.error').remove();\n\n      }\n\n      console.log(\"cn.val() : \" + cn.val());\n\n      \/\/check that user has not entered 0\n      if (cn.val() == 0) {\n\n        cn.parentsUntil('.form-group').removeClass('has-error');\n        cn.closest('.form-group').children('.error').remove();\n\n        error(cn.closest('.form-group'), 'Ei voi olla 0'); \/\/adds error message\n        cn.parentsUntil('.form-group').addClass('has-error'); \/\/adds error class\n      }\n\n      if (cl.val() == 0) {\n\n        cl.parentsUntil('.form-group').removeClass('has-error');\n        cl.closest('.form-group').children('.error').remove();\n\n        error(cl.closest('.form-group'), 'Ei voi olla 0'); \/\/adds error message\n        cl.parentsUntil('.form-group').addClass('has-error'); \/\/adds error class\n      }\n\n\n      if (cl.val().length != 0) {\n        cl.parentsUntil('.form-group').removeClass('has-error');\n        cl.closest('.form-group').children('.error').remove();\n      }\n\n\n      \/* \n        jQuery(\"#msg_yleprototoo\").hide();\n\n       if((cn_ * px_ * py_ \/ 10000) > 33 )\n            jQuery(\"#msg_yleprototoo\").show();*\/\n\n      if (cl.is(\":visible\")) {\n        if (cn_ % cl_ != 0) {\n          error(cl.closest('.form-group'), 'Levyjen m&auml;&auml;r&auml; t&auml;ytyy olla jaollinen paneelin levyjen m&auml;&auml;r&auml;ll&auml;!');\n          cn.parentsUntil('.form-group').addClass('has-error');\n          cl.parentsUntil('.form-group').addClass('has-error');\n        }\n        var plS = (cl_ * px_ * py_);\n        var pnS = (pnx_ * pny_);\n\n        if (plS > pnS) {\n          error(cl.closest('.form-group'), 'Levyt eiv&auml;t mahdu paneeliin');\n          cn.parentsUntil('.form-group').addClass('has-error');\n          cl.parentsUntil('.form-group').addClass('has-error');\n        }\n      }\n\n    });\n\n\n\n\n\n    \/**\n     * on change handler trigger\n     *\n     *\n     *\/\n\n    \/\/very important that this function is on top\n    jQuery(\"#orderform input, #orderform select\").change(function() {\n\n      \/\/jQuery(\"#orderform\").trigger(\"mandatory_field_check\");\n      \/\/console.log('mandatory_field_check.change'); \n\n    });\n\n    jQuery(\"#orderform input[name='order[BoardName]']\").change(function() {\n      \/\/console.log('jQuery(\"#orderform input[name=order[BoardName]]\").change') \/\/Delete this\n      jQuery(\"#orderform\").trigger(\"check_pcb_name\");\n    });\n\n\n\n    \/\/ recalc panel dimensions\n    jQuery(\".calc_panel_dimensions\").change(function() {\n      \/\/console.log('calc_panel_dimensions.change') \/\/Delete this\n\n      \/\/order[PlatX]\n      \/\/order[PlatY]\n      \/\/order[Leib]\n      \/\/panelcraft\n      \/\/order[CntOnPanelX]\n      \/\/order[CntOnPanelY]\n      \/\/order[PlanOfPanel]\n      \/\/order[FrameWidth]\n      \/\/order[panelCut]\n      \/\/order[FreesiD]\n\n\n      jQuery(\"#orderform\").trigger(\"size_of_order\");\n      jQuery(\"#orderform\").trigger(\"calc_panel_dimensions\");\n    });\n\n\n\n    jQuery('body').on('change', \".check_delivery_restrictions\", function() {\n      jQuery(\"#orderform\").trigger(\"check_delivery_restrictions\");\n    })\n\n\n\n\n    \/\/ validate quantity and size\n    jQuery(\".quantity_and_size_validation\").change(function() {\n      \/\/console.log('quantity_and_size_validation.change') \/\/Delete this\n      \/\/-order[PlatX] \/\/ are triggered through calc_panel_dimensions\n      \/\/-order[PlatY] \/\/ are triggered through calc_panel_dimensions\n      \/\/-order[Leib] \/\/ are triggered through calc_panel_dimensions\n      \/\/order[PlatXPanel]\n      \/\/order[PlatYPanel]\n      \/\/order[Cnt]\n      \/\/order[CntLeib]\n\n      jQuery(\"#orderform\").trigger(\"quantity_and_size_validation\");\n      jQuery(\"#orderform\").trigger(\"size_of_order\");\n    });\n\n\n    jQuery(\".check_number_of_holes\").change(function() {\n      \/\/console.log('quantity_and_size_validation.change') \/\/Delete this\n      jQuery(\"#orderform\").trigger(\"check_number_of_holes\");\n    });\n\n\n\n    \/\/replace commas on the fly\n    \/*\tjQuery('input[type=\"number\"]').keyup(function(event) { \n    \t\t\t\t\n    \t\t\/\/jQuery(this).val()\n    \t\tvar code = (event.keyCode ? event.keyCode : event.which);\n    \t\t\/\/alert(code);\n    \t\t\n    \t\tconsole.log(jQuery('#PlatX').val());\n    \t\t\n    \t\tif(code == 188) { \/\/comma\n    \t\t\tevent.preventDefault();\n\n    \t\t\tjQuery('#PlatX').val(  parseFloat(jQuery('#PlatX').val()+\".\")  );\n\n    \t\t}\t\n    \t\t\n    \t\t\n    \t\t\n    \t\t\n    \t\n    \t});*\/\n\n\n\n    \/*\tfunction replaceCommas(_string) {\n    \t\t\t\t\t\n    \t\t\t\t\tconsole.log(_string);\n    \t\t\n    \t\t\t\t\t_string = _string.toString();\n    \t\t\t\t\t\n    \t\t\t\t\t_string = _string.replace(\",\", \".\");\n\n    \t\t\t\t\t_string = parseFloat(_string);\n\n    \t\t\t\t\treturn _string;\n    \t\t\t\t\t\n    \t\t\t\t\t\n    \t\t\t\t}*\/\n\n\n    \/\/ restrict to only numer imputs\n    \/*\n    jQuery('input[type=\"number\"]').keypress(function(event) {\n    \t\tvar code = (event.keyCode ? event.keyCode : event.which);\n    \t\t\/\/alert(code);\n    \t\tif (!(\n    \t\t\t\t(code >= 48 && code <= 57) \/\/numbers\n    \t\t\t\t\/\/|| (code == 46) \/\/period\n    \t\t\t\t|| (code == 44)\t\/\/comma\n    \t\t\t\t|| (code == 8)\n    \t\t\t\t|| (code == 9)\n\n    \t\t\t)\n    \t\t\t\/\/|| (code == 46 && $(this).val().indexOf('.') != -1)\n    \t\t\t|| (code == 44 && jQuery(this).val().indexOf(',') != -1)\n\n    \t\t   ) {\n\n    \t\t\tevent.preventDefault();\n    \t\t\talert(\"Only number allowed\");\n    \t\t}\n\n    \t});*\/\n\n\n    \/**\n     * show_in_panel\n     *\n     *  check that in panel is or isnt checked\n     *\/\n\n\n\n\n    jQuery(\"#orderform select[name='order[Leib]']\").change(function() {\n\n      \/\/console.log('jQuery(\"#orderform select[name=order[Leib]]\").change') \/\/Delete this\n      jQuery(\"#orderform\").trigger(\"show_in_panel\");\n      jQuery(\"#orderform\").trigger(\"size_of_order\");\n      jQuery(\"#orderform\").trigger(\"quantity_and_size_validation\");\n\n\n      \/\/console.log(\"change leib\");\n      if (jQuery(this).val() == 0) {\n        jQuery(\"#help-similar-panels\").hide();\n        jQuery(\"#CntLeib\").val(1);\n        \/\/console.log(\"change leib --> should be 0\");\n      } else {\n        jQuery(\"#help-similar-panels\").show();\n        if (jQuery(\"#CntLeib\").val() == 0) {\n          \/\/console.log(\"change leib --> should be 1\");\n          jQuery(\"#CntLeib\").val(1);\n\n        }\n      }\n\n    });\n\n\n    \/**\n     * panelcraft\n     *\n     *  check panel craft panel\n     *\/\n\n\n\n    jQuery(\"#orderform select[name='panelcraft']\").change(function() {\n      \/\/console.log('panelcraft.change') \/\/Delete this\n      \/\/reset values\n      jQuery('#panelcrafting input').val('');\n      jQuery(\"#panelcrafting select\").prop('selectedIndex', 0).change();\n\n      if (jQuery(this).val() == 1) {\n        jQuery(\"#help-file-reminder\").hide();\n        \/\/jQuery(\"#msg_reeperid\").show();\n\n\n\n        jQuery('#panelcrafting').show();\n\n        jQuery(\"#panelcreate input[name='order[PlatXPanel]']\").attr('readonly', 'readonly').val('');\n        jQuery(\"#panelcreate input[name='order[PlatYPanel]']\").attr('readonly', 'readonly').val('');\n        jQuery(\"#panelcreate input[name='order[CntLeib]']\").attr('readonly', 'readonly').val('');\n      } else {\n        jQuery(\"#help-file-reminder\").show();\n        \/\/jQuery(\"#msg_reeperid\").hide();\n\n        jQuery('#panelcrafting').hide();\n\n        jQuery(\"#panelcreate input[name='order[PlatXPanel]']\").attr('readonly', false);\n        jQuery(\"#panelcreate input[name='order[PlatYPanel]']\").attr('readonly', false);\n        jQuery(\"#panelcreate input[name='order[CntLeib]']\").attr('readonly', false);\n      }\n    });\n\n\n\n    jQuery(\"#orderform select[name='order[PlanOfPanel]']\").change(function() {\n      \/\/console.log('PlanOfPanel.change') \/\/Delete this\n      \/\/ reset values\n      jQuery(\"#framewidth select\").prop('selectedIndex', 0);\n\n      if (jQuery(this).val() != '0') {\n\n\n        jQuery('#help-fiducials').show();\n\n        jQuery('#framewidth').show();\n\n        if (jQuery(this).val() == 'x') jQuery(\"#selplan img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_planx.png\");\n        else if (jQuery(this).val() == 'y') jQuery(\"#selplan img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_plany.png\");\n        else jQuery(\"#selplan img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_planxy.png\");\n      } else {\n        jQuery('#framewidth').hide();\n\n        jQuery('#help-fiducials').hide();\n\n        jQuery(\"#selplan img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_plan.png\");\n      }\n    });\n\n    jQuery(\"#orderform select[name='order[panelCut]']\").change(function() {\n      \/\/console.log('panelCut.change') \/\/Delete this\n      \/\/ reset values\n      jQuery(\"#freesid select\").prop('selectedIndex', 0);\n\n      if (jQuery(this).val() == 'frees') jQuery('#freesid').show();\n      else jQuery('#freesid').hide();\n    });\n\n    jQuery(\"#CntLayers\").change(function() {\n      \/\/console.log('CntLayers.change') \/\/Delete this\n      jQuery(\"#orderform select[name='order[IsBuildUp]']\").closest('.form-group').children('.notice').remove();\n      jQuery(\"#buildUp\").val('');\n      jQuery(\"#ReBuildUp\").hide();\n      jQuery(\"#orderform select[name='order[IsBuildUp]']\").prop('selectedIndex', 0).change();\n\n      if (jQuery(this).val() == 2)\n        jQuery(\"#cu_inlayers\").hide();\n      else\n        jQuery(\"#cu_inlayers\").show();\n\n    });\n\n    jQuery(\"#ReBuildUpButton\").click(function() {\n      \/\/console.log('ReBuildUpButton.click') \/\/Delete this\n      \/\/ alert(\"click\");\n      \/\/jQuery(\"select[name='order[IsBuildUp]']\").change();\n      jQuery(\"#orderform_col\").hide();\n      \/\/ jQuery(\"#view_pakform\").show();\n      jQuery(\"#buildform_col\").show();\n      \/\/ jQuery('.buildup-table .impedance-input.manual-input').prop( \"disabled\", false );\n    });\n\n    jQuery(\"select[name='order[IsBuildUp]']\").change(function() {\n      \/\/console.log('IsBuildUp.change') \/\/Delete this\n      \/\/console.log(\"isbuildup changed\")\n\n\n      \/\/alert('isbuildup');\n\n      jQuery(\"#orderform\").trigger(\"compose_here_option\");\n\n\n      \/\/ hide rebuild button\n      jQuery(\"#ReBuildUp\").hide();\n      \/\/ console.log(\"ReBuildUp hidden\")\n\n\n      \/\/ switch view\n      \/\/ jQuery(\"#view_orderform\").hide();\n      jQuery(\"#orderform_col\").hide();\n      \/\/ jQuery(\"#view_pakform\").show();\n      jQuery(\"#buildform_col\").show();\n\n      \/\/ init\n      view_pakform();\n\n      if (jQuery(this).val() == '0') {\n        jQuery(\"#msg_brandnerist\").show();\n        jQuery(\"#pakform\").submit();\n      } else {\n        jQuery(\"#msg_brandnerist\").hide();\n        jQuery(\"#ReBuildUp\").show();\n        \/\/ console.log(\"ReBuildUp show\")\n      }\n\n    });\n\n    \/\/ jQuery(\"#order_Cu_thickness_inside\").change(function () {\n    \/\/\/\/     console.log('order_Cu_thickness_inside.change') \/\/Delete this\n    \/\/     if(jQuery(this).val() == '18') jQuery(\"#Cu_thickness_inside\").val('70');\n    \/\/     else if(jQuery(this).val() == '35') jQuery(\"#Cu_thickness_inside\").val('125');\n    \/\/     else jQuery(\"#Cu_thickness_inside\").val('225');\n    \/\/ });\n\n    \/\/*****New values\n    jQuery(\"#order_Cu_thickness_inside\").change(function() {\n      \/\/console.log('order_Cu_thickness_inside.change') \/\/Delete this\n      if (jQuery(this).val() == '18') jQuery(\"#Cu_thickness_inside\").val('75');\n      else if (jQuery(this).val() == '35') jQuery(\"#Cu_thickness_inside\").val('125');\n      else jQuery(\"#Cu_thickness_inside\").val('250');\n    });\n\n\n    \/\/ jQuery(\"#order_Cu_thickness_outside\").change(function () {\n    \/\/\/\/     console.log('order_Cu_thickness_outside.change') \/\/Delete this\n    \/\/     \/\/ console.log(jQuery(this).val());\n    \/\/     var key = ( jQuery(this).val() - 35 ); \/\/ without GalvCu\n    \/\/     \/\/ console.log(key);\n    \/\/     var valmap = { 12:60, 18:75, 35:100, 70:250, 105:350 };\n\n    \/\/     jQuery(\"#Cu_thickness_outside\").val(valmap[key]);\n\n    \/\/ });\n\n    \/\/*****New values\n    jQuery(\"#order_Cu_thickness_outside\").change(function() {\n      \/\/console.log('order_Cu_thickness_outside.change') \/\/Delete this\n      \/\/ console.log(jQuery(this).val());\n      var key = (jQuery(this).val() - 35); \/\/ without GalvCu\n      \/\/ console.log(key);\n      var valmap = {\n        12: 50,\n        18: 75,\n        35: 125,\n        70: 250,\n        105: 350\n      };\n\n      jQuery(\"#Cu_thickness_outside\").val(valmap[key]);\n\n    });\n\n    jQuery(\"#orderform select[name='order[SolderResist]']\").change(function() {\n      \/\/console.log('SolderResist.change') \/\/Delete this\n\n      \/\/ reset values\n      \/\/ jQuery(\"#SolderResistColor\").val(0).change();\n\n      \/\/trigger the ckeck\n      jQuery(\"#orderform\").trigger(\"color_check\");\n\n      if (jQuery(this).val() == '0') {\n        jQuery('#SolderResistColor').closest('.form-group').hide();\n\n      } else {\n        jQuery('#SolderResistColor').closest('.form-group').show();\n\n      }\n    });\n\n    jQuery(\"#orderform select[name='order[Marking]']\").change(function() {\n      \/\/console.log('Marking.change') \/\/Delete this\n      \/\/alert(\"rest\");\n      \/\/ reset values to third option\n      \/\/ jQuery(\"#MarkingColor\").val(2).change();\n\n\n      \/\/trigger the ckeck\n      jQuery(\"#orderform\").trigger(\"color_check\");\n\n      if (jQuery(this).val() == '0') jQuery('#MarkingColor').closest('.form-group').hide();\n      else jQuery('#MarkingColor').closest('.form-group').show();\n    });\n\n\n\n\n\n    jQuery(\"#orderform select[name='order[Coating]']\").change(function() {\n      \/\/console.log('Coating.change') \/\/Delete this\n      if (jQuery(this).val() == 1)\n        jQuery(\"#selicon img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_sn.png\");\n      else\n        jQuery(\"#selicon img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_gold.png\");\n    });\n\n    \/\/ The number of openings in the plate\n    jQuery(\"#orderform input[name='order[AvadeArv]']\").change(function() {\n      \/\/console.log('AvadeArv.change') \/\/Delete this\n\n      var e = jQuery(this);\n      e.val(parseInt(e.val()));\n\n\n      jQuery(this).parentsUntil('.form-group').removeClass('has-error');\n      jQuery(this).closest('.form-group').children('.error').remove();\n\n      if (jQuery.isNumeric(jQuery(this).val()) == false || jQuery(this).val() <= 0) {\n        error(jQuery(this).closest('.form-group'), 'Sy&ouml;t&auml; reikien lukum&auml;&auml;r&auml; levyss&auml;');\n      }\n\n      \/*        if((jQuery(this).val() * jQuery(\"#orderform input[name='order[Cnt]']\").val()) > 25000)\n              {\n                  error(jQuery(this).closest('.form-group'),'Reikien m&auml;&auml;r&auml; on isompi kuin sallittu! V&auml;henn&auml; tilattua m&auml;&auml;r&auml;&auml;! Koko tilauksessa voi olla 25000 reik&auml;&auml;');\n              }\n      *\/\n      \/\/ we check\n      if (jQuery(\"#orderform input[name='order[Cnt]']\").val() == '') {\n        jQuery(\"#orderform input[name='order[Cnt]']\").closest('.form-group').children('.error').remove();\n        error(jQuery(\"#orderform input[name='order[Cnt]']\").closest('.form-group'), 'Sy&ouml;t&auml; levyjen m&auml;&auml;r&auml;');\n      }\n\n    });\n\n    jQuery(\"#orderform select[name='order[SolderResistColor]']\").change(function() {\n      \/\/console.log('SolderResistColor.change') \/\/Delete this\n\n      if (jQuery(this).val() == 0) jQuery(\"#selsold img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_green.png\");\n      if (jQuery(this).val() == 1) jQuery(\"#selsold img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_black.png\");\n      if (jQuery(this).val() == 2) jQuery(\"#selsold img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_white.png\");\n      if (jQuery(this).val() == 3) jQuery(\"#selsold img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_blue.png\");\n      if (jQuery(this).val() == 4) jQuery(\"#selsold img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_red.png\");\n\n      jQuery(\"#orderform select[name='order[MarkingColor]']\").change();\n    });\n\n    jQuery(\"#orderform select[name='order[MarkingColor]']\").change(function() {\n      \/\/console.log('MarkingColor.change') \/\/Delete this\n      jQuery(this).closest('.form-group').children('.error').remove();\n\n      if (jQuery(this).val() == jQuery(\"#orderform select[name='order[SolderResistColor]']\").val()) {\n        error(jQuery(this).closest('.form-group'), 'Juotosmaskin ja merkinn&auml;n v&auml;ri ei voi olla samanlainen');\n      }\n\n      if (jQuery(this).val() == 1) jQuery(\"#selmark img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_black.png\");\n      if (jQuery(this).val() == 2) jQuery(\"#selmark img\").attr(\"src\", \"https:\/\/www.brandner.ee\/wp-content\/plugins\/brandner-protoshop\/\/images\/icon_white.png\");\n    });\n\n\n    \/*    \n    \tDeprictaed\n\n        jQuery(\"#confitions\").change(function () {\n            \/\/console.log('confitions.change') \/\/Delete this\n            if(jQuery(this).is(':checked'))\n            {\n                jQuery(this).closest('.form-group').children('.error').remove();\n                jQuery(this).closest('.red').removeClass('red');\n            }\n        });\n    \t\n\n    \tjQuery(\"#orderform select[name='order[ID_WayOfDelivery]'], #orderform select[name='order[ID_Country]']\").change(function () {\n            e = jQuery(\"#orderform select[name='order[ID_WayOfDelivery]']\");\n            e2 = jQuery(\"#orderform select[name='order[ID_Country]']\");\n\n            e.closest('.form-group').children('.error').remove();\n\n            if(CountryZoneTable[e2.val()]['d'+e.val()] == 0)\n                error(e.closest('.form-group'),'Toimitustapa ei ole voimassa kyseiselle maalle');\n        });*\/\n\n    \/\/ jQuery(\"#orderform :input\").change(calculatePrice);\n\n    \/*    jQuery(\"#orderform_reset\").click(function(){\n            window.location.replace('https:\/\/www.brandner.ee\/eng\/protoshop');\n        });*\/\n\n\n    \/\/validate the form before sending\n    \/*    jQuery(\"#calc_price\").submit(function( event ) {\n            event.preventDefault();\n\n            validateOrder();\n\n            \/\/if no errors:\n            if(jQuery('.error').length === 0)\n            {\n                calculatePrice();\n                jQuery(\"#form_action\").val('order');\n                jQuery(this).unbind('submit').submit();\n            }\n\n        });*\/\n\n    \/\/Levelup Andy code\n\n\n\n    \/\/validate the form before sending\n    jQuery(\"#orderform\").on('calculate_price', function(event) {\n      \/\/console.log('orderform.on.calculate_price') \/\/Delete this\n      \/\/ console.log('Calc price called')\n      \/\/ console.trace()\n      var cal_price = true;\n\n      \/\/ jQuery(\"#orderform input:visible :not(#fileToUpload)\").each(function() {\n      jQuery(\"#orderform input:visible\").each(function() {\n\n        \/\/ validate required fields\n        if (jQuery(this).is('[isreq]')) {\n          if (jQuery(this).val().length == 0) {\n            console.log(\"mandatory errors!\");\n            console.log(jQuery(this)[0])\n            \/\/clear price \n            cal_price = false;\n\n\n\n          } else {\n\n\n\n\n          }\n        }\n      });\n\n\n      if (cal_price) {\n        console.log(\"no mandatory errors - calc price!\");\n        brnr_maybe_calc_price();\n\n      } else {\n\n        console.log(\"clear price price!\");\n        \/\/clear prce\t\n        jQuery(\"#pricedisplay\").val('');\n\n      }\n\n\n      \/*\t\tif(validateOrder() === 'no errors') {\n      \t\t\t brnr_maybe_calc_price();\n      \t\t\t console.log(\"no errors visile!\");\n               } else {\n      \t\t\t console.log(\"errors visile!\");\n      \t\t\t \n      \t\t }*\/\n\n    });\n\n  };\n\n\n\n  \/**\n   * check_number_of_holes\n   *\n   *  Check if number of holes exeeds maximum limit\n   *\/\n\n\n  jQuery(\"#orderform\").on('check_number_of_holes', function(event) {\n\n    console.log(\"check_number_of_holes\")\n\n\n    var e = jQuery(\"#orderform input[name='order[AvadeArv]']\");\n    var e2 = jQuery(\"#orderform input[name='order[Cnt]']\");\n\n    e.val(parseInt(e.val()));\n    e2.val(parseInt(e2.val()));\n\n    jQuery(\"#orderform input[name='order[AvadeArv]']\").closest('.form-group').children('.notice, .error').remove();\n\n\n    if ((e.val() * e2.val()) > 25000) {\n\n\n\n      error(jQuery(\"#orderform input[name='order[AvadeArv]']\").closest('.form-group'), 'Reikien m&auml;&auml;r&auml; on isompi kuin sallittu! V&auml;henn&auml; tilattua m&auml;&auml;r&auml;&auml;!');\n    }\n\n  });\n\n\n\n\n  \/**\n   * show_in_panel\n   *\n   *  adds the dropdown div when \"in panel\" dropdown is switched\n   *\/\n\n  jQuery(\"#orderform\").on(\"show_in_panel\", function(event) {\n    \/\/console.log('orderform.on.show_in_panel') \/\/Delete this\n    \/\/ reset values\n    \/\/ jQuery('#panelcreate input').val('');\n    jQuery(\"#panelcreate select\").prop('selectedIndex', 0).change();\n\n    if (jQuery(\"#orderform select[name='order[Leib]']\").val() == -1) {\n\n      jQuery('#panelcreate').show();\n    } else {\n      jQuery('#panelcreate').hide();\n    }\n\n  });\n\n\n\n  \/**\n   * check_pcb_name\n   *\n   *  Characters \u201d or \u2019 not accepted.\n   *\/\n\n  jQuery(\"#orderform\").on(\"check_pcb_name\", function(event) {\n    \/\/console.log('orderform.on.check_pcb_name') \/\/Delete this\n\n    var _this = jQuery(\"#orderform input[name='order[BoardName]']\");\n\n    _this.closest('.form-group').children('.pcb_name_error').remove();\n    _this.parentsUntil('.form-group').removeClass('has-error');\n\n    var str = _this.val();\n    if (str.indexOf('\"') != -1 || str.indexOf(\"'\") != -1 || str.indexOf(\"\u201d\") != -1 || str.indexOf(\"\u2019\") != -1 || str.indexOf(\"\u201c\") != -1) {\n\n      \/\/console.log('Unacceptable characters found!'); \/\/Delete this\n\n      \/\/removes error message if function run twice\n\n\n\n      error2(_this.closest('.form-group'), 'Merkit &rdquo; ja &rsquo; ei hyv&auml;ksyt&auml;', 'pcb_name_error'); \/\/adds error message\n      _this.parentsUntil('.form-group').addClass('has-error'); \/\/adds error class\n\n    } else {\n\n      \/\/ jQuery('#errors-alert').remove()\n      \/\/console.log('No unacceptable characters found!'); \/\/Delete this\n\n      \/*\tDUPLICATE FUNCTION\t\t\n      if(_this.val().length != 0) { \/\/check if value isnt empty\n\n      \t\/\/removes error classes\n      \t_this.parent().removeClass('has-error'); \/\/get the container\n      \t_this.closest('.form-group').children('.error').remove();\n\n      } else {\n      \t_this.closest('.form-group').children('.error').remove(); \/\/removes any previous error linked to classs\n      \terror(_this.closest('.form-group'),'Kentt&auml; on pakollinen'); \/\/adds error message\n      \t_this.parentsUntil('.form-group').addClass('has-error'); \/\/adds error class\n      }\n      *\/\n\n    }\n\n\n  });\n\n\n  \/**\n   * file_upload_check\n   *\n   *  Check fi file is present\n   *\/\n\n\n\n\n\n\n  \/**\n   * check_delivery_restrictions\n   *\n   *  Check delivery time restrictions\n   *\/\n\n\n\n  jQuery(\"#orderform\").on(\"check_minimum_opening\", function(event) {\n    \/\/console.log('orderform.on.check_minimum_opening') \/\/Delete this\n\n    \/\/ minimum opening (mm)\n\n    var e2 = jQuery(\"#order_FullPaksus\");\n    e2.closest('.form-group').children('.notice').remove();\n\n    \/*\n    \n    Mandatory Selectbox. Table DrillList. By default a smallest possible drill size is given, found as following: if FullPaksus<=1.2mm, then smallest MinAva=0.1mm, if FullPaksus<=1.616mm, then smallest MinAva=0.15mm (0.1mm hidden from the list); if FullPaksus >1.616mm then smallest MinAva=0.2mm (0.1 and 0.15 are hidden from the list).\n    \n    *\/\n\n    if (e2.val() <= 1.2) {\n\n      \/\/alert( e2.val()+\"is <= 1.2\");\n      \/\/MinAva=0.1mm\n      disableMinavaOption(false);\n\n\n\n      notice(e2.closest('.form-group'), '0,1 mm: n reikien koko on saatavana 1,2 mm: n paksuus- tai aluspaneeleille');\n\n\n    } else if (e2.val() <= 1.616) {\n\n      \/\/alert( e2.val()+\"is <= 1.6\");\n\n      disableMinavaOption([0.1]);\n\n      notice(e2.closest('.form-group'), '0,15 mm: n reikien koko on saatavana levyille, joiden paksuus on 1,616 mm tai alle');\n\n      \/\/MinAva=0.15mm\n    } else { \/\/ > 1.616\n\n      \/\/alert(e2.val()+\"is bigger than 1.6 \");\n\n      \/\/MinAva=0.2mm\n\n      notice(e2.closest('.form-group'), '0,2 mm on pienin sallittu rei&auml;n halkaisija yli 1,616 mm paksuille levyille');\n\n\n\n      disableMinavaOption([0.1, 0.15]);\n    }\n\n\n    \/*\t\tif(e.val() == '0.15')\n            {\n    \t\t\t\n\n    \t\t\t\n    \t\t\t\n                if(e2.val() != '1.616')\n                {\n                    error(e.closest('.form-group'),'V&auml;himm&auml;isreik&auml; 0.15 on sallittu vain 1.6mm paksuisessa levyss&auml;');\n                }\n            }\n    *\/\n  });\n\n\n  \/**\n   * disableMinavaOption\n   *\n   *  Check what delivery days are available and restricts the dropdown\n   *\/\n\n\n  function disableMinavaOption(num) {\n    \/\/console.log('disableMinavaOption') \/\/Delete this\n\n    \/\/resets opions \n\n    jQuery(\"select#Minava option\").prop('disabled', false).show();\n\n\n    if (num[0] == 0 || num == '' || num == false) {\n      return;\n    }\n\n    \/\/var e = jQuery(\"#orderform select[name='order[Minava]']\");\n\n    for (var i = 0, len = num.length; i < len; i++) {\n      \/\/loop through all the opions to disable\n      \/\/alert(\"disable this option: \"+ num[i]); \n\n      jQuery(\"select#Minava option[value='\" + num[i] + \"']\").prop('disabled', true).hide();\n\n\n    } \/\/ for\n\n\n    \/\/switch the dropdown value if option isn't available\n\n    \/\/check if the current dropdown value is disabled\n\n    var currentval = jQuery(\"select#Minava\").val();\n\n    \/\/var curentitem =  jQuery(\"select#DeliveryDays option[value='\"+currentval+\"']\").prop('disabled');\n\n    \/\/alert( \"currentval -->\");\n\n    if (currentval == null) {\n\n      \/\/alert( \"value is null\" );\n\n      jQuery(\"select#Minava option\").each(function(index, value) {\n        \/\/console.log('select#Minava option.each') \/\/Delete this\n\n        \/\/alert( \"prop: \"+ jQuery(this).prop('disabled'));\n\n\n        if (jQuery(this).prop('disabled') == false) {\n\n          jQuery(\"select#Minava\").val(jQuery(this).val());\n\n          \/\/alert( \"set dropdown value to : \"+ jQuery(this).val() );\n\n          \/\/return after value has switched\n          return false;\n\n        }\n\n\n      });\n\n    }\n\n  }\n\n\n\n\n  \/**\n   * disableOption\n   *\n   *  Check what delivery days are available and restricts the dropdown\n   *\/\n\n\n  function disableOption(num) {\n    \/\/console.log('disableOption') \/\/Delete this\n    \/\/resets opions \n\n    jQuery(\"select#DeliveryDays option\").prop('disabled', false).show();\n\n\n    if (num[0] == 0 || num == '' || num == false || num == 0) {\n\n      \/\/change delivery days to 2,3,4,\n      notice(jQuery(\"#orderform select#DeliveryDays\").closest('.form-group'), '24h kuljetus k&auml;ytett&auml;viss&auml;');\n\n      return;\n    }\n\n\n    for (var i = 0, len = num.length; i < len; i++) {\n      \/\/loop through all the opions to disable\n      \/\/alert(\"disable this option: \"+ num[i]); \n\n      jQuery(\"select#DeliveryDays option[value='\" + num[i] + \"']\").prop('disabled', true).hide();\n\n\n    } \/\/ for\n\n\n    \/\/switch the dropdown value if option isn't available\n\n    \/\/check if the current dropdown value is disabled\n\n    var currentval = jQuery(\"select#DeliveryDays\").val();\n\n    \/\/var curentitem =  jQuery(\"select#DeliveryDays option[value='\"+currentval+\"']\").prop('disabled');\n\n    \/\/alert( \"currentval -->\");\n\n    if (currentval == null) {\n\n      \/\/alert( \"value is null\" );\n\n      jQuery(\"select#DeliveryDays option\").each(function(index, value) {\n        \/\/console.log('select#DeliveryDays option.each') \/\/Delete this\n        \/\/alert( \"prop: \"+ jQuery(this).prop('disabled'));\n\n\n        if (jQuery(this).prop('disabled') == false) {\n\n          jQuery(\"select#DeliveryDays\").val(jQuery(this).val());\n\n          \/\/alert( \"set dropdown value to : \"+ jQuery(this).val() );\n\n          notice(jQuery(\"#orderform select#DeliveryDays\").closest('.form-group'), '24h toimitus ei ole saatavilla, siirretty l&auml;himp&auml;&auml;n k&auml;ytett&auml;viss&auml; olevaan vaihtoehtoon');\n          \/\/return after value has switched\n          return false;\n\n        }\n\n\n      });\n\n    }\n\n  }\n\n  \/**\n   * compose_here_option\n   *\n   *  restricts delivery time for compose here option\n   *\/\n\n  jQuery(\"#orderform\").on(\"compose_here_option\", function(event) {\n    \/\/console.log('orderform.on.compose_here_option') \/\/Delete this\n\n    if (jQuery(\"#orderform select[name='order[IsBuildUp]']\").val() == 0) {\n      \/\/use brandner standard build\n      \/\/alert(\"se brandner standard build\"); \n      \/\/disableOption(false);\n    } else {\n      \/\/compose here\n      \/\/alert(\"compose here\");\n      \/\/disableOption([1,2]);\n    }\n\n\n\n  });\n\n\n  \/**\n   * check_delivery_restrictions\n   *\n   *  Check delivery time restrictions\n   *\/\n\n  jQuery(\"#orderform\").on(\"check_delivery_restrictions\", function(event) {\n    \/\/console.log('orderform.on.check_delivery_restrictions') \/\/Delete this\n\n\n\n\n    enforce_delivery_restrictions();\n\n  });\n\n\n\n  \/**\n   * size_of_order\n   *\n   *  restricts delivery time for size of order\n   *\/\n\n  jQuery(\"#orderform\").on(\"size_of_order\", function(event) {\n    \/\/console.log('orderform.on.size_of_order') \/\/Delete this\n\n    size_of_order();\n\n  });\n\n\n\n  \/**\n   * enforce_delivery_restrictions\n   *\n   *  restricts delivery time for compose here option\n   *\/\n\n  function enforce_delivery_restrictions() {\n\n\n    \/\/alert(\"trigger check check_delivery_restrictions\");\n    \/\/ Number of openings per plate\n\n    var e = jQuery(\"#orderform input[name='order[AvadeArv]']\");\n    var e2 = jQuery(\"#orderform input[name='order[Cnt]']\");\n    var e3 = jQuery(\"#orderform select#DeliveryDays\");\n    var e4 = jQuery(\"#panelcraft\");\n    var e5 = jQuery(\"#CntLayers\");\n\n    var e6 = size_of_order();\n\n    e.val(parseInt(e.val()));\n    e2.val(parseInt(e2.val()));\n    e4.val(parseInt(e4.val()));\n\n\n    \/\/resets the delivery notice\n    e3.closest('.form-group').children('.notice, .error').remove();\n\n\n\n    delivery_restrictions = {\n1 : {max_holes_per_order: 10000, panelisation_option: 0, max_boards_area: 160000, max_count_of_layers: 12, },\n2 : {max_holes_per_order: 25000, panelisation_option: 0, max_boards_area: 330000, max_count_of_layers: 12, },\n3 : {max_holes_per_order: 25000, panelisation_option: 1, max_boards_area: 330000, max_count_of_layers: 12, },\n4 : {max_holes_per_order: 25000, panelisation_option: 1, max_boards_area: 330000, max_count_of_layers: 12, },\n}\n    \n\n    var restrictions = false;\n    var disablearray = [];\n    var order_size = 0;\n\n    jQuery.each(delivery_restrictions, function(key, value) {\n\n      \/\/number of holes\n      if ((e.val() * e2.val()) > value.max_holes_per_order) {\n        console.log(key + \"max_holes_per_order Restrictions = true\");\n        restrictions = true;\n\n      }\n\n      \/\/panelisation_option\n\n\n      console.log('panelisation_option', parseInt(e4.val()), value.panelisation_option);\n\n      if (parseInt(e4.val()) > value.panelisation_option) {\n        restrictions = true;\n        console.log(key + \"panelisation_option Restrictions = true\");\n      }\n\n      \/\/max order size\n\n\n      if (e6 > value.max_boards_area) {\n        console.log(key + \"max_boards_area Restrictions = true\" + e6 + ' > ' + value.max_boards_area);\n        restrictions = true;\n\n      }\n\n\n      console.log(key + \"order_size \" + e6);\n\n      \/\/max layers\n\n      if (e5.val() > value.max_count_of_layers) {\n        console.log(key + \"max_count_of_layers Restrictions = true\" + e5.val() + ' > ' + value.max_count_of_layers);\n        restrictions = true;\n\n      }\n\n\n      if (restrictions == false) {\n        console.log(\"no restrictions found exit loop (\" + key + \")\");\n\n        return false;\n\n      } else {\n\n        disablearray.push(key);\n\n        \/\/console.log(  key +\" restrictions found --> continue\"  );\t\t\n        restrictions = false; \/\/reset value for next loop\t\t\t\n      }\n\n\n    });\n\n    \/\/ Disable \/ enable options\n\n    \/\/add errors if necceasry\n\n\n    jQuery(\"#orderform\").trigger(\"check_number_of_holes\");\n\n\n\n    disableOption(disablearray);\n\n  }\n\n  \/*         if(pnx_ <60 || pnx_ >360 || pnx_.toString()==\"NaN\") {\n                  error(pnx.closest('.form-group'),'Sallittu X koko, min: 60 mm, max: 360 mm');\n  \t\t\t\tpnx.parent('.input-group').addClass('has-error');*\/\n\n\n  \/\/jQuery(this).closest('.form-group').children('.error').remove();\n  \/\/jQuery(this).parentsUntil('.form-group').removeClass('has-error');\n  \/\/alert(\"error\");\n\n\n  function size_of_order() {\n    console.log(\"size_of_order\");\n\n    var order_size = 0;\n    \/\/ get order[PlatX] and order[PlatY]\n    var PlatX = jQuery(\"#orderform input[name='order[PlatX]']\").val();\n    var PlatY = jQuery(\"#orderform input[name='order[PlatY]']\").val();\n    var cn = jQuery(\"#orderform input[name='order[Cnt]']\").val();\n\n    console.log(\"cn: \" + cn);\n\n\n    var PlatXPanel = jQuery(\"#orderform input[name='order[PlatXPanel]']\").val();\n    var PlatYPanel = jQuery(\"#orderform input[name='order[PlatYPanel]']\").val();\n\n    \/\/convert to float\n    PlatXPanel = parseFloat(PlatXPanel);\n    PlatYPanel = parseFloat(PlatYPanel);\n\n    \/\/restict to two decimals\n    jQuery(\"#orderform input[name='order[PlatXPanel]']\").val(PlatXPanel.toFixed(2));\n    jQuery(\"#orderform input[name='order[PlatYPanel]']\").val(PlatYPanel.toFixed(2));\n\n    var CntLeib = jQuery(\"#orderform input[name='order[CntLeib]']\").val();\n\n    CntLeib = parseInt(CntLeib);\n    cn = parseInt(cn);\n\n    \/\/resets the error message\n    jQuery(\"#orderform input[name='order[Cnt]']\").closest('.form-group').children('.notice, .error').remove();\n\n\n    \/\/check that values are not empty\n\n    if (jQuery(\"#orderform select[name='order[Leib]']\").val() == '0') {\n      \/*IF PANEL NO = Dimension of single PCB  * number of pcbs in total.*\/\n      var dimension = PlatX * PlatY;\n\n      \/\/check that values are not empty\n      if (PlatX.length != 0 && PlatY.length != 0 && cn.length != 0) {\n        order_size = (((PlatX * PlatY) * cn));\n      }\n\n    } else {\n\n      \/*panel dimension * totals pcbs \/ total pcbs in panel.*\/\n\n      \/\/check that values are not empty\n\n      if (PlatXPanel.length != 0 && PlatYPanel.length != 0 && cn.length != 0 && CntLeib.length != 0) {\n\n        order_size = ((((PlatXPanel * PlatYPanel) * cn) \/ CntLeib));\n\n        console.log(PlatXPanel, PlatYPanel, cn, CntLeib);\n\n      }\n    }\n\n\n    if ((order_size \/ 10000) > 33) {\n      error(jQuery(\"#orderform input[name='order[Cnt]']\").closest('.form-group'), 'Levyjen maksimi alue per tilaus on 33dm2. Nykyinen tilaus on: ' + (Math.round(order_size) \/ 10000) + 'dm<sup>2<\/sup>. ' + 'Ota yhteytt&auml; myyntitiimiin suuremmista tilauksista &lt;a href=&quot;mailto:sales@brandner.ee&quot;&gt; sales@brandner.ee &lt;\/a&gt;.');\n      \/\/jQuery(this).addClass('has-error');\n      jQuery(\"#orderform input[name='order[Cnt]']\").parentsUntil('.form-group').addClass('has-error');\n\n    }\n\n\n    return order_size;\n  }\n\n\n  function trigger_calc() {\n    \/\/console.log('trigger_calc') \/\/Delete this\n\n    jQuery(\"#orderform\").off(\"change\", \"input, select\", trigger_calc);\n\n    \/\/Ignore file error for this calculation\n    if (jQuery(\".error:visible:not(#insidemyfiles .error):not(#errors-alert)\").length == 0) {\n      \/\/ if(jQuery(\".error:visible\").length == 0){\n      jQuery(\"#orderform\").trigger(\"calculate_price\");\n    } else {\n      \/\/clear prce\t\n      jQuery(\"#pricedisplay\").val('');\n    }\n\n\n    jQuery(\"#orderform\").on(\"change\", \"input, select\", trigger_calc);\n  }\n\n\n  \/**\n   * individual_mandatory_field_check\n   *\n   *  \/\/basic error check, see if an idivudual field is required\n   *\/\n\n\n  jQuery(\"#orderform\").on(\"change\", \"input, select\", individual_mandatory_field_check);\n\n  function individual_mandatory_field_check() {\n\n    console.log(\"individual_mandatory_field_check\");\n\n\n    if (jQuery(this).is('[isreq]')) {\n\n\n      jQuery(this).closest('.form-group').children('.mand-error').remove();\n\n      jQuery(this).parentsUntil('.form-group').removeClass('has-error');\n\n      if (jQuery(this).val().length == 0) {\n\n        \/\/ jQuery(this).closest('.form-group').children('.notice, .error').remove();\t\n\n        \/\/ jQuery(this).parentsUntil('.form-group').removeClass('has-error');\n\n\n        error2(jQuery(this).closest('.form-group'), 'Kentt&auml; on pakollinen', 'mand-error');\n        \/\/jQuery(this).addClass('has-error');\n        jQuery(this).parentsUntil('.form-group').addClass('has-error');\n      } else {\n\n        \/\/ remove mandatory field error \n        \/\/ if( jQuery(this).closest('.form-group').children(' .error').html() === 'Kentt&auml; on pakollinen' ) {\n\n\n\n        \/\/ jQuery(this).closest('.form-group').children(' .error').remove();\t\n\n        \/\/ jQuery(this).parentsUntil('.form-group').removeClass('has-error');\n\n        \/\/ \t\/\/ jQuery('#errors-alert').remove()\n\n\n        \/\/    }\n\n      }\n    }\n\n\n\n  }\n\n\n\n\n\n\n\n  \/**\n   * mandatory_field_check\n   *\n   *  \/\/basic error check, see if the all the field are mandetory nad contains data\n   *\/\n\n\n  function mandatory_field_check() {\n    \/\/console.log('#orderform.on(mandatory_field_check)') \/\/Delete this\n    \/\/ remove all errors\n\n    \/\/ jQuery('.error').remove();\n    \/\/ jQuery('.has-error').removeClass('has-error');\n\n    \/\/ highlite mandatory fields\n    jQuery(\"#orderform input\").each(function() {\n      \/\/\/\/ console.log('#orderform input.each'+jQuery(this).attr('id')); \/\/Delete this\n      \/\/ validate required fields\n      if (jQuery(this).is('[isreq]')) {\n        jQuery(this).closest('.form-group').find('.mand-error').remove();\n        jQuery(this).parentsUntil('.form-group').removeClass('has-error');\n\n        if (jQuery(this).val().length == 0) {\n          error2(jQuery(this).closest('.form-group'), 'Kentt&auml; on pakollinen', 'mand-error');\n          \/\/jQuery(this).addClass('has-error');\n          jQuery(this).parentsUntil('.form-group').addClass('has-error');\n        } else {\n\n        }\n      }\n    });\n\n\n  }\n\n\n\n\n\n\n  \/**\n   * Document ready\n   *\n   *  init function for the script\n   *\/\n\n\n  jQuery(document).ready(function() {\n    jQuery(\"#view_orderform\").show();\n    view_orderform();\n\n    jQuery(\"#orderform select[name='order[IsBuildUp]']\").val('0').change();\n    \/\/ jQuery(\"#orderform select[name='order[SolderResist]']\").val('3').change();\n    \/\/ jQuery(\"#orderform select[name='order[Marking]']\").val('3').change();\n    jQuery(\"#orderform select[name='order[SolderResistColor]']\").change();\n    jQuery(\"#orderform select[name='order[MarkingColor]']\").change();\n\n    \/\/failsafe if browser is refreshed\n    \/\/ jQuery(\"#orderform select[name='order[Coating]']\").change();\n    jQuery(\"#orderform\").on(\"mandatory_field_check\", mandatory_field_check);\n    jQuery(\"#orderform\").on(\"change\", \"input, select\", trigger_calc);\n\n\n\n  });\n\n\n\n\n  (function() {\n    jQuery(\"#genImage\").on('click', generate_image)\n  })()\n\n  \n  function generate_image() {\n    t_cont = jQuery(\"#view_table\")\n    canvas = jQuery(\"<canvas><\/canvas>\")\n    canvas_el = canvas[0]\n    \/\/ canvas_el.width = t_cont.outerWidth()\n    canvas_el.width = 875\n    \/\/ canvas_el.width = \n    \/\/ console.log(t_cont.outerHeight(), t_cont.outerHeight()*1.05)\n    \/\/ canvas_el.height = t_cont.outerHeight()*1.05\n    canvas_el.height = t_cont.outerHeight() * 0.80\n\n    css = \"<style>body {    font-size: 16px;    color: #1a1749;    line-height: 1.6;    letter-spacing: 0.5px;    font-family: 'Rubik', sans-serif;}.table {    width: 100%;    max-width: 100%;    border-spacing: 0;    border-collapse: collapse;}.orange {    background-color: #fc7e00;}.yellow {    background-color: #fcec00;}.gray {    background-color: #d4d4d4;}th {    text-align: left;    line-height: 1.42857143;}table th.b {    border: 1px solid darkgrey;    padding: 2px;}table td{    text-align: center;    padding: 8px;    line-height: 1.42857143;    vertical-align: top;    border-top: 1px solid #ddd;}table td.b {    border: 1px solid darkgrey;    padding: 2px;}.align-right{    text-align: right;}<\/style>\"\n    def = jQuery.Deferred();\n    rasterizeHTML.drawHTML(t_cont.html() + css, canvas_el).then(function(result) {\n      jQuery(\".protoshop\").append(canvas)\n      def.resolve(canvas_el.toDataURL())\n    }, function(e) {\n      console.log('An error occured:', e);\n    });\n\n    return def.promise()\n  }\n\n  (function() {\n    \/\/ jQuery(\"#orderform\").on('submit', form_generate_image)\n\n    jQuery('document').ready(function() {\n      jQuery(\"#pakform\").on('submit', save_buildup_table)\n    })\n    jQuery(\"#orderform\").on('submit', save_impedance_data)\n  })()\n\n  function form_generate_image(evt) {\n    evt.preventDefault()\n    form = jQuery(this)\n    generate_image().done(function(data) {\n      form.off('submit', form_generate_image)\n      jQuery(\"#buildImage\").val(data)\n      form.submit()\n    })\n    \/\/ console.log(form)\n  }\n\n  table_saved = false\n\n  function save_buildup_table(evt) {\n    \/\/ if(table_saved){\n    \/\/     return\n    \/\/ }\n    \/\/console.log('save_buildup_table') \/\/Delete this\n    \/\/ evt.preventDefault()\n    t_cont = jQuery(\"#view_table\").clone()\n    t_cont.find('input.impedance-input.manual-input').each(function() {\n      var val = jQuery(this).val()\n      var parent = jQuery(this).parent()\n      jQuery(this).prop('type', 'hidden')\n      parent.append(val)\n    })\n    \/\/ t_cont.find('select.impedance-input.manual-input option:selected').each(function(){\n    t_cont.find('select.impedance-input.layer-type').each(function(index, value) {\n      var val = jQuery(jQuery(\"#view_table select.impedance-input.layer-type option:selected\")[index]).html()\n      \/\/ var val = jQuery(this).html()\n      var parent = jQuery(this).parents('td')\n      parent.children('select').css({\n        display: 'none'\n      })\n      parent.append(val)\n    })\n    css = \"<style>body {    font-size: 16px;    color: #1a1749;    line-height: 1.6;    letter-spacing: 0.5px;    font-family: 'Rubik', sans-serif;}.table {    width: 100%;    max-width: 100%;    border-spacing: 0;    border-collapse: collapse;}.orange {    background-color: #fc7e00;}.yellow {    background-color: #fcec00;}.gray {    background-color: #d4d4d4;}th {    text-align: left;    line-height: 1.42857143;}table th.b {    border: 1px solid darkgrey;    padding: 2px;}table td{    text-align: center;    padding: 8px;    line-height: 1.42857143;    vertical-align: top;    border-top: 1px solid #ddd;}table td.b {    border: 1px solid darkgrey;    padding: 2px;}.align-right{    text-align: right;}<\/style>\"\n    t_html = t_cont.html()\n    encoded_t_html = encodeURIComponent(t_html)\n    jQuery(\"#buildTable\").val(encoded_t_html)\n\n    \/\/ jQuery('#table_col').append(t_cont)\n    \/\/ jQuery(this).submit()\n    table_saved = true\n  }\n\n  function save_impedance_data(evt) {\n    \/\/console.log('save_impedance_data') \/\/Delete this\n    if (0 == jQuery(\"#calc_imp_check:checked\")) {\n      return;\n    }\n    jQuery(\".impedance-submit\").remove()\n\n    jQuery(\"#orderform\").append('<input name=\"proto-imp-calc\" type=\"hidden\" value=\"1\" class=\"impedance-submit\">')\n    var fields = get_imp_data()\n    fields.forEach(function(element) {\n      jQuery(\"#orderform\").append('<input name=\"' + element.name + '\" type=\"hidden\" value=\"' + element.value + '\" class=\"impedance-submit\">')\n    });\n  }\n  \/\/ var input = document.getElementById(\"input\"),\n  \/\/     canvas = document.getElementById(\"canvas\"),\n  \/\/     template = document.getElementById(\"template\"),\n  \/\/     oldText = input.value;\n\n  \/\/ var draw = function () {\n  \/\/     rasterizeHTML.drawHTML(input.value, canvas).then(function (result) {\n  \/\/         console.log(result);\n  \/\/     }, function (e) {\n  \/\/         console.log('An error occured:', e);\n  \/\/     });\n  \/\/ };\n\n  \/\/ input.onkeyup = function () {\n  \/\/     if (input.value !== oldText) {\n  \/\/         oldText = input.value;\n  \/\/         canvas.getContext(\"2d\").clearRect(0, 0, canvas.width, canvas.height);\n\n  \/\/         draw();\n  \/\/     }\n  \/\/ };\n\n  \/\/ if (!input.value) {\n  \/\/     input.value = template.innerHTML.replace(\/^ {8}\/gm, \"\").replace(\/^\\n\/g, \"\").replace(\/\\n +$\/g, \"\\n\");\n  \/\/ }\n  \/\/ draw();\n  function check_submit_errors(evt) {\n    console.log('Checking if submit errors have been corrected');\n    errors = jQuery('#orderform .error:not(#errors-alert):visible')\n    console.log('Num errors: ' + errors.length)\n    if (0 == errors.length) {\n      jQuery('#errors-alert').remove();\n      \/\/ jQuery('#orderform').off('change', 'input, select', check_submit_errors);\n    }\n  }\n<\/script>\n<script type=\"text\/javascript\">\n  \/\/ Warn if overriding existing method\n  if (Array.prototype.equals)\n    console.warn(\"Overriding existing Array.prototype.equals. Possible causes: New API defines the method, there's a framework conflict or you've got double inclusions in your code.\");\n  \/\/ attach the .equals method to Array's prototype to call it on any array\n  Array.prototype.equals = function(array) {\n    \/\/ if the other array is a falsy value, return\n    if (!array)\n      return false;\n\n    \/\/ compare lengths - can save a lot of time\n    if (this.length != array.length)\n      return false;\n\n    for (var i = 0, l = this.length; i < l; i++) {\n      \/\/ Check if we have nested arrays\n      if (this[i] instanceof Array && array[i] instanceof Array) {\n        \/\/ recurse into the nested arrays\n        if (!this[i].equals(array[i]))\n          return false;\n      } else if (this[i] != array[i]) {\n        \/\/ Warning - two different object instances will never be equal: {x:20} != {x:20}\n        return false;\n      }\n    }\n    return true;\n  }\n  \/\/ Hide method from for-in loops\n  Object.defineProperty(Array.prototype, \"equals\", {\n    enumerable: false\n  });\n\n  (function() {\n    jQuery('#calc_price').on('click', brnr_calc_price)\n    view_pakform()\n\n    jQuery(\"#calc_imp_check\").on('change', function() {\n      \/\/ console.log(\"Impedances changed\")\n      \/\/ jQuery(\"#pakform\").trigger(\"generate_view\")\n    })\n    jQuery(\"#orderform\").on(\"submit_validation\", check_name_or_company);\n    jQuery('#orderform').on('submit_validation', company_name_validity_check);\n    jQuery('#orderform').on('submit_validation', contact_person_validity_check);\n    jQuery('#orderform').on('submit_validation', email_validity_check);\n    jQuery('#orderform').on('submit_validation', phone_validity_check);\n\n  })()\n\n  function countUtf8Bytes(s) {\n    var b = 0,\n      i = 0,\n      c\n    for (; c = s.charCodeAt(i++); b += c >> 11 ? 3 : c >> 7 ? 2 : 1);\n    return b\n  }\n\n  price_calc_timeout = null;\n\n  function brnr_maybe_calc_price() {\n    clearTimeout(price_calc_timeout)\n    price_calc_timeout = setTimeout(brnr_calc_price, 500)\n  }\n\n  function brnr_calc_price() {\n    console.log('brnr_calc_price') \/\/Delete this\n    post_data = jQuery('#orderform').serializeArray();\n    post_data.push({\n      name: 'price_calc',\n      value: 1\n    });\n    \/\/ console.log(post_data);\n    jQuery.post(window.location.origin + \"\/wp-json\/brandner\/v1\/calc_price\", post_data, price_calc_callback)\n  }\n\n  function price_calc_callback(data) {\n    \/\/ console.log(data);\n    jQuery(\"#pricedisplay\").val(data.price)\n  }\n\n  function brnr_check_panel_dim() {\n    \/\/ console.log(\"Checking panel dimensions\");\n    Xdim = jQuery(\"#PlatX\").val();\n    Ydim = jQuery(\"#PlatY\").val();\n    if (360 >= Math.max(Xdim, Ydim)) {\n      return \/\/Everything fine\n    } else if (360 < Math.min(Xdim, Ydim)) {\n      alert(\"Short side has to be max 360mm\");\n      if (Math.min(Xdim, Ydim) == jQuery(\"#PlatX\").val()) {\n        jQuery(\"#PlatX\").val(360)\n      } else {\n        jQuery(\"#PlatY\").val(360)\n      }\n    }\n  }\n\n  \/\/ function imp_change(){\n  \/\/     \/\/ console.log(\"Impedances changed\")\n  \/\/     jQuery(\"#pakform\").trigger(\"generate_view\")\n\n  \/\/     jQuery(\"#imp-flag\").remove();\n  \/\/     if(1 == jQuery(\"#calc_imp_check:checked\").length){\n  \/\/         jQuery(\"#orderform\").append('<input id=\"imp-flag\" type=\"hidden\" name=\"is_imp\" value=\"1\" \/>')\n  \/\/     }else{\n\n  \/\/     }\n  \/\/ }\n\n  \/*\n   *   Impedance autocalculation functions\n   *   - Remove existing timeout on input change\n   *   - Add timeout on input change\n   *   - Remove timeout on manual calculate\n   *   - Ajax send input values for calculation\n   *\/\n  jQuery(document).ready(function() {\n    \/\/Set delegated listener on table container\n    jQuery(\"#view_table\").on('change keyup input', \".impedance-input\", imp_change_listener);\n\n    \/\/show file upload input\n    \/\/ jQuery('#panelcraft').on('change', function() {\n    \/\/     jQuery(this).val() == 0 ? jQuery('#insidemyfiles').show() : jQuery('#insidemyfiles').hide();\n    \/\/ });\n\n    jQuery('#fileToUpload').on('change', file_validity_check);\n    jQuery('#pr_req_com_nam').on('change', company_name_validity_check);\n    jQuery('#pr_req_con_per').on('change', contact_person_validity_check);\n    jQuery('#pr_req_con_email').on('change', email_validity_check);\n    jQuery('#pr_req_con_phone').on('change', phone_validity_check);\n    jQuery('.remove-file').on('click', function() {\n      jQuery('#fileToUpload').val('');\n    });\n\n    jQuery('#panelCut').val('frees')\n\n    jQuery('#panelCut').on('change', function(evt) {\n      console.log(\"panelcut changed\")\n    })\n\n    console.log(\"#panelCut val\", jQuery('#panelCut').val())\n  })\n\n  function file_validity_check() {\n    var allowed_filetypes = new Array(\n      \"application\/zip\", \"application\/x-zip\", \"application\/x-zip-compressed\", \"application\/gzip\", \"application\/x-rar-compressed\"\n    )\n\n    var allowed_extensions = new Array(\n      '.zip', '.rar'\n    )\n\n    \/\/this.files[0].size gets the size of your file.\n    \/\/console.log(this.files[0].size);\n    \/\/ var val = jQuery(this).val();\n    \/\/ console.log(val);\n    var file_field = jQuery('#fileToUpload');\n\n    if (file_field.val().length == 0) {\n      console.log('Empty file field');\n      file_field.closest('.form-group').children('.notice, .error').remove();\n\n      file_field.parentsUntil('.form-group').removeClass('has-error');\n      \/\/ notice(file_field.closest('.form-group'),\"Invalid filetype! Accepts .zip .rar\");\n      file_field.closest('.form-group').prepend('<div id=\"file-alert\" class=\"error alert alert-danger\" role=\"alert\">Upload your files - .zip and .rar archives no bigger than 50 Mb accepted.<\/div>');\n      file_field.parents('.input-group').addClass('has-error');\n      return false;\n    }\n\n    var file = file_field[0].files[0]\n    var fileName = file.name;\n    var fileName = fileName.replace(\/\\\\\/g, '\/');\n\n    var fName = fileName.substring(fileName.lastIndexOf('\/') + 1, fileName.lastIndexOf('.'));\n\n    f_ext = fileName.substring(fileName.lastIndexOf('.'));\n    f_ext = f_ext.toLowerCase()\n    \/\/ console.log('File extension is: '+f_ext)\n\n    if (-1 === allowed_extensions.indexOf(f_ext)) {\n      file_field.closest('.form-group').children('.notice, .error').remove();\n\n      file_field.parentsUntil('.form-group').removeClass('has-error');\n      error(file_field.closest('.form-group'), \"Invalid filetype! Accepts .zip .rar\");\n      file_field.parents('.input-group').addClass('has-error');\n\n      file_field.val('');\n      return false;\n    }\n\n\n    \/\/ alert(\"The mime-type of the file is: \"+file.type);\n\n    \/\/ if(-1 === allowed_filetypes.indexOf(file.type)){\n    \/\/     file_field.closest('.form-group').children('.notice, .error').remove();\n\n    \/\/     file_field.parentsUntil('.form-group').removeClass('has-error');\n    \/\/     error(file_field.closest('.form-group'),\"Invalid filetype! Accepts .zip .rar\");\n    \/\/     file_field.parents('.input-group').addClass('has-error');\n\n    \/\/     file_field.val('');\n    \/\/     return false;\n    \/\/ }\n\n\n\n    \/\/ const regex = \/^[^\\\\\\\/:*\"<>|'?]*$\/g;\n    const regex = \/^[^\\\\\\\/:*\"<>|'?]*$\/g;\n    \/\/ var m;\n\n    var checkPregMatch = regex.test(fName);\n\n    \/\/ while ((m = regex.exec(fName)) !== null) {\n    \/\/     \/\/ This is necessary to avoid infinite loops with zero-width matches\n    \/\/     if (m.index === regex.lastIndex) {\n    \/\/         regex.lastIndex++;\n    \/\/     }\n\n    \/\/     \/\/ The result can be accessed through the `m`-variable.\n    \/\/     m.forEach((match, groupIndex) => {\n    \/\/         checkPregMatch = false;\n    \/\/     });\n    \/\/ }\n\n    if (file_field[0].files[0].size > 52428800) {\n      \/\/ if(this.files[0].size > 5) {\n      file_field.closest('.form-group').children('.notice, .error').remove();\n\n      file_field.parentsUntil('.form-group').removeClass('has-error');\n      error(file_field.closest('.form-group'), \"File too large\");\n      file_field.parents('.input-group').addClass('has-error');\n\n      file_field.val('');\n      console.log(\"file too large\");\n      return false;\n    } else if (fName.length > 80) {\n      file_field.closest('.form-group').children('.notice, .error').remove();\n\n      file_field.parentsUntil('.form-group').removeClass('has-error');\n      error(file_field.closest('.form-group'), \"File name is too long, maximum is 80 characters\");\n      file_field.parents('.input-group').addClass('has-error');\n\n      file_field.val('');\n      console.log(\"filename too long\");\n      return false;\n    } else if (checkPregMatch == false) {\n      file_field.closest('.form-group').children('.notice, .error').remove();\n\n      file_field.parentsUntil('.form-group').removeClass('has-error');\n      error(file_field.closest('.form-group'), \"File name contains illegal characters (\\\/:*\u201d<>|\u2019?)\");\n      file_field.parents('.input-group').addClass('has-error');\n      console.log(\"Illegal characters\");\n      return false;\n    } else {\n      file_field.parents('.input-group').removeClass('has-error'); \/\/get the container\n      file_field.closest('.form-group').children('.error').remove();\n      return true;\n    }\n  }\n\n  function check_name_or_company(evt) {\n\n    if (jQuery(\"#pr_req_con_per\").length == 0)\n      return\n\n    evt.preventDefault()\n    console.log('check_name_or_company')\n    var name = jQuery(\"#pr_req_con_per\").val()\n    var com_name = jQuery(\"#pr_req_com_nam\").val()\n\n    jQuery(\".cont_pers_or_comp_name_error\").remove()\n\n    jQuery(\"#pr_req_con_per, #pr_req_com_nam\").parents('.input-group').removeClass('has-error');\n\n    if (\"\" == name && \"\" == com_name) {\n      error2(jQuery(\"#pr_req_con_per\").closest('.form-group'), 'Please enter at least one of Contact Name or Company Name', 'cont_pers_or_comp_name_error')\n      jQuery(\"#pr_req_con_per, #pr_req_com_nam\").parents('.input-group').addClass('has-error');\n      jQuery(\"#pr_req_con_per, #pr_req_com_nam\").on('change', check_name_or_company)\n      return false;\n    } else {\n      jQuery(\"#pr_req_con_per, #pr_req_com_nam\").off('change', check_name_or_company)\n      return true;\n    }\n  }\n\n\n  function company_name_validity_check() {\n    console.log('company_name_validity_check');\n    const regex = \/^[^\\\\\\\/:*\u201d\"<>|\u2019'?]*$\/;\n\n    var company_name_field = jQuery('#pr_req_com_nam');\n\n    if (company_name_field.length == 0)\n      return\n\n    var companyName = company_name_field.val();\n    var checkPregMatchCompanyName = regex.test(companyName);\n\n    if (checkPregMatchCompanyName == false) {\n      company_name_field.closest('.form-group').children('.notice, .error').remove();\n\n      company_name_field.parentsUntil('.form-group').removeClass('has-error');\n      error2(company_name_field.closest('.form-group'), \"Company name contains illegal characters (\\\\\/:*\u201d\\\"<>|\u2019\\'?])\", 'com_name_error');\n      company_name_field.parents('.input-group').addClass('has-error');\n      console.log(\"Illegal characters company name\");\n      return false;\n    } else if (companyName.length > 50) {\n      company_name_field.closest('.form-group').children('.notice, .error').remove();\n\n      company_name_field.parentsUntil('.form-group').removeClass('has-error');\n      error2(company_name_field.closest('.form-group'), \"Company name max length 50 characters\", 'com_name_error');\n      company_name_field.parents('.input-group').addClass('has-error');\n      console.log(\"Company name too long\");\n      return false;\n    } else {\n      company_name_field.parents('.input-group').removeClass('has-error'); \/\/get the container\n      company_name_field.closest('.form-group').children('.com_name_error').remove();\n      return true;\n    }\n  }\n\n\n  function contact_person_validity_check() {\n    if (jQuery(\"#pr_req_con_per\").length == 0)\n      return\n    console.log('contact_person_validity_check');\n    const regex = \/^[^\\'\u2019\"\u201d]*$\/;\n\n    var contact_person_field = jQuery('#pr_req_con_per');\n    var contactPerson = contact_person_field.val();\n    var checkPregMatchContactPerson = regex.test(contactPerson);\n\n    console.log(contactPerson.length);\n    console.log(countUtf8Bytes(contactPerson));\n\n    if (checkPregMatchContactPerson == false) {\n      contact_person_field.closest('.form-group').children('.notice, .error').remove();\n\n      contact_person_field.parentsUntil('.form-group').removeClass('has-error');\n      error2(contact_person_field.closest('.form-group'), \"Contact person contains illegal characters (\\\"')\", 'cont_pers_error');\n      contact_person_field.parents('.input-group').addClass('has-error');\n      console.log(\"Illegal characters contact person\");\n      return false;\n    } else if (contactPerson.length > 30) {\n      contact_person_field.closest('.form-group').children('.notice, .error').remove();\n\n      contact_person_field.parentsUntil('.form-group').removeClass('has-error');\n      error2(contact_person_field.closest('.form-group'), \"Contact person max length 30 characters\", 'cont_pers_error');\n      contact_person_field.parents('.input-group').addClass('has-error');\n      console.log(\"Contact person too long\");\n      return false;\n    } else {\n      contact_person_field.parents('.input-group').removeClass('has-error'); \/\/get the container\n      contact_person_field.closest('.form-group').children('.cont_pers_error').remove();\n      return true;\n    }\n  }\n\n\n  function email_validity_check() {\n\n    if (jQuery(\"#pr_req_con_per\").length == 0)\n      return\n    \/\/const regex = \/^[^\\'\"]*$\/;\n    const regex = \/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$\/;\n    \/\/ var m;\n\n    var email_field = jQuery('#pr_req_con_email');\n    var email = email_field.val();\n    var checkPregMatchEmail = regex.test(email);\n\n    if (checkPregMatchEmail == false) {\n      email_field.closest('.form-group').children('.notice, .error').remove();\n\n      email_field.parentsUntil('.form-group').removeClass('has-error');\n      error2(email_field.closest('.form-group'), \"Email is not valid\", 'email_error');\n      email_field.parents('.input-group').addClass('has-error');\n      console.log(\"Illegal characters email\");\n      return false;\n    } else if (email.length > 50) {\n      email_field.closest('.form-group').children('.notice, .error').remove();\n\n      email_field.parentsUntil('.form-group').removeClass('has-error');\n      error2(email_field.closest('.form-group'), \"Email max length 50 characters\", 'email_error');\n      email_field.parents('.input-group').addClass('has-error');\n      console.log(\"Email too long\");\n      return false;\n    } else {\n      email_field.parents('.input-group').removeClass('has-error'); \/\/get the container\n      email_field.closest('.form-group').children('.email_error').remove();\n      return true;\n    }\n  }\n\n\n  function phone_validity_check() {\n\n    if (jQuery(\"#pr_req_con_per\").length == 0)\n      return\n    const regex = \/^[^\\'\u2019\"\u201d]*$\/;\n    \/\/ var m;\n\n    var phone_field = jQuery('#pr_req_con_phone');\n    var phone = phone_field.val();\n    var checkPregMatchPhone = regex.test(phone);\n\n    if (checkPregMatchPhone == false) {\n      phone_field.closest('.form-group').children('.notice, .error').remove();\n\n      phone_field.parentsUntil('.form-group').removeClass('has-error');\n      error2(phone_field.closest('.form-group'), \"Phone contains illegal characters (\\\"')\", 'phone_error');\n      phone_field.parents('.input-group').addClass('has-error');\n      console.log(\"Illegal characters phone\");\n      return false;\n    } else if (phone.length > 30) {\n      phone_field.closest('.form-group').children('.notice, .error').remove();\n\n      phone_field.parentsUntil('.form-group').removeClass('has-error');\n      error2(phone_field.closest('.form-group'), \"Phone length 30 characters\", 'phone_error');\n      phone_field.parents('.input-group').addClass('has-error');\n      console.log(\"Phone too long\");\n      return false;\n    } else {\n      phone_field.parents('.input-group').removeClass('has-error'); \/\/get the container\n      phone_field.closest('.form-group').children('.phone_error').remove();\n      return true;\n    }\n  }\n\n  \/\/Variable to hold timeout reference\n  var imp_calc_to = null\n\n  function imp_change_listener(evt) {\n    \/\/Clear Timeout in progress if any\n    \/\/ console.log('pre-cancel', imp_calc_to)\n    cancel_imp_timeout()\n    \/\/Set new timeout\n    \/\/ console.log('post-cancel', imp_calc_to)\n    imp_calc_to = setTimeout(get_imp_calc, 1000)\n    set_result_loading_notice();\n  }\n\n  function cancel_imp_timeout() {\n    \/\/Clear Timeout in progress if any\n    \/\/ console.log('caneclling', imp_calc_to)\n    clearTimeout(imp_calc_to)\n    remove_result_loading_notice();\n  }\n\n  function get_imp_calc() {\n\n    \/\/Collate PCB data\n    post_data = get_imp_data()\n    $resp = jQuery.post(rest_base + 'calc_imp', post_data, imp_response_handler)\n    jQuery('#pakform .submit_button').prop('disabled', 'disabled')\n    return true\n  }\n\n  function imp_response_handler(data, status, jqXHR) {\n    remove_result_loading_notice();\n    \/\/console.log(data)\n    sl_imps = data.signal_layer_impedances\n    \/\/ console.log(sl_imps)\n    jQuery(\"select[name^='impedance']\").each(function(element) {\n      var type = jQuery(this).val()\n      \/\/If signal layer (type 1) get the impedances\n\n      if (1 == type) {\n        \/\/ var layer_imps = sl_imps.shift()\n        var index = jQuery(this).data('index')\n        if (sl_imps['layer_index_' + index]) {\n          layer_imps = sl_imps['layer_index_' + index]\n          if (layer_imps) {\n            var row = jQuery(this).closest('tr')\n            \/\/ console.log(layer_imps)\n            \/\/ var imp_types = layer_imps.keys()\n\n            if (layer_imps.Z0) {\n              row.children('.z0').html('<span class=\"result\">' + Math.round(layer_imps.Z0 * 100) \/ 100) + '<\/span>'\n            }\n            if (layer_imps.Zdiff) {\n              row.children('.zdiff').html('<span class=\"result\">' + Math.round(layer_imps.Zdiff * 100) \/ 100) + '<\/span>'\n            }\n            if (layer_imps.Zdbs) {\n              row.children('.zdbs').html('<span class=\"result\">' + Math.round(layer_imps.Zdbs * 100) \/ 100) + '<\/span>'\n            }\n          }\n        }\n      }\n\n    })\n    var flag = jQuery(\"#imp-flag\");\n    if (flag) {\n      console.log('flag')\n      if (0 != sl_imps.length) {\n        console.log('slimps')\n        flag.val(1)\n      } else {\n        console.log('no slimps')\n        flag.val(0)\n      }\n    }\n    add_imp_flag_field()\n    brnr_calc_price()\n    jQuery('#pakform .submit_button').removeProp('disabled')\n  }\n\n  function get_imp_data() {\n    \/\/ pcb_rows = jQuery(\".pcb-layer\")\n    \/\/ pcb_layer_data = [];\n    \/\/ pcb_rows.each(function(i, item){\n    \/\/     layer_data = {}\n\n    \/\/     layer = jQuery(item)\n    \/\/     layer_name = layer.data('layer')\n\n    \/\/     pcb_layer_data.push(layer_data)\n    \/\/ })\n    impedance_inputs = jQuery(\".impedance-input\")\n    impedance_data = impedance_inputs.serializeArray()\n    return impedance_data\n  }\n\n  function set_result_loading_notice() {\n    \/\/ console.log(\"Spin\")\n    jQuery(\"#view_table\").find('.result-cell').empty();\n    jQuery(\"#view_table\").find('.result-cell.signal').html('<i class=\"fa fa-spinner fa-spin\"><\/i>');\n  }\n\n  function remove_result_loading_notice() {\n    jQuery(\"#view_table\").find('.result-cell').empty();\n  }\n\n  function old_check_buildup_symmetry() {\n\n    jQuery(\"#pakform\").children('.notice').remove()\n    var buildup_arr = new Array();\n    var buildup_val_arr = new Array();\n    jQuery(\"#pakform select[name='pak[Layers][]']:visible\").each(function(index) {\n      buildup_arr.push(this)\n      buildup_val_arr.push(jQuery(this).val())\n    });\n    \/\/ console.log(buildup_arr)\n    if (1 == buildup_arr.length) {\n      return; \/\/Single layer (2 Cu layer) boards don't have symmetry to validate\n    }\n\n    \/\/ if(0 == buildup_arr.length%2){\n    \/\/     \/\/If even number of leyers -> no middle layer to be symmetric around\n    \/\/     notice(jQuery(\"#pakform .submit_button\").closest('.frow'), \"Asymmetric buildup: uneven number of rows\")\n    \/\/     return\n    \/\/ }\n\n    console.log(buildup_val_arr);\n\n    symmetry_length = Math.floor(buildup_arr.length \/ 2)\n\n    upper_val_arr = buildup_val_arr.slice(0, symmetry_length)\n    lower_val_arr = buildup_val_arr.slice(-symmetry_length)\n    lower_val_arr = lower_val_arr.reverse()\n\n    console.log(upper_val_arr.equals(lower_val_arr));\n\n    \/\/if(!sym_compare_arrs(upper_val_arr,lower_val_arr)){\n    if (!upper_val_arr.equals(lower_val_arr)) {\n      jQuery(\"#buildup-sym-flag\").remove()\n      notice(jQuery(\"#pakform .submit_button\").closest('.frow'), \"Asymmetric buildup: not same materials on both side\")\n      jQuery(\"#orderform\").append('<input id=\"buildup-sym-flag\" name=\"order[asym_buildup]\" type=\"hidden\" value=\"true\">')\n      return\n    } else {\n      jQuery(\"#buildup-sym-flag\").remove()\n      jQuery(\"#orderform\").append('<input id=\"buildup-sym-flag\" name=\"order[asym_buildup]\" type=\"hidden\" value=\"false\">')\n    }\n  }\n\n  function check_buildup_symmetry() {\n\n    jQuery(\"#pakform\").children('.notice').remove()\n    var buildup_arr = new Array();\n    var buildup_val_arr = new Array();\n    var preg = false;\n    var preg_prev = false;\n    var preg_ths = 0;\n    jQuery(\"#pakform select[name='pak[Layers][]']:visible\").each(function(index) {\n      var layer = layers[jQuery(this).val()];\n      preg = (2 == layer.categorie || 3 == layer.categorie) ? true : false;\n      if (preg) {\n        preg_ths += parseFloat(layer.thick)\n      } else if (preg_prev) {\n        buildup_arr.push(preg_ths)\n        preg_ths = 0\n        buildup_arr.push(jQuery(this).val())\n      } else {\n        buildup_arr.push(jQuery(this).val())\n      }\n      \/\/ buildup_val_arr.push(jQuery(this).val())\n      preg_prev = preg;\n    });\n    \/\/ console.log(buildup_arr)\n    if (1 == buildup_arr.length) {\n      return; \/\/Single layer (2 Cu layer) boards don't have symmetry to validate\n    }\n\n    console.log(buildup_arr)\n    \/\/ if(0 == buildup_arr.length%2){\n    \/\/     \/\/If even number of leyers -> no middle layer to be symmetric around\n    \/\/     notice(jQuery(\"#pakform .submit_button\").closest('.frow'), \"Asymmetric buildup: uneven number of rows\")\n    \/\/     return\n    \/\/ }\n\n    \/\/ console.log(buildup_val_arr);\n\n    symmetry_length = Math.floor(buildup_arr.length \/ 2)\n\n    upper_val_arr = buildup_arr.slice(0, symmetry_length)\n    lower_val_arr = buildup_arr.slice(-symmetry_length)\n    lower_val_arr = lower_val_arr.reverse()\n\n    \/\/ console.log(upper_val_arr.equals(lower_val_arr));\n\n    \/\/if(!sym_compare_arrs(upper_val_arr,lower_val_arr)){\n    if (!upper_val_arr.equals(lower_val_arr)) {\n      jQuery(\"#buildup-sym-flag\").remove()\n      notice(jQuery(\"#pakform .submit_button\").closest('.frow'), \"Asymmetric buildup: not same materials on both side\")\n      jQuery(\"#orderform\").append('<input id=\"buildup-sym-flag\" name=\"order[asym_buildup]\" type=\"hidden\" value=\"true\">')\n      return\n    } else {\n      jQuery(\"#buildup-sym-flag\").remove()\n      jQuery(\"#orderform\").append('<input id=\"buildup-sym-flag\" name=\"order[asym_buildup]\" type=\"hidden\" value=\"false\">')\n    }\n  }\n\n  function sym_compare_arrs(array1, array2) {\n    var arrays_same_elements = true;\n\n    array1.forEach(function(element) {\n      if (-1 == array2.indexOf(element)) {\n        arrays_same_elements = false\n      }\n    })\n\n    array2.forEach(function(element) {\n      if (-1 == array1.indexOf(element)) {\n        arrays_same_elements = false\n      }\n    })\n\n    return arrays_same_elements\n  }\n\n  function check_prepreg_thickness() {\n    var prepreg_ths = 0;\n    var prev_inner;\n    jQuery(\"#pakform select[name='pak[Layers][]']:visible\").each(function(index) {\n      curr_layer = jQuery(this)\n      layer_id = jQuery(this).val()\n      \/\/If is prepreg tally up thickness\n      if (curr_layer.hasClass('pak_vk')) {\n        prepreg_ths += parseFloat(layers[layer_id].thick)\n      }\n\n      is_inner = curr_layer.hasClass('pak_sk')\n      is_last_outer = curr_layer.prop(\"id\") == 'bottomfool'\n\n      too_thin = false\n      if (is_inner || is_last_outer) {\n        if (is_inner) {\n          \/\/Check if current inner needs thick\n          if (70 <= layers[layer_id].cuthick) {\n            too_thin = prepreg_ths < 0.2\n            \/\/prepreg_ths = 0 \/\/Reset prepreg tally\n          }\n          \/\/Check if previous inner needs thick\n          if (prev_inner) {\n            if (70 <= layers[jQuery(prev_inner).val()].cuthick) {\n              too_thin = prepreg_ths < 0.2\n              \/\/prepreg_ths = 0 \/\/Reset prepreg tally\n            }\n          }\n          prepreg_ths = 0 \/\/Reset prepreg tally\n          prev_inner = curr_layer\n        }\n        if (is_last_outer) {\n          \/\/Check if previous inner needs thick\n          if (70 <= layers[jQuery(prev_inner).val()].cuthick) {\n            too_thin = prepreg_ths < 0.2\n          }\n        }\n      }\n      if (too_thin) {\n        error(jQuery(last_visible_layer).closest('.frow'), \"For 70\u00b5 copper in innerlayer please use at two layers of prepreg combined from 2116 or 7628.\")\n      }\n      last_visible_layer = curr_layer\n    })\n  }\n<\/script>\n<p><strong>NB! Price offer will be made based on the information you have inserted into the web form. Make sure you have added correct information about the gerbers and requirements before sending your request!<br \/>\nFiles will be checked after you have placed an order &#8211; if the data in the files do not match with the web input offer will be redone based on true data.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>NB! IF YOUR DESIGN CONTAINS BLIND\/BURIED VIAS, PLATED EDGE, BLIND MILLING, SET\/PANEL FROM DIFFERENT BOARDS, HALF-CUT HOLES, OTHER SPECIAL FEATURES OR THE ASPECTS YOU DO NOT FIND FROM THIS FORM, PLEASE SEND YOUR REQUEST VIA E-MAIL to sales@brandner.ee. &nbsp; NB! Price offer will be made based on the information you have inserted into the web &hellip;<\/p>\n","protected":false},"author":31,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"termplate-protoshop.php","meta":{"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kysy Hintatarjousta - Brandner<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kysy Hintatarjousta - Brandner\" \/>\n<meta property=\"og:description\" content=\"NB! IF YOUR DESIGN CONTAINS BLIND\/BURIED VIAS, PLATED EDGE, BLIND MILLING, SET\/PANEL FROM DIFFERENT BOARDS, HALF-CUT HOLES, OTHER SPECIAL FEATURES OR THE ASPECTS YOU DO NOT FIND FROM THIS FORM, PLEASE SEND YOUR REQUEST VIA E-MAIL to sales@brandner.ee. &nbsp; NB! Price offer will be made based on the information you have inserted into the web &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/\" \/>\n<meta property=\"og:site_name\" content=\"Brandner\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-25T08:05:27+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Arvioitu lukuaika\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuutti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/\",\"url\":\"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/\",\"name\":\"Kysy Hintatarjousta - Brandner\",\"isPartOf\":{\"@id\":\"https:\/\/www.brandner.ee\/#website\"},\"datePublished\":\"2017-08-18T07:20:44+00:00\",\"dateModified\":\"2020-06-25T08:05:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/#breadcrumb\"},\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.brandner.ee\/fi\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kysy Hintatarjousta\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.brandner.ee\/#website\",\"url\":\"https:\/\/www.brandner.ee\/\",\"name\":\"Brandner\",\"description\":\"PCB manufacturing\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.brandner.ee\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fi\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kysy Hintatarjousta - Brandner","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/","og_locale":"fi_FI","og_type":"article","og_title":"Kysy Hintatarjousta - Brandner","og_description":"NB! IF YOUR DESIGN CONTAINS BLIND\/BURIED VIAS, PLATED EDGE, BLIND MILLING, SET\/PANEL FROM DIFFERENT BOARDS, HALF-CUT HOLES, OTHER SPECIAL FEATURES OR THE ASPECTS YOU DO NOT FIND FROM THIS FORM, PLEASE SEND YOUR REQUEST VIA E-MAIL to sales@brandner.ee. &nbsp; NB! Price offer will be made based on the information you have inserted into the web &hellip;","og_url":"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/","og_site_name":"Brandner","article_modified_time":"2020-06-25T08:05:27+00:00","twitter_card":"summary_large_image","twitter_misc":{"Arvioitu lukuaika":"1 minuutti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/","url":"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/","name":"Kysy Hintatarjousta - Brandner","isPartOf":{"@id":"https:\/\/www.brandner.ee\/#website"},"datePublished":"2017-08-18T07:20:44+00:00","dateModified":"2020-06-25T08:05:27+00:00","breadcrumb":{"@id":"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/#breadcrumb"},"inLanguage":"fi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.brandner.ee\/fi\/kysy-hintatarjousta\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.brandner.ee\/fi\/"},{"@type":"ListItem","position":2,"name":"Kysy Hintatarjousta"}]},{"@type":"WebSite","@id":"https:\/\/www.brandner.ee\/#website","url":"https:\/\/www.brandner.ee\/","name":"Brandner","description":"PCB manufacturing","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.brandner.ee\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fi"}]}},"_links":{"self":[{"href":"https:\/\/www.brandner.ee\/fi\/wp-json\/wp\/v2\/pages\/1034"}],"collection":[{"href":"https:\/\/www.brandner.ee\/fi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.brandner.ee\/fi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.brandner.ee\/fi\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/www.brandner.ee\/fi\/wp-json\/wp\/v2\/comments?post=1034"}],"version-history":[{"count":11,"href":"https:\/\/www.brandner.ee\/fi\/wp-json\/wp\/v2\/pages\/1034\/revisions"}],"predecessor-version":[{"id":8149,"href":"https:\/\/www.brandner.ee\/fi\/wp-json\/wp\/v2\/pages\/1034\/revisions\/8149"}],"wp:attachment":[{"href":"https:\/\/www.brandner.ee\/fi\/wp-json\/wp\/v2\/media?parent=1034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}