
var PNG_GIF = 'gif';
var PNG_JPEG = 'png';

/*
 * Gestion de la position de la souris
 */
function cbPosition() {

	if(pointerY > 300) {
		hideCurrentIcon();
	}

}

function getValue(id) {
	return document.getElementById(id).value;
}

function setValue(id, value) {
	document.getElementById(id).value = value;
}

aides = new Array;

function aide(qName) {

	if(aides[qName] != null) {
		afficherAide(aides[qName]);
		return null;
	}

	afficherAttente(_(messageCommonAide));

	var request = doRequest(projectUrl +'/aide/aide', 'qName='+ qName);

	request.onreadystatechange = function() {

		if(request.readyState == 4) {

			var doc = getRootElement(request.responseXML);

			aides[qName] = doc;

			afficherAide(doc);

		}

		cacherAttente();

	}

}

function afficherAide(doc) {

	var erreur = getText(doc, 'erreur', 'type');

	if(erreur) {

		alert(_(messageCommonAideErreur));

	} else {

		var aide = getElementByAttr(doc, 'id', 'aide');

		var titre = getTextField(aide, 'titre');
		var contenu = getTextField(aide, 'contenu');

		var boiteAide = document.getElementById('aide');
		boiteAide.style.left = ((pageWidth - 400) / 2) + "px";
		boiteAide.style.top = pointerY + "px";
		boiteAide.style.height = "auto";

		boiteAide.innerHTML = "<a href='' onclick=\"return hideInterface('aide')\" "+ style('fermer') +" "+ boiteFermer() +"></a>"+
		"<div>"+
		"<h3 style='margin-top: 0px'>"+ motif(titre) +"</h3>" +
		"<div class='texte'>" + contenu + "</div>" +
		"</div>";

		moveInterface('aide', 400);
		showInterface('aide');


	}

}

function style(nom) {

	switch(nom) {

		case 'fermer' :
			return "class='close' style=\"background-image: url('"+ projectImage +"/close.gif');\"";

	}

}

function motif(texte) {
	return "<img style='margin-right: 10px' src='"+ projectImage +"/motif-gauche.jpg'/>"+ texte +"<img style='margin-left: 10px' src='"+ projectImage +"/motif-droite.jpg'/>";
}


function boiteFermer() {

	return boite(_(messageCommonBoiteFermer)+ cadre('width: 250px') +_(messageCommonBoiteAstuce)+ cadre());

}

var cadreEtat = false;


function cadre(proprietes, id) {

	cadreEtat = !cadreEtat;

	if(cadreEtat) {

		var idTexte = id == null ? '' : 'id="'+ id +'"';

		return "<div class='cadre' style='"+ proprietes +"'><div class='contenu' "+ idTexte +">";

	} else {

		return "</div></div>";

	}

}

function valeur(valeur) {

	return "<span class='value'>"+ encode(valeur) +"</span>";

}

function valeurSigne(valeur) {

	return "<span class='value'>"+ signe(valeur) +""+ encode(Math.abs(valeur)) +"</span>";

}

function signe(valeur) {

	return valeur >= 0 ? '+' : '-';

}

function encode(valeur) {

	valeur = valeur.toString();

	var tmp = '';

	for(var i = 0; i < valeur.length; i++) {

		if(valeur.charAt(i) == '<') {
			tmp += '&lt;';
		} else if(valeur.charAt(i) == '>') {
			tmp += '&gt;';
		} else if(valeur.charAt(i) == '&') {
			tmp += '&amp;';
		} else if(valeur.charAt(i) == '"') {
			tmp += '&quot;';
		} else if(valeur.charAt(i) == '\'') {
			tmp += '&#039;';
		} else if(valeur.charAt(i) == '\\') {
			tmp += '&#092;';
		} else {
			tmp += valeur.charAt(i);
		}
	}

	return tmp;

}

function pourCent(pourCent, precision) {

	var multiple = Math.pow(10, precision);
	return valeur(Math.round(pourCent * multiple) / multiple) +' %';

}

function argent(montant, precision) {

	var multiple = Math.pow(10, precision);
	return valeur(Math.round(montant * multiple) / multiple) +' Equus';

}


