
/** La souris passe sur le bouton */
function buttonOver(el) {
  el.className = "button-over";
}

/* La souris sort du bouton */
function buttonOut(el) {
  el.className = "button-out";
}

/* Gestion minimale du nombre de motif : si la case est coché, la quantité passe à 1.
	Si on deselectionne la case à coché, la valeur de la quantité repasse à 0. */
function setQuantity(checkBoxMotive){
	 var nextButton = document.getElementById('nextButtonId');
	 nextButton.className='button-disabled';
	/** récupération du select en inspectant l'arbre DOM */
	var quantity = $(checkBoxMotive).parent().parent().children("#quantity");
	if(quantity.length>0){
		/** s'il est à 0 => il passe a 1 sinon, il revient à 0. */
		if(checkBoxMotive.checked==false){
			quantity.val('0');
		}
		else{
			quantity.val(1);
		}
	}
 
}

/** gestion de l'interface et de l'interaction entrela checkbox et la liste des quantités. */
function setSelectMotive(selectQuantity){
	var nextButton = document.getElementById('nextButtonId');
	 nextButton.className='button-disabled';
	var checkMotive = $(selectQuantity).parent().find("#motiveBox");

	if(selectQuantity.value=='0'){
		checkMotive.attr('checked',false)
	}else{
		checkMotive.attr('checked',true)
	}
}

/* Gestion de la mise à jour des dispo en fonction du nombre de motifs. */
function upDateAvailabilities(selectQuantity){
	/** recalcul des disponibilités en envoyant la valeur en paramètre */
	refreshAvailabilities(callBackAvailabilities);
}


/** fonction callback pour mettre a jours les disponibilités */
function refreshAvailabilities(callBackFunctionName){
 
	var motiveCheckedMap = {};
	
	/** récupération des différentes valeur dont on a besoin. */
	var aSiteKey=document.getElementById("ISiteBeanKeySelect").value;
	var aServiceKey=document.getElementById("serviceBeanKeySelect").value;
	var aStartHour=document.getElementById("hourValueSelect").value;
	var aEndHour=document.getElementById("hourValueSelect").value;
	var daySelStr=document.getElementById("dayValueId").value;
	var dayDate=new Date();
	var dateFormatStr=document.getElementById("dateFormatStrId").value;
	dayDate.setTime(getDateFromFormat( daySelStr , dateFormatStr ));
	var aDaySelected =formatDate(dayDate,"yyyy-MM-dd");
	
	
	var AppointmentDataBean = {
		siteKey:aSiteKey,
		serviceKey:aServiceKey,
		startHour:aStartHour,
		endHour:aEndHour,
		dateSelected:aDaySelected
	};
	
	/** récupération des motifs selectionné et de leur quantités */
 	var motiveoneBoxChild = $('.field1').find('#motiveBox');
	var motiveoneQuantityChild = $('.field1').find('#quantity');
	var increment = 0;
	var indexChecked = 0;
	jQuery.each(motiveoneBoxChild, function(){
		if($(this).attr('checked')){
			if(motiveoneQuantityChild.length){
				motiveCheckedMap[$(this).val()] = motiveoneQuantityChild.get(increment).value;
			}
			else{
				motiveCheckedMap[$(this).val()] = 1;
			}
			indexChecked++;
		}
			increment++;
	});
		 
	/** récupération des motifs selectionné et de leur quantités */
 	var motiveTwoBoxChild = $('.field2').find('#motiveBox');
	var motiveTwoQuantityChild = $('.field2').find('#quantity');
	 
	  
	increment=0
	jQuery.each(motiveTwoBoxChild, function(){
		if($(this).attr('checked')){
			if(motiveoneQuantityChild.length){
				motiveCheckedMap[$(this).val()] = motiveTwoQuantityChild.get(increment).value;
			}
			else{
				motiveCheckedMap[$(this).val()] = 1;
			}
			indexChecked++;
		}
			increment++;
	});
	
	AjaxSelectionFormFeeder.getUpdatedAvailabilities(motiveCheckedMap, AppointmentDataBean, callBackFunctionName);
}
 
 
/** Callback si l'appel de rafraichissement proviend des checkbox ou des liste déroulantes. */
function callBackAvailabilities(timeareaList){
 	/** nettoyage des disponibilités */
	document.getElementById('nbProposalsMaxId').value = 0;
	
		if(timeareaList!=null && timeareaList.length>0){

			$('#offsetPageId').val(0);
			document.getElementById('nbProposalsMaxId').value = timeareaList.length;
			

		}
	var nextButton = document.getElementById('nextButtonId');
	nextButton.className='button-out';	
}	


/** Callback si l'appel de rafraichissement proviend du bouton de soumission. */
function callBackSubmitAvailabilities(timeareaList){
	//appel de la callback standard.
	callBackAvailabilities(timeareaList);
	
	//soumission du formulaire.
	document.forms['form2'].submit();
}


function upDateQuantityMotives(){
	AjaxSelectionFormFeeder.upDateQuantityMotives(QuantityMotivesCallBack);
}

function QuantityMotivesCallBack(quantityList){

	if(quantityList!=null){
		var motiveoneQuantityChild = $('.field1').find('#quantity');
		var motiveTwoQuantityChild = $('.field2').find('#quantity');
		var i=0;
		for(j=0;j<motiveoneQuantityChild.length;j++){
			var quantity = quantityList[i];
				motiveoneQuantityChild.get(j).value = quantityList[i];
			if(quantity>0){
				$(motiveoneQuantityChild.get(j)).parent().find('#motiveBox').attr('checked','true');
			}
			else{
				$(motiveoneQuantityChild.get(j)).parent().find('#motiveBox').removeAttr('checked');
			}
			i++;
		}
		for(j=0;j<motiveTwoQuantityChild.length;j++){
			var quantity = quantityList[i];
				motiveTwoQuantityChild.get(j).value = quantityList[i];
			if(quantity>0){
				$(motiveTwoQuantityChild.get(j)).parent().find('#motiveBox').attr('checked','true');
			}
			else{
				$(motiveTwoQuantityChild.get(j)).parent().find('#motiveBox').removeAttr('checked');
			}
			i++;
		}
	}
}
