	var InputUtil = new Object();

	var EventUtil = new Object;

	var sUserAgent = navigator.userAgent;
	
	var fAppVersion = parseFloat(navigator.appVersion);

	
	var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = false;

	/*Si le navigateur est IE, ?value la version du navigateur IE en cours*/	
	var isIE = sUserAgent.indexOf("compatible") > -1 && sUserAgent.indexOf("MSIE") > -1 && !isOpera;
	
	if (isIE) {
		var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
		reIE.test(sUserAgent);
		var fIEVersion = parseFloat(RegExp["$1"]);
		isMinIE4 = fIEVersion >= 4;
		isMinIE5 = fIEVersion >= 5;
		isMinIE5_5 = fIEVersion >= 5.5;
		isMinIE6 = fIEVersion >= 6.0;
	}

	/*V?rification de la compatibilit? KHTML : Konqueror et Safari sont bas?s sur le projet KHTML*/		
	var isKHTML = sUserAgent.indexOf("KHTML") > -1
			|| sUserAgent.indexOf("Konqueror") > -1
			|| sUserAgent.indexOf("AppleWebKit") > -1;

	var isMinSafari1 = isMinSafari1_2 = false;
	var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false;
	if (isKHTML) {
	isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
	isKonq = sUserAgent.indexOf("Konqueror") > -1;
	if (isSafari) {
		var reAppleWebKit = new RegExp("AppleWebKit\\/(\\d+(?:\\.\\d*)?)");
		reAppleWebKit.test(sUserAgent);
		var fAppleWebKitVersion = parseFloat(RegExp["$1"]);
		isMinSafari1 = fAppleWebKitVersion >= 85;
		isMinSafari1_2 = fAppleWebKitVersion >= 124;
	}else if (isKonq) {
		var reKonq = new RegExp("Konqueror\\/(\\d+(?:\\.\\d+(?:\\.\\d)?)?)");
		reKonq.test(sUserAgent);
		isMinKonq2_2 = compareVersions(RegExp["$1"], "2.2") >= 0;
		isMinKonq3 = compareVersions(RegExp["$1"], "3.0") >= 0;
		isMinKonq3_1 = compareVersions(RegExp["$1"], "3.1") >= 0;
		isMinKonq3_2 = compareVersions(RegExp["$1"], "3.2") >= 0;
		}
	}						
	/*Si le navigateur est Opera, ?value la version du navigateur Opera en cours*/	
	var isOpera = sUserAgent.indexOf("Opera") > -1;
	var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false;
	
	if (isOpera) {
		var fOperaVersion;
		if(navigator.appName == "Opera") {
			fOperaVersion = fAppVersion;
		} else {
			var reOperaVersion = new RegExp("Opera (\\d+\\.\\d+)");
			reOperaVersion.test(sUserAgent);
			fOperaVersion = parseFloat(RegExp["$1"]);
		}
		isMinOpera4 = fOperaVersion >= 4;
		isMinOpera5 = fOperaVersion >= 5;
		isMinOpera6 = fOperaVersion >= 6;
		isMinOpera7 = fOperaVersion >= 7;
		isMinOpera7_5 = fOperaVersion >= 7.5;
		}	
		
	/*Si le navigateur est Mozilla, ?value la version du navigateur Mozilla en cours*/	
	var isMoz = sUserAgent.indexOf("Gecko") > -1 && !isKHTML;
	var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false;
	if (isMoz) {
			var reMoz = new RegExp("rv:(\\d+\\.\\d+(?:\\.\\d+)?)");
			reMoz.test(sUserAgent);
			isMinMoz1 = compareVersions(RegExp["$1"], "1.0") >= 0;
			isMinMoz1_4 = compareVersions(RegExp["$1"], "1.4") >= 0;
			isMinMoz1_5 = compareVersions(RegExp["$1"], "1.5") >= 0;
		}
	/*Si le navigateur est Netscape, ?value la version du navigateur Netscape en cours*/			
	var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML				
	&& (sUserAgent.indexOf("Mozilla") == 0)
	&& (navigator.appName == "Netscape")
	&& (fAppVersion >= 4.0 && fAppVersion < 5.0);
	
	var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false;
	
	if (isNS4) {
		isMinNS4 = true;
		isMinNS4_5 = fAppVersion >= 4.5;
		isMinNS4_7 = fAppVersion >= 4.7;
		isMinNS4_8 = fAppVersion >= 4.8;
	}
			/**/
			EventUtil.formatEvent = function (oEvent) {
				if (isIE) {
					oEvent.charCode = (oEvent.type == "keypress")? oEvent.keyCode : 0;
					oEvent.eventPhase = 2;
					oEvent.isChar = (oEvent.charCode > 0);
					oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
					oEvent.pageY = oEvent.clientY + document.body.scrollTop;
				
					oEvent.preventDefault = function () {
					this.returnValue = false;
					};
					
					if (oEvent.type == "mouseout") {
						oEvent.relatedTarget = oEvent.toElement;
					} else if (oEvent.type == "mouseover") {
						oEvent.relatedTarget = oEvent.fromElement;
					}
					
					oEvent.stopPropagation = function () {
						this.cancelBubble = true;
					};
					
					oEvent.target = oEvent.srcElement;
					oEvent.time = (new Date).getTime();
				}
				
				return oEvent;
			};	/*EventUtil.formatEvent*/	

