if (!window['VTLS']) window['VTLS'] = {};
VTLS.Compare = {
	'max' : 3,
	'list' : [],
	'events' : {
		'onAdd' : [],
		'onRemove' : [],
		'onMaxReached' : []
	},
	'request' : function() {
		var l = this.list.length;
		if (l < 1) return;
		var form = document.createElement('form');
		form.method = 'post';
		// build compare uri
		var str = '';
		for (var i = 0; i < l; i++) {
			str += ''+this.list[i].master_id+(i + 1 != l ? ',' : '');
		}
		form.action = (constant && constant.V2_BASE_URL ? constant.V2_BASE_URL + '/doctor/compare/'+str : '../../doctor/compare/'+str);
		form.enctype = 'multipart/form-data';
		/*var input;
		for (var i = 0; i < l; i++) {
			input = document.createElement('input');
			input.type = 'hidden'
			input.name = 'find_doc_compare_' + (i + 1);
			input.value = this.list[i].provider_id;
			form.appendChild(input);
			input = document.createElement('input');
			input.type = 'hidden'
			input.name = 'find_doc_compare_ppid_' + (i + 1);
			input.value = this.list[i].provider_practice_id;
			form.appendChild(input);
		}*/
		document.getElementsByTagName('body').item(0).appendChild(form);
		form.submit();
	},
	'add' : function(r) {
		if (this.list.length >= this.max) {
			this.raise('onMaxReached', r);
			return false;
		}
		this.list.push(r);
		this.raise('onAdd', r);
		return true;
	},
	'remove' : function(i) {
		if (i < 0 || i >= this.list.length)
			return false;
		var bye = this.list.splice(i, 1);
		this.raise('onRemove', bye[0]);
		return true;
	},
	'inlist' : function(r) {
		for (var i = 0, l = this.list.length; i < l; i++) {
			if (r == this.list[i]) {
				return i;
			}
		}
		return false;
	},
	'subscribe' : function(ev, fn) {
		if (!this.events.hasOwnProperty(ev)
		||   typeof fn != 'function') return;
		this.events[ev].push(fn);
	},
	'raise' : function(ev) {
		if (!this.events.hasOwnProperty(ev)) return;
		var args = [];
		for (var i = 1, l = arguments.length; i < l; i++)
			args.push(arguments[i]);
		for (var i = 0, l = this.events[ev].length; i < l; i++)
			this.events[ev][i].apply(this, args);
	}
};
