/*!
  spica javascript libraries - adminutils.js
  == written by Takuya Otani <takuya.otani@gmail.com> ===
  == Copyright (C) 2006 SimpleBoxes/SerendipityNZ Ltd. ==
*/

// [guideline]
// -- http://serennz.sakura.ne.jp/guidelines/js_en_000.txt
// -- http://serennz.sakura.ne.jp/guidelines/js_ja_000.txt

// ver 0.01 [2008/12/05] modified Utils.Messenger
// ver 0.00 [2008/11/01] the first attempt

Spica.Library.require('element','formhandler','fader');
Spica.Utils = {};
Spica.Utils.changeIcon = function(baseUrl,iconUrl,idName)
{
	var icon = Spica.$(idName);
	if (!icon) return;
	icon.setAttribute("src",baseUrl + iconUrl + '.gif');
}
Spica.Utils.DateSet = {
	EngLong : {
		entry_date  : '%WeekLong% %DayOrd% %MonLong% %Year%',
		entry_time  : '%Hour%:%Min%',
		msg_time    : '%Week% %Day%/%Mon%/%Year% %Hour%:%Min%',
		dateinlist  : ' (%Mon%/%Day%)',
		archivelist : '%MonLong% %Year%',
		time_lang   : 'en'
	},
	EngShrt : {
		entry_date  : '%Week% %Day% %MonShort% %Year%',
		entry_time  : '%Hour%:%Min%',
		msg_time    : '%Week% %Day%/%Mon%/%Year% %Hour%:%Min%',
		dateinlist  : ' (%Mon%/%Day%)',
		archivelist : '%MonLong% %Year%',
		time_lang   : 'en'
	},
	French : {
		entry_date  : '%WeekLong% %Day% %MonLong% %Year%',
		entry_time  : '%Hour%:%Min%',
		msg_time    : '%Week% %Day%/%Mon%/%Year% %Hour%:%Min%',
		dateinlist  : ' (%Mon%/%Day%)',
		archivelist : '%MonLong% %Year%',
		time_lang   : 'fr'
	},
	EngNum : {
		entry_date  : '%Year%/%Mon%/%Day% %Week%',
		entry_time  : '%Hour%:%Min%',
		msg_time    : '%Year%/%Mon%/%Day%  %Hour%:%Min%',
		dateinlist  : ' (%Mon%/%Day%)',
		archivelist : '%MonLong% %Year%',
		time_lang   : 'en'
	},
	JpnNum : {
		entry_date  : '%Year%/%Mon%/%Day% %Week%',
		entry_time  : '%Hour%:%Min%',
		msg_time    : '%Year%/%Mon%/%Day%  %Hour%:%Min%',
		dateinlist  : ' (%Mon%/%Day%)',
		archivelist : '%Year%/%Mon%',
		time_lang   : 'ja'
	},
	LstYear : {
		entry_date  : '%Year%/%Mon%/%Day% %Week%',
		entry_time  : '%Hour%:%Min%',
		msg_time    : '%Year%/%Mon%/%Day%  %Hour%:%Min%',
		dateinlist  : ' (%Year%/%Mon%/%Day%)',
		archivelist : '%MonLong% %Year%',
		time_lang   : 'en'
	},
	LstNone : {
		entry_date  : '%Year%/%Mon%/%Day% %Week%',
		entry_time  : '%Hour%:%Min%',
		msg_time    : '%Year%/%Mon%/%Day%  %Hour%:%Min%',
		dateinlist  : '',
		archivelist : '%MonLong% %Year%',
		time_lang   : 'en'
	},
	defaultSet : {
		entry_date  : '%Year%.%Mon%.%Day% %WeekLong%',
		entry_time  : '%Hour%:%Min%',
		msg_time    : '%Year%/%Mon%/%Day% %Hour12%:%Min% %HourAP%',
		dateinlist  : ' (%Mon%/%Day%)',
		archivelist : '%MonLong% %Year%',
		time_lang   : 'en'
	}
};
Spica.Utils.changeDateSet = function(setName)
{
	if (setName == '' || !Spica.Utils.DateSet[setName]) return false;
	for (var key in Spica.Utils.DateSet[setName])
	{
		if (key == 'time_lang') continue;
		Spica.$(key).value  = Spica.Utils.DateSet[setName][key];
	}
	var selLang = Spica.$('time_lang');
	for (var i=0;i<selLang.options.length;i++)
		if (selLang[i].value == Spica.Utils.DateSet[setName].time_lang) selLang[i].selected = true;
};
Spica.Utils.changeEditLink = function(targetName,baseUrl,tmpId)
{
	var obj = Spica.$(targetName);
	if (!obj) return false;
	var linkUrl = baseUrl;
	if (tmpId > -1) linkUrl = baseUrl + '&tid=' + tmpId;
	obj.setAttribute("href",linkUrl);
}
Spica.Utils.confirmDelete = function(target)
{
	if (!target || !target.elements) return false;
	for (var i=0,n=target.elements.length;i<n;i++)
	{
		var obj = target.elements[i];
		if (!obj) continue;
		if ( (obj.name == 'sel' && obj.checked)
		  || (obj.name == '__mode' && obj.value == 'build')
		  || (obj.name.match(/[abcilmpt]id/) && obj.value != null) )
		{
			return (confirm(Spica.$_('Are you sure you want to delete?'))) ? true : false;
		}
	}
	alert(Spica.$_('No item is selected.'));
	return false;
}
Spica.Utils.toggleVisible = function(target)
{
	var obj = Spica.$(target);
	if (!obj) return false;
	if (obj.style.display == 'none')
		obj.style.display = 'block';
	else
		obj.style.display = 'none';
	return false;
}
Spica.Utils.Messenger = function()
{
	var self = this;
	self.title = Spica.$('processmessage_title');
	self.text  = Spica.$('processmessage_text');
	self.fader = null;
	if (self.text)
	{
		self.text.style.overflow = 'hidden';
		self.fader = new Spica.ColorShifter(self.text,{
			init: '#ffff00', // yellow
			dest: self._getColor(self.text)
		});
		self.fader.onFinished = function() { self._appendCloser(); };
		self.fader.start(500);
	}
}
Spica.Utils.Messenger.prototype = {
	_getColor : function(obj)
	{
		var body = document.getElementsByTagName('body')[0];
		var style = body.currentStyle || document.defaultView.getComputedStyle(body, '');
		return style.backgroundColor;
	},
	_appendCloser : function()
	{
		var self = this;
		var closer = document.createElement('span');
		self.text.appendChild(closer);
		closer.innerHTML = Spica.$_('[close the message]');
		closer.className = 'message-closer';
		self.fader = null;
		Spica.Event.register(closer,'click',function() { self._closeMessage(); });
	},
	_closeMessage : function()
	{
		var self = this;
		if (self.text)
		{
			self.fader = new Spica.ObjectResizer(self.text,{height:0});
			self.fader.duration = 20;
			self.fader.onFinished = function() { self._closeMessageText(); };
			self.fader.start(20);
		}
		else
		{
			self._closeMessageText();
		}
	},
	_closeMessageText : function()
	{
		var self = this;
		self.fader = null;
		if (self.text) self.text.style.display = 'none';
		if (self.title)
		{
			self.title.style.padding = '0 0'; // make sure no padding
			self.fader = new Spica.ObjectResizer(self.title,{height:0});
			self.fader.duration = 10;
			self.fader.onFinished = function() { self._closeMessageTitle(); };
			self.fader.start(10);
		}
		else
		{
			self._closeMessageTitle();
		}
	},
	_closeMessageTitle : function()
	{
		var self = this;
		self.fader = null;
		if (self.title) self.title.style.display = 'none';
	}
};
Spica.Event.run(function() { var msg = new Spica.Utils.Messenger();  });

