PageSourceSearch

https://www.visit-pontevedra.com/wp-content/plugins/halfdata-green-popups/js/lepopup.js

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

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.