/* Useful.js — 1.0
   Ensemble de fonctions utiles.
   u_transformAngle(rot1, rot2) : formate l'angle rot1 par rapport  rot2
   u_isset(variable) : renvoie si oui ou non la variable est définie
   u_e(ID) : renvoie l'élément ayant l'id ID
   u_guessDisplay(element) : renvoie la valeur de la propriété CSS display de l'élément
   u_scroll : renvoie le scroll vertical actuel de la fenêtre
   u_removeClass(classes, classe) : enlève la classe class du string classes
   u_pointsOrientation(x1, y1, x2, y2) : calcule la rotation du point {x1, y1} vers {x2, y2}
   u_distance(x1, y1, x2, y2) : calcule la distance entre {x1, y1} et {x2, y2}
   u_offset(angle, distance, axe) : retourne le dcalage en fonction de angle et de distance, pour x si axe == 0, pour y si axe == 1
*/
// Général
function u_transformAngle(rot1, rot2) {
	while (rot1-(rot2)>180) {
		rot1 -= 360;
	}
	while (rot1-(rot2)<-180) {
		rot1 += 360;
	}
	return rot1;
}
function u_isset(variable) {
	return typeof(window[variable]) != 'undefined';
}
// Web
function u_e(ID) {
	return document.getElementById(ID);
}
function u_guessDisplay(element) {
	if (element.style.display != "") {
		return(element.style.display);
	} else {
	var isBlock = /\b(?:div|p|form)\b/;
		if (isBlock.exec(element.tagName.toLowerCase()) != null){
			return("block");
		} else {
			return("inline");
		}
	}
}
function u_scroll() {
    if (document.body && document.body.scrollTop) return document.body.scrollTop
    if (document.documentElement && document.documentElement.scrollTop) return document.documentElement.scrollTop
    if (window.pageYOffset) return window.pageYOffset
    return 0;
}
function u_removeClass(classes, classe) {
	var regexp = new RegExp("(.*?)(?: ?" + classe + " ?)(.*)");
	var match = regexp.exec(classes);
	return match[1] + match[2];
}
// Trigonométrie
function u_pointsOrientation(x1, y1, x2, y2) {
	return (-Math.atan2(x1-x2, y1-y2)*180/Math.PI);
}
function u_offset(angle, distance, axe) {
	if (!axe) {
		return (Math.cos((angle-90)*(Math.PI/180))*distance);
	} else {
		return (Math.sin((angle-90)*(Math.PI/180))*distance);
	}
}
function u_distance(x1, y1, x2, y2) {
	return (Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2)));
}
