1var SKN_FORM_ERRORS = { 2 required: "This field is required.", 3 checkbox_required: "You must tick this box", 4}; 5 6///////////////////////////// 7//READY FUNC 8///////////////////////////// 9 10$(window) 11 .on("onSknReady", function () { 12 sknFormReady(); 13 }) 14 .on("onSknSiteReady", function () { 15 sknFormSiteReady(); 16 }) 17 .on("onSknPageReady", function () { 18 sknFormReady(); 19 }); 20 21//document ready 22function sknFormReady() { 23 //remove any inline height left from editor 24 $(".skn-inline.sknform").css("height", ""); 25 $(".sknform .onsubmit").append( 26 '<span></span><a class="retrunBtn" href="javascript:void;">Refresh Form</a>' 27 ); 28 $(".sknform form").on("submit", function (event) { 29 _onFormSend($(this).closest("form")); 30 event.preventDefault(); 31 _sknFormHeightChange($(this)); 32 return false; 33 }); 34 $(".sknform .retrunBtn").on("click", function () { 35 $(this).closest(".sknform").toggleClass("submitted", false); 36 _toggleFormMessage($(this).closest(".sknform"), "", false); 37 _sknFormHeightChange($(this)); 38 return false; 39 }); 40} 41 42function sknFormMandatoryCheckboxes() {} 43 44function sknLightboxForm() { 45 //remove any inline height left from editor 46 $(".pagelightbox .skn-inline.sknform").css("height", ""); 47 $(".pagelightbox .sknform .onsubmit").append( 48 '<span></span><a class="retrunBtn" href="javascript:void;">Refresh Form</a>' 49 ); 50 $(".pagelightbox .sknform form").on("submit", function (event) { 51 _onFormSend($(this).closest("form")); 52 event.preventDefault(); 53 _sknFormHeightChange($(this)); 54 return false; 55 }); 56 $(".pagelightbox .sknform .retrunBtn").on("click", function () { 57 $(this).closest(".sknform").toggleClass("submitted", false); 58 _toggleFormMessage($(this).closest(".sknform"), "", false); 59 _sknFormHeightChange($(this)); 60 return false; 61 }); 62} 63 64function _sknFormHeightChange(form) { 65 if (form && form.length) { 66 form.closest(".skn-sectiongrid").sknGridForce(); 67 } 68 $(window).trigger("resize"); 69} 70 71//site ready 72function sknFormSiteReady() { 73 onRenderReady(); 74} 75 76function onRenderReady() { 77 var ele = $(".sknform"); 78 if (ele.length && window.parent != undefined) { 79 var dim = { w: ele.width(), h: ele.height() }; 80 window.parent.postMessage( 81 { event: "pready", data: dim, url: window.location + "" }, 82 "*" 83 ); 84 } 85} 86 87function _doFormCheck(form) { 88 var error_class = form.attr("data-error-class"); 89 form.find("span.sknformerror, .sknformbutton span").html(""); 90 var errors = false; 91 form.find(".sknforminputrow[data-req]").each(function () { 92 $(this).find(".sknformerror").remove(); 93 if ( 94 $(this) 95 .find( 96 ".sknforminput > input, .sknforminput > textarea, .sknforminput > select" 97 ) 98 .val() == "" 99 ) { 100 $(this).append( 101 '<span class="sknformerror ' + 102 error_class + 103 '">' + 104 SKN_FORM_ERRORS.required + 105 "</span>" 106 ); 107 errors = true; 108 } else if ( 109 $(this).find('input[type="checkbox"]:not(.sknformcheckboxgroup input)') 110 .length && 111 $(this).find('input[type="checkbox"]:not(.sknformcheckboxgroup input)')[0] 112 .checked === false 113 ) { 114 $(this).append( 115 '<span class="sknformerror checkbox-empty ' + 116 error_class + 117 '">' + 118 SKN_FORM_ERRORS.checkbox_required + 119 "</span>" 120 ); 121 errors = true; 122 } 123 }); 124 _sknFormHeightChange(form); 125 if (errors) { 126 return false; 127 } 128 return true; 129} 130 131function _onFormSend(form) { 132 if (form && form.length && form.is("form") && _doFormCheck(form)) { 133 //TODO send the page id too 134 var acc_id = $("html").classLike("skn-acc-"); 135 var page_id = $("html").classLike("skn-page-"); 136 if (!page_id) { 137 page_id = $("html").classLike("skn-post-"); 138 } 139 if (acc_id && page_id) { 140 acc_id = acc_id.replace("skn-acc-", ""); 141 page_id = page_id.replace("skn-page-", ""); 142 page_id = page_id.replace("skn-post-", ""); 143 144 _toggleSendMode(form, true); 145 var options = { 146 target: form, 147 data: { sknacc: acc_id, "skn-form-page": page_id }, 148 url: form.attr("action") + "sknform", 149 type: "post", 150 dataType: "json", 151 success: _onFormResponse, 152 error: _onFormResponse, 153 }; 154 155 $(form) 156 .find('input[type="checkbox"]') 157 .each(function () { 158 if ($(this).prop("checked")) { 159 options.data[$(this).attr("id")] = "true"; 160 } else { 161 options.data[$(this).attr("id")] = "false"; 162 } 163 }); 164 165 form.ajaxSubmit(options); 166 this._toggleFormMessage(form, '<span id="formpreloader"></span>', false); 167 168 var cl = new CanvasLoader("formpreloader"); 169 //cl.setColor((preloader.css('color')).rgbToHex()); // default is '#000000' 170 cl.setShape("spiral"); // default is 'oval' 171 cl.setDiameter(20); // default is 40 172 cl.setDensity(11); // default is 40 173 cl.setRange(1.4); // default is 1.3 174 cl.setSpeed(1); // default is 2 175 cl.setFPS(14); // default is 24 176 cl.show(); // Hidden by default 177 } else { 178 alert("Sorry, this form is not compatible with your device"); 179 } 180 } 181} 182 183function _onFormResponse(r) { 184 if ( 185 r.success != undefined && 186 r.message != undefined && 187 r.data != undefined && 188 r.data.form_id != undefined 189 ) { 190 var form = $( 191 'input[name="sknform"][value="' + r.data.form_id + '"]' 192 ).closest("form"); 193 var error_class = form.attr("data-error-class"); 194 if (form.length) { 195 if (r.success) { 196 form.closest(".sknform").find(".onsubmit span").html(r.message); 197 form.closest(".sknform").toggleClass("submitted", true); 198 form 199 .find(".sknforminputrow") 200 .find("input, textarea") 201 .not('[type="radio"]') 202 .val(""); 203 if (r.data.redirect !== undefined) { 204 window.location = r.data.redirect; 205 } 206 } else { 207 _toggleFormMessage( 208 form, 209 '<span class="sknformerror ' + 210 error_class + 211 '">' + 212 r.message + 213 "</span>" 214 ); 215 if (r.data.errors != undefined && r.data.errors) { 216 for (var att in r.data.errors) { 217 var i = form.find('input[name="' + att + '"]'); 218 if (i.length) { 219 i.closest(".sknforminputrow") 220 .find("label") 221 .after( 222 '<span class="sknformerror ' + 223 error_class + 224 '">' + 225 r.data.errors[att] + 226 "</span>" 227 ); 228 } 229 } 230 } 231 } 232 _toggleSendMode(form, false); 233 _sknFormHeightChange(form); 234 } 235 } else { 236 $("#formpreloader").remove(); 237 var form = $('input[name="sknform"]').closest("form"); 238 if (form.length) { 239 form 240 .closest(".sknform") 241 .find(".onsubmit span") 242 .html("Sorry, there was a temporary problem sending your message."); 243 form.closest(".sknform").toggleClass("submitted", true); 244 } 245 } 246} 247 248function _toggleFormMessage(form, html) { 249 form.find(".sknformbutton span").remove(); 250 form.find(".sknformbutton").append(html); 251} 252 253function _toggleSendMode(form, b) { 254 form.closest(".sknform").toggleClass("sending", b); 255 if (b) { 256 form.find('input[type="submit"]').attr("disabled", "disabled"); 257 } else { 258 form.find('input[type="submit"]').removeAttr("disabled"); 259 } 260}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.