function genre(mot, sexe) {

	if(sexe == 'masculin') {
		return mot;
	}

	var lettre = mot.charAt(0);

	switch(mot.toLowerCase()) {

		case 'poulain' :
			return lettre +'ouliche';

		case 'cheval' :
			return (lettre != lettre.toLowerCase() ? 'J' : 'j') +'ument';

		case 'le' :
			return lettre +'a';

		case 'mon' :
			return lettre +'a';

		case 'de lui' :
			return 'd\'elle';

		case 'il' :
		case 'lui' :
			return (lettre != lettre.toLowerCase() ? 'E' : 'e') +'lle';

		default :

			derniere = mot.charAt(mot.length - 1);
			avantDerniere = mot.charAt(mot.length - 2);

			if(avantDerniere == 'a' || avantDerniere == 'e' || avantDerniere == 'o' || avantDerniere == 'u') {

				switch(derniere) {
					case 's' :
					case 't' :
					case 'n' :
						return mot + derniere +'e';
				}

			}

			return mot +'e';

	}

}

function progression(value, max) {

	value = Math.max(0, value);
	size = Math.round(value / max * 150);

	return "<div class='barre' style=\"width: "+ size +"px; background-image: url('"+ projectImage +"/barre.gif');\"></div>";

}

function etoiles(value, max, stars, couleur) {

	var sortie = "";

	pc = value / max * 100;
	ratio = (100 / stars);

	for(i = 1; i <= stars; i++) {
		position = i * ratio - pc;

		if(position < ratio / 3) {
			image = couleur;
		} else if(position >= ratio / 3 && position < 2 * ratio / 3) {
			image = couleur +"-mi";
		} else {
			image = couleur +"-vide";
		}

		sortie = sortie +"<img src='"+ projectImage +"/etoiles/"+ image +"."+ PNG_GIF +"'/>";
	}

	return sortie;

}

function boite(contenu) {

	return "onmouseover=\"showInfo(&quot;"+ addSlashes(contenu, '"') +"&quot;);\" onmousemove=\"moveInfo()\" onmouseout=\"hideInfo();\"";

}

function icone(image) {

	return  "<img src='"+ projectImage +"/"+ image +"-small."+ PNG_GIF +"' style=\"margin-left: 3px; margin-right: 3px\"/>";

}

function s(valeur) {
	return valeur > 1 ? 's' : '';
}

function _(variable) {
	eval('var text = "'+ variable +'";');
	return text;
}

function _s(singular, plural, value) {
	if(value < 2) {
		eval('var text = "'+ singular +'";');
	} else {
		eval('var text = "'+ plural +'";');
	}
	return text;
}

function addSlashes(contenu, caracteres) {

	var tmp = '';

	for(var i = 0; i < contenu.length; i++) {

		var ok = false;

		for(var j = 0; j < caracteres.length; j++) {
			if(contenu.charAt(i) == caracteres[j]) {
				tmp += "\\"+ caracteres[j];
				ok = true;
			}
		}

		if(ok == false) {
			tmp += contenu.charAt(i);
		}
	}

	return tmp;

}

function showBloc(id) {

	Element.show(id);
	Element.hide(id +'Ouvrir');
	Element.show(id +'Fermer');

	return false;

}

function hideBloc(id) {

	Element.hide(id);
	Element.hide(id +'Fermer');
	Element.show(id +'Ouvrir');

	return false;

}

/*
 * Le menu
 */

var boiteContenu = null;

function displaySubIcon(id, map) {

	hideCurrentIcon();

	var boite = document.getElementById('boite');

	if(boiteContenu == null) {
		boiteContenu = boite.innerHTML;
	}

	if(map != null) {
		usemap = "usemap='#"+ map +"'";
	} else {
		usemap = "";
	}

	boite.innerHTML = "<img src='"+ projectImage +"/boutons/barre-"+ id +".jpg?"+ projectVersion +"' "+ usemap +"/>";

}

function hideCurrentIcon() {

	if(boiteContenu !== null) {
		var boite = document.getElementById('boite');
		boite.innerHTML = boiteContenu;
	}

}

/*
 * Pour les formulaires
 */

function setCheckBox(form, name, check) {

	var elements = document.forms[form].elements[name];
	var count = (typeof(elements.length) != 'undefined') ? elements.length : 0;

	if(count) {
		for(var i = 0; i < count; i++) {
			elements[i].checked = check;
		}
	} else {
		elements.checked = check;
	}

	return false;

}

var submitButton = null;

function disableSubmit(bouton) {

	if(submitButton == null) {

		submitButton = bouton;

		if(submitButton) {

			submitButton.disabled = true;
			setTimeout('enableSubmit()', 2000);

		}

	}

}

