
		// Detect
	try { var prosLead_jQueryExists = window.jQuery.fn.jquery } catch(e) { var prosLead_jQueryExists = false };





		// Insert jQuery if not loaded yet
	if( prosLead_jQueryExists === false ) {

		var prosLead_jQueryEmbed = document.createElement("script"); 
		prosLead_jQueryEmbed.type = "text/javascript"; 
		prosLead_jQueryEmbed.async = true; 
		prosLead_jQueryEmbed.src = document.location.protocol + "//proslead.com/tracker/jquery-1.11.1.min.js"; 

		var prosLead_s = document.getElementsByTagName("script")[0]; 
		prosLead_s.parentNode.insertBefore(prosLead_jQueryEmbed, prosLead_s);

		// var $plJquery = jQuery.noConflict( true );

	} // Insert jQuery if not loaded yet





		// Call us with a certain delay
	window.setTimeout( prosLeadInitTracker, 1000 );



		// Enable retargeting ?
	if( false ) window.setTimeout( prosLeadInitRetargeting, 1000 );
	
	
	
		// Enable form sniffer ?
	if( false ) window.setTimeout( prosLeadInitSniffer, 1500 );





	function prosLeadInitTracker() {

			// Prevent
		if( prosLead_jQueryExists === false ) jQuery.noConflict();

			// Catch us
		try { _prosLeadDataToSend = _prosLeadData; } catch(e) { var _prosLeadDataToSend = []; };

			// Catch page title
		try { pageTitle = document.title; } catch(e) { pageTitle = ''; };

			// Catch path name
		try { pathName = window.location.pathname; } catch(e) { pathName = ''; };

			// Get page back
		jQuery.ajax({

			'url' : document.location.protocol + '//proslead.com/tracker/?a=log',
			'async' : true,
			'cache' : false,
			'crossDomain' : true,
			'type' : 'POST',
			data : {
				'rhUid' : 25360322,
				'pageTitle' : pageTitle,
				'pathname' : pathName,
				'data' : _prosLeadDataToSend
			}

		}); // ajax

			// Analyze visit duration
		prosLeadVisitDurationV2();

		return;

	} // fct prosLeadInitTracker





	function prosLeadVisitDurationV2() {

			// Does the jQuery function "on" exist ?
		if ( jQuery.isFunction( jQuery.fn.on ) ) {

				// Listing to form submission method ( could be either an abandon or a submit )
			jQuery( document ).on( 'submit', 'form', function(e) { saveAllFormsMethod = 'submit'; });

				// Attach before unload event using "on" method
			jQuery( window ).on( 'beforeunload', function(e){

					// Catch when leave
				saveAllForms('exit');
				
					// DO hit
				jQuery.ajax({
					
					'url' : document.location.protocol + '//proslead.com/tracker/?a=ping&v=2&rhUid=25360322',
					'async' : true,
					'cache' : false,
					'crossDomain' : true,
					'type' : 'GET'

				}); // ajax

			}); // on

		} else {

				// Listing to form submission method ( could be either an abandon or a submit )
			jQuery( 'form' ).live( 'submit', function(e) { saveAllFormsMethod = 'submit'; });

				// Use regular bind method
			jQuery( window ).bind( 'beforeunload', function(){

					// Catch when leave
				saveAllForms('exit');

					// DO hit
				jQuery.ajax({
					
					'url' : document.location.protocol + '//proslead.com/tracker/?a=ping&v=2&rhUid=25360322',
					'async' : true,
					'cache' : false,
					'crossDomain' : true,
					'type' : 'GET'

				}); // ajax

			}); // bind

		} // Does the jQuery function "on" exist ? or not ?

		return;

	} // fct prosLeadVisitDurationV2










		// Store as global
	var formsStructureDatas = new Array();
	var formsDatas = {};
	var saveAllFormsMethod = '';
	var firstFormsFieldBlured = false;
	

	
	function prosLeadInitSniffer() {

			// Prevent
		if( prosLead_jQueryExists === false ) jQuery.noConflict();

			// Target all forms
		var formsCollection = jQuery('form');

			// How many forms do we have ?
		try { var totalForms = parseInt( formsCollection.length ); } catch(e) { totalForms = 0; }

			// Nothing to do ?
		if( !parseInt( totalForms ) ) return;

			// Loop all existing forms and build data
		jQuery.each( formsCollection, function( singleFormIndex, singleFormObject ) { 

				// Target / spare as jQuery object
			var singleFormObjectReference = jQuery( this );

				// Avoid some forms
			if( plTrim( singleFormObjectReference.attr('id') ).toLowerCase() == 'cse-search-box' ) return true;
			if( plTrim( singleFormObjectReference.attr('id') ).toLowerCase() == 'searchform' ) return true;
			if( plTrim( singleFormObjectReference.attr('id') ).toLowerCase() == 'user-login-form' ) return true;
			if( plTrim( singleFormObjectReference.attr('id') ).toLowerCase() == 'user-login' ) return true;
			if( plTrim( singleFormObjectReference.attr('id') ).toLowerCase() == 'search_mini_form' ) return true;
			if( plTrim( singleFormObjectReference.attr('id') ).toLowerCase() == 'formchangelanguage' ) return true;
			if( plTrim( singleFormObjectReference.attr('id') ).toLowerCase() == 'beacon_form' ) return true;
			if( plTrim( singleFormObjectReference.attr('id') ).toLowerCase() == 'form-newsletter' ) return true;

				// Do we have something to go for ?
			if( parseInt( getFormFields( singleFormObjectReference ).length ) ) {
				
					// Gather single form data
				formsStructureDatas[ singleFormIndex ] = { 
					'id' : plTrim( singleFormObjectReference.attr('id') ),
					'name' : plTrim( singleFormObjectReference.attr('name') ),
					'action' : plTrim( singleFormObjectReference.attr('action') ),
					'fields' : getFormFields( singleFormObjectReference ) 
				}; // Gather single form data

			}

		}); // Loop all existing forms and build data



			// No form to grab ? Return
		if( !parseInt( formsStructureDatas.length ) ) return;



			// Save form structure & fields + get all forms & database ids back
		jQuery.ajax({
			'url' : document.location.protocol + '//proslead.com/sniffer/?a=saveFormStructure&rhUid=25360322',
			'async' : true,
			'cache' : false,
			'crossDomain' : true,
			'type' : 'POST',
			'data' : { 'formsStructureDatas' : formsStructureDatas },
			'dataType' : 'json',
			'success' : function(d) { 



					// Loop all forms and assign database id
				jQuery.each( d.formUids, function( formIndex, formDataBaseId ){ 
					
						// Assign databaseId back in object
					formsStructureDatas[ formIndex ]['databaseId'] = parseInt( formDataBaseId ); 

						// Write value onto form
					try { jQuery( formsCollection[ formIndex ] ).attr( 'prosLeadFormUid', parseInt( formDataBaseId ) ); } catch(e) {}

						// Write wether tracking is allowed or not
					try { jQuery( formsCollection[ formIndex ] ).attr( 'prosLeadFormTrackingEnabled', parseInt( d.allowedFormsForTracking[formIndex] ) ); } catch(e) {}
					
				}); // Loop all forms and assign database id



					// Loop all forms fields and assign database id
				jQuery.each( d.fieldsUids, function( formIndex, fieldsData ){ 

						// Loop all forms fields and assign database id
					jQuery.each( fieldsData, function( fieldIndex, fieldDataBaseId ){ 

							// Assign databaseId back in object
						try { formsStructureDatas[ formIndex ][ 'fields' ][ fieldIndex ]['databaseId'] = parseInt( fieldDataBaseId ); } catch(e) {}

							// Write value onto field
						jQuery( formsCollection[ formIndex ] ).find( 'input, select, textarea' ).eq( fieldIndex ).attr( 'prosLeadFieldUid', parseInt( fieldDataBaseId ) );
						
					}); // // Loop all fields and assign database id

				}); // // Loop all forms fields and assign database id


				
			} // fct success ajax call


		}); // ajax call to save form and fields datas



			// Attach listener

			// Does the jQuery function "on" exist ?
		if ( jQuery.isFunction( jQuery.fn.on ) ) {

				// Attach listener using "on" method
			jQuery( 'body' ).off( 'blur', 'input, select, textarea', saveAllForms );
			jQuery( 'body' ).off( 'click', 'button', saveAllForms );

			jQuery( 'body' ).on( 'blur', 'input, select, textarea', saveAllForms );
			jQuery( 'body' ).on( 'click', 'button', saveAllForms );

		} else {

				// Attach listener using "live" method
			jQuery( 'input, select, textarea' ).die( 'blur', saveAllForms );
			jQuery( 'button' ).die( 'click', saveAllForms );

			jQuery( 'input, select, textarea' ).live( 'blur', saveAllForms );
			jQuery( 'button' ).live( 'click', saveAllForms );

		} // Does the jQuery function "on" exist ? or not ?



		return;

	} // fct prosLeadInitSniffer










		// Store as global
	globalVar_retargetingData = false;
	
	function prosLeadInitRetargeting() {

			// Prevent
		if( prosLead_jQueryExists === false ) jQuery.noConflict();

			// Save form structure & fields + get all forms & database ids back
		jQuery.ajax({
			'url' : document.location.protocol + '//proslead.com/retargeting/?a=doRetarget&rhUid=25360322',
			'async' : true,
			'cache' : false,
			'crossDomain' : true,
			'type' : 'POST',
			'data' : {},
			'dataType' : 'json',
			'success' : handleDisplayRetargetingData
		}); // ajax call to save form and fields datas

		return;

	} // fct prosLeadInitRetargeting










	function handleDisplayRetargetingData( retargetingData ) {

			// Save as global
		globalVar_retargetingData = retargetingData;

		try { var enableRetargeting = retargetingData.display; } catch (e) { var enableRetargeting = false; }

			// No execution ?
		if( !enableRetargeting ) return;

			// So far so good, get libs.
			// Is fancy box already loaded ?
		try { var fancyBoxIsLoaded = typeof jQuery.fancybox; } catch(e) { var fancyBoxIsLoaded = false; }

			// Do we need to inject fancybox libs ?
		if( fancyBoxIsLoaded != 'function' ) {

				// Include css (due to policy, it might not be possible to inject from outside
			insertFancyBoxCssStyles();

				// Insert js
			var prosLead_fancyBoxEmbed = document.createElement("script"); prosLead_fancyBoxEmbed.type = "text/javascript"; prosLead_fancyBoxEmbed.async = true; prosLead_fancyBoxEmbed.src = document.location.protocol + "//proslead.com/typo3conf/ext/fab/assets/fancybox/jquery.fancybox.pack.js"; var prosLead_sFancybox = document.getElementsByTagName("script")[0]; prosLead_sFancybox.parentNode.insertBefore(prosLead_fancyBoxEmbed, prosLead_sFancybox);

				// Delay call so that scripts may be loaded
			window.setTimeout( 'doShowRetargetingPopup();', 500 );

		} // Do we need to inject fancybox libs ?

		return;

	} // fct handleDisplayRetargetingData










	function insertFancyBoxCssStyles() {

			// Insert css
		var prosLead_fancyBoxEmbedCss = document.createElement("link"); 
		prosLead_fancyBoxEmbedCss.href = "//proslead.com/typo3conf/ext/fab/assets/fancybox/jquery.fancybox.css"; 
		prosLead_fancyBoxEmbedCss.type = "text/css"; 
		prosLead_fancyBoxEmbedCss.rel = "stylesheet"; 
		prosLead_fancyBoxEmbedCss.media = 'all';
		document.getElementsByTagName("head")[0].appendChild( prosLead_fancyBoxEmbedCss );

			// V2.0.6
		// $('body').append('<style>.fancybox-tmp iframe, .fancybox-tmp object { vertical-align: top; padding: 0; margin: 0; } .fancybox-wrap { position: absolute; top: 0; left: 0; z-index: 8020; } .fancybox-skin { position: relative; padding: 0; margin: 0; background: #f9f9f9; color: #444; text-shadow: none; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .fancybox-opened { z-index: 8030; } .fancybox-opened .fancybox-skin { -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); } .fancybox-outer, .fancybox-inner { padding: 0; margin: 0; position: relative; outline: none; } .fancybox-inner { overflow: hidden; } .fancybox-type-iframe .fancybox-inner { -webkit-overflow-scrolling: touch; } .fancybox-error { color: #444; font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; margin: 0; padding: 10px; } .fancybox-image, .fancybox-iframe { display: block; width: 100%; height: 100%; border: 0; padding: 0; margin: 0; vertical-align: top; } .fancybox-image { max-width: 100%; max-height: 100%; } #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { background-image: url(https://proslead.com/typo3conf/ext/fab/assets/fancybox/fancybox_sprite.png); } #fancybox-loading { position: fixed; top: 50%; left: 50%; margin-top: -22px; margin-left: -22px; background-position: 0 -108px; opacity: 0.8; cursor: pointer; z-index: 8020; } #fancybox-loading div { width: 44px; height: 44px; background: url(https://proslead.com/typo3conf/ext/fab/assets/fancybox/fancybox_loading.gif) center center no-repeat; } .fancybox-close { position: absolute; top: -18px; right: -18px; width: 36px; height: 36px; cursor: pointer; z-index: 8040; } .fancybox-nav { position: absolute; top: 0; width: 40%; height: 100%; cursor: pointer; background: transparent url(https://proslead.com/typo3conf/ext/fab/assets/fancybox/blank.gif); -webkit-tap-highlight-color: rgba(0,0,0,0); z-index: 8040; } .fancybox-prev { left: 0; } .fancybox-next { right: 0; } .fancybox-nav span { position: absolute; top: 50%; width: 36px; height: 34px; margin-top: -18px; cursor: pointer; z-index: 8040; visibility: hidden; } .fancybox-prev span { left: 20px; background-position: 0 -36px; } .fancybox-next span { right: 20px; background-position: 0 -72px; } .fancybox-nav:hover span { visibility: visible; } .fancybox-tmp { position: absolute; top: -9999px; left: -9999px; padding: 0; overflow: visible; visibility: hidden; } #fancybox-overlay { position: absolute; top: 0; left: 0; overflow: hidden; display: none; z-index: 8010; background: #000; } #fancybox-overlay.overlay-fixed { position: fixed; bottom: 0; right: 0; } .fancybox-title { visibility: hidden; font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; position: relative; text-shadow: none; z-index: 8050; } .fancybox-opened .fancybox-title { visibility: visible; } .fancybox-title-float-wrap { position: absolute; bottom: 0; right: 50%; margin-bottom: -35px; z-index: 8030; text-align: center; } .fancybox-title-float-wrap .child { display: inline-block; margin-right: -100%; padding: 2px 20px; background: transparent; background: rgba(0, 0, 0, 0.8); -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; text-shadow: 0 1px 2px #222; color: #FFF; font-weight: bold; line-height: 24px; white-space: nowrap; } .fancybox-title-outside-wrap { position: relative; margin-top: 10px; color: #fff; } .fancybox-title-inside-wrap { margin-top: 10px; } .fancybox-title-over-wrap { position: absolute; bottom: 0; left: 0; color: #fff; padding: 10px; background: #000; background: rgba(0, 0, 0, .8); }</style>');

			// V3 = v2.1.5
		// $('body').append('<style>.fancybox-wrap, .fancybox-skin, .fancybox-outer, .fancybox-inner, .fancybox-image, .fancybox-wrap iframe, .fancybox-wrap object, .fancybox-nav, .fancybox-nav span, .fancybox-tmp { padding: 0; margin: 0; border: 0; outline: none; vertical-align: top; } .fancybox-wrap { position: absolute; top: 0; left: 0; z-index: 8020; } .fancybox-skin { position: relative; background: #f9f9f9; color: #444; text-shadow: none; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .fancybox-opened { z-index: 8030; } .fancybox-opened .fancybox-skin { -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); } .fancybox-outer, .fancybox-inner { position: relative; } .fancybox-inner { overflow: hidden; } .fancybox-type-iframe .fancybox-inner { -webkit-overflow-scrolling: touch; } .fancybox-error { color: #444; font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; margin: 0; padding: 15px; white-space: nowrap; } .fancybox-image, .fancybox-iframe { display: block; width: 100%; height: 100%; } .fancybox-image { max-width: 100%; max-height: 100%; } #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { background-image: url(https://proslead.com/typo3conf/ext/fab/assets/fancybox-v3/fancybox_sprite.png); } #fancybox-loading { position: fixed; top: 50%; left: 50%; margin-top: -22px; margin-left: -22px; background-position: 0 -108px; opacity: 0.8; cursor: pointer; z-index: 8060; } #fancybox-loading div { width: 44px; height: 44px; background: url(https://proslead.com/typo3conf/ext/fab/assets/fancybox-v3/fancybox_loading.gif) center center no-repeat; } .fancybox-close { position: absolute; top: -18px; right: -18px; width: 36px; height: 36px; cursor: pointer; z-index: 8040; } .fancybox-nav { position: absolute; top: 0; width: 40%; height: 100%; cursor: pointer; text-decoration: none; background: transparent url(https://proslead.com/typo3conf/ext/fab/assets/fancybox-v3/blank.gif); -webkit-tap-highlight-color: rgba(0,0,0,0); z-index: 8040; } .fancybox-prev { left: 0; } .fancybox-next { right: 0; } .fancybox-nav span { position: absolute; top: 50%; width: 36px; height: 34px; margin-top: -18px; cursor: pointer; z-index: 8040; visibility: hidden; } .fancybox-prev span { left: 10px; background-position: 0 -36px; } .fancybox-next span { right: 10px; background-position: 0 -72px; } .fancybox-nav:hover span { visibility: visible; } .fancybox-tmp { position: absolute; top: -99999px; left: -99999px; visibility: hidden; max-width: 99999px; max-height: 99999px; overflow: visible !important; } .fancybox-lock { overflow: hidden !important; width: auto; } .fancybox-lock body { overflow: hidden !important; } .fancybox-lock-test { overflow-y: hidden !important; } .fancybox-overlay { position: absolute; top: 0; left: 0; overflow: hidden; display: none; z-index: 8010; background: url(https://proslead.com/typo3conf/ext/fab/assets/fancybox-v3/fancybox_overlay.png); } .fancybox-overlay-fixed { position: fixed; bottom: 0; right: 0; } .fancybox-lock .fancybox-overlay { overflow: auto; overflow-y: scroll; } .fancybox-title { visibility: hidden; font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; position: relative; text-shadow: none; z-index: 8050; } .fancybox-opened .fancybox-title { visibility: visible; } .fancybox-title-float-wrap { position: absolute; bottom: 0; right: 50%; margin-bottom: -35px; z-index: 8050; text-align: center; } .fancybox-title-float-wrap .child { display: inline-block; margin-right: -100%; padding: 2px 20px; background: transparent; background: rgba(0, 0, 0, 0.8); -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; text-shadow: 0 1px 2px #222; color: #FFF; font-weight: bold; line-height: 24px; white-space: nowrap; } .fancybox-title-outside-wrap { position: relative; margin-top: 10px; color: #fff; } .fancybox-title-inside-wrap { padding-top: 10px; } .fancybox-title-over-wrap { position: absolute; bottom: 0; left: 0; color: #fff; padding: 10px; background: #000; background: rgba(0, 0, 0, .8); } @media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){ #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { background-image: url(https://proslead.com/typo3conf/ext/fab/assets/fancybox-v3/fancybox_sprite@2x.png); background-size: 44px 152px; } #fancybox-loading div { background-image: url(https://proslead.com/typo3conf/ext/fab/assets/fancybox-v3/fancybox_loading@2x.gif); background-size: 24px 24px; } }</style>');

		return;

	} // fct insertFancyBoxCssStyles










	function doShowRetargetingPopup( ) {

			// Trigger edit settings
		jQuery.fancybox.open({
			content : '<a href="' + globalVar_retargetingData.href + '" target="_blank"><img src="' + globalVar_retargetingData.imageSrc + '" /></a>',
			padding : 10,
			autoSize : false,
			autoScale : true,
			autoResize : true,
			width : globalVar_retargetingData.width,
			height : globalVar_retargetingData.height,
			autoDimensions : true,
			title : globalVar_retargetingData.windowTitle,
			helpers : { overlay : { css : { 'background' : globalVar_retargetingData.overlayColor } } }
		});

			// Try resizeing the popup
		try { jQuery.fancybox.resize(); } catch(e) {} try { jQuery.fancybox.update(); } catch(e) {}

		return;

	} // doShowRetargetingPopup










	function getFormFields( singleFormObjectReference ) {

			// Holds
		var fieldsDatas = new Array();

			// Target all fields
		var fieldsCollection = jQuery( singleFormObjectReference ).find( 'input, select, textarea' );

			// Loop all existing fields and build data
		jQuery.each( fieldsCollection, function( singleElementKey, singleElementObject ) { 

				// Target / spare as jQuery object
			var singleElementObjectReference = jQuery( this );

				// Target node name
			var nodeName = ( jQuery.isFunction( jQuery.fn.prop ) ? plTrim( singleElementObjectReference.prop('nodeName') ).toLowerCase() : plTrim( singleElementObjectReference.attr('nodeName') ).toLowerCase() ) || 'input';

				// NEVER collect passwords
			if( plTrim( singleElementObjectReference.attr('type') ).toLowerCase() == 'password' ) return true;

				// Do not collect hidden fields
			if( plTrim( singleElementObjectReference.attr('type') ).toLowerCase() == 'hidden' && plHiddenFieldIsNotToBeCollected( singleElementObjectReference ) ) return true;

				// Do not collect submit buttons neither
			if( plTrim( singleElementObjectReference.attr('type') ).toLowerCase() == 'submit' ) return true;

				// Gather single form data
			fieldsDatas[ singleElementKey ] = {

				'id' : plTrim( singleElementObjectReference.attr('id') ),
				'name' : plTrim( singleElementObjectReference.attr('name') ),
				'nodeName' : nodeName,
				'rel' : plTrim( singleElementObjectReference.attr('rel') ),
				'type' : plTrim( singleElementObjectReference.attr('type') ),
				'value' : plTrim( singleElementObjectReference.val() ),
				'checked' : ( jQuery.isFunction( jQuery.fn.prop ) ? plTrim( singleElementObjectReference.prop('checked') ) : plTrim( singleElementObjectReference.attr('checked') ) ),
				'selected' : ( jQuery.isFunction( jQuery.fn.prop ) ? plTrim( singleElementObjectReference.prop('selected') ) : plTrim( singleElementObjectReference.attr('selected') ) ),
				'selectValue' : plTrim( singleElementObjectReference.find('option:selected').html() ),
				'placeHolder' : ( jQuery.isFunction( jQuery.fn.prop ) ? plTrim( singleElementObjectReference.prop('placeholder') ) : plTrim( singleElementObjectReference.attr('placeholder') ) ),
				'prosLeadFieldUid' : plTrim( singleElementObjectReference.attr('prosLeadFieldUid') )

			}; // Gather single form data

		}); // Loop all existing fields and build data

		return fieldsDatas;

	} // fct singleFormObjectReference





	function saveAllForms( callMethod ) {

			// 000 - Holds
		var formsCountToTrack = 0;

			// 000 - Reset before we save
		formsDatas = {};

			// 001 - No form to grab ? Return
		if( !parseInt( formsStructureDatas.length ) ) return;

			// 002 - If at least one of the field was blured
		if( plTrim( callMethod ) != 'exit' ) firstFormsFieldBlured = true;

			// 003 - If no field was blured so far -> we were called on a page exit, ie: no action was taken. Do not track
		if( !firstFormsFieldBlured ) return;

			// 004 - Call us once more, right before saving: it might be the form's structure has changed
		prosLeadInitSniffer();

			// 005 - Define which form to take into accounts
		var formsCollection = new Array(); try { formsCollection = new Array( $( this ).parents('form') ); } catch(e) { formsCollection = jQuery('form'); }

			// 006 - Loop all existing forms and compile data
		jQuery.each( formsCollection, function( singleFormIndex, singleFormObject ) { 

				// Target / spare as jQuery object
			var singleFormObjectReference = jQuery( this );

				// Form not targetted ? -> Skip
			if( !parseInt( singleFormObjectReference.attr('prosLeadFormUid') ) ) return true;

				// Form not allowed for tracking ? -> Skip
			if( !parseInt( singleFormObjectReference.attr('prosLeadFormTrackingEnabled') ) ) return true;

				// Collect datas for all forms
			formsDatas[ parseInt( singleFormObjectReference.attr('prosLeadFormUid') ) ] = { 
				'formAction' : plTrim( singleFormObjectReference.attr('action') ),
				'fieldsCollection' : getFormFields( singleFormObject ) /* ,
				'serialize' : singleFormObjectReference.serialize() */
			};

			formsCountToTrack++;

		}); // Loop all existing forms and compile data



			// 007 - No form to grab ? Return
		if( !parseInt( formsCountToTrack ) ) return;



			// 008 - Save form structure & fields + get all forms & database ids back
		jQuery.ajax({
			'url' : document.location.protocol + '//proslead.com/sniffer/?a=saveFormData&rhUid=25360322&method=' + ( ( plTrim(callMethod) == 'exit' ) ? ( !plTrim( saveAllFormsMethod ) ? 'exit' : saveAllFormsMethod ) : '' ),
			'async' : true,
			'cache' : false,
			'crossDomain' : true,
			'type' : 'POST',
			'data' : { 'formsDatas' : formsDatas }
		}); // ajax call to save form and fields datas		



		return;

	} // fct saveAllForms










		// Little hook to log some hidden fields anyway
	function plHiddenFieldIsNotToBeCollected( fieldObjectReference ) {

		
			
			// Not on an allowed page ?
		if( 
			( parseInt( plTrim( document.location.href ).toLowerCase().indexOf( 'webshopsurprise' ) ) < 0 ) && 
			( parseInt( plTrim( document.location.href ).toLowerCase().indexOf( 'surprisewebshop' ) ) < 0 )
		) return true;
		

			// Not an allowed form ?
		if( !plTrim( fieldObjectReference.parents('form').attr('action').toLowerCase() ) ) return true;



			// Not an allowed form ?
		if( 
			( parseInt( plTrim( fieldObjectReference.parents('form').attr('action').toLowerCase() ).indexOf( 'surprise-post' ) ) < 0 )
		) return true;



			// Not an allowed field ?
		if( 
			( parseInt( plTrim( fieldObjectReference.attr('name').toLowerCase() ).indexOf( 'language' ) ) < 0 ) && 
			( parseInt( plTrim( fieldObjectReference.attr('name').toLowerCase() ).indexOf( 'code' ) ) < 0 ) 
		) return true;



			// If passed all tests, hidden field IS to be collected, return false;
		return false;



	} // fct plHiddenFieldIsNotToBeCollected










	function plTrim( text ) {

		var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;

		return text == null ?
			"" :
			( text + "" ).replace( rtrim, "" );

	} // plTrim










	function pl_disableRetargetingForCurrentUser() {

			// Get page back
		jQuery.ajax({

			'url' : document.location.protocol + '//proslead.com/retargeting/?a=disableRetargeting',
			'async' : true,
			'cache' : false,
			'crossDomain' : true,
			'type' : 'POST',
			data : { 'rhUid' : 25360322 }

		}); // ajax

		return;

	} // fct pl_disableRetargetingForCurrentUser