// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

// so we have this until prototype loads
function $(element) 
{
  return document.getElementById(element);
}

	function register_onload(func) {
	  Event.observe(window, 'load', func, false);
	}
	
	function show_dates_as_local_time() {
	  var spans = document.getElementsByTagName('span');
	  for (var i=0; i<spans.length; i++) {
	    if (spans[i].className.match(/\btypo_date\b/i)) {
	      spans[i].innerHTML = get_local_time_for_date(spans[i].title);
	    }
	  }
	}
	
	function get_local_time_for_date(time) {
	  system_date = new Date(time);
	  user_date = new Date();
	  delta_minutes = Math.floor((user_date - system_date) / (60 * 1000));
	  if (Math.abs(delta_minutes) <= (8*7*24*60)) { // eight weeks... I'm lazy to count days for longer than that
	    distance = distance_of_time_in_words(delta_minutes);
	    if (delta_minutes < 0) {
	      return distance + ' from now';
	    } else {
	      return distance + ' ago';
	    }
	  } else {
	    return system_date.toLocaleDateString();
	  }
	}
	
	// a vague copy of rails' inbuilt function,
	// but a bit more friendly with the hours.
	function distance_of_time_in_words(minutes) {
	  if (minutes.isNaN) return "";
	  minutes = Math.abs(minutes);
	  if (minutes < 1) return ('less than a minute');
	  if (minutes < 50) return (minutes + ' minute' + (minutes == 1 ? '' : 's'));
	  if (minutes < 90) return ('about one hour');
	  if (minutes < 1080) return (Math.round(minutes / 60) + ' hours');
	  if (minutes < 1440) return ('one day');
	  if (minutes < 2880) return ('about one day');
	  else return (Math.round(minutes / 1440) + ' days')
	}

/* tm themes */

function bad_browser()
{
  if (navigator.userAgent.indexOf("Version/5.1 Safari") != -1)
    return true;
  return false;
}

function altsetActiveStyleSheet(title,first) {
  // just reload the entire page on safari 5.1
  if (!first)
    {
      createCookie("tm_theme", title, 365);
      window.location.href=window.location.href;
    }
  docs=$A(document.getElementsByTagName("link"));
  for(i=0; (a = docs[i]); i++) 
    if (a.getAttribute("rel").indexOf("alternate st")!=-1)
      {
        a.parentNode.removeChild(a);
        }
  e = document.createElement("link");
  e.setAttribute("href", "/stylesheets/" + title + ".css")
  e.setAttribute("media","screen");
  e.setAttribute("rel","stylesheet");
  e.setAttribute("title",title);
  e.setAttribute("type","text/css");
  e.disabled=false;
  head=document.getElementsByTagName('head')[0];
  // alert(head.innerHTML);
  head.appendChild(e);
  createCookie("tm_theme", title, 365);
}

function setActiveStyleSheet(title, first) {
  if (bad_browser())
    return altsetActiveStyleSheet(title,first);
  var i, a, main;
  docs=document.getElementsByTagName("link");
  for(i=0; (a = docs[i]); i++) 
//	var links=$$('#head link');
//	var start=new Date();
//	links.each (function (a) 
	{
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) 
        a.disabled = false;
    }
  }// );
	// var end=new Date();
	// alert (end-start);
	createCookie("tm_theme", title, 365);
}

window.onload = function(e) {
  var cookie = readCookie("tm_theme");
  var theme = cookie ? cookie : "twilight";
	if ($('tm_theme_picker')) {
		$('tm_theme_picker').value=theme;
	  setActiveStyleSheet(theme,true);
	}
  }

/* cookies */

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

function 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 expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

/* private */

function toggle_private()
{
  o=$('paste_restricted');
  if (o.checked)
  {
    $('private').style.display="block";
    // $('legend').style.display="none";
  }
  else
  {
    $('private').style.display="none";
    // $('legend').style.display="block";
  }

}

