PageSourceSearch

https://condusiv.com/wp-content/plugins/halfdata-green-popups/js/lepopup.js?ver=7.6.1

js condusiv.com collected 2026-10-02 10:14:40 UTC 122,103 bytes, 2,856 lines download raw bytes

1"use strict";
2var lepopup_vars = {};
3var lepopup_consts = {};
4var lepopup_sending = false;
5var lepopup_popup_loading = false;
6var lepopup_popup_active_id = null;
7var lepopup_campaign_active_slug = null;
8var lepopup_popup_active_page_id = null;
9var lepopup_seq_pages = {};
10var lepopup_signatures = {};
11var lepopup_mobile = (function(a){if(/(android|bb\d+|meego).+mobile|android|ipad|playbook|silk|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))return true; else return false;})(navigator.userAgent||navigator.vendor||window.opera);
12var lepopup_uploads = {};
13var lepopup_sessions = {};
14var lepopup_custom_events_data = {};
15var lepopup_onload_displayed = false;
16var lepopup_onexit_displayed = false;
17var lepopup_onscroll_displayed = false;
18var lepopup_onidle_displayed = false;
19var lepopup_onabd_displayed = false;
20var lepopup_timeout;
21var lepopup_onidle_timer;
22var lepopup_onidle_counter = 0;
23var lepopup_forced_location = null; //linklocker
24
25function lepopup_safe_url(raw) {
26	if (typeof raw !== "string") return "";
27	var trimmed = raw.replace(/[\x00-\x1F\s]+/g, "");
28	try {
29		var u = new URL(trimmed, window.location.origin);
30		if (u.protocol !== "http:" && u.protocol !== "https:") return "";
31		return u.href;
32	} catch (e) {
33		return "";
34	}
35}
36
37var lepopupext_open_before;
38var lepopupext_close_after;
39var lepopupext_submit_after;
40if (typeof lepopup_preview == typeof undefined) {
41	var lepopup_preview = "off";
42}
43if (typeof lepopup_customjs_handlers == typeof undefined) {
44	var lepopup_customjs_handlers = {};
45}
46if (window.jQuery) {
47/*
48	jQuery("a").each(function() {
49		var lepopup_id = jQuery(this).attr("href");
50		if (lepopup_id) {
51			var prefix = "#lepopup-";
52			var lepopup_idx = lepopup_id.indexOf(prefix);
53			if (lepopup_idx >= 0) {
54				jQuery(this).on("click", function(e) {
55					e.preventDefault();
56					return false;
57				});
58			}
59		}
60	});
61*/
62	var now = new Date();
63	lepopup_consts = {
64		"url"			: window.location.href,
65		"page-title"	: jQuery(document).find("title").text(),
66		"ip" 			: "",
67		"user-agent"	: navigator.userAgent,
68		"date"			: now.getFullYear()+"-"+(now.getMonth()+1 < 10 ? "0"+(now.getMonth()+1) : (now.getMonth()+1))+"-"+(now.getDate() < 10 ? "0"+now.getDate() : now.getDate()),
69		"time"			: (now.getHours() < 10 ? "0"+now.getHours() : now.getHours())+":"+(now.getMinutes() < 10 ? "0"+now.getMinutes() : now.getMinutes()),
70		"wp-user-login"	: "",
71		"wp-user-email"	: ""
72	};
73	jQuery(document).ready(function(){
74		if (typeof lepopup_ajax_url != typeof undefined) {
75			lepopup_vars["mode"] = "local";
76			lepopup_vars["cookie-value"] = lepopup_cookie_value;
77			lepopup_vars["ajax-url"] = lepopup_ajax_url;
78			lepopup_vars["overlays"] = lepopup_overlays;
79			lepopup_vars["campaigns"] = lepopup_campaigns;
80			lepopup_vars["ga-tracking"] = lepopup_ga_tracking;
81			lepopup_vars["abd-enabled"] = lepopup_abd_enabled;
82			lepopup_vars["events-data"] = lepopup_events_data;
83			if (typeof lepopup_ulp != typeof undefined && lepopup_ulp == "on") lepopup_vars["ulp-active"] = "on";
84			else lepopup_vars["ulp-active"] = "off";
85			if (lepopup_async_init == 'on') {
86				var inline_slugs = new Array();
87				var i = 0;
88				jQuery(".lepopup-inline").each(function() {
89					var inline_slug = jQuery(this).attr("data-slug");
90					if (inline_slug) {
91						jQuery(this).attr("id", "lepopup-inline-"+i);
92						inline_slugs.push(inline_slug);
93						i++;
94					}
95				});
96				if (lepopup_vars["ulp-active"] == "off") {
97					jQuery(".ulp-inline").each(function() {
98						var inline_slug = jQuery(this).attr("data-id");
99						if (inline_slug) {
100							jQuery(this).attr("id", "lepopup-inline-"+i);
101							inline_slugs.push(inline_slug);
102							i++;
103						}
104					});
105				}
106				var post_data = {"action" : "lepopup-async-init", "inline-slugs" : inline_slugs.join(','), "content-id" : lepopup_content_id, "referrer" : document.referrer, "hostname" : window.location.hostname, "url": window.location.href};
107				if (typeof lepopup_icl_language != typeof undefined) post_data['wpml-language'] = lepopup_icl_language;
108				jQuery.ajax({
109					url: 		lepopup_vars["ajax-url"],
110					data: 		post_data,
111					type: 		"POST",
112					async:		true,
113					success: 	function(return_data) {
114						var data;
115						try {
116							if (typeof return_data == 'object') data = return_data;
117							else data = jQuery.parseJSON(return_data);
118							var status = data.status;
119							if (status == "OK") {
120								lepopup_vars["events-data"] = data["events-data"];
121								if (data["items-html"]) {
122									jQuery("body").append(data["items-html"]);
123								}
124								for (var i=0; i<(data["inline-forms"]).length; i++){
125									jQuery("#lepopup-inline-"+i).replaceWith((data["inline-forms"])[i]);
126								}
127								lepopup_ready();
128							}
129						} catch(error) {
130							console.log(error);
131							lepopup_ready();
132						}
133					},
134					error	: function(XMLHttpRequest, textStatus, errorThrown) {
135						lepopup_ready();
136					}
137				});
138			} else {
139				lepopup_ready();
140			}
141		} else {
142			lepopup_vars["mode"] = "remote";
143			lepopup_vars["events-data"] = {};
144			if (jQuery("#ulp-remote").length > 0) lepopup_vars["ulp-active"] = "on";
145			else lepopup_vars["ulp-active"] = "off";
146			if (jQuery("#lepopup-remote").length == 0 || !jQuery("#lepopup-remote").attr("data-handler")) {
147				alert('Make sure that you properly included lepopup.js. Currently you did not.');
148			}
149			if (jQuery("#lepopup-remote").attr("data-preview") == "on") lepopup_preview = "on";
150			lepopup_vars["ajax-url"] = jQuery("#lepopup-remote").attr("data-handler");
151			jQuery('head').append("<style>#lepopup-ready{display:none;width:0px;height:0px;}</style>");
152			var inline_slugs = new Array();
153			var i = 0;
154			jQuery(".lepopup-inline").each(function() {
155				var inline_slug = jQuery(this).attr("data-slug");
156				if (inline_slug) {
157					jQuery(this).attr("id", "lepopup-inline-"+i);
158					inline_slugs.push(inline_slug);
159					i++;
160				}
161			});
162			if (lepopup_vars["ulp-active"] == "off") {
163				jQuery(".ulp-inline").each(function() {
164					var inline_slug = jQuery(this).attr("data-id");
165					if (inline_slug) {
166						jQuery(this).attr("id", "lepopup-inline-"+i);
167						inline_slugs.push(inline_slug);
168						i++;
169					}
170				});
171			}
172			jQuery('body').append("<div id='lepopup-ready'></div>");
173			jQuery.ajax({
174				url		: 	lepopup_vars['ajax-url'],
175				data	: 	{"action" : "lepopup-remote-init", "inline-slugs" : inline_slugs.join(','), "preview" : lepopup_preview, "hostname" : window.location.hostname},
176				method	:	(lepopup_vars["mode"] == "remote" ? "get" : "post"),
177				dataType:	(lepopup_vars["mode"] == "remote" ? "jsonp" : "json"),
178				async	:	true,
179				success	: function(return_data) {
180					try {
181						var data, temp;
182						if (typeof return_data == 'object') data = return_data;
183						else data = jQuery.parseJSON(return_data);
184						if (data.status == "OK") {
185							lepopup_vars["cookie-value"] = data["cookie-value"];
186							lepopup_vars["overlays"] = data["overlays"];
187							lepopup_vars["campaigns"] = data["campaigns"];
188							lepopup_vars["ga-tracking"] = data["ga-tracking"];
189							lepopup_vars["abd-enabled"] = data["adb-enabled"];
190							lepopup_vars["plugins"] = data["plugins"];
191							for (var i=0; i<(data["inline-forms"]).length; i++){
192								jQuery("#lepopup-inline-"+i).html((data["inline-forms"])[i]);
193							}
194							if (typeof data["resources"]["css"] != 'undefined') {
195								for (var i=0; i<(data["resources"]["css"]).length; i++){
196									jQuery('head').append("<link href='"+(data["resources"]["css"])[i]+"' rel='stylesheet' type='text/css' media='all' />");
197								}
198							}
199							if (typeof data["resources"]["js"] != 'undefined') {
200								for (var i=0; i<(data["resources"]["js"]).length; i++){
201									if (typeof data["resources"]["js"][i] === typeof '') {
202										jQuery('body').append("<script src='"+(data["resources"]["js"])[i]+"' type='text/javascript'></script>");
203									} else if (typeof data["resources"]["js"][i] === typeof {}) {
204										temp = "<script type='text/javascript'";
205										for (var option_key in data["resources"]["js"][i]) {
206											if (data["resources"]["js"][i].hasOwnProperty(option_key)) {
207												temp += " "+lepopup_escape_html(option_key)+"='"+lepopup_escape_html(data["resources"]["js"][i][option_key])+"'";
208											}
209										}
210										temp += "></script>";
211										jQuery('body').append(temp);
212									}
213								}
214							}
215							if (data.hasOwnProperty("consts")) {
216								if (typeof Object.assign == "function") {
217									lepopup_consts = Object.assign(lepopup_consts, data["consts"]);
218								} else {
219									for (var key in data["consts"]) {
220										if (data["consts"].hasOwnProperty(key)) {
221											lepopup_consts[key] = data["consts"][key];
222										}
223									}
224								}
225							}
226							var counter = 50;
227							var ready = function() {
228								counter--;
229								if (counter == 0) {
230									console.log("Can't load style.css.");
231									return;
232								}
233								var width =  jQuery("#lepopup-ready").width();
234								if (width > 0) {
235									lepopup_ready();
236								} else {
237									setTimeout(ready, 200);
238								}
239							}
240							ready();
241						}
242					} catch(error) {
243						console.log(error);
244					}
245				},
246				error	: 	function(XMLHttpRequest, textStatus, errorThrown) {
247					console.log(errorThrown);
248				}
249			});
250		}
251		jQuery(window).on('beforeunload', function(e){
252			var session_length;
253			if (!jQuery.isEmptyObject(lepopup_sessions)) {
254				for (var form_id in lepopup_sessions) {
255					session_length = jQuery(".lepopup-form-"+form_id).attr("data-session");
256					if (lepopup_is_numeric(session_length) && session_length > 0) {							
257						if (lepopup_sessions.hasOwnProperty(form_id)) {
258							if (lepopup_sessions[form_id]["modified"] == true) {
259								lepopup_write_cookie("lepopup-session-"+form_id, JSON.stringify(lepopup_sessions[form_id]["values"]), session_length);
260							}
261						}
262					}
263				}
264			}
265			return;
266		});
267	});
268} else {
269	alert('lepopup.js requires jQuery to be loaded. Please include jQuery library above lepopup.js. Do not use "defer" or "async" option to load jQuery.');
270}
271
272function lepopup_ready() {
273	lepopup_resize();
274	jQuery(window).resize(function() {
275		lepopup_resize();
276	});
277	var processed_forms = new Array();
278	var processed_form_ids = new Array();
279	
280	jQuery(".lepopup-inline").each(function(){
281		jQuery(this).find(".lepopup-form").each(function(){
282			var id = jQuery(this).attr("data-id");
283			var form_id = jQuery(this).attr("data-form-id");
284			if (processed_forms.indexOf(id) >= 0) return true;
285			processed_forms.push(id);
286			if (processed_form_ids.indexOf(form_id) < 0) processed_form_ids.push(form_id);
287		});
288	});
289	if (processed_form_ids.length > 0) {
290		lepopup_add_impression(processed_form_ids.join(","), null);
291	}
292	for (var i=0; i<processed_forms.length; i++) {
293		lepopup_reset_form(processed_forms[i]);
294		lepopup_handle_visibility(processed_forms[i], null, true);
295		jQuery(".lepopup-form-"+processed_forms[i]).each(function(){
296			var page_id = jQuery(this).attr("data-page");
297			if (lepopup_is_visible(processed_forms[i], page_id)) {
298				jQuery(this).find(".lepopup-element[data-content]").each(function(){
299					jQuery(this).find(".lepopup-element-html-content").html(lepopup_decode64(jQuery(this).attr("data-content")));
300				});
301				jQuery(this).show();
302				return false;
303			}
304		});
305		if (lepopup_customjs_handlers.hasOwnProperty(processed_forms[i])) {
306			lepopup_customjs_handlers[processed_forms[i]].errors = {};
307			if (lepopup_customjs_handlers[processed_forms[i]].hasOwnProperty("afterinit") && typeof lepopup_customjs_handlers[processed_forms[i]].afterinit == 'function') {
308				try {
309					lepopup_customjs_handlers[processed_forms[i]].afterinit();
310				} catch(error) {
311				}
312			}
313		}
314	}
315	jQuery("a").each(function() {
316		var slug = jQuery(this).attr("href");
317		if (slug) {
318			var idx = slug.indexOf("#");
319			if (idx < 0) return true;
320			slug = slug.substr(idx);
321			var full_hash = slug;
322			slug = slug.replace("#lepopup-", "");
323			if (lepopup_vars["ulp-active"] == "off") slug = slug.replace("#ulp-", "").replace("#ulpx-", "");
324			if (full_hash != slug) {
325// linklocker-begin
326				idx = slug.indexOf(":");
327				if (idx > 0) {
328					var encoded_url = slug.substr(idx + 1);
329					slug = slug.substr(0, idx);
330					var item_slugs = slug.split("*");
331					var item_slug = item_slugs[0];
332					if (item_slugs.length > 1 && lepopup_mobile) item_slug = item_slugs[1];
333					if (encoded_url.length > 0) {
334						encoded_url = lepopup_decode64(encoded_url);
335						if (item_slug == "") {
336							jQuery(this).attr("href", encoded_url);
337						} else {
338							var lepopup_cookie = lepopup_read_cookie("lepopup-submit-"+item_slug);
339							if (lepopup_cookie == lepopup_vars['cookie-value']) {
340								jQuery(this).attr("href", encoded_url);
341								return;
342							} else jQuery(this).addClass("lepopup-linklocker-"+item_slug);
343						}
344					}
345				}
346// linklocker-end
347				jQuery(this).on("click", function(e) {
348					e.preventDefault();
349					var slug = jQuery(this).attr("href");
350					var idx = slug.indexOf("#");
351					if (idx < 0) return;
352					slug = slug.substr(idx);
353					slug = slug.replace("#lepopup-", "");
354					if (lepopup_vars["ulp-active"] == "off") slug = slug.replace("#ulp-", "").replace("#ulpx-", "");
355// linklocker-begin
356					idx = slug.indexOf(":");
357					if (idx > 0) {
358						var encoded_url = lepopup_decode64(slug.substr(idx + 1));
359						if (encoded_url.length > 0) lepopup_forced_location = encoded_url;
360						slug = slug.substr(0, idx);
361					}
362// linklocker-end
363					lepopup_popup_open(slug);
364					return false;
365				});
366			}
367		}
368	});
369	lepopup_mask_init("input.lepopup-mask");
370	lepopup_datepicker_init("input.lepopup-date");
371	lepopup_timepicker_init("input.lepopup-time");
372	lepopup_signature_init("canvas.lepopup-signature");
373	lepopup_rangeslider_init("input.lepopup-rangeslider");
374	for (var i=0; i<processed_form_ids.length; i++) {
375		lepopup_tooltips_init(".lepopup-form-"+processed_form_ids[i], processed_form_ids[i], "dark");
376	}
377	
378	var slug = window.location.hash;
379	var idx = slug.indexOf("#");
380	if (idx >= 0) {
381		slug = slug.substr(idx);
382		var full_hash = slug;
383		slug = slug.replace("#lepopup-", "");
384		if (lepopup_vars["ulp-active"] == "off") slug = slug.replace("#ulp-", "").replace("#ulpx-", "");
385		if (full_hash != slug && slug.length > 0) {
386	// linklocker - begin
387			var redirecting = false;
388			idx = slug.indexOf(":");
389			if (idx > 0) {
390				var encoded_url = slug.substr(idx + 1);
391				slug = slug.substr(0, idx);
392				var item_slugs = slug.split("*");
393				var item_slug = item_slugs[0];
394				if (item_slugs.length > 1 && lepopup_mobile) item_slug = item_slugs[1];
395				if (encoded_url.length > 0) {
396					encoded_url = lepopup_decode64(encoded_url);
397					if (item_slug == "") {
398						var lepopup_safe = lepopup_safe_url(encoded_url);
399						if (lepopup_safe) {
400							location.href = lepopup_safe;
401							redirecting = true;
402						}
403					} else {
404						var lepopup_cookie = lepopup_read_cookie("lepopup-submit-"+item_slug);
405						if (lepopup_cookie == lepopup_vars['cookie-value']) {
406							var lepopup_safe = lepopup_safe_url(encoded_url);
407							if (lepopup_safe) {
408								location.href = lepopup_safe;
409								redirecting = true;
410							}
411						} else lepopup_forced_location = encoded_url;
412					}
413				}
414			}
415			if (!redirecting) {
416	// linklocker - end
417				lepopup_popup_open(slug);
418				lepopup_onload_displayed = true;
419	// linklocker - begin
420			}
421	// linklocker - end
422		}
423	}
424	jQuery(document).keyup(function(e) {
425		if (lepopup_popup_active_id) {
426			if (jQuery(".lepopup-form-"+lepopup_popup_active_id).first().attr("data-e
426sc") == "on") {
427				if (e.keyCode == 27) lepopup_close(0);
428			}
429		}
430		if (e.keyCode == 13) {
431			if (jQuery(document.activeElement).parent().hasClass("lepopup-input")) {
432				if (jQuery(document.activeElement).prop("tagName").toLowerCase() == "textarea" && !e.ctrlKey) {
433					return;
434				}
435				var popup = jQuery(document.activeElement).closest(".lepopup-form");
436				if (popup) {
437					if (jQuery(popup).attr("data-enter") == "on") {
438						lepopup_submit(document.activeElement);
439					}
440				}
441			}
442		}
443	});
444	jQuery(window).resize();
445	lepopup_events_init();
446	console.log("Green Popups is ready to go!");
447}
448function lepopup_resize() {
449	_lepopup_resize_active_popup(lepopup_popup_active_page_id);
450	jQuery(".lepopup-inline").each(function() {
451		var device = jQuery(this).attr("data-device");
452		if ((device == 'mobile' && !lepopup_mobile) || (device == 'desktop' && lepopup_mobile)) {
453			jQuery(this).hide();
454		} else {
455			jQuery(this).find(".lepopup-form").each(function() {
456				var viewport_width = Math.max(120, jQuery(this).parent().innerWidth());
457				var width = parseInt(jQuery(this).attr("data-width"), 10);
458				var height = parseInt(jQuery(this).attr("data-height"), 10);
459				
460				var scale = viewport_width/width;
461				if (scale > 1) scale = 1;
462				
463				jQuery(this).css({
464					"width" : parseInt(width*scale, 10),
465					"height" : parseInt(height*scale, 10)
466				});
467				jQuery(this).find(".lepopup-form-inner").css({
468					"transform" : "translate(-"+parseInt(width*(1-scale)/2, 10)+"px, -"+parseInt(height*(1-scale)/2, 10)+"px) scale("+scale+")"
469				});
470			});
471		}
472	});
473}
474function _lepopup_resize_active_popup(_page_id) {
475	if (!lepopup_popup_active_id || !_page_id) return;
476	var active_page = jQuery("#lepopup-popup-"+lepopup_popup_active_id+" .lepopup-form[data-page='"+_page_id+"']");
477	var viewport = {
478		width: Math.max(240, jQuery(window).width()),
479		height: Math.max(120, jQuery(window).height())
480	};
481	var width = parseInt(jQuery(active_page).attr("data-width"), 10);
482	var height = parseInt(jQuery(active_page).attr("data-height"), 10);
483	var scale = Math.min((viewport.width-20)/width, viewport.height/height);
484	if (scale > 1) scale = 1;
485
486	var middle_position = "-50%";
487	var bottom_sign = "";
488//	if (lepopup_mobile) {
489		scale = Math.min((viewport.width-20)/width, 1);
490		if (height*scale > viewport.height) {
491			jQuery(active_page).parent().addClass("lepopup-popup-fh-container");
492			middle_position = "-"+height*(1-scale)/2+"px";
493			bottom_sign = "-";
494		} else {
495			jQuery(active_page).parent().removeClass("lepopup-popup-fh-container");
496		}
497//	}
498	var position = jQuery(active_page).attr("data-position");
499	var translate = "";
500	switch (position) {
501		case 'top-left':
502			translate = "translate(-"+width*(1-scale)/2+"px,-"+height*(1-scale)/2+"px) ";
503			break;
504		case 'top-right':
505			translate = "translate("+width*(1-scale)/2+"px,-"+height*(1-scale)/2+"px) ";
506			break;
507		case 'bottom-left':
508			translate = "translate(-"+width*(1-scale)/2+"px,"+bottom_sign+height*(1-scale)/2+"px) ";
509			break;
510		case 'bottom-right':
511			translate = "translate("+width*(1-scale)/2+"px,"+bottom_sign+height*(1-scale)/2+"px) ";
512			break;
513		case 'top-center':
514			translate = "translate(-50%,-"+height*(1-scale)/2+"px) ";
515			break;
516		case 'bottom-center':
517			translate = "translate(-50%,"+bottom_sign+height*(1-scale)/2+"px) ";
518			break;
519		case 'middle-left':
520			translate = "translate(-"+width*(1-scale)/2+"px,"+middle_position+") ";
521			break;
522		case 'middle-right':
523			translate = "translate("+width*(1-scale)/2+"px,"+middle_position+") ";
524			break;
525		default:
526			translate = "translate(-50%,"+middle_position+") ";
527			break;
528	}
529	jQuery(active_page).css({"transform" : translate+"scale("+scale+")"});
530}
531
532function lepopup_events_init() {
533	var item_slug = null, item_slugs, event_cookie;
534	
535	try {
536		var url = new URL(document.location);
537		var disable_raw = url.searchParams.get("lepopup-disable");
538		if (disable_raw != null) {
539			var disable_items = disable_raw.split(",");
540			for (var i=0; i<disable_items.length; i++) {
541				item_slug = (disable_items[i]).trim();
542				if (item_slug.length > 0 && lepopup_vars["overlays"].hasOwnProperty(item_slug)) {
543					lepopup_write_cookie("lepopup-submit-"+item_slug, lepopup_vars["cookie-value"], 365*24);
544				}
545			}
546		}
547	} catch(error) {
548		console.log(error);
549	}
550	
551	lepopup_vars["events-data"] = Object.assign(lepopup_vars["events-data"], lepopup_custom_events_data);
552	if (lepopup_vars["abd-enabled"] == 'on') {
553		if (lepopup_vars["events-data"].hasOwnProperty("onabd-item")) {
554			item_slugs = lepopup_vars["events-data"]["onabd-item"].split("*");
555			item_slug = item_slugs[0];
556			if (item_slugs.length > 1 && lepopup_mobile) item_slug = item_slugs[1];
557			if (item_slug != "") {
558				var event_cookie = lepopup_read_cookie("lepopup-onabd-"+item_slug);
559				var slug_cookie = lepopup_read_cookie("lepopup-submit-"+item_slug);
560				if (event_cookie != lepopup_vars["cookie-value"] && slug_cookie != lepopup_vars["cookie-value"]) {
561					if (!lepopup_popup_active_id && !lepopup_onabd_displayed) {
562						if (typeof window.google_ad_status == typeof undefined || window.google_ad_status != 1) {
563							if (lepopup_vars["events-data"]["onabd-mode"] == "once-only") lepopup_write_cookie("lepopup-onabd-"+item_slug, lepopup_vars["cookie-value"], 365*24);
564							else if (lepopup_vars["events-data"]["onabd-mode"] == "once-period") lepopup_write_cookie("lepopup-onabd-"+item_slug, lepopup_vars["cookie-value"], lepopup_vars["events-data"]["onabd-mode-period"]);
565							lepopup_popup_open(item_slug);
566							lepopup_onabd_displayed = true;
567						}
568					}
569				}
570			}
571		}
572	}
573	if (lepopup_vars["events-data"].hasOwnProperty("onload-item")) {
574		item_slugs = lepopup_vars["events-data"]["onload-item"].split("*");
575		item_slug = item_slugs[0];
576		if (item_slugs.length > 1 && lepopup_mobile) item_slug = item_slugs[1];
577		if (item_slug != "") {
578			var event_cookie = lepopup_read_cookie("lepopup-onload-"+item_slug);
579			var slug_cookie = lepopup_read_cookie("lepopup-submit-"+item_slug);
580			if (event_cookie != lepopup_vars["cookie-value"] && slug_cookie != lepopup_vars["cookie-value"]) {
581				var onload_open = function(_slug) {
582					if (!lepopup_popup_active_id && !lepopup_onload_displayed) {
583						if (lepopup_vars["events-data"]["onload-mode"] == "once-only") lepopup_write_cookie("lepopup-onload-"+_slug, lepopup_vars["cookie-value"], 365*24);
584						else if (lepopup_vars["events-data"]["onload-mode"] == "once-period") lepopup_write_cookie("lepopup-onload-"+_slug, lepopup_vars["cookie-value"], lepopup_vars["events-data"]["onload-mode-period"]);
585						lepopup_popup_open(_slug);
586						lepopup_onload_displayed = true;
587						if (parseInt(lepopup_vars["events-data"]["onload-mode-close-delay"], 10) > 0) {
588							lepopup_timeout = setTimeout(function() {lepopup_popup_active_close(0);}, parseInt(lepopup_vars["events-data"]["onload-mode-close-delay"], 10)*1000);
589						}
590					}
591				};
592				var onload_slug = item_slug;
593				if (parseInt(lepopup_vars["events-data"]["onload-mode-delay"], 10) <= 0) {
594					onload_open(onload_slug);
595				} else {
596					setTimeout(function() {
597						onload_open(onload_slug);
598					}, parseInt(lepopup_vars["events-data"]["onload-mode-delay"], 10)*1000);
599				}
600			}
601		}
602	}
603	if (lepopup_vars["events-data"].hasOwnProperty("onexit-item")) {
604		item_slugs = lepopup_vars["events-data"]["onexit-item"].split("*");
605		item_slug = item_slugs[0];
606		if (item_slugs.length > 1 && lepopup_mobile) item_slug = item_slugs[1];
607		if (item_slug != "") {
608			var event_cookie = lepopup_read_cookie("lepopup-onexit-"+item_slug);
609			var slug_cookie = lepopup_read_cookie("lepopup-submit-"+item_slug);
610			if (event_cookie != lepopup_vars["cookie-value"] && slug_cookie != lepopup_vars["cookie-value"]) {
611				var onexit_slug = item_slug;
612				jQuery(document).bind('mouseleave', function(e) {
613					var mouseY = parseInt(e.pageY - jQuery(window).scrollTop(), 10);
614					if (!lepopup_popup_active_id && !lepopup_onexit_displayed && mouseY < 20) {
615						if (lepopup_vars["events-data"]["onexit-mode"] == "once-only") lepopup_write_cookie("lepopup-onexit-"+onexit_slug, lepopup_vars["cookie-value"], 365*24);
616						else if (lepopup_vars["events-data"]["onexit-mode"] == "once-period") lepopup_write_cookie("lepopup-onexit-"+onexit_slug, lepopup_vars["cookie-value"], lepopup_vars["events-data"]["onexit-mode-period"]);
617						lepopup_popup_open(onexit_slug);
618						lepopup_onexit_displayed = true;
619					}
620				});
621			}
622		}
623	}
624	if (lepopup_vars["events-data"].hasOwnProperty("onscroll-item")) {
625		item_slugs = lepopup_vars["events-data"]["onscroll-item"].split("*");
626		item_slug = item_slugs[0];
627		if (item_slugs.length > 1 && lepopup_mobile) item_slug = item_slugs[1];
628		if (item_slug != "") {
629			var event_cookie = lepopup_read_cookie("lepopup-onscroll-"+item_slug);
630			var slug_cookie = lepopup_read_cookie("lepopup-submit-"+item_slug);
631			if (event_cookie != lepopup_vars["cookie-value"] && slug_cookie != lepopup_vars["cookie-value"]) {
632				var onscroll_slug = item_slug;
633				jQuery(window).scroll(function(e) {
634					if (!lepopup_popup_active_id && !lepopup_onscroll_displayed) {
635						var position = jQuery(window).scrollTop();
636						var offset = parseInt(lepopup_vars["events-data"]["onscroll-mode-offset"], 10);
637						if (lepopup_vars["events-data"]["onscroll-mode-offset"].indexOf("%") > 0) {
638							if (offset > 100) offset = 100;
639							offset = parseInt((jQuery(document).height() - jQuery(window).height())*offset/100, 10);
640						}
641						if (position > offset) {
642							if (lepopup_vars["events-data"]["onscroll-mode"] == "once-only") lepopup_write_cookie("lepopup-onscroll-"+onscroll_slug, lepopup_vars["cookie-value"], 365*24);
643							else if (lepopup_vars["events-data"]["onscroll-mode"] == "once-period") lepopup_write_cookie("lepopup-onscroll-"+onscroll_slug, lepopup_vars["cookie-value"], lepopup_vars["events-data"]["onscroll-mode-period"]);
644							lepopup_popup_open(onscroll_slug);
645							lepopup_onscroll_displayed = true;
646						}
647					}
648				});
649			}
650		}
651	}
652	if (lepopup_vars["events-data"].hasOwnProperty("onidle-item")) {
653		item_slugs = lepopup_vars["events-data"]["onidle-item"].split("*");
654		item_slug = item_slugs[0];
655		if (item_slugs.length > 1 && lepopup_mobile) item_slug = item_slugs[1];
656		if (item_slug != "") {
657			var event_cookie = lepopup_read_cookie("lepopup-onidle-"+item_slug);
658			var slug_cookie = lepopup_read_cookie("lepopup-submit-"+item_slug);
659			if (event_cookie != lepopup_vars["cookie-value"] && slug_cookie != lepopup_vars["cookie-value"]) {
660				var onidle_slug = item_slug;
661				jQuery(window).mousemove(function(event) {
662					lepopup_onidle_counter = 0;
663				});
664				jQuery(window).click(function(event) {
665					lepopup_onidle_counter = 0;
666				});
667				jQuery(window).keypress(function(event) {
668					lepopup_onidle_counter = 0;
669				});
670				jQuery(window).scroll(function(event) {
671					lepopup_onidle_counter = 0;
672				});
673				var onidle_counter_handler = function() {
674					if (lepopup_onidle_counter >= lepopup_vars["events-data"]["onidle-mode-delay"]) {
675						if (!lepopup_popup_active_id && !lepopup_onidle_displayed) {
676							if (lepopup_vars["events-data"]["onidle-mode"] == "once-only") lepopup_write_cookie("lepopup-onidle-"+onidle_slug, lepopup_vars["cookie-value"], 365*24);
677							else if (lepopup_vars["events-data"]["onidle-mode"] == "once-period") lepopup_write_cookie("lepopup-onidle-"+onidle_slug, lepopup_vars["cookie-value"], lepopup_vars["events-data"]["onidle-mode-period"]);
678							lepopup_popup_open(onidle_slug);
679							lepopup_onidle_displayed = true;
680						}
681						return;
682					} else {
683						lepopup_onidle_counter = lepopup_onidle_counter + 1;
684					}
685					lepopup_onidle_timer = setTimeout(onidle_counter_handler, 1000);
686				}
687				lepopup_onidle_timer = setTimeout(onidle_counter_handler, 1000);
688			}
689		}
690	}
691}
692
693function lepopup_add_impression(_from_ids, _campaign_slug) {
694	jQuery.ajax({
695		url		: 	lepopup_vars['ajax-url'],
696		data	: 	{"action" : "lepopup-front-add-impression", "campaign-slug" : _campaign_slug, "form-ids" : _from_ids, "hostname" : window.location.hostname},
697		method	:	(lepopup_vars["mode"] == "remote" ? "get" : "post"),
698		dataType:	(lepopup_vars["mode"] == "remote" ? "jsonp" : "json"),
699		async	:	true,
700		success	: function(return_data) {
701		try {
702				var data;
703				if (typeof return_data == 'object') data = return_data;
704				else data = jQuery.parseJSON(return_data);
705				if (data.status == "OK") {
706					if (data.hasOwnProperty("consts")) {
707						if (typeof Object.assign == "function") {
708							lepopup_consts = Object.assign(lepopup_consts, data["consts"]);
709						} else {
710							for (var key in data["consts"]) {
711								if (data["consts"].hasOwnProperty(key)) {
712									lepopup_consts[key] = data["consts"][key];
713								}
714							}
715						}
716						lepopup_consts_update(null, data["consts"]);
717					}
718				}
719			} catch(error) {
720				console.log(error);
721			}
722		},
723		error	: 	function(XMLHttpRequest, textStatus, errorThrown) {
724			console.log(errorThrown);
725		}
726	});
727}
728function lepopup_datepicker_init(_set) {
729	if (lepopup_vars["mode"] == "remote" && lepopup_vars["plugins"].indexOf("airdatepicker") >= 0 && typeof jQuery.fn.airdatepicker == typeof undefined) {
730		setTimeout(function(){lepopup_datepicker_init(_set);}, 1000);
731	}
732	if (typeof jQuery.fn.airdatepicker == typeof undefined) return;
733	jQuery(_set).each(function(){
734		var object = this;
735		var airdatepicker = jQuery(object).airdatepicker().data('airdatepicker');
736		airdatepicker.destroy();
737		jQuery(object).airdatepicker({
738			inline_popup	: true,
739			autoClose		: true,
740			timepicker		: false,
741			dateFormat		: jQuery(object).attr("data-format"),
742			language		: jQuery(object).attr("data-locale"),
743			onSelect		: function(formattedDate, date, inst) {
744				lepopup_input_changed(object);
745			},
746			onShow			: function(inst, animationCompleted) {
747				var content;
748				var min_type = jQuery(object).attr("data-min-type");
749				var min_value = jQuery(object).attr("data-min-value");
750				var min_date = null;
751				switch(min_type) {
752					case 'today':
753						min_date = new Date();
754						break;
755					case 'yesterday':
756						min_date = new Date();
757						min_date.setDate(min_date.getDate() - 1);
758						break;
759					case 'tomorrow':
760						min_date = new Date();
761						min_date.setDate(min_date.getDate() + 1);
762						break;
763					case 'offset':
764						min_date = new Date();
765						min_date.setDate(min_date.getDate() + parseInt(min_value, 10));
766						break;
767					case 'date':
768						min_date = lepopup_date(min_value, jQuery(object).attr("data-format"));
769						break;
770					case 'field':
771						content = jQuery(object).closest(".lepopup-container");
772						if (jQuery(content).find("input[name='lepopup-"+min_value+"']").length > 0) min_date = lepopup_date(jQuery(content).find("input[name='lepopup-"+min_value+"']").val(), jQuery(object).attr("data-format"));
773						break;
774					default:
775						break;
776				}
777				if (min_date != null) inst.update('minDate', min_date);
778				var max_type = jQuery(object).attr("data-max-type");
779				var max_value = jQuery(object).attr("data-max-value");
780				var max_date = null;
781				switch(max_type) {
782					case 'today':
783						max_date = new Date();
784						break;
785					case 'yesterday':
786						max_date = new Date();
787						max_date.setDate(max_date.getDate() - 1);
788						break;
789					case 'tomorrow':
790						max_date = new Date();
791						max_date.setDate(max_date.getDate() + 1);
792						break;
793					case 'offset':
794						max_date = new Date();
795						max_date.setDate(max_date.getDate() + parseInt(max_value, 10));
796						break;
797					case 'date':
798						max_date = lepopup_date(max_value, jQuery(object).attr("data-format"));
799						break;
800					case 'field':
801						content = jQuery(object).closest(".lepopup-container");
802						if (jQuery(content).find("input[name='lepopup-"+max_value+"']").length > 0) max_date = lepopup_date(jQuery(content).find("input[name='lepopup-"+max_value+"']").val(), jQuery(object).attr("data-format"));
803						break;
804					default:
805						break;
806				}
807				if (max_date != null) inst.update('maxDate', max_date);
808			}
809		});
810		jQuery(object).parent().find("i").on("click", function(e){
811			e.preventDefault();
812			var input = jQuery(this).parent().children("input");
813			var airdatepicker = jQuery(input).airdatepicker().data('airdatepicker');
814			airdatepicker.show();
815		});
816	});
817}
818function lepopup_rangeslider_init(_set) {
819	if (lepopup_vars["mode"] == "remote" && lepopup_vars["plugins"].indexOf("ion.rangeSlider") >= 0 && typeof jQuery.fn.ionRangeSlider == typeof undefined) {
820		setTimeout(function(){lepopup_rangeslider_init(_set);}, 1000);
821	}
822	if (typeof jQuery.fn.ionRangeSlider == typeof undefined || !jQuery.fn.ionRangeSlider) return;
823	jQuery(_set).ionRangeSlider({
824		onChange: function (_data) {
825			lepopup_input_error_hide(_data.input);
826			lepopup_input_changed(_data.input);
827		}
828	});
829}
830function lepopup_tooltips_init(_container, _form_id, _theme) {
831	if (lepopup_vars["mode"] == "remote" && lepopup_vars["plugins"].indexOf("tooltipster") >= 0 && (typeof jQuery.fn.tooltipster == typeof undefined || !jQuery.fn.tooltipster)) {
832		setTimeout(function(){lepopup_tooltips_init(_container, _form_id, _theme);}, 1000);
833	}
834	if (typeof jQuery.fn.tooltipster == typeof undefined || !jQuery.fn.tooltipster) return;
835	var theme = jQuery(".lepopup-form-"+_form_id).attr("data-tooltip-theme");
836	if (theme != "light" && theme != "dark") theme = _theme;
837	jQuery(_container).find("span.lepopup-tooltip-anchor, .lepopup-input[title], .lepopup-upload-input[title]").tooltipster({
838		functionFormat: function(instance, helper, content){
839			return "<div class='lepopup-tooltipster-content-"+_form_id+" lepopup-tooltipster-content-"+theme+"'>"+content+"</div>";
840		},
841		contentAsHTML:	true,
842		maxWidth:		640,
843		theme:			"tooltipster-"+theme
844	});
845}
846function lepopup_signature_init(_set) {
847	if (lepopup_vars["mode"] == "remote" && lepopup_vars["plugins"].indexOf("signature_pad") >= 0 && typeof SignaturePad == typeof undefined) {
848		setTimeout(function(){lepopup_signature_init(_set);}, 1000);
849	}
850	if (typeof SignaturePad == typeof undefined) return;
851	jQuery(_set).each(function(){
852		var object = this;
853		var box = jQuery(this).parent();
854		var width = Math.max(box.width(), 40);
855		var height = box.height();
856		jQuery(this).width(width);
857		jQuery(this).height(height);
858		jQuery(this).attr("width", width);
859		jQuery(this).attr("height", height);
860		var signature_key = jQuery(this).closest(".lepopup-form").attr("data-id")+"-"+jQuery(this).closest(".lepopup-element").attr("data-id");
861		var pen_color = jQuery(this).attr("data-color");
862		if (typeof pen_color == typeof undefined) pen_color = "rgb(0,0,0,1);"
863		lepopup_signatures[signature_key] = new SignaturePad(this, {
864			penColor: pen_color,
865			onBegin: function() {
866				lepopup_input_error_hide(object);
867			},
868			onEnd: function() {
869				var input = jQuery(object).closest(".lepopup-input").find("input");
870				var data_url = "";
871				if (!this.isEmpty()) data_url = this.toDataURL();
872				jQuery(input).val(data_url);
873				lepopup_input_changed(input);
874			}
875		});
876		jQuery(this).parent().find("span").on("click", function(e){
877			var input = jQuery(object).closest(".lepopup-input").find("input");
878			jQuery(input).val("");
879			lepopup_signatures[signature_key].clear();
880			lepopup_input_changed(input);
881		});
882	});
883}
884var lepopup_in_onselect = false;
885function lepopup_timepicker_init(_set) {
886	if (lepopup_vars["mode"] == "remote" && lepopup_vars["plugins"].indexOf("airdatepicker") >= 0 && typeof jQuery.fn.airdatepicker == typeof undefined) {
887		setTimeout(function(){lepopup_timepicker_init(_set);}, 1000);
888	}
889	if (typeof jQuery.fn.airdatepicker == typeof undefined) return;
890	jQuery(_set).each(function(){
891		var object = this;
892		var airdatepicker = jQuery(object).airdatepicker().data('airdatepicker');
893		airdatepicker.destroy();
894		jQuery(object).airdatepicker({
895			inline_popup	: true,
896			autoClose		: true,
897			timepicker		: true,
898			onlyTimepicker	: true,
899			minutesStep		: jQuery(object).attr("data-interval"),
900			timeFormat		: jQuery(object).attr("data-format"),
901			language		: jQuery(object).attr("data-locale"),
902			onSelect		: function(formattedDate, date, inst) {
903				if (lepopup_in_onselect) return;
904				lepopup_in_onselect = true;
905				var content;
906				var selected_time_c = date.getHours()*100+date.getMinutes();
907				var min_type = jQuery(object).attr("data-min-type");
908				var min_value = jQuery(object).attr("data-min-value");
909				var min_time = null;
910				switch(min_type) {
911					case 'time':
912						min_time = lepopup_time24_str(min_value, jQuery(object).attr("data-format"));
913						break;
914					case 'field':
915						content = jQuery(object).closest(".lepopup-container");
916						if (jQuery(content).find("input[name='lepopup-"+min_value+"']").length > 0) min_time = lepopup_time24_str(jQuery(content).find("input[name='lepopup-"+min_value+"']").val(), jQuery(object).attr("data-format"));
917						break;
918					default:
919						break;
920				}
921				if (min_time != null) {
922					if (selected_time_c < parseInt(min_time.replace(":", ""), 10)) {
923						inst.selectDate(new Date(2020, 0, 1, min_time.substr(0, 2), min_time.substr(3, 2)));
924						lepopup_in_onselect = false;
925						return;
926					}
927				}
928				var max_type = jQuery(object).attr("data-max-type");
929				var max_value = jQuery(object).attr("data-max-value");
930				var max_time = null;
931				switch(max_type) {
932					case 'time':
933						max_time = lepopup_time24_str(max_value, jQuery(object).attr("data-format"));
934						break;
935					case 'field':
936						content = jQuery(object).closest(".lepopup-container");
937						if (jQuery(content).find("input[name='lepopup-"+max_value+"']").length > 0) max_time = lepopup_time24_str(jQuery(content).find("input[name='lepopup-"+max_value+"']").val(), jQuery(object).attr("data-format"));
938						break;
939					default:
940						break;
941				}
942				if (max_time != null) {
943					if (selected_time_c > parseInt(max_time.replace(":", ""), 10)) {
944						inst.selectDate(new Date(2020, 0, 1, max_time.substr(0, 2), max_time.substr(3, 2)));
945						lepopup_in_onselect = false;
946						return;
947					}
948						
949				}
950				lepopup_in_onselect = false;
951			}
952		});
953		jQuery(object).parent().find("i").on("click", function(e){
954			e.preventDefault();
955			var input = jQuery(this).parent().children("input");
956			var airdatepicker = jQuery(input).airdatepicker().data('airdatepicker');
957			airdatepicker.show();
958		});
959	});
960}
961function lepopup_popup_open(_slug) {
962	var slug;
963	var slugs = _slug.split("*");
964	if (slugs.length > 1) {
965		if (lepopup_mobile) slug = slugs[1];
966		else slug = slugs[0];
967	} else slug = _slug;
968	if (slug == "") return false;
969	if (lepopup_vars["campaigns"].hasOwnProperty(slug)) {
970		lepopup_campaign_active_slug = slug;
971		slug = lepopup_vars["campaigns"][slug][parseInt(Math.floor(Math.random()*lepopup_vars["campaigns"][slug].length), 10)];
972	} else lepopup_campaign_active_slug = null;
973	var overlay_color = "rgba(0,0,0,0.7)";
974	var _id = null;
975	if (lepopup_vars["overlays"].hasOwnProperty(slug)) {
976		_id = lepopup_vars["overlays"][slug][0];
977	} else return false;
978	if (lepopup_popup_active_id == _id) return false;
979	if (lepopup_popup_active_id) lepopup_popup_active_close();
980	if (jQuery("#lepopup-popup-"+_id).length > 0) {
981		if (jQuery("#lepopup-popup-"+_id+"-overlay").length > 0) {
982			jQuery("#lepopup-popup-"+_id+"-overlay").attr("class", "lepopup-popup-overlay lepopup-animated lepopup-"+lepopup_vars["overlays"][slug][5]);
983		} else {
984			if (lepopup_vars["overlays"][slug][2] == "on") {
985				if (lepopup_vars["overlays"][slug][3] != "") overlay_color = lepopup_vars["overlays"][slug][3];
986				var overlay_html = "<div class='lepopup-popup-overlay' id='lepopup-popup-"+_id+"-overlay' style='background: "+overlay_color+";'></div>";
987				jQuery('body').append(overlay_html);
988				jQuery("#lepopup-popup-"+_id+"-overlay").fadeIn(500);
989				jQuery("#lepopup-popup-"+_id+"-overlay").attr("class", "lepopup-popup-overlay lepopup-animated lepopup-"+lepopup_vars["overlays"][slug][5]);
990				if (lepopup_vars["overlays"][slug][4] == "on") {
991					jQuery("#lepopup-popup-"+_id+"-overlay").on("click", function(e) {
992						lepopup_popup_active_close();
993					});
994				}
995			}
996		}
997		lepopup_add_impression(_id, lepopup_campaign_active_slug);
998		return _lepopup_popup_open(_id, true);
999	} else {
1000		if (!lepopup_popup_loading && !lepopup_popup_active_id) {
1001			lepopup_popup_loading = true;
1002			if (lepopup_vars["overlays"][slug][2] == "on") {
1003				if (lepopup_vars["overlays"][slug][3] != "") overlay_color = lepopup_vars["overlays"][slug][3];
1004				var overlay_html = "<div class='lepopup-popup-overlay' id='lepopup-popup-"+_id+"-overlay' style='background: "+overlay_color+";'></div>";
1005				jQuery('body').append(overlay_html);
1006				jQuery("#lepopup-popup-"+_id+"-overlay").fadeIn(500);
1007				jQuery("#lepopup-popup-"+_id+"-overlay").attr("class", "lepopup-popup-overlay lepopup-animated lepopup-"+lepopup_vars["overlays"][slug][5]);
1008				if (lepopup_vars["overlays"][slug][4] == "on") {
1009					jQuery("#lepopup-popup-"+_id+"-overlay").on("click", function(e) {
1010						lepopup_popup_loading = false;
1011						jQuery(".lepopup-popup-loader").hide();
1012						jQuery(".lepopup-popup-loader").remove();
1013						if (jQuery("#lepopup-popup-"+_id).length == 0) {
1014							jQuery("#lepopup-popup-"+_id+"-overlay").fadeOut(300);
1015						} else {
1016							lepopup_popup_active_close();
1017						}
1018					});
1019				}
1020			}
1021			var loader = "<style>#lepopup-popup-"+_id+"-loader .lepopup-popup-loader-triple-spinner {border-top-color:"+lepopup_vars["overlays"][slug][6]+"} #lepopup-popup-"+_id+"-loader .lepopup-popup-loader-triple-spinner::before {border-top-color:"+lepopup_vars["overlays"][slug][7]+"} #lepopup-popup-"+_id+"-loader .lepopup-popup-loader-triple-spinner::after {border-top-color:"+lepopup_vars["overlays"][slug][8]+"}</style><div id='lepopup-popup-"+_id+"-loader' class='lepopup-popup-loader lepopup-popup-loader-"+lepopup_vars["overlays"][slug][1]+"'><div class='lepopup-popup-loader-container'><div class='lepopup-popup-loader-triple-spinner'></div></div></div>";
1022			jQuery('body').append(loader);
1023			
1024			var style = jQuery(".lepopup-form-"+_id).length > 0 ? "off" : "on";
1025			jQuery.ajax({
1026				url: 		lepopup_vars['ajax-url'],
1027				method:		(lepopup_vars["mode"] == "remote" ? "get" : "post"),
1028				dataType:	(lepopup_vars["mode"] == "remote" ? "jsonp" : "json"),
1029				async:		true,
1030				data: 		{"action" : "lepopup-front-popup-load", "form-slug" : slug, "form-style" : style, "hostname" : window.location.hostname, "preview" : lepopup_preview},
1031				success: 	function(return_data) {
1032					jQuery(".lepopup-popup-loader").hide();
1033					jQuery(".lepopup-popup-loader").remove();
1034					var data;
1035					try {
1036						if (typeof return_data == 'object') data = return_data;
1037						else data = jQuery.parseJSON(return_data);
1038						if (data.status == "OK") {
1039							if (!lepopup_popup_loading) return false;
1040							//jQuery("#lepopup-popup-"+_id+"-overlay").html(data.html);
1041							jQuery("body").append(data.html);
1042							lepopup_mask_init("#lepopup-popup-"+_id+" input.lepopup-mask");
1043							lepopup_add_impression(_id, lepopup_campaign_active_slug);
1044							_lepopup_popup_open(_id, false);
1045						} else {
1046							if (data.hasOwnProperty("message")) {
1047								lepopup_global_message_show("danger", data.message);
1048							}
1049							jQuery(".lepopup-popup-loader").hide();
1050							jQuery(".lepopup-popup-loader").remove();
1051							//jQuery("#lepopup-popup-"+_id+"-overlay").off("click");
1052							jQuery("#lepopup-popup-"+_id+"-overlay").fadeOut(300);
1053						}
1054					} catch(error) {
1055						console.log(error);
1056						jQuery(".lepopup-popup-loader").hide();
1057						jQuery(".lepopup-popup-loader").remove();
1058						//jQuery("#lepopup-popup-"+_id+"-overlay").off("click");
1059						jQuery("#lepopup-popup-"+_id+"-overlay").fadeOut(300);
1060					}
1061					lepopup_popup_loading = false;
1062				},
1063				error: 		function(XMLHttpRequest, textStatus, errorThrown) {
1064					console.log(errorThrown);
1065					jQuery(".lepopup-popup-loader").hide();
1066					jQuery(".lepopup-popup-loader").remove();
1067					//jQuery("#lepopup-popup-"+_id+"-overlay").off("click");
1068					jQuery("#lepopup-popup-"+_id+"-overlay").fadeOut(300);
1069					lepopup_popup_loading = false;
1070				}
1071			});
1072		}
1073	}
1074	return false;
1075}
1076
1077function _lepopup_popup_open(_id, _overlay) {
1078	if (jQuery("#lepopup-popup-"+_id).length == 0) return false;
1079	if (typeof lepopupext_open_before == 'function') {
1080		lepopupext_open_before(_id);
1081	}
1082	lepopup_popup_active_id = _id;
1083	if (_overlay) {
1084		jQuery("#lepopup-popup-"+_id+"-overlay").fadeIn(300);
1085	}
1086	
1087	var form = jQuery("#lepopup-popup-"+_id).children(".lepopup-form").first();
1088	var form_id = jQuery(form).attr("data-id");
1089	var disable_scrollbar = jQuery(form).attr("data-disable-scrollbar");
1090	if (disable_scrollbar == "on") {
1091		jQuery("html").addClass("lepopup-html-noscroll");
1092	}
1093	var visible_page = null;
1094	lepopup_reset_form(form_id);
1095	jQuery(".lepopup-form-"+form_id).hide();
1096	jQuery(".lepopup-form-"+form_id).each(function(){
1097		var page_id = jQuery(this).attr("data-page");
1098		if (lepopup_is_visible(form_id, page_id)) {
1099			_lepopup_popup_page_open(page_id);
1100			visible_page = this;
1101			return false;
1102		}
1103	});
1104	lepopup_datepicker_init("#lepopup-popup-"+_id+" input.lepopup-date");
1105	lepopup_timepicker_init("#lepopup-popup-"+_id+" input.lepopup-time");
1106	jQuery("#lepopup-popup-"+_id).show();
1107	lepopup_signature_init("#lepopup-popup-"+_id+" canvas.lepopup-signature");
1108	lepopup_rangeslider_init("#lepopup-popup-"+_id+" input.lepopup-rangeslider");
1109	if (lepopup_mobile) {
1110		jQuery("#lepopup-popup-"+_id+"-overlay").css({"padding-right" : "0px"});
1111	}
1112	lepopup_handle_visibility(form_id, null, true);
1113	//lepopup_resize();
1114	if (lepopup_customjs_handlers.hasOwnProperty(form_id)) {
1115		lepopup_customjs_handlers[form_id].errors = {};
1116		if (lepopup_customjs_handlers[form_id].hasOwnProperty("afterinit") && typeof lepopup_customjs_handlers[form_id].afterinit == 'function') {
1117			try {
1118				lepopup_customjs_handlers[form_id].afterinit();
1119			} catch(error) {
1120			}
1121		}
1122	}
1123	return false;
1124}
1125function _lepopup_popup_page_open(_page_id) {
1126	if (!lepopup_popup_active_id || lepopup_popup_active_page_id == _page_id) return;
1127	if (lepopup_popup_active_page_id && lepopup_popup_active_page_id != _page_id) _lepopup_popup_page_close(lepopup_popup_active_page_id);
1128	
1129	var active_page = jQuery("#lepopup-popup-"+lepopup_popup_active_id+" .lepopup-form[data-page='"+_page_id+"']");
1130	if (active_page.length == 0) return;
1131	lepopup_popup_active_page_id = _page_id;
1132
1133	_lepopup_resize_active_popup(lepopup_popup_active_page_id);
1134	
1135	jQuery(active_page).removeClass("lepopup-form-page-closed");
1136
1137	jQuery(active_page).find(".lepopup-element").each(function(){
1138		var left = jQuery(this).attr("data-left");
1139		var top = jQuery(this).attr("data-top");
1140		var animation_in = jQuery(this).attr("data-animation-in");
1141		var animation_out = jQuery(this).attr("data-animation-out");
1142		jQuery(this).css({
1143			"left": parseInt(left, 10)+"px",
1144			"top": parseInt(top, 10)+"px"
1145		});
1146		var content = jQuery(this).attr("data-content");
1147		if (content) {
1148			jQuery(this).find(".lepopup-element-html-content").html(lepopup_decode64(content));
1149		}
1150		jQuery(this).removeClass("lepopup-"+animation_out);
1151		jQuery(this).addClass("lepopup-animated lepopup-"+animation_in);
1152	});
1153	jQuery(active_page).show();
1154}
1155
1156function lepopup_popup_active_close(_cookie_lifetime) {
1157	clearTimeout(lepopup_timeout);
1158	if (!lepopup_popup_active_id || !lepopup_popup_active_page_id) return;
1159	_lepopup_popup_page_close(lepopup_popup_active_page_id);
1160	var id = lepopup_popup_active_id;
1161	lepopup_sending = false;
1162	lepopup_popup_active_id = null;
1163	lepopup_campaign_active_slug = null;
1164	lepopup_forced_location = null;
1165	var form_uid = jQuery(".lepopup-form-"+id).first().attr("data-id");
1166	if (parseInt(_cookie_lifetime, 10) > 0) {
1167		var form_slug = jQuery(".lepopup-form-"+id).first().attr("data-slug");
1168		if (form_slug) lepopup_write_cookie("lepopup-submit-"+form_slug, lepopup_vars["cookie-value"], parseInt(_cookie_lifetime, 10)*24);
1169	}
1170	setTimeout(function() {
1171		jQuery("#lepopup-popup-"+id+"-overlay").attr("class", "lepopup-popup-overlay");
1172		jQuery("#lepopup-popup-"+id+"-overlay").fadeOut(300);
1173		jQuery("html.lepopup-html-noscroll").removeClass("lepopup-html-noscroll");
1174		jQuery("#lepopup-popup-"+id).removeClass("lepopup-popup-fh-container");
1175		jQuery("#lepopup-popup-"+id).hide();
1176		if (typeof lepopupext_close_after == 'function') { 
1177			lepopupext_close_after(id);
1178		}
1179		if (lepopup_customjs_handlers.hasOwnProperty(form_uid)) {
1180			lepopup_customjs_handlers[form_uid].errors = {};
1181			if (lepopup_customjs_handlers[form_uid].hasOwnProperty("afterclose") && typeof lepopup_customjs_handlers[form_uid].afterclose == 'function') {
1182				try {
1183					lepopup_customjs_handlers[form_uid].afterclose();
1184				} catch(error) {
1185				}
1186			}
1187		}
1188	}, 500);
1189	return false;
1190}
1191
1192function lepopup_close(_cookie_lifetime) {
1193	lepopup_popup_active_close(_cookie_lifetime)
1194	return false;
1195}
1196function _lepopup_close(_id) {
1197	lepopup_sending = false;
1198	lepopup_popup_active_id = null;
1199	
1200	jQuery("#lepopup-popup-"+_id).fadeOut(300, function() {
1201		jQuery("#lepopup-popup-"+_id+"-overlay").fadeOut(300);
1202		jQuery("#lepopup-popup-"+_id).find(".lepopup-popup").hide();
1203	});
1204	return false;
1205}
1206function _lepopup_popup_page_close(_page_id) {
1207	if (!lepopup_popup_active_id || lepopup_popup_active_page_id != _page_id) return;
1208	lepopup_popup_active_page_id = null;
1209	var active_page = jQuery("#lepopup-popup-"+lepopup_popup_active_id+" .lepopup-form[data-page='"+_page_id+"']");
1210	if (active_page.length == 0) return;
1211	jQuery(active_page).find(".lepopup-element-error").remove();
1212	jQuery(active_page).addClass("lepopup-form-page-closed");
1213	jQuery(active_page).find(".lepopup-element").each(function(){
1214		var left = jQuery(this).attr("data-left");
1215		var top = jQuery(this).attr("data-top");
1216		var animation_in = jQuery(this).attr("data-animation-in");
1217		var animation_out = jQuery(this).attr("data-animation-out");
1218		jQuery(this).css({
1219			"left": parseInt(left, 10)+"px",
1220			"top": parseInt(top, 10)+"px"
1221		});
1222		jQuery(this).removeClass("lepopup-"+animation_in);
1223		jQuery(this).addClass("lepopup-animated lepopup-"+animation_out);
1224		var content = jQuery(this).attr("data-content");
1225		if (content) {
1226			jQuery(this).find(".lepopup-element-html-content").html("");
1227		}
1228	});
1229	setTimeout(function() {
1230		jQuery(active_page).hide();
1231	}, 500);
1232}
1233
1234
1235function lepopup_multiselect_changed(_object) {
1236	var container = jQuery(_object).closest(".lepopup-multiselect");
1237	var max_allowed = parseInt(jQuery(container).attr("data-max-allowed"), 10);
1238	if (max_allowed > 0) {
1239		var selected = jQuery(container).find("input:checked").length;
1240		if (selected >= max_allowed) {
1241			jQuery(container).find("input:not(:checked)").attr("disabled", "disabled");
1242		} else {
1243			jQuery(container).find("input:not(:checked)").removeAttr("disabled");
1244		}
1245	}
1246	lepopup_input_changed(_object);
1247}
1248function lepopup_input_changed(_object) {
1249	var element = jQuery(_object).closest(".lepopup-element");
1250	var type = jQuery(element).attr("data-type");
1251	var element_id = jQuery(element).attr("data-id");
1252	var form_uid = jQuery(_object).closest(".lepopup-form").attr("data-id");
1253	var form_id = jQuery(".lepopup-form-"+form_uid).attr("data-form-id");
1254	var session_length = jQuery(".lepopup-form-"+form_uid).attr("data-session");
1255	var session_enable = false;
1256	if (lepopup_is_numeric(session_length) && session_length > 0) session_enable = true;
1257	
1258	var var_values = new Array();
1259	var var_value = null;
1260	switch(type) {
1261		case 'signature':
1262			var_value = jQuery(_object).val();
1263			if (var_value != "") jQuery(".lepopup-form-"+form_uid).find(".lepopup-var-"+element_id).html("<img src='"+var_value+"' />");
1264			else jQuery(".lepopup-form-"+form_uid).find(".lepopup-var-"+element_id).text("");
1265			break;
1266		case 'file':
1267			jQuery(element).find(".lepopup-uploader-file-countable.lepopup-uploader-file-processed").each(function(){
1268				var_values.push(jQuery(this).attr("data-name"));
1269			});
1270			jQuery(".lepopup-form-"+form_uid).find(".lepopup-var-"+element_id).text(var_values.join(", "));
1271			break;
1272		case 'checkbox':
1273		case 'imageselect':
1274		case 'tile':
1275		case 'multiselect':
1276			jQuery(element).find("input").each(function(){
1277				if (jQuery(this).is(":checked")) var_values.push(jQuery(this).val());
1278			});
1279			if (session_enable) {
1280				lepopup_sessions[form_id]["values"][element_id] = var_values;
1281				lepopup_sessions[form_id]["modified"] = true;
1282			}
1283			jQuery(".lepopup-form-"+form_uid).find(".lepopup-var-"+element_id).text(var_values.join(", "));
1284			break;
1285		case 'rangeslider':
1286			var_value = jQuery(_object).val();
1287			if (session_enable) {
1288				lepopup_sessions[form_id]["values"][element_id] = var_value;
1289				lepopup_sessions[form_id]["modified"] = true;
1290			}
1291			var_value = var_value.replace(":", " ... ");
1292			jQuery(".lepopup-form-"+form_uid).find(".lepopup-var-"+element_id).text(var_value);
1293			break;
1294		case 'number':
1295			var_value = _lepopup_number_changed(_object);
1296			if (var_value === false) return false;
1297			if (session_enable) {
1298				lepopup_sessions[form_id]["values"][element_id] = jQuery(_object).val();
1299				lepopup_sessions[form_id]["modified"] = true;
1300			}
1301			jQuery(".lepopup-form-"+form_uid).find(".lepopup-var-"+element_id).text(jQuery(_object).val());
1302			break;
1303		default:
1304			var_value = jQuery(_object).val();
1305			if (session_enable) {
1306				lepopup_sessions[form_id]["values"][element_id] = var_value;
1307				lepopup_sessions[form_id]["modified"] = true;
1308			}
1309			jQuery(".lepopup-form-"+form_uid).find(".lepopup-var-"+element_id).text(var_value);
1310			break;
1311	}
1312	if (lepopup_customjs_handlers.hasOwnProperty(form_uid)) {
1313		lepopup_customjs_handlers[form_uid].errors = {};
1314		if (lepopup_customjs_handlers[form_uid].hasOwnProperty("afterupdate") && typeof lepopup_customjs_handlers[form_uid].afterupdate == 'function') {
1315			try {
1316				lepopup_customjs_handlers[form_uid].afterupdate(element_id);
1317			} catch(error) {
1318			}
1319		}
1320	}
1321	lepopup_handle_math(form_uid);
1322	var dependencies = jQuery(_object).closest(".lepopup-element").attr("data-deps").split(",");
1323	if (dependencies.length > 0) lepopup_handle_visibility(form_uid, dependencies, true);
1324	return false;
1325}
1326function _lepopup_number_changed(_object) {
1327	var decimal = parseInt(jQuery(_object).attr("data-decimal"), 10);
1328	var valid_value = jQuery(_object).attr("data-value");
1329	var value = jQuery(_object).val();
1330	var caret_position = _object.selectionStart;
1331	var value_parts = value.split(".");
1332	if (value == "" || value == "-" || value == ".") {
1333		jQuery(_object).attr("data-value", value);
1334		return true;
1335	}
1336	if (isNaN(parseFloat(value)) || !isFinite(value) || value_parts.length > 2 || (decimal == 0 && value_parts.length == 2)) {
1337		jQuery(_object).val(valid_value);
1338		_object.selectionStart = valid_value.length - (value.length - caret_position);
1339		_object.selectionEnd = valid_value.length - (value.length - caret_position);
1340		return false;
1341	}
1342	if (decimal > 0 && value_parts.length == 2 && (value_parts[1]).length > decimal) {
1343		value_parts[1] = (value_parts[1]).substr(0, decimal);
1344		value = value_parts.join(".");
1345		jQuery(_object).val(value);
1346		_object.selectionStart = caret_position;
1347		_object.selectionEnd = caret_position;
1348	}
1349	jQuery(_object).attr("data-value", value);
1350	return true;
1351}
1352function lepopup_number_unfocused(_object) {
1353	var min = jQuery(_object).attr("data-min");
1354	var max = jQuery(_object).attr("data-max");
1355	var value = jQuery(_object).val();
1356	if (!isNaN(parseFloat(value)) && isFinite(value)) {
1357		if (!isNaN(parseFloat(min)) && isFinite(min) && parseFloat(value) < parseFloat(min)) {
1358			jQuery(_object).val(min);
1359			lepopup_input_changed(_object);
1360		} else if (!isNaN(parseFloat(max)) && isFinite(max) && parseFloat(value) > parseFloat(max)) {
1361			jQuery(_object).val(max);
1362			lepopup_input_changed(_object);
1363		}
1364	}
1365}
1366function lepopup_numspinner_inc(_object) {
1367	var temp, start, end;
1368	var input = jQuery(_object).parent().find("input");
1369	var readonly = jQuery(input).attr("data-readonly");
1370	if (readonly == "on") return false;
1371	var value = jQuery(input).attr("data-value");
1372	var step = jQuery(input).attr("data-step");
1373	if (isNaN(parseFloat(step)) || !isFinite(step) || parseFloat(step) <= 0) {
1374		step = 1;
1375	}
1376	var decimal = parseInt(jQuery(input).attr("data-decimal"), 10);
1377	var mode = jQuery(input).attr("data-mode");
1378	if (mode == "simple") {
1379		var min = jQuery(input).attr("data-min");
1380		var max = jQuery(input).attr("data-max");
1381		if (isNaN(parseFloat(value)) || !isFinite(value)) {
1382			if (isNaN(parseFloat(min)) || !isFinite(min)) {
1383				value = 0;
1384			} else value = parseFloat(min);
1385		} else value = parseFloat(value);
1386		value = value + parseFloat(step);
1387		if (!isNaN(parseFloat(max)) && isFinite(max) && value > parseFloat(max)) value = parseFloat(max);
1388	} else {
1389		var raw_ranges = jQuery(input).attr("data-range");
1390		if (isNaN(parseFloat(value)) || !isFinite(value)) {
1391			value = 0;
1392		} else value = parseFloat(value);
1393		value = value + parseFloat(step);
1394		if (raw_ranges.length > 0) {
1395			var ranges = raw_ranges.split(",");
1396			for (var i=0; i<ranges.length; i++) {
1397				temp = ranges[i].split("...");
1398				start = parseFloat(temp[0]);
1399				if (temp.length > 1) end = parseFloat(temp[1]);
1400				else end = start;
1401				if (value < start) {
1402					value = start;
1403					break;
1404				} else if (value <= end) {
1405					break;
1406				} else if (i == ranges.length-1) {
1407					value = end;
1408					break;
1409				}
1410			}
1411		}
1412	}	
1413	jQuery(input).attr("data-value", value.toFixed(decimal));
1414	jQuery(input).val(value.toFixed(decimal));
1415	lepopup_input_error_hide(input);
1416	lepopup_input_changed(input);
1417	return false;
1418}
1419function lepopup_numspinner_dec(_object) {
1420	var temp, start, end;
1421	var input = jQuery(_object).parent().find("input");
1422	var readonly = jQuery(input).attr("data-readonly");
1423	if (readonly == "on") return false;
1424	var value = jQuery(input).attr("data-value");
1425	var step = jQuery(input).attr("data-step");
1426	var decimal = parseInt(jQuery(input).attr("data-decimal"), 10);
1427	var mode = jQuery(input).attr("data-mode");
1428	if (mode == "simple") {
1429		var min = jQuery(input).attr("data-min");
1430		var max = jQuery(input).attr("data-max");
1431		if (isNaN(parseFloat(value)) || !isFinite(value)) {
1432			if (isNaN(parseFloat(max)) || !isFinite(max)) {
1433				value = 0;
1434			} else value = parseFloat(max);
1435		} else value = parseFloat(value);
1436		if (isNaN(parseFloat(step)) || !isFinite(step) || parseFloat(step) <= 0) {
1437			step = 1;
1438		}
1439		value = value - parseFloat(step);
1440		if (!isNaN(parseFloat(min)) && isFinite(min) && value < parseFloat(min)) value = parseFloat(min);
1441	} else {
1442		var raw_ranges = jQuery(input).attr("data-range");
1443		if (isNaN(parseFloat(value)) || !isFinite(value)) {
1444			value = 0;
1445		} else value = parseFloat(value);
1446		value = value - parseFloat(step);
1447		if (raw_ranges.length > 0) {
1448			var ranges = raw_ranges.split(",");
1449			for (var i=ranges.length-1; i>=0; i--) {
1450				temp = ranges[i].split("...");
1451				start = parseFloat(temp[0]);
1452				if (temp.length > 1) end = parseFloat(temp[1]);
1453				else end = start;
1454				if (value > end) {
1455					value = end;
1456					break;
1457				} else if (value >= start) {
1458					break;
1459				} else if (i == 0) {
1460					value = start;
1461					break;
1462				}
1463			}
1464		}
1465	}	
1466	jQuery(input).attr("data-value", value.toFixed(decimal));
1467	jQuery(input).val(value.toFixed(decimal));
1468	lepopup_input_error_hide(input);
1469	lepopup_input_changed(input);
1470	return false;
1471}
1472function lepopup_is_visible(_form_id, _element_id) {
1473	var field, bool_value, field_values;
1474	var logic_rules = new Array();
1475	var logic = JSON.parse(jQuery("#lepopup-logic-"+_form_id).val());
1476	if (!logic.hasOwnProperty(_element_id)) return true;
1477	for (var i=0; i<logic[_element_id]['rules'].length; i++) {
1478		field = jQuery(".lepopup-form-"+_form_id).find("[name='lepopup-"+logic[_element_id]['rules'][i]['field']+"']");
1479		if (field.length == 0) field = jQuery(".lepopup-form-"+_form_id).find("[name='lepopup-"+logic[_element_id]['rules'][i]['field']+"[]']");
1480		field_values = new Array()
1481		jQuery(field).each(function(){
1482			var field_type = jQuery(this).attr("type");
1483			if (field_type == "checkbox" || field_type == "radio" || field_type == "multiselect" || field_type == "imageselect" || field_type == "tile" || field_type == "star-rating") {
1484				if (jQuery(this).is(":checked")) field_values.push(jQuery(this).val());
1485			} else field_values.push(jQuery(this).val());
1486		});
1487		bool_value = false;
1488		switch(logic[_element_id]['rules'][i]['rule']) {
1489			case 'is':
1490				if (field_values.indexOf(logic[_element_id]['rules'][i]['token']) >= 0) logic_rules.push(true);
1491				else logic_rules.push(false);
1492				break;
1493			case 'is-not':
1494				if (field_values.indexOf(logic[_element_id]['rules'][i]['token']) == -1) logic_rules.push(true);
1495				else logic_rules.push(false);
1496				break;
1497			case 'is-empty':
1498				for (var j=0; j<field_values.length; j++) {
1499					if (field_values[j] != null && field_values[j] != "") {
1500						bool_value = true;
1501						break;
1502					}
1503				}
1504				logic_rules.push(!bool_value);
1505				break;
1506			case 'is-not-empty':
1507				for (var j=0; j<field_values.length; j++) {
1508					if (field_values[j] != null && field_values[j] != "") {
1509						bool_value = true;
1510						break;
1511					}
1512				}
1513				logic_rules.push(bool_value);
1514				break;
1515			case 'is-greater':
1516				for (var j=0; j<field_values.length; j++) {
1517					if (parseFloat(field_values[j]) > parseFloat(logic[_element_id]['rules'][i]['token'])) {
1518						bool_value = true;
1519						break;
1520					}
1521				}
1522				logic_rules.push(bool_value);
1523				break;
1524			case 'is-less':
1525				for (var j=0; j<field_values.length; j++) {
1526					if (parseFloat(field_values[j]) < parseFloat(logic[_element_id]['rules'][i]['token'])) {
1527						bool_value = true;
1528						break;
1529					}
1530				}
1531				logic_rules.push(bool_value);
1532				break;
1533			case 'contains':
1534				for (var j=0; j<field_values.length; j++) {
1535					if (logic[_element_id]['rules'][i]['token'] != "" && field_values[j].indexOf(logic[_element_id]['rules'][i]['token']) >= 0) {
1536						bool_value = true;
1537						break;
1538					}
1539				}
1540				logic_rules.push(bool_value);
1541				break;
1542			case 'starts-with':
1543				for (var j=0; j<field_values.length; j++) {
1544					if (logic[_element_id]['rules'][i]['token'] != "" && field_values[j].substring(0, logic[_element_id]['rules'][i]['token'].length) === logic[_element_id]['rules'][i]['token']) {
1545						bool_value = true;
1546						break;
1547					}
1548				}
1549				logic_rules.push(bool_value);
1550				break;
1551			case 'ends-with':
1552				for (var j=0; j<field_values.length; j++) {
1553					if (logic[_element_id]['rules'][i]['token'] != "" && field_values[j].substring(field_values[j].length - logic[_element_id]['rules'][i]['token'].length) === logic[_element_id]['rules'][i]['token']) {
1554						bool_value = true;
1555						break;
1556					}
1557				}
1558				logic_rules.push(bool_value);
1559				break;
1560			default:
1561				break;
1562		}
1563	}
1564	bool_value = false;
1565	if (logic[_element_id]['operator'] == "and") {
1566		if (logic_rules.indexOf(false) == -1) bool_value = true;
1567	} else {
1568		if (logic_rules.indexOf(true) >= 0) bool_value = true;
1569	}
1570	if (logic[_element_id]['action'] == 'hide') bool_value = !bool_value;
1571			
1572	return bool_value;
1573}
1574function lepopup_handle_visibility(_form_id, _ids, _immediately) {
1575	if (jQuery("#lepopup-logic-"+_form_id).length == 0) return false;
1576	var logic = JSON.parse(jQuery("#lepopup-logic-"+_form_id).val());
1577	for (var key in logic) {
1578		if (logic.hasOwnProperty(key)) {
1579			if (Array.isArray(_ids) && _ids.indexOf(key) == -1) continue;
1580			if (lepopup_is_visible(_form_id, key)) {
1581				if (_immediately == true) jQuery(".lepopup-form-"+_form_id).find(".lepopup-element-"+key).show();
1582				else {
1583					jQuery(".lepopup-form-"+_form_id).find(".lepopup-element-"+key).css({"position" : "relative"});
1584					jQuery(".lepopup-form-"+_form_id).find(".lepopup-element-"+key).fadeIn(200);
1585				}
1586			} else {
1587				if (_immediately == true) jQuery(".lepopup-form-"+_form_id).find(".lepopup-element-"+key).hide();
1588				else {
1589					jQuery(".lepopup-form-"+_form_id).find(".lepopup-element-"+key).css({"position" : "absolute"});
1590					jQuery(".lepopup-form-"+_form_id).find(".lepopup-element-"+key).fadeOut(200);
1591				}
1592			}
1593		}
1594	}
1595	return false;
1596}
1597function lepopup_mask_init(_set) {
1598	if (lepopup_vars["mode"] == "remote" && lepopup_vars["plugins"].indexOf("jquery.mask") >= 0 && typeof jQuery.fn.mask == typeof undefined) {
1599		setTimeout(function(){lepopup_mask_init(_set);}, 1000);
1600	}
1601	if (typeof jQuery.fn.mask == typeof undefined) return;
1602	jQuery(_set).each(function(){
1603		var mask = jQuery(this).attr("data-xmask");
1604		if (mask) jQuery(this).mask(mask);
1605	});
1606}
1607function lepopup_submit(_object, _action) {
1608	var prev_page_id;
1609	clearTimeout(lepopup_timeout);
1610	var button_pressed = false;
1611	if (jQuery(_object).hasClass("lepopup-button")) button_pressed = true;
1612	var form_uid = jQuery(_object).closest(".lepopup-form").attr("data-id");
1613	var form_slug = jQuery(_object).closest(".lepopup-form").attr("data-slug");
1614	var form_id = jQuery(_object).closest(".lepopup-form").attr("data-form-id");
1615	var page_id = jQuery(_object).closest(".lepopup-form").attr("data-page");
1616	var session_length = jQuery(_object).closest(".lepopup-form").attr("data-session");
1617	var allowed_actions = new Array("next", "prev", "submit");
1618	if (typeof _action == undefined || _action == "") _action = "submit";
1619	else if (allowed_actions.indexOf(_action) == -1) _action = "submit";
1620	jQuery(".lepopup-form-"+form_uid).find(".lepopup-element-error").fadeOut(300, function(){
1621		jQuery(this).remove();
1622	});
1623	var is_popup = false;
1624	if (lepopup_popup_active_id && jQuery(_object).closest(".lepopup-form").parent().hasClass("lepopup-popup-container")) is_popup = true;
1625	if (_action == "prev") {
1626		lepopup_sending = false;
1627		if (lepopup_seq_pages.hasOwnProperty(form_uid) && lepopup_seq_pages[form_uid].length > 0) {
1628			prev_page_id = lepopup_seq_pages[form_uid][lepopup_seq_pages[form_uid].length-1];
1629			lepopup_seq_pages[form_uid].splice(lepopup_seq_pages[form_uid].length-1, 1);
1630			if (is_popup) {
1631				_lepopup_popup_page_open(prev_page_id);
1632				jQuery("#lepopup-popup-"+lepopup_popup_active_id).stop().animate({scrollTop: 0}, 300);
1633			} else {
1634				jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").fadeOut(300, function(){
1635					jQuery(this).find(".lepopup-element[data-content]").each(function(){
1636						jQuery(this).find(".lepopup-element-html-content").html("");
1637					});
1638					jQuery(".lepopup-form-"+form_uid+"[data-page='"+prev_page_id+"']").fadeIn(300).find(".lepopup-element[data-content]").each(function(){
1639						jQuery(this).find(".lepopup-element-html-content").html(lepopup_decode64(jQuery(this).attr("data-content")));
1640					});
1641					lepopup_resize();
1642				});
1643			}
1644			return false;
1645		} else return false;
1646	}
1647
1648	if (button_pressed) {
1649		var original_icon = jQuery(_object).attr("data-original-icon");
1650		if (typeof original_icon === typeof undefined || original_icon === false) {
1651			original_icon = jQuery(_object).children("i").first().attr("class");
1652			if (typeof original_icon !== typeof undefined && original_icon !== false) {
1653				jQuery(_object).attr("data-original-icon", original_icon);
1654			}
1655		}
1656		jQuery(_object).children("i").first().attr("class", "lepopup-if lepopup-if-spinner lepopup-if-spin");
1657		jQuery(_object).find("span").text(jQuery(_object).attr("data-loading"));
1658	}
1659	
1660	jQuery(".lepopup-form-"+form_uid).find(".lepopup-button").addClass("lepopup-button-disabled");
1661	jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").children(".lepopup-confirmaton-message").slideUp(300, function(){
1662		jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").children(".lepopup-confirmaton-message").remove();
1663	});
1664
1665	if (lepopup_uploads.hasOwnProperty(form_uid)) {
1666		var waiting_upload = false;
1667		for (var upload_id in lepopup_uploads[form_uid]) {
1668			if ((lepopup_uploads[form_uid]).hasOwnProperty(upload_id)) {
1669				if (lepopup_uploads[form_uid][upload_id] == "LOADING") {
1670					waiting_upload = true;
1671				}
1672			}
1673		}
1674		if (waiting_upload) {
1675			setTimeout(function(){
1676				lepopup_submit(_object, _action);
1677			}, 500);
1678			return false;
1679		}
1680	}
1681	
1682	if (lepopup_sending) return false;
1683	lepopup_sending = true;
1684
1685	var all_pages = new Array();
1686	jQuery(".lepopup-form-"+form_uid).each(function(){
1687		all_pages.push(jQuery(this).attr("data-page"));
1688	});
1689	
1690	if (typeof SignaturePad != typeof undefined) {
1691		jQuery(".lepopup-form-"+form_uid).find(".lepopup-signature").each(function(){
1692			var element_id = jQuery(this).closest(".lepopup-element").attr("data-id");
1693			if (lepopup_signatures.hasOwnProperty(form_uid+"-"+element_id)) {
1694				var data_url = "";
1695				if (!(lepopup_signatures[form_uid+"-"+element_id]).isEmpty()) data_url = (lepopup_signatures[form_uid+"-"+element_id]).toDataURL();
1696				jQuery(this).closest(".lepopup-element").find("input").val(data_url);
1697			}
1698		});
1699	}
1700
1701	var xd = jQuery(".lepopup-form-"+form_uid).attr("data-xd");
1702	if (!xd) xd = "off";
1703
1704	var post_data = {"action" : "lepopup-front-"+_action, "campaign-slug" : lepopup_campaign_active_slug, "form-id" : form_id, "page-id" : page_id, "form-data" : lepopup_encode64(jQuery(".lepopup-form-"+form_uid).find("textarea, input, select").serialize()), "hostname" : window.location.hostname, "page-title" : lepopup_consts["page-title"]};
1705	if (lepopup_customjs_handlers.hasOwnProperty(form_uid)) {
1706		lepopup_customjs_handlers[form_uid].errors = {};
1707		if (lepopup_customjs_handlers[form_uid].hasOwnProperty("beforesubmit") && typeof lepopup_customjs_handlers[form_uid].beforesubmit == 'function') {
1708			try {
1709				lepopup_customjs_handlers[form_uid].beforesubmit();
1710			} catch(error) {
1711			}
1712		}
1713	}
1714	jQuery.ajax({
1715		url		:	lepopup_vars['ajax-url'],
1716		data	:	post_data,
1717		method	:	(lepopup_vars["mode"] == "remote" && xd == "on" ? "get" : "post"),
1718		dataType:	(lepopup_vars["mode"] == "remote" && xd == "on" ? "jsonp" : "json"),
1719		async	:	true,
1720		success	: function(return_data) {
1721			try {
1722				var data, temp;
1723				if (typeof return_data == 'object') data = return_data;
1724				else data = jQuery.parseJSON(return_data);
1725				if (data.status == "OK") {
1726					if (lepopup_vars["overlays"].hasOwnProperty(form_slug)) {
1727						if (parseInt(lepopup_vars["overlays"][form_slug][9], 10) > 0) {
1728							lepopup_write_cookie("lepopup-submit-"+form_slug, lepopup_vars["cookie-value"], parseInt(lepopup_vars["overlays"][form_slug][9], 10)*24);
1729							if (lepopup_campaign_active_slug) lepopup_write_cookie("lepopup-submit-"+lepopup_campaign_active_slug, lepopup_vars["cookie-value"], parseInt(lepopup_vars["overlays"][form_slug][9], 10)*24);
1730						}
1731					} else {
1732						lepopup_write_cookie("lepopup-submit-"+form_slug, lepopup_vars["cookie-value"], 365*24);
1733						if (lepopup_campaign_active_slug) lepopup_write_cookie("lepopup-submit-"+lepopup_campaign_active_slug, lepopup_vars["cookie-value"], 365*24);
1734					}
1735					if (data.hasOwnProperty("record-id")) {
1736						jQuery(".lepopup-form-"+form_uid+" .lepopup-const-record-id").text(data["record-id"]);
1737					}
1738					if (lepopup_is_numeric(session_length) && session_length > 0) {
1739						lepopup_write_cookie("lepopup-session-"+form_id, "", 0);
1740						if (lepopup_sessions.hasOwnProperty(form_id)) delete lepopup_sessions[form_id];
1741					}
1742					if (data.hasOwnProperty("error")) console.log(data["error"]);
1743					if (typeof lepopupext_submit_after == 'function') {
1744						lepopupext_submit_after(form_slug);
1745					}
1746					if (lepopup_customjs_handlers.hasOwnProperty(form_uid)) {
1747						lepopup_customjs_handlers[form_uid].errors = {};
1748						if (lepopup_customjs_handlers[form_uid].hasOwnProperty("aftersubmitsuccess") && typeof lepopup_customjs_handlers[form_uid].aftersubmitsuccess == 'function') {
1749							try {
1750								lepopup_customjs_handlers[form_uid].aftersubmitsuccess();
1751							} catch(error) {
1752							}
1753						}
1754					}
1755					if (data.hasOwnProperty("forms")) {
1756						jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").append(data["forms"]);
1757						jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").find(".lepopup-send").trigger("click");
1758					}
1759					// linklocker - begin
1760					lepopup_unlock_links(form_slug);
1761					if (lepopup_campaign_active_slug) lepopup_unlock_links(lepopup_campaign_active_slug);
1762					if (lepopup_forced_location) {
1763						data.type = "redirect";
1764						data.url = lepopup_forced_location;
1765					}
1766					// linklocker - end
1767					switch (data.type) {
1768						case 'redirect':
1769							if (data['reset-form'] == "on") lepopup_reset_form(form_uid);
1770							var lepopup_safe = lepopup_safe_url(data.url);
1771							if (lepopup_safe) location.href = lepopup_safe;
1772							break;
1773						case 'payment':
1774							if (data['reset-form'] == "on") lepopup_reset_form(form_uid);
1775							if (data.hasOwnProperty("payment-form")) {
1776								jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").append(data["payment-form"]);
1777								jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").find(".lepopup-pay").trigger("click");
1778							} else if (data.hasOwnProperty("payment-message")) {
1779								lepopup_popup_message_open(data["payment-message"]);
1780							} else if (data.hasOwnProperty("payumoney")) {
1781								lepopup_payumoney_checkout(data["payumoney"]["request-data"]);
1782							}
1783							break;
1784						case 'page-redirect':
1785						case 'page-payment':
1786							if (parseInt(data.delay, 10) > 0) {
1787								setTimeout(function(){
1788									if (data['reset-form'] == "on") lepopup_reset_form(form_uid);
1789									if (data.type == 'page-redirect') {
1790										var lepopup_safe = lepopup_safe_url(data.url);
1791										if (lepopup_safe) location.href = lepopup_safe;
1792									}
1793									else {
1794										if (data.hasOwnProperty("payment-form")) {
1795											jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").append(data["payment-form"]);
1796											jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").find(".lepopup-pay").trigger("click");
1797										} else if (data.hasOwnProperty("payment-message")) {
1798											lepopup_popup_message_open(data["payment-message"]);
1799										} else if (data.hasOwnProperty("payumoney")) {
1800											lepopup_payumoney_checkout(data["payumoney"]["request-data"]);
1801										}
1802									}
1803								}, 1000*parseInt(data.delay, 10));
1804							} else {
1805								if (data.type == 'page-redirect') {
1806									var lepopup_safe = lepopup_safe_url(data.url);
1807									if (lepopup_safe) location.href = lepopup_safe;
1808								}
1809								else {
1810									if (data.hasOwnProperty("payment-form")) {
1811										jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").append(data["payment-form"]);
1812										jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").find(".lepopup-pay").trigger("click");
1813									} else if (data.hasOwnProperty("payment-message")) {
1814										lepopup_popup_message_open(data["payment-message"]);
1815									} else if (data.hasOwnProperty("payumoney")) {
1816										lepopup_payumoney_checkout(data["payumoney"]["request-data"]);
1817									}
1818								}
1819							}
1820						case 'page':
1821							if (!lepopup_seq_pages.hasOwnProperty(form_uid)) lepopup_seq_pages[form_uid] = new Array();
1822							lepopup_seq_pages[form_uid].push(page_id);
1823							if (is_popup) {
1824								_lepopup_popup_page_open('confirmation');
1825								jQuery("#lepopup-popup-"+lepopup_popup_active_id).stop().animate({scrollTop: 0}, 300);
1826								if (parseInt(data.delay, 10) > 0) {
1827									setTimeout(function(){
1828										if (data['reset-form'] == "on") lepopup_reset_form(form_uid);
1829										lepopup_popup_active_close(0);
1830									}, 1000*parseInt(data.delay, 10));
1831								}								
1832							} else {
1833								jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").fadeOut(300, function(){
1834									jQuery(this).find(".lepopup-element[data-content]").each(function(){
1835										jQuery(this).find(".lepopup-element-html-content").html("");
1836									});
1837									jQuery(".lepopup-form-"+form_uid+"[data-page='confirmation']").fadeIn(300).find(".lepopup-element[data-content]").each(function(){
1838										jQuery(this).find(".lepopup-element-html-content").html(lepopup_decode64(jQuery(this).attr("data-content")));
1839									});
1840									var element_top = jQuery(".lepopup-form-"+form_uid+"[data-page='confirmation']").offset().top;
1841									var viewport_top = jQuery(window).scrollTop();
1842									var viewport_bottom = viewport_top + jQuery(window).height();
1843									if (element_top < viewport_top || element_top > viewport_bottom) {
1844										jQuery('html, body').stop().animate({scrollTop: element_top-60}, 300);
1845									}
1846									lepopup_resize();
1847								});
1848							}
1849							break;
1850						case 'form':
1851							if (!lepopup_seq_pages.hasOwnProperty(form_uid)) lepopup_seq_pages[form_uid] = new Array();
1852							lepopup_seq_pages[form_uid].push(page_id);
1853							if (data['reset-form'] == "on") lepopup_reset_form(form_uid);
1854							lepopup_popup_open(data.form);
1855							if (parseInt(data.delay, 10) > 0) {
1856								lepopup_timeout = setTimeout(function(){
1857									lepopup_popup_active_close(0);
1858								}, 1000*parseInt(data.delay, 10));
1859							}								
1860							break;
1861						default:
1862							if (!lepopup_seq_pages.hasOwnProperty(form_uid)) lepopup_seq_pages[form_uid] = new Array();
1863							lepopup_seq_pages[form_uid].push(page_id);
1864							if (data['reset-form'] == "on") lepopup_reset_form(form_uid);
1865							if (is_popup) {
1866								lepopup_popup_active_close(0);
1867							}
1868							break;
1869					}
1870					lepopup_track(form_uid, "lepopup", "submit");
1871				} else if (data.status == "NEXT") {
1872					if (!lepopup_seq_pages.hasOwnProperty(form_uid)) lepopup_seq_pages[form_uid] = new Array();
1873					lepopup_seq_pages[form_uid].push(page_id);
1874					if (is_popup) {
1875						_lepopup_popup_page_open(data.page);
1876						jQuery("#lepopup-popup-"+lepopup_popup_active_id).stop().animate({scrollTop: 0}, 300);
1877					} else {
1878						jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").fadeOut(300, function(){
1879							jQuery(this).find(".lepopup-element[data-content]").each(function(){
1880								jQuery(this).find(".lepopup-element-html-content").html("");
1881							});
1882							jQuery(".lepopup-form-"+form_uid+"[data-page='"+data.page+"']").fadeIn(300).find(".lepopup-element[data-content]").each(function(){
1883								jQuery(this).find(".lepopup-element-html-content").html(lepopup_decode64(jQuery(this).attr("data-content")));
1884							});
1885							
1886							var element_top = jQuery(".lepopup-form-"+form_uid+"[data-page='"+data.page+"']").offset().top;
1887							var viewport_top = jQuery(window).scrollTop();
1888							var viewport_bottom = viewport_top + jQuery(window).height();
1889							if (element_top < viewport_top || element_top > viewport_bottom) {
1890								jQuery('html, body').stop().animate({scrollTop: element_top-60}, 300);
1891							}
1892							lepopup_resize();
1893						});
1894					}
1895				} else if (data.status == "ERROR") {
1896					var min_index = null;
1897					var element_error = null, element_position = null;
1898					for (var id in data["errors"]) {
1899						if (data["errors"].hasOwnProperty(id)) {
1900							temp = id.split(":");
1901							if (all_pages.indexOf(temp[0]) >= 0) {
1902								if (min_index == null) min_index = all_pages.indexOf(temp[0]);
1903								else if (all_pages.indexOf(temp[0]) < min_index) min_index = all_pages.indexOf(temp[0]);
1904							}
1905							//jQuery(".lepopup-form-"+form_uid+"[data-page='"+temp[0]+"']").find(".lepopup-element-"+temp[1]).find(".lepopup-input").append("<div class='lepopup-element-error'><span>"+data["errors"][id]+"</span></div>");
1906							//jQuery(".lepopup-form-"+form_uid+"[data-page='"+temp[0]+"']").find(".lepopup-element-"+temp[1]).find(".lepopup-uploader").append("<div class='lepopup-uploader-error'><span>"+data["errors"][id]+"</span></div>");
1907							element_error = jQuery(".lepopup-form-"+form_uid+"[data-page='"+temp[0]+"']").find(".lepopup-element-"+temp[1]);
1908							element_position = {
1909								left: jQuery(element_error).attr("data-left"),
1910								top: jQuery(element_error).attr("data-top")
1911							};
1912							jQuery(".lepopup-form-"+form_uid+"[data-page='"+temp[0]+"']").find(".lepopup-form-inner").append("<div class='lepopup-element-error lepopup-element-error-"+temp[1]+"'><span>"+data["errors"][id]+"</span></div>");
1913							jQuery(".lepopup-form-"+form_uid+"[data-page='"+temp[0]+"']").find(".lepopup-element-error-"+temp[1]).css({"top" : parseInt(parseInt(element_position.top, 10)+parseInt(jQuery(element_error).height(), 10), 10)+"px", "left" : element_position.left+"px"});
1914						}
1915					}
1916					if (min_index != null && all_pages[min_index] != page_id) {
1917						for (var i=min_index; i<all_pages.length; i++) {
1918							if (lepopup_seq_pages[form_uid].indexOf(all_pages[i]) >= 0) lepopup_seq_pages[form_uid].splice(lepopup_seq_pages[form_uid].indexOf(all_pages[i]), 1);
1919						}
1920						jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"']").fadeOut(300, function(){
1921							jQuery(".lepopup-form-"+form_uid+"[data-page='"+all_pages[min_index]+"']").fadeIn(300);
1922							page_id = all_pages[min_index];
1923							jQuery(".lepopup-form-"+form_uid).find(".lepopup-element-error").fadeIn(300);
1924						});
1925					} else jQuery(".lepopup-form-"+form_uid).find(".lepopup-element-error").fadeIn(300);
1926					jQuery(".lepopup-form-"+form_uid+"[data-page='"+page_id+"'] .lepopup-element").each(function(){
1927						if (jQuery(this).find(".lepopup-element-error").length > 0) {
1928							if (is_popup) {
1929								jQuery("#lepopup-popup-"+lepopup_popup_active_id).stop().animate({scrollTop: 0}, 300);
1930								return false;
1931							} else {
1932								var element_top = jQuery(this).offset().top;
1933								var viewport_top = jQuery(window).scrollTop();
1934								var viewport_bottom = viewport_top + jQuery(window).height();
1935								if (element_top < viewport_top || element_top > viewport_bottom) {
1936									jQuery('html, body').stop().animate({scrollTop: element_top-60}, 300);
1937									return false;
1938								}
1939							}
1940						}
1941					});
1942				} else if (data.status == "FATAL") {
1943					lepopup_global_message_show("danger", data.message);
1944				} else {
1945					
1946				}
1947			} catch(error) {
1948				console.log(error);
1949			}
1950			if (button_pressed) {
1951				jQuery(_object).find("span").text(jQuery(_object).attr("data-label"));
1952				var original_icon = jQuery(_object).attr("data-original-icon");
1953				if (typeof original_icon !== typeof undefined && original_icon !== false) jQuery(_object).children("i").first().attr("class", original_icon);
1954			}
1955			jQuery(".lepopup-form-"+form_uid).find(".lepopup-button").removeClass("lepopup-button-disabled");
1956			lepopup_sending = false;
1957		},
1958		error	: function(XMLHttpRequest, textStatus, errorThrown) {
1959			console.log(errorThrown);
1960			if (button_pressed) {
1961				jQuery(_object).find("span").text(jQuery(_object).attr("data-label"));
1962				var original_icon = jQuery(_object).attr("data-original-icon");
1963				if (typeof original_icon !== typeof undefined && original_icon !== false) jQuery(_object).children("i").first().attr("class", original_icon);
1964			}
1965			jQuery(".lepopup-form-"+form_uid).find(".lepopup-button").removeClass("lepopup-button-disabled");
1966			lepopup_sending = false;
1967		}
1968	});
1969	return false;
1970}
1971function lepopup_popup_message_open(_html) {
1972	jQuery('body').append("<div class='lepopup-popup-message-overlay'></div>");
1973	jQuery(".lepopup-popup-message-overlay").fadeIn(300);
1974	jQuery('body').append("<div class='lepopup-popup-message'><div class='lepopup-popup-message-content'><span class='lepopup-popup-message-close' onclick='lepopup_popup_message_close();'><i class='lepopup-if lepopup-if-times'></i></span>"+_html+"</div></div>");
1975	jQuery(".lepopup-popup-message").fadeIn(300);
1976}
1977function lepopup_popup_message_close() {
1978	jQuery(".lepopup-popup-message").fadeOut(300, function(){
1979		jQuery(".lepopup-popup-message").remove();
1980		jQuery(".lepopup-popup-message-overlay").fadeOut(300, function(){
1981			jQuery(".lepopup-popup-message-overlay").remove();
1982		});
1983	});
1984}
1985function lepopup_handle_math(_form_uid) {
1986	if (lepopup_vars["mode"] == "remote" && lepopup_vars["plugins"].indexOf("jsep") >= 0 && typeof jsep == typeof undefined) {
1987		setTimeout(function(){lepopup_handle_math(_form_uid);}, 500);
1988	}
1989	jQuery(".lepopup-form-"+_form_uid).parent().find("input.lepopup-math").each(function(){
1990		var replacement, from_element, type, value, values, parse_tree, ref_date ;
1991		var id = jQuery(this).attr("data-id");
1992		var expression = jQuery(this).attr("data-expression");
1993		var var_value = jQuery(this).attr("data-default");
1994		var decimal_digits = parseInt(jQuery(this).attr("data-decimal"), 10);
1995		var ids_raw = jQuery(this).attr("data-ids");
1996		var ids = ids_raw.split(",");
1997		jQuery(this).val("");
1998		for (var j=0; j<ids.length; j++) {
1999			from_element = jQuery(".lepopup-form-"+_form_uid+" .lepopup-element-"+ids[j]);
2000			if (from_element.length > 0) {
2001				if (lepopup_is_visible(_form_uid, ids[j])) {
2002					type = jQuery(from_element).attr("data-type");
2003					switch (type) {
2004						case 'file':
2005							replacement = 0;
2006							jQuery(from_element).find(".lepopup-uploader-file-countable.lepopup-uploader-file-processed").each(function(){
2007								replacement++;
2008							});
2009							break;
2010						case 'date':
2011							value = lepopup_date(jQuery(from_element).find("input").val(), jQuery(from_element).find("input").attr("data-format"));
2012							ref_date = new Date(2000, 0, 1);
2013							if (value != null) {
2014								replacement = parseInt(Math.round((value-ref_date)/(1000*60*60*24)), 10);
2015							} else replacement = 'error';
2016							break;
2017						case 'time':
2018							replacement = 0;
2019							break;
2020						case 'email':
2021						case 'text':
2022						case 'number':
2023						case 'numspinner':
2024							value = lepopup_extract_number(jQuery(from_element).find("input").val());
2025							if (isNaN(parseFloat(value)) || !isFinite(value)) replacement = 'error';
2026							else replacement = parseFloat(value);
2027							break;
2028						case 'textarea':
2029							value = lepopup_extract_number(jQuery(from_element).find("textarea").val());
2030							replacement = parseFloat(value);
2031							break;
2032						case 'select':
2033							value = lepopup_extract_number(jQuery(from_element).find("select").val());
2034							if (isNaN(parseFloat(value)) || !isFinite(value)) replacement = 'error';
2035							else replacement = parseFloat(value);
2036							break;
2037						case 'radio':
2038						case 'checkbox':
2039						case 'imageselect':
2040						case 'tile':
2041						case 'multiselect':
2042						case 'star-rating':
2043							replacement = 0;
2044							jQuery(from_element).find("input").each(function(){
2045								if (jQuery(this).is(":checked")) {
2046									value = lepopup_extract_number(jQuery(this).val());
2047									if (isNaN(parseFloat(value)) || !isFinite(value)) {
2048										replacement = 'error';
2049										return false;
2050									}
2051									replacement += parseFloat(value);
2052								};
2053							});
2054							break;
2055						case 'rangeslider':
2056							value = lepopup_extract_number(jQuery(from_element).find("input").val());
2057							values = value.split(":");
2058							if (values.length == 1) {
2059								if (isNaN(parseFloat(value)) || !isFinite(value)) replacement = 'error';
2060								else replacement = parseFloat(value);
2061							} else if (values.length == 2) {
2062								if (isNaN(parseFloat(values[0])) || !isFinite(values[0]) || isNaN(parseFloat(values[1])) || !isFinite(values[1])) replacement = 'error';
2063								else replacement = (parseFloat(values[0]) + parseFloat(values[1]))/2;
2064							} else replacement = 'error';
2065							break;
2066						default:
2067							replacement = 0;
2068							break;
2069					}
2070				} else replacement = 0;
2071				expression = expression.split("{"+ids[j]+"}").join(replacement);
2072			} else {
2073				from_element = jQuery(".lepopup-form-"+_form_uid+" .lepopup-hidden[name='lepopup-"+ids[j]+"']");
2074				if (from_element.length > 0) {
2075					value = lepopup_extract_number(jQuery(from_element).val());
2076					if (isNaN(parseFloat(value)) || !isFinite(value)) replacement = 'error';
2077					else replacement = parseFloat(value);
2078					expression = expression.split("{"+ids[j]+"}").join(replacement);
2079				}
2080			}
2081		}
2082		if (typeof jsep != typeof undefined) {
2083			try {
2084				parse_tree = jsep(expression);
2085				if (parse_tree.type == 'Compound') value = parseFloat(expression);
2086				else {
2087					value = lepopup_jsep_calc(parse_tree);
2088				}
2089				if (value !== false) {
2090					jQuery(this).val(value);
2091					var_value = value.toFixed(decimal_digits);
2092				}
2093			} catch(error) {
2094			}
2095		}
2096		jQuery(".lepopup-form-"+_form_uid+" .lepopup-var-"+id).text(var_value);
2097	});
2098}
2099function lepopup_jsep_calc(_parse_tree) {
2100	var left, right;
2101	if (typeof _parse_tree != typeof {}) {
2102		return false;
2103	} else if (_parse_tree.type == "BinaryExpression") {
2104		left = lepopup_jsep_calc(_parse_tree.left);
2105		right = lepopup_jsep_calc(_parse_tree.right);
2106		if (left === false || right === false) return false;
2107		if (_parse_tree.operator == "+") return parseFloat(left+right);
2108		else if (_parse_tree.operator == "-") return parseFloat(left-right);
2109		else if (_parse_tree.operator == "*") return parseFloat(left*right);
2110		else if (_parse_tree.operator == "/" && right != 0) return parseFloat(left/right);
2111		else return false;
2112	} else if (_parse_tree.type == "UnaryExpression") {
2113		left = 0;
2114		right = lepopup_jsep_calc(_parse_tree.argument);
2115		if (_parse_tree.operator == "+") return parseFloat(left+right);
2116		else if (_parse_tree.operator == "-") return parseFloat(left-right);
2117		else if (_parse_tree.operator == "*") return parseFloat(left*right);
2118		else if (_parse_tree.operator == "/" && right != 0) return parseFloat(left/right);
2119		else return false;
2120	} else if (_parse_tree.type == "Literal") {
2121		return parseFloat(_parse_tree.value);
2122	} else return false;
2123}
2124function lepopup_consts_update(_form_uid, _consts) {
2125	var selector = ".lepopup-const";
2126	if (_form_uid != null) selector = ".lepopup-form-"+_form_uid+" .lepopup-const";
2127	jQuery(selector).each(function(){
2128		var element_id = jQuery(this).attr("data-id");
2129		if (_consts.hasOwnProperty(element_id)) {
2130			jQuery(this).text(_consts[element_id]);
2131		}
2132	});
2133}
2134function lepopup_reset_form(_form_uid) {
2135	var input, default_value = "";
2136	jQuery(".lepopup-form-"+_form_uid+" .lepopup-hidden").each(function(){
2137		var url_parameter = null;
2138		var element_id = jQuery(this).attr("data-id");
2139		var dynamic_parameter = jQuery(this).attr("data-dynamic");
2140		if (typeof dynamic_parameter != "undefined" && dynamic_parameter != "") {
2141			url_parameter = lepopup_query_parameter(dynamic_parameter);
2142		}
2143		if (url_parameter != null) default_value = url_parameter;
2144		else default_value = jQuery(this).attr("data-default");
2145		jQuery(this).val(default_value);
2146		jQuery(".lepopup-form-"+_form_uid+" .lepopup-var-"+element_id).text(default_value);
2147	});
2148	lepopup_consts_update(_form_uid, lepopup_consts);
2149	var form_id = jQuery(".lepopup-form-"+_form_uid).attr("data-form-id");
2150	lepopup_sessions[form_id] = {"modified" : false, "values" : {}};
2151	var session_length = jQuery(".lepopup-form-"+_form_uid).attr("data-session");
2152	var session_enable = false;
2153	if (lepopup_is_numeric(session_length) && session_length > 0) {
2154		session_enable = true;
2155		try {
2156			var cookie_session = JSON.parse(lepopup_read_cookie("lepopup-session-"+form_id));
2157			if (cookie_session != null) lepopup_sessions[form_id]["values"] = cookie_session;
2158		} catch(error) {
2159		}
2160	}
2161	jQuery(".lepopup-form-"+_form_uid+" .lepopup-element").each(function(){
2162		var url_parameters, url_parameter = null;
2163		var var_values = new Array();
2164		var type = jQuery(this).attr("data-type");
2165		var temp, upload_id;
2166		var element_id = jQuery(this).attr("data-id");
2167		var dynamic_parameter = jQuery(this).attr("data-dynamic");
2168		if (typeof dynamic_parameter != "undefined" && dynamic_parameter != "") {
2169			url_parameter = lepopup_query_parameter(dynamic_parameter);
2170		}
2171		switch (type) {
2172			case 'file':
2173				jQuery(this).find(".lepopup-uploader-files").html("");
2174				upload_id = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
2175				temp = lepopup_decode64(jQuery(this).find(".lepopup-uploader-template").val());
2176				temp = temp.replace(new RegExp("%%upload-id%%", 'g'), upload_id).replace(new RegExp("%%ajax-url%%", 'g'), lepopup_vars["ajax-url"]);
2177				jQuery(this).find(".lepopup-uploaders").html(temp);
2178				break;
2179			case 'date':
2180				input = jQuery(this).find("input");
2181				if (session_enable && lepopup_sessions.hasOwnProperty(form_id) && lepopup_sessions[form_id] != null && lepopup_sessions[form_id].hasOwnProperty("values") && lepopup_sessions[form_id]["values"] != null && lepopup_sessions[form_id]["values"].hasOwnProperty(element_id)) default_value = lepopup_sessions[form_id]["values"][element_id];
2182				else if (url_parameter != null) default_value = url_parameter;
2183				else {
2184					default_value = jQuery(input).attr("data-default");
2185					switch(default_value) {
2186						case 'today':
2187							temp = new Date();
2188							default_value = lepopup_date_str(temp, jQuery(input).attr("data-format"));
2189							break;
2190						case 'yesterday':
2191							temp = new Date();
2192							temp.setDate(temp.getDate() - 1);
2193							default_value = lepopup_date_str(temp, jQuery(input).attr("data-format"));
2194							break;
2195						case 'tomorrow':
2196							temp = new Date();
2197							temp.setDate(temp.getDate() + 1);
2198							default_value = lepopup_date_str(temp, jQuery(input).attr("data-format"));
2199							break;
2200						case 'offset':
2201							temp = new Date();
2202							temp.setDate(temp.getDate() + parseInt(jQuery(input).attr("data-offset"), 10));
2203							default_value = lepopup_date_str(temp, jQuery(input).attr("data-format"));
2204							break;
2205						default:
2206							break;
2207					}
2208					
2209				}
2210				jQuery(input).val(default_value);
2211				jQuery(".lepopup-form-"+_form_uid+" .lepopup-var-"+element_id).text(default_value);
2212				break;
2213			case 'email':
2214			case 'text':
2215			case 'time':
2216			case 'password':
2217			case 'number':
2218			case 'numspinner':
2219				input = jQuery(this).find("input");
2220				if (session_enable && lepopup_sessions.hasOwnProperty(form_id) && lepopup_sessions[form_id] != null && lepopup_sessions[form_id].hasOwnProperty("values") && lepopup_sessions[form_id]["values"] != null && lepopup_sessions[form_id]["values"].hasOwnProperty(element_id)) default_value = lepopup_sessions[form_id]["values"][element_id];
2221				else if (url_parameter != null) default_value = url_parameter;
2222				else default_value = jQuery(input).attr("data-default");
2223				jQuery(input).val(default_value);
2224				if (type == "numspinner") jQuery(input).attr("data-value", default_value);
2225				jQuery(".lepopup-form-"+_form_uid+" .lepopup-var-"+element_id).text(default_value);
2226				break;
2227			case 'textarea':
2228				input = jQuery(this).find("textarea");
2229				if (session_enable && lepopup_sessions.hasOwnProperty(form_id) && lepopup_sessions[form_id] != null && lepopup_sessions[form_id].hasOwnProperty("values") && lepopup_sessions[form_id]["values"] != null && lepopup_sessions[form_id]["values"].hasOwnProperty(element_id)) default_value = lepopup_sessions[form_id]["values"][element_id];
2230				else if (url_parameter != null) default_value = url_parameter;
2231				else default_value = lepopup_decode64(jQuery(input).attr("data-default"));
2232				jQuery(input).val(default_value);
2233				jQuery(".lepopup-form-"+_form_uid+" .lepopup-var-"+element_id).text(default_value);
2234				break;
2235			case 'select':
2236				input = jQuery(this).find("select");
2237				if (session_enable && lepopup_sessions.hasOwnProperty(form_id) && lepopup_sessions[form_id] != null && lepopup_sessions[form_id].hasOwnProperty("values") && lepopup_sessions[form_id]["values"] != null && lepopup_sessions[form_id]["values"].hasOwnProperty(element_id)) default_value = lepopup_sessions[form_id]["values"][element_id];
2238				else if (url_parameter != null) default_value = url_parameter;
2239				else default_value = jQuery(input).attr("data-default");
2240				jQuery(input).val(default_value);
2241				jQuery(".lepopup-form-"+_form_uid+" .lepopup-var-"+element_id).text(default_value);
2242				break;
2243			case 'checkbox':
2244			case 'imageselect':
2245			case 'tile':
2246			case 'radio':
2247			case 'multiselect':
2248			case 'star-rating':
2249				if (session_enable && lepopup_sessions.hasOwnProperty(form_id) && lepopup_sessions[form_id] != null && lepopup_sessions[form_id].hasOwnProperty("values") && lepopup_sessions[form_id]["values"] != null && lepopup_sessions[form_id]["values"].hasOwnProperty(element_id)) {
2250					jQuery(this).find("input").each(function(){
2251						default_value = jQuery(this).val();
2252						if ((Array.isArray(lepopup_sessions[form_id]["values"][element_id]) && (lepopup_sessions[form_id]["values"][element_id]).indexOf(default_value) >= 0) || default_value == lepopup_sessions[form_id]["values"][element_id]) {
2253							jQuery(this).prop("checked", true);
2254							var_values.push(default_value);
2255						} else jQuery(this).prop("checked", false);
2256					});
2257				} else if (url_parameter != null) {
2258					url_parameters = url_parameter.split(",");
2259					jQuery(this).find("input").each(function(){
2260						default_value = jQuery(this).val();
2261						if (url_parameters.indexOf(default_value) >= 0) {
2262							jQuery(this).prop("checked", true);
2263							var_values.push(jQuery(this).val());
2264						} else jQuery(this).prop("checked", false);
2265					});
2266				} else {
2267					jQuery(this).find("input").each(function(){
2268						default_value = jQuery(this).attr("data-default");
2269						if (default_value == "on") {
2270							jQuery(this).prop("checked", true);
2271							var_values.push(jQuery(this).val());
2272						} else jQuery(this).prop("checked", false);
2273					});
2274				}
2275				jQuery(".lepopup-form-"+_form_uid+" .lepopup-var-"+element_id).text(var_values.join(", "));
2276				break;
2277			case 'signature':
2278				if (typeof SignaturePad != typeof undefined) {
2279					if (lepopup_signatures.hasOwnProperty(_form_uid+"-"+element_id)) {
2280						(lepopup_signatures[_form_uid+"-"+element_id]).clear();
2281					}
2282				}
2283				break;
2284			case 'rangeslider':
2285				if (typeof jQuery.fn.ionRangeSlider != typeof undefined && jQuery.fn.ionRangeSlider) {
2286					jQuery(this).find("input").each(function(){
2287						if (session_enable && lepopup_sessions.hasOwnProperty(form_id) && lepopup_sessions[form_id] != null && lepopup_sessions[form_id].hasOwnProperty("values") && lepopup_sessions[form_id]["values"] != null && lepopup_sessions[form_id]["values"].hasOwnProperty(element_id)) default_value = lepopup_sessions[form_id]["values"][element_id];
2288						else default_value = jQuery(this).attr("data-default");
2289						var from_to = default_value.split(":");
2290						jQuery(this).attr("data-from", from_to[0]);
2291						if (from_to.length > 1) jQuery(this).attr("data-to", from_to[1]);
2292						jQuery(this).val(default_value);
2293						var rangeslider = jQuery(this).data("ionRangeSlider");
2294						if (typeof rangeslider != typeof undefined && rangeslider) {
2295							rangeslider.reset();
2296						}
2297						default_value = default_value.replace(":", " ... ");
2298						jQuery(".lepopup-form-"+_form_uid+" .lepopup-var-"+element_id).text(default_value);
2299					});
2300				}
2301				break;
2302			default:
2303				break;
2304		}
2305	});
2306	lepopup_handle_math(_form_uid);
2307}
2308
2309function lepopup_track(_uid, _type, _action) {
2310	if (lepopup_vars['ga-tracking'] == "on") {
2311		try {
2312			var title = jQuery(".lepopup-form-"+_uid).first().attr("data-title");
2313			if (!title) title = 'Unknown form';
2314			if (typeof _gaq == 'object') {
2315				_gaq.push(['_trackEvent', _type, _action, title, 1, false]);
2316			} else if (typeof _trackEvent == 'function') { 
2317				_trackEvent(_type, _action, title, 1, false);
2318			} else if (typeof __gaTracker == 'function') { 
2319				__gaTracker('send', 'event', _type, _action, title);
2320			} else if (typeof ga == 'function') {
2321				ga('send', 'event', _type, _action, title);
2322			}
2323		} catch(error) {
2324		}
2325	}
2326}
2327
2328function lepopup_uploader_files_selected(_object) {
2329	jQuery(_object).parent().trigger("submit");
2330}
2331function lepopup_uploader_file_delete(_object) {
2332	var file = jQuery(_object).closest(".lepopup-uploader-file");
2333	var name = jQuery(file).attr("data-name");
2334	var upload_id = jQuery(file).attr("data-upload");
2335	var form_uid = jQuery(_object).closest(".lepopup-form").attr("data-id");
2336	jQuery(file).slideUp(200, function(){
2337		var temp = jQuery(file).parent();
2338		jQuery(file).remove();
2339		lepopup_input_changed(temp);
2340		if (jQuery(".lepopup-uploader-file-"+upload_id).length == 0) {
2341			lepopup_uploads[form_uid][upload_id] = 'DELETED';
2342			jQuery("#"+upload_id).remove();
2343		}
2344	});
2345	var post_data = {"action" : "lepopup-upload-delete", "upload-id" : upload_id, "name" : name, "hostname" : window.location.hostname};
2346	jQuery.ajax({
2347		url		:	lepopup_vars['ajax-url'],
2348		data	:	post_data,
2349		method	:	(lepopup_vars["mode"] == "remote" ? "get" : "post"),
2350		dataType:	(lepopup_vars["mode"] == "remote" ? "jsonp" : "json"),
2351		async	:	true
2352	});
2353}
2354function lepopup_uploader_start(_object) {
2355	var temp;
2356	var upload_id = jQuery(_object).closest(".lepopup-uploader").attr("id");
2357	var form_uid = jQuery(_object).closest(".lepopup-form").attr("data-id");
2358	var form_element = jQuery(_object).closest(".lepopup-element");
2359	var max_size = parseInt(jQuery(form_element).attr("data-max-size"), 10)*1024*1024;
2360	var max_files = parseInt(jQuery(form_element).attr("data-max-files"), 10);
2361	temp = jQuery(form_element).attr("data-allowed-extensions");
2362	temp = temp.toLowerCase();
2363	var allowed_extensions = temp.split(",");
2364	temp = null;
2365	var countable_files = jQuery(_object).closest(".lepopup-upload-input").find(".lepopup-uploader-file-countable").length;
2366	var size_visual, ext, html = "";
2367	var error = false;
2368	var error_message = "";
2369	var files = jQuery(_object).find("input[type=file]")[0].files;
2370	if (files.length < 1) return false;
2371	for (var i=0; i<files.length; i++) {
2372		if (countable_files + files.length > max_files) {
2373			error = true;
2374			error_message = jQuery(form_element).attr("data-max-files-error");
2375			break;
2376		}
2377		ext = "."+(files[i].name).split(".").pop();
2378		ext = ext.toLowerCase();
2379		if (allowed_extensions.length > 0 && allowed_extensions[0] != "" && allowed_extensions.indexOf(ext) < 0) {
2380			error = true;
2381			error_message = jQuery(form_element).attr("data-allowed-extensions-error");
2382			break;
2383		}
2384		if (max_size > 0 && files[i].size > max_size) {
2385			error = true;
2386			error_message = jQuery(form_element).attr("data-max-size-error");
2387			break;
2388		}
2389		if (files[i].size > 4*1024*1024) size_visual = Math.round(10*files[i].size/(1024*1024))/10 + " Mb";
2390		else if (files[i].size > 4*1024) size_visual = Math.round(10*files[i].size/1024)/10 + " Kb";
2391		else size_visual = files[i].size + " bytes";
2392		html += "<div class='lepopup-uploader-file lepopup-uploader-file-"+upload_id+" lepopup-uploader-file-countable' data-upload='"+upload_id+"' data-name='"+lepopup_escape_html(files[i].name)+"' data-size='"+files[i].size+"'><div class='lepopup-uploader-file-title'>"+lepopup_escape_html(files[i].name)+" ("+size_visual+")</div><div class='lepopup-uploader-progress'>Uploading...</div><span onclick='return lepopup_uploader_file_delete(this);'><i class='lepopup-if lepopup-if-times'></i></span></div>";
2393	}
2394	if (error) {
2395		jQuery(_object).closest(".lepopup-uploader").append("<div class='lepopup-uploader-error'><span>"+error_message+"</span></div>");
2396		jQuery(_object).closest(".lepopup-uploader").find(".lepopup-uploader-error").fadeIn(300);
2397		return false;
2398	} else {
2399		jQuery(_object).closest(".lepopup-uploader").find(".lepopup-button").remove();
2400		var new_upload_id = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
2401		temp = lepopup_decode64(jQuery(_object).closest(".lepopup-upload-input").find(".lepopup-uploader-template").val());
2402		temp = temp.replace(new RegExp("%%upload-id%%", 'g'), new_upload_id).replace(new RegExp("%%ajax-url%%", 'g'), lepopup_vars["ajax-url"]);
2403		jQuery(_object).closest(".lepopup-uploaders").append(temp);
2404		jQuery(_object).closest(".lepopup-upload-input").find(".lepopup-uploader-files").append(html);
2405		if (!lepopup_uploads.hasOwnProperty(form_uid)) lepopup_uploads[form_uid] = {};
2406		lepopup_uploads[form_uid][upload_id] = 'LOADING';
2407		lepopup_uploader_progress(form_uid, upload_id);
2408	}
2409}
2410function lepopup_uploader_finish(_object) {
2411	var upload_id = jQuery(_object).closest(".lepopup-uploader").attr("id");
2412	var form_uid = jQuery(_object).closest(".lepopup-form").attr("data-id");
2413	if (lepopup_uploads.hasOwnProperty(form_uid) && lepopup_uploads[form_uid].hasOwnProperty(upload_id) && lepopup_uploads[form_uid][upload_id] == "LOADING") {
2414		lepopup_uploads[form_uid][upload_id] = "UPLOADED";
2415	}
2416}
2417function lepopup_uploader_progress(_form_uid, _upload_id) {
2418	var post_data = {"action" : "lepopup-upload-progress", "upload-id" : _upload_id, "hostname" : window.location.hostname};
2419	if (lepopup_uploads[_form_uid][_upload_id] == "DELETED") return;
2420	else if (lepopup_uploads[_form_uid][_upload_id] == "UPLOADED") post_data["last-request"] = "on";
2421	jQuery.ajax({
2422		url		:	lepopup_vars['ajax-url'],
2423		data	:	post_data,
2424		method	:	(lepopup_vars["mode"] == "remote" ? "get" : "post"),
2425		dataType:	(lepopup_vars["mode"] == "remote" ? "jsonp" : "json"),
2426		async	:	true,
2427		success	: function(return_data) {
2428			try {
2429				var data, file_container, field_id;
2430				field_id = jQuery("#"+_upload_id).closest(".lepopup-element").attr("data-id");
2431				if (typeof return_data == 'object') data = return_data;
2432				else data = jQuery.parseJSON(return_data);
2433				if (data.status == "OK") {
2434					lepopup_uploads[_form_uid][_upload_id] = 'OK';
2435					if (data.hasOwnProperty("result")) {
2436						for (var i=0; i<data["result"].length; i++) {
2437							file_container = jQuery("#"+_upload_id).closest(".lepopup-upload-input").find(".lepopup-uploader-file-"+_upload_id+"[data-name='"+lepopup_escape_html(data["result"][i]["name"])+"']");
2438							if (data["result"][i]["status"] == "OK") {
2439								jQuery(file_container).find(".lepopup-uploader-progress").html("<div class='lepopup-uploader-progress-bar' style='width:100%;'></div>");
2440								jQuery(file_container).append("<input type='hidden' name='lepopup-"+field_id+"[]' value='"+lepopup_escape_html(data["result"][i]["uid"])+"' />");
2441							} else {
2442								jQuery(file_container).find(".lepopup-uploader-progress").html("<div class='lepopup-uploader-progress-error'>"+data["result"][i]["message"]+"</div>");
2443								jQuery(file_container).removeClass("lepopup-uploader-file-countable");
2444							}
2445							jQuery(file_container).addClass("lepopup-uploader-file-processed");
2446						}
2447					}
2448					jQuery("#"+_upload_id).closest(".lepopup-upload-input").find(".lepopup-uploader-file-"+_upload_id).each(function(){
2449						if (!jQuery(this).hasClass("lepopup-uploader-file-processed")) {
2450							jQuery(this).find(".lepopup-uploader-progress").html("<div class='lepopup-uploader-progress-error'>File can not be uploaded.</div>");
2451							jQuery(this).removeClass("lepopup-uploader-file-countable");
2452							jQuery(this).addClass("lepopup-uploader-file-processed");
2453						}
2454					});
2455					lepopup_input_changed("#"+_upload_id);
2456					jQuery("#"+_upload_id).remove();
2457				} else if (data.status == "LOADING") {
2458					if (data.hasOwnProperty("progress")) {
2459						for (var i=0; i<data["progress"].length; i++) {
2460							file_container = jQuery("#"+_upload_id).closest(".lepopup-upload-input").find(".lepopup-uploader-file-"+_upload_id+"[data-name='"+lepopup_escape_html(data["progress"][i]["name"])+"']");
2461							if (file_container.length > 0) {
2462								jQuery(file_container).find(".lepopup-uploader-progress").html("<div class='lepopup-uploader-progress-bar' style='width:"+Math.ceil(100*parseInt(data["progress"][i]["bytes_processed"]) / parseInt(jQuery(file_container).attr("data-size"), 10))+"%;'></div>");
2463							}
2464						}
2465					}
2466					setTimeout(function(){
2467						lepopup_uploader_progress(_form_uid, _upload_id);
2468					}, 500);
2469				} else {
2470					lepopup_uploads[_form_uid][_upload_id] = 'ERROR';
2471					jQuery("#"+_upload_id).closest(".lepopup-upload-input").find(".lepopup-uploader-file-"+_upload_id).each(function(){
2472						if (!jQuery(this).hasClass("lepopup-uploader-file-processed")) {
2473							jQuery(this).find(".lepopup-uploader-progress").html("<div class='lepopup-uploader-progress-error'>Internal Error!</div>");
2474							jQuery(this).removeClass("lepopup-uploader-file-countable");
2475							jQuery(this).addClass("lepopup-uploader-file-processed");
2476						}
2477					});
2478					jQuery("#"+_upload_id).remove();
2479				}
2480			} catch(error) {
2481				console.log(error);
2482				lepopup_uploads[_form_uid][_upload_id] = 'ERROR';
2483				jQuery("#"+_upload_id).closest(".lepopup-upload-input").find(".lepopup-uploader-file-"+_upload_id).each(function(){
2484					if (!jQuery(this).hasClass("lepopup-uploader-file-processed")) {
2485						jQuery(this).find(".lepopup-uploader-progress").html("<div class='lepopup-uploader-progress-error'>Internal Error!</div>");
2486						jQuery(this).removeClass("lepopup-uploader-file-countable");
2487						jQuery(this).addClass("lepopup-uploader-file-processed");
2488					}
2489				});
2490				jQuery("#"+_upload_id).remove();
2491			}
2492		},
2493		error	: function(XMLHttpRequest, textStatus, errorThrown) {
2494			console.log(errorThrown);
2495			lepopup_uploads[_form_uid][_upload_id] = 'ERROR';
2496			jQuery("#"+_upload_id).closest(".lepopup-upload-input").find(".lepopup-uploader-file-"+_upload_id).each(function(){
2497				if (!jQuery(this).hasClass("lepopup-uploader-file-processed")) {
2498					jQuery(this).find(".lepopup-uploader-progress").html("<div class='lepopup-uploader-progress-error'>Internal Error!</div>");
2499					jQuery(this).removeClass("lepopup-uploader-file-countable");
2500					jQuery(this).addClass("lepopup-uploader-file-processed");
2501				}
2502			});
2503			jQuery("#"+_upload_id).remove();
2504		}
2505	});
2506}
2507function lepopup_input_error_hide(_object) {
2508	var element_id = jQuery(_object).closest(".lepopup-element").attr("data-id");
2509	jQuery(_object).closest(".lepopup-form").find(".lepopup-element-error-"+element_id).fadeOut(300, function(){jQuery(this).remove();});
2510}
2511function lepopup_payumoney_checkout(_request_data) {
2512	try {
2513		if (typeof bolt != typeof undefined) {
2514			var handler = {
2515				responseHandler: function(BOLT){
2516					console.log("Response");
2517					console.log(BOLT);
2518				},
2519				catchException: function(BOLT){
2520					console.log("Exception");
2521					console.log(BOLT);
2522				}
2523			}			
2524			bolt.launch(_request_data, handler);
2525		} else console.log('No bolt');
2526	} catch(error) {
2527		console.log(error);
2528	}
2529}
2530// linklocker-begin
2531function lepopup_unlock_links(_slug) {
2532	jQuery(".lepopup-linklocker-"+_slug).each(function(){
2533		var url = jQuery(this).attr("href");
2534		var url_idx = url.lastIndexOf(":");
2535		if (url_idx > 0) {
2536			var url = url.substr(url_idx + 1);
2537			if (url.length > 0) {
2538				url = lepopup_decode64(url);
2539				jQuery(this).attr("href", url);
2540			}
2541		}
2542	});
2543}
2544// linklocker-end
2545function lepopup_get_field_value(_dom_id, _element_id) {
2546	var element = jQuery(".lepopup-form[data-id='"+_dom_id+"']").find("[data-id='"+_element_id+"']");
2547	var type = jQuery(element).attr("data-type");
2548	var var_value = null;
2549	switch(type) {
2550		case 'checkbox':
2551		case 'imageselect':
2552		case 'tile':
2553		case 'multiselect':
2554		case 'radio':
2555			var_value = new Array()
2556			jQuery(element).find("input").each(function(){
2557				if (jQuery(this).is(":checked")) var_value.push(jQuery(this).val());
2558			});
2559			break;
2560		case 'signature':
2561		case 'file':
2562			break;
2563		default:
2564			var_value = jQuery(element).find("input, select").val();
2565			break;
2566	}
2567	return var_value;
2568}
2569function lepopup_set_field_value(_dom_id, _element_id, _value) {
2570	var element = jQuery(".lepopup-form[data-id='"+_dom_id+"']").find("[data-id='"+_element_id+"']");
2571	var type = jQuery(element).attr("data-type");
2572	var var_value;
2573	switch(type) {
2574		case 'checkbox':
2575		case 'imageselect':
2576		case 'tile':
2577		case 'multiselect':
2578		case 'radio':
2579			jQuery(element).find("input").each(function() {
2580				if (Array.isArray(_value)) var_value = _value;
2581				else var_value = new Array(_value);
2582				if (var_value.includes(jQuery(this).val())) jQuery(this).prop('checked', true);
2583				else jQuery(this).prop('checked', false);
2584			});
2585			break;
2586		case 'signature':
2587		case 'file':
2588			break;
2589		default:
2590			jQuery(element).find("input, select").val(_value);
2591			break;
2592	}
2593	return true;
2594}
2595var lepopup_global_message_timer;
2596function lepopup_global_message_show(_type, _message) {
2597	if (jQuery(".lepopup-global-message").length == 0) {
2598		jQuery('body').append("<div class='lepopup-global-message'></div>");
2599	}
2600	clearTimeout(lepopup_global_message_timer);
2601	jQuery(".lepopup-global-message").fadeOut(300, function() {
2602		jQuery(".lepopup-global-message").attr("class", "lepopup-global-message");
2603		jQuery(".lepopup-global-message").addClass("lepopup-global-message-"+_type).html(_message);
2604		jQuery(".lepopup-global-message").fadeIn(300);
2605		lepopup_global_message_timer = setTimeout(function(){jQuery(".lepopup-global-message").fadeOut(300);}, 5000);
2606	});
2607}
2608function lepopup_date(_date, _format) {
2609	var pattern = _format.replace('yyyy', '([0-9]{4})').replace('mm', '([0-9]{2})').replace('dd', '([0-9]{2})');
2610	var match = _date.match(pattern);
2611	if (!match || _format.length != _date.length) return null;
2612	var year = parseInt(_date.substr(_format.indexOf('yyyy'), 4), 10);
2613	var month = parseInt(_date.substr(_format.indexOf('mm'), 2), 10);
2614	var day = parseInt(_date.substr(_format.indexOf('dd'), 2), 10);
2615	var date = new Date(year, month-1, day);
2616	if (date.getDate() == day && date.getMonth() == month-1 && date.getFullYear() == year) return date;
2617	return null;
2618}
2619function lepopup_date_str(_date, _format) {
2620	var pattern = _format;
2621	var prefix = "";
2622	var temp = _date.getDate();
2623	if (temp < 9) prefix = "0";
2624	pattern = pattern.replace("dd", prefix+temp);
2625	temp = _date.getMonth() + 1;
2626	if (temp < 9) prefix = "0";
2627	else prefix = "";
2628	pattern = pattern.replace("mm", prefix+temp);
2629	temp = _date.getFullYear();
2630	pattern = pattern.replace("yyyy", temp);
2631	return pattern;
2632}
2633
2634function lepopup_time24_str(_time, _format) {
2635	var pattern = _format.replace('hh', '([0-9]{2})').replace('ii', '([0-9]{2})').replace('aa', '(am|pm)');
2636	var match = _time.match(pattern);
2637	if (!match || _format.length != _time.length) return null;
2638	var hours = parseInt(_time.substr(_format.indexOf('hh'), 2), 10);
2639	if (hours < 0 || hours > 23) return null;
2640	var minutes = parseInt(_time.substr(_format.indexOf('ii'), 2), 10);
2641	if (minutes < 0 || minutes > 59) return null;
2642	var ampm = null;
2643	if (_format.indexOf('aa') >= 0) {
2644		ampm = _time.substr(_format.indexOf('aa'), 2);
2645		ampm = ampm.toLowerCase();
2646	}
2647	if (ampm != null && hours == 12) hours = 0;
2648	if (ampm == "pm") hours += 12;
2649	return (hours < 10 ? "0" : "")+hours+":"+(minutes < 10 ? "0" : "")+minutes;
2650}
2651function lepopup_extract_number(_value) {
2652	if (_value == null) return "";
2653	var str_value = _value.toString();
2654	var num_value;
2655	var result = str_value.match(/\((.*?)\)/g);
2656	if (result) {
2657		var values = result.map(function(val){
2658			return val.replace(/\(|\)/g,'');
2659		});
2660		num_value = values[values.length-1].replace(",", ".");
2661	} else num_value = str_value.replace(",", ".");
2662	if (!isNaN(num_value) && !isNaN(parseFloat(num_value))) return num_value;
2663	return str_value;
2664}
2665
2666function lepopup_query_parameter(_name) {
2667	var url = window.location.href;
2668	_name = _name.replace(/[\[\]]/g, '\\$&');
2669	var regex = new RegExp('[?&]' + _name + '(=([^&#]*)|&|#|$)'),
2670		results = regex.exec(url);
2671	if (!results) return null;
2672	if (!results[2]) return '';
2673	return decodeURIComponent(results[2].replace(/\+/g, ' '));
2674}
2675function lepopup_escape_html(_text) {
2676	if (!_text) return "";
2677	var map = {
2678		'&': '&amp;',
2679		'<': '&lt;',
2680		'>': '&gt;',
2681		'"': '&quot;',
2682		"'": '&#039;'
2683	};
2684	return _text.replace(/[&<>"']/g, function(m) { return map[m]; });
2685}
2686function lepopup_is_numeric(_text) {
2687	return !isNaN(parseInt(_text)) && isFinite(_text);
2688}
2689function lepopup_read_cookie(key) {
2690	var pairs = document.cookie.split("; ");
2691	for (var i = 0, pair; pair = pairs[i] && pairs[i].split("="); i++) {
2692		if (pair[0] === key) return pair[1] || "";
2693	}
2694	return null;
2695}
2696function lepopup_write_cookie(key, value, hours) {
2697	if (hours) {
2698		var date = new Date();
2699		date.setTime(date.getTime()+(hours*60*60*1000));
2700		var expires = "; expires="+date.toGMTString();
2701	} else var expires = "; expires=0";
2702	document.cookie = key+"="+value+expires+"; path=/";
2703}
2704function lepopup_utf8encode(string) {
2705	string = string.replace(/\x0d\x0a/g, "\x0a");
2706	var output = "";
2707	for (var n = 0; n < string.length; n++) {
2708		var c = string.charCodeAt(n);
2709		if (c < 128) {
2710			output += String.fromCharCode(c);
2711		} else if ((c > 127) && (c < 2048)) {
2712			output += String.fromCharCode((c >> 6) | 192);
2713			output += String.fromCharCode((c & 63) | 128);
2714		} else {
2715			output += String.fromCharCode((c >> 12) | 224);
2716			output += String.fromCharCode(((c >> 6) & 63) | 128);
2717			output += String.fromCharCode((c & 63) | 128);
2718		}
2719	}
2720	return output;
2721}
2722function lepopup_encode64(input) {
2723	var keyString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
2724	var output = "";
2725	var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
2726	var i = 0;
2727	input = lepopup_utf8encode(input);
2728	while (i < input.length) {
2729		chr1 = input.charCodeAt(i++);
2730		chr2 = input.charCodeAt(i++);
2731		chr3 = input.charCodeAt(i++);
2732		enc1 = chr1 >> 2;
2733		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
2734		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
2735		enc4 = chr3 & 63;
2736		if (isNaN(chr2)) {
2737			enc3 = enc4 = 64;
2738		} else if (isNaN(chr3)) {
2739			enc4 = 64;
2740		}
2741		output = output + keyString.charAt(enc1) + keyString.charAt(enc2) + keyString.charAt(enc3) + keyString.charAt(enc4);
2742	}
2743	return output;
2744}
2745function lepopup_utf8decode(input) {
2746	var string = "";
2747	var i = 0;
2748	var c = 0, c1 = 0, c2 = 0, c3 = 0;
2749	while ( i < input.length ) {
2750		c = input.charCodeAt(i);
2751		if (c < 128) {
2752			string += String.fromCharCode(c);
2753			i++;
2754		} else if ((c > 191) && (c < 224)) {
2755			c2 = input.charCodeAt(i+1);
2756			string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
2757			i += 2;
2758		} else {
2759			c2 = input.charCodeAt(i+1);
2760			c3 = input.charCodeAt(i+2);
2761			string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
2762			i += 3;
2763		}
2764	}
2765	return string;
2766}
2767function lepopup_decode64(input) {
2768	var keyString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
2768+/=";
2769	var output = "";
2770	var chr1, chr2, chr3;
2771	var enc1, enc2, enc3, enc4;
2772	var i = 0;
2773	input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
2774	while (i < input.length) {
2775		enc1 = keyString.indexOf(input.charAt(i++));
2776		enc2 = keyString.indexOf(input.charAt(i++));
2777		enc3 = keyString.indexOf(input.charAt(i++));
2778		enc4 = keyString.indexOf(input.charAt(i++));
2779		chr1 = (enc1 << 2) | (enc2 >> 4);
2780		chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
2781		chr3 = ((enc3 & 3) << 6) | enc4;
2782		output = output + String.fromCharCode(chr1);
2783		if (enc3 != 64) {
2784			output = output + String.fromCharCode(chr2);
2785		}
2786		if (enc4 != 64) {
2787			output = output + String.fromCharCode(chr3);
2788		}
2789	}
2790	output = lepopup_utf8decode(output);
2791	return output;
2792}
2793
2794if (typeof ulp_add_event == typeof undefined) {
2795	var ulp_add_event = function(_event, _data) {_lepopup_add_event(_event, _data);};
2796}
2797if (typeof lepopup_add_event == typeof undefined) {
2798	var lepopup_add_event = function(_event, _data) {_lepopup_add_event(_event, _data);};
2799}
2800function _lepopup_add_event(_event, _data) {
2801//lepopup_custom_events_data	
2802	var events_data = {};
2803	if (typeof _data == 'object' && _data != null) {
2804		if (!_data.hasOwnProperty("item") && !_data.hasOwnProperty("item_mobile") && !_data.hasOwnProperty("popup") && !_data.hasOwnProperty("popup_mobile")) return;
2805		var item = "";
2806		if (lepopup_mobile && _data.hasOwnProperty("item_mobile")) item = _data.item_mobile;
2807		else if (_data.hasOwnProperty("item")) item = _data.item;
2808		else if (lepopup_mobile && _data.hasOwnProperty("popup_mobile")) item = _data.popup_mobile;
2809		else if (_data.hasOwnProperty("popup")) item = _data.popup;
2810		if (item == "") return;
2811		switch (_event) {
2812			case "onload":
2813				events_data = {
2814					'onload-item'				: item,
2815					'onload-mode'				: _data.hasOwnProperty('mode') ? _data.mode : 'every-time',
2816					'onload-mode-period'		: _data.hasOwnProperty('period') ? parseInt(_data.period, 10) : 24,
2817					'onload-mode-delay'			: _data.hasOwnProperty('delay') ? parseInt(_data.delay, 10) : 0,
2818					'onload-mode-close-delay'	: _data.hasOwnProperty('close_delay') ? parseInt(_data.close_delay, 10) : 0
2819				};
2820				break;
2821			case "onexit":
2822				events_data = {
2823					'onexit-item'				: item,
2824					'onexit-mode'				: _data.hasOwnProperty('mode') ? _data.mode : 'every-time',
2825					'onexit-mode-period'		: _data.hasOwnProperty('period') ? parseInt(_data.period, 10) : 24
2826				};
2827				break;
2828			case "onscroll":
2829				events_data = {
2830					'onscroll-item'				: item,
2831					'onscroll-mode'				: _data.hasOwnProperty('mode') ? _data.mode : 'every-time',
2832					'onscroll-mode-period'		: _data.hasOwnProperty('period') ? parseInt(_data.period, 10) : 24,
2833					'onscroll-mode-offset'		: _data.hasOwnProperty('offset') ? _data.offset.toString() : 600
2834				};
2835				break;
2836			case "onidle":
2837				events_data = {
2838					'onidle-item'				: item,
2839					'onidle-mode'				: _data.hasOwnProperty('mode') ? _data.mode : 'every-time',
2840					'onidle-mode-period'		: _data.hasOwnProperty('period') ? parseInt(_data.period, 10) : 24,
2841					'onidle-mode-delay'			: _data.hasOwnProperty('delay') ? parseInt(_data.delay, 10) : 30
2842				};
2843				break;
2844			case "onabd":
2845				events_data = {
2846					'onabd-item'				: item,
2847					'onabd-mode'				: _data.hasOwnProperty('mode') ? _data.mode : 'every-time',
2848					'onabd-mode-period'			: _data.hasOwnProperty('period') ? parseInt(_data.period, 10) : 24
2849				};
2850				break;
2851			default:
2852				break;
2853		}
2854		lepopup_custom_events_data = Object.assign(lepopup_custom_events_data, events_data);
2855	}
2856}

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.