var aRollOn = new Array()

function fctOpenCalendar(art){
	var wHeight = 550
	var wWidth 	= 390
	var wTop    = Math.floor((screen.height-wHeight)/2)
	var wLeft   = Math.floor((screen.width-wWidth)/2)
	var wFeature = 'directories=0,fullscreen=0,top='+wTop+',left='+wLeft+',height='+wHeight+',width='+wWidth+',location=0,menubar=0,resizable=0,scrollbars=1,status=0,titlebar=0,toolbar=0,dependent=1,alwaysRaised=1'
	wURL  = 'add-on/calendar.php?art='+art
	hCfg = window.open(wURL,'wMembers',wFeature)
	return
}

function fctAlert(sMsg,oF,iMode){
	aBgColour = new Array('orange','wheat')
	switch(oF.type){
		case 'checkbox':
		case 'radio':
		case 'text':
		case 'textarea':
		case 'select-one':
			oF.style.backgroundColor = aBgColour[iMode]
			oF.focus()
			break
		}
	if(sMsg.length)alert(sMsg)
	}

function fctGetArrayItem(oArray,tstType,sOp){
	var j = 0
	switch(sOp){
		case 'last':
			for(var i=0;i < oArray.length;i++){
				s = oArray[i].split('|')
				if(s[0].indexOf(tstType)!=-1)j = i
				}
			return j
			break
		}
	}	
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Fonctions de Test des champs des formulaires																																				*/
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
function fctAlert(sMsg,oF,iMode){
	aBgColour = new Array('#FFD0B2','#FFD0B2')
	switch(oF.type){
		case 'checkbox':
		case 'radio':
		case 'text':
		case 'textarea':
		case 'select-one':
			oF.style.backgroundColor = aBgColour[iMode]
			oF.focus()
			break
		}
	if(sMsg.length)alert(sMsg)
	}

function fctGetArrayItem(oArray,tstType,sOp){
	var j = 0
	switch(sOp){
		case 'last':
			for(var i=0;i < oArray.length;i++){
				s = oArray[i].split('|')
				if(s[0].indexOf(tstType)!=-1)j = i
				}
			return j
			break
		}
	}	
aMsgBadLogin 			= new Array('vous devez correctement saisir votre e-mail et/ou votre mot de passe')
aMsgMailNotFilled		= new Array('vous devez saisir votre e-mail dans le champ en surbrillance\net cliquer à nouveau sur \'Mot de Passe oublié\'')
aMsgConfirmDeletion		= new Array('Confirmez-vous la suppression ?')

aErrMsgBadInsertDate	= new Array('Vous devez choisir une date valide !')
aErrMsgMissingInput		= new Array('Saisie obligatoire !')
aErrMsgBadEmail			= new Array('Le format de votre email est incorrect!')
aErrMsgBadPhone			= new Array('Mauvais numéro de téléphone !')
aErrMsgSelRequired		= new Array('Vous devez sélectionner une valeur dans la liste !')
aErrMsgValueNotZero		= new Array('Vous devez indiquer une valeur autre que zéro')
aErrMsgWrongAmount		= new Array('Montant incorrect (format : 0.00, 2.50, 10.99, etc...)')
aErrMsgWrongNullAmount	= new Array('Montant incorrect (tout format différent de 0.00)')

aWarMsgNotFilled		= new Array('Attention, certains champs ne sont pas renseignés')

aMisMsgConfirm			= new Array('Confirmez-vous le passage à l\'étape suivante ?')
	
