__RECORD_ID = null;
__BASIC_INFO = null;
__no_tracking = false;

__createRecordForUserSession_requested = false;
function createRecordForUserSession(collect_vars_from_form_id)
	{
	var rid = readCookie("lp_rid");
	if (rid == "undefined") rid = null;
	createRecordCVCallback_mem00 = collect_vars_from_form_id ? collect_vars_from_form_id : null;
	if (rid) createRecordCallback({id:rid});
	else if (!__createRecordForUserSession_requested)
		{
		var possibles = ["l_id","p_id","c_id","a_id"];
		var send = {
			ref:($_GET["r"]||"")
			};
		if (typeof(__page_name) != "undefined") send.page_name = __page_name;
		for (var i=0;i<possibles.length;i++)
			{
			if ($_GET[possibles[i]]) send[possibles[i]] = $_GET[possibles[i]];
			}
		$.get("/regdata2/track_reg.php",send,createRecordCallback);
		__createRecordForUserSession_requested = true;
		}
	}

function createRecordCallback(data)
	{
	if (typeof(data) == "string") data = eval("("+data+")");
	__RECORD_ID = data.id;
	createCookie("lp_rid",__RECORD_ID);
	if (createRecordCVCallback_mem00) updateRecordForUserSession(createRecordCVCallback_mem00);
	}

function getBasicInfoForUser(callback)
	{
	if (__RECORD_ID === null)
		{
		var rid = readCookie("lp_rid");
		if (rid || rid == "0") __RECORD_ID = rid;
		}
	if (!__RECORD_ID) return false;
	if (callback) getBasicInfoForUser_mem00 = callback;
	else getBasicInfoForUser_mem00 = null;
	$.get("/regdata2/get_reg_data.php",{id:__RECORD_ID,basic_req:1},getBasicInfoForUserCallback);
	}

function getBasicInfoForUserCallback(data)
	{
	if (typeof(data) == "string") data = eval("("+data+")");
	if (data.success) __BASIC_INFO = data.result;
	if (getBasicInfoForUser_mem00) getBasicInfoForUser_mem00();
	}

__recordRegSubmitFlag_submitted = false;
function setRecordRegSubmitFlag(submit_form)
	{
	if (submit_form) setRecordRegSubmitFlag_handler_mem00 = submit_form;
	else setRecordRegSubmitFlag_handler_mem00 = null;
	if (__RECORD_ID === null)
		{
		setRecordRegSubmitFlag_handler();
		return false;
		}
	else $.get("/regdata2/track_reg.php",{id:__RECORD_ID,reg_submit:1},setRecordRegSubmitFlag_handler);
	}

function setRecordRegSubmitFlag_handler(data)
	{
	__recordRegSubmitFlag_submitted = true;
	if (setRecordRegSubmitFlag_handler_mem00) setRecordRegSubmitFlag_handler_mem00.submit();
	}

__recordSubSubmitFlag_submitted = false;
function setRecordSubSubmitFlag(submit_form)
	{
	if (submit_form) setRecordSubSubmitFlag_handler_mem00 = submit_form;
	else setRecordSubSubmitFlag_handler_mem00 = null;
	if (__RECORD_ID === null)
		{
		setRecordSubSubmitFlag_handler();
		return false;
		}
	else $.get("/regdata2/track_reg.php",{id:__RECORD_ID,sub_submit:1},setRecordSubSubmitFlag_handler);
	}

function setRecordSubSubmitFlag_handler(data)
	{
	//if ($_GET["debug"]) alert(data);
	__recordSubSubmitFlag_submitted = true;
	if (setRecordSubSubmitFlag_handler_mem00) setRecordSubSubmitFlag_handler_mem00.submit();
	}

function updateRecordForUserSession(form_id)
	{
	if (__RECORD_ID === null)
		{
		createRecordForUserSession(form_id);
		return;
		}
	//collect input
	var inputs = $("#"+form_id).find("input,select,textarea");
	var send = new Object();
	send.id = __RECORD_ID;
	for (var i=0;i<inputs.length;i++)
		{
		var input = $(inputs[i]);
		var iname = input.attr("name")
		if (iname) send[iname] = input.val();
		}
	$.get("/regdata2/track_reg.php",send);
	}

