function RoundPrice( nbPrice, nbDecimals )
{
	if (!nbDecimals)
		nbDecimals = 2;
	
	var nbPrice			 = parseFloat( nbPrice );
	var intBase			 = Math.pow( 10, parseInt( nbDecimals ) );
	var strPrice	 	 = (Math.round( nbPrice * intBase ) / intBase).toString();
	var indDecimal	 = 0;
	
	if ((indDecimal = strPrice.indexOf( "." )) == -1)
	{
		strPrice 		+= ".";
		indDecimal	 = strPrice.length - 1;
	}
	
	if ((strPrice.length - indDecimal) > (nbDecimals + 1))
		strPrice = strPrice.substring( 0, indDecimal + nbDecimals + 1 );
	
	while ((strPrice.length - indDecimal) < nbDecimals + 1)
		strPrice += "0";
	
	return( strPrice );
}



var z_lstPopups = new Array();

function Popup( _strID, _strHref, _blnRefresh, _intWidth, _intHeight, _blnCenter, _intX, _intY, _strParameters )
{
	if ((_blnCenter == null) || _blnCenter)
	{
		_intX = (window.screen.width	/ 2) - (_intWidth	/ 2);
		_intY = (window.screen.height	/ 2) - (_intHeight	/ 2);
	}
	
	wndPopup = z_lstPopups[_strID];
	
	if (wndPopup && !wndPopup.closed)
	{
		if (_blnRefresh)
			wndPopup.location.replace( _strHref );
			//moveTo();
			//resizeTo();
			//close(); ?
			
		wndPopup.focus();
		wndPopup.setTimeout( "window.focus()", 1 );
	}
	else
	{
		var strParameters = "";
		
		if (_intX != null)
			strParameters += "left=" + _intX + ",screenX=" + _intY;
		
		if (_intY != null)
			strParameters += (strParameters.length ? "," : "") + "top=" + _intY + ",screenY=" + _intY;
		
		if (_intWidth != null)
			strParameters += (strParameters.length ? "," : "") + "width=" + _intWidth;
		
		if (_intHeight != null)
			strParameters += (strParameters.length ? "," : "") + "height=" + _intHeight;
		
		if ((_strParameters != null) && _strParameters.length)
			strParameters += (strParameters.length ? "," : "") + _strParameters;
		
		z_lstPopups[_strID] = open( _strHref, _strID, strParameters );
		z_lstPopups[_strID].setTimeout( "window.focus()", 1 );
	}
}



function SaveForm( _frmTarget, _hidBuffer, _strSeparator )
{
	if (_strSeparator == null || !_strSeparator.length)
		_strSeparator = ";";
	
	_hidBuffer.value = "";
	var strOutput = "";
	
	for (var indElement=0; indElement<_frmTarget.elements.length; indElement++)
	{
		var objElement = _frmTarget.elements[indElement];
		
		switch (objElement.type)
		{
			case "text":
			case "textarea":
			case "hidden":
			strOutput += (indElement ? _strSeparator : "") + objElement.name + "=" + objElement.value + "=" + (objElement.value.length + 1);
			break;
			
			case "select-one":
			strOutput += (indElement ? _strSeparator : "") + objElement.name + "=" + objElement.options[objElement.selectedIndex].value + "=" + (objElement.selectedIndex + 2);
			break;
			
			case "checkbox":
			case "option":
			strOutput += (indElement ? _strSeparator : "") + objElement.name + "=" + objElement.value + "=" + (objElement.checked ? 1 : 0) ;
			break;
		}
	}
	
	_hidBuffer.value = strOutput;
}



function RestoreForm( _frmTarget, _hidBuffer, _strSeparator )
{
	if (_strSeparator == null || !_strSeparator.length)
		_strSeparator = ";";
	
	lstBuffer = _hidBuffer.value.split( _strSeparator );
	
	for (var indElement=0; indElement<lstBuffer.length; indElement++)
	{
		lstBuffer[indElement] = lstBuffer[indElement].split( "=" );
		eval( "var objElement = _frmTarget." + lstBuffer[indElement][0] );
		
		if ((objElement == null) || (objElement.name == _hidBuffer.name))
			continue;
		
		switch (objElement.type)
		{
			case "text":
			case "textarea":
			case "hidden":
			objElement.value = lstBuffer[indElement][1];
			break;
			
			case "select-one":
			objElement.selectedIndex = lstBuffer[indElement][2] - 2;
			break;
			
			case "checkbox":
			case "option":
			objElement.checked = lstBuffer[indElement][2];
			break;
		}
	}
}



