// pour inclure ce fichier :
//	<script type="text/javascript" src="script/propriete.js"></script>

/*****propriétés générales de vérification [get]*****/

//recherche de l'offset gauche
function getOL(objet){
	if (objet.offsetParent){
		return (objet.offsetLeft + getOL(objet.offsetParent));
	}else{
		return (objet.offsetLeft);
	}
}

//recherche de l'offset haut
function getOT(objet){
	if (objet.offsetParent){
		return (objet.offsetTop + getOT(objet.offsetParent));
	}else{
		return (objet.offsetTop);
	}
}


/*****propriétés générales de modification [set]*****/

//gestion de l'affichage
function setDisplay(objet, disp){
	objet.style.display = disp;
}

//gestion de la visibilité
function setVisible(objet, visib){
	objet.style.visibility = visib;
}

//gestion de la hauteur
function setHeight(objet, hauteur){
	objet.style.height = hauteur+'px';
}

//gestion de la largeur
function setWidth(objet, largeur){
	objet.style.width = largeur+'px';
}

//gestion de la position par rapport à un bord
function setP(objet, distance, bord){
	switch(bord){
		case 't':
			objet.style.top = distance+'px';
			break;
		case 'b':
			objet.style.bottom = distance+'px';
			break;
		case 'r':
			objet.style.right = distance+'px';
			break;
		case 'l':
			objet.style.left = distance+'px';
			break;
		default:
			break;
	}
}

//gestion de la couleur
function changeColor(objet, couleur){
	objet.style.color = couleur;
}

//gestion de la couleur de fond
function changeBgColor(objet, couleur){
	objet.style.backgroundColor = couleur;
}

//gestion de la transparence
function setAlpha(objet, alpha){
	objet.style.opacity = alpha/100;
	objet.style.filter = "alpha(opacity="+alpha+")";
}


/*****changement d'aspect progressif*****/

//affichage avec transparence progressive

function progressAlpha(objet, alpha, alphamax, pas, frequence){
	if(alpha < alphamax){
		progressAlphaSens(objet, alpha, alphamax, pas, frequence, '+');
	}else{
		progressAlphaSens(objet, alpha, alphamax, pas, frequence, '-');
	}
}

function progressAlphaSens(objet, alpha, alphamax, pas, frequence, sens){
	setAlpha(objet, alpha);
	switch(sens){
		case '+':
			if(alpha < alphamax){
				if(alphamax-alpha > pas){
					setTimeout(function (){ progressAlphaSens(objet, (alpha+pas), alphamax, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ progressAlphaSens(objet, (alpha+1), alphamax, pas, frequence, sens); }, frequence);
				}
			}
			break;
		case '-':
			if(alpha > alphamax){
				if(alphamax-alpha > pas){
					setTimeout(function (){ progressAlphaSens(objet, (alpha-pas), alphamax, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ progressAlphaSens(objet, (alpha-1), alphamax, pas, frequence, sens); }, frequence);
				}
			}
			break;
		default:
			break;
	}
}

//déroulement progressif de la hauteur
function progressHeight(objet, h, hmax, pas, frequence){
	if(h < hmax){
		progressHeightSens(objet, h, hmax, pas, frequence, '+');
	}else{
		progressHeightSens(objet, h, hmax, pas, frequence, '-');
	}
}

function progressHeightSens(objet, h, hmax, pas, frequence, sens){
	setHeight(objet, h);
	switch(sens){
		case '+':
			if(h < hmax){
				if(hmax-h > pas){
					setTimeout(function (){ progressHeightSens(objet, (h+pas), hmax, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ progressHeightSens(objet, (h+1), hmax, pas, frequence, sens); }, frequence);
				}
			}
			break;
		case '-':
			if(h > hmax){
				if(h-hmax > pas){
					setTimeout(function (){ progressHeightSens(objet, (h-pas), hmax, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ progressHeightSens(objet, (h-1), hmax, pas, frequence, sens); }, frequence);
				}
			}
			break;
		default:
			break;
	}
}

//déroulement progressif de la largeur
function progressWidth(objet, w, wmax, pas, frequence){
	if(w < wmax){
		progressWidthSens(objet, w, wmax, pas, frequence, '+');
	}else{
		progressWidthSens(objet, w, wmax, pas, frequence, '-');
	}
}

function progressWidthSens(objet, w, wmax, pas, frequence, sens){
	setWidth(objet, w);
	switch(sens){
		case '+':
			if(w < wmax){
				if(wmax-w > pas){
					setTimeout(function (){ progressWidthSens(objet, (w+pas), wmax, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ progressWidthSens(objet, (w+1), wmax, pas, frequence, sens); }, frequence);
				}
			}
			break;
		case '-':
			if(w > wmax){
				if(w-wmax > pas){
					setTimeout(function (){ progressWidthSens(objet, (w-pas), wmax, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ progressWidthSens(objet, (w-1), wmax, pas, frequence, sens); }, frequence);
				}
			}
			break;
		default:
			break;
	}
}

//deplacement d'un objet horizontalement (en position absolute uniquement)
function moveH(objet, pos_depart, pos_arrivee, pas, frequence){
	if(pos_depart < pos_arrivee){
		moveHSens(objet, pos_depart, pos_arrivee, pas, frequence, 'd');
	}else{
		moveHSens(objet, pos_depart, pos_arrivee, pas, frequence, 'g');
	}
}

function moveHSens(objet, pos_depart, pos_arrivee, pas, frequence, sens){
	setP(objet, pos_depart, 'l');
	var distance = Math.abs(pos_depart-pos_arrivee);
	switch(sens){
		case 'd':
			if(pos_depart < pos_arrivee){
				if(distance > pas){
					setTimeout(function (){ moveHSens(objet, (pos_depart+pas), pos_arrivee, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ moveHSens(objet, (pos_depart+1), pos_arrivee, pas, frequence, sens); }, frequence);
				}
			}
			break;
		case 'g':
			if(pos_depart > pos_arrivee){
				if(distance > pas){
					setTimeout(function (){ moveHSens(objet, (pos_depart-pas), pos_arrivee, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ moveHSens(objet, (pos_depart-1), pos_arrivee, pas, frequence, sens); }, frequence);
				}
			}
			break;
		default:
			break;
	}
}

//deplacement d'un objet verticalement (en position absolute uniquement)
function moveV(objet, pos_depart, pos_arrivee, pas, frequence){
	if(pos_depart < pos_arrivee){
		moveVSens(objet, pos_depart, pos_arrivee, pas, frequence, 'h');
	}else{
		moveVSens(objet, pos_depart, pos_arrivee, pas, frequence, 'b');
	}
}

function moveVSens(objet, pos_depart, pos_arrivee, pas, frequence, sens){
	setP(objet, pos_depart, 't');
	var distance = Math.abs(pos_depart-pos_arrivee);
	switch(sens){
		case 'h':
			if(pos_depart < pos_arrivee){
				if(distance > pas){
					setTimeout(function (){ moveVSens(objet, (pos_depart+pas), pos_arrivee, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ moveVSens(objet, (pos_depart+1), pos_arrivee, pas, frequence, sens); }, frequence);
				}
			}
			break;
		case 'b':
			if(pos_depart > pos_arrivee){
				if(distance > pas){
					setTimeout(function (){ moveVSens(objet, (pos_depart-pas), pos_arrivee, pas, frequence, sens); }, frequence);
				}else{
					setTimeout(function (){ moveVSens(objet, (pos_depart-1), pos_arrivee, pas, frequence, sens); }, frequence);
				}
			}
			break;
		default:
			break;
	}
}
