/*-------------------------------------------------------------
 Common
---------------------------------------------------------------*/
// Détection de ie
var strChUserAgent = navigator.userAgent;
var intSplitStart = strChUserAgent.indexOf("(",0);
var intSplitEnd = strChUserAgent.indexOf(")",0);
var strChMid = strChUserAgent.substring(intSplitStart, intSplitEnd);
var ie = (document.all) ? true : false;
var ie6 = (strChMid.indexOf("MSIE 6") != -1) ? true : false;
var ie7 = (strChMid.indexOf("MSIE 7") != -1) ? true : false;

// Retourne l'élément parent
function getParent(el)
{
	return (ie) ? el.parentElement : el.parentNode;
}

// Get element by ID
function getByID(id)
{
	if (document.all)
	{
		return document.all(id);
	}
	if(document.getElementById)
	{
		return document.getElementById(id);
	}
}

// Ajoute une fonction dans le window.onload
function addLoadEvent(func)
{
	var oldonload = window.onload;
	
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else 
	{
		window.onload = function()
		{
			oldonload();
			func();
		}
	}
}

// Récupération d'éléments par nom de classe
document.getElementsByClassName = function(className)
{
	var children = (ie) ? document.all : document.getElementsByTagName('*');
	var elements = new Array();
	var counter = 0;
	  
	for (var i = 0; i < children.length; i++)
	{
		var child = children[i];
		var classNames = child.className.split(' ');
		
		for (var j = 0; j < classNames.length; j++)
		{
			if (classNames[j] == className) 
			{
				elements[counter] = child;
				counter++;
				break;
			}
		}
	}
	
	return elements;
}

// Ajoute une classe à un élément
function addClassName(elm, className)
{
    var currentClass = elm.className;
    
	if(!new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i").test(currentClass))
	{
        elm.className = currentClass + ((currentClass.length > 0)? " " : "") + className;
    }
    
	return elm.className;
}

// Supprime une classe à un élément
function removeClassName(elm, className)
{
    var classToRemove = new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i");
    
	elm.className = elm.className.replace(classToRemove, "").replace(/^\s+|\s+$/g, "");
   
	return elm.className;
}

// Masque un élément
function hide(id)
{
	var o = getByID(id);
	if (o)
	{
		if (document.all)
		{
			o.display = "none";
		}
		if(document.getElementById)
		{
			o.style.display = "none";
		}
	}
}

// Affiche un élément
function show(id)
{
	var o = getByID(id);
	if (o)
	{
		if (document.all)
		{
			o.display = "visible";
		}
		if(document.getElementById)
		{
			o.style.display = "block";
		}
	}
}


// Recherche les balises "a" ayant une classe "blanklink" et leur ajoute l'attribut target blank
function targetBlank()
{
	if(window.document.getElementsByClassName("blanklink"))
	{
		var targetBlankLink = window.document.getElementsByClassName("blanklink");
	
		for(var i = 0; i < targetBlankLink.length; i++)
		{
			targetBlankLink[i].target = "_blank";
		}
	}
}



/*-------------------------------------------------------------
 Formulaire
---------------------------------------------------------------*/
// Applique un style rollover à un élément input ou Textarea
function addRolloverToInput(elm, bOnOut)
{
	if(window.document.getElementsByClassName(elm)) (bOnOut) ? addClassName(elm, "input_on") : removeClassName(elm, "input_on");
}


// Applique des actions à tous les éléments table ayant la classe "form"
function addRolloverForInputInTable()
{
	if(window.document.getElementsByClassName("form"))
	{
		var form = window.document.getElementsByClassName("form");
		
		for(var i = 0; i < form.length; i++)
		{
			if(form[i].nodeName == "TABLE")
			{
				inputRollOver(form[i]);
				createMandatoryFieldBox(form[i]);
			}
		}
	}
}


// Actions pour tous les élément input et textarea d'une table
function inputRollOver(elmTable)
{
	var table = new Array();
	
	table[0] = elmTable.getElementsByTagName("input");
	table[1] = elmTable.getElementsByTagName("textarea");
	for(var i = 0; i < 2; i++)
	{
		for(var j = 0; j < table[i].length; j++)
		{
			table[i][j].onfocus = function()
			{
				addClassName(this, "input_on");
				mandatoryFieldBox(this, true);
			};
			table[i][j].onblur = function()
			{
				removeClassName(this, "input_on");
				mandatoryFieldBox(this, false);
			};
		}
	}
}


// Recherche les éléments de type input ou textarea ayant la classe "mandatoryfield", puis créer une boîte de champs obligatoire
function createMandatoryFieldBox(elmTable)
{
	if(window.document.getElementsByClassName("mandatoryfield"))
	{
		var mandatory = window.document.getElementsByClassName("mandatoryfield");
		var span;
		var text;
		
		for(var i = 0; i < mandatory.length; i++)
		{
			if(mandatory[i].nodeName == "INPUT" || mandatory[i].nodeName == "TEXTAREA")
			{
				span = document.createElement("span");
				text = document.createTextNode("Champs obligatoire");
				span.appendChild(text);
				span.className = "mfboxalert";
				mandatory[i].parentNode.appendChild(span);
			}
		}
	}
}


// 
function mandatoryFieldBox(elmInput, oOnOff)
{
	if(elmInput.parentNode.childNodes[1])
	{
		var node = elmInput.parentNode.childNodes[1];
		
		if(node.className == "mfboxalert")
		{
			node.style.display = (oOnOff) ? "block" : "none";
		}
	}
}
