
function TimezoneDetector()
{
	var self = this;
	
	this.getGmtOffset = function(UtcTimestamp) //Probable possible to make kewler
	{
		var date = new Date(UtcTimestamp);
		var temp = date.toUTCString();
	 	var newdate = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	 	return Math.round((date - newdate) / (250 * 60 * 60))/4;
	}
	
	this.getTimezoneDescriptor = function()
	{
		var startTimestamp = Date.UTC(2008, 0, 1, 0, 15, 0, 0);
		var winterTime = this.getGmtOffset(startTimestamp);
		var summerTime = null;
		var startDst = null;
		var endDst = null;
		var winter = true;
		for (var i = 0; i<365; i++)
		{
			var time = this.getGmtOffset(startTimestamp);
			if (winter)
			{
				if (time != winterTime)
				{
					startDst = i;
					summerTime = time;
					winter = false;
				}
			} else
			{
				if (time != summerTime)
				{
				
					endDst = i;
					winter = true;
				}
			}
			startTimestamp+=1000*60*60*24;
		}
		if (!summerTime)
		{
			summerTime = winterTime;
			startDst = 0;
			endDst = 0;
		}
		return 	winterTime+"/"+summerTime+"/"+startDst+"/"+endDst;
	}
	
	this.setCookie = function() //Possibly optimize it, skip descriptor calculation when cookie present
	{
		document.cookie = "timezone="+this.getTimezoneDescriptor()+"; path=/";
	}
}

var detector = new TimezoneDetector();
detector.setCookie();