/*
* Fonction 	  : InputUtil.allowChars	
* Description : Gestion de la saisie dans la boutique, allowChars
*			    retourne vrai si le caract?re saisie fait partie des caract?res
* 				autoris?s dans la liste des caract?res de l'attribut "validchars" de 
*				l'?l?ment(En occurence l'?l?ment input)
* Auteur      : SAM
* Date 		  : 16/07/2008
*/				
InputUtil.allowChars = function (oInputBox, oEvent) {
	oEvent = EventUtil.formatEvent(oEvent);
	var sValidChars = oInputBox.getAttribute("validchars");
	var sChar = String.fromCharCode(oEvent.charCode);
	var bIsValidChar = (sValidChars.indexOf(sChar) > -1) && (oInputBox.value.length < 2);
	return bIsValidChar;
}
/***
 * NBO: fonction permettant de vérifier que la saise d'un champ est bien du type entier 
 * appeler après un evenement javascript onchange
 * prend en param l'objet input
 */
isValidChars = function (oInputBox) {
	if(!isNumeric(oInputBox.value) || oInputBox.value.length > 2 ){
		oInputBox.value='';
		oInputBox.focus();
		return false;
	}
	return true;
}
/**
 * Vérifier si la chiane de caractère est du type entier
 * @param str chaine de caractère à vérifier 
 * @return true or false
 */
function isNumeric(str){
  var len= str.length;
  if (len==0)
    return false;
  var p=0;
  var ok= true;
  var ch= "";
  while (ok && p<len){
    ch= str.charAt(p);
    if ('0'<=ch && ch<='9')
      p++;
    else
      ok= false;
  }
  return ok;
}


/*
* Fonction 	  : compareVersions	
* Description : Gestion de la saisie dans la boutique, compareVersions
*			    compare 2 versions d'un navigateur en fonction de leur 
* 				num?ro de version.
* Auteur      : SAM
* Date 		  : 16/07/2008
*/			
function compareVersions(sVersion1, sVersion2) {
	var aVersion1 = sVersion1.split(".");
	var aVersion2 = sVersion2.split(".");
	if (aVersion1.length > aVersion2.length) {
		for (var i=0; i < aVersion1.length - aVersion2.length; i++) {
		aVersion2.push("0");
		}
	}else if (aVersion1.length < aVersion2.length) {
		for (var i=0; i < aVersion2.length - aVersion1.length; i++) {
		aVersion1.push("0");
		}
	}
	for (var i=0; i < aVersion1.length; i++) {
		if (aVersion1[i] < aVersion2[i]) {
			return -1;
		} else if (aVersion1[i] > aVersion2[i]) {
		return 1;
		}
	}
	return 0;
}
/*
* Fonction 	  : inArray	
* Param 	  : array(tableau de chaine de caract?re)
				val (chaine de caract?re recherch? dans array) 	
* Description : Simule IndexOf qui peut planter sous certaine versions de IE
* var bIsValidChar = (sValidChars.indexOf(sChar) > -1) est eq ? 
* var bIsValidChar = inArray(sValidChars, sChar); 
* Auteur      : SAM
* Date 		  : 16/07/2008
*/
 function inArray(array, val){
 var present=false;
		 for (var i=0; array.length; i++){
		 	if (array[i]==val){
		 		present= true;
		 		break;
		 	}
		 	if (array.length == i){
		 	present= false;
		 	break;
		 	}
		 }
	return present;
 }
/*
* Fonction 	  : modifierZone	
* Param 	  : inc(Valeur de l'incrementation)
				obj (Nom de la valeur de l'objet ? modifier) 	
				order(position de l'element dans le document(DOM))
* Description : Increment ou decrementre la valeur de la zone qte
* Auteur      : SAM
* Date 		  : 16/07/2008
*/
function modifierZone(inc,obj,order) {		
	//var myInput = document.getElementsByTagName("form")["basketForm"+order].elements[obj];
        var myInput = document.getElementsByName("basketForm"+order)[0].elements[obj];
	if (window.console) {window.console.log("I think therefore I code!"); }
	   if ((myInput) && (myInput.value == '')){
	   		myInput.value=1;
	   }
	   if (((parseInt(myInput.value)+inc)>=1)&&((parseInt(myInput.value)+inc)<100)){
	   		myInput.value=parseInt(myInput.value)+inc;
	   }
   
}

function modifierAction(obj,order,value) {
        //var myInput = document.getElementsByTagName("form")["basketForm"+order].elements[obj];
        var myInput = document.getElementsByName("basketForm"+order)[0].elements[obj];
	myInput.value=value;
   }	
   

function iprint(ptarget) { 
	ptarget.focus(); 
	ptarget.print(); 
} 
