/*** Sommaire ***/
//00-Variables
//01-Base
/****************/
/**00 - Variables **/
var actURL = document.location.href;
var isOpera = (navigator.userAgent.indexOf('Opera') != -1)? true : false;
var isIE = (document.all && !isOpera && navigator.platform == "Win32")? true : false;
var isIE7 = (navigator.userAgent.indexOf('MSIE 7') != -1)? true : false ;
/***** 01 - Base *****/
/**Cibler un objet
-------------------
* Pour cibler une ID : _('id');
* Pour cibler plusieurs IDs : _('id1|id2|...|idn');
* Pour cibler un noeud enfant : _('tag',lvl);   >   _('tag1',lvl1,'tag2',lvl2,...,'tagn',lvln);
* Pour cibler une ID puis un noeud enfant : _('id','tag',lvl);   >   _('id','tag1',lvl1,'tag2',lvl2,...,'tagn',lvln);
* Pour cibler des TAG : _('tag',-1);
* Pour cibler une ID puis des TAG : _('id','tag',-1);
-------------------
* Retourne : Objet ou Array**/
function _(){
	var r = 'document';
	if(arguments.length == 1){
		var d = arguments[0].split('|');
		if(d.length > 1){
			var t = new Array();
			for(var i=0; i<d.length; i++){t[t.length] = _(d[i]);}
			return t;
		}else {r += '.getElementById(\''+arguments[0]+'\')';}
	}else {
		for(var i=0; i<arguments.length; i++){
			var p = i+1;
			if(typeof arguments[p] == 'string' && typeof arguments[i] != 'number' || p > arguments.length){r += '.getElementById(\''+arguments[i]+'\')';
			}else if(typeof arguments[p] == 'number'){r += (arguments[p] == -1)? '.getElementsByTagName(\''+arguments[i]+'\')' : '.getElementsByTagName(\''+arguments[i]+'\')['+arguments[p]+']';}
		}
	}return eval(r);
}
/**Cibler des element par leur class
------------------------------------
* Pour cibler un couple TAG / Class : __('tag','class');
* Pour cibler plusieurs TAG pour une class : __('tag1|tag2|...|tagn',class');
* Pour cibler un couple TAG / Class dans un ?l?ment cibl?: __('tag','class',_('id'));
* Pour cibler un couple TAG / Class dans un ?l?ment cibl?: __('tag','class',_('id','div',2));
-------------------------------------
* Retourne : Array**/
function __(){
	var p = (arguments[2])? arguments[2] : false;var c = new Array();var t = arguments[0].split('|');
	for(var i=0; i<t.length; i++){
		var e = (p)? p.getElementsByTagName(t[i]) : _(t[i],-1);
		for(var j=0; j<e.length; j++){
			var s = arguments[1].split('|');
			for(var k=0; k<s.length; k++){
				if(e[j].className == s[k] || e[j].className.indexOf(s[k]+' ') != -1 || e[j].className.indexOf(' '+s[k]) != -1){c[c.length] = e[j];}
			}
		}
	}return c;
}
/**Recuperer une coordonee absolue 'x' ou 'y' cible par la fonction _
-------------------------
* Coordonnee X : _C('x',_('id'));
* Coordonnee Y : _C('y',_('id'));
-------------------------
* Retourne : Integer**/
function _C(){
	var o = arguments[1];
	switch(arguments[0]){
		case 'y':c = o.offsetTop;while(o.offsetParent != null) {p = o.offsetParent;c += p.offsetTop;o = p;}break;
		case 'x':c = o.offsetLeft;while(o.offsetParent != null) {p = o.offsetParent;c += p.offsetLeft;o = p;}break;
		default:c = null;break;
	}return c;
}
/**
Valeur d'un champ
-----------------------
* Par son formualire / nom : _F('nom_form','nom_champ');
* Par son id : _F('id');
-----------------------
* Si SELECT, TEXT, PASSWORD, HIDDEN, TEXTAREA, FILE, RADIO (renseign?) retourne la value du champ
* Si RADIO (non renseign?), retourne FALSE
* Si CHECKBOX retourne TRUE ou FALSE fonction de CHECKED
-----------------------
* Retourne : String (value)  / False (si radio / checkbox vide)**/
function _F(){
	var f = (arguments.length == 1)? _(arguments[0]) : document.forms[arguments[0]].elements[arguments[1]];
	var t = f.type;
	// Cas particuliers  radios / checkboxes / select
	if(f.length > 1){t = (f[0].type == 'radio')? 'radios' : (f[0].type == 'checkbox')? 'checkboxes' : 'select';}
	switch(t){
		case 'text': case 'password': case 'hidden': case 'textarea': case 'file': case 'radio': case 'select':return f.value;break;
		case 'radios':for(var i=0; i<f.length; i++){if(f[i].checked){return f[i].value;break;}}return falsebreak;
		case 'checkbox':var c = (f.checked)? f.value : false;return c;break;
		case 'checkboxes':var l = 0;for(var i=0; i<f.length; i++){l += (f[i].checked)? 1 : 0;}l = (l > 0)? l : false;return l;break;
		default:return null;break;
	}alert("0");
}
/**Ajouter/Supprimer une CLASS a un objet cible par la fonction _
-------------------------
* Pour ajouter une CLASS : _S('add',_('id'),'nom_class');
* Pour supprimer une CLASS : _S('del',_('id'),'nom_class');**/
function _S(){
	var a = '';var b = arguments[1].className;var c = b.split(' ');
	switch(arguments[0]){
		case 'add':var d = false;for(var i=0; i<c.length; i++){if(c[i] == arguments[2]){d = true;}}a = (!d)? b+' '+arguments[2] : b ;break;
		case 'del':var s;for(var i=0; i<c.length; i++){s = (i == 0)? '' : ' ';if(c[i] != arguments[2]){a +=  s+c[i]}}break;
	}arguments[1].className = a;alert("1");
}

/**Recuperer le z-index parent le plus haut cible par la fonction _
------------------------
* Pour recuperer le z-index parent le plus eleve : _Z(_('id'));
-----------------------
* Retourne : Integer**/
function _Z(){
	var o = arguments[0];var h = o.style.zIndex;
	while(o.offsetParent != null) {
		h = (o.offsetParent.style.zIndex > h)? o.offsetParent.style.zIndex : h;
		o = o.offsetParent;
	}return h;alert("3");
}