function enableSubmit() {

	submitButton.disabled = false;
	submitButton = null;
}

/*
 * Pour les accès distants
 */


function canRequest() {

	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			new ActiveXObject("Msxml2.XMLHTTP");
			return true;
		}
		catch (e) {
			try {
				new ActiveXObject("Microsoft.XMLHTTP");
				return true;
			}
			catch (E) {
				return false;
			}
		}
	@else
		return false;
	@end @*/

	if(typeof XMLHttpRequest != 'undefined') {
		try {
			new XMLHttpRequest();
			return true;
		}
		catch (e) {
			return false;
		}
	}

	return false;
}

function getRequest() {

	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(E) {
				return null;
			}
		}
	@else
		return null;
	@end @*/

	if(typeof XMLHttpRequest != 'undefined') {
		try {
			return new XMLHttpRequest();
		}
		catch(e) {
			return null;
		}
	} else {
		return null;
	}
}

function doRequest(url, data, method) {

	var request = getRequest();

	if(method == 'GET') {
		request.open("GET", url, true);
		request.send(null);
	} else {
		request.open("POST", url, true);
		request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		request.send(data);
	}


	return request;

}

/*
 * Pour gérer les interfaces flottantes
 */
var interfaces = 0;
var interfacesIds = new Array();

function showInterface(id) {

	hideInfo();

	var element = document.getElementById(id);
	showBackground();
	element.style.visibility = 'visible';

	interfaces++;
	interfacesIds[interfaces - 1] = id;

	return false;

}

function moveInterface(id, size) {

	var element = document.getElementById(id);
	element.style.width = size +'px';
	element.style.left = ((pageWidth - size) / 2) + 'px';
	element.style.top = (pointerY + 20) + 'px';
}

function hideInterface(id) {

	interfaces--;
	interfacesIds[interfaces] = null;

	var element = document.getElementById(id);

	if(interfaces <= 0) {
		hideBackground();
	}

	element.style.visibility = 'hidden';

	hideInfo();

	return false;

}

function hideLastInterface() {

	if(interfaces <= 0) {
		return false;
	}

	var id = interfacesIds[interfaces - 1];

	return hideInterface(id);

}

/*
 * Pour gérer un fond transparent
 */
function showTransparentBackground() {
	var element = document.getElementById('transparentBackground');
	element.style.height = '300%';
	element.style.visibility = 'visible';
}

function hideTransparentBackground() {
	var element = document.getElementById('transparentBackground');
	element.style.height = '100%';
	element.style.visibility = 'hidden';
}

function afficherAttente(message) {

	var element = document.getElementById('attente');
	element.innerHTML = message;
	element.style.visibility = 'visible';

	moveInterface('attente', 300);

	showTransparentBackground();

}

function cacherAttente() {

	var element = document.getElementById('attente');
	element.style.visibility = 'hidden';

	hideTransparentBackground();

}

/*
 * Pour manipuler les objets DOM
 */

function getRootElement(response) {
	if(response != null) {
		for(i=0; i < response.childNodes.length; i++) {
			if(response.childNodes.item(i).nodeType == 1) {
				return response.childNodes.item(i);
			}
		}
	}
}

function getElementByAttr(element, attrName, attrVal) {
	var i;
	if(element != null) {
		for(i=0; i < element.childNodes.length; i++) {
			if(element.childNodes.item(i).getAttribute(attrName) == attrVal) {
				return element.childNodes.item(i);
			}
		}
	}
	return null;
}

function getTextField(row, field) {
	var element = getElementByAttr(row, 'key', field);
	if(element != null) {
		return element.childNodes.item(0).nodeValue;
	} else {
		return null;
	}
}

/**
 * Récupère une valeur textuelle
 *
 * Exemple getText(responseXml.firstChild, 'plip', 'plop')
 * Equivalent xprojectUrl: /haricow/data[@id='plip']/row/field[@name='plop']
 */
function getText(doc, id, name) {
	var row = getElementByAttr(doc, 'id', id);
	if(row != null) {
		return getTextField(row, name);
	} else {
		return null;
	}
}

/*
 * Divers
 */

function afficherDiv(id) {

	var element = document.getElementById(id);

	if(element != null) {
		element.style.display = 'inline';
	}

}

function cacherDiv(id) {

	var element = document.getElementById(id);

	if(element != null) {
		element.style.display = 'none';
	}

}