function fctOnSubmit(Cmd){
	switch(Cmd){
		case 'Check':
			reMail 	= /^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/gi
			rePwd	= /^[a-zA-Z][a-zA-Z0-9]{3,18}[a-zA-Z0-9]$/gi
			switch(top.ActCmd){
				default:
					var bStopOnError 	= (arguments[1])?arguments[1]:false
					var curdoc			= (arguments[2])?arguments[2]:document
					var aSrcInput 		= curdoc.getElementsByTagName('INPUT')
					var aSrcSelect 		= curdoc.getElementsByTagName('SELECT')
					var aCheck 			= new Array()
					var aHiddenField	= new Array()
					var aControl 		= new Array()
					var aCtrlClone		= new Array()
					var aAlt			= new Array()
					var aIdx			= new Array()
					var aWarning		= new Array()
					var reHandleCTRL 	= /_control/gi
					var reHandleWARNING = /_warning/gi
					var reDataType		= /^RATE$|^RATENOTNULL$|^TEXT$|^PHONE_FR$|^PHONE_INT$|^INSERTDATE$|^EMAIL$|^SEL-NOTZERO$|^ALTERNATE$|^CHECKED$|^WARNING$/
					var reDataRequired	= /REQUIRED|FREE|POSITIF|NOTFILLED/
					var reName			= /[a-zA-Z0-9_]+/
					var bCheck 			= true
					for(var i=0;i<aSrcInput.length;i++){
						if(aSrcInput[i].type=='hidden'){
							aHiddenField[aHiddenField.length] = aSrcInput[i]
							if(aSrcInput[i].name.match(reHandleCTRL)!=null){
								sF 								= aSrcInput[i].name.replace(/_control/gi,'')
								aF 								= curdoc.getElementsByName(sF)
								aCheck[aCheck.length]			= aF[0]
								aControl[sF] 					= aSrcInput[i].value
								aCtrlClone[aCtrlClone.length]	= aSrcInput[i].value
								}
							}
						}
					for(var i=0;i<aHiddenField.length;i++){
						if(aHiddenField[i].type=='hidden'&&aHiddenField[i].name.match(reHandleWARNING)!=null){
							sF 								= aHiddenField[i].name.replace(/_warning/gi,'')
							aF 								= curdoc.getElementsByName(sF)
							aCheck[aCheck.length]			= aF[0]
							aControl[sF] 					= aHiddenField[i].value
							aCtrlClone[aCtrlClone.length]	= aHiddenField[i].value
							}
						}
					for(var i=0;i<aCheck.length;i++){
						sCfg 		= aControl[aCheck[i].name].split('|')
						tstType 	= sCfg[0].match(reDataType)[0]
						tstRequired = sCfg[1].match(reDataRequired)[0]
						if(sCfg.length>2)tstName = sCfg[2].match(reName)[0]
						aCheck[i].style.backgroundColor = 'white';
						switch(tstType){
							// Pour le mode warning
							case 'WARNING':
								switch(tstRequired){
									case 'NOTFILLED':
										if(!aCheck[i].value.length&&typeof(aWarning[0])=='undefined'){
											fctAlert('',aCheck[i],1)
											aWarning[0] = (aWarning.length +1)+' - '+aWarMsgNotFilled[0]
										}
										break
									}
								break;
							case 'RATE':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/[0-9]{1,5}.[0-9]{2}/gi))
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=false)||
											(tstRequired=='REQUIRED'&&bMatch!=false)
										)?bCheck:false
								bCheck = bTest	
								if(!bTest)fctAlert(aErrMsgWrongAmount[0],aCheck[i],0)
								break								
							case 'RATENOTNULL':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/[1-9][0-9]{0,4}.[0-9]{2}/gi))
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=false)||
											(tstRequired=='REQUIRED'&&bMatch!=false)
										)?bCheck:false
								bCheck = bTest	
								if(!bTest)fctAlert(aErrMsgWrongNullAmount[0],aCheck[i],0)
								break
							case 'CHECKED':
								bTest = (	(tstRequired=='FREE')||
											(tstRequired=='REQUIRED'&&aCheck[i].checked)
										)?bCheck:false
								bCheck = bTest
								if(!bTest)fctAlert(aErrMsgMissingInput[0],aCheck[i],0)
								break
							case 'SEL-NOTZERO':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/0/gi))
								bTest  = (!bMatch)?bCheck:false
								bCheck = bTest;	
								if(!bTest)fctAlert(aErrMsgSelRequired[0],aCheck[i],0)
								break
							case 'ALTERNATE':
								bTest = false
								if(typeof(aAlt[tstName])=='undefined'){
									aAlt[tstName] = new Array()
									aIdx[tstName] = fctGetArrayItem(aCtrlClone,tstType,'last')
									}
								aAlt[tstName][aAlt[tstName].length] = aCheck[i].value
								if(aIdx[tstName]==i){
									switch(tstRequired){
										case 'POSITIF':
											for(var j =0;j < aAlt[tstName].length;j++){
												if(aAlt[tstName][j]>0){
													bTest = true
													break
													}
												}
											break
										}
									if(!bTest)fctAlert(aErrMsgValueNotZero[0],aCheck[i],0)
									bCheck = bTest	
									}
								break
							case 'PHONE_INT':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/[0-9 \(\)\.-]+/gi))
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=false)||
											(tstRequired=='REQUIRED'&&bMatch!=false)
										)?bCheck:false
								if(!bTest)fctAlert(aErrMsgBadPhone[0],aCheck[i],0)
								bCheck = bTest										
								break
							case 'EMAIL':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/gi))
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=false)||
											(tstRequired=='REQUIRED'&&bMatch!=false)
										)?bCheck:false
								if(!bTest)fctAlert(aErrMsgBadEmail[0],aCheck[i],0)
								bCheck = bTest										
								break
							case 'TEXT':
								bMatch = aCheck[i].value.match(/.+/gi)
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=null)||
											(tstRequired=='REQUIRED'&&bMatch!=null)
										)?bCheck:false
								if(!bTest)fctAlert(aErrMsgMissingInput[0],aCheck[i],0)
								bCheck = bTest										
								break
							case 'INSERTDATE':
								bMatch = aCheck[i].value.match(/[0-9]{2}\/[0-9]{2}\/[2][0][0-9]{2}/)
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=null)||
											(tstRequired=='REQUIRED'&&bMatch!=null)
										)?bCheck:false
								if(!bTest)fctAlert(aErrMsgBadInsertDate[0],aCheck[i],0)
								bCheck = bTest
								break
							}
							if(bStopOnError&&!bCheck)break
						}
					
					if(aWarning.length){
						return 	confirm(aWarning.join('\n')+' !\n'+aMisMsgConfirm[0])
						}
					return bCheck
					break
				}
			break;															
		}
	}	
	
