//Core functions
	function getCurrentOffset(baseUTC,Zone)
		{
			var startDST		=	new Date();
			var endDST			=	new Date();	
			var today			=	new Date();
			var returnOffset	=	baseUTC;
			
			switch(Zone.toLowerCase())
				{
				//US and Canada
				case 'us': case 'ca':
					startDST		=	getDSTStart();
					endDST			=	getDSTEnd();
					break;
				//Mexico
				case 'mx':
					startDST		=	getDSTStartMX();
					endDST			=	getDSTEndMX();
					break;
				//Switzerland
				case 'ch': case 'nl': case 'fr': case 'gr': case 'se':
					startDST		=	getDSTStartEU();
					endDST			=	getDSTEndEU();
					break;
				//Use the US until we add more rules
				default:
					startDST		=	getDSTStart();
					endDST			=	getDSTEnd();
					break;
				}

			
			//if today's date is bigger than the start and smaller than the end
			if( (today >= startDST) && (today <= endDST) )
				{
					returnOffset = ( (returnOffset*1) + (1*1) )
				}
			return returnOffset;
		}
//International Functions	
	//The USA and Canada
	function getDSTStart()
		{
			//new Date(year, month, day, hours, minutes, seconds, milliseconds)
			var baseDate		=	new Date();
			//Start: Second Sunday in March : Start by making a date of this year and March 1st
			var startDST		=	new Date(baseDate.getFullYear(), 2, 1);
			//loop over the start date until we hit the 2nd Sunday
			var startCount		=	0;
			//getDay() : 0 - 6 where Sunday is 0
			while (startCount < 2)
				{
					//check the current val to see if it's Sunday
					if(startDST.getDay() == 0)
						{startCount++;}
					//increment the date
					if(startCount < 2)
						{startDST.setDate(startDST.getDate()+1)}
				}
			return startDST;		
		}
	function getDSTEnd()
		{
			//new Date(year, month, day, hours, minutes, seconds, milliseconds)
			var baseDate		=	new Date();
			//End: First Sunday in November : Start by making a date of this year and November 1st
			var endDST			=	new Date(baseDate.getFullYear(), 10, 1);
			var endCount		=	0;
			//getDay() : 0 - 6 where Sunday is 0
			while (endCount < 1)
				{
					//check the current val to see if it's Sunday
					if(endDST.getDay() == 0)
						{endCount++;}
					//increment the date
					if(endCount < 1)
						{endDST.setDate(endDST.getDate()+1)}
				}
			return endDST;			
		}
	//Mexico
	function getDSTStartMX()
		{
			//new Date(year, month, day, hours, minutes, seconds, milliseconds)
			var baseDate		=	new Date();
			//Start: First Sunday in April : Start by making a date of this year and March 1st
			var startDST		=	new Date(baseDate.getFullYear(), 3, 1);
			//loop over the start date until we hit the 2nd Sunday
			var startCount		=	0;
			//getDay() : 0 - 6 where Sunday is 0
			while (startCount < 1)
				{
					//check the current val to see if it's Sunday
					if(startDST.getDay() == 0)
						{startCount++;}
					//increment the date
					if(startCount < 1)
						{startDST.setDate(startDST.getDate()+1)}
				}
			return startDST;		
		}
	function getDSTEndMX()
		{
			//new Date(year, month, day, hours, minutes, seconds, milliseconds)
			var baseDate		=	new Date();
			//End: Last Sunday in October : Start by making a date of this year and October 31st
			var endDST			=	new Date(baseDate.getFullYear(), 9, 31);
			var endCount		=	0;
			//getDay() : 0 - 6 where Sunday is 0
			while (endCount < 1)
				{
					//check the current val to see if it's Sunday
					if(endDST.getDay() == 0)
						{endCount++;}
					//increment the date
					if(endCount < 1)
						{endDST.setDate(endDST.getDate()-1)}
				}
			return endDST;			
		}
	//Most of the EU
	function getDSTStartEU()
		{
			//new Date(year, month, day, hours, minutes, seconds, milliseconds)
			var baseDate		=	new Date();
			//Start: Last Sunday in March : Start by making a date of this year and March 1st
			var startDST		=	new Date(baseDate.getFullYear(), 2, 31);
			//loop over the start date until we hit the last Sunday
			var startCount		=	0;
			//getDay() : 0 - 6 where Sunday is 0
			while (startCount < 1)
				{
					//check the current val to see if it's Sunday
					if(startDST.getDay() == 0)
						{startCount++;}
					//increment the date
					if(startCount < 1)
						{startDST.setDate(startDST.getDate()-1)}
				}
			return startDST;		
		}
	function getDSTEndEU()
		{
			//new Date(year, month, day, hours, minutes, seconds, milliseconds)
			var baseDate		=	new Date();
			//End: Last Sunday in October : Start by making a date of this year and October 31st
			var endDST			=	new Date(baseDate.getFullYear(), 9, 31);
			var endCount		=	0;
			//getDay() : 0 - 6 where Sunday is 0
			while (endCount < 1)
				{
					//check the current val to see if it's Sunday
					if(endDST.getDay() == 0)
						{endCount++;}
					//increment the date
					if(endCount < 1)
						{endDST.setDate(endDST.getDate()-1)}
				}
			return endDST;			
		}