function ageCheval(age) {
	if(age == 0) {
		return _(messageAgeQuelquesHeures);
	}

	annees = Math.floor(age / 12);
	mois = age % 12;
	txt = '';

	if(annees == 1) {
		txt = _(messageAgeUnAn);
	} else if(annees > 1 ) {
		txt = _(messageAgeDesAns);
	}

	if(mois > 0) {
		if(annees > 0) {
			txt = txt + _(messageAgeEt);
		}
		txt = txt + _(messageAgeDesMois);
	}

	return txt;
}

function actualiserReserve(difference) {

	var reserve = document.getElementById('reserve');
	reserve.innerHTML = Math.round(parseFloat(reserve.innerHTML) + difference, 2);

}

/*
 * Bords arrondis
 */

function NiftyCheck(){
if(!document.getElementById || !document.createElement)
    return(false);
var b=navigator.userAgent.toLowerCase();
if(b.indexOf("msie 5")>0 && b.indexOf("opera")==-1)
    return(false);
return(true);
}

function Rounded(selector,bk,color){
var i;
var v=getElementsBySelector(selector);
var l=v.length;
for(i=0;i<l;i++){
    AddTop(v[i],bk,color);
    AddBottom(v[i],bk,color);
    }
}

function AddTop(el,bk,color){
var i;
var d=document.createElement("b");
var cn="r";
var lim=5;
d.className="rtop";
d.style.backgroundColor=bk;
for(i=1;i<=lim;i++){
    var x=document.createElement("b");
    x.className=cn + i;
    x.style.backgroundColor=color;
    d.appendChild(x);
    }
el.insertBefore(d,el.firstChild);
}

function AddBottom(el,bk,color){
var i;
var d=document.createElement("b");
var cn="r";
var lim=5;
d.className="rbottom";
d.style.backgroundColor=bk;
for(i=lim;i>0;i--){
    var x=document.createElement("b");
    x.className=cn + i;
    x.style.backgroundColor=color;
    d.appendChild(x);
    }
el.appendChild(d,el.firstChild);
}

function getElementsBySelector(selector){
var i;
var s=[];
var selid="";
var selclass="";
var tag=selector;
var objlist=[];
if(selector.indexOf(" ")>0){  //descendant selector like "tag#id tag"
    s=selector.split(" ");
    var fs=s[0].split("#");
    if(fs.length==1) return(objlist);
    return(document.getElementById(fs[1]).getElementsByTagName(s[1]));
    }
if(selector.indexOf("#")>0){ //id selector like "tag#id"
    s=selector.split("#");
    tag=s[0];
    selid=s[1];
    }
if(selid!=""){
    objlist.push(document.getElementById(selid));
    return(objlist);
    }
if(selector.indexOf(".")>0){  //class selector like "tag.class"
    s=selector.split(".");
    tag=s[0];
    selclass=s[1];
    }
var v=document.getElementsByTagName(tag);  // tag selector like "tag"
if(selclass=="")
    return(v);
for(i=0;i<v.length;i++){
    if(v[i].className==selclass){
        objlist.push(v[i]);
        }
    }
return(objlist);
}

function showHelp(qName) {
	Ajax.JSON(new AideAjax({ params: 'qName='+qName}));	
}

AideAjax = Class.create();
AideAjax.prototype = {
	id: null,
	page: projectUrl +'/aide/aide',
	execute: function(object) {
		$('aideContent').innerHTML = object.aide;
		showBox('aideBox');
	}
}
Object.extend(AideAjax.prototype, CommonAjax);

var ProduitCadeauAjax= Class.create();
ProduitCadeauAjax.prototype = {

	id: 'produitCadeau',
	page: projectUrl +'/member/social/produitCadeau',

	execute: function(object) {
		this.content();
	}

}
Object.extend(ProduitCadeauAjax.prototype, CommonAjax);

DoProduitCadeauCentreAjax = Class.create();
DoProduitCadeauCentreAjax.prototype = {

	id: 'doProduitCadeauCentre',
	page: projectUrl +'/member/social/doProduitCadeauCentre',

	execute: function(object) {

	}

}
Object.extend(DoProduitCadeauCentreAjax.prototype, CommonAjax);

DoProduitCadeauEleveurAjax = Class.create();
DoProduitCadeauEleveurAjax.prototype = {

	id: 'doProduitCadeauEleveur',
	page: projectUrl +'/member/social/doProduitCadeauEleveur',

	execute: function(object) {

	}

}
Object.extend(DoProduitCadeauEleveurAjax.prototype, CommonAjax);