function fctRoll(oObj,status){
	aTD = oObj.getElementsByTagName('TD')
	switch(status){
		case 0:
			aTD[1].className 	= aRollOn[oObj]
			break;
		case 1:
			aRollOn[oObj] 		= aTD[1].className
			aTD[1].className 	= 'OngletOn'
			break
	}
}

// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Fonction de Paramètrage des champs aditionnels encapsulés dans la zone de menu
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function fctNavigationBar(active_pack,target_pack,target_page){
	var aloc 		= 	window.location.href.split('?')
	var loc 		= 	aloc['0']
	if(loc.indexOf('?',0)==-1)loc += '?'
	loc += 'd=1&nav_ac='+active_pack+'&nav_tg='+target_pack+'&nav_pg='+target_page
	window.location.href = loc
	return
}

aMsgBadLogin 			= new Array('vous devez correctement saisir votre e-mail et/ou votre mot de passe')
aMsgMailNotFilled		= new Array('vous devez saisir votre e-mail dans le champ en surbrillance\net cliquer à nouveau sur \'Mot de Passe oublié\'')
aMsgConfirmDeletion		= new Array('Confirmez-vous la suppression ?')

aErrMsgBadInsertDate	= new Array('Vous devez choisir une date valide !')
aErrMsgMissingInput		= new Array('Saisie obligatoire !')
aErrMsgBadPhone			= new Array('Mauvais numéro de téléphone !')
aErrMsgBadEmail			= new Array('Le format de votre email est incorrect!')
aErrMsgSelRequired		= new Array('Vous devez sélectionner une valeur dans la liste !')
aErrMsgValueNotZero		= new Array('Vous devez indiquer une valeur autre que zéro')
aErrMsgWrongAmount		= new Array('Montant incorrect (format : 0.00, 2.50, 10.99, etc...)')
aErrMsgWrongNullAmount	= new Array('Montant incorrect (tout format différent de 0.00)')