function checkForReqUpdate(form_id,force_track)
	{
	if (__no_tracking) return false;
	if (!force_track)
		{
		//var reqs = $("#"+form_id+" .required");
		var reqs = $("#"+form_id).find("[name='full_name'],[name='email'],[name='phone_number']");
		}
	else var reqs = [];
	var go_ahead = true;
	for (var i=0;i<reqs.length;i++)
		{
		if (!reqs[i].has_focused || !$(reqs[i]).val())
			{
			go_ahead = false;
			break;
			}
		}
	//if ($_GET["debug"]) alert(go_ahead+" "+form_id+" "+reqs.length);
	if (go_ahead) updateRecordForUserSession(form_id);
	}

function getURLVars(from_str)
	{
	if (from_str) var url = from_str;
	else var url = ((typeof(window.location) == "string") ? window.location : window.location.href) || "";
	var var_string = url.split("?")[1] || "";
	var var_pairs = var_string.split("&");
	var get_object = new Object();
	for (var i=0;i<var_pairs.length;i++)
		{
		var pair = var_pairs[i].split("=");
		if (pair.length == 2) get_object[pair[0]] = pair[1];
		}
	return get_object;
	}
$_GET = getURLVars();

function urldecode(str)
	{
	return unescape(str).replace(/[+]/g," ");
	}

function alertField(jobj,err,pass)
	{
	var err_elm = jobj.parents("form:first").find(".error."+err.id);
	if (pass)
		{
		jobj.removeClass("highlight");
		jobj.addClass("successful");
		if (err.id) err_elm.html("");
		if (err_elm.hasClass("dblock")) err_elm.fadeOut(300);
		return true;
		}
	else
		{
		jobj.removeClass("successful");
		jobj.addClass("highlight");
		err_elm.html(err.message);
		if (err_elm.hasClass("dblock")) err_elm.fadeIn(300);
		return false;
		}
	}

var reg_exp_bad_name_chars = new RegExp("[^a-zA-Z\-\' ]","g");
var reg_exp_bad_email_chars = new RegExp("[^a-zA-Z0-9_@\+\-\.]","g");
var reg_exp_nnums = new RegExp("[^0-9]","g");
var reg_exp_perimeter_spaces = new RegExp("^( )+|( )+$","g");
var reg_exp_consecutive_spaces = new RegExp(" +","g");

function fixName(name)
	{
	name = name ? name+"" : "";
	name = name.replace(reg_exp_perimeter_spaces,"");
	name = name.replace(reg_exp_consecutive_spaces," ");
	name = name.replace(reg_exp_bad_name_chars,"");
	return name;
	}

function fixEmail(email)
	{
	email = email ? email+"" : "";
	return email.replace(reg_exp_bad_email_chars,"");
	}

function fixPhoneNum(phone_num)
	{
	phone_num = phone_num ? phone_num+"" : "";
	return phone_num.replace(reg_exp_nnums,"");
	}

function inputHasValue(jobj)
	{
	if (!jobj.val() || (jobj.attr("type") != "hidden" && jobj.val() == jobj[0].defaultValue)) return false;
	return true;
	}

function strHasLengthOf(str,l_arr)
	{
	for (var i=0;i<l_arr.length;i++)
		{
		if (str.length == l_arr[i]) return true;
		}
	return false;
	}

function strContains(val,str_arr)
	{
	val = typeof(val) == "object" ? val.value : (val || "");
	for (var i=0;i<str_arr.length;i++)
		{
		if (val.indexOf(str_arr[i]) == -1) return false;
		}
	return true;
	}

function inputOnBlur(inp)
	{
	var i = $(inp);
	i.removeClass("current");
	i[0].has_blurred = true;
	if (!i.val() && i[0] && i[0].defaultValue)
		{
		i.val(i[0].defaultValue);
		i.addClass("example");
		}
	}

function inputOnFocus(inp)
	{
	var i = $(inp);
	i.addClass("current");
	i[0].has_focused = true;
	if (i[0] && i.val() == i[0].defaultValue)
		{
		i.val("");
		i.removeClass("example");
		}
	}

function createCookie(name,value,days)
	{
	if (days)
		{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
		}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
	}

function readCookie(name)
	{
	var nameEQ = name+"=";
	var ca = document.cookie.split(";");
	for (var i=0;i<ca.length;i++)
		{
		var c = ca[i];
		while (c.charAt(0) == " ") c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
	return null;
	}

function eraseCookie(name)
	{
	createCookie(name,"",-1);
	}