var config = {
	strDefaultInterfaceDir	: "style/site/interface/",
	strDefaultCSSDir	: "style/site/css/",
	strDefaultJSDir		: "javascript/site/",
	strDefaultLang 		: "fr",
	strUrlBase			: document.getElementsByTagName('base')[0].href,
	strClose			: ['Fermer',				'Close'],
	strWaitingConfirm	: ['Confirmation attendue', 'Expecting confirmation'],
	strCancel			: ['Annuler', 'Cancel'],
	strConfirm			: ['Confirmer', 'Confirm'],
	strPrevious			: ["Pr&eacute;c&eacute;dent", "Previous"],
	strNext				: ["Suivant", "Next"],
	boolResizeAggregator: true
};

// inclusion des librairies indispensables au reste
loadJs("site", 	"prototype");
loadJs("site",	"scriptaculous");

loadJs("site",	"libForms");	// validation des formulaires
loadJs("site",	"jsCalendar");	// calendrier
loadJs("site",	"colorPicker");	// palette de couleurs

// lancement de l'admin. NB admin.js est chargé automatiquement
if (window.location.toString().match("admin.php") != null)
{
	loadJs("extranet", 	"admin");
	if(document.all)
	{
		loadJs('site', 'admin_ie');
	}
}

config.lang = document.getElementsByTagName('html')[0].getAttribute('lang') || config.strDefaultLang;
// on attribue la bonne langue
switch (config.lang.toLowerCase())
{
	case "fr": default: config.lang = 0; lang=0; break;
	case "en": config.lang = 1; lang=1; break;
}

function loadCss (strModuleName, strFileName)
{
	if(strFileName.match(".css") !== false)
	{
		strFileName = strFileName.split(".css")[0];
	}
	document.write ("<style type='text/css' media='screen'>@import url(style/"+strModuleName+"/css/"+strFileName+".css);</style>\n");
}
function loadJs (strModuleName, strFileName)
{
	if(strFileName.match(".js") !== false)
	{
		strFileName = strFileName.split(".js")[0];
	}
	document.write ("<script type='text/javascript' src='javascript/"+strModuleName+"/"+strFileName+".js'></script>\n");
}

var actibox = {
	// actibox.load est chargé par admin.js. En effet, si on le fait avant Protoype n'est pas chargé.
	load	: function ()
	{	// on vérifie si la librairie Prototype est chargée. Si non, on envoie une erreur
		if(typeof Prototype == "undefined")
		{
			throw("prototype doit être chargé AVANT d'utiliser les librairies ActiBox");
		}
		if(window.location.toString().match("admin.php") != null)
		{	// jolis formulaires avec des checkboxes sympa
			actibox.prettyForms();
		}

		// on redimensionne les colonnes de l'aggreg
		if (config.boolResizeAggregator && $("container") && $("container").getElementsByClassName('aggregator')[0])
		{

			$("container").getElementsByClassName('aggregator')[0].immediateDescendants().each( function (objLine)
			{	// on va récupérer la + haute des zones de la ligne
				var intGreatestHeight = 0;
				objLine.immediateDescendants().each( function (objColumn)
				{
					intGreatestHeight = Math.max (intGreatestHeight, objColumn.getHeight());
				});
				// on resize la hauteur de toutes les zones pour qu'elles soient harmonisées
				objLine.immediateDescendants().each( function (objColumn)
				{
					if(objColumn.tagName.toLowerCase() == "div" && !objColumn.hasClassName('size4columns'))
					{
						objColumn.style.height	= intGreatestHeight+"px";
						// on resize aussi les div.zone pour que la mise en page soit plus sympa en fonction de ses enfants
						if (objColumn.down('div'))
						{
							objColumn.down('div').style.height = intGreatestHeight-20+"px";
						}
					}
				});
			});
		}
	},
	prettyForms	: function(target)
	{
		var forms = target || $A(document.getElementsByTagName('form'));
		var img = '<img class="ckbox" alt="" ';
		var src = 'src="'+config.strUrlBase+config.strDefaultInterfaceDir;

		forms.each( function (form){
			var arrButtons = Form.getInputs(form, 'checkbox').concat(Form.getInputs(form, 'radio'));
			arrButtons.each( function(btn)
			{
				if(btn.type && (!btn.next('img') || btn.next('img').hasClassName('ckbox') !== true))
				{
					if($(btn.nextSiblings[0])) {alert($(btn.nextSiblings[0]).tagName);};
					if(btn.disabled === true)
					{
						btn.checked === true ? file = btn.type+'_disabled_checked.gif' : file = btn.type+'_disabled.gif';
					}
					else
					{
						btn.checked === true ? file = btn.type+'_checked.gif' : file = btn.type+'.gif';
					}
					new Insertion.After (btn, img+src+file+'" />');
				}
			});
		});

		$A(document.getElementsByClassName('ckbox')).each( function(btn)
		{
			Event.observe(btn, "click", actibox.prettyFormsToggle.bindAsEventListener(btn));
			Event.observe(btn.previousSibling, "change",actibox.prettyFormsToggle.bindAsEventListener(btn));
		});
	},
	prettyFormsToggle	: function (e, btn)
	{
		/* e est l'événement (click ou change) et this est l'image cliquée */
		var src = config.strUrlBase+config.strDefaultInterfaceDir;
		var btn = this.previousSibling;
		if(btn.disabled === false)
		{
			if(e.type == "click")
			{	// on effectue le changement de valeur de checked avant pour avoir le
				// même comportement onclick et onchange (clic sur l'image ou sur le label)
				btn.checked === true ? btn.checked = "" : btn.checked = "checked";
				this.blur();
				btn.blur();
			}
			if(btn.checked === false)
			{
				file = btn.type+'.gif';
				btn.checked = "";
				if(btn.up('tr') && btn.up('tr').hasClassName('highlight'))
				{
					btn.up('tr').removeClassName('highlight');
				}
			}
			else
			{
				file = btn.type+'_checked.gif';
				btn.checked = "checked";
				if(btn.up('tr'))
				{
					btn.up('tr').addClassName('highlight');
				}
			}
			this.src = src+file;
		}

		if(btn.type == "radio")
		{
			Form.getInputs(btn.up('form'), "radio").each( function(radio)
			{
				if(radio.checked !== true && radio.disabled === false)
				{
					radio.nextSibling.src = src+"radio.gif";
				}
			});
		}
	}
};