aWarMsgNotFilled		= new Array('Attention, certains champs ne sont pas renseignés')

aMisMsgConfirm			= new Array('Confirmez-vous le passage à l\'étape suivante ?')
	
function fctOnSubmit(Cmd){
	switch(Cmd){
		case 'Check':
			reMail 	= /^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/gi
			rePwd	= /^[a-zA-Z][a-zA-Z0-9]{3,18}[a-zA-Z0-9]$/gi
			switch(top.ActCmd){
				default:
					var bStopOnError 	= (arguments[1])?arguments[1]:false
					var curdoc			= (arguments[2])?arguments[2]:document
					var aSrcInput 		= curdoc.getElementsByTagName('INPUT')
					var aSrcSelect 		= curdoc.getElementsByTagName('SELECT')
					var aCheck 			= new Array()
					var aHiddenField	= new Array()
					var aControl 		= new Array()
					var aCtrlClone		= new Array()
					var aAlt			= new Array()
					var aIdx			= new Array()
					var aWarning		= new Array()
					var reHandleCTRL 	= /_control/gi
					var reHandleWARNING = /_warning/gi
					var reDataType		= /^RATE$|^RATENOTNULL$|^TEXT$|^PHONE_FR$|^PHONE_INT$|^INSERTDATE$|^EMAIL$|^SEL-NOTZERO$|^ALTERNATE$|^CHECKED$|^WARNING$/
					var reDataRequired	= /REQUIRED|FREE|POSITIF|NOTFILLED/
					var reName			= /[a-zA-Z0-9_]+/
					var bCheck 			= true
					for(var i=0;i<aSrcInput.length;i++){
						if(aSrcInput[i].type=='hidden'){
							aHiddenField[aHiddenField.length] = aSrcInput[i]
							if(aSrcInput[i].name.match(reHandleCTRL)!=null){
								sF 								= aSrcInput[i].name.replace(/_control/gi,'')
								aF 								= curdoc.getElementsByName(sF)
								aCheck[aCheck.length]			= aF[0]
								aControl[sF] 					= aSrcInput[i].value
								aCtrlClone[aCtrlClone.length]	= aSrcInput[i].value
								}
							}
						}
					for(var i=0;i<aHiddenField.length;i++){
						if(aHiddenField[i].type=='hidden'&&aHiddenField[i].name.match(reHandleWARNING)!=null){
							sF 								= aHiddenField[i].name.replace(/_warning/gi,'')
							aF 								= curdoc.getElementsByName(sF)
							aCheck[aCheck.length]			= aF[0]
							aControl[sF] 					= aHiddenField[i].value
							aCtrlClone[aCtrlClone.length]	= aHiddenField[i].value
							}
						}
					for(var i=0;i<aCheck.length;i++){
						sCfg 		= aControl[aCheck[i].name].split('|')
						tstType 	= sCfg[0].match(reDataType)[0]
						tstRequired = sCfg[1].match(reDataRequired)[0]
						if(sCfg.length>2)tstName = sCfg[2].match(reName)[0]
						aCheck[i].style.backgroundColor = 'white';
						switch(tstType){
							// Pour le mode warning
							case 'WARNING':
								switch(tstRequired){
									case 'NOTFILLED':
										if(!aCheck[i].value.length&&typeof(aWarning[0])=='undefined'){
											fctAlert('',aCheck[i],1)
											aWarning[0] = (aWarning.length +1)+' - '+aWarMsgNotFilled[0]
										}
										break
									}
								break;
							case 'RATE':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/[0-9]{1,5}.[0-9]{2}/gi))
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=false)||
											(tstRequired=='REQUIRED'&&bMatch!=false)
										)?bCheck:false
								bCheck = bTest	
								if(!bTest)fctAlert(aErrMsgWrongAmount[0],aCheck[i],0)
								break								
							case 'RATENOTNULL':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/[1-9][0-9]{0,4}.[0-9]{2}/gi))
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=false)||
											(tstRequired=='REQUIRED'&&bMatch!=false)
										)?bCheck:false
								bCheck = bTest	
								if(!bTest)fctAlert(aErrMsgWrongNullAmount[0],aCheck[i],0)
								break
							case 'CHECKED':
								bTest = (	(tstRequired=='FREE')||
											(tstRequired=='REQUIRED'&&aCheck[i].checked)
										)?bCheck:false
								bCheck = bTest
								if(!bTest)fctAlert(aErrMsgMissingInput[0],aCheck[i],0)
								break
							case 'SEL-NOTZERO':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/0/gi))
								bTest  = (!bMatch)?bCheck:false
								bCheck = bTest;	
								if(!bTest)fctAlert(aErrMsgSelRequired[0],aCheck[i],0)
								break
							case 'ALTERNATE':
								bTest = false
								if(typeof(aAlt[tstName])=='undefined'){
									aAlt[tstName] = new Array()
									aIdx[tstName] = fctGetArrayItem(aCtrlClone,tstType,'last')
									}
								aAlt[tstName][aAlt[tstName].length] = aCheck[i].value
								if(aIdx[tstName]==i){
									switch(tstRequired){
										case 'POSITIF':
											for(var j =0;j < aAlt[tstName].length;j++){
												if(aAlt[tstName][j]>0){
													bTest = true
													break
													}
												}
											break
										}
									if(!bTest)fctAlert(aErrMsgValueNotZero[0],aCheck[i],0)
									bCheck = bTest	
									}
								break
							case 'PHONE_INT':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/[0-9 \(\)\.-]+/gi))
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=false)||
											(tstRequired=='REQUIRED'&&bMatch!=false)
										)?bCheck:false
								if(!bTest)fctAlert(aErrMsgBadPhone[0],aCheck[i],0)
								bCheck = bTest										
								break
							case 'EMAIL':
								bMatch = (aCheck[i].value==aCheck[i].value.match(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/gi))
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=false)||
											(tstRequired=='REQUIRED'&&bMatch!=false)
										)?bCheck:false
								if(!bTest)fctAlert(aErrMsgBadEmail[0],aCheck[i],0)
								bCheck = bTest										
								break								
							case 'TEXT':
								bMatch = aCheck[i].value.match(/.+/gi)
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=null)||
											(tstRequired=='REQUIRED'&&bMatch!=null)
										)?bCheck:false
								if(!bTest)fctAlert(aErrMsgMissingInput[0],aCheck[i],0)
								bCheck = bTest										
								break
							case 'INSERTDATE':
								bMatch = aCheck[i].value.match(/[0-9]{2}\/[0-9]{2}\/[2][0][0-9]{2}/)
								bTest = (	(tstRequired=='FREE'&&!aCheck[i].value.length)||
											(tstRequired=='FREE'&&aCheck[i].value.length&&bMatch!=null)||
											(tstRequired=='REQUIRED'&&bMatch!=null)
										)?bCheck:false
								if(!bTest)fctAlert(aErrMsgBadInsertDate[0],aCheck[i],0)
								bCheck = bTest
								break
							}
							if(bStopOnError&&!bCheck)break
						}
					
					if(aWarning.length){
						return 	confirm(aWarning.join('\n')+' !\n'+aMisMsgConfirm[0])
						}
					return bCheck
					break
				}
			break;															
		}
	}	
