

var CSiteTracker = function(YWATrackerId) {
	/* CONSTANTS */
	this.DBL_BY_EMAIL = 'by_email';
	this.DBL_BY_IP = 'by_ip';
	this.DBL_BY_PHONE = 'by_phone';
	this.DBL_BY_EMAIL_AND_IP = 'by_email_and_ip';
	this.LT_SHORT = 12;
	this.LT_LONG = 13;


	this.isDef = function(o) {
		return (typeof o !== "undefined");
	};


	/* MEMBERS */
	this.YWATrackerId = YWATrackerId;

	this.defaults = {
		'page_group': '',
		'page_name': '',
		'step_name': '',
		'landing_name': ''
	};

	this.cleanText = function(txt) {
		try {
			txt = txt + '';
			txt = txt.replace(/[^\w\s\#\?-]/ig, "");
			txt = txt.replace(/\s{2,}|\t/ig, ' ');
		} catch (e) {
			txt = 'Unknown';
		}
		return txt;
	};
	/* METHODS */
	this.trackQuestions = function(questions) {
		try {
			var txt_action = '';
			var txt_questions = '';
			var txt_values = '';
			var txt_sections = '';
			for (qkey in questions) {
				var q = questions[qkey];
				txt_action += '14;';
				txt_questions += this.cleanText(q['q']) + ';';
				txt_values += this.cleanText(q['a']) + ';';
				txt_sections += this.cleanText(q['s']) + ';';
			}
			var YWATracker = YWA.getTracker(this.YWATrackerId);
			YWATracker.setAction(txt_action);
			YWATracker.setCF(19, txt_questions);
			YWATracker.setCF(20, txt_values);
			YWATracker.setCF(23, txt_sections);
			YWATracker.submit_action();
		} catch (e) {
		}
	};

	this.trackStepQ = function(step_name, questions) {
		try {
			var txt_action = '';
			var txt_questions = '';
			var txt_values = '';
			var txt_sections = '';
			for (qkey in questions) {
				var q = questions[qkey];
				txt_action += '14;';
				txt_questions += this.cleanText(q['q']) + ';';
				txt_values += this.cleanText(q['a']) + ';';
				txt_sections += this.cleanText(q['s']) + ';';
			}
			var YWATracker = YWA.getTracker(this.YWATrackerId);
			page_name = this.defaults.page_name;
			this.defaults.step_name = step_name;
			if (this.isDef(this.defaults.step_name) && this.defaults.step_name != '') page_name = page_name + ' - ' + this.defaults.step_name;
			YWATracker.setDocumentGroup(this.cleanText(this.defaults.page_group));
			YWATracker.setDocumentName(this.cleanText(page_name));
			YWATracker.setCF(4, this.cleanText(this.defaults.landing_name));
			if (this.url_params['tref1']) YWATracker.setCF(2, this.url_params['tref1']);
			if (this.url_params['tref2']) YWATracker.setCF(1, this.url_params['tref2']);
			if (this.url_params['tref3']) YWATracker.setCF(3, this.url_params['tref3']);
			YWATracker.setAction(txt_action);
			YWATracker.setCF(19, txt_questions);
			YWATracker.setCF(20, txt_values);
			YWATracker.setCF(23, txt_sections);
			YWATracker.submit();
		} catch (e) {
		}
	};

	this.trackAction = function(action_id) {
		var YWATracker = YWA.getTracker(this.YWATrackerId);
		//YWATracker.setDocumentGroup(this.defaults.page_group);
		//YWATracker.setDocumentName(page_name);
		YWATracker.setAction(action_id);
		YWATracker.submit_action();
	};
	this.trackLead = function(type) {
		if (!this.isDef(type)) type = this.LT_SHORT;
		this.trackAction(type);
	};
	this.trackClick = function(target, section) {
		if (!this.isDef(section)) section = '';
		this.trackQuestions([{
			'q': 'click_' + target,
			'a': '1',
			's': section
}]);
		};
		this.getUrlParams = function() {
			var vars = [], hash;
			var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
			for (var i = 0; i < hashes.length; i++) {
				hash = hashes[i].split('=');
				vars.push(hash[0]);
				vars[hash[0]] = hash[1];
			}
			return vars;
		};
		this.trackPage = function(page_name) {

			if (!this.isDef(page_name)) {
				page_name = this.defaults.page_name;
			} else {
				this.defaults.page_name = page_name;
			}
			if (this.isDef(this.defaults.step_name) && this.defaults.step_name != '') page_name = page_name + ' - ' + this.defaults.step_name;

			var YWATracker = YWA.getTracker(this.YWATrackerId);
			YWATracker.setDocumentGroup(this.cleanText(this.defaults.page_group));
			YWATracker.setDocumentName(this.cleanText(page_name));
			YWATracker.setCF(4, this.cleanText(this.defaults.landing_name));
			if (this.url_params['tref1']) YWATracker.setCF(2, this.url_params['tref1']);
			if (this.url_params['tref2']) YWATracker.setCF(1, this.url_params['tref2']);
			if (this.url_params['tref3']) YWATracker.setCF(3, this.url_params['tref3']);
			//YWATracker.setCF(21,txt_param);
			//YWATracker.setCF(22,txt_values);        

			YWATracker.submit();

		};
		this.trackStep = function(step_name) {
			if (!this.isDef(step_name)) {
				step_name = this.defaults.step_name;
			} else {
				this.defaults.step_name = step_name;
			}
			//this.defaults.step_name=step_name;
			this.trackPage();
		};
		this.setLeadParams = function(params) {
			try {
				var txt_action = '';
				var txt_param = '';
				var txt_values = '';
				for (qkey in params) {
					var q = params[qkey];
					txt_action += '15;';
					txt_param += q['key'] + ';';
					txt_values += q['val'] + ';';
				}
				var YWATracker = YWA.getTracker(this.YWATrackerId);
				YWATracker.setAction(txt_action);
				YWATracker.setCF(21, txt_param);
				YWATracker.setCF(22, txt_values);
				YWATracker.submit_action();
			} catch (e) {
			}
		};

		this.checkAsGood = function(to) {
			if (!this.isDef(to)) to = '';
			var YWATracker = YWA.getTracker(this.YWATrackerId);
			YWATracker.setAction('17;15;');
			YWATracker.setCF(21, ';good;');
			var t1 = ';' + to + ";";
			YWATracker.setCF(22, t1);
			YWATracker.submit_action();
		};
		this.checkAsDouble = function(by) {
			if (!this.isDef(by)) by = '';
			var YWATracker = YWA.getTracker(this.YWATrackerId);
			YWATracker.setAction('16;15;');
			YWATracker.setCF(21, ';double_status;');
			YWATracker.setCF(22, ';' + by + ';');
			YWATracker.submit_action();
		};


		this.url_params = this.getUrlParams();
	}



	/* CONFIGURATION */

	// in main template


	//var STracker=new CSiteTracker("");


	/*

	// on the entry page

	STracker.defaults.landing_name="[LANDING NAME]";

	// at start of page
	STracker.defaults.page_name="[PAGE NAME HERE]";
	STracker.defaults.page_group="[PAGE GROUP HERE]";

	// at step
	STracker.defaults.step="[STEP NAME]";


	// at and of page
	STracker.trackPage();


	*/
