function tmz_createCookie(name, value, days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function tmz_readCookie(name) {
  var ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
  return null;
}

function calculate_time_zone() {
    var d = new Date();
    std_time_offset = (d.getTimezoneOffset() / 60) * -1;
    // create a test cookie to see if the user can accept cookies
    tmz_createCookie('bp_test_cookie', '...', 365);
    var testC = tmz_readCookie('bp_test_cookie');
    if(testC != '...'){ /* no cookie for you! */ return; }
    // has the timezone been saved before?
    var tzone = tmz_readCookie('bp_calendar_timezone');
    // or has it changed?
    if(tzone === null || std_time_offset != tzone){
    	// save the offset to be read by the server
    	tmz_createCookie('bp_calendar_timezone', std_time_offset, 365);
    	// refresh with the new timezone! (if it isn't already shown)
    	if($('timezone').value != std_time_offset){
    		$('timezone').value = std_time_offset;
    		$$('#side-navigation form[name="options"] input[name="submit"]')[0].click();
    	}
    }
}
Event.observe(window, 'load', calculate_time_zone);
