﻿/* basket */
var Basket = new function() {

	var me = this;

	this.Toggle = function(VacancyID) {

		if (!me.VacancyInBasket(VacancyID)) {
			me.AddVacancyToBasket(VacancyID);
			f.AddClass('aB_' + VacancyID, 'show');
		} else {
			me.RemoveVacancyFromBasket(VacancyID);
			f.RemoveClass('aB_' + VacancyID, 'show');
		}
		me.ShowBasket();
	}


	this.ShowVacancyStatus = function() {
		var aLinks = f.GetObjectsByIDPrefix('aB_', 'a');
		var iVacancyID;
		for (var i = 0; i < aLinks.length; i++) {
			iVacancyID = aLinks[i].id.split('_')[1];
			f.SetClassIf(aLinks[i], 'show', me.VacancyInBasket(iVacancyID));
		}

	}



	/* basket handling */
	this.AddVacancyToBasket = function(VacancyID) {
		if (!me.VacancyInBasket(VacancyID)) {
			me.SetCookie(me.GetCookie() + VacancyID + ',');
		}
	}

	this.RemoveVacancyFromBasket = function(VacancyID) {
		me.SetCookie(me.GetCookie().replace(VacancyID + ',', ''));
	}

	this.ClearAll = function(bNoConfirm) {
		bNoConfirm = bNoConfirm == undefined ? false : true;
		if (bNoConfirm || confirm('Are you sure you want to remove all of the vacancies from the Job Basket?')) {
			me.SetCookie('');
			me.ShowBasket();
			me.ShowVacancyStatus();
		}
	}

	this.ShowBasket = function() {
		if (f.GetObject('divBasket')) {
			var iVacancyCount = me.VacancyCount();
			f.ShowIf('divBasket_NoVacancies', iVacancyCount == 0);
			f.ShowIf('divBasket_Vacancies', iVacancyCount > 0);
			if (iVacancyCount > 0) {
				f.GetObject('spnVacancyCount').innerHTML = iVacancyCount + (iVacancyCount == 1 ? ' vacancy' : ' vacancies');
			}
		}
	}


	this.VacancyInBasket = function(VacancyID) {
		return me.GetCookie().indexOf(VacancyID + ',') > -1;
	}
	this.VacancyCount = function() {
		return me.GetCookie().split(',').length - 1;
	}


	/* cookie support */
	this.SetCookie = function(sVacancyIDs) {
		c.Set('vacancyids', sVacancyIDs);
	}
	this.GetCookie = function() {
		return c.Get('vacancyids');
	}


}