/*
Usage:
	<script type="text/javascript" src="http://i.tdconline.dk/global/js/global.js"></script>
	<script type="text/javascript" src="http://i.tdconline.dk/global/js/DataCookie.js"></script>

Set data:
	var DataCookie = new DataCookie();
	DataCookie.set('name', 'value', DataCookie.getTimestamp()+1000);
	this will set the variable 'name' to 'value' for 1000 seconds

Get data:
	var DataCookie = new DataCookie();
	DataCookie.get('name');
	this will return the value of the variable 'name' or false

Remove data:
	var DataCookie = new DataCookie();
	DataCookie.remove('name');
	this will remove the 'name' variable
*/

function DataCookie() {
	this.data_cookie_name = 'tdc_data_cookie';
	this.data_cookie_path = '/';
	this.data_cookie_domain = '.' + location.hostname.match("[-a-z0-9]+\.[a-z]{2,3}$");
	this.data_cookie_expiretime = (60*60*24*30*12); // one year
	this.data = new Array();
	this._getCookieData(true);
}

DataCookie.prototype.set = function(name, value, expire) {
	var nextelement = (DataCookie.data.length > 0) ? DataCookie.data.length : 0;
	if (DataCookie.get(name)) {
		for (var i = 0; i < DataCookie.data.length; i++) {
			if (DataCookie.data[i][0] == name) {
				nextelement = i;
			}
		}
	}
	DataCookie.data[nextelement] = new Array();
	DataCookie.data[nextelement][0] = name;
	DataCookie.data[nextelement][1] = value;
	DataCookie.data[nextelement][2] = expire;
	DataCookie._saveCookieData();
	return true;
}

DataCookie.prototype.get = function(name) {
	DataCookie._getCookieData();
	if (DataCookie.data.length > 0) {
		for (var i = 0; i < DataCookie.data.length; i++) {
			if (DataCookie.data[i][0] == name) {
				if (DataCookie.data[i][2] > DataCookie.getTimestamp()) {
					return DataCookie.data[i][1];
				}	
			}
		}
	}
	return false;
}

DataCookie.prototype.remove = function(name) {
	if (DataCookie.get(name)) {
		for (var i = 0; i < DataCookie.data.length; i++) {
			if (DataCookie.data[i][0] == name) {
				DataCookie.data.splice(i,1);
				DataCookie._saveCookieData();
			}
		}
	}
	return true;
}

DataCookie.prototype.getTimestamp = function() {
	var myDate = new Date();
	var timestamp = (myDate.getTime()/1000.0);
	return Math.round(timestamp);
}

DataCookie.prototype._getCookieData = function(calledfromconstructor) {
	var data;
	if (calledfromconstructor) {
		data = getCookie(this.data_cookie_name);
	} else {
		data = getCookie(DataCookie.data_cookie_name);
	}

	if (data) {
		var singlenames = data.split(';;');
	} else {
		return false;
	}
	for (var i = 0; i < singlenames.length; i++) {
		var valueline = singlenames[i];
		if (valueline == '') {
			continue;
		}
		var singlevalues = valueline.split('||');
		
		if (calledfromconstructor) {
			this.data[i] = new Array();
			this.data[i][0] = singlevalues[0];
			this.data[i][1] = singlevalues[1];
			this.data[i][2] = singlevalues[2];
		} else {
			DataCookie.data[i] = new Array();
			DataCookie.data[i][0] = singlevalues[0];
			DataCookie.data[i][1] = singlevalues[1];
			DataCookie.data[i][2] = singlevalues[2];
		}
	}
	return true;
}

DataCookie.prototype._saveCookieData = function() {
	var cookiestring = '';
	var singlevalue = '';
	if (DataCookie.data.length > 0) {
		for (var i = 0; i < DataCookie.data.length; i++) {
			singlevalue = DataCookie.data[i];
			if (DataCookie.getTimestamp() > singlevalue[2]) {
				continue;
			}
			cookiestring += singlevalue[0] + '||' + singlevalue[1] + '||' + singlevalue[2] + ';;';
		}
	}
	setCookie(DataCookie.data_cookie_name, cookiestring, new Date((DataCookie.getTimestamp()+DataCookie.data_cookie_expiretime)*1000), DataCookie.data_cookie_path, DataCookie.data_cookie_domain);
	return true;
}
