/*
 * HubSpot custom form field handler
 * Requires: jQuery
 */
var submitCount = 0;
$(document).ready(function() {
/*
	$('div.hubspot-warning').each(function(el) {
		$(this).hide();
	});
*/
	$.ajaxSetup({'async': false});

	precheckWebinars();
});
function hubSpotSubmit(formId, vFields, postUrl) {
	if (validateFields(vFields) && validateWebinars(formId)) {
		if (submitCount <= 0) {
			submitCount++;
			$.post(postUrl, $('#LeadGen_ContactForm_' + formId).serialize());
		}
		return true;
	}
	return false;	
}
function setFieldInvalid(elm, error, errors) {
	elm.css('borderColor', '#DD2222');
	elm.css('borderWidth', '1px');
	elm.css('borderStyle', 'solid');
	if (errors.length <= 0) {
		elm.focus();
	}
	errors.push(error);
}
function setFieldValid(elm) {
	elm.css('borderColor', '');
	elm.css('borderWidth', '');
	elm.css('borderStyle', '');
}
function validateFields(fields) {
	var errors = new Array();
	var match_email = /\_Email$/;
	var validate_email = /^([a-zA-Z0-9_.-\\\%\+])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
	for (i=0; i<fields.length; i++) {
		var elm = $('#' + fields[i][0]);
		elm.val(jQuery.trim(elm.val()));
		if (!elm || !elm.val()) {
			setFieldInvalid(elm, fields[i][1], errors);
            break;
		}
		else if (match_email.test(elm.attr('id')) && !validate_email.test(elm.val())) {
			setFieldInvalid(elm, fields[i][1], errors);
            break;
		}
		else {
			setFieldValid(elm);
		}
	}
	if (errors.length > 0) {
		var errorFields = '';
		for (i=0; i<errors.length; i++) {
			errorFields += errors[i] + ', ';
		}
		errorFields = errorFields.substring(0, errorFields.length-2);
		alert('Please complete all required fields: ' + errorFields);
		return false;
	}
	return true;
}
function validateWebinars(formId) {
	var validate_livewebinar_multi = new RegExp('LeadGen_ContactForm_' + formId + '_m0_webinar_[0-9]+', 'g');
	var html = $('#LeadGen_ContactForm_' + formId).html();
	var total = 0;
	var checked = 0;
	var match;
	while (match = validate_livewebinar_multi.exec(html)) {
		var field = $('#' + match[0]);
		if (field.attr('checked')) {
			checked++;
		}
		total++;
	}
	if (total > 0 && checked <= 0) {
		alert('Please select the webinar or webinars you are interested in viewing.');
		return false;
	}
	return true;
}
function precheckWebinars() {
	var match_webinar_hash = /webinar=([0-9]+)/;
	var hashstring = self.document.location + self.document.location.hash;
	var match;
	if (match = match_webinar_hash.exec(hashstring)) {
		var match_checkbox_field = new RegExp('LeadGen_ContactForm_[0-9]+_m0_webinar_' + match[1], 'g');
		var html = $('body').html();
		var fieldMatch;
		while (fieldMatch = match_checkbox_field.exec(html)) {
			var field = $('#' + fieldMatch[0]);
			field.attr('checked', true);
		}
	}
}