function ValidateElement(objSaisie, strModele)
{
	var ModeleText		= /^\w+$/g;
	var ModeleLogin		= /^\w{4,}$/g;
	var ModelePassword	= /^\w{4,}$/g;
	var ModeleCourrier	= /^\w+(\.\w+)*@(\w+\.)*\w+\.\w{2,3}$/g;
	var ModelePostal	= /^[a-zA-Z][0-9][a-zA-Z](\s|\-)?[0-9][a-zA-Z][0-9]$/g;
	var ModeleTelephone = /^((1(\.|\s|\-)?)?(\([0-9]{3}\)|[0-9]{3})(\.|\s|\-)?)?[0-9]{3}(\.|\s|\-)?[0-9]{4}$/g;
	var ModeleDate		= /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/g;


	var reModele;
	var strMessage = '';
	
	switch (strModele)
	{
		case 'Text':
		{
			reModele = ModeleText;
			strMessage = 'Entrée invalide';
			break;
		}
		
		case 'Login':
		{
			reModele = ModeleLogin;
			strMessage = 'Login invalide';
			break;
		}
		
		case 'Password':
		{
			reModele = ModelePassword;
			strMessage = 'Mot de passe invalide';
			break;
		}
		
		case 'Courrier':
		{
			reModele = ModeleCourrier;
			strMessage = 'Courriel invalide';
			break;
		}
		
		
		case 'Postal':
		{
			reModele = ModelePostal;
			strMessage = 'Code postal invalide';
			break;
		}
		
		case 'Telephone':
		{
			reModele = ModeleTelephone;
			strMessage = 'Téléphone invalide';
			break;
		}
		
		case 'Date':
		{
			reModele = ModeleDate;
			strMessage = 'Date invalide';
			break;
		}
		
	}
	
	switch (objSaisie.type)
	{
		case 'textarea':
		case 'text':
		{
			if (objSaisie.value == "")
			{
				alert('Veuillez remplir ce champ de texte');
				objSaisie.focus();
				objSaisie.select();
				return (0);
			}
			if (reModele && !reModele.test( objSaisie.value ))
			{
				alert(strMessage);
				objSaisie.focus();
				objSaisie.select();
				return (0);
			}
			break;
		}

		case 'password':
		{
			if (objSaisie.value == "")
			{
				alert('Veuillez remplir ce champ de texte');
				objSaisie.focus();
				objSaisie.select();
				return (0);
			}
			if (reModele && !reModele.test( objSaisie.value ))
			{
				alert(strMessage);
				objSaisie.focus();
				objSaisie.select();
				return (0);
			}
			break;
		}
			
		default:
		{
			alert('Type d\'objet non reconnu');
			return (0);
		}
	}
	
	return (1);
}







function Element( frmTarget, strPrefix, intIndex )
{
	intCounter = 0;
	
	for (indElement=0; indElement<frmTarget.elements.length; indElement++)
	{
		if (frmTarget.elements[indElement].name.substr( 0, strPrefix.length ) == strPrefix)
		{
			if (intCounter == intIndex)
				return( frmTarget.elements[indElement] );
			
			intCounter++;
		}
	}
	
	return( null );
}



function ValidateSelection( frmTarget, strPrefix, minimum, maximum )
{
	objElement = eval( "frmTarget." + strPrefix );
	
	if (minimum == undefined)
		minimum = 1;
	
	if (maximum == undefined)
		maximum = null;
	
	var count = 0;
	
	if (objElement && objElement.length)
	{
		for (indElement=0; indElement<objElement.length; indElement++)
			if (objElement[indElement].checked)
				count++;
	}
	else
		for (indElement=0; indElement<frmTarget.elements.length; indElement++)
			if ((frmTarget.elements[indElement].name.substr( 0, strPrefix.length ) == strPrefix) && frmTarget.elements[indElement].checked)
				count++;
	
	if ((minimum != null) && (count < minimum))
		return( false );
	
	if ((maximum != null) && (count > maximum))
		return( false );
	
	return( true );
}



function SelectOne( frmTarget, strSelector, strPrefix )
{
	var blnChecked = true;
	
	for (indElement=0; indElement<frmTarget.elements.length; indElement++)
	{
		if (frmTarget.elements[indElement].name.substr( 0, strPrefix.length ) == strPrefix)
		{
			if (!frmTarget.elements[indElement].checked)
			{
				blnChecked = false;
				break;
			}
		}
	}
	
	eval( "frmTarget.elements." + strSelector + ".checked = " + blnChecked );
	
	return( true );
}



function SelectAll( frmTarget, strSelector, strPrefix )
{
	var chkSelector = eval( "frmTarget.elements." + strSelector );
	
	for (indElement=0; indElement<frmTarget.elements.length; indElement++)
	{
		if (frmTarget.elements[indElement].name.substr( 0, strPrefix.length ) == strPrefix)
		{
			frmTarget.elements[indElement].checked = chkSelector.checked;
		}
	}
	
	return( true );
}



var lstRollovers = new Array();

function Rollover( strImage )
{
	strSource = document.images[strImage].src;
	
	for (var indLetter=strSource.length; indLetter>0; indLetter--)
		if (strSource.substring( indLetter, indLetter + 1 ) == "/")
			break;
	
	document.images[strImage].src = strSource.substring( 0, indLetter + 1 ) + "_" + strSource.substring( indLetter + 1, strSource.length );
}



function Rollout( strImage )
{
	strSource = document.images[strImage].src;
	
	for (var indLetter=strSource.length; indLetter>0; indLetter--)
		if (strSource.substring( indLetter, indLetter + 1 ) == "/")
			break;
	
	document.images[strImage].src = strSource.substring( 0, indLetter + 1 ) + strSource.substring( indLetter + 2, strSource.length );
}



function Stylesheet( _strFolder, _strFile, _strNetscape )
{
	if (!window.document.all && (_strNetscape != null) && _strNetscape.length)
		_strFile = _strNetscape;
	
	window.document.write( "<link href=\"" + _strFolder + _strFile + "\" rel=\"stylesheet\" type=\"text/css\">" );
}
