
var ydlVisitTypeCookieTTL = 14; // days
var ydlVisitTypeCookieName = 'vt';
var ydlPUT = 'p';
var ydlUUT = 'u';

function matchURL(detectionKey) {
	if(detectionKey == null) return true;
	var urlParts = window.location.pathname.split('/');
	if(urlParts && urlParts.length > 0) {
		if(urlParts[1] == detectionKey) return true;
	}
	return false;
}

function matchQueryString(detectionKey, detectionKeyValue) {
	if(detectionKey == null) return true;
	var queryString = window.location.search;
	if(queryString && queryString.length > 0) {
		queryString = queryString.substr(1);
		var pairs = queryString.split('&');
		if(pairs && pairs.length > 0) {
			for(var i=0; i<pairs.length; i++) {
				var keyVal = pairs[i].split('=');
				if(keyVal && keyVal.length == 2) {
					if(keyVal[0] == detectionKey) {
						if(detectionKeyValue == null) return true;
						if(keyVal[1] == detectionKeyValue) return true;
					}
				}
			}
		}
	}
	return false;
}


function createCookie(name,value,days,path,domain,secure) {
	var cookie_string = name + "=" + escape(value);
	if(days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		cookie_string += "; expires="+date.toGMTString();
	}
	if(path)   cookie_string += "; path=" + escape ( path );
	if(domain) cookie_string += "; domain=" + escape ( domain );
	if(secure) cookie_string += "; secure";
	document.cookie = cookie_string;
}


function readCookie (name) {
  var results = document.cookie.match ( '(^|;) ?' + name + '=([^;]*)(;|$)' );
  if ( results ) return ( unescape ( results[2] ) );
  else return null;
}

function getBaseDomain(){
	var domainParts = document.domain.split(/\./);
	if(domainParts.length > 1) {
	    return(domainParts[domainParts.length-2] + "." +  domainParts[domainParts.length-1]);
	} else {
	    return(document.domain);
	}
}

function detectVisitType() {
	var matched = matchQueryString('provider', null);
	if(matched) return ydlPUT;
	return ydlUUT;
}


var ydlLeadUrl = 'https://labs.natpal.com/trk/lead';
var ydlLeadForm = null;

function ydlLoadPixel(customQsParams) {
	try {
		if (ydlLeadForm != null && ydlLeadUrl != null) {
			var url = ydlLeadUrl + '?' + ydlFormToQueryString(ydlLeadForm, customQsParams);
			var oScript = document.createElement("img");
			oScript.setAttribute("src", url);
			var head = document.getElementsByTagName("head").item(0);
			head.appendChild(oScript);
		}
	} catch (e) {}
	return true;
}

function ydlFormToQueryString(form, customQs) {
	var qs = customQs;
	if(qs && qs != '') qs += '&';
	for ( var i = 0; i < form.length; i++) {
		var el = form.elements[i];
		var val = ydlGetElementValue(el);
		if(val != null) qs += el.name + '=' + escape(val) + '&';
	}
	return qs;
}

function ydlGetElementValue(formElement) {
	var type;
	if (formElement.length != null) type = formElement[0].type;
	if ((typeof (type) == 'undefined') || (type == 0)) type = formElement.type;

	switch (type) {
		case 'undefined': return null;
		case 'radio':
			if (formElement.checked == true) return formElement.value
			else return null;
		case 'select-multiple':
			var myArray = new Array();
			for ( var j = 0; j < formElement.length; j++)
				if (formElement[j].selected == true) myArray[myArray.length] = formElement[j].value;
			return myArray;
	
		case 'checkbox':
			return formElement.checked;
	
		default:
			return formElement.value;
	}
}

function ydlFindLeadForm() {
	var forms = document.forms;
	if (forms.length == 1) return forms[0];
	for ( var index = 0; index < forms.length; index++) {
		var form = forms[index];
		if (form.id == 'ylf' || form.name == 'ylf') return form;
	}
	return null;
}

function ydlSubmitLead() {
	var typeInCookie = readCookie(ydlVisitTypeCookieName);
	if(typeInCookie == null || typeInCookie == ydlPUT) return true;
	return false;
}

function ydlInit(customQsParams) {
	if(ydlSubmitLead()) {
		ydlLeadForm = ydlFindLeadForm();
		var oldOnSubmit = ydlLeadForm.onsubmit;
		if (typeof (oldOnSubmit) != "function")
			ydlLeadForm.onsubmit = function(event) { ydlLoadPixel(customQsParams); };
		else {
			ydlLeadForm.onsubmit = function(event) {
				try {
					oldOnSubmit.call(this, event);
				} catch (e) {}
				ydlLoadPixel(customQsParams);
			};
		}
	}
}
ydlInit();
