;; parametar postavljen pomocu G-p (set-group-parameters)
(add-to-list 'gnus-newsgroup-variables 'current-group-language)

(defun suffix-for-number (number)
  (cond 
   ((and (eq (% number 10) 1) (not (eq (% number 100) 11))) "st")
   ((and (eq (% number 10) 2) (not (eq (% number 100) 12))) "nd")
   ((and (eq (% number 10) 3) (not (eq (% number 100) 13))) "rd")
   (t "th")))

(defun create-attribution (mail-time name)
  (setq name (or (car (mail-extract-address-components name)) name))
  (setq 
   day-list '("Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday")
   month-list '("December" "January" "February" "March" "April" "May" 
		  "June" "July" "August" "September" "October" "November" "December"))
  (setq fields (decode-time (date-to-time mail-time)))
  (setq diff (- (time-to-days (current-time))
		   (time-to-days (date-to-time mail-time))))
  (setq hours (format "%d:%02d" (caddr fields) (cadr fields)))
  (setq day (nth (nth 6 fields) day-list))
  (setq mesec (nth (nth 4 fields) month-list))
  (cond ((< diff 0) (concat "In the future, " name " will write:"))
	((< diff 1) (concat "Today at " hours ", " name " wrote:"))
        ((< diff 2) (concat "Yesterday at " hours ", " name " wrote:"))
	((< diff 5) (concat "On " day " at " hours ", " name " wrote:"))
	((< diff 300) (format "On %s %d%s, %s wrote:" mesec (nth 3 fields) (suffix-for-number (nth 3 fields))  name))
	(t          (format "Once upon a time, in a small country far away lived %s.\nAnd one day, %s stood up and said:" 
			    name name))))

(defun create-sr-attribution (mail-time name)
  (setq name (or (car (mail-extract-address-components name)) name))
  (setq 
   day-list '("недељу" "понедељак" "уторак" "среду" "четвртак" "петак" "суботу" "недељу")
   month-list '("децембра" "јануара" "фебруара" "марта" "априла" "маја" 
		"јуна" "јула" "августа" "септембра" "октобра" "новембра" "децембра"))
  (setq fields (decode-time (date-to-time mail-time)))
  (setq diff (- (time-to-days (current-time))
		   (time-to-days (date-to-time mail-time))))
  (setq hours (format "%d:%02d" (caddr fields) (cadr fields)))
  (setq day (nth (nth 6 fields) day-list))
  (setq mesec (nth (nth 4 fields) month-list))
  (cond ((< diff 0) (concat "У будућности ће " name " написати:"))
	((< diff 1) (concat "Данас у " hours ", " name " написа:"))
        ((< diff 2) (concat "Јуче у " hours ", " name " написа:"))
	((< diff 5) (concat "У " day " у " hours ", " name " написа:"))
	((< diff 300) (format "%d. %s %s написа:" (nth 3 fields) mesec name))
	(t          (format "Била једном једна земља. И у тој земљи живеше %s. \nЈедног дана %s рече:" name name))))

(defun create-sr-Latn-attribution (mail-time name)
  (setq name (or (car (mail-extract-address-components name)) name))
  (setq 
   day-list '("nedelju" "ponedeljak" "utorak" "sredu" "četvrtak" "petak" "subotu" "nedelju")
   month-list '("decembra" "januara" "februara" "marta" "aprila" "maja" 
		"juna" "jula" "avgusta" "septembra" "oktobra" "novembra" "decembra"))
  (setq fields (decode-time (date-to-time mail-time)))
  (setq diff (- (time-to-days (current-time))
		   (time-to-days (date-to-time mail-time))))
  (setq hours (format "%d:%02d" (caddr fields) (cadr fields)))
  (setq day (nth (nth 6 fields) day-list))
  (setq mesec (nth (nth 4 fields) month-list))
  (cond ((< diff 0) (concat "U budućnosti će " name " napisati:"))
	((< diff 1) (concat "Danas u " hours ", " name " napisa:"))
        ((< diff 2) (concat "Juče u " hours ", " name " napisa:"))
	((< diff 5) (concat "U " day " u " hours ", " name " napisa:"))
	((< diff 300) (format "%d. %s %s napisa:" (nth 3 fields) mesec name))
	(t          (format "Bila jednom jedna zemlja. I u toj zemlji živeše %s. \nJednog dana %s reče:" name name))))

(defun my-message-insert-citation-line ()
  "Insert a simple citation line."
  (when message-reply-headers
    (cond ((string= current-group-language "sr") 
	   (insert (create-sr-attribution (mail-header-date message-reply-headers) 
					  (mail-header-from message-reply-headers)) "\n\n"))
	  ((string= current-group-language "sr@Latn") 
	   (insert (create-sr-Latn-attribution (mail-header-date message-reply-headers) 
					  (mail-header-from message-reply-headers)) "\n\n"))
	  (t
	   (insert (create-attribution (mail-header-date message-reply-headers) 
					  (mail-header-from message-reply-headers)) "\n\n")))))


(setq message-citation-line-function 'my-message-insert-citation-line)
