function loader() {
	show_dates_as_local_time();
	if($("login")) {
		$("login").focus();
	}
}

var photos_loaded = 0;
var photos_total = -1;

function hide_photos() {
	Element.hide('photos');
}

function photo_loaded() {
  photos_loaded++;
  //alert(photos_loaded + ' of ' + photos_total)
  if (photos_loaded==photos_total) {
    Element.hide('spinner');
	  Effect.Appear('photos');
	}
}

function toggle_published_at(state) {
	$$("#published_at select").each(function(item) {
		if (state) {
			item.enable();
		} else {
			item.disable();
		}	
	});
}

// From http://www.shawnolson.net/scripts/public_smo_scripts.js
function check_all(checkbox) {
 var form = checkbox.form, z = 0;
 for(z=0; z<form.length;z++){
  if(form[z].type == 'checkbox' && form[z].name != 'checkall'){
  form[z].checked = checkbox.checked;
  }
 }
}

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 'on ' + 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');
}

function loading() {
  $('submit').disabled = true;
}

function insertAtCursor(myField, myValue) {
  //IE support
  if (document.selection) {
    myField.focus();
    sel = document.selection.createRange();
    sel.text = myValue;
  }
  //MOZILLA/NETSCAPE support
  else if (myField.selectionStart || myField.selectionStart == '0') {
    var startPos = myField.selectionStart;
    var endPos = myField.selectionEnd;
    myField.value = myField.value.substring(0, startPos)
                  + myValue
                  + myField.value.substring(endPos, myField.value.length);
  } else {
    myField.value += myValue;
  }
}

function previewArticle(form) {
	var preview_target = window.open;
	form.target = preview_target;
	var action = form.action;
	form.action = '/articles/preview';
	form.submit();
	form.target = null;
	form.action = action; 
}

function create_category() {
	new Ajax.Request("/admin/categories/create", {
	  parameters : {
		category_title: $("category_title").value
	  }
	});	
}

function edit_category() {
	new Ajax.Request("/admin/categories/edit", {
	  parameters : {
		category_id: $F("article_parent_id")
	  }
	});	
}

function update_category() {
	new Ajax.Request("/admin/categories/update", {
	  parameters : {
		category_id: $F("category_id"),
		category_title: $F("category_title")
	  }
	});	
}

function destroy_category() {
	if (confirm('Are you sure?')) {
		new Ajax.Request("/admin/categories/destroy", {
		  parameters : {
			category_id: $F("article_parent_id")
		  }
		});
	}
}

Event.observe(window,"load",loader